0 txs
1 call
constructor
constructor(address _verifier)
functions
getGroupAdmin
viewfunction getGroupAdmin(uint256 groupId) view returns (address)
getMerkleTreeDepth
viewfunction getMerkleTreeDepth(uint256 groupId) view returns (uint256)
getMerkleTreeRoot
viewfunction getMerkleTreeRoot(uint256 groupId) view returns (uint256)
getMerkleTreeSize
viewfunction getMerkleTreeSize(uint256 groupId) view returns (uint256)
groupCounter
viewfunction groupCounter() view returns (uint256)
groups
viewfunction groups(uint256) view returns (uint256 merkleTreeDuration)
hasMember
viewfunction hasMember(uint256 groupId, uint256 identityCommitment) view returns (bool)
indexOf
viewfunction indexOf(uint256 groupId, uint256 identityCommitment) view returns (uint256)
verifier
viewfunction verifier() view returns (address)
verifyProof
viewfunction verifyProof(uint256 groupId, tuple proof) view returns (bool)
acceptGroupAdmin
nonpayablefunction acceptGroupAdmin(uint256 groupId)
addMember
nonpayablefunction addMember(uint256 groupId, uint256 identityCommitment)
addMembers
nonpayablefunction addMembers(uint256 groupId, uint256[] identityCommitments)
createGroup
nonpayablefunction createGroup() returns (uint256 groupId)
createGroup
nonpayablefunction createGroup(address admin, uint256 merkleTreeDuration) returns (uint256 groupId)
createGroup
nonpayablefunction createGroup(address admin) returns (uint256 groupId)
removeMember
nonpayablefunction removeMember(uint256 groupId, uint256 identityCommitment, uint256[] merkleProofSiblings)
updateGroupAdmin
nonpayablefunction updateGroupAdmin(uint256 groupId, address newAdmin)
updateGroupMerkleTreeDuration
nonpayablefunction updateGroupMerkleTreeDuration(uint256 groupId, uint256 newMerkleTreeDuration)
updateMember
nonpayablefunction updateMember(uint256 groupId, uint256 identityCommitment, uint256 newIdentityCommitment, uint256[] merkleProofSiblings)
validateProof
nonpayablefunction validateProof(uint256 groupId, tuple proof)
events
GroupAdminPending
event GroupAdminPending(uint256 indexed groupId, address indexed oldAdmin, address indexed newAdmin)
GroupAdminUpdated
event GroupAdminUpdated(uint256 indexed groupId, address indexed oldAdmin, address indexed newAdmin)
GroupCreated
event GroupCreated(uint256 indexed groupId)
GroupMerkleTreeDurationUpdated
event GroupMerkleTreeDurationUpdated(uint256 indexed groupId, uint256 oldMerkleTreeDuration, uint256 newMerkleTreeDuration)
MemberAdded
event MemberAdded(uint256 indexed groupId, uint256 index, uint256 identityCommitment, uint256 merkleTreeRoot)
MemberRemoved
event MemberRemoved(uint256 indexed groupId, uint256 index, uint256 identityCommitment, uint256 merkleTreeRoot)
MembersAdded
event MembersAdded(uint256 indexed groupId, uint256 startIndex, uint256[] identityCommitments, uint256 merkleTreeRoot)
MemberUpdated
event MemberUpdated(uint256 indexed groupId, uint256 index, uint256 identityCommitment, uint256 newIdentityCommitment, uint256 merkleTreeRoot)
ProofValidated
event ProofValidated(uint256 indexed groupId, uint256 merkleTreeDepth, uint256 indexed merkleTreeRoot, uint256 nullifier, uint256 message, uint256 indexed scope, uint256[8] points)
errors
LeafAlreadyExists
error LeafAlreadyExists()
LeafCannotBeZero
error LeafCannotBeZero()
LeafDoesNotExist
error LeafDoesNotExist()
LeafGreaterThanSnarkScalarField
error LeafGreaterThanSnarkScalarField()
Semaphore__CallerIsNotTheGroupAdmin
error Semaphore__CallerIsNotTheGroupAdmin()
Semaphore__CallerIsNotThePendingGroupAdmin
error Semaphore__CallerIsNotThePendingGroupAdmin()
Semaphore__GroupDoesNotExist
error Semaphore__GroupDoesNotExist()
Semaphore__GroupHasNoMembers
error Semaphore__GroupHasNoMembers()
Semaphore__InvalidProof
error Semaphore__InvalidProof()
Semaphore__MerkleTreeDepthIsNotSupported
error Semaphore__MerkleTreeDepthIsNotSupported()
Semaphore__MerkleTreeRootIsExpired
error Semaphore__MerkleTreeRootIsExpired()
Semaphore__MerkleTreeRootIsNotPartOfTheGroup
error Semaphore__MerkleTreeRootIsNotPartOfTheGroup()
Semaphore__YouAreUsingTheSameNullifierTwice
error Semaphore__YouAreUsingTheSameNullifierTwice()
WrongSiblingNodes
error WrongSiblingNodes()
creation bytecode
0x6080604052348015600f57600080fd5b50604051612038380380612038833981016040819052602c916050565b600380546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b611fab8061008d6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636389e107116100b8578063a9961c941161007c578063a9961c94146102b5578063d0d898dd146102de578063d24924fe146102f1578063da3cda52146102fa578063dabc4d511461030d578063fcf0b6ec1461032057600080fd5b80636389e1071461022c5780636cdd32fe1461024f5780637ee35a0c1461026257806390509d441461028257806396324bd41461029557600080fd5b80634178c4d5116100ff5780634178c4d5146101c8578063456f4188146101db578063568ee826146101fe578063575185ed146102115780635c3f3b601461021957600080fd5b8063042453711461013c57806306dd8485146101515780631783efc3146101775780632b7ac3f31461018a5780632c880363146101b5575b600080fd5b61014f61014a366004611a0e565b610333565b005b61016461015f366004611a5a565b610366565b6040519081526020015b60405180910390f35b61014f610185366004611a5a565b610387565b60035461019d906001600160a01b031681565b6040516001600160a01b03909116815260200161016e565b6101646101c3366004611a98565b6103b8565b61014f6101d6366004611ac2565b6103f0565b6101ee6101e9366004611b23565b610427565b604051901515815260200161016e565b61014f61020c366004611b5d565b61068c565b61016461069a565b610164610227366004611b89565b6106d1565b61016461023a366004611ba4565b60009081526020819052604090206001015490565b61014f61025d366004611bbd565b61070a565b610164610270366004611ba4565b60009081526020819052604090205490565b6101ee610290366004611a5a565b61073f565b6101646102a3366004611ba4565b60046020526000908152604090205481565b61019d6102c3366004611ba4565b6000908152600160205260409020546001600160a01b031690565b61014f6102ec366004611b23565b610761565b61016460055481565b61014f610308366004611ba4565b61084b565b61016461031b366004611ba4565b610857565b61014f61032e366004611a5a565b61087b565b600061034084848461090b565b600094855260046020908152604080872092875260019092019052909320429055505050565b600082815260208190526040812061037e90836109a9565b90505b92915050565b600061039383836109f6565b6000938452600460209081526040808620928652600190920190529092204290555050565b60058054600091826103c983611c26565b9190505590506103d98184610a98565b600081815260046020526040902091909155919050565b60006103ff8686868686610b22565b6000968752600460209081526040808920928952600190920190529095204290555050505050565b60008281526001602052604081205483906001600160a01b031661045e5760405163029f057960e01b815260040160405180910390fd5b60018335108061046f575060208335115b1561048d5760405163767b278960e11b815260040160405180910390fd5b600084815260208190526040812054908190036104bd5760405163c8b02e0160e01b815260040160405180910390fd5b60006104c886610857565b90508085602001351461054d576000868152600460208181526040808420898301358552600181018352908420548a855292909152549091829003610520576040516326994ac360e11b815260040160405180910390fd5b61052a8183611c3f565b42111561054a576040516309581a9960e41b815260040160405180910390fd5b50505b60035460408051808201825260a0880135815260c088013560208083019190915282516080808201855260e08b01358286019081526101008c0135606080850191909152908352855180870187526101208d013581526101408d01358186015283850152855180870187526101608d013581526101808d01358186015286519283018752848d013583528c870135948301949094526001600160a01b039096169563a23f019995929392820190610606908d0135610be9565b81526020016106188c60800135610be9565b90526040516001600160e01b031960e087901b16815261064194939291908c3590600401611cb4565b602060405180830381865afa15801561065e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106829190611d41565b9695505050505050565b6106968282610c20565b5050565b60058054600091826106ab83611c26565b9190505590506106bb8133610a98565b6000818152600460205260409020610e10905590565b60058054600091826106e283611c26565b9190505590506106f28183610a98565b6000818152600460205260409020610e109055919050565b600061071885858585610cb4565b60009586526004602090815260408088209288526001909201905290942042905550505050565b600082815260208181526040808320848452600301909152812054151561037e565b600082815260046020908152604080832084820135845260020190915290205460ff16156107a25760405163041162bd60e31b815260040160405180910390fd5b6107ac8282610427565b6107c95760405163012a9af160e61b815260040160405180910390fd5b6000828152600460209081526040808320848201358085526002909101835292819020805460ff1916600117905551608084013592918401359185917f0c32e14cfe81a05d371c248d22de6b7ae849e981b76a1f8842e7b6da73fc405a9161083f918735919060608901359060a08a0190611d6a565b60405180910390a45050565b61085481610d72565b50565b60008181526020818152604080832060018101548452600201909152812054610381565b60008281526001602052604090205482906001600160a01b031633146108b4576040516317737e4f60e31b815260040160405180910390fd5b60008381526004602090815260409182902080549085905582518181529182018590529185917f264b2a8f6763c084235fe832ba903482b2ef1a521336881fc75b987c2dfd29c5910160405180910390a250505050565b60008381526001602052604081205484906001600160a01b03163314610944576040516317737e4f60e31b815260040160405180910390fd5b6000858152602081905260409020805490610960908686610e17565b9250857f61e5e8054e3daf084a0c6c646c065e8bf5e7ca4d5567bda942309bd1652f349d828787876040516109989493929190611d92565b60405180910390a250509392505050565b600081815260038301602052604081205481036109d957604051631c811d5b60e21b815260040160405180910390fd5b600082815260038401602052604090205461037e90600190611dd8565b60008281526001602052604081205483906001600160a01b03163314610a2f576040516317737e4f60e31b815260040160405180910390fd5b6000848152602081905260409020805490610a4a9085611344565b604080518381526020810187905290810182905290935085907f19239b3f93cd10558aaf11423af70c77763bf54f52bcc75bfa74d4d13548cde99060600160405180910390a2505092915050565b60008281526001602052604080822080546001600160a01b0319166001600160a01b0385161790555183917ff0adfb94eab6daf835deb69c5738fe636150c3dfd08094a76f39b963dc8cb05a91a26040516001600160a01b0382169060009084907f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e3908390a45050565b60008581526001602052604081205486906001600160a01b03163314610b5b576040516317737e4f60e31b815260040160405180910390fd5b6000878152602081905260408120610b7390886109a9565b6000898152602081905260409020909150610b91908888888861150d565b60408051838152602081018a90529081018890526060810182905290935088907fea3588e4a2a0c93d6a0e69dfeaf7496f43ccccf02ad9ce0a5b7627cbca4b61b19060800160405180910390a2505095945050505050565b6000600882604051602001610c0091815260200190565b60408051601f198184030181529190528051602090910120901c92915050565b60008281526001602052604090205482906001600160a01b03163314610c59576040516317737e4f60e31b815260040160405180910390fd5b60008381526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519091339186917f1018365553cce55d9cb02ef73e18cc9311894f3fe1d1eafd235ac2d26cd8ba5891a4505050565b60008481526001602052604081205485906001600160a01b03163314610ced576040516317737e4f60e31b815260040160405180910390fd5b6000868152602081905260408120610d0590876109a9565b6000888152602081905260409020909150610d22908787876119a9565b604080518381526020810189905290810182905290935087907f3108849c053c77b8073a11256dffb5ffd5b55e93e105a355e1c9061db890d8719060600160405180910390a25050949350505050565b6000818152600260205260409020546001600160a01b03163314610da9576040516334c4245d60e01b815260040160405180910390fd5b60008181526001602090815260408083208054336001600160a01b031980831682179093556002909452828520805490921690915590516001600160a01b0390911692839185917f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e391a45050565b8254600090815b83811015610f4857600080516020611f56833981519152858583818110610e4757610e47611c52565b9050602002013510610e6c576040516361c0541760e11b815260040160405180910390fd5b848482818110610e7e57610e7e611c52565b90506020020135600003610ea5576040516314b48df160e11b815260040160405180910390fd5b610eda86868684818110610ebb57610ebb611c52565b9050602002013560009081526003919091016020526040902054151590565b15610ef8576040516312c50cad60e11b815260040160405180910390fd5b80610f04836001611c3f565b610f0e9190611c3f565b866003016000878785818110610f2657610f26611c52565b6020908102929092013583525081019190915260400160002055600101610e1e565b50606084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050506001880154919250505b610f918584611c3f565b610f9c826002611ed2565b1015610fb257610fab81611c26565b9050610f87565b60018701819055826000610fc68783611c3f565b9050600182811c90600090610fdb8185611dd8565b610fe7911c6001611c3f565b905060005b858110156112d85760006110008484611dd8565b905060008167ffffffffffffffff81111561101d5761101d611ede565b604051908082528060200260200182016040528015611046578160200160208202803683370190505b50905060005b82811015611203576000886110618884611c3f565b61106c906002611ef4565b101561108f578f60020160008681526020019081526020016000205490506110cb565b8a8961109b8985611c3f565b6110a6906002611ef4565b6110b09190611dd8565b815181106110c0576110c0611c52565b602002602001015190505b6000886110d88985611c3f565b6110e3906002611ef4565b6110ee906001611c3f565b101561113b578b8a6111008a86611c3f565b61110b906002611ef4565b611116906001611c3f565b6111209190611dd8565b8151811061113057611130611c52565b602002602001015190505b600081156111d357604080518082018252848152602081018490529051632b0aac7f60e11b815273b43122ecb241dd50062641f089876679fd06599a9163561558fe9161118b9190600401611f0b565b602060405180830381865af41580156111a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cc9190611f3c565b90506111d6565b50815b808585815181106111e9576111e9611c52565b60200260200101818152505083600101935050505061104c565b5085600116600103611254578860018a5161121e9190611dd8565b8151811061122e5761122e611c52565b60200260200101518e60020160008581526020019081526020016000208190555061129f565b60018951111561129f578860028a5161126d9190611dd8565b8151811061127d5761127d611c52565b60200260200101518e6002016000858152602001908152602001600020819055505b849650600185901c9450809850839550600180856112bd9190611dd8565b6112c9911c6001611c3f565b93508260010192505050610fec565b506112e38988611c3f565b8b55855186906000906112f8576112f8611c52565b60200260200101518b6002016000878152602001908152602001600020819055508560008151811061132c5761132c611c52565b60200260200101519750505050505050509392505050565b6000600080516020611f568339815191528210611374576040516361c0541760e11b815260040160405180910390fd5b81600003611395576040516314b48df160e11b815260040160405180910390fd5b6000828152600384016020526040902054156113c4576040516312c50cad60e11b815260040160405180910390fd5b8254600180850154906113d8908390611c3f565b6113e3826002611ed2565b10156113f5576113f281611c26565b90505b600185018190558360005b828110156114d2578084901c6001166001036114b657604080518082018252600083815260028a0160209081529083902054825281018490529051632b0aac7f60e11b815273b43122ecb241dd50062641f089876679fd06599a9163561558fe9161146e9190600401611f0b565b602060405180830381865af415801561148b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114af9190611f3c565b91506114ca565b600081815260028801602052604090208290555b600101611400565b506114dc83611c26565b8087556000928352600287016020908152604080852084905596845260039097019096529390209390935550919050565b6000600080516020611f56833981519152841061153d576040516361c0541760e11b815260040160405180910390fd5b600085815260038701602052604090205461156b57604051631c811d5b60e21b815260040160405180910390fd5b60008481526003870160205260409020541561159a576040516312c50cad60e11b815260040160405180910390fd5b60006115a687876109a9565b8754909150859087906000906115be90600190611dd8565b60018b0154909150600090815b81811015611920578087901c60011660010361177e57600080516020611f568339815191528a8a8581811061160257611602611c52565b9050602002013510611627576040516361c0541760e11b815260040160405180910390fd5b73b43122ecb241dd50062641f089876679fd06599a63561558fe60405180604001604052808d8d8881811061165e5761165e611c52565b905060200201358152602001898152506040518263ffffffff1660e01b815260040161168a9190611f0b565b602060405180830381865af41580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cb9190611f3c565b955073b43122ecb241dd50062641f089876679fd06599a63561558fe60405180604001604052808d8d8881811061170457611704611c52565b905060200201358152602001888152506040518263ffffffff1660e01b81526004016117309190611f0b565b602060405180830381865af415801561174d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117719190611f3c565b9450826001019250611918565b86811c84821c1461190457600080516020611f568339815191528a8a858181106117aa576117aa611c52565b90506020020135106117cf576040516361c0541760e11b815260040160405180910390fd5b600081815260028e0160205260409020548590036117fb57600081815260028e01602052604090208690555b73b43122ecb241dd50062641f089876679fd06599a63561558fe60405180604001604052808981526020018d8d8881811061183857611838611c52565b905060200201358152506040518263ffffffff1660e01b815260040161185e9190611f0b565b602060405180830381865af415801561187b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189f9190611f3c565b955073b43122ecb241dd50062641f089876679fd06599a63561558fe60405180604001604052808881526020018d8d888181106118de576118de611c52565b905060200201358152506040518263ffffffff1660e01b81526004016117309190611f0b565b600081815260028e01602052604090208690555b6001016115cb565b5060018c0154600090815260028d016020526040902054841461195657604051631fd4986360e11b815260040160405180910390fd5b600081815260028d016020526040902085905589156119885760008b815260038d016020526040808220548c83529120555b505050600088815260038a0160205260408120555091505095945050505050565b60006119b985856000868661150d565b95945050505050565b60008083601f8401126119d457600080fd5b50813567ffffffffffffffff8111156119ec57600080fd5b6020830191508360208260051b8501011115611a0757600080fd5b9250929050565b600080600060408486031215611a2357600080fd5b83359250602084013567ffffffffffffffff811115611a4157600080fd5b611a4d868287016119c2565b9497909650939450505050565b60008060408385031215611a6d57600080fd5b50508035926020909101359150565b80356001600160a01b0381168114611a9357600080fd5b919050565b60008060408385031215611aab57600080fd5b611ab483611a7c565b946020939093013593505050565b600080600080600060808688031215611ada57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115611b0657600080fd5b611b12888289016119c2565b969995985093965092949392505050565b6000808284036101c0811215611b3857600080fd5b833592506101a0601f1982011215611b4f57600080fd5b506020830190509250929050565b60008060408385031215611b7057600080fd5b82359150611b8060208401611a7c565b90509250929050565b600060208284031215611b9b57600080fd5b61037e82611a7c565b600060208284031215611bb657600080fd5b5035919050565b60008060008060608587031215611bd357600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611bf857600080fd5b611c04878288016119c2565b95989497509550505050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c3857611c38611c10565b5060010190565b8082018082111561038157610381611c10565b634e487b7160e01b600052603260045260246000fd5b8060005b6002811015611c8b578151845260209384019390910190600101611c6c565b50505050565b8060005b6004811015611c8b578151845260209384019390910190600101611c95565b6101a08101611cc38288611c68565b604082018660005b6002811015611d125781518360005b6002811015611cf9578251825260209283019290910190600101611cda565b5050506040929092019160209190910190600101611ccb565b505050611d2260c0830186611c68565b611d30610100830185611c91565b826101808301529695505050505050565b600060208284031215611d5357600080fd5b81518015158114611d6357600080fd5b9392505050565b8481526020810184905260408101839052610160810161010083606084013795945050505050565b848152606060208201819052810183905260006001600160fb1b03841115611db957600080fd5b8360051b80866080850137604083019390935250016080019392505050565b8181038181111561038157610381611c10565b6001815b6001841115611e2657808504811115611e0a57611e0a611c10565b6001841615611e1857908102905b60019390931c928002611def565b935093915050565b600082611e3d57506001610381565b81611e4a57506000610381565b8160018114611e605760028114611e6a57611e86565b6001915050610381565b60ff841115611e7b57611e7b611c10565b50506001821b610381565b5060208310610133831016604e8410600b8410161715611ea9575081810a610381565b611eb66000198484611deb565b8060001904821115611eca57611eca611c10565b029392505050565b600061037e8383611e2e565b634e487b7160e01b600052604160045260246000fd5b808202811582820484141761038157610381611c10565b60408101818360005b6002811015611f33578151835260209283019290910190600101611f14565b50505092915050565b600060208284031215611f4e57600080fd5b505191905056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a26469706673582212203c96a9248c46b7343bba1a8cb52a7f8fa3db4c51ed93451d0f5d176e503b3b6264736f6c634300081c0033000000000000000000000000fa31ac8ac139f69434145fda4c01c2bcb262b850