@maci-protocol/website 0.0.0-ci.185b643
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +157 -0
- package/CHANGELOG.md +566 -0
- package/LICENSE +22 -0
- package/README.md +58 -0
- package/babel.config.js +3 -0
- package/blog/2021-10-12-maci-v1.md +100 -0
- package/blog/2022-09-22-maci-v1-technical-introduction.md +180 -0
- package/blog/2023-01-18-maci-v1.1.1.md +121 -0
- package/blog/2024-01-18-roadmap.md +106 -0
- package/blog/2024-02-28-maci-v1.2.0.md +121 -0
- package/blog/2024-04-10-roadmap-q2.md +96 -0
- package/blog/2024-05-08-ethdam.md +169 -0
- package/blog/2024-05-22-the-origins-of-maci.md +38 -0
- package/blog/2024-05-28-upcoming-grants.md +85 -0
- package/blog/2024-06-17-understanding-maci.md +63 -0
- package/blog/2024-06-21-deciphering-maci.md +48 -0
- package/blog/2024-06-28-revolusioning-public-goods-funding.md +32 -0
- package/blog/2024-07-23-q2-review.md +72 -0
- package/blog/2024-07-30-roadmap-q3.md +61 -0
- package/blog/2024-08-10-maci-v2.md +102 -0
- package/blog/2024-08-29-anonymous-poll-joining.md +47 -0
- package/blog/2024-10-29-q3-review.md +63 -0
- package/blog/2024-11-20-maci-platform.md +93 -0
- package/blog/2024-12-01-maci-getting-started.md +294 -0
- package/blog/2025-03-21-roadmap-2025.md +112 -0
- package/blog/assets/MACI_Bob_SignUp_1.png +0 -0
- package/blog/assets/MACI_Bob_SignUp_2.png +0 -0
- package/blog/assets/MACI_Complex_Message.png +0 -0
- package/blog/assets/MACI_Contracts.png +0 -0
- package/blog/assets/MACI_Sign_Up.png +0 -0
- package/blog/assets/MACI_Simple_Message.png +0 -0
- package/blog/assets/MACI_Verifier_1.png +0 -0
- package/blog/authors.yml +5 -0
- package/docusaurus.config.ts +213 -0
- package/package.json +65 -0
- package/src/components/ActionCard/index.tsx +30 -0
- package/src/components/ActionCard/styles.module.css +96 -0
- package/src/components/HomepageFeatures/index.tsx +91 -0
- package/src/components/HomepageFeatures/styles.module.css +17 -0
- package/src/components/ProjectCard/index.tsx +74 -0
- package/src/components/ProjectCard/styles.module.css +77 -0
- package/src/components/ProjectList/index.tsx +218 -0
- package/src/components/ProjectList/styles.module.css +180 -0
- package/src/content/projects.json +294 -0
- package/src/css/card.module.css +130 -0
- package/src/css/custom.css +91 -0
- package/src/icons/IconDiscord.tsx +16 -0
- package/src/icons/IconGithub.tsx +16 -0
- package/src/icons/IconWebsite.tsx +16 -0
- package/src/pages/blogs.tsx +58 -0
- package/src/pages/index.module.css +152 -0
- package/src/pages/index.tsx +66 -0
- package/src/pages/projects.tsx +44 -0
- package/src/pages/roadmap.md +150 -0
- package/src/pages/typedoc.tsx +11 -0
- package/src/plugins/blog-plugin/index.ts +86 -0
- package/src/react-app-env.d.ts +1 -0
- package/src/scripts/setupSolidityDocs.ts +67 -0
- package/src/scripts/setupTypedoc.ts +112 -0
- package/src/scripts/utils.ts +115 -0
- package/src/utils/getProjectsByFilter.ts +40 -0
- package/static/.nojekyll +0 -0
- package/static/audit_reports/20210922_Hashcloak_audit_report.pdf +0 -0
- package/static/audit_reports/202220930_Hashcloak_audit_report.pdf +0 -0
- package/static/audit_reports/20240223_PSE_Audit_audit_report.pdf +0 -0
- package/static/audit_reports/20240731_PSE_Audit_audit_report.pdf +0 -0
- package/static/fonts/DM_Sans.woff2 +0 -0
- package/static/fonts/Share_Tech_Mono.woff2 +0 -0
- package/static/img/box.png +0 -0
- package/static/img/box_dark.png +0 -0
- package/static/img/chain.png +0 -0
- package/static/img/chain_dark.png +0 -0
- package/static/img/chart.png +0 -0
- package/static/img/chart_dark.png +0 -0
- package/static/img/circuits/MACI-Circuits.excalidraw +39652 -0
- package/static/img/circuits/calculateTotal.svg +21 -0
- package/static/img/circuits/ecdh.svg +21 -0
- package/static/img/circuits/messageToCommand.svg +21 -0
- package/static/img/circuits/messageValidator.svg +21 -0
- package/static/img/circuits/poseidonHasher13.svg +21 -0
- package/static/img/circuits/privToPubkey.svg +21 -0
- package/static/img/circuits/processMessages.svg +21 -0
- package/static/img/circuits/processMessagesInputHasher.svg +21 -0
- package/static/img/circuits/processMessages_2_0.svg +21 -0
- package/static/img/circuits/processOne.svg +21 -0
- package/static/img/circuits/processTopup.svg +21 -0
- package/static/img/circuits/processingAfterPollEnds.svg +21 -0
- package/static/img/circuits/quinBatchLeavesExists.svg +21 -0
- package/static/img/circuits/quinCheckRoot.svg +21 -0
- package/static/img/circuits/quinGeneratePathIndices.svg +21 -0
- package/static/img/circuits/quinSelector.svg +21 -0
- package/static/img/circuits/resultsCommitmentVerifier.svg +21 -0
- package/static/img/circuits/splicer.svg +21 -0
- package/static/img/circuits/tallyInputHasher.svg +21 -0
- package/static/img/circuits/tallyVotes.svg +21 -0
- package/static/img/circuits/unpackElement.svg +21 -0
- package/static/img/circuits/verifySignature.svg +21 -0
- package/static/img/completingAPoll.svg +4 -0
- package/static/img/contracts.svg +16 -0
- package/static/img/coordinatorComponents.svg +21 -0
- package/static/img/favicon.ico +0 -0
- package/static/img/generateProofs.svg +4 -0
- package/static/img/hero.svg +9 -0
- package/static/img/maci-card.png +0 -0
- package/static/img/maci-rpgf-design.jpg +0 -0
- package/static/img/messageProcessingLocal.svg +21 -0
- package/static/img/offlineProcessing.svg +21 -0
- package/static/img/pse-logo-round.png +0 -0
- package/static/img/relayer-diagram.png +0 -0
- package/static/img/tallyCommitments.svg +4 -0
- package/static/img/voteTallyingLocal.svg +21 -0
- package/tsconfig.json +34 -0
- package/versioned_docs/version-v0.x/circuits.md +22 -0
- package/versioned_docs/version-v0.x/contract.md +186 -0
- package/versioned_docs/version-v0.x/faq.md +67 -0
- package/versioned_docs/version-v0.x/introduction.md +119 -0
- package/versioned_docs/version-v0.x/quadratic-vote-tallying-circuit.md +138 -0
- package/versioned_docs/version-v0.x/state-root-transition-circuit.md +230 -0
- package/versioned_docs/version-v1.2/audit.md +160 -0
- package/versioned_docs/version-v1.2/ci-pipeline.md +38 -0
- package/versioned_docs/version-v1.2/circuits.md +508 -0
- package/versioned_docs/version-v1.2/cli.md +689 -0
- package/versioned_docs/version-v1.2/contracts.md +445 -0
- package/versioned_docs/version-v1.2/contributing/code-of-conduct.md +91 -0
- package/versioned_docs/version-v1.2/contributing/contributing.md +129 -0
- package/versioned_docs/version-v1.2/coordinator-processing.md +46 -0
- package/versioned_docs/version-v1.2/deployment.md +122 -0
- package/versioned_docs/version-v1.2/installation.md +175 -0
- package/versioned_docs/version-v1.2/integrating.md +200 -0
- package/versioned_docs/version-v1.2/introduction.md +94 -0
- package/versioned_docs/version-v1.2/key-change.md +182 -0
- package/versioned_docs/version-v1.2/overview.md +47 -0
- package/versioned_docs/version-v1.2/poll-types.md +68 -0
- package/versioned_docs/version-v1.2/primitives.md +216 -0
- package/versioned_docs/version-v1.2/project-ideas.md +14 -0
- package/versioned_docs/version-v1.2/purpose.md +62 -0
- package/versioned_docs/version-v1.2/solidity-docs/MACI.md +345 -0
- package/versioned_docs/version-v1.2/solidity-docs/MessageProcessor.md +266 -0
- package/versioned_docs/version-v1.2/solidity-docs/MessageProcessorFactory.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/Poll.md +381 -0
- package/versioned_docs/version-v1.2/solidity-docs/PollFactory.md +50 -0
- package/versioned_docs/version-v1.2/solidity-docs/SignUpToken.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/Subsidy.md +218 -0
- package/versioned_docs/version-v1.2/solidity-docs/SubsidyFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/Tally.md +311 -0
- package/versioned_docs/version-v1.2/solidity-docs/TallyFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/TallyNonQv.md +296 -0
- package/versioned_docs/version-v1.2/solidity-docs/TallyNonQvFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/TopupCredit.md +61 -0
- package/versioned_docs/version-v1.2/solidity-docs/VkRegistry.md +457 -0
- package/versioned_docs/version-v1.2/solidity-docs/benchmarks/HasherBenchmarks.md +44 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/Hasher.md +125 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/IVerifier.md +11 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/MockVerifier.md +17 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/Pairing.md +85 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT3.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT4.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT5.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT6.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkCommon.md +16 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkConstants.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/Verifier.md +61 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/EASGatekeeper.md +121 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/FreeForAllSignUpGatekeeper.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpGatekeeper.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpTokenGatekeeper.md +93 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperBase.md +79 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperMultiple.md +48 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperSingle.md +42 -0
- package/versioned_docs/version-v1.2/solidity-docs/index.md +4 -0
- package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/ConstantInitialVoiceCreditProxy.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/InitialVoiceCreditProxy.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IEAS.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IHats.md +103 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMPFactory.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMessageProcessor.md +31 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPoll.md +217 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPollFactory.md +29 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallyFactory.md +28 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallySubsidyFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVerifier.md +25 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVkRegistry.md +70 -0
- package/versioned_docs/version-v1.2/solidity-docs/mocks/MockHatsProtocol.md +133 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueue.md +464 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary.md +60 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary0.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinaryMaci.md +34 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary.md +75 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary0.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryBlankSl.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryMaci.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/EmptyBallotRoots.md +13 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/CommonUtilities.md +25 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/DomainObjs.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/Params.md +36 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/Utilities.md +79 -0
- package/versioned_docs/version-v1.2/spec.md +944 -0
- package/versioned_docs/version-v1.2/testing-in-detail.md +209 -0
- package/versioned_docs/version-v1.2/testing.md +472 -0
- package/versioned_docs/version-v1.2/topup.md +43 -0
- package/versioned_docs/version-v1.2/troubleshooting.md +51 -0
- package/versioned_docs/version-v1.2/trusted-setup.md +76 -0
- package/versioned_docs/version-v1.2/typedoc/cli/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/cli/index.md +15 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/AirdropArgs.md +89 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployArgs.md +154 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployPollArgs.md +154 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployedContracts.md +130 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenLocalStateArgs.md +168 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenProofsArgs.md +388 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IGenKeypairArgs.md +37 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IRegisteredUserArgs.md +63 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeMessagesArgs.md +76 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeSignupsArgs.md +76 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PollContracts.md +53 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/ProveOnChainArgs.md +128 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PublishArgs.md +154 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SignupArgs.md +89 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SubsidyData.md +73 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TallyData.md +166 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TopupArgs.md +89 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/VerifyArgs.md +128 -0
- package/versioned_docs/version-v1.2/typedoc/cli/modules.md +556 -0
- package/versioned_docs/version-v1.2/typedoc/core/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/core/classes/MaciState.md +295 -0
- package/versioned_docs/version-v1.2/typedoc/core/classes/Poll.md +1098 -0
- package/versioned_docs/version-v1.2/typedoc/core/index.md +110 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/BatchSizes.md +50 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/IJsonMaciState.md +77 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/IProcessMessagesCircuitInputs.md +242 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/ISubsidyCircuitInputs.md +198 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/ITallyCircuitInputs.md +231 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/MaxValues.md +37 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/TreeDepths.md +63 -0
- package/versioned_docs/version-v1.2/typedoc/core/modules.md +289 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/AccQueue.md +770 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/G1Point.md +115 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/G2Point.md +140 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/IncrementalQuinTree.md +470 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/index.md +44 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Keypair.md +33 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/PoseidonFuncs.md +115 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Queue.md +33 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Signature.md +37 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/modules.md +913 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Ballot.md +274 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Keypair.md +181 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Message.md +244 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PCommand.md +409 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PrivKey.md +206 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PubKey.md +289 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/StateLeaf.md +340 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/TCommand.md +200 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/VerifyingKey.md +240 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/index.md +81 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/ICommand.md +104 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG1ContractParams.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG2ContractParams.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonBallot.md +42 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonCommand.md +32 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonKeyPair.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonPCommand.md +111 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonStateLeaf.md +42 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonTCommand.md +67 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IMessageContractParams.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeaf.md +39 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeafContractParams.md +42 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkContractParams.md +64 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkObjectParams.md +108 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/Proof.md +46 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/VoteOptionTreeLeaf.md +24 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/modules.md +110 -0
- package/versioned_docs/version-v1.2/typedoc/index.md +4 -0
- package/versioned_docs/version-v1.2/versioning.md +94 -0
- package/versioned_docs/version-v1.2/workflow.md +142 -0
- package/versioned_docs/version-v2.x/case-studies.md +35 -0
- package/versioned_docs/version-v2.x/contributing/_category_.json +4 -0
- package/versioned_docs/version-v2.x/contributing/code-of-conduct.md +92 -0
- package/versioned_docs/version-v2.x/contributing/contributing.md +149 -0
- package/versioned_docs/version-v2.x/contributing/project-ideas.md +78 -0
- package/versioned_docs/version-v2.x/core-concepts/_category_.json +4 -0
- package/versioned_docs/version-v2.x/core-concepts/ballot.md +19 -0
- package/versioned_docs/version-v2.x/core-concepts/coordinator-processing.md +46 -0
- package/versioned_docs/version-v2.x/core-concepts/hashing-and-encryption.md +45 -0
- package/versioned_docs/version-v2.x/core-concepts/key-change.md +179 -0
- package/versioned_docs/version-v2.x/core-concepts/maci-keys.md +84 -0
- package/versioned_docs/version-v2.x/core-concepts/maci-messages.md +44 -0
- package/versioned_docs/version-v2.x/core-concepts/merkle-trees.md +23 -0
- package/versioned_docs/version-v2.x/core-concepts/poll-types.md +106 -0
- package/versioned_docs/version-v2.x/core-concepts/spec.md +883 -0
- package/versioned_docs/version-v2.x/core-concepts/state-leaf.md +42 -0
- package/versioned_docs/version-v2.x/core-concepts/workflow.md +142 -0
- package/versioned_docs/version-v2.x/getting-started.md +313 -0
- package/versioned_docs/version-v2.x/guides/_category_.json +4 -0
- package/versioned_docs/version-v2.x/guides/compile-circuits.md +163 -0
- package/versioned_docs/version-v2.x/guides/frontend.md +99 -0
- package/versioned_docs/version-v2.x/guides/integrating.md +73 -0
- package/versioned_docs/version-v2.x/guides/maciWrapper.md +173 -0
- package/versioned_docs/version-v2.x/guides/subgraph.md +79 -0
- package/versioned_docs/version-v2.x/guides/testing/_category_.json +4 -0
- package/versioned_docs/version-v2.x/guides/testing/testing-in-detail.md +203 -0
- package/versioned_docs/version-v2.x/guides/testing/testing.md +163 -0
- package/versioned_docs/version-v2.x/guides/troubleshooting.md +161 -0
- package/versioned_docs/version-v2.x/introduction.md +146 -0
- package/versioned_docs/version-v2.x/processes/_category_.json +4 -0
- package/versioned_docs/version-v2.x/processes/ci-pipeline.md +38 -0
- package/versioned_docs/version-v2.x/processes/versioning.md +94 -0
- package/versioned_docs/version-v2.x/resources.md +33 -0
- package/versioned_docs/version-v2.x/security/_category_.json +4 -0
- package/versioned_docs/version-v2.x/security/audit.md +167 -0
- package/versioned_docs/version-v2.x/security/trusted-setup.md +166 -0
- package/versioned_docs/version-v2.x/supported-networks/_category_.json +4 -0
- package/versioned_docs/version-v2.x/supported-networks/deployed-contracts.md +1108 -0
- package/versioned_docs/version-v2.x/supported-networks/supported-networks.md +47 -0
- package/versioned_docs/version-v2.x/technical-references/_category_.json +4 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/AccQueue.md +21 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Gatekeepers.md +40 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/MACI.md +152 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Params.md +32 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Poll.md +104 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/PollFactory.md +43 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Tally.md +45 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/VkRegistry.md +57 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/_category_.json +8 -0
- package/versioned_docs/version-v2.x/technical-references/technical-references.md +47 -0
- package/versioned_docs/version-v2.x/technical-references/typescript-code/_category_.json +4 -0
- package/versioned_docs/version-v2.x/technical-references/typescript-code/cli.md +699 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/_category_.json +4 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/processMessages.md +107 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/setup.md +101 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/utilities.md +131 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +37 -0
- package/versioned_docs/version-v2.x/use-cases/_category_.json +4 -0
- package/versioned_docs/version-v2.x/use-cases/governance.md +18 -0
- package/versioned_docs/version-v2.x/use-cases/polling.md +10 -0
- package/versioned_docs/version-v2.x/use-cases/public-goods.md +65 -0
- package/versioned_docs/version-v3.x/case-studies.md +35 -0
- package/versioned_docs/version-v3.x/contributing/_category_.json +4 -0
- package/versioned_docs/version-v3.x/contributing/code-of-conduct.md +92 -0
- package/versioned_docs/version-v3.x/contributing/contributing.md +149 -0
- package/versioned_docs/version-v3.x/contributing/project-ideas.md +78 -0
- package/versioned_docs/version-v3.x/core-concepts/_category_.json +4 -0
- package/versioned_docs/version-v3.x/core-concepts/ballot.md +19 -0
- package/versioned_docs/version-v3.x/core-concepts/coordinator-processing.md +46 -0
- package/versioned_docs/version-v3.x/core-concepts/coordinator-service.md +16 -0
- package/versioned_docs/version-v3.x/core-concepts/hashing-and-encryption.md +45 -0
- package/versioned_docs/version-v3.x/core-concepts/key-change.md +179 -0
- package/versioned_docs/version-v3.x/core-concepts/maci-keys.md +84 -0
- package/versioned_docs/version-v3.x/core-concepts/maci-messages.md +44 -0
- package/versioned_docs/version-v3.x/core-concepts/merkle-trees.md +16 -0
- package/versioned_docs/version-v3.x/core-concepts/offchain-voting.md +14 -0
- package/versioned_docs/version-v3.x/core-concepts/poll-types.md +58 -0
- package/versioned_docs/version-v3.x/core-concepts/polls.md +81 -0
- package/versioned_docs/version-v3.x/core-concepts/spec.md +883 -0
- package/versioned_docs/version-v3.x/core-concepts/state-leaf.md +42 -0
- package/versioned_docs/version-v3.x/core-concepts/workflow.md +149 -0
- package/versioned_docs/version-v3.x/guides/_category_.json +4 -0
- package/versioned_docs/version-v3.x/guides/compile-circuits.md +175 -0
- package/versioned_docs/version-v3.x/guides/integrating.md +137 -0
- package/versioned_docs/version-v3.x/guides/subgraph.md +79 -0
- package/versioned_docs/version-v3.x/guides/testing/_category_.json +4 -0
- package/versioned_docs/version-v3.x/guides/testing/testing-in-detail.md +191 -0
- package/versioned_docs/version-v3.x/guides/testing/testing-introduction.md +158 -0
- package/versioned_docs/version-v3.x/guides/troubleshooting.md +161 -0
- package/versioned_docs/version-v3.x/introduction.md +153 -0
- package/versioned_docs/version-v3.x/processes/_category_.json +4 -0
- package/versioned_docs/version-v3.x/processes/ci-pipeline.md +38 -0
- package/versioned_docs/version-v3.x/processes/versioning.md +94 -0
- package/versioned_docs/version-v3.x/quick-start.md +318 -0
- package/versioned_docs/version-v3.x/resources.md +33 -0
- package/versioned_docs/version-v3.x/security/_category_.json +4 -0
- package/versioned_docs/version-v3.x/security/audit.md +167 -0
- package/versioned_docs/version-v3.x/security/trusted-setup.md +172 -0
- package/versioned_docs/version-v3.x/supported-networks/_category_.json +4 -0
- package/versioned_docs/version-v3.x/supported-networks/deployed-contracts.md +112 -0
- package/versioned_docs/version-v3.x/supported-networks/supported-networks.md +53 -0
- package/versioned_docs/version-v3.x/technical-references/_category_.json +4 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/_category_.json +8 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/index.md +10 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/installation.md +43 -0
- package/versioned_docs/version-v3.x/technical-references/offchain-relayer/_category_.json +8 -0
- package/versioned_docs/version-v3.x/technical-references/offchain-relayer/index.md +51 -0
- package/versioned_docs/version-v3.x/technical-references/offchain-relayer/installation.md +109 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/MACI.md +160 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Params.md +33 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Policies.md +39 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Poll.md +170 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/PollFactory.md +33 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Tally.md +43 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/VkRegistry.md +62 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/_category_.json +8 -0
- package/versioned_docs/version-v3.x/technical-references/technical-references.md +48 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/_category_.json +4 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/joinPoll.md +52 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/processMessages.md +106 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/setup.md +96 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/utilities.md +131 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +42 -0
- package/versioned_docs/version-v3.x/use-cases/_category_.json +4 -0
- package/versioned_docs/version-v3.x/use-cases/governance.md +18 -0
- package/versioned_docs/version-v3.x/use-cases/polling.md +10 -0
- package/versioned_docs/version-v3.x/use-cases/public-goods.md +65 -0
- package/versioned_sidebars/version-v0.x-sidebars.json +8 -0
- package/versioned_sidebars/version-v1.2-sidebars.json +8 -0
- package/versioned_sidebars/version-v2.x-sidebars.json +8 -0
- package/versioned_sidebars/version-v3.x-sidebars.json +8 -0
- package/versions.json +1 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# MockHatsProtocol
|
|
2
|
+
|
|
3
|
+
A mock contract to test the HatsGatekeeper
|
|
4
|
+
|
|
5
|
+
### hats
|
|
6
|
+
|
|
7
|
+
```solidity
|
|
8
|
+
contract IHats hats
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### lastTopHat
|
|
12
|
+
|
|
13
|
+
```solidity
|
|
14
|
+
uint256 lastTopHat
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### lastHat
|
|
18
|
+
|
|
19
|
+
```solidity
|
|
20
|
+
uint256 lastHat
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### constructor
|
|
24
|
+
|
|
25
|
+
```solidity
|
|
26
|
+
constructor(address _hats) public payable
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Deploy an instance of MockHatsProtocol
|
|
30
|
+
|
|
31
|
+
#### Parameters
|
|
32
|
+
|
|
33
|
+
| Name | Type | Description |
|
|
34
|
+
| ------ | ------- | -------------------------- |
|
|
35
|
+
| \_hats | address | The Hats Protocol contract |
|
|
36
|
+
|
|
37
|
+
### mintTopHat
|
|
38
|
+
|
|
39
|
+
```solidity
|
|
40
|
+
function mintTopHat(address _target, string _details, string _imageURI) external returns (uint256)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Creates and mints a Hat that is its own admin, i.e. a "topHat"
|
|
44
|
+
|
|
45
|
+
_A topHat has no eligibility and no toggle_
|
|
46
|
+
|
|
47
|
+
#### Parameters
|
|
48
|
+
|
|
49
|
+
| Name | Type | Description |
|
|
50
|
+
| ---------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| \_target | address | The address to which the newly created topHat is minted |
|
|
52
|
+
| \_details | string | A description of the Hat [optional]. Should not be larger than 7000 bytes (enforced in changeHatDetails) |
|
|
53
|
+
| \_imageURI | string | The image uri for this top hat and the fallback for its downstream hats [optional]. Should not be larger than 7000 bytes (enforced in changeHatImageURI) |
|
|
54
|
+
|
|
55
|
+
#### Return Values
|
|
56
|
+
|
|
57
|
+
| Name | Type | Description |
|
|
58
|
+
| ---- | ------- | ------------------------------------------- |
|
|
59
|
+
| [0] | uint256 | topHatId The id of the newly created topHat |
|
|
60
|
+
|
|
61
|
+
### createHat
|
|
62
|
+
|
|
63
|
+
```solidity
|
|
64
|
+
function createHat(uint256 _admin, string _details, uint32 _maxSupply, address _eligibility, address _toggle, bool _mutable, string _imageURI) external returns (uint256)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Creates a new hat. The msg.sender must wear the `_admin` hat.
|
|
68
|
+
|
|
69
|
+
_Initializes a new Hat struct, but does not mint any tokens._
|
|
70
|
+
|
|
71
|
+
#### Parameters
|
|
72
|
+
|
|
73
|
+
| Name | Type | Description |
|
|
74
|
+
| ------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
75
|
+
| \_admin | uint256 | The id of the Hat that will control who wears the newly created hat |
|
|
76
|
+
| \_details | string | A description of the Hat. Should not be larger than 7000 bytes (enforced in changeHatDetails) |
|
|
77
|
+
| \_maxSupply | uint32 | The total instances of the Hat that can be worn at once |
|
|
78
|
+
| \_eligibility | address | The address that can report on the Hat wearer's status |
|
|
79
|
+
| \_toggle | address | The address that can deactivate the Hat |
|
|
80
|
+
| \_mutable | bool | Whether the hat's properties are changeable after creation |
|
|
81
|
+
| \_imageURI | string | The image uri for this hat and the fallback for its downstream hats [optional]. Should not be larger than 7000 bytes (enforced in changeHatImageURI) |
|
|
82
|
+
|
|
83
|
+
#### Return Values
|
|
84
|
+
|
|
85
|
+
| Name | Type | Description |
|
|
86
|
+
| ---- | ------- | ---------------------------------------- |
|
|
87
|
+
| [0] | uint256 | newHatId The id of the newly created Hat |
|
|
88
|
+
|
|
89
|
+
### mintHat
|
|
90
|
+
|
|
91
|
+
```solidity
|
|
92
|
+
function mintHat(uint256 _hatId, address _wearer) external returns (bool)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Mints an ERC1155-similar token of the Hat to an eligible recipient, who then "wears" the hat
|
|
96
|
+
|
|
97
|
+
_The msg.sender must wear an admin Hat of `_hatId`, and the recipient must be eligible to wear `_hatId`_
|
|
98
|
+
|
|
99
|
+
#### Parameters
|
|
100
|
+
|
|
101
|
+
| Name | Type | Description |
|
|
102
|
+
| -------- | ------- | -------------------------------------- |
|
|
103
|
+
| \_hatId | uint256 | The id of the Hat to mint |
|
|
104
|
+
| \_wearer | address | The address to which the Hat is minted |
|
|
105
|
+
|
|
106
|
+
#### Return Values
|
|
107
|
+
|
|
108
|
+
| Name | Type | Description |
|
|
109
|
+
| ---- | ---- | ----------- |
|
|
110
|
+
| [0] | bool | |
|
|
111
|
+
|
|
112
|
+
### isWearerOfHat
|
|
113
|
+
|
|
114
|
+
```solidity
|
|
115
|
+
function isWearerOfHat(address account, uint256 hat) external view returns (bool)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Checks whether a given address wears a given Hat
|
|
119
|
+
|
|
120
|
+
_Convenience function that wraps `balanceOf`_
|
|
121
|
+
|
|
122
|
+
#### Parameters
|
|
123
|
+
|
|
124
|
+
| Name | Type | Description |
|
|
125
|
+
| ------- | ------- | --------------------------------------------- |
|
|
126
|
+
| account | address | The address in question |
|
|
127
|
+
| hat | uint256 | The id of the Hat that the `_user` might wear |
|
|
128
|
+
|
|
129
|
+
#### Return Values
|
|
130
|
+
|
|
131
|
+
| Name | Type | Description |
|
|
132
|
+
| ---- | ---- | ------------------------------------------- |
|
|
133
|
+
| [0] | bool | isWearer Whether the `_user` wears the Hat. |
|
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
# AccQueue
|
|
2
|
+
|
|
3
|
+
This contract defines a Merkle tree where each leaf insertion only updates a
|
|
4
|
+
subtree. To obtain the main tree root, the contract owner must merge the
|
|
5
|
+
subtrees together. Merging subtrees requires at least 2 operations:
|
|
6
|
+
mergeSubRoots(), and merge(). To get around the gas limit,
|
|
7
|
+
the mergeSubRoots() can be performed in multiple transactions.
|
|
8
|
+
|
|
9
|
+
### MAX_DEPTH
|
|
10
|
+
|
|
11
|
+
```solidity
|
|
12
|
+
uint256 MAX_DEPTH
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Queue
|
|
16
|
+
|
|
17
|
+
```solidity
|
|
18
|
+
struct Queue {
|
|
19
|
+
uint256[4][33] levels;
|
|
20
|
+
uint256[33] indices;
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### subDepth
|
|
25
|
+
|
|
26
|
+
```solidity
|
|
27
|
+
uint256 subDepth
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### hashLength
|
|
31
|
+
|
|
32
|
+
```solidity
|
|
33
|
+
uint256 hashLength
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### subTreeCapacity
|
|
37
|
+
|
|
38
|
+
```solidity
|
|
39
|
+
uint256 subTreeCapacity
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### isBinary
|
|
43
|
+
|
|
44
|
+
```solidity
|
|
45
|
+
bool isBinary
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### currentSubtreeIndex
|
|
49
|
+
|
|
50
|
+
```solidity
|
|
51
|
+
uint256 currentSubtreeIndex
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### leafQueue
|
|
55
|
+
|
|
56
|
+
```solidity
|
|
57
|
+
struct AccQueue.Queue leafQueue
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### subRootQueue
|
|
61
|
+
|
|
62
|
+
```solidity
|
|
63
|
+
struct AccQueue.Queue subRootQueue
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### subRoots
|
|
67
|
+
|
|
68
|
+
```solidity
|
|
69
|
+
mapping(uint256 => uint256) subRoots
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### mainRoots
|
|
73
|
+
|
|
74
|
+
```solidity
|
|
75
|
+
uint256[33] mainRoots
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### subTreesMerged
|
|
79
|
+
|
|
80
|
+
```solidity
|
|
81
|
+
bool subTreesMerged
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### treeMerged
|
|
85
|
+
|
|
86
|
+
```solidity
|
|
87
|
+
bool treeMerged
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### smallSRTroot
|
|
91
|
+
|
|
92
|
+
```solidity
|
|
93
|
+
uint256 smallSRTroot
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### nextSubRootIndex
|
|
97
|
+
|
|
98
|
+
```solidity
|
|
99
|
+
uint256 nextSubRootIndex
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### numLeaves
|
|
103
|
+
|
|
104
|
+
```solidity
|
|
105
|
+
uint256 numLeaves
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### SubDepthCannotBeZero
|
|
109
|
+
|
|
110
|
+
```solidity
|
|
111
|
+
error SubDepthCannotBeZero()
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
custom errors
|
|
115
|
+
|
|
116
|
+
### SubdepthTooLarge
|
|
117
|
+
|
|
118
|
+
```solidity
|
|
119
|
+
error SubdepthTooLarge(uint256 _subDepth, uint256 max)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### InvalidHashLength
|
|
123
|
+
|
|
124
|
+
```solidity
|
|
125
|
+
error InvalidHashLength()
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### DepthCannotBeZero
|
|
129
|
+
|
|
130
|
+
```solidity
|
|
131
|
+
error DepthCannotBeZero()
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### SubTreesAlreadyMerged
|
|
135
|
+
|
|
136
|
+
```solidity
|
|
137
|
+
error SubTreesAlreadyMerged()
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### NothingToMerge
|
|
141
|
+
|
|
142
|
+
```solidity
|
|
143
|
+
error NothingToMerge()
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### SubTreesNotMerged
|
|
147
|
+
|
|
148
|
+
```solidity
|
|
149
|
+
error SubTreesNotMerged()
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### DepthTooLarge
|
|
153
|
+
|
|
154
|
+
```solidity
|
|
155
|
+
error DepthTooLarge(uint256 _depth, uint256 max)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### DepthTooSmall
|
|
159
|
+
|
|
160
|
+
```solidity
|
|
161
|
+
error DepthTooSmall(uint256 _depth, uint256 min)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### InvalidIndex
|
|
165
|
+
|
|
166
|
+
```solidity
|
|
167
|
+
error InvalidIndex(uint256 _index)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### InvalidLevel
|
|
171
|
+
|
|
172
|
+
```solidity
|
|
173
|
+
error InvalidLevel()
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### constructor
|
|
177
|
+
|
|
178
|
+
```solidity
|
|
179
|
+
constructor(uint256 _subDepth, uint256 _hashLength) internal payable
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Create a new AccQueue
|
|
183
|
+
|
|
184
|
+
#### Parameters
|
|
185
|
+
|
|
186
|
+
| Name | Type | Description |
|
|
187
|
+
| ------------ | ------- | --------------------------------------- |
|
|
188
|
+
| \_subDepth | uint256 | The depth of each subtree. |
|
|
189
|
+
| \_hashLength | uint256 | The number of leaves per node (2 or 5). |
|
|
190
|
+
|
|
191
|
+
### hashLevel
|
|
192
|
+
|
|
193
|
+
```solidity
|
|
194
|
+
function hashLevel(uint256 _level, uint256 _leaf) internal virtual returns (uint256 _hash)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Hash the contents of the specified level and the specified leaf.
|
|
198
|
+
This is a virtual function as the hash function which the overriding
|
|
199
|
+
contract uses will be either hashLeftRight or hash5, which require
|
|
200
|
+
different input array lengths.
|
|
201
|
+
|
|
202
|
+
#### Parameters
|
|
203
|
+
|
|
204
|
+
| Name | Type | Description |
|
|
205
|
+
| ------- | ------- | -------------------------------- |
|
|
206
|
+
| \_level | uint256 | The level to hash. |
|
|
207
|
+
| \_leaf | uint256 | The leaf include with the level. |
|
|
208
|
+
|
|
209
|
+
#### Return Values
|
|
210
|
+
|
|
211
|
+
| Name | Type | Description |
|
|
212
|
+
| ------ | ------- | ------------------------------- |
|
|
213
|
+
| \_hash | uint256 | The hash of the level and leaf. |
|
|
214
|
+
|
|
215
|
+
### hashLevelLeaf
|
|
216
|
+
|
|
217
|
+
```solidity
|
|
218
|
+
function hashLevelLeaf(uint256 _level, uint256 _leaf) public view virtual returns (uint256 _hash)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Hash the contents of the specified level and the specified leaf.
|
|
222
|
+
This is a virtual function as the hash function which the overriding
|
|
223
|
+
contract uses will be either hashLeftRight or hash5, which require
|
|
224
|
+
different input array lengths.
|
|
225
|
+
|
|
226
|
+
#### Parameters
|
|
227
|
+
|
|
228
|
+
| Name | Type | Description |
|
|
229
|
+
| ------- | ------- | -------------------------------- |
|
|
230
|
+
| \_level | uint256 | The level to hash. |
|
|
231
|
+
| \_leaf | uint256 | The leaf include with the level. |
|
|
232
|
+
|
|
233
|
+
#### Return Values
|
|
234
|
+
|
|
235
|
+
| Name | Type | Description |
|
|
236
|
+
| ------ | ------- | ------------------------------- |
|
|
237
|
+
| \_hash | uint256 | The hash of the level and leaf. |
|
|
238
|
+
|
|
239
|
+
### getZero
|
|
240
|
+
|
|
241
|
+
```solidity
|
|
242
|
+
function getZero(uint256 _level) internal virtual returns (uint256 zero)
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Returns the zero leaf at a specified level.
|
|
246
|
+
This is a virtual function as the hash function which the overriding
|
|
247
|
+
contract uses will be either hashLeftRight or hash5, which will produce
|
|
248
|
+
different zero values (e.g. hashLeftRight(0, 0) vs
|
|
249
|
+
hash5([0, 0, 0, 0, 0]). Moreover, the zero value may be a
|
|
250
|
+
nothing-up-my-sleeve value.
|
|
251
|
+
|
|
252
|
+
#### Parameters
|
|
253
|
+
|
|
254
|
+
| Name | Type | Description |
|
|
255
|
+
| ------- | ------- | ------------------------------------------- |
|
|
256
|
+
| \_level | uint256 | The level at which to return the zero leaf. |
|
|
257
|
+
|
|
258
|
+
#### Return Values
|
|
259
|
+
|
|
260
|
+
| Name | Type | Description |
|
|
261
|
+
| ---- | ------- | ------------------------------------- |
|
|
262
|
+
| zero | uint256 | The zero leaf at the specified level. |
|
|
263
|
+
|
|
264
|
+
### enqueue
|
|
265
|
+
|
|
266
|
+
```solidity
|
|
267
|
+
function enqueue(uint256 _leaf) public returns (uint256 leafIndex)
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Add a leaf to the queue for the current subtree.
|
|
271
|
+
|
|
272
|
+
#### Parameters
|
|
273
|
+
|
|
274
|
+
| Name | Type | Description |
|
|
275
|
+
| ------ | ------- | ---------------- |
|
|
276
|
+
| \_leaf | uint256 | The leaf to add. |
|
|
277
|
+
|
|
278
|
+
#### Return Values
|
|
279
|
+
|
|
280
|
+
| Name | Type | Description |
|
|
281
|
+
| --------- | ------- | ----------------------------------- |
|
|
282
|
+
| leafIndex | uint256 | The index of the leaf in the queue. |
|
|
283
|
+
|
|
284
|
+
### \_enqueue
|
|
285
|
+
|
|
286
|
+
```solidity
|
|
287
|
+
function _enqueue(uint256 _leaf, uint256 _level) internal
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Updates the queue at a given level and hashes any subroots
|
|
291
|
+
that need to be hashed.
|
|
292
|
+
|
|
293
|
+
#### Parameters
|
|
294
|
+
|
|
295
|
+
| Name | Type | Description |
|
|
296
|
+
| ------- | ------- | ------------------------------------- |
|
|
297
|
+
| \_leaf | uint256 | The leaf to add. |
|
|
298
|
+
| \_level | uint256 | The level at which to queue the leaf. |
|
|
299
|
+
|
|
300
|
+
### fill
|
|
301
|
+
|
|
302
|
+
```solidity
|
|
303
|
+
function fill() public
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
Fill any empty leaves of the current subtree with zeros and store the
|
|
307
|
+
resulting subroot.
|
|
308
|
+
|
|
309
|
+
### \_fill
|
|
310
|
+
|
|
311
|
+
```solidity
|
|
312
|
+
function _fill(uint256 _level) internal virtual
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
A function that queues zeros to the specified level, hashes,
|
|
316
|
+
the level, and enqueues the hash to the next level.
|
|
317
|
+
|
|
318
|
+
#### Parameters
|
|
319
|
+
|
|
320
|
+
| Name | Type | Description |
|
|
321
|
+
| ------- | ------- | ---------------------------------- |
|
|
322
|
+
| \_level | uint256 | The level at which to queue zeros. |
|
|
323
|
+
|
|
324
|
+
### insertSubTree
|
|
325
|
+
|
|
326
|
+
```solidity
|
|
327
|
+
function insertSubTree(uint256 _subRoot) public
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Insert a subtree. Used for batch enqueues.
|
|
331
|
+
|
|
332
|
+
### calcMinHeight
|
|
333
|
+
|
|
334
|
+
```solidity
|
|
335
|
+
function calcMinHeight() public view returns (uint256 depth)
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
Calculate the lowest possible height of a tree with
|
|
339
|
+
all the subroots merged together.
|
|
340
|
+
|
|
341
|
+
#### Return Values
|
|
342
|
+
|
|
343
|
+
| Name | Type | Description |
|
|
344
|
+
| ----- | ------- | ------------------------------------------------- |
|
|
345
|
+
| depth | uint256 | The lowest possible height of a tree with all the |
|
|
346
|
+
|
|
347
|
+
### mergeSubRoots
|
|
348
|
+
|
|
349
|
+
```solidity
|
|
350
|
+
function mergeSubRoots(uint256 _numSrQueueOps) public
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Merge all subtrees to form the shortest possible tree.
|
|
354
|
+
This function can be called either once to merge all subtrees in a
|
|
355
|
+
single transaction, or multiple times to do the same in multiple
|
|
356
|
+
transactions.
|
|
357
|
+
|
|
358
|
+
#### Parameters
|
|
359
|
+
|
|
360
|
+
| Name | Type | Description |
|
|
361
|
+
| --------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
362
|
+
| \_numSrQueueOps | uint256 | The number of times this function will call queueSubRoot(), up to the maximum number of times necessary. If it is set to 0, it will call queueSubRoot() as many times as is necessary. Set this to a low number and call this function multiple times if there are many subroots to merge, or a single transaction could run out of gas. |
|
|
363
|
+
|
|
364
|
+
### queueSubRoot
|
|
365
|
+
|
|
366
|
+
```solidity
|
|
367
|
+
function queueSubRoot(uint256 _leaf, uint256 _level, uint256 _maxDepth) internal
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
Queues a subroot into the subroot tree.
|
|
371
|
+
|
|
372
|
+
#### Parameters
|
|
373
|
+
|
|
374
|
+
| Name | Type | Description |
|
|
375
|
+
| ---------- | ------- | ----------------------------------- |
|
|
376
|
+
| \_leaf | uint256 | The value to queue. |
|
|
377
|
+
| \_level | uint256 | The level at which to queue \_leaf. |
|
|
378
|
+
| \_maxDepth | uint256 | The depth of the tree. |
|
|
379
|
+
|
|
380
|
+
### merge
|
|
381
|
+
|
|
382
|
+
```solidity
|
|
383
|
+
function merge(uint256 _depth) public returns (uint256 root)
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
Merge all subtrees to form a main tree with a desired depth.
|
|
387
|
+
|
|
388
|
+
#### Parameters
|
|
389
|
+
|
|
390
|
+
| Name | Type | Description |
|
|
391
|
+
| ------- | ------- | ------------------------------------------------------------------------------------ |
|
|
392
|
+
| \_depth | uint256 | The depth of the main tree. It must fit all the leaves or this function will revert. |
|
|
393
|
+
|
|
394
|
+
#### Return Values
|
|
395
|
+
|
|
396
|
+
| Name | Type | Description |
|
|
397
|
+
| ---- | ------- | -------------------------- |
|
|
398
|
+
| root | uint256 | The root of the main tree. |
|
|
399
|
+
|
|
400
|
+
### getSubRoot
|
|
401
|
+
|
|
402
|
+
```solidity
|
|
403
|
+
function getSubRoot(uint256 _index) public view returns (uint256 subRoot)
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
Returns the subroot at the specified index. Reverts if the index refers
|
|
407
|
+
to a subtree which has not been filled yet.
|
|
408
|
+
|
|
409
|
+
#### Parameters
|
|
410
|
+
|
|
411
|
+
| Name | Type | Description |
|
|
412
|
+
| ------- | ------- | ------------------ |
|
|
413
|
+
| \_index | uint256 | The subroot index. |
|
|
414
|
+
|
|
415
|
+
#### Return Values
|
|
416
|
+
|
|
417
|
+
| Name | Type | Description |
|
|
418
|
+
| ------- | ------- | ----------------------------------- |
|
|
419
|
+
| subRoot | uint256 | The subroot at the specified index. |
|
|
420
|
+
|
|
421
|
+
### getSmallSRTroot
|
|
422
|
+
|
|
423
|
+
```solidity
|
|
424
|
+
function getSmallSRTroot() public view returns (uint256 smallSubTreeRoot)
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
Returns the subroot tree (SRT) root. Its value must first be computed
|
|
428
|
+
using mergeSubRoots.
|
|
429
|
+
|
|
430
|
+
#### Return Values
|
|
431
|
+
|
|
432
|
+
| Name | Type | Description |
|
|
433
|
+
| ---------------- | ------- | ------------- |
|
|
434
|
+
| smallSubTreeRoot | uint256 | The SRT root. |
|
|
435
|
+
|
|
436
|
+
### getMainRoot
|
|
437
|
+
|
|
438
|
+
```solidity
|
|
439
|
+
function getMainRoot(uint256 _depth) public view returns (uint256 mainRoot)
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
Return the merged Merkle root of all the leaves at a desired depth.
|
|
443
|
+
|
|
444
|
+
_merge() or merged(\_depth) must be called first._
|
|
445
|
+
|
|
446
|
+
#### Parameters
|
|
447
|
+
|
|
448
|
+
| Name | Type | Description |
|
|
449
|
+
| ------- | ------- | ---------------------------------------------------------------------------------------- |
|
|
450
|
+
| \_depth | uint256 | The depth of the main tree. It must first be computed using mergeSubRoots() and merge(). |
|
|
451
|
+
|
|
452
|
+
#### Return Values
|
|
453
|
+
|
|
454
|
+
| Name | Type | Description |
|
|
455
|
+
| -------- | ------- | -------------------------- |
|
|
456
|
+
| mainRoot | uint256 | The root of the main tree. |
|
|
457
|
+
|
|
458
|
+
### getSrIndices
|
|
459
|
+
|
|
460
|
+
```solidity
|
|
461
|
+
function getSrIndices() public view returns (uint256 next, uint256 current)
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
Get the next subroot index and the current subtree index.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# AccQueueBinary
|
|
2
|
+
|
|
3
|
+
This contract defines a Merkle tree where each leaf insertion only updates a
|
|
4
|
+
subtree. To obtain the main tree root, the contract owner must merge the
|
|
5
|
+
subtrees together. Merging subtrees requires at least 2 operations:
|
|
6
|
+
mergeSubRoots(), and merge(). To get around the gas limit,
|
|
7
|
+
the mergeSubRoots() can be performed in multiple transactions.
|
|
8
|
+
|
|
9
|
+
_This contract is for a binary tree (2 leaves per node)_
|
|
10
|
+
|
|
11
|
+
### constructor
|
|
12
|
+
|
|
13
|
+
```solidity
|
|
14
|
+
constructor(uint256 _subDepth) internal
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Create a new AccQueueBinary
|
|
18
|
+
|
|
19
|
+
### hashLevel
|
|
20
|
+
|
|
21
|
+
```solidity
|
|
22
|
+
function hashLevel(uint256 _level, uint256 _leaf) internal returns (uint256 hashed)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Hash the contents of the specified level and the specified leaf.
|
|
26
|
+
|
|
27
|
+
#### Parameters
|
|
28
|
+
|
|
29
|
+
| Name | Type | Description |
|
|
30
|
+
| ------- | ------- | -------------------------------- |
|
|
31
|
+
| \_level | uint256 | The level to hash. |
|
|
32
|
+
| \_leaf | uint256 | The leaf include with the level. |
|
|
33
|
+
|
|
34
|
+
#### Return Values
|
|
35
|
+
|
|
36
|
+
| Name | Type | Description |
|
|
37
|
+
| ------ | ------- | ------------------------------- |
|
|
38
|
+
| hashed | uint256 | The hash of the level and leaf. |
|
|
39
|
+
|
|
40
|
+
### hashLevelLeaf
|
|
41
|
+
|
|
42
|
+
```solidity
|
|
43
|
+
function hashLevelLeaf(uint256 _level, uint256 _leaf) public view returns (uint256 hashed)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Hash the contents of the specified level and the specified leaf.
|
|
47
|
+
|
|
48
|
+
### \_fill
|
|
49
|
+
|
|
50
|
+
```solidity
|
|
51
|
+
function _fill(uint256 _level) internal
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
An internal function which fills a subtree.
|
|
55
|
+
|
|
56
|
+
#### Parameters
|
|
57
|
+
|
|
58
|
+
| Name | Type | Description |
|
|
59
|
+
| ------- | ------- | --------------------------------------- |
|
|
60
|
+
| \_level | uint256 | The level at which to fill the subtree. |
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# AccQueueBinary0
|
|
2
|
+
|
|
3
|
+
This contract extends AccQueueBinary and MerkleBinary0
|
|
4
|
+
|
|
5
|
+
_This contract is used for creating a
|
|
6
|
+
Merkle tree with binary (2 leaves per node) structure_
|
|
7
|
+
|
|
8
|
+
### constructor
|
|
9
|
+
|
|
10
|
+
```solidity
|
|
11
|
+
constructor(uint256 _subDepth) public
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Constructor for creating AccQueueBinary0 contract
|
|
15
|
+
|
|
16
|
+
#### Parameters
|
|
17
|
+
|
|
18
|
+
| Name | Type | Description |
|
|
19
|
+
| ---------- | ------- | ------------------------- |
|
|
20
|
+
| \_subDepth | uint256 | The depth of each subtree |
|
|
21
|
+
|
|
22
|
+
### getZero
|
|
23
|
+
|
|
24
|
+
```solidity
|
|
25
|
+
function getZero(uint256 _level) internal view returns (uint256 zero)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Returns the zero leaf at a specified level
|
|
29
|
+
|
|
30
|
+
#### Parameters
|
|
31
|
+
|
|
32
|
+
| Name | Type | Description |
|
|
33
|
+
| ------- | ------- | ------------------------------------------ |
|
|
34
|
+
| \_level | uint256 | The level at which to return the zero leaf |
|
|
35
|
+
|
|
36
|
+
#### Return Values
|
|
37
|
+
|
|
38
|
+
| Name | Type | Description |
|
|
39
|
+
| ---- | ------- | ------------------------------------ |
|
|
40
|
+
| zero | uint256 | The zero leaf at the specified level |
|