[ { "inputs": [ { "internalType": "address", "name": "_alignedServiceManager", "type": "address" }, { "internalType": "address", "name": "_paymentServiceAddr", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "submittedElf", "type": "bytes32" } ], "name": "InvalidElf", "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": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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": [], "name": "alignedServiceManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "elfCommitment", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "mintedProofs", "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": [], "name": "paymentServiceAddr", "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": "nonpayable", "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": "nonpayable", "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": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "proofCommitment", "type": "bytes32" }, { "internalType": "bytes32", "name": "pubInputCommitment", "type": "bytes32" }, { "internalType": "bytes32", "name": "provingSystemAuxDataCommitment", "type": "bytes32" }, { "internalType": "bytes20", "name": "proofGeneratorAddr", "type": "bytes20" }, { "internalType": "bytes32", "name": "batchMerkleRoot", "type": "bytes32" }, { "internalType": "bytes", "name": "merkleProof", "type": "bytes" }, { "internalType": "uint256", "name": "verificationDataBatchIndex", "type": "uint256" } ], "name": "verifyBatchInclusion", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040527f3f99615fdf3b67a01e41b38eee75a32c778ee2fa631bd74e01c89afc2f70f5de600a553480156200003557600080fd5b506040516200170838038062001708833981016040819052620000589162000121565b6040518060400160405280601581526020017f416c69676e6564204c61796572205a4b205175697a000000000000000000000081525060405180604001604052806004815260200163415a4b5160e01b8152508160009081620000bc919062000200565b506001620000cb828262000200565b5050600880546001600160a01b039485166001600160a01b031991821617909155600980549390941692169190911790915550620002cc565b80516001600160a01b03811681146200011c57600080fd5b919050565b600080604083850312156200013557600080fd5b620001408362000104565b9150620001506020840162000104565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018457607f821691505b602082108103620001a557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001fb576000816000526020600020601f850160051c81016020861015620001d65750805b601f850160051c820191505b81811015620001f757828155600101620001e2565b5050505b505050565b81516001600160401b038111156200021c576200021c62000159565b62000234816200022d84546200016f565b84620001ab565b602080601f8311600181146200026c5760008415620002535750858301515b600019600386901b1c1916600185901b178555620001f7565b600085815260208120601f198616915b828110156200029d578886015182559484019460019091019084016200027c565b5085821015620002bc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61142c80620002dc6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806390a05f2e116100a2578063c87b56dd11610071578063c87b56dd1461023c578063dd3df4bd1461024f578063e985e9c514610272578063f19cd88214610285578063fa534dc01461029857600080fd5b806390a05f2e146101fb57806395d89b411461020e578063a22cb46514610216578063b88d4fde1461022957600080fd5b80632212d607116100e95780632212d6071461019857806323b872dd146101af57806342842e0e146101c25780636352211e146101d557806370a08231146101e857600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e610129366004610e04565b6102ab565b60405190151581526020015b60405180910390f35b61014b6102d6565b60405161013a9190610e78565b61016b610166366004610e8b565b610368565b6040516001600160a01b03909116815260200161013a565b610196610191366004610ec0565b610391565b005b6101a1600a5481565b60405190815260200161013a565b6101966101bd366004610eea565b6103a0565b6101966101d0366004610eea565b610430565b61016b6101e3366004610e8b565b610450565b6101a16101f6366004610f26565b61045b565b60095461016b906001600160a01b031681565b61014b6104a3565b610196610224366004610f4f565b6104b2565b610196610237366004611029565b6104bd565b61014b61024a366004610e8b565b6104d4565b61012e61025d366004610e8b565b600b6020526000908152604090205460ff1681565b61012e610280366004611091565b6104ff565b60085461016b906001600160a01b031681565b6101a16102a63660046110c4565b61052d565b60006001600160e01b03198216632483248360e11b14806102d057506102d08261080f565b92915050565b6060600080546102e590611156565b80601f016020809104026020016040519081016040528092919081815260200182805461031190611156565b801561035e5780601f106103335761010080835404028352916020019161035e565b820191906000526020600020905b81548152906001019060200180831161034157829003601f168201915b5050505050905090565b60006103738261085f565b506000828152600460205260409020546001600160a01b03166102d0565b61039c828233610898565b5050565b6001600160a01b0382166103cf57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103dc8383336108a5565b9050836001600160a01b0316816001600160a01b03161461042a576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103c6565b50505050565b61044b838383604051806020016040528060008152506104bd565b505050565b60006102d08261085f565b60006001600160a01b038216610487576040516322718ad960e21b8152600060048201526024016103c6565b506001600160a01b031660009081526003602052604090205490565b6060600180546102e590611156565b61039c33838361099e565b6104c88484846103a0565b61042a84848484610a3d565b60606104df8261085f565b506040518060600160405280603581526020016113c26035913992915050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600085600a54146105545760405163636ca83360e11b8152600481018790526024016103c6565b606085901c33146105b15760405162461bcd60e51b815260206004820152602160248201527f70726f6f6647656e657261746f724164647220646f6573206e6f74206d6174636044820152600d60fb1b60648201526084016103c6565b6040805160208082018b90528183018a9052606082018990526bffffffffffffffffffffffff198816608083015282516074818403018152609490920183528151918101919091206000818152600b9092529190205460ff161561064e5760405162461bcd60e51b81526020600482015260146024820152731c1c9bdbd988185b1c9958591e481b5a5b9d195960621b60448201526064016103c6565b60085460095460405160009283926001600160a01b0391821692610684928f928f928f928f928f928f928f921690602401611190565b60408051601f198184030181529181526020820180516001600160e01b03166306045a9160e01b179052516106b991906111f7565b600060405180830381855afa9150503d80600081146106f4576040519150601f19603f3d011682016040523d82523d6000602084013e6106f9565b606091505b5091509150816107405760405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b60448201526064016103c6565b6000818060200190518101906107569190611213565b9050806107a55760405162461bcd60e51b815260206004820152601b60248201527f70726f6f66206e6f7420696e636c7564656420696e206261746368000000000060448201526064016103c6565b6000848152600b60205260408120805460ff191660011790556007805490826107cd83611230565b9190505590506107dd3382610b66565b6107ff816040518060600160405280603581526020016113c260359139610bcb565b9c9b505050505050505050505050565b60006001600160e01b031982166380ac58cd60e01b148061084057506001600160e01b03198216635b5e139f60e01b145b806102d057506301ffc9a760e01b6001600160e01b03198316146102d0565b6000818152600260205260408120546001600160a01b0316806102d057604051637e27328960e01b8152600481018490526024016103c6565b61044b8383836001610c1b565b6000828152600260205260408120546001600160a01b03908116908316156108d2576108d2818486610d21565b6001600160a01b03811615610910576108ef600085600080610c1b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561093f576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b0382166109d057604051630b61174360e31b81526001600160a01b03831660048201526024016103c6565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561042a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610a7f903390889087908790600401611257565b6020604051808303816000875af1925050508015610aba575060408051601f3d908101601f19168201909252610ab791810190611294565b60015b610b23573d808015610ae8576040519150601f19603f3d011682016040523d82523d6000602084013e610aed565b606091505b508051600003610b1b57604051633250574960e11b81526001600160a01b03851660048201526024016103c6565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610b5f57604051633250574960e11b81526001600160a01b03851660048201526024016103c6565b5050505050565b6001600160a01b038216610b9057604051633250574960e11b8152600060048201526024016103c6565b6000610b9e838360006108a5565b90506001600160a01b0381161561044b576040516339e3563760e11b8152600060048201526024016103c6565b6000828152600660205260409020610be38282611301565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b8080610c2f57506001600160a01b03821615155b15610cf1576000610c3f8461085f565b90506001600160a01b03831615801590610c6b5750826001600160a01b0316816001600160a01b031614155b8015610c7e5750610c7c81846104ff565b155b15610ca75760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103c6565b8115610cef5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610d2c838383610d85565b61044b576001600160a01b038316610d5a57604051637e27328960e01b8152600481018290526024016103c6565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103c6565b60006001600160a01b03831615801590610de35750826001600160a01b0316846001600160a01b03161480610dbf5750610dbf84846104ff565b80610de357506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b031981168114610e0157600080fd5b50565b600060208284031215610e1657600080fd5b8135610e2181610deb565b9392505050565b60005b83811015610e43578181015183820152602001610e2b565b50506000910152565b60008151808452610e64816020860160208601610e28565b601f01601f19169290920160200192915050565b602081526000610e216020830184610e4c565b600060208284031215610e9d57600080fd5b5035919050565b80356001600160a01b0381168114610ebb57600080fd5b919050565b60008060408385031215610ed357600080fd5b610edc83610ea4565b946020939093013593505050565b600080600060608486031215610eff57600080fd5b610f0884610ea4565b9250610f1660208501610ea4565b9150604084013590509250925092565b600060208284031215610f3857600080fd5b610e2182610ea4565b8015158114610e0157600080fd5b60008060408385031215610f6257600080fd5b610f6b83610ea4565b91506020830135610f7b81610f41565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610fad57600080fd5b813567ffffffffffffffff80821115610fc857610fc8610f86565b604051601f8301601f19908116603f01168101908282118183101715610ff057610ff0610f86565b8160405283815286602085880101111561100957600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561103f57600080fd5b61104885610ea4565b935061105660208601610ea4565b925060408501359150606085013567ffffffffffffffff81111561107957600080fd5b61108587828801610f9c565b91505092959194509250565b600080604083850312156110a457600080fd5b6110ad83610ea4565b91506110bb60208401610ea4565b90509250929050565b600080600080600080600060e0888a0312156110df57600080fd5b87359650602088013595506040880135945060608801356bffffffffffffffffffffffff198116811461111157600080fd5b93506080880135925060a088013567ffffffffffffffff81111561113457600080fd5b6111408a828b01610f9c565b92505060c0880135905092959891949750929550565b600181811c9082168061116a57607f821691505b60208210810361118a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006101008a83528960208401528860408401526bffffffffffffffffffffffff19881660608401528660808401528060a08401526111d181840187610e4c565b60c084019590955250506001600160a01b039190911660e0909101529695505050505050565b60008251611209818460208701610e28565b9190910192915050565b60006020828403121561122557600080fd5b8151610e2181610f41565b60006001820161125057634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061128a90830184610e4c565b9695505050505050565b6000602082840312156112a657600080fd5b8151610e2181610deb565b601f82111561044b576000816000526020600020601f850160051c810160208610156112da5750805b601f850160051c820191505b818110156112f9578281556001016112e6565b505050505050565b815167ffffffffffffffff81111561131b5761131b610f86565b61132f816113298454611156565b846112b1565b602080601f831160018114611364576000841561134c5750858301515b600019600386901b1c1916600185901b1785556112f9565b600085815260208120601f198616915b8281101561139357888601518255948401946001909101908401611374565b50858210156113b15787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe697066733a2f2f516d554b76696e793978326f51556567794a464642415555327135727675354373507a725561425344756b704851a2646970667358221220041f89a6709f256b3256856f254072133802554f86e958675909574c8e0c52b764736f6c6343000818003300000000000000000000000058f280bebe9b34c9939c3c39e0890c81f163b623000000000000000000000000815aeca64a974297942d2bbf034abee22a38a003