@proto-kit/protocol 0.1.1-develop.211 → 0.1.1-develop.2137

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 (479) hide show
  1. package/dist/Constants.js +1 -0
  2. package/dist/Constants.js.map +1 -0
  3. package/dist/hashing/mina-prefixes.d.ts +10 -0
  4. package/dist/hashing/mina-prefixes.d.ts.map +1 -0
  5. package/dist/hashing/mina-prefixes.js +10 -0
  6. package/dist/hashing/mina-prefixes.js.map +1 -0
  7. package/dist/hashing/protokit-prefixes.d.ts +10 -0
  8. package/dist/hashing/protokit-prefixes.d.ts.map +1 -0
  9. package/dist/hashing/protokit-prefixes.js +24 -0
  10. package/dist/hashing/protokit-prefixes.js.map +1 -0
  11. package/dist/hooks/AccountStateHook.d.ts +56 -0
  12. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  13. package/dist/hooks/AccountStateHook.js +62 -0
  14. package/dist/hooks/AccountStateHook.js.map +1 -0
  15. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  16. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  17. package/dist/hooks/BlockHeightHook.js +16 -0
  18. package/dist/hooks/BlockHeightHook.js.map +1 -0
  19. package/dist/hooks/LastStateRootBlockHook.d.ts +7 -0
  20. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  21. package/dist/hooks/LastStateRootBlockHook.js +16 -0
  22. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  23. package/dist/hooks/NoopBlockHook.d.ts +8 -0
  24. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  25. package/dist/hooks/NoopBlockHook.js +10 -0
  26. package/dist/hooks/NoopBlockHook.js.map +1 -0
  27. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  28. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  29. package/dist/{prover/statetransition/StateTransitionWitnessProvider.js → hooks/NoopSettlementHook.js} +8 -7
  30. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  31. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  32. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  33. package/dist/hooks/NoopTransactionHook.js +11 -0
  34. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  35. package/dist/index.d.ts +51 -13
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +52 -13
  38. package/dist/index.js.map +1 -0
  39. package/dist/model/AppliedStateTransitionBatch.d.ts +114 -0
  40. package/dist/model/AppliedStateTransitionBatch.d.ts.map +1 -0
  41. package/dist/model/AppliedStateTransitionBatch.js +16 -0
  42. package/dist/model/AppliedStateTransitionBatch.js.map +1 -0
  43. package/dist/model/MethodPublicOutput.d.ts +83 -28
  44. package/dist/model/MethodPublicOutput.d.ts.map +1 -1
  45. package/dist/model/MethodPublicOutput.js +4 -1
  46. package/dist/model/MethodPublicOutput.js.map +1 -0
  47. package/dist/model/Option.d.ts +66 -42
  48. package/dist/model/Option.d.ts.map +1 -1
  49. package/dist/model/Option.js +58 -45
  50. package/dist/model/Option.js.map +1 -0
  51. package/dist/model/Path.d.ts +4 -3
  52. package/dist/model/Path.d.ts.map +1 -1
  53. package/dist/model/Path.js +6 -5
  54. package/dist/model/Path.js.map +1 -0
  55. package/dist/model/RuntimeLike.d.ts +11 -0
  56. package/dist/model/RuntimeLike.d.ts.map +1 -0
  57. package/dist/model/RuntimeLike.js +2 -0
  58. package/dist/model/RuntimeLike.js.map +1 -0
  59. package/dist/model/StateTransition.d.ts +58 -18
  60. package/dist/model/StateTransition.d.ts.map +1 -1
  61. package/dist/model/StateTransition.js +13 -4
  62. package/dist/model/StateTransition.js.map +1 -0
  63. package/dist/model/StateTransitionProvableBatch.d.ts +369 -54
  64. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  65. package/dist/model/StateTransitionProvableBatch.js +74 -51
  66. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  67. package/dist/model/network/NetworkState.d.ts +105 -9
  68. package/dist/model/network/NetworkState.d.ts.map +1 -1
  69. package/dist/model/network/NetworkState.js +22 -2
  70. package/dist/model/network/NetworkState.js.map +1 -0
  71. package/dist/model/transaction/AuthorizedTransaction.d.ts +122 -0
  72. package/dist/model/transaction/AuthorizedTransaction.d.ts.map +1 -0
  73. package/dist/model/transaction/AuthorizedTransaction.js +39 -0
  74. package/dist/model/transaction/AuthorizedTransaction.js.map +1 -0
  75. package/dist/model/transaction/RuntimeTransaction.d.ts +94 -34
  76. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
  77. package/dist/model/transaction/RuntimeTransaction.js +72 -11
  78. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  79. package/dist/model/transaction/SignedTransaction.d.ts +110 -0
  80. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  81. package/dist/model/transaction/SignedTransaction.js +34 -0
  82. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  83. package/dist/model/transaction/ValueOption.d.ts +187 -0
  84. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  85. package/dist/model/transaction/ValueOption.js +25 -0
  86. package/dist/model/transaction/ValueOption.js.map +1 -0
  87. package/dist/protocol/Protocol.d.ts +45 -34
  88. package/dist/protocol/Protocol.d.ts.map +1 -1
  89. package/dist/protocol/Protocol.js +115 -57
  90. package/dist/protocol/Protocol.js.map +1 -0
  91. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  92. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  93. package/dist/protocol/ProtocolEnvironment.js +2 -0
  94. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  95. package/dist/protocol/ProtocolModule.d.ts +7 -6
  96. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  97. package/dist/protocol/ProtocolModule.js +10 -5
  98. package/dist/protocol/ProtocolModule.js.map +1 -0
  99. package/dist/protocol/ProvableBlockHook.d.ts +29 -0
  100. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  101. package/dist/protocol/ProvableBlockHook.js +20 -0
  102. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  103. package/dist/protocol/ProvableTransactionHook.d.ts +32 -3
  104. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
  105. package/dist/protocol/ProvableTransactionHook.js +25 -0
  106. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  107. package/dist/protocol/TransitioningProtocolModule.d.ts +6 -1
  108. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -1
  109. package/dist/protocol/TransitioningProtocolModule.js +6 -0
  110. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  111. package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
  112. package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
  113. package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
  114. package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
  115. package/dist/prover/accumulators/BlockHashList.d.ts +263 -0
  116. package/dist/prover/accumulators/BlockHashList.d.ts.map +1 -0
  117. package/dist/prover/accumulators/BlockHashList.js +97 -0
  118. package/dist/prover/accumulators/BlockHashList.js.map +1 -0
  119. package/dist/prover/accumulators/StateTransitionReductionList.d.ts +12 -0
  120. package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
  121. package/dist/prover/accumulators/StateTransitionReductionList.js +64 -0
  122. package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
  123. package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
  124. package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
  125. package/dist/prover/accumulators/TransactionHashList.js +8 -0
  126. package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
  127. package/dist/prover/accumulators/WitnessedRootHashList.d.ts +123 -0
  128. package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
  129. package/dist/prover/accumulators/WitnessedRootHashList.js +51 -0
  130. package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
  131. package/dist/prover/block/BlockProvable.d.ts +565 -96
  132. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  133. package/dist/prover/block/BlockProvable.js +196 -12
  134. package/dist/prover/block/BlockProvable.js.map +1 -0
  135. package/dist/prover/block/BlockProver.d.ts +45 -44
  136. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  137. package/dist/prover/block/BlockProver.js +306 -143
  138. package/dist/prover/block/BlockProver.js.map +1 -0
  139. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +106 -0
  140. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  141. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +25 -0
  142. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  143. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  144. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  145. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
  146. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  147. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  148. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  149. package/dist/prover/{statetransition/StateTransitionWitnessProviderReference.js → block/services/RuntimeVerificationKeyRootService.js} +11 -8
  150. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  151. package/dist/prover/statetransition/StateTransitionProvable.d.ts +137 -64
  152. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  153. package/dist/prover/statetransition/StateTransitionProvable.js +10 -7
  154. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  155. package/dist/prover/statetransition/StateTransitionProver.d.ts +26 -24
  156. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  157. package/dist/prover/statetransition/StateTransitionProver.js +159 -93
  158. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  159. package/dist/prover/transaction/TransactionProvable.d.ts +626 -0
  160. package/dist/prover/transaction/TransactionProvable.d.ts.map +1 -0
  161. package/dist/prover/transaction/TransactionProvable.js +87 -0
  162. package/dist/prover/transaction/TransactionProvable.js.map +1 -0
  163. package/dist/prover/transaction/TransactionProver.d.ts +68 -0
  164. package/dist/prover/transaction/TransactionProver.d.ts.map +1 -0
  165. package/dist/prover/transaction/TransactionProver.js +301 -0
  166. package/dist/prover/transaction/TransactionProver.js.map +1 -0
  167. package/dist/prover/utils.d.ts +19 -0
  168. package/dist/prover/utils.d.ts.map +1 -0
  169. package/dist/prover/utils.js +67 -0
  170. package/dist/prover/utils.js.map +1 -0
  171. package/dist/settlement/ContractArgsRegistry.d.ts +13 -0
  172. package/dist/settlement/ContractArgsRegistry.d.ts.map +1 -0
  173. package/dist/settlement/ContractArgsRegistry.js +58 -0
  174. package/dist/settlement/ContractArgsRegistry.js.map +1 -0
  175. package/dist/settlement/ContractModule.d.ts +16 -0
  176. package/dist/settlement/ContractModule.d.ts.map +1 -0
  177. package/dist/settlement/ContractModule.js +12 -0
  178. package/dist/settlement/ContractModule.js.map +1 -0
  179. package/dist/settlement/SettlementContractModule.d.ts +47 -0
  180. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  181. package/dist/settlement/SettlementContractModule.js +81 -0
  182. package/dist/settlement/SettlementContractModule.js.map +1 -0
  183. package/dist/settlement/contracts/BridgeContract.d.ts +114 -0
  184. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  185. package/dist/settlement/contracts/BridgeContract.js +270 -0
  186. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  187. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +18 -0
  188. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  189. package/dist/settlement/contracts/BridgeContractProtocolModule.js +42 -0
  190. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  191. package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts +21 -0
  192. package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts.map +1 -0
  193. package/dist/settlement/contracts/BridgingSettlementContractModule.js +81 -0
  194. package/dist/settlement/contracts/BridgingSettlementContractModule.js.map +1 -0
  195. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +23 -0
  196. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  197. package/dist/settlement/contracts/DispatchContractProtocolModule.js +55 -0
  198. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  199. package/dist/settlement/contracts/DispatchSmartContract.d.ts +50 -0
  200. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  201. package/dist/settlement/contracts/DispatchSmartContract.js +234 -0
  202. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  203. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
  204. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  205. package/dist/settlement/contracts/SettlementContractProtocolModule.js +84 -0
  206. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  207. package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
  208. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  209. package/dist/settlement/contracts/SettlementSmartContract.js +310 -0
  210. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  211. package/dist/settlement/contracts/SettlementSmartContractModule.d.ts +20 -0
  212. package/dist/settlement/contracts/SettlementSmartContractModule.d.ts.map +1 -0
  213. package/dist/settlement/contracts/SettlementSmartContractModule.js +56 -0
  214. package/dist/settlement/contracts/SettlementSmartContractModule.js.map +1 -0
  215. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  216. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  217. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  218. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  219. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  220. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  221. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  222. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  223. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  224. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  225. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  226. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  227. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  228. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  229. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  230. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  231. package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts +107 -0
  232. package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts.map +1 -0
  233. package/dist/settlement/contracts/settlement/BridgingSettlementContract.js +188 -0
  234. package/dist/settlement/contracts/settlement/BridgingSettlementContract.js.map +1 -0
  235. package/dist/settlement/contracts/settlement/SettlementBase.d.ts +41 -0
  236. package/dist/settlement/contracts/settlement/SettlementBase.d.ts.map +1 -0
  237. package/dist/settlement/contracts/settlement/SettlementBase.js +105 -0
  238. package/dist/settlement/contracts/settlement/SettlementBase.js.map +1 -0
  239. package/dist/settlement/contracts/settlement/SettlementContract.d.ts +15 -0
  240. package/dist/settlement/contracts/settlement/SettlementContract.d.ts.map +1 -0
  241. package/dist/settlement/contracts/settlement/SettlementContract.js +72 -0
  242. package/dist/settlement/contracts/settlement/SettlementContract.js.map +1 -0
  243. package/dist/settlement/messages/Deposit.d.ts +77 -0
  244. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  245. package/dist/settlement/messages/Deposit.js +8 -0
  246. package/dist/settlement/messages/Deposit.js.map +1 -0
  247. package/dist/settlement/messages/OutgoingMessage.d.ts +67 -0
  248. package/dist/settlement/messages/OutgoingMessage.d.ts.map +1 -0
  249. package/dist/settlement/messages/OutgoingMessage.js +7 -0
  250. package/dist/settlement/messages/OutgoingMessage.js.map +1 -0
  251. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +588 -0
  252. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  253. package/dist/settlement/messages/OutgoingMessageArgument.js +42 -0
  254. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  255. package/dist/settlement/messages/Withdrawal.d.ts +2 -0
  256. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  257. package/dist/settlement/messages/Withdrawal.js +3 -0
  258. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  259. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts +28 -0
  260. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
  261. package/dist/settlement/modularity/OutgoingMessageProcessor.js +39 -0
  262. package/dist/settlement/modularity/OutgoingMessageProcessor.js.map +1 -0
  263. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
  264. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  265. package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
  266. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  267. package/dist/settlement/modularity/types.d.ts +9 -0
  268. package/dist/settlement/modularity/types.d.ts.map +1 -0
  269. package/dist/settlement/modularity/types.js +2 -0
  270. package/dist/settlement/modularity/types.js.map +1 -0
  271. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  272. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  273. package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
  274. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  275. package/dist/state/SimpleAsyncStateService.d.ts +6 -0
  276. package/dist/state/SimpleAsyncStateService.d.ts.map +1 -0
  277. package/dist/state/SimpleAsyncStateService.js +2 -0
  278. package/dist/state/SimpleAsyncStateService.js.map +1 -0
  279. package/dist/state/State.d.ts +13 -5
  280. package/dist/state/State.d.ts.map +1 -1
  281. package/dist/state/State.js +42 -17
  282. package/dist/state/State.js.map +1 -0
  283. package/dist/state/StateMap.d.ts +4 -4
  284. package/dist/state/StateMap.d.ts.map +1 -1
  285. package/dist/state/StateMap.js +5 -5
  286. package/dist/state/StateMap.js.map +1 -0
  287. package/dist/state/StateService.d.ts +4 -4
  288. package/dist/state/StateService.d.ts.map +1 -1
  289. package/dist/state/StateService.js +1 -0
  290. package/dist/state/StateService.js.map +1 -0
  291. package/dist/state/StateServiceProvider.d.ts +5 -7
  292. package/dist/state/StateServiceProvider.d.ts.map +1 -1
  293. package/dist/state/StateServiceProvider.js +18 -23
  294. package/dist/state/StateServiceProvider.js.map +1 -0
  295. package/dist/state/WitnessBlockContext.d.ts +5 -0
  296. package/dist/state/WitnessBlockContext.d.ts.map +1 -0
  297. package/dist/state/WitnessBlockContext.js +48 -0
  298. package/dist/state/WitnessBlockContext.js.map +1 -0
  299. package/dist/state/assert/assert.d.ts +2 -2
  300. package/dist/state/assert/assert.d.ts.map +1 -1
  301. package/dist/state/assert/assert.js +16 -6
  302. package/dist/state/assert/assert.js.map +1 -0
  303. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +137 -4
  304. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
  305. package/dist/state/context/RuntimeMethodExecutionContext.js +44 -11
  306. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  307. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -1
  308. package/dist/state/context/TransitionMethodExecutionContext.js +1 -1
  309. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  310. package/dist/state/protocol/ProtocolState.d.ts +8 -2
  311. package/dist/state/protocol/ProtocolState.d.ts.map +1 -1
  312. package/dist/state/protocol/ProtocolState.js +36 -20
  313. package/dist/state/protocol/ProtocolState.js.map +1 -0
  314. package/dist/utils/FieldOptions.d.ts +62 -0
  315. package/dist/utils/FieldOptions.d.ts.map +1 -0
  316. package/dist/utils/FieldOptions.js +13 -0
  317. package/dist/utils/FieldOptions.js.map +1 -0
  318. package/dist/utils/MinaPrefixedProvableHashList.d.ts +20 -0
  319. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  320. package/dist/utils/MinaPrefixedProvableHashList.js +49 -0
  321. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  322. package/dist/utils/PrefixedProvableHashList.d.ts +3 -2
  323. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
  324. package/dist/utils/PrefixedProvableHashList.js +5 -1
  325. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  326. package/dist/utils/ProvableHashList.d.ts +27 -4
  327. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  328. package/dist/utils/ProvableHashList.js +51 -3
  329. package/dist/utils/ProvableHashList.js.map +1 -0
  330. package/dist/utils/ProvableReductionHashList.d.ts +18 -0
  331. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  332. package/dist/utils/ProvableReductionHashList.js +54 -0
  333. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  334. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  335. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  336. package/dist/utils/StateTransitionReductionList.js +61 -0
  337. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  338. package/dist/utils/utils.d.ts +11 -5
  339. package/dist/utils/utils.d.ts.map +1 -1
  340. package/dist/utils/utils.js +13 -13
  341. package/dist/utils/utils.js.map +1 -0
  342. package/jest.config.cjs +12 -1
  343. package/package.json +10 -10
  344. package/src/hashing/mina-prefixes.ts +10 -0
  345. package/src/hashing/protokit-prefixes.ts +37 -0
  346. package/src/hooks/AccountStateHook.ts +80 -0
  347. package/src/hooks/BlockHeightHook.ts +17 -0
  348. package/src/hooks/LastStateRootBlockHook.ts +25 -0
  349. package/src/hooks/NoopBlockHook.ts +24 -0
  350. package/src/hooks/NoopSettlementHook.ts +20 -0
  351. package/src/{blockmodules → hooks}/NoopTransactionHook.ts +9 -3
  352. package/src/index.ts +51 -13
  353. package/src/model/AppliedStateTransitionBatch.ts +16 -0
  354. package/src/model/MethodPublicOutput.ts +3 -1
  355. package/src/model/Option.ts +87 -57
  356. package/src/model/Path.ts +9 -5
  357. package/src/model/RuntimeLike.ts +12 -0
  358. package/src/model/StateTransition.ts +19 -5
  359. package/src/model/StateTransitionProvableBatch.ts +94 -73
  360. package/src/model/Transaction.ts +3 -1
  361. package/src/model/network/NetworkState.ts +22 -2
  362. package/src/model/transaction/AuthorizedTransaction.ts +50 -0
  363. package/src/model/transaction/RuntimeTransaction.ts +86 -15
  364. package/src/model/transaction/ValueOption.ts +28 -0
  365. package/src/protocol/Protocol.ts +186 -116
  366. package/src/protocol/ProtocolEnvironment.ts +10 -0
  367. package/src/protocol/ProtocolModule.ts +18 -11
  368. package/src/protocol/ProvableBlockHook.ts +67 -0
  369. package/src/protocol/ProvableTransactionHook.ts +92 -3
  370. package/src/protocol/TransitioningProtocolModule.ts +8 -1
  371. package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
  372. package/src/prover/accumulators/BlockHashList.ts +117 -0
  373. package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
  374. package/src/prover/accumulators/TransactionHashList.ts +9 -0
  375. package/src/prover/accumulators/WitnessedRootHashList.ts +62 -0
  376. package/src/prover/block/BlockProvable.ts +360 -28
  377. package/src/prover/block/BlockProver.ts +668 -251
  378. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +24 -0
  379. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  380. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  381. package/src/prover/statetransition/StateTransitionProvable.ts +25 -20
  382. package/src/prover/statetransition/StateTransitionProver.ts +299 -168
  383. package/src/prover/transaction/TransactionProvable.ts +183 -0
  384. package/src/prover/transaction/TransactionProver.ts +561 -0
  385. package/src/prover/utils.ts +108 -0
  386. package/src/settlement/ContractArgsRegistry.ts +64 -0
  387. package/src/settlement/ContractModule.ts +31 -0
  388. package/src/settlement/SettlementContractModule.ts +150 -0
  389. package/src/settlement/contracts/BridgeContract.ts +383 -0
  390. package/src/settlement/contracts/BridgeContractProtocolModule.ts +49 -0
  391. package/src/settlement/contracts/BridgingSettlementContractModule.ts +116 -0
  392. package/src/settlement/contracts/DispatchContractProtocolModule.ts +77 -0
  393. package/src/settlement/contracts/DispatchSmartContract.ts +359 -0
  394. package/src/settlement/contracts/SettlementSmartContractModule.ts +79 -0
  395. package/src/settlement/contracts/TokenBridgeTree.ts +86 -0
  396. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  397. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  398. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  399. package/src/settlement/contracts/settlement/BridgingSettlementContract.ts +283 -0
  400. package/src/settlement/contracts/settlement/SettlementBase.ts +249 -0
  401. package/src/settlement/contracts/settlement/SettlementContract.ts +75 -0
  402. package/src/settlement/messages/Deposit.ts +7 -0
  403. package/src/settlement/messages/OutgoingMessage.ts +17 -0
  404. package/src/settlement/messages/OutgoingMessageArgument.ts +62 -0
  405. package/src/settlement/modularity/OutgoingMessageProcessor.ts +78 -0
  406. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  407. package/src/settlement/modularity/types.ts +23 -0
  408. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  409. package/src/state/State.ts +49 -19
  410. package/src/state/StateMap.ts +5 -6
  411. package/src/state/StateService.ts +5 -5
  412. package/src/state/StateServiceProvider.ts +18 -18
  413. package/src/state/WitnessBlockContext.ts +54 -0
  414. package/src/state/assert/assert.ts +18 -8
  415. package/src/state/context/RuntimeMethodExecutionContext.ts +68 -11
  416. package/src/state/context/TransitionMethodExecutionContext.ts +0 -1
  417. package/src/state/protocol/ProtocolState.ts +61 -26
  418. package/src/utils/FieldOptions.ts +13 -0
  419. package/src/utils/MinaPrefixedProvableHashList.ts +70 -0
  420. package/src/utils/PrefixedProvableHashList.ts +6 -2
  421. package/src/utils/ProvableHashList.ts +109 -4
  422. package/src/utils/ProvableReductionHashList.ts +77 -0
  423. package/src/utils/utils.ts +21 -16
  424. package/test/BlockProver.test.ts +124 -140
  425. package/test/Protocol.test.ts +14 -21
  426. package/test/State.test.ts +45 -0
  427. package/test/StateTransition.test.ts +57 -65
  428. package/test/TestingProtocol.ts +36 -0
  429. package/test/compiling/types.ts +28 -0
  430. package/test/model/Option.test.ts +72 -0
  431. package/test/model/StateTransitionProvableBatch.test.ts +137 -0
  432. package/test/modularity/types.ts +35 -0
  433. package/test/prover/block/BlockProver.test.ts +18 -0
  434. package/test/prover/statetransition/StateTransitionProver.test.ts +261 -0
  435. package/{src → test}/state/assert/assert.test.ts +10 -3
  436. package/test/tsconfig.json +7 -0
  437. package/test/utils/ProvableHashList.test.ts +44 -0
  438. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  439. package/test/utils.test.ts +0 -3
  440. package/LICENSE.md +0 -201
  441. package/dist/blockmodules/AccountStateModule.d.ts +0 -38
  442. package/dist/blockmodules/AccountStateModule.d.ts.map +0 -1
  443. package/dist/blockmodules/AccountStateModule.js +0 -38
  444. package/dist/blockmodules/NoopTransactionHook.d.ts +0 -6
  445. package/dist/blockmodules/NoopTransactionHook.d.ts.map +0 -1
  446. package/dist/blockmodules/NoopTransactionHook.js +0 -5
  447. package/dist/model/transaction/ProtocolTransaction.d.ts +0 -70
  448. package/dist/model/transaction/ProtocolTransaction.d.ts.map +0 -1
  449. package/dist/model/transaction/ProtocolTransaction.js +0 -18
  450. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
  451. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
  452. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +0 -7
  453. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +0 -1
  454. package/dist/state/context/ProtocolMethodExecutionContext.d.ts +0 -22
  455. package/dist/state/context/ProtocolMethodExecutionContext.d.ts.map +0 -1
  456. package/dist/state/context/ProtocolMethodExecutionContext.js +0 -28
  457. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -25
  458. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
  459. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -77
  460. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts +0 -26
  461. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts.map +0 -1
  462. package/dist/utils/merkletree/MemoryMerkleTreeStorage.js +0 -79
  463. package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
  464. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
  465. package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
  466. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -130
  467. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  468. package/dist/utils/merkletree/RollupMerkleTree.js +0 -244
  469. package/src/blockmodules/AccountStateModule.ts +0 -31
  470. package/src/model/Option.test.ts +0 -21
  471. package/src/model/transaction/ProtocolTransaction.ts +0 -25
  472. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -24
  473. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
  474. package/src/state/context/ProtocolMethodExecutionContext.ts +0 -36
  475. package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -106
  476. package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
  477. package/src/utils/merkletree/RollupMerkleTree.ts +0 -255
  478. package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
  479. package/tsconfig.test.json +0 -9
