UNPKG

@settlemint/solidity-token-erc721a

Version:
492 lines (491 loc) 24.4 kB
{ "_format": "hh-sol-artifact-1", "contractName": "ERC721A", "sourceName": "erc721a/contracts/ERC721A.sol", "abi": [ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" } ], "bytecode": "0x60806040523461007f57610fcf8038038061001981610097565b92833981019060408183031261007f5780516001600160401b03811161007f57826100459183016100c1565b6020820151929091906001600160401b03841161007f576100709361006a92016100c1565b906102ce565b604051610c1490816103bb8239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b038111838210176100bc57604052565b610083565b81601f8201121561007f578051906001600160401b0382116100bc576100f0601f8301601f1916602001610097565b928284526020838301011161007f57815f9260208093018386015e8301015290565b90600182811c92168015610140575b602083101461012c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610121565b601f8111610156575050565b60025f5260205f20906020601f840160051c83019310610190575b601f0160051c01905b818110610185575050565b5f815560010161017a565b9091508190610171565b601f82116101a757505050565b5f5260205f20906020601f840160051c830193106101df575b601f0160051c01905b8181106101d4575050565b5f81556001016101c9565b90915081906101c0565b80519091906001600160401b0381116100bc576102128161020b600354610112565b600361019a565b602092601f821160011461025257610242929382915f92610247575b50508160011b915f199060031b1c19161790565b600355565b015190505f8061022e565b60035f52601f198216937fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f5b8681106102b6575083600195961061029e575b505050811b01600355565b01515f1960f88460031b161c191690555f8080610293565b91926020600181928685015181550194019201610280565b8051906001600160401b0382116100bc576102f3826102ee600254610112565b61014a565b602090601f83116001146103335791806103269261032e95945f926102475750508160011b915f199060031b1c19161790565b6002556101e9565b5f8055565b60025f52601f19831691907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace925f5b8181106103a2575091600193918561032e9796941061038a575b505050811b016002556101e9565b01515f1960f88460031b161c191690555f808061037c565b9293602060018192878601518155019501930161036256fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146100f457806306fdde03146100ef578063081812fc146100ea578063095ea7b3146100e557806318160ddd146100e057806323b872dd146100db57806342842e0e146100d65780636352211e146100d157806370a08231146100cc57806395d89b41146100c7578063a22cb465146100c2578063b88d4fde146100bd578063c87b56dd146100b85763e985e9c5146100b3575f80fd5b610787565b61071f565b61069c565b6105b8565b610503565b6104ac565b61047d565b610459565b610445565b6103ea565b610323565b6102a8565b6101b5565b61010f565b6001600160e01b031981160361010b57565b5f80fd5b3461010b57602036600319011261010b57602060043561012e816100f9565b63ffffffff60e01b166301ffc9a760e01b811490811561016c575b811561015b575b506040519015158152f35b635b5e139f60e01b1490505f610150565b6380ac58cd60e01b81149150610149565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206101b292818152019061017d565b90565b3461010b575f36600319011261010b576040515f6002548060011c906001811690811561029e575b60208310821461028a578285526020850191908115610271575060011461021f575b61021b8461020f81860382610659565b604051918291826101a1565b0390f35b60025f9081529250907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b81841061025d5750500161020f826101ff565b80548484015260209093019260010161024a565b60ff191682525090151560051b01905061020f826101ff565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101dd565b3461010b57602036600319011261010b576004356102c5816109c6565b156102e8575f526006602052602060018060a01b0360405f205416604051908152f35b6333d1c03960e21b5f5260045ffd5b600435906001600160a01b038216820361010b57565b602435906001600160a01b038216820361010b57565b604036600319011261010b576103376102f7565b602435906001600160a01b0361034c83610a54565b16908133036103bb575b61038b8161036c855f52600660205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b0316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b5f82815260076020908152604080832033845290915290205460ff16610356576367d9dca160e11b5f5260045ffd5b3461010b575f36600319011261010b5760205f546001549003604051908152f35b606090600319011261010b576004356001600160a01b038116810361010b57906024356001600160a01b038116810361010b579060443590565b6104576104513661040b565b916107e3565b005b6104576104653661040b565b9060405192610475602085610659565b5f8452610985565b3461010b57602036600319011261010b5760206001600160a01b036104a3600435610a54565b16604051908152f35b3461010b57602036600319011261010b576001600160a01b036104cd6102f7565b1680156104f4575f526005602052602067ffffffffffffffff60405f205416604051908152f35b6323d3ad8160e21b5f5260045ffd5b3461010b575f36600319011261010b576040515f6003548060011c90600181169081156105ae575b60208310821461028a578285526020850191908115610271575060011461055c5761021b8461020f81860382610659565b60035f9081529250907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81841061059a5750500161020f826101ff565b805484840152602090930192600101610587565b91607f169161052b565b3461010b57604036600319011261010b576105d16102f7565b6024359081151580920361010b57335f9081526007602090815260408083206001600160a01b0385168452909152902060ff1981541660ff841617905560405191825260018060a01b0316907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761067b57604052565b610645565b67ffffffffffffffff811161067b57601f01601f191660200190565b608036600319011261010b576106b06102f7565b6106b861030d565b906044356064359267ffffffffffffffff841161010b573660238501121561010b578360040135926106e984610680565b936106f76040519586610659565b808552366024828801011161010b576020815f92602461045799018389013786010152610985565b3461010b57602036600319011261010b5761073b6004356109c6565b15610778575f60405161074f602082610659565b5261021b604051610761602082610659565b5f815260405191829160208352602083019061017d565b630a14c4b560e41b5f5260045ffd5b3461010b57604036600319011261010b57602060ff6107d76107a76102f7565b6107af61030d565b6001600160a01b039182165f9081526007865260408082209290931681526020919091522090565b54166040519015158152f35b91906107ee82610a54565b6001600160a01b03938416938116849003610980575f838152600660205260409020805461082f6001600160a01b03871633908114908314171590565b1590565b610936575b61092d575b506001600160a01b0384165f90815260056020526040902080545f190190556001600160a01b0382165f908152600560205260409020805460010190556001600160a01b0382164260a01b17600160e11b1761089d845f52600460205260405f2090565b55600160e11b8116156108e8575b506001600160a01b03169182907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4156108e357565b610a36565b600183016108fe815f52600460205260405f2090565b541561090b575b506108ab565b5f54811461090557610925905f52600460205260405f2090565b555f80610905565b5f90555f610839565b61097661082b61096f3361095a8a60018060a01b03165f52600760205260405f2090565b9060018060a01b03165f5260205260405f2090565b5460ff1690565b1561083457610a27565b610a19565b9291906109938282866107e3565b803b6109a0575b50505050565b6109a993610b39565b156109b7575f80808061099a565b6368d2bf6b60e11b5f5260045ffd5b905f915f5481106109d45750565b9091505b805f52600460205260405f205480610a0d575080156109f9575f19016109d8565b634e487b7160e01b5f52601160045260245ffd5b600160e01b1615919050565b62a1148160e81b5f5260045ffd5b632ce44b5f60e11b5f5260045ffd5b633a954ecd60e21b5f5260045ffd5b636f96cda160e11b5f5260045ffd5b610a66815f52600460205260405f2090565b54908115610a7d5750600160e01b8116610a455790565b90505f54811015610a45575b5f19015f81815260046020526040902054908115610abd5750600160e01b8116156101b257636f96cda160e11b5f5260045ffd5b9050610a89565b9081602091031261010b57516101b2816100f9565b6001600160a01b0391821681529116602082015260408101919091526080606082018190526101b29291019061017d565b3d15610b34573d90610b1b82610680565b91610b296040519384610659565b82523d5f602084013e565b606090565b906020925f610b61959360405196879586948593630a85bd0160e11b85523360048601610ad9565b03926001600160a01b03165af15f9181610bad575b50610b9757610b83610b0a565b805115610b9257805190602001fd5b6109b7565b6001600160e01b031916630a85bd0160e11b1490565b610bd091925060203d602011610bd7575b610bc88183610659565b810190610ac4565b905f610b76565b503d610bbe56fea2646970667358221220aef9bef95dbc59c4ac7e3380bebccbbd7085cda67a881d4e620a19f43df6494d64736f6c634300081e0033", "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a7146100f457806306fdde03146100ef578063081812fc146100ea578063095ea7b3146100e557806318160ddd146100e057806323b872dd146100db57806342842e0e146100d65780636352211e146100d157806370a08231146100cc57806395d89b41146100c7578063a22cb465146100c2578063b88d4fde146100bd578063c87b56dd146100b85763e985e9c5146100b3575f80fd5b610787565b61071f565b61069c565b6105b8565b610503565b6104ac565b61047d565b610459565b610445565b6103ea565b610323565b6102a8565b6101b5565b61010f565b6001600160e01b031981160361010b57565b5f80fd5b3461010b57602036600319011261010b57602060043561012e816100f9565b63ffffffff60e01b166301ffc9a760e01b811490811561016c575b811561015b575b506040519015158152f35b635b5e139f60e01b1490505f610150565b6380ac58cd60e01b81149150610149565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206101b292818152019061017d565b90565b3461010b575f36600319011261010b576040515f6002548060011c906001811690811561029e575b60208310821461028a578285526020850191908115610271575060011461021f575b61021b8461020f81860382610659565b604051918291826101a1565b0390f35b60025f9081529250907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b81841061025d5750500161020f826101ff565b80548484015260209093019260010161024a565b60ff191682525090151560051b01905061020f826101ff565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101dd565b3461010b57602036600319011261010b576004356102c5816109c6565b156102e8575f526006602052602060018060a01b0360405f205416604051908152f35b6333d1c03960e21b5f5260045ffd5b600435906001600160a01b038216820361010b57565b602435906001600160a01b038216820361010b57565b604036600319011261010b576103376102f7565b602435906001600160a01b0361034c83610a54565b16908133036103bb575b61038b8161036c855f52600660205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b0316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b5f82815260076020908152604080832033845290915290205460ff16610356576367d9dca160e11b5f5260045ffd5b3461010b575f36600319011261010b5760205f546001549003604051908152f35b606090600319011261010b576004356001600160a01b038116810361010b57906024356001600160a01b038116810361010b579060443590565b6104576104513661040b565b916107e3565b005b6104576104653661040b565b9060405192610475602085610659565b5f8452610985565b3461010b57602036600319011261010b5760206001600160a01b036104a3600435610a54565b16604051908152f35b3461010b57602036600319011261010b576001600160a01b036104cd6102f7565b1680156104f4575f526005602052602067ffffffffffffffff60405f205416604051908152f35b6323d3ad8160e21b5f5260045ffd5b3461010b575f36600319011261010b576040515f6003548060011c90600181169081156105ae575b60208310821461028a578285526020850191908115610271575060011461055c5761021b8461020f81860382610659565b60035f9081529250907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81841061059a5750500161020f826101ff565b805484840152602090930192600101610587565b91607f169161052b565b3461010b57604036600319011261010b576105d16102f7565b6024359081151580920361010b57335f9081526007602090815260408083206001600160a01b0385168452909152902060ff1981541660ff841617905560405191825260018060a01b0316907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761067b57604052565b610645565b67ffffffffffffffff811161067b57601f01601f191660200190565b608036600319011261010b576106b06102f7565b6106b861030d565b906044356064359267ffffffffffffffff841161010b573660238501121561010b578360040135926106e984610680565b936106f76040519586610659565b808552366024828801011161010b576020815f92602461045799018389013786010152610985565b3461010b57602036600319011261010b5761073b6004356109c6565b15610778575f60405161074f602082610659565b5261021b604051610761602082610659565b5f815260405191829160208352602083019061017d565b630a14c4b560e41b5f5260045ffd5b3461010b57604036600319011261010b57602060ff6107d76107a76102f7565b6107af61030d565b6001600160a01b039182165f9081526007865260408082209290931681526020919091522090565b54166040519015158152f35b91906107ee82610a54565b6001600160a01b03938416938116849003610980575f838152600660205260409020805461082f6001600160a01b03871633908114908314171590565b1590565b610936575b61092d575b506001600160a01b0384165f90815260056020526040902080545f190190556001600160a01b0382165f908152600560205260409020805460010190556001600160a01b0382164260a01b17600160e11b1761089d845f52600460205260405f2090565b55600160e11b8116156108e8575b506001600160a01b03169182907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4156108e357565b610a36565b600183016108fe815f52600460205260405f2090565b541561090b575b506108ab565b5f54811461090557610925905f52600460205260405f2090565b555f80610905565b5f90555f610839565b61097661082b61096f3361095a8a60018060a01b03165f52600760205260405f2090565b9060018060a01b03165f5260205260405f2090565b5460ff1690565b1561083457610a27565b610a19565b9291906109938282866107e3565b803b6109a0575b50505050565b6109a993610b39565b156109b7575f80808061099a565b6368d2bf6b60e11b5f5260045ffd5b905f915f5481106109d45750565b9091505b805f52600460205260405f205480610a0d575080156109f9575f19016109d8565b634e487b7160e01b5f52601160045260245ffd5b600160e01b1615919050565b62a1148160e81b5f5260045ffd5b632ce44b5f60e11b5f5260045ffd5b633a954ecd60e21b5f5260045ffd5b636f96cda160e11b5f5260045ffd5b610a66815f52600460205260405f2090565b54908115610a7d5750600160e01b8116610a455790565b90505f54811015610a45575b5f19015f81815260046020526040902054908115610abd5750600160e01b8116156101b257636f96cda160e11b5f5260045ffd5b9050610a89565b9081602091031261010b57516101b2816100f9565b6001600160a01b0391821681529116602082015260408101919091526080606082018190526101b29291019061017d565b3d15610b34573d90610b1b82610680565b91610b296040519384610659565b82523d5f602084013e565b606090565b906020925f610b61959360405196879586948593630a85bd0160e11b85523360048601610ad9565b03926001600160a01b03165af15f9181610bad575b50610b9757610b83610b0a565b805115610b9257805190602001fd5b6109b7565b6001600160e01b031916630a85bd0160e11b1490565b610bd091925060203d602011610bd7575b610bc88183610659565b810190610ac4565b905f610b76565b503d610bbe56fea2646970667358221220aef9bef95dbc59c4ac7e3380bebccbbd7085cda67a881d4e620a19f43df6494d64736f6c634300081e0033", "linkReferences": {}, "deployedLinkReferences": {} }