@maci-protocol/website 0.0.0-ci.2653bc0

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.
Files changed (415) hide show
  1. package/.eslintrc.js +157 -0
  2. package/CHANGELOG.md +566 -0
  3. package/LICENSE +22 -0
  4. package/README.md +58 -0
  5. package/babel.config.js +3 -0
  6. package/blog/2021-10-12-maci-v1.md +100 -0
  7. package/blog/2022-09-22-maci-v1-technical-introduction.md +180 -0
  8. package/blog/2023-01-18-maci-v1.1.1.md +121 -0
  9. package/blog/2024-01-18-roadmap.md +106 -0
  10. package/blog/2024-02-28-maci-v1.2.0.md +121 -0
  11. package/blog/2024-04-10-roadmap-q2.md +96 -0
  12. package/blog/2024-05-08-ethdam.md +169 -0
  13. package/blog/2024-05-22-the-origins-of-maci.md +38 -0
  14. package/blog/2024-05-28-upcoming-grants.md +85 -0
  15. package/blog/2024-06-17-understanding-maci.md +63 -0
  16. package/blog/2024-06-21-deciphering-maci.md +48 -0
  17. package/blog/2024-06-28-revolusioning-public-goods-funding.md +32 -0
  18. package/blog/2024-07-23-q2-review.md +72 -0
  19. package/blog/2024-07-30-roadmap-q3.md +61 -0
  20. package/blog/2024-08-10-maci-v2.md +102 -0
  21. package/blog/2024-08-29-anonymous-poll-joining.md +47 -0
  22. package/blog/2024-10-29-q3-review.md +63 -0
  23. package/blog/2024-11-20-maci-platform.md +93 -0
  24. package/blog/2024-12-01-maci-getting-started.md +294 -0
  25. package/blog/2025-03-21-roadmap-2025.md +112 -0
  26. package/blog/assets/MACI_Bob_SignUp_1.png +0 -0
  27. package/blog/assets/MACI_Bob_SignUp_2.png +0 -0
  28. package/blog/assets/MACI_Complex_Message.png +0 -0
  29. package/blog/assets/MACI_Contracts.png +0 -0
  30. package/blog/assets/MACI_Sign_Up.png +0 -0
  31. package/blog/assets/MACI_Simple_Message.png +0 -0
  32. package/blog/assets/MACI_Verifier_1.png +0 -0
  33. package/blog/authors.yml +5 -0
  34. package/docusaurus.config.ts +213 -0
  35. package/package.json +65 -0
  36. package/src/components/ActionCard/index.tsx +30 -0
  37. package/src/components/ActionCard/styles.module.css +96 -0
  38. package/src/components/HomepageFeatures/index.tsx +91 -0
  39. package/src/components/HomepageFeatures/styles.module.css +17 -0
  40. package/src/components/ProjectCard/index.tsx +74 -0
  41. package/src/components/ProjectCard/styles.module.css +77 -0
  42. package/src/components/ProjectList/index.tsx +218 -0
  43. package/src/components/ProjectList/styles.module.css +180 -0
  44. package/src/content/projects.json +294 -0
  45. package/src/css/card.module.css +130 -0
  46. package/src/css/custom.css +91 -0
  47. package/src/icons/IconDiscord.tsx +16 -0
  48. package/src/icons/IconGithub.tsx +16 -0
  49. package/src/icons/IconWebsite.tsx +16 -0
  50. package/src/pages/blogs.tsx +58 -0
  51. package/src/pages/index.module.css +152 -0
  52. package/src/pages/index.tsx +66 -0
  53. package/src/pages/projects.tsx +44 -0
  54. package/src/pages/roadmap.md +150 -0
  55. package/src/pages/typedoc.tsx +11 -0
  56. package/src/plugins/blog-plugin/index.ts +86 -0
  57. package/src/react-app-env.d.ts +1 -0
  58. package/src/scripts/setupSolidityDocs.ts +67 -0
  59. package/src/scripts/setupTypedoc.ts +112 -0
  60. package/src/scripts/utils.ts +115 -0
  61. package/src/utils/getProjectsByFilter.ts +40 -0
  62. package/static/.nojekyll +0 -0
  63. package/static/audit_reports/20210922_Hashcloak_audit_report.pdf +0 -0
  64. package/static/audit_reports/202220930_Hashcloak_audit_report.pdf +0 -0
  65. package/static/audit_reports/20240223_PSE_Audit_audit_report.pdf +0 -0
  66. package/static/audit_reports/20240731_PSE_Audit_audit_report.pdf +0 -0
  67. package/static/fonts/DM_Sans.woff2 +0 -0
  68. package/static/fonts/Share_Tech_Mono.woff2 +0 -0
  69. package/static/img/box.png +0 -0
  70. package/static/img/box_dark.png +0 -0
  71. package/static/img/chain.png +0 -0
  72. package/static/img/chain_dark.png +0 -0
  73. package/static/img/chart.png +0 -0
  74. package/static/img/chart_dark.png +0 -0
  75. package/static/img/circuits/MACI-Circuits.excalidraw +39652 -0
  76. package/static/img/circuits/calculateTotal.svg +21 -0
  77. package/static/img/circuits/ecdh.svg +21 -0
  78. package/static/img/circuits/messageToCommand.svg +21 -0
  79. package/static/img/circuits/messageValidator.svg +21 -0
  80. package/static/img/circuits/poseidonHasher13.svg +21 -0
  81. package/static/img/circuits/privToPubkey.svg +21 -0
  82. package/static/img/circuits/processMessages.svg +21 -0
  83. package/static/img/circuits/processMessagesInputHasher.svg +21 -0
  84. package/static/img/circuits/processMessages_2_0.svg +21 -0
  85. package/static/img/circuits/processOne.svg +21 -0
  86. package/static/img/circuits/processTopup.svg +21 -0
  87. package/static/img/circuits/processingAfterPollEnds.svg +21 -0
  88. package/static/img/circuits/quinBatchLeavesExists.svg +21 -0
  89. package/static/img/circuits/quinCheckRoot.svg +21 -0
  90. package/static/img/circuits/quinGeneratePathIndices.svg +21 -0
  91. package/static/img/circuits/quinSelector.svg +21 -0
  92. package/static/img/circuits/resultsCommitmentVerifier.svg +21 -0
  93. package/static/img/circuits/splicer.svg +21 -0
  94. package/static/img/circuits/tallyInputHasher.svg +21 -0
  95. package/static/img/circuits/tallyVotes.svg +21 -0
  96. package/static/img/circuits/unpackElement.svg +21 -0
  97. package/static/img/circuits/verifySignature.svg +21 -0
  98. package/static/img/completingAPoll.svg +4 -0
  99. package/static/img/contracts.svg +16 -0
  100. package/static/img/coordinatorComponents.svg +21 -0
  101. package/static/img/favicon.ico +0 -0
  102. package/static/img/generateProofs.svg +4 -0
  103. package/static/img/hero.svg +9 -0
  104. package/static/img/maci-card.png +0 -0
  105. package/static/img/maci-rpgf-design.jpg +0 -0
  106. package/static/img/messageProcessingLocal.svg +21 -0
  107. package/static/img/offlineProcessing.svg +21 -0
  108. package/static/img/pse-logo-round.png +0 -0
  109. package/static/img/relayer-diagram.png +0 -0
  110. package/static/img/tallyCommitments.svg +4 -0
  111. package/static/img/voteTallyingLocal.svg +21 -0
  112. package/tsconfig.json +34 -0
  113. package/versioned_docs/version-v0.x/circuits.md +22 -0
  114. package/versioned_docs/version-v0.x/contract.md +186 -0
  115. package/versioned_docs/version-v0.x/faq.md +67 -0
  116. package/versioned_docs/version-v0.x/introduction.md +119 -0
  117. package/versioned_docs/version-v0.x/quadratic-vote-tallying-circuit.md +138 -0
  118. package/versioned_docs/version-v0.x/state-root-transition-circuit.md +230 -0
  119. package/versioned_docs/version-v1.2/audit.md +160 -0
  120. package/versioned_docs/version-v1.2/ci-pipeline.md +38 -0
  121. package/versioned_docs/version-v1.2/circuits.md +508 -0
  122. package/versioned_docs/version-v1.2/cli.md +689 -0
  123. package/versioned_docs/version-v1.2/contracts.md +445 -0
  124. package/versioned_docs/version-v1.2/contributing/code-of-conduct.md +91 -0
  125. package/versioned_docs/version-v1.2/contributing/contributing.md +129 -0
  126. package/versioned_docs/version-v1.2/coordinator-processing.md +46 -0
  127. package/versioned_docs/version-v1.2/deployment.md +122 -0
  128. package/versioned_docs/version-v1.2/installation.md +175 -0
  129. package/versioned_docs/version-v1.2/integrating.md +200 -0
  130. package/versioned_docs/version-v1.2/introduction.md +94 -0
  131. package/versioned_docs/version-v1.2/key-change.md +182 -0
  132. package/versioned_docs/version-v1.2/overview.md +47 -0
  133. package/versioned_docs/version-v1.2/poll-types.md +68 -0
  134. package/versioned_docs/version-v1.2/primitives.md +216 -0
  135. package/versioned_docs/version-v1.2/project-ideas.md +14 -0
  136. package/versioned_docs/version-v1.2/purpose.md +62 -0
  137. package/versioned_docs/version-v1.2/solidity-docs/MACI.md +345 -0
  138. package/versioned_docs/version-v1.2/solidity-docs/MessageProcessor.md +266 -0
  139. package/versioned_docs/version-v1.2/solidity-docs/MessageProcessorFactory.md +26 -0
  140. package/versioned_docs/version-v1.2/solidity-docs/Poll.md +381 -0
  141. package/versioned_docs/version-v1.2/solidity-docs/PollFactory.md +50 -0
  142. package/versioned_docs/version-v1.2/solidity-docs/SignUpToken.md +27 -0
  143. package/versioned_docs/version-v1.2/solidity-docs/Subsidy.md +218 -0
  144. package/versioned_docs/version-v1.2/solidity-docs/SubsidyFactory.md +27 -0
  145. package/versioned_docs/version-v1.2/solidity-docs/Tally.md +311 -0
  146. package/versioned_docs/version-v1.2/solidity-docs/TallyFactory.md +27 -0
  147. package/versioned_docs/version-v1.2/solidity-docs/TallyNonQv.md +296 -0
  148. package/versioned_docs/version-v1.2/solidity-docs/TallyNonQvFactory.md +27 -0
  149. package/versioned_docs/version-v1.2/solidity-docs/TopupCredit.md +61 -0
  150. package/versioned_docs/version-v1.2/solidity-docs/VkRegistry.md +457 -0
  151. package/versioned_docs/version-v1.2/solidity-docs/benchmarks/HasherBenchmarks.md +44 -0
  152. package/versioned_docs/version-v1.2/solidity-docs/crypto/Hasher.md +125 -0
  153. package/versioned_docs/version-v1.2/solidity-docs/crypto/IVerifier.md +11 -0
  154. package/versioned_docs/version-v1.2/solidity-docs/crypto/MockVerifier.md +17 -0
  155. package/versioned_docs/version-v1.2/solidity-docs/crypto/Pairing.md +85 -0
  156. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT3.md +9 -0
  157. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT4.md +9 -0
  158. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT5.md +9 -0
  159. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT6.md +9 -0
  160. package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkCommon.md +16 -0
  161. package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkConstants.md +40 -0
  162. package/versioned_docs/version-v1.2/solidity-docs/crypto/Verifier.md +61 -0
  163. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/EASGatekeeper.md +121 -0
  164. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/FreeForAllSignUpGatekeeper.md +40 -0
  165. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpGatekeeper.md +26 -0
  166. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpTokenGatekeeper.md +93 -0
  167. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperBase.md +79 -0
  168. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperMultiple.md +48 -0
  169. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperSingle.md +42 -0
  170. package/versioned_docs/version-v1.2/solidity-docs/index.md +4 -0
  171. package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/ConstantInitialVoiceCreditProxy.md +40 -0
  172. package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/InitialVoiceCreditProxy.md +26 -0
  173. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IEAS.md +40 -0
  174. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IHats.md +103 -0
  175. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMPFactory.md +26 -0
  176. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMessageProcessor.md +31 -0
  177. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPoll.md +217 -0
  178. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPollFactory.md +29 -0
  179. package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallyFactory.md +28 -0
  180. package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallySubsidyFactory.md +27 -0
  181. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVerifier.md +25 -0
  182. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVkRegistry.md +70 -0
  183. package/versioned_docs/version-v1.2/solidity-docs/mocks/MockHatsProtocol.md +133 -0
  184. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueue.md +464 -0
  185. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary.md +60 -0
  186. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary0.md +40 -0
  187. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinaryMaci.md +34 -0
  188. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary.md +75 -0
  189. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary0.md +40 -0
  190. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryBlankSl.md +40 -0
  191. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryMaci.md +40 -0
  192. package/versioned_docs/version-v1.2/solidity-docs/trees/EmptyBallotRoots.md +13 -0
  193. package/versioned_docs/version-v1.2/solidity-docs/utilities/CommonUtilities.md +25 -0
  194. package/versioned_docs/version-v1.2/solidity-docs/utilities/DomainObjs.md +40 -0
  195. package/versioned_docs/version-v1.2/solidity-docs/utilities/Params.md +36 -0
  196. package/versioned_docs/version-v1.2/solidity-docs/utilities/Utilities.md +79 -0
  197. package/versioned_docs/version-v1.2/spec.md +944 -0
  198. package/versioned_docs/version-v1.2/testing-in-detail.md +209 -0
  199. package/versioned_docs/version-v1.2/testing.md +472 -0
  200. package/versioned_docs/version-v1.2/topup.md +43 -0
  201. package/versioned_docs/version-v1.2/troubleshooting.md +51 -0
  202. package/versioned_docs/version-v1.2/trusted-setup.md +76 -0
  203. package/versioned_docs/version-v1.2/typedoc/cli/.nojekyll +1 -0
  204. package/versioned_docs/version-v1.2/typedoc/cli/index.md +15 -0
  205. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/AirdropArgs.md +89 -0
  206. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployArgs.md +154 -0
  207. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployPollArgs.md +154 -0
  208. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployedContracts.md +130 -0
  209. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenLocalStateArgs.md +168 -0
  210. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenProofsArgs.md +388 -0
  211. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IGenKeypairArgs.md +37 -0
  212. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IRegisteredUserArgs.md +63 -0
  213. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeMessagesArgs.md +76 -0
  214. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeSignupsArgs.md +76 -0
  215. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PollContracts.md +53 -0
  216. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/ProveOnChainArgs.md +128 -0
  217. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PublishArgs.md +154 -0
  218. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SignupArgs.md +89 -0
  219. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SubsidyData.md +73 -0
  220. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TallyData.md +166 -0
  221. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TopupArgs.md +89 -0
  222. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/VerifyArgs.md +128 -0
  223. package/versioned_docs/version-v1.2/typedoc/cli/modules.md +556 -0
  224. package/versioned_docs/version-v1.2/typedoc/core/.nojekyll +1 -0
  225. package/versioned_docs/version-v1.2/typedoc/core/classes/MaciState.md +295 -0
  226. package/versioned_docs/version-v1.2/typedoc/core/classes/Poll.md +1098 -0
  227. package/versioned_docs/version-v1.2/typedoc/core/index.md +110 -0
  228. package/versioned_docs/version-v1.2/typedoc/core/interfaces/BatchSizes.md +50 -0
  229. package/versioned_docs/version-v1.2/typedoc/core/interfaces/IJsonMaciState.md +77 -0
  230. package/versioned_docs/version-v1.2/typedoc/core/interfaces/IProcessMessagesCircuitInputs.md +242 -0
  231. package/versioned_docs/version-v1.2/typedoc/core/interfaces/ISubsidyCircuitInputs.md +198 -0
  232. package/versioned_docs/version-v1.2/typedoc/core/interfaces/ITallyCircuitInputs.md +231 -0
  233. package/versioned_docs/version-v1.2/typedoc/core/interfaces/MaxValues.md +37 -0
  234. package/versioned_docs/version-v1.2/typedoc/core/interfaces/TreeDepths.md +63 -0
  235. package/versioned_docs/version-v1.2/typedoc/core/modules.md +289 -0
  236. package/versioned_docs/version-v1.2/typedoc/crypto/.nojekyll +1 -0
  237. package/versioned_docs/version-v1.2/typedoc/crypto/classes/AccQueue.md +770 -0
  238. package/versioned_docs/version-v1.2/typedoc/crypto/classes/G1Point.md +115 -0
  239. package/versioned_docs/version-v1.2/typedoc/crypto/classes/G2Point.md +140 -0
  240. package/versioned_docs/version-v1.2/typedoc/crypto/classes/IncrementalQuinTree.md +470 -0
  241. package/versioned_docs/version-v1.2/typedoc/crypto/index.md +44 -0
  242. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Keypair.md +33 -0
  243. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/PoseidonFuncs.md +115 -0
  244. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Queue.md +33 -0
  245. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Signature.md +37 -0
  246. package/versioned_docs/version-v1.2/typedoc/crypto/modules.md +913 -0
  247. package/versioned_docs/version-v1.2/typedoc/domainobjs/.nojekyll +1 -0
  248. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Ballot.md +274 -0
  249. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Keypair.md +181 -0
  250. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Message.md +244 -0
  251. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PCommand.md +409 -0
  252. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PrivKey.md +206 -0
  253. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PubKey.md +289 -0
  254. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/StateLeaf.md +340 -0
  255. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/TCommand.md +200 -0
  256. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/VerifyingKey.md +240 -0
  257. package/versioned_docs/version-v1.2/typedoc/domainobjs/index.md +81 -0
  258. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/ICommand.md +104 -0
  259. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG1ContractParams.md +31 -0
  260. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG2ContractParams.md +31 -0
  261. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonBallot.md +42 -0
  262. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonCommand.md +32 -0
  263. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonKeyPair.md +31 -0
  264. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonPCommand.md +111 -0
  265. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonStateLeaf.md +42 -0
  266. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonTCommand.md +67 -0
  267. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IMessageContractParams.md +31 -0
  268. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeaf.md +39 -0
  269. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeafContractParams.md +42 -0
  270. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkContractParams.md +64 -0
  271. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkObjectParams.md +108 -0
  272. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/Proof.md +46 -0
  273. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/VoteOptionTreeLeaf.md +24 -0
  274. package/versioned_docs/version-v1.2/typedoc/domainobjs/modules.md +110 -0
  275. package/versioned_docs/version-v1.2/typedoc/index.md +4 -0
  276. package/versioned_docs/version-v1.2/versioning.md +94 -0
  277. package/versioned_docs/version-v1.2/workflow.md +142 -0
  278. package/versioned_docs/version-v2.x/case-studies.md +35 -0
  279. package/versioned_docs/version-v2.x/contributing/_category_.json +4 -0
  280. package/versioned_docs/version-v2.x/contributing/code-of-conduct.md +92 -0
  281. package/versioned_docs/version-v2.x/contributing/contributing.md +149 -0
  282. package/versioned_docs/version-v2.x/contributing/project-ideas.md +78 -0
  283. package/versioned_docs/version-v2.x/core-concepts/_category_.json +4 -0
  284. package/versioned_docs/version-v2.x/core-concepts/ballot.md +19 -0
  285. package/versioned_docs/version-v2.x/core-concepts/coordinator-processing.md +46 -0
  286. package/versioned_docs/version-v2.x/core-concepts/hashing-and-encryption.md +45 -0
  287. package/versioned_docs/version-v2.x/core-concepts/key-change.md +179 -0
  288. package/versioned_docs/version-v2.x/core-concepts/maci-keys.md +84 -0
  289. package/versioned_docs/version-v2.x/core-concepts/maci-messages.md +44 -0
  290. package/versioned_docs/version-v2.x/core-concepts/merkle-trees.md +23 -0
  291. package/versioned_docs/version-v2.x/core-concepts/poll-types.md +106 -0
  292. package/versioned_docs/version-v2.x/core-concepts/spec.md +883 -0
  293. package/versioned_docs/version-v2.x/core-concepts/state-leaf.md +42 -0
  294. package/versioned_docs/version-v2.x/core-concepts/workflow.md +142 -0
  295. package/versioned_docs/version-v2.x/getting-started.md +313 -0
  296. package/versioned_docs/version-v2.x/guides/_category_.json +4 -0
  297. package/versioned_docs/version-v2.x/guides/compile-circuits.md +163 -0
  298. package/versioned_docs/version-v2.x/guides/frontend.md +99 -0
  299. package/versioned_docs/version-v2.x/guides/integrating.md +73 -0
  300. package/versioned_docs/version-v2.x/guides/maciWrapper.md +173 -0
  301. package/versioned_docs/version-v2.x/guides/subgraph.md +79 -0
  302. package/versioned_docs/version-v2.x/guides/testing/_category_.json +4 -0
  303. package/versioned_docs/version-v2.x/guides/testing/testing-in-detail.md +203 -0
  304. package/versioned_docs/version-v2.x/guides/testing/testing.md +163 -0
  305. package/versioned_docs/version-v2.x/guides/troubleshooting.md +161 -0
  306. package/versioned_docs/version-v2.x/introduction.md +146 -0
  307. package/versioned_docs/version-v2.x/processes/_category_.json +4 -0
  308. package/versioned_docs/version-v2.x/processes/ci-pipeline.md +38 -0
  309. package/versioned_docs/version-v2.x/processes/versioning.md +94 -0
  310. package/versioned_docs/version-v2.x/resources.md +33 -0
  311. package/versioned_docs/version-v2.x/security/_category_.json +4 -0
  312. package/versioned_docs/version-v2.x/security/audit.md +167 -0
  313. package/versioned_docs/version-v2.x/security/trusted-setup.md +166 -0
  314. package/versioned_docs/version-v2.x/supported-networks/_category_.json +4 -0
  315. package/versioned_docs/version-v2.x/supported-networks/deployed-contracts.md +1108 -0
  316. package/versioned_docs/version-v2.x/supported-networks/supported-networks.md +47 -0
  317. package/versioned_docs/version-v2.x/technical-references/_category_.json +4 -0
  318. package/versioned_docs/version-v2.x/technical-references/smart-contracts/AccQueue.md +21 -0
  319. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Gatekeepers.md +40 -0
  320. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MACI.md +152 -0
  321. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
  322. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Params.md +32 -0
  323. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Poll.md +104 -0
  324. package/versioned_docs/version-v2.x/technical-references/smart-contracts/PollFactory.md +43 -0
  325. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Tally.md +45 -0
  326. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VkRegistry.md +57 -0
  327. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
  328. package/versioned_docs/version-v2.x/technical-references/smart-contracts/_category_.json +8 -0
  329. package/versioned_docs/version-v2.x/technical-references/technical-references.md +47 -0
  330. package/versioned_docs/version-v2.x/technical-references/typescript-code/_category_.json +4 -0
  331. package/versioned_docs/version-v2.x/technical-references/typescript-code/cli.md +699 -0
  332. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/_category_.json +4 -0
  333. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/processMessages.md +107 -0
  334. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/setup.md +101 -0
  335. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
  336. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/utilities.md +131 -0
  337. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +37 -0
  338. package/versioned_docs/version-v2.x/use-cases/_category_.json +4 -0
  339. package/versioned_docs/version-v2.x/use-cases/governance.md +18 -0
  340. package/versioned_docs/version-v2.x/use-cases/polling.md +10 -0
  341. package/versioned_docs/version-v2.x/use-cases/public-goods.md +65 -0
  342. package/versioned_docs/version-v3.x/case-studies.md +35 -0
  343. package/versioned_docs/version-v3.x/contributing/_category_.json +4 -0
  344. package/versioned_docs/version-v3.x/contributing/code-of-conduct.md +92 -0
  345. package/versioned_docs/version-v3.x/contributing/contributing.md +149 -0
  346. package/versioned_docs/version-v3.x/contributing/project-ideas.md +78 -0
  347. package/versioned_docs/version-v3.x/core-concepts/_category_.json +4 -0
  348. package/versioned_docs/version-v3.x/core-concepts/ballot.md +19 -0
  349. package/versioned_docs/version-v3.x/core-concepts/coordinator-processing.md +46 -0
  350. package/versioned_docs/version-v3.x/core-concepts/coordinator-service.md +16 -0
  351. package/versioned_docs/version-v3.x/core-concepts/hashing-and-encryption.md +45 -0
  352. package/versioned_docs/version-v3.x/core-concepts/key-change.md +179 -0
  353. package/versioned_docs/version-v3.x/core-concepts/maci-keys.md +84 -0
  354. package/versioned_docs/version-v3.x/core-concepts/maci-messages.md +44 -0
  355. package/versioned_docs/version-v3.x/core-concepts/merkle-trees.md +16 -0
  356. package/versioned_docs/version-v3.x/core-concepts/offchain-voting.md +14 -0
  357. package/versioned_docs/version-v3.x/core-concepts/poll-types.md +58 -0
  358. package/versioned_docs/version-v3.x/core-concepts/polls.md +81 -0
  359. package/versioned_docs/version-v3.x/core-concepts/spec.md +883 -0
  360. package/versioned_docs/version-v3.x/core-concepts/state-leaf.md +42 -0
  361. package/versioned_docs/version-v3.x/core-concepts/workflow.md +149 -0
  362. package/versioned_docs/version-v3.x/guides/_category_.json +4 -0
  363. package/versioned_docs/version-v3.x/guides/compile-circuits.md +175 -0
  364. package/versioned_docs/version-v3.x/guides/integrating.md +137 -0
  365. package/versioned_docs/version-v3.x/guides/subgraph.md +79 -0
  366. package/versioned_docs/version-v3.x/guides/testing/_category_.json +4 -0
  367. package/versioned_docs/version-v3.x/guides/testing/testing-in-detail.md +191 -0
  368. package/versioned_docs/version-v3.x/guides/testing/testing-introduction.md +158 -0
  369. package/versioned_docs/version-v3.x/guides/troubleshooting.md +161 -0
  370. package/versioned_docs/version-v3.x/introduction.md +153 -0
  371. package/versioned_docs/version-v3.x/processes/_category_.json +4 -0
  372. package/versioned_docs/version-v3.x/processes/ci-pipeline.md +38 -0
  373. package/versioned_docs/version-v3.x/processes/versioning.md +94 -0
  374. package/versioned_docs/version-v3.x/quick-start.md +318 -0
  375. package/versioned_docs/version-v3.x/resources.md +33 -0
  376. package/versioned_docs/version-v3.x/security/_category_.json +4 -0
  377. package/versioned_docs/version-v3.x/security/audit.md +167 -0
  378. package/versioned_docs/version-v3.x/security/trusted-setup.md +172 -0
  379. package/versioned_docs/version-v3.x/supported-networks/_category_.json +4 -0
  380. package/versioned_docs/version-v3.x/supported-networks/deployed-contracts.md +112 -0
  381. package/versioned_docs/version-v3.x/supported-networks/supported-networks.md +53 -0
  382. package/versioned_docs/version-v3.x/technical-references/_category_.json +4 -0
  383. package/versioned_docs/version-v3.x/technical-references/coordinator-service/_category_.json +8 -0
  384. package/versioned_docs/version-v3.x/technical-references/coordinator-service/index.md +10 -0
  385. package/versioned_docs/version-v3.x/technical-references/coordinator-service/installation.md +43 -0
  386. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/_category_.json +8 -0
  387. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/index.md +51 -0
  388. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/installation.md +109 -0
  389. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MACI.md +160 -0
  390. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
  391. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Params.md +33 -0
  392. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Policies.md +39 -0
  393. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Poll.md +170 -0
  394. package/versioned_docs/version-v3.x/technical-references/smart-contracts/PollFactory.md +33 -0
  395. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Tally.md +43 -0
  396. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VkRegistry.md +62 -0
  397. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
  398. package/versioned_docs/version-v3.x/technical-references/smart-contracts/_category_.json +8 -0
  399. package/versioned_docs/version-v3.x/technical-references/technical-references.md +48 -0
  400. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/_category_.json +4 -0
  401. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/joinPoll.md +53 -0
  402. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/processMessages.md +106 -0
  403. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/setup.md +96 -0
  404. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
  405. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/utilities.md +131 -0
  406. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +42 -0
  407. package/versioned_docs/version-v3.x/use-cases/_category_.json +4 -0
  408. package/versioned_docs/version-v3.x/use-cases/governance.md +18 -0
  409. package/versioned_docs/version-v3.x/use-cases/polling.md +10 -0
  410. package/versioned_docs/version-v3.x/use-cases/public-goods.md +65 -0
  411. package/versioned_sidebars/version-v0.x-sidebars.json +8 -0
  412. package/versioned_sidebars/version-v1.2-sidebars.json +8 -0
  413. package/versioned_sidebars/version-v2.x-sidebars.json +8 -0
  414. package/versioned_sidebars/version-v3.x-sidebars.json +8 -0
  415. 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 |