UNPKG

@unirep/contracts

Version:

Client library for contracts related functions which are used in UniRep protocol.

362 lines (361 loc) 20.8 kB
{ "_format": "hh-sol-artifact-1", "contractName": "EpochKeyVerifierHelper", "sourceName": "contracts/verifierHelpers/EpochKeyVerifierHelper.sol", "abi": [ { "inputs": [ { "internalType": "contract Unirep", "name": "_unirep", "type": "address" }, { "internalType": "contract IVerifier", "name": "_verifier", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AttesterInvalid", "type": "error" }, { "inputs": [], "name": "CallerInvalid", "type": "error" }, { "inputs": [ { "internalType": "uint48", "name": "chainId", "type": "uint48" } ], "name": "ChainIdNotMatch", "type": "error" }, { "inputs": [], "name": "InvalidEpoch", "type": "error" }, { "inputs": [], "name": "InvalidEpochKey", "type": "error" }, { "inputs": [], "name": "InvalidProof", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "stateTreeRoot", "type": "uint256" } ], "name": "InvalidStateTreeRoot", "type": "error" }, { "inputs": [], "name": "SNARK_SCALAR_FIELD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "chainid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "control", "type": "uint256" } ], "name": "decodeEpochKeyControl", "outputs": [ { "internalType": "uint8", "name": "nonce", "type": "uint8" }, { "internalType": "uint48", "name": "epoch", "type": "uint48" }, { "internalType": "uint160", "name": "attesterId", "type": "uint160" }, { "internalType": "bool", "name": "revealNonce", "type": "bool" }, { "internalType": "uint48", "name": "chainId", "type": "uint48" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "publicSignals", "type": "uint256[]" } ], "name": "decodeEpochKeySignals", "outputs": [ { "components": [ { "internalType": "uint256", "name": "epochKey", "type": "uint256" }, { "internalType": "uint256", "name": "stateTreeRoot", "type": "uint256" }, { "internalType": "uint256", "name": "data", "type": "uint256" }, { "internalType": "uint160", "name": "attesterId", "type": "uint160" }, { "internalType": "uint48", "name": "epoch", "type": "uint48" }, { "internalType": "uint48", "name": "chainId", "type": "uint48" }, { "internalType": "uint8", "name": "nonce", "type": "uint8" }, { "internalType": "bool", "name": "revealNonce", "type": "bool" } ], "internalType": "struct BaseVerifierHelper.EpochKeySignals", "name": "", "type": "tuple" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "data", "type": "uint256" }, { "internalType": "uint8", "name": "shiftBits", "type": "uint8" }, { "internalType": "uint8", "name": "variableBits", "type": "uint8" } ], "name": "shiftAndParse", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "publicSignals", "type": "uint256[]" }, { "internalType": "uint256[8]", "name": "proof", "type": "uint256[8]" } ], "name": "verifyAndCheck", "outputs": [ { "components": [ { "internalType": "uint256", "name": "epochKey", "type": "uint256" }, { "internalType": "uint256", "name": "stateTreeRoot", "type": "uint256" }, { "internalType": "uint256", "name": "data", "type": "uint256" }, { "internalType": "uint160", "name": "attesterId", "type": "uint160" }, { "internalType": "uint48", "name": "epoch", "type": "uint48" }, { "internalType": "uint48", "name": "chainId", "type": "uint48" }, { "internalType": "uint8", "name": "nonce", "type": "uint8" }, { "internalType": "bool", "name": "revealNonce", "type": "bool" } ], "internalType": "struct BaseVerifierHelper.EpochKeySignals", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "publicSignals", "type": "uint256[]" }, { "internalType": "uint256[8]", "name": "proof", "type": "uint256[8]" } ], "name": "verifyAndCheckCaller", "outputs": [ { "components": [ { "internalType": "uint256", "name": "epochKey", "type": "uint256" }, { "internalType": "uint256", "name": "stateTreeRoot", "type": "uint256" }, { "internalType": "uint256", "name": "data", "type": "uint256" }, { "internalType": "uint160", "name": "attesterId", "type": "uint160" }, { "internalType": "uint48", "name": "epoch", "type": "uint48" }, { "internalType": "uint48", "name": "chainId", "type": "uint48" }, { "internalType": "uint8", "name": "nonce", "type": "uint8" }, { "internalType": "bool", "name": "revealNonce", "type": "bool" } ], "internalType": "struct BaseVerifierHelper.EpochKeySignals", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60a060405234801561001057600080fd5b50604051610ca5380380610ca583398101604081905261002f91610084565b600080546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617905565ffffffffffff46166080526100be565b6001600160a01b038116811461008157600080fd5b50565b6000806040838503121561009757600080fd5b82516100a28161006c565b60208401519092506100b38161006c565b809150509250929050565b608051610bc56100e06000396000818161017b01526107340152610bc56000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063870316bb1161005b578063870316bb1461013d578063bf8085ea14610150578063c60ee8a414610163578063cd84980e1461017657600080fd5b806325c2cd121461008257806354af684e146100bc57806359c960a01461011d575b600080fd5b6100a97f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181565b6040519081526020015b60405180910390f35b6100cf6100ca36600461087e565b61019d565b6040805160ff909616865265ffffffffffff948516602087015273ffffffffffffffffffffffffffffffffffffffff909316928501929092521515606084015216608082015260a0016100b3565b61013061012b3660046108e3565b610230565b6040516100b39190610925565b61013061014b3660046109af565b61042f565b61013061015e3660046109af565b6107b0565b6100a9610171366004610a22565b61085a565b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6000808080806008603060a060016024856101b98c828861085a565b9a506101c58682610a8d565b90506101d28c828761085a565b99506101de8582610a8d565b90506101eb8c828661085a565b98506101f78482610a8d565b90506102048c828561085a565b151597506102128382610a8d565b905061021f8c828461085a565b965050505050505091939590929450565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152838360008181106102c5576102c5610aa6565b6020029190910135825250838360018181106102e3576102e3610aa6565b905060200201358160200181815250508383600381811061030657610306610aa6565b60200291909101356040830152506103368484600281811061032a5761032a610aa6565b9050602002013561019d565b65ffffffffffff90811660a087015290151560e086015273ffffffffffffffffffffffffffffffffffffffff909116606085015216608083015260ff1660c082015280517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001116103d2576040517f2217bbbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015173ffffffffffffffffffffffffffffffffffffffff90811610610426576040517fd7aa584700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90505b92915050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290529061047a8585610230565b6001546040517f7004914400000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906370049144906104d590889088908890600401610ad5565b602060405180830381865afa1580156104f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105169190610b32565b61054c576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460608301516040517f983c9cdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169063983c9cdb90602401602060405180830381865afa1580156105c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e59190610b54565b90508065ffffffffffff16826080015165ffffffffffff161115610635576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546060830151608084015160208501516040517f849a51c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015265ffffffffffff9092166024830152604482015291169063849a51c790606401602060405180830381865afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb9190610b32565b6107325781602001516040517ff1b8a45e00000000000000000000000000000000000000000000000000000000815260040161072991815260200190565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008260a0015165ffffffffffff16146107a75760a08201516040517f4c4783a800000000000000000000000000000000000000000000000000000000815265ffffffffffff9091166004820152602401610729565b50949350505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052906107fc85858561042f565b606081015190915073ffffffffffffffffffffffffffffffffffffffff163314610852576040517fa78d09b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b600061086d600160ff841681901b610b7c565b8360ff1685901c1690509392505050565b60006020828403121561089057600080fd5b5035919050565b60008083601f8401126108a957600080fd5b50813567ffffffffffffffff8111156108c157600080fd5b6020830191508360208260051b85010111156108dc57600080fd5b9250929050565b600080602083850312156108f657600080fd5b823567ffffffffffffffff81111561090d57600080fd5b61091985828601610897565b90969095509350505050565b60006101008201905082518252602083015160208301526040830151604083015273ffffffffffffffffffffffffffffffffffffffff6060840151166060830152608083015165ffffffffffff80821660808501528060a08601511660a0850152505060ff60c08401511660c083015260e08301516109a860e084018215159052565b5092915050565b60008060006101208085870312156109c657600080fd5b843567ffffffffffffffff8111156109dd57600080fd5b6109e987828801610897565b9095509350508481018610156109fe57600080fd5b506020840190509250925092565b803560ff81168114610a1d57600080fd5b919050565b600080600060608486031215610a3757600080fd5b83359250610a4760208501610a0c565b9150610a5560408501610a0c565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60ff818116838216019081111561042957610429610a5e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b610120808252810183905260006101407f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115610b1257600080fd5b8460051b8087838601378301019050610100836020840137949350505050565b600060208284031215610b4457600080fd5b8151801515811461042657600080fd5b600060208284031215610b6657600080fd5b815165ffffffffffff8116811461042657600080fd5b8181038181111561042957610429610a5e56fea26469706673582212206bc39a6f62b19a47dbc57b176ae6a1aa913107b7f538d8f1149c996688b52c1664736f6c63430008130033", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063870316bb1161005b578063870316bb1461013d578063bf8085ea14610150578063c60ee8a414610163578063cd84980e1461017657600080fd5b806325c2cd121461008257806354af684e146100bc57806359c960a01461011d575b600080fd5b6100a97f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181565b6040519081526020015b60405180910390f35b6100cf6100ca36600461087e565b61019d565b6040805160ff909616865265ffffffffffff948516602087015273ffffffffffffffffffffffffffffffffffffffff909316928501929092521515606084015216608082015260a0016100b3565b61013061012b3660046108e3565b610230565b6040516100b39190610925565b61013061014b3660046109af565b61042f565b61013061015e3660046109af565b6107b0565b6100a9610171366004610a22565b61085a565b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6000808080806008603060a060016024856101b98c828861085a565b9a506101c58682610a8d565b90506101d28c828761085a565b99506101de8582610a8d565b90506101eb8c828661085a565b98506101f78482610a8d565b90506102048c828561085a565b151597506102128382610a8d565b905061021f8c828461085a565b965050505050505091939590929450565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152838360008181106102c5576102c5610aa6565b6020029190910135825250838360018181106102e3576102e3610aa6565b905060200201358160200181815250508383600381811061030657610306610aa6565b60200291909101356040830152506103368484600281811061032a5761032a610aa6565b9050602002013561019d565b65ffffffffffff90811660a087015290151560e086015273ffffffffffffffffffffffffffffffffffffffff909116606085015216608083015260ff1660c082015280517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001116103d2576040517f2217bbbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015173ffffffffffffffffffffffffffffffffffffffff90811610610426576040517fd7aa584700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90505b92915050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290529061047a8585610230565b6001546040517f7004914400000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906370049144906104d590889088908890600401610ad5565b602060405180830381865afa1580156104f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105169190610b32565b61054c576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460608301516040517f983c9cdb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169063983c9cdb90602401602060405180830381865afa1580156105c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e59190610b54565b90508065ffffffffffff16826080015165ffffffffffff161115610635576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546060830151608084015160208501516040517f849a51c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015265ffffffffffff9092166024830152604482015291169063849a51c790606401602060405180830381865afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb9190610b32565b6107325781602001516040517ff1b8a45e00000000000000000000000000000000000000000000000000000000815260040161072991815260200190565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008260a0015165ffffffffffff16146107a75760a08201516040517f4c4783a800000000000000000000000000000000000000000000000000000000815265ffffffffffff9091166004820152602401610729565b50949350505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052906107fc85858561042f565b606081015190915073ffffffffffffffffffffffffffffffffffffffff163314610852576040517fa78d09b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b600061086d600160ff841681901b610b7c565b8360ff1685901c1690509392505050565b60006020828403121561089057600080fd5b5035919050565b60008083601f8401126108a957600080fd5b50813567ffffffffffffffff8111156108c157600080fd5b6020830191508360208260051b85010111156108dc57600080fd5b9250929050565b600080602083850312156108f657600080fd5b823567ffffffffffffffff81111561090d57600080fd5b61091985828601610897565b90969095509350505050565b60006101008201905082518252602083015160208301526040830151604083015273ffffffffffffffffffffffffffffffffffffffff6060840151166060830152608083015165ffffffffffff80821660808501528060a08601511660a0850152505060ff60c08401511660c083015260e08301516109a860e084018215159052565b5092915050565b60008060006101208085870312156109c657600080fd5b843567ffffffffffffffff8111156109dd57600080fd5b6109e987828801610897565b9095509350508481018610156109fe57600080fd5b506020840190509250925092565b803560ff81168114610a1d57600080fd5b919050565b600080600060608486031215610a3757600080fd5b83359250610a4760208501610a0c565b9150610a5560408501610a0c565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60ff818116838216019081111561042957610429610a5e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b610120808252810183905260006101407f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115610b1257600080fd5b8460051b8087838601378301019050610100836020840137949350505050565b600060208284031215610b4457600080fd5b8151801515811461042657600080fd5b600060208284031215610b6657600080fd5b815165ffffffffffff8116811461042657600080fd5b8181038181111561042957610429610a5e56fea26469706673582212206bc39a6f62b19a47dbc57b176ae6a1aa913107b7f538d8f1149c996688b52c1664736f6c63430008130033", "linkReferences": {}, "deployedLinkReferences": {} }