@@ -1,24 +0,0 @@
1
- import type { Field } from "snarkyjs";
2
- import { injectable } from "tsyringe";
3
-
4
- import { RollupMerkleWitness } from "../../utils/merkletree/RollupMerkleTree.js";
5
-
6
- /**
7
- * Interface for providing merkle witnesses to the state-transition prover
8
- */
9
- export interface StateTransitionWitnessProvider {
10
- /**
11
- * Provides the merkle witness corresponding to the given key
12
- * @param key Merkle-tree key
13
- */
14
- getWitness: (key: Field) => RollupMerkleWitness;
15
- }
16
-
17
- @injectable()
18
- export class NoOpStateTransitionWitnessProvider
19
- implements StateTransitionWitnessProvider
20
- {
21
- public getWitness(): RollupMerkleWitness {
22
- return new RollupMerkleWitness({ path: [], isLeft: [] });
23
- }
24
- }
@@ -1,17 +0,0 @@
1
- import { injectable, Lifecycle, scoped } from "tsyringe";
2
-
3
- import { StateTransitionWitnessProvider } from "./StateTransitionWitnessProvider";
4
-
5
- @injectable()
6
- @scoped(Lifecycle.ContainerScoped)
7
- export class StateTransitionWitnessProviderReference {
8
- private witnessProvider?: StateTransitionWitnessProvider;
9
-
10
- public setWitnessProvider(provider: StateTransitionWitnessProvider) {
11
- this.witnessProvider = provider;
12
- }
13
-
14
- public getWitnessProvider(): StateTransitionWitnessProvider | undefined {
15
- return this.witnessProvider;
16
- }
17
- }
@@ -1,36 +0,0 @@
1
- import {
2
- TransitionMethodExecutionContext,
3
- TransitionMethodExecutionResult
4
- } from "./TransitionMethodExecutionContext";
5
- import { StateTransition } from "../../model/StateTransition";
6
-
7
- export class ProtocolMethodExecutionContext implements TransitionMethodExecutionContext {
8
- public result = new TransitionMethodExecutionResult();
9
-
10
- /**
11
- * Adds an in-method generated state transition to the current context
12
- * @param stateTransition - State transition to add to the context
13
- */
14
- public addStateTransition<Value>(
15
- stateTransition: StateTransition<Value>
16
- ) {
17
- this.result.stateTransitions.push(stateTransition);
18
- }
19
-
20
- /**
21
- * Manually clears/resets the execution context
22
- */
23
- public clear() {
24
- this.result = new TransitionMethodExecutionResult();
25
- }
26
-
27
- /**
28
- * Had to override current() otherwise it would not infer
29
- * the type of result correctly (parent type would be reused)
30
- */
31
- public current() {
32
- return {
33
- result: this.result,
34
- };
35
- }
36
- }
@@ -1,106 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-magic-numbers */
2
- import { log } from "@proto-kit/common";
3
-
4
- import { RollupMerkleTree } from "./RollupMerkleTree.js";
5
- import { AsyncMerkleTreeStore, MerkleTreeStore } from "./MerkleTreeStore";
6
-
7
- export class InMemoryMerkleTreeStorage implements MerkleTreeStore {
8
- protected readonly nodes: {
9
- [key: number]: {
10
- [key: string]: bigint;
11
- };
12
- } = {};
13
-
14
- public getNode(key: bigint, level: number): bigint | undefined {
15
- return this.nodes[level]?.[key.toString()];
16
- }
17
-
18
- public setNode(key: bigint, level: number, value: bigint): void {
19
- (this.nodes[level] ??= {})[key.toString()] = value;
20
- }
21
- }
22
-
23
- export class CachedMerkleTreeStore extends InMemoryMerkleTreeStorage {
24
- private writeCache: {
25
- [key: number]: {
26
- [key: string]: bigint;
27
- };
28
- } = {};
29
-
30
- public constructor(private readonly parent: AsyncMerkleTreeStore) {
31
- super();
32
- }
33
-
34
- public setNode(key: bigint, level: number, value: bigint) {
35
- super.setNode(key, level, value);
36
- (this.writeCache[level] ??= {})[key.toString()] = value;
37
- }
38
-
39
- public getWrittenNodes(): {
40
- [key: number]: {
41
- [key: string]: bigint;
42
- };
43
- } {
44
- return this.writeCache;
45
- }
46
-
47
- public resetWrittenNodes() {
48
- this.writeCache = {};
49
- }
50
-
51
- // eslint-disable-next-line sonarjs/cognitive-complexity
52
- public async preloadKey(index: bigint): Promise<void> {
53
- // Algo from RollupMerkleTree.getWitness()
54
- const { leafCount, height } = RollupMerkleTree;
55
-
56
- if (index >= leafCount) {
57
- index %= leafCount;
58
- }
59
-
60
- // eslint-disable-next-line no-warning-comments,max-len
61
- // TODO Not practical at the moment. Improve pattern when implementing DB storage
62
- for (let level = 0; level < height; level++) {
63
- const key = index;
64
-
65
- const isLeft = index % 2n === 0n;
66
- const siblingKey = isLeft ? index + 1n : index - 1n;
67
-
68
- // eslint-disable-next-line no-await-in-loop
69
- const value = await this.parent.getNode(key, level);
70
- // eslint-disable-next-line no-await-in-loop
71
- const sibling = await this.parent.getNode(siblingKey, level);
72
- if (level === 0) {
73
- log.debug(`Preloaded ${key} @ ${level} -> ${value ?? "-"}`);
74
- }
75
- if (value !== undefined) {
76
- this.setNode(key, level, value);
77
- }
78
- if (sibling !== undefined) {
79
- this.setNode(siblingKey, level, sibling);
80
- }
81
- index /= 2n;
82
- }
83
- }
84
-
85
- public async mergeIntoParent(): Promise<void> {
86
- // In case no state got set we can skip this step
87
- if (Object.keys(this.writeCache).length === 0) {
88
- return;
89
- }
90
-
91
- this.parent.openTransaction();
92
- const { height } = RollupMerkleTree;
93
- const nodes = this.getWrittenNodes();
94
-
95
- const promises = Array.from({ length: height }).flatMap((ignored, level) =>
96
- Object.entries(nodes[level]).map(async (entry) => {
97
- await this.parent.setNode(BigInt(entry[0]), level, entry[1]);
98
- })
99
- );
100
-
101
- await Promise.all(promises);
102
-
103
- this.parent.commit();
104
- this.resetWrittenNodes();
105
- }
106
- }
@@ -1,15 +0,0 @@
1
- export interface AsyncMerkleTreeStore {
2
- openTransaction: () => void;
3
-
4
- commit: () => void;
5
-
6
- setNode: (key: bigint, level: number, value: bigint) => Promise<void>;
7
-
8
- getNode: (key: bigint, level: number) => Promise<bigint | undefined>;
9
- }
10
-
11
- export interface MerkleTreeStore {
12
- setNode: (key: bigint, level: number, value: bigint) => void;
13
-
14
- getNode: (key: bigint, level: number) => bigint | undefined;
15
- }
@@ -1,255 +0,0 @@
1
- /* eslint-disable id-length */
2
- /* eslint-disable line-comment-position */
3
- /* eslint-disable no-inline-comments */
4
- /* eslint-disable @typescript-eslint/no-magic-numbers */
5
- import { Bool, Field, Poseidon, Provable, Struct } from "snarkyjs";
6
-
7
- import { notInCircuit } from "../utils";
8
-
9
- import { MerkleTreeStore } from "./MerkleTreeStore";
10
-
11
- // external API
12
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
13
- export { RollupMerkleTree, RollupMerkleWitness };
14
-
15
- // internal API
16
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
17
- export { maybeSwap };
18
-
19
- /**
20
- * The {@link BaseMerkleWitness} class defines a circuit-compatible base class
21
- * for [Merkle Witness'](https://computersciencewiki.org/index.php/Merkle_proof).
22
- */
23
- class RollupMerkleWitness extends Struct({
24
- path: Provable.Array(Field, 256 - 1),
25
- isLeft: Provable.Array(Bool, 256 - 1),
26
- }) {
27
- public static height = 256;
28
-
29
- public height(): number {
30
- return RollupMerkleWitness.height;
31
- }
32
-
33
- /**
34
- * Calculates a root depending on the leaf value.
35
- * @param leaf Value of the leaf node that belongs to this Witness.
36
- * @returns The calculated root.
37
- */
38
- public calculateRoot(hash: Field): Field {
39
- const n = this.height();
40
-
41
- for (let index = 1; index < n; ++index) {
42
- const isLeft = this.isLeft[index - 1];
43
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
44
- const [left, right] = maybeSwap(isLeft, hash, this.path[index - 1]);
45
- hash = Poseidon.hash([left, right]);
46
- }
47
-
48
- return hash;
49
- }
50
-
51
- /**
52
- * Calculates the index of the leaf node that belongs to this Witness.
53
- * @returns Index of the leaf.
54
- */
55
- public calculateIndex(): Field {
56
- let powerOfTwo = Field(1);
57
- let index = Field(0);
58
- const n = this.height();
59
-
60
- // eslint-disable-next-line no-underscore-dangle
61
- for (let index_ = 1; index_ < n; ++index_) {
62
- index = Provable.if(
63
- this.isLeft[index_ - 1],
64
- index,
65
- index.add(powerOfTwo)
66
- );
67
- powerOfTwo = powerOfTwo.mul(2);
68
- }
69
-
70
- return index;
71
- }
72
- }
73
-
74
- /**
75
- * A [Merkle Tree](https://en.wikipedia.org/wiki/Merkle_tree) is a binary tree in
76
- * which every leaf is the cryptography hash of a piece of data,
77
- * and every node is the hash of the concatenation of its two child nodes.
78
- *
79
- * A Merkle Tree allows developers to easily and securely verify
80
- * the integrity of large amounts of data.
81
- *
82
- * Take a look at our [documentation](https://docs.minaprotocol.com/en/zkapps)
83
- * on how to use Merkle Trees in combination with zkApps and
84
- * zero knowledge programming!
85
- *
86
- * Levels are indexed from leaves (level 0) to root (level N - 1).
87
- */
88
- class RollupMerkleTree {
89
- public static height = 256;
90
-
91
- public static get leafCount(): bigint {
92
- return 2n ** BigInt(RollupMerkleTree.height - 1);
93
- }
94
-
95
- private readonly zeroes: bigint[];
96
-
97
- public readonly store: MerkleTreeStore;
98
-
99
- public constructor(store: MerkleTreeStore) {
100
- this.store = store;
101
- // eslint-disable-next-line @shopify/prefer-class-properties
102
- this.zeroes = [0n];
103
- for (let index = 1; index < RollupMerkleTree.height; index += 1) {
104
- const previousLevel = Field(this.zeroes[index - 1]);
105
- this.zeroes.push(
106
- Poseidon.hash([previousLevel, previousLevel]).toBigInt()
107
- );
108
- }
109
- }
110
-
111
- /**
112
- * Returns a node which lives at a given index and level.
113
- * @param level Level of the node.
114
- * @param index Index of the node.
115
- * @returns The data of the node.
116
- */
117
- @notInCircuit()
118
- public getNode(level: number, index: bigint): Field {
119
- return Field(this.store.getNode(index, level) ?? this.zeroes[level]);
120
- }
121
-
122
- /**
123
- * Returns the root of the [Merkle Tree](https://en.wikipedia.org/wiki/Merkle_tree).
124
- * @returns The root of the Merkle Tree.
125
- */
126
- @notInCircuit()
127
- public getRoot(): Field {
128
- return this.getNode(RollupMerkleTree.height - 1, 0n);
129
- }
130
-
131
- // eslint-disable-next-line no-warning-comments
132
- // TODO: this allows to set a node at an index larger than the size. OK?
133
- private setNode(level: number, index: bigint, value: Field) {
134
- this.store.setNode(index, level, value.toBigInt());
135
- }
136
-
137
- /**
138
- * TODO: if this is passed an index bigger than the max, it will set a couple
139
- * of out-of-bounds nodes but not affect the real Merkle root. OK?
140
- */
141
-
142
- /**
143
- * Sets the value of a leaf node at a given index to a given value.
144
- * @param index Position of the leaf node.
145
- * @param leaf New value.
146
- */
147
- @notInCircuit()
148
- public setLeaf(index: bigint, leaf: Field) {
149
- if (index >= this.leafCount) {
150
- index %= this.leafCount;
151
- }
152
- this.setNode(0, index, leaf);
153
- let currentIndex = index;
154
- for (let level = 1; level < RollupMerkleTree.height; level += 1) {
155
- currentIndex /= 2n;
156
-
157
- const left = this.getNode(level - 1, currentIndex * 2n);
158
- const right = this.getNode(level - 1, currentIndex * 2n + 1n);
159
-
160
- this.setNode(level, currentIndex, Poseidon.hash([left, right]));
161
- }
162
- }
163
-
164
- /**
165
- * Returns the witness (also known as
166
- * [Merkle Proof or Merkle Witness](https://computersciencewiki.org/index.php/Merkle_proof))
167
- * for the leaf at the given index.
168
- * @param index Position of the leaf node.
169
- * @returns The witness that belongs to the leaf.
170
- */
171
- @notInCircuit()
172
- public getWitness(index: bigint): RollupMerkleWitness {
173
- if (index >= this.leafCount) {
174
- index %= this.leafCount;
175
- }
176
- const path = [];
177
- const isLefts = [];
178
- for (let level = 0; level < RollupMerkleTree.height - 1; level += 1) {
179
- const isLeft = index % 2n === 0n;
180
- const sibling = this.getNode(level, isLeft ? index + 1n : index - 1n);
181
- isLefts.push(Bool(isLeft));
182
- path.push(sibling);
183
- index /= 2n;
184
- }
185
- return new RollupMerkleWitness({
186
- isLeft: isLefts,
187
- path,
188
- });
189
- }
190
-
191
- // eslint-disable-next-line no-warning-comments, max-len
192
- // TODO: should this take an optional offset? should it fail if the array is too long?
193
- /**
194
- * Fills all leaves of the tree.
195
- * @param leaves Values to fill the leaves with.
196
- */
197
- @notInCircuit()
198
- public fill(leaves: Field[]) {
199
- leaves.forEach((value, index) => {
200
- this.setLeaf(BigInt(index), value);
201
- });
202
- }
203
-
204
- /**
205
- * Returns the amount of leaf nodes.
206
- * @returns Amount of leaf nodes.
207
- */
208
- public get leafCount(): bigint {
209
- return RollupMerkleTree.leafCount;
210
- }
211
- }
212
-
213
- // eslint-disable-next-line @typescript-eslint/no-namespace
214
- export namespace MerkleTreeUtils {
215
- export function normalizeKey(key: Field): Field {
216
- // if(NJORD_MERKLE_TREE_HEIGHT < 256){
217
- // return fieldMod(key, Field(RollupMerkleTree.leafCount).toConstant())
218
- // eslint-disable-next-line max-len
219
- // // return modPower2(key, RollupMerkleTree.height - 1) //TODO Fix modPower2
220
- // }else{
221
- return key;
222
-
223
- // }
224
- }
225
-
226
- export function checkMembership(
227
- witness: RollupMerkleWitness,
228
- root: Field,
229
- key: Field,
230
- value: Field
231
- ): Bool {
232
- const root2 = witness.calculateRoot(value);
233
- const key2 = witness.calculateIndex();
234
- key.assertEquals(key2, "Keys of MerkleWitness does not match");
235
- return root.equals(root2);
236
- }
237
-
238
- export function computeRoot(
239
- witness: RollupMerkleWitness,
240
- value: Field
241
- ): Field {
242
- return witness.calculateRoot(value);
243
- }
244
- }
245
-
246
- /**
247
- * More efficient version of `maybeSwapBad` which
248
- * reuses an intermediate variable
249
- */
250
- function maybeSwap(b: Bool, x: Field, y: Field): [Field, Field] {
251
- const m = b.toField().mul(x.sub(y)); // b*(x - y)
252
- const x1 = y.add(m); // y + b*(x - y)
253
- const y2 = x.sub(m); // x - b*(x - y) = x + b*(y - x)
254
- return [x1, y2];
255
- }
@@ -1,21 +0,0 @@
1
- import { MerkleTreeStore } from "./MerkleTreeStore";
2
- import { InMemoryMerkleTreeStorage } from "./InMemoryMerkleTreeStorage";
3
-
4
- /**
5
- * A MemoryMerkleTreeStore that, if falls back to a parent store if it
6
- * has no data
7
- */
8
- export class VirtualMerkleTreeStore extends InMemoryMerkleTreeStorage {
9
- public constructor(private readonly parent: MerkleTreeStore) {
10
- super()
11
- }
12
-
13
- public getNode(key: bigint, level: number): bigint | undefined {
14
- return super.getNode(key, level) ?? this.parent.getNode(key, level);
15
- }
16
-
17
- public setNode(key: bigint, level: number, value: bigint): void {
18
- super.setNode(key, level, value);
19
- }
20
-
21
- }
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "./../../tsconfig.json",
3
- "include": [
4
- "./src/**/*.test.ts",
5
- "./test/**/*.ts",
6
- "./test/*.ts",
7
- "./src/**/*.ts"
8
- ]
9
- }