// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.8.20;
contract WiggleEthscriborESIP3 {
error MintNotOpened();
error MintClosed();
error NotEnoughEther();
error NotDeployer();
address public deployer = msg.sender;
uint public mintPrice = 0.001 ether;
uint public mintOpenBlock = 18144000;
uint public mintCloseBlock = 99999999;
event ethscriptions_protocol_CreateEthscription(
address indexed initialOwner,
string contentURI
);
function ethscribe(string memory dataURI) public payable {
if (block.number < mintOpenBlock) {
revert MintNotOpened();
}
if (block.number > mintCloseBlock) {
revert MintClosed();
}
if (msg.sender != address(deployer) && msg.value < mintPrice) {
revert NotEnoughEther();
}
emit ethscriptions_protocol_CreateEthscription(msg.sender, string(abi.encodePacked(dataURI)));
}
function settings(uint _mintPrice, uint _mintOpenBlock, uint _mintCloseBlock) public {
if (msg.sender != deployer) {
revert NotDeployer();
}
mintPrice = _mintPrice;
mintOpenBlock = _mintOpenBlock;
mintCloseBlock = _mintCloseBlock;
}
function withdraw(uint amount, address to) public {
if (msg.sender != deployer) {
revert NotDeployer();
}
payable(to).transfer(amount == 0 ? address(this).balance : amount);
}
}
{
"compilationTarget": {
"WiggleEthscriborESIP3.sol": "WiggleEthscriborESIP3"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 7000
},
"remappings": []
}
[{"inputs":[],"name":"MintClosed","type":"error"},{"inputs":[],"name":"MintNotOpened","type":"error"},{"inputs":[],"name":"NotDeployer","type":"error"},{"inputs":[],"name":"NotEnoughEther","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"initialOwner","type":"address"},{"indexed":false,"internalType":"string","name":"contentURI","type":"string"}],"name":"ethscriptions_protocol_CreateEthscription","type":"event"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"dataURI","type":"string"}],"name":"ethscribe","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintCloseBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintOpenBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintPrice","type":"uint256"},{"internalType":"uint256","name":"_mintOpenBlock","type":"uint256"},{"internalType":"uint256","name":"_mintCloseBlock","type":"uint256"}],"name":"settings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]