@sharkpunks/contracts
Version:
[](http://www.wtfpl.net/)
420 lines • 39.9 kB
JSON
{
"address": "0x98FFbbb62Bf68942370D65Ea8103f5B8D84c2eB6",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_vault",
"type": "address"
},
{
"internalType": "address",
"name": "_minter",
"type": "address"
},
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_discountToken",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Burn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "Mint",
"type": "event"
},
{
"inputs": [],
"name": "DISCOUNT_PERCENTAGE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "INFLATION_BASE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "INFLATION_RATE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "INITIAL_PRICE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TOKEN_ID_MAX",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TOKEN_ID_MIN",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "label",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "data",
"type": "bytes32"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "discountToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "mintBatch",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "mintBatchDiscounted",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "mintDiscounted",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "minter",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "priceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "token",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokenId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "vault",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"transactionHash": "0x91529e6112cdaf142be75b4b786cdaedbe29644ab92250b2253c553484f5441c",
"receipt": {
"to": null,
"from": "0x5b8C253517b6Bd003369173109693B01cb6841B5",
"contractAddress": "0x98FFbbb62Bf68942370D65Ea8103f5B8D84c2eB6",
"transactionIndex": 128,
"gasUsed": "992735",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"blockHash": "0xdc9d1bf9d4fb7122582aac7f722f8453aaa490c00330177e7dc9a183128daf4a",
"transactionHash": "0x91529e6112cdaf142be75b4b786cdaedbe29644ab92250b2253c553484f5441c",
"logs": [],
"blockNumber": 14811412,
"cumulativeGasUsed": "10064870",
"status": 1,
"byzantium": true
},
"args": [
"0x293Ae5226D3Bda6969348D8b211A73Ad7Cafb7Ea",
"0xb79fa5c237D27dA6b062F9180717CD6169ba0c65",
"0xa59a5b0c946086d6884455a6a556729d747d16d3",
"0xb8b07d0f2990ddd5b99b6db59dd8356ca2b1302d"
],
"solcInputHash": "79241549d2b1e10d2c06ca9cef40e88c",
"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_discountToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DISCOUNT_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INFLATION_BASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INFLATION_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIAL_PRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_ID_MAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_ID_MIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"label\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discountToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"mintBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"mintBatchDiscounted\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mintDiscounted\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"priceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/NFTSigmoidCurveOffering.sol\":\"NFTSigmoidCurveOffering\"},\"evmVersion\":\"london\",\"libraries\":{\":__CACHE_BREAKER__\":\"0x00000000d41867734bbee4c6863d9255b2b06ac1\"},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"contracts/NFTSigmoidCurveOffering.sol\":{\"content\":\"// SPDX-License-Identifier: WTFPL\\n\\npragma solidity ^0.8.13;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\n\\nimport \\\"./interfaces/INFT.sol\\\";\\nimport \\\"./interfaces/IETHVault.sol\\\";\\n\\ncontract NFTSigmoidCurveOffering is IERC721Receiver {\\n uint256 public constant TOKEN_ID_MIN = 1083;\\n uint256 public constant TOKEN_ID_MAX = 6900;\\n uint256 public constant INITIAL_PRICE = 333 * 10**14;\\n uint256 public constant INFLATION_RATE = 1002496;\\n uint256 public constant INFLATION_BASE = 1000000;\\n uint256 public constant DISCOUNT_PERCENTAGE = 10;\\n uint256 internal constant FINAL_PRICE = 93716465580792648570;\\n uint256 internal constant INFLECTION_POINT = 3992;\\n\\n address public immutable vault;\\n address public immutable minter;\\n address public immutable token;\\n address public immutable discountToken;\\n\\n uint256 public tokenId;\\n mapping(uint256 => uint256) public priceOf;\\n\\n event Mint(uint256 indexed tokenId, uint256 price);\\n event Burn(uint256 indexed tokenId, uint256 amount);\\n\\n modifier discountApplied {\\n require(INFT(discountToken).balanceOf(msg.sender) > 0, \\\"SCO: DISCOUNT_TOKEN_NOT_OWNED\\\");\\n _;\\n }\\n\\n constructor(\\n address _vault,\\n address _minter,\\n address _token,\\n address _discountToken\\n ) {\\n vault = _vault;\\n minter = _minter;\\n token = _token;\\n discountToken = _discountToken;\\n\\n tokenId = TOKEN_ID_MIN;\\n priceOf[TOKEN_ID_MIN] = INITIAL_PRICE;\\n }\\n\\n function mintBatchDiscounted(address to, uint256 length) external payable discountApplied {\\n _mintBatch(to, length, true);\\n }\\n\\n function mintBatch(address to, uint256 length) external payable {\\n _mintBatch(to, length, false);\\n }\\n\\n function _mintBatch(\\n address to,\\n uint256 length,\\n bool discount\\n ) internal {\\n require(length > 0, \\\"SCO: INVALID_LENGTH\\\");\\n\\n uint256 _tokenId = tokenId;\\n\\n uint256 totalPrice;\\n uint256[] memory tokenIds = new uint256[](length);\\n\\n for (uint256 i = 0; i < length; i++) {\\n require(_tokenId < TOKEN_ID_MAX, \\\"SCO: ALL_MINTED\\\");\\n\\n uint256 price = _price(_tokenId);\\n if (discount) price -= (price * DISCOUNT_PERCENTAGE) / 100;\\n totalPrice += price;\\n\\n emit Mint(_tokenId, price);\\n\\n tokenIds[i] = _tokenId;\\n _tokenId++;\\n }\\n tokenId = _tokenId;\\n\\n require(msg.value >= totalPrice, \\\"SCO: INSUFFICIENT_ETH\\\");\\n payable(vault).transfer(totalPrice);\\n if (msg.value > totalPrice) {\\n payable(msg.sender).transfer(msg.value - totalPrice);\\n }\\n\\n INFT(minter).mintBatch(to, tokenIds, \\\"\\\");\\n }\\n\\n function mintDiscounted(address to) external payable discountApplied {\\n _mint(to, true);\\n }\\n\\n function mint(address to) external payable {\\n _mint(to, false);\\n }\\n\\n function _mint(address to, bool discount) internal {\\n uint256 _tokenId = tokenId;\\n require(_tokenId < TOKEN_ID_MAX, \\\"SCO: ALL_MINTED\\\");\\n tokenId = _tokenId + 1;\\n\\n uint256 price = _price(_tokenId);\\n if (discount) price -= (price * DISCOUNT_PERCENTAGE) / 100;\\n\\n require(msg.value >= price, \\\"SCO: INSUFFICIENT_ETH\\\");\\n payable(vault).transfer(price);\\n if (msg.value > price) {\\n payable(msg.sender).transfer(msg.value - price);\\n }\\n\\n emit Mint(_tokenId, price);\\n\\n INFT(minter).mint(to, _tokenId, \\\"\\\");\\n }\\n\\n function _price(uint256 _tokenId) internal returns (uint256 price) {\\n if (_tokenId < INFLECTION_POINT) {\\n price = priceOf[_tokenId];\\n priceOf[_tokenId + 1] = (price * INFLATION_RATE) / INFLATION_BASE;\\n } else {\\n price = FINAL_PRICE - priceOf[INFLECTION_POINT * 2 - 2 - _tokenId];\\n if (_tokenId > INFLECTION_POINT) {\\n priceOf[_tokenId] = price;\\n }\\n }\\n }\\n\\n function burn(\\n uint256 _tokenId,\\n uint256 label,\\n bytes32 data\\n ) external {\\n INFT(token).safeTransferFrom(msg.sender, address(this), _tokenId);\\n INFT(token).burn(_tokenId, label, data);\\n\\n uint256 amount = priceOf[_tokenId] / 3;\\n IETHVault(vault).withdraw(amount, msg.sender);\\n\\n emit Burn(_tokenId, amount);\\n }\\n\\n function onERC721Received(\\n address,\\n address,\\n uint256,\\n bytes calldata\\n ) external pure override returns (bytes4) {\\n return IERC721Receiver.onERC721Received.selector;\\n }\\n}\\n\",\"keccak256\":\"0x4ed7a0f200f23dbcfcb0b4c0f5768923aaa3e46c420d1242b600dc2ea426b3fc\",\"license\":\"WTFPL\"},\"contracts/interfaces/IETHVault.sol\":{\"content\":\"// SPDX-License-Identifier: WTFPL\\n\\npragma solidity >=0.5.0;\\n\\ninterface IETHVault {\\n event Receive(address indexed sender, uint256 amount);\\n event SetOperator(address indexed account, bool isOperator);\\n event Withdraw(address indexed operator, uint256 amount, address to);\\n\\n function isOperator(address account) external view returns (bool);\\n\\n function setOperator(address account, bool _isOperator) external;\\n\\n function withdraw(uint256 amount, address to) external;\\n}\\n\",\"keccak256\":\"0x278e06a7a5879b4935e13f006b3103622dcd11af36bfce9c9917970d8d3a43f8\",\"license\":\"WTFPL\"},\"contracts/interfaces/INFT.sol\":{\"content\":\"// SPDX-License-Identifier: WTFPL\\n\\npragma solidity >=0.5.0;\\n\\ninterface INFT {\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n function mint(\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n function mintBatch(\\n address to,\\n uint256[] calldata tokenIds,\\n bytes calldata data\\n ) external;\\n\\n function burn(\\n uint256 tokenId,\\n uint256 label,\\n bytes32 data\\n ) external;\\n}\\n\",\"keccak256\":\"0x9aa2fed275df10e41f52ba5e8e2f7ccdb4ca6b07b8c5ed804dafc2a30218a3f8\",\"license\":\"WTFPL\"}},\"version\":1}",
"bytecode": "0x61010060405234801561001157600080fd5b5060405161119a38038061119a833981016040819052610030916100a6565b6001600160a01b0393841660805291831660a052821660c0521660e05261043b600081815552600160205266764e2c6f0540007fd8c0858d087ee1516816dc8cc5f06fc53d9b020394ff6a6654e272318f08f37b556100fa565b80516001600160a01b03811681146100a157600080fd5b919050565b600080600080608085870312156100bc57600080fd5b6100c58561008a565b93506100d36020860161008a565b92506100e16040860161008a565b91506100ef6060860161008a565b905092959194509250565b60805160a05160c05160e051611028610172600039600081816102ff015281816105ab0152610693015260008181610367015281816103c9015261044f015260008181610120015281816109f20152610c3b015260008181610333015281816104f0015281816109510152610b4301526110286000f3fe6080604052600436106101095760003560e01c8063ae42298811610095578063cd38347f11610064578063cd38347f146102c3578063debb2de1146102da578063ea61226c146102ed578063fbfa77cf14610321578063fc0c546a1461035557600080fd5b8063ae42298814610257578063af760d6c1461026a578063b381a8111461027f578063b9186d7d1461029657600080fd5b8063541508ed116100dc578063541508ed146101dd5780636a627842146101f35780637c5e2795146102065780639153e548146102215780639443792c1461023757600080fd5b8063075461721461010e578063150b7a021461015f57806317d70f7c146101a4578063248b71fc146101c8575b600080fd5b34801561011a57600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016b57600080fd5b5061018b61017a366004610d7c565b630a85bd0160e11b95945050505050565b6040516001600160e01b03199091168152602001610156565b3480156101b057600080fd5b506101ba60005481565b604051908152602001610156565b6101db6101d6366004610e17565b610389565b005b3480156101e957600080fd5b506101ba61043b81565b6101db610201366004610e41565b610399565b34801561021257600080fd5b506101ba66764e2c6f05400081565b34801561022d57600080fd5b506101ba611af481565b34801561024357600080fd5b506101db610252366004610e63565b6103a7565b6101db610265366004610e41565b610593565b34801561027657600080fd5b506101ba600a81565b34801561028b57600080fd5b506101ba620f4c0081565b3480156102a257600080fd5b506101ba6102b1366004610e8f565b60016020526000908152604090205481565b3480156102cf57600080fd5b506101ba620f424081565b6101db6102e8366004610e17565b61067b565b3480156102f957600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b34801561032d57600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b34801561036157600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b6103958282600061075b565b5050565b6103a4816000610a63565b50565b604051632142170760e11b8152336004820152306024820152604481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342842e0e90606401600060405180830381600087803b15801561041557600080fd5b505af1158015610429573d6000803e3d6000fd5b5050604051632510de4b60e21b81526004810186905260248101859052604481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169250639443792c9150606401600060405180830381600087803b15801561049d57600080fd5b505af11580156104b1573d6000803e3d6000fd5b5050506000848152600160205260408120549091506104d290600390610ebe565b604051627b8a6760e11b8152600481018290523360248201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062f714ce90604401600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50505050837f410c5c259085cde81fedf70c1aa308ec839373c26e9b7ada6560a2aca0254eb68260405161058591815260200190565b60405180910390a250505050565b6040516370a0823160e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e9190610ee0565b116106705760405162461bcd60e51b815260206004820152601d60248201527f53434f3a20444953434f554e545f544f4b454e5f4e4f545f4f574e454400000060448201526064015b60405180910390fd5b6103a4816001610a63565b6040516370a0823160e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156106e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107069190610ee0565b116107535760405162461bcd60e51b815260206004820152601d60248201527f53434f3a20444953434f554e545f544f4b454e5f4e4f545f4f574e45440000006044820152606401610667565b610395828260015b600082116107a15760405162461bcd60e51b81526020600482015260136024820152720a6869e7440929cac82989288be988a9c8ea89606b1b6044820152606401610667565b6000805490808467ffffffffffffffff8111156107c0576107c0610ef9565b6040519080825280602002602001820160405280156107e9578160200160208202803683370190505b50905060005b858110156108f657611af4841061083a5760405162461bcd60e51b815260206004820152600f60248201526e14d0d3ce8810531317d35253951151608a1b6044820152606401610667565b600061084585610c9d565b9050851561087157606461085a600a83610f0f565b6108649190610ebe565b61086e9082610f2e565b90505b61087b8185610f45565b9350847fcc9c58b575eabd3f6a1ee653e91fcea3ff546867ffc3782a3bbca1f9b6dbb8df826040516108af91815260200190565b60405180910390a2848383815181106108ca576108ca610f5d565b6020908102919091010152846108df81610f73565b9550505080806108ee90610f73565b9150506107ef565b506000839055348211156109445760405162461bcd60e51b81526020600482015260156024820152740a6869e7440929ca6aa8c8c9286928a9ca8be8aa89605b1b6044820152606401610667565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083156108fc029084906000818181858888f1935050505015801561099a573d6000803e3d6000fd5b50813411156109db57336108fc6109b18434610f2e565b6040518115909202916000818181858888f193505050501580156109d9573d6000803e3d6000fd5b505b604051631143124160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632286248290610a299089908590600401610f8c565b600060405180830381600087803b158015610a4357600080fd5b505af1158015610a57573d6000803e3d6000fd5b50505050505050505050565b600054611af48110610aa95760405162461bcd60e51b815260206004820152600f60248201526e14d0d3ce8810531317d35253951151608a1b6044820152606401610667565b610ab4816001610f45565b6000908155610ac282610c9d565b90508215610aee576064610ad7600a83610f0f565b610ae19190610ebe565b610aeb9082610f2e565b90505b80341015610b365760405162461bcd60e51b81526020600482015260156024820152740a6869e7440929ca6aa8c8c9286928a9ca8be8aa89605b1b6044820152606401610667565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082156108fc029083906000818181858888f19350505050158015610b8c573d6000803e3d6000fd5b5080341115610bcd57336108fc610ba38334610f2e565b6040518115909202916000818181858888f19350505050158015610bcb573d6000803e3d6000fd5b505b817fcc9c58b575eabd3f6a1ee653e91fcea3ff546867ffc3782a3bbca1f9b6dbb8df82604051610bff91815260200190565b60405180910390a26040516394d008ef60e01b81526001600160a01b0385811660048301526024820184905260606044830152600060648301527f000000000000000000000000000000000000000000000000000000000000000016906394d008ef90608401600060405180830381600087803b158015610c7f57600080fd5b505af1158015610c93573d6000803e3d6000fd5b5050505050505050565b6000610f98821015610cf85750600081815260016020526040902054620f4240610cca620f4c0083610f0f565b610cd49190610ebe565b60016000610ce28583610f45565b8152602081019190915260400160002055919050565b60016000836002610d0b610f9882610f0f565b610d159190610f2e565b610d1f9190610f2e565b81526020019081526020016000205468051493c4ea2444937a610d429190610f2e565b9050610f98821115610d605760008281526001602052604090208190555b919050565b80356001600160a01b0381168114610d6057600080fd5b600080600080600060808688031215610d9457600080fd5b610d9d86610d65565b9450610dab60208701610d65565b935060408601359250606086013567ffffffffffffffff80821115610dcf57600080fd5b818801915088601f830112610de357600080fd5b813581811115610df257600080fd5b896020828501011115610e0457600080fd5b9699959850939650602001949392505050565b60008060408385031215610e2a57600080fd5b610e3383610d65565b946020939093013593505050565b600060208284031215610e5357600080fd5b610e5c82610d65565b9392505050565b600080600060608486031215610e7857600080fd5b505081359360208301359350604090920135919050565b600060208284031215610ea157600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600082610edb57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610ef257600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000816000190483118215151615610f2957610f29610ea8565b500290565b600082821015610f4057610f40610ea8565b500390565b60008219821115610f5857610f58610ea8565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201610f8557610f85610ea8565b5060010190565b6001600160a01b038316815260606020808301829052835191830182905260009184820191906080850190845b81811015610fd557845183529383019391830191600101610fb9565b50508481036040860152600081528181019350505050939250505056fea2646970667358221220642766fa0f73a47b306fb1c5b7a639cdf7b47f9f31f01baf6bc721fa12fe529264736f6c634300080d0033",
"deployedBytecode": "0x6080604052600436106101095760003560e01c8063ae42298811610095578063cd38347f11610064578063cd38347f146102c3578063debb2de1146102da578063ea61226c146102ed578063fbfa77cf14610321578063fc0c546a1461035557600080fd5b8063ae42298814610257578063af760d6c1461026a578063b381a8111461027f578063b9186d7d1461029657600080fd5b8063541508ed116100dc578063541508ed146101dd5780636a627842146101f35780637c5e2795146102065780639153e548146102215780639443792c1461023757600080fd5b8063075461721461010e578063150b7a021461015f57806317d70f7c146101a4578063248b71fc146101c8575b600080fd5b34801561011a57600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016b57600080fd5b5061018b61017a366004610d7c565b630a85bd0160e11b95945050505050565b6040516001600160e01b03199091168152602001610156565b3480156101b057600080fd5b506101ba60005481565b604051908152602001610156565b6101db6101d6366004610e17565b610389565b005b3480156101e957600080fd5b506101ba61043b81565b6101db610201366004610e41565b610399565b34801561021257600080fd5b506101ba66764e2c6f05400081565b34801561022d57600080fd5b506101ba611af481565b34801561024357600080fd5b506101db610252366004610e63565b6103a7565b6101db610265366004610e41565b610593565b34801561027657600080fd5b506101ba600a81565b34801561028b57600080fd5b506101ba620f4c0081565b3480156102a257600080fd5b506101ba6102b1366004610e8f565b60016020526000908152604090205481565b3480156102cf57600080fd5b506101ba620f424081565b6101db6102e8366004610e17565b61067b565b3480156102f957600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b34801561032d57600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b34801561036157600080fd5b506101427f000000000000000000000000000000000000000000000000000000000000000081565b6103958282600061075b565b5050565b6103a4816000610a63565b50565b604051632142170760e11b8152336004820152306024820152604481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342842e0e90606401600060405180830381600087803b15801561041557600080fd5b505af1158015610429573d6000803e3d6000fd5b5050604051632510de4b60e21b81526004810186905260248101859052604481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169250639443792c9150606401600060405180830381600087803b15801561049d57600080fd5b505af11580156104b1573d6000803e3d6000fd5b5050506000848152600160205260408120549091506104d290600390610ebe565b604051627b8a6760e11b8152600481018290523360248201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062f714ce90604401600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50505050837f410c5c259085cde81fedf70c1aa308ec839373c26e9b7ada6560a2aca0254eb68260405161058591815260200190565b60405180910390a250505050565b6040516370a0823160e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e9190610ee0565b116106705760405162461bcd60e51b815260206004820152601d60248201527f53434f3a20444953434f554e545f544f4b454e5f4e4f545f4f574e454400000060448201526064015b60405180910390fd5b6103a4816001610a63565b6040516370a0823160e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156106e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107069190610ee0565b116107535760405162461bcd60e51b815260206004820152601d60248201527f53434f3a20444953434f554e545f544f4b454e5f4e4f545f4f574e45440000006044820152606401610667565b610395828260015b600082116107a15760405162461bcd60e51b81526020600482015260136024820152720a6869e7440929cac82989288be988a9c8ea89606b1b6044820152606401610667565b6000805490808467ffffffffffffffff8111156107c0576107c0610ef9565b6040519080825280602002602001820160405280156107e9578160200160208202803683370190505b50905060005b858110156108f657611af4841061083a5760405162461bcd60e51b815260206004820152600f60248201526e14d0d3ce8810531317d35253951151608a1b6044820152606401610667565b600061084585610c9d565b9050851561087157606461085a600a83610f0f565b6108649190610ebe565b61086e9082610f2e565b90505b61087b8185610f45565b9350847fcc9c58b575eabd3f6a1ee653e91fcea3ff546867ffc3782a3bbca1f9b6dbb8df826040516108af91815260200190565b60405180910390a2848383815181106108ca576108ca610f5d565b6020908102919091010152846108df81610f73565b9550505080806108ee90610f73565b9150506107ef565b506000839055348211156109445760405162461bcd60e51b81526020600482015260156024820152740a6869e7440929ca6aa8c8c9286928a9ca8be8aa89605b1b6044820152606401610667565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083156108fc029084906000818181858888f1935050505015801561099a573d6000803e3d6000fd5b50813411156109db57336108fc6109b18434610f2e565b6040518115909202916000818181858888f193505050501580156109d9573d6000803e3d6000fd5b505b604051631143124160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632286248290610a299089908590600401610f8c565b600060405180830381600087803b158015610a4357600080fd5b505af1158015610a57573d6000803e3d6000fd5b50505050505050505050565b600054611af48110610aa95760405162461bcd60e51b815260206004820152600f60248201526e14d0d3ce8810531317d35253951151608a1b6044820152606401610667565b610ab4816001610f45565b6000908155610ac282610c9d565b90508215610aee576064610ad7600a83610f0f565b610ae19190610ebe565b610aeb9082610f2e565b90505b80341015610b365760405162461bcd60e51b81526020600482015260156024820152740a6869e7440929ca6aa8c8c9286928a9ca8be8aa89605b1b6044820152606401610667565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082156108fc029083906000818181858888f19350505050158015610b8c573d6000803e3d6000fd5b5080341115610bcd57336108fc610ba38334610f2e565b6040518115909202916000818181858888f19350505050158015610bcb573d6000803e3d6000fd5b505b817fcc9c58b575eabd3f6a1ee653e91fcea3ff546867ffc3782a3bbca1f9b6dbb8df82604051610bff91815260200190565b60405180910390a26040516394d008ef60e01b81526001600160a01b0385811660048301526024820184905260606044830152600060648301527f000000000000000000000000000000000000000000000000000000000000000016906394d008ef90608401600060405180830381600087803b158015610c7f57600080fd5b505af1158015610c93573d6000803e3d6000fd5b5050505050505050565b6000610f98821015610cf85750600081815260016020526040902054620f4240610cca620f4c0083610f0f565b610cd49190610ebe565b60016000610ce28583610f45565b8152602081019190915260400160002055919050565b60016000836002610d0b610f9882610f0f565b610d159190610f2e565b610d1f9190610f2e565b81526020019081526020016000205468051493c4ea2444937a610d429190610f2e565b9050610f98821115610d605760008281526001602052604090208190555b919050565b80356001600160a01b0381168114610d6057600080fd5b600080600080600060808688031215610d9457600080fd5b610d9d86610d65565b9450610dab60208701610d65565b935060408601359250606086013567ffffffffffffffff80821115610dcf57600080fd5b818801915088601f830112610de357600080fd5b813581811115610df257600080fd5b896020828501011115610e0457600080fd5b9699959850939650602001949392505050565b60008060408385031215610e2a57600080fd5b610e3383610d65565b946020939093013593505050565b600060208284031215610e5357600080fd5b610e5c82610d65565b9392505050565b600080600060608486031215610e7857600080fd5b505081359360208301359350604090920135919050565b600060208284031215610ea157600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600082610edb57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610ef257600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000816000190483118215151615610f2957610f29610ea8565b500290565b600082821015610f4057610f40610ea8565b500390565b60008219821115610f5857610f58610ea8565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201610f8557610f85610ea8565b5060010190565b6001600160a01b038316815260606020808301829052835191830182905260009184820191906080850190845b81811015610fd557845183529383019391830191600101610fb9565b50508481036040860152600081528181019350505050939250505056fea2646970667358221220642766fa0f73a47b306fb1c5b7a639cdf7b47f9f31f01baf6bc721fa12fe529264736f6c634300080d0033",
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
},
"storageLayout": {
"storage": [
{
"astId": 1811,
"contract": "contracts/NFTSigmoidCurveOffering.sol:NFTSigmoidCurveOffering",
"label": "tokenId",
"offset": 0,
"slot": "0",
"type": "t_uint256"
},
{
"astId": 1815,
"contract": "contracts/NFTSigmoidCurveOffering.sol:NFTSigmoidCurveOffering",
"label": "priceOf",
"offset": 0,
"slot": "1",
"type": "t_mapping(t_uint256,t_uint256)"
}
],
"types": {
"t_mapping(t_uint256,t_uint256)": {
"encoding": "mapping",
"key": "t_uint256",
"label": "mapping(uint256 => uint256)",
"numberOfBytes": "32",
"value": "t_uint256"
},
"t_uint256": {
"encoding": "inplace",
"label": "uint256",
"numberOfBytes": "32"
}
}
}
}