@proto-kit/protocol 0.1.1-develop.164 → 0.1.1-develop.1661

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 (453) 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 +52 -0
  12. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  13. package/dist/hooks/AccountStateHook.js +52 -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 -9
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +52 -9
  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 -29
  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 +70 -42
  48. package/dist/model/Option.d.ts.map +1 -1
  49. package/dist/model/Option.js +62 -47
  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 +67 -16
  60. package/dist/model/StateTransition.d.ts.map +1 -1
  61. package/dist/model/StateTransition.js +18 -2
  62. package/dist/model/StateTransition.js.map +1 -0
  63. package/dist/model/StateTransitionProvableBatch.d.ts +389 -16
  64. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  65. package/dist/model/StateTransitionProvableBatch.js +88 -11
  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 +20 -2
  70. package/dist/model/network/NetworkState.js.map +1 -0
  71. package/dist/model/transaction/RuntimeTransaction.d.ts +96 -28
  72. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
  73. package/dist/model/transaction/RuntimeTransaction.js +75 -11
  74. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  75. package/dist/model/transaction/SignedTransaction.d.ts +107 -0
  76. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  77. package/dist/model/transaction/SignedTransaction.js +34 -0
  78. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  79. package/dist/model/transaction/ValueOption.d.ts +173 -0
  80. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  81. package/dist/model/transaction/ValueOption.js +25 -0
  82. package/dist/model/transaction/ValueOption.js.map +1 -0
  83. package/dist/protocol/Protocol.d.ts +27 -25
  84. package/dist/protocol/Protocol.d.ts.map +1 -1
  85. package/dist/protocol/Protocol.js +98 -28
  86. package/dist/protocol/Protocol.js.map +1 -0
  87. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  88. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  89. package/dist/protocol/ProtocolEnvironment.js +2 -0
  90. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  91. package/dist/protocol/ProtocolModule.d.ts +7 -7
  92. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  93. package/dist/protocol/ProtocolModule.js +10 -7
  94. package/dist/protocol/ProtocolModule.js.map +1 -0
  95. package/dist/protocol/ProvableBlockHook.d.ts +19 -0
  96. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  97. package/dist/protocol/ProvableBlockHook.js +21 -0
  98. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  99. package/dist/protocol/ProvableTransactionHook.d.ts +34 -0
  100. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
  101. package/dist/protocol/ProvableTransactionHook.js +13 -0
  102. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  103. package/dist/protocol/TransitioningProtocolModule.d.ts +10 -0
  104. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -0
  105. package/dist/protocol/TransitioningProtocolModule.js +9 -0
  106. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  107. package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
  108. package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
  109. package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
  110. package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
  111. package/dist/prover/accumulators/StateTransitionReductionList.d.ts +12 -0
  112. package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
  113. package/dist/prover/accumulators/StateTransitionReductionList.js +64 -0
  114. package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
  115. package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
  116. package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
  117. package/dist/prover/accumulators/TransactionHashList.js +8 -0
  118. package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
  119. package/dist/prover/accumulators/WitnessedRootHashList.d.ts +137 -0
  120. package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
  121. package/dist/prover/accumulators/WitnessedRootHashList.js +50 -0
  122. package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
  123. package/dist/prover/block/BlockProvable.d.ts +869 -65
  124. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  125. package/dist/prover/block/BlockProvable.js +86 -6
  126. package/dist/prover/block/BlockProvable.js.map +1 -0
  127. package/dist/prover/block/BlockProver.d.ts +82 -34
  128. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  129. package/dist/prover/block/BlockProver.js +505 -86
  130. package/dist/prover/block/BlockProver.js.map +1 -0
  131. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +106 -0
  132. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  133. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +25 -0
  134. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  135. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  136. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  137. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
  138. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  139. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  140. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  141. package/dist/prover/{statetransition/StateTransitionWitnessProviderReference.js → block/services/RuntimeVerificationKeyRootService.js} +11 -8
  142. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  143. package/dist/prover/statetransition/StateTransitionProvable.d.ts +137 -48
  144. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  145. package/dist/prover/statetransition/StateTransitionProvable.js +10 -5
  146. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  147. package/dist/prover/statetransition/StateTransitionProver.d.ts +30 -17
  148. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  149. package/dist/prover/statetransition/StateTransitionProver.js +169 -74
  150. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  151. package/dist/settlement/ContractModule.d.ts +16 -0
  152. package/dist/settlement/ContractModule.d.ts.map +1 -0
  153. package/dist/settlement/ContractModule.js +12 -0
  154. package/dist/settlement/ContractModule.js.map +1 -0
  155. package/dist/settlement/SettlementContractModule.d.ts +51 -0
  156. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  157. package/dist/settlement/SettlementContractModule.js +80 -0
  158. package/dist/settlement/SettlementContractModule.js.map +1 -0
  159. package/dist/settlement/contracts/BridgeContract.d.ts +116 -0
  160. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  161. package/dist/settlement/contracts/BridgeContract.js +259 -0
  162. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  163. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +16 -0
  164. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  165. package/dist/settlement/contracts/BridgeContractProtocolModule.js +41 -0
  166. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  167. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +21 -0
  168. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  169. package/dist/settlement/contracts/DispatchContractProtocolModule.js +57 -0
  170. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  171. package/dist/settlement/contracts/DispatchSmartContract.d.ts +44 -0
  172. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  173. package/dist/settlement/contracts/DispatchSmartContract.js +229 -0
  174. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  175. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
  176. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  177. package/dist/settlement/contracts/SettlementContractProtocolModule.js +84 -0
  178. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  179. package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
  180. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  181. package/dist/settlement/contracts/SettlementSmartContract.js +310 -0
  182. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  183. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  184. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  185. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  186. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  187. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  188. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  189. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  190. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  191. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  192. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  193. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  194. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  195. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  196. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  197. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  198. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  199. package/dist/settlement/messages/Deposit.d.ts +77 -0
  200. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  201. package/dist/settlement/messages/Deposit.js +8 -0
  202. package/dist/settlement/messages/Deposit.js.map +1 -0
  203. package/dist/settlement/messages/OutgoingMessage.d.ts +67 -0
  204. package/dist/settlement/messages/OutgoingMessage.d.ts.map +1 -0
  205. package/dist/settlement/messages/OutgoingMessage.js +7 -0
  206. package/dist/settlement/messages/OutgoingMessage.js.map +1 -0
  207. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +462 -0
  208. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  209. package/dist/settlement/messages/OutgoingMessageArgument.js +40 -0
  210. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  211. package/dist/settlement/messages/Withdrawal.d.ts +2 -0
  212. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  213. package/dist/settlement/messages/Withdrawal.js +3 -0
  214. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  215. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts +25 -0
  216. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
  217. package/dist/settlement/modularity/OutgoingMessageProcessor.js +30 -0
  218. package/dist/settlement/modularity/OutgoingMessageProcessor.js.map +1 -0
  219. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
  220. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  221. package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
  222. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  223. package/dist/settlement/modularity/types.d.ts +8 -0
  224. package/dist/settlement/modularity/types.d.ts.map +1 -0
  225. package/dist/settlement/modularity/types.js +2 -0
  226. package/dist/settlement/modularity/types.js.map +1 -0
  227. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  228. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  229. package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
  230. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  231. package/dist/state/SimpleAsyncStateService.d.ts +6 -0
  232. package/dist/state/SimpleAsyncStateService.d.ts.map +1 -0
  233. package/dist/state/SimpleAsyncStateService.js +2 -0
  234. package/dist/state/SimpleAsyncStateService.js.map +1 -0
  235. package/dist/state/State.d.ts +68 -0
  236. package/dist/state/State.d.ts.map +1 -0
  237. package/dist/state/State.js +131 -0
  238. package/dist/state/State.js.map +1 -0
  239. package/dist/state/StateMap.d.ts +37 -0
  240. package/dist/state/StateMap.d.ts.map +1 -0
  241. package/dist/state/StateMap.js +56 -0
  242. package/dist/state/StateMap.js.map +1 -0
  243. package/dist/state/StateService.d.ts +6 -0
  244. package/dist/state/StateService.d.ts.map +1 -0
  245. package/dist/state/StateService.js +2 -0
  246. package/dist/state/StateService.js.map +1 -0
  247. package/dist/state/StateServiceProvider.d.ts +8 -0
  248. package/dist/state/StateServiceProvider.d.ts.map +1 -0
  249. package/dist/state/StateServiceProvider.js +37 -0
  250. package/dist/state/StateServiceProvider.js.map +1 -0
  251. package/dist/state/assert/assert.d.ts +12 -0
  252. package/dist/state/assert/assert.d.ts.map +1 -0
  253. package/dist/state/assert/assert.js +33 -0
  254. package/dist/state/assert/assert.js.map +1 -0
  255. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +193 -0
  256. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -0
  257. package/dist/state/context/RuntimeMethodExecutionContext.js +138 -0
  258. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  259. package/dist/state/context/TransitionMethodExecutionContext.d.ts +23 -0
  260. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -0
  261. package/dist/state/context/TransitionMethodExecutionContext.js +6 -0
  262. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  263. package/dist/state/protocol/ProtocolState.d.ts +13 -0
  264. package/dist/state/protocol/ProtocolState.d.ts.map +1 -0
  265. package/dist/state/protocol/ProtocolState.js +58 -0
  266. package/dist/state/protocol/ProtocolState.js.map +1 -0
  267. package/dist/utils/FieldOptions.d.ts +62 -0
  268. package/dist/utils/FieldOptions.d.ts.map +1 -0
  269. package/dist/utils/FieldOptions.js +13 -0
  270. package/dist/utils/FieldOptions.js.map +1 -0
  271. package/dist/utils/MinaPrefixedProvableHashList.d.ts +19 -0
  272. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  273. package/dist/utils/MinaPrefixedProvableHashList.js +46 -0
  274. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  275. package/dist/utils/PrefixedProvableHashList.d.ts +2 -2
  276. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
  277. package/dist/utils/PrefixedProvableHashList.js +2 -1
  278. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  279. package/dist/utils/ProvableHashList.d.ts +23 -4
  280. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  281. package/dist/utils/ProvableHashList.js +38 -2
  282. package/dist/utils/ProvableHashList.js.map +1 -0
  283. package/dist/utils/ProvableReductionHashList.d.ts +18 -0
  284. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  285. package/dist/utils/ProvableReductionHashList.js +54 -0
  286. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  287. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  288. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  289. package/dist/utils/StateTransitionReductionList.js +61 -0
  290. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  291. package/dist/utils/utils.d.ts +20 -0
  292. package/dist/utils/utils.d.ts.map +1 -0
  293. package/dist/utils/utils.js +51 -0
  294. package/dist/utils/utils.js.map +1 -0
  295. package/jest.config.cjs +12 -1
  296. package/package.json +10 -9
  297. package/src/hashing/mina-prefixes.ts +10 -0
  298. package/src/hashing/protokit-prefixes.ts +37 -0
  299. package/src/hooks/AccountStateHook.ts +57 -0
  300. package/src/hooks/BlockHeightHook.ts +17 -0
  301. package/src/hooks/LastStateRootBlockHook.ts +25 -0
  302. package/src/hooks/NoopBlockHook.ts +24 -0
  303. package/src/hooks/NoopSettlementHook.ts +20 -0
  304. package/src/hooks/NoopTransactionHook.ts +13 -0
  305. package/src/index.ts +51 -9
  306. package/src/model/AppliedStateTransitionBatch.ts +16 -0
  307. package/src/model/MethodPublicOutput.ts +3 -1
  308. package/src/model/Option.ts +99 -60
  309. package/src/model/Path.ts +9 -5
  310. package/src/model/RuntimeLike.ts +12 -0
  311. package/src/model/StateTransition.ts +25 -3
  312. package/src/model/StateTransitionProvableBatch.ts +117 -14
  313. package/src/model/Transaction.ts +3 -1
  314. package/src/model/network/NetworkState.ts +21 -3
  315. package/src/model/transaction/RuntimeTransaction.ts +90 -15
  316. package/src/model/transaction/SignedTransaction.ts +47 -0
  317. package/src/model/transaction/ValueOption.ts +28 -0
  318. package/src/protocol/Protocol.ts +166 -74
  319. package/src/protocol/ProtocolEnvironment.ts +10 -0
  320. package/src/protocol/ProtocolModule.ts +16 -16
  321. package/src/protocol/ProvableBlockHook.ts +68 -0
  322. package/src/protocol/ProvableTransactionHook.ts +77 -0
  323. package/src/protocol/TransitioningProtocolModule.ts +12 -0
  324. package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
  325. package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
  326. package/src/prover/accumulators/TransactionHashList.ts +9 -0
  327. package/src/prover/accumulators/WitnessedRootHashList.ts +61 -0
  328. package/src/prover/block/BlockProvable.ts +188 -15
  329. package/src/prover/block/BlockProver.ts +979 -143
  330. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +24 -0
  331. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  332. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  333. package/src/prover/statetransition/StateTransitionProvable.ts +26 -19
  334. package/src/prover/statetransition/StateTransitionProver.ts +338 -130
  335. package/src/settlement/ContractModule.ts +31 -0
  336. package/src/settlement/SettlementContractModule.ts +145 -0
  337. package/src/settlement/contracts/BridgeContract.ts +366 -0
  338. package/src/settlement/contracts/BridgeContractProtocolModule.ts +48 -0
  339. package/src/settlement/contracts/DispatchContractProtocolModule.ts +75 -0
  340. package/src/settlement/contracts/DispatchSmartContract.ts +325 -0
  341. package/src/settlement/contracts/SettlementContractProtocolModule.ts +113 -0
  342. package/src/settlement/contracts/SettlementSmartContract.ts +502 -0
  343. package/src/settlement/contracts/TokenBridgeTree.ts +73 -0
  344. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  345. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  346. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  347. package/src/settlement/messages/Deposit.ts +7 -0
  348. package/src/settlement/messages/OutgoingMessage.ts +17 -0
  349. package/src/settlement/messages/OutgoingMessageArgument.ts +53 -0
  350. package/src/settlement/modularity/OutgoingMessageProcessor.ts +65 -0
  351. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  352. package/src/settlement/modularity/types.ts +22 -0
  353. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  354. package/src/state/State.ts +177 -0
  355. package/src/state/StateMap.ts +73 -0
  356. package/src/state/StateService.ts +6 -0
  357. package/src/state/StateServiceProvider.ts +37 -0
  358. package/src/state/assert/assert.ts +38 -0
  359. package/src/state/context/RuntimeMethodExecutionContext.ts +181 -0
  360. package/src/state/context/TransitionMethodExecutionContext.ts +26 -0
  361. package/src/state/protocol/ProtocolState.ts +98 -0
  362. package/src/utils/FieldOptions.ts +13 -0
  363. package/src/utils/MinaPrefixedProvableHashList.ts +66 -0
  364. package/src/utils/PrefixedProvableHashList.ts +2 -2
  365. package/src/utils/ProvableHashList.ts +78 -3
  366. package/src/utils/ProvableReductionHashList.ts +77 -0
  367. package/src/utils/utils.ts +44 -55
  368. package/test/BlockProver.test.ts +161 -74
  369. package/test/Protocol.test.ts +20 -10
  370. package/test/State.test.ts +45 -0
  371. package/test/StateTransition.test.ts +57 -65
  372. package/test/TestingProtocol.ts +56 -0
  373. package/test/compiling/types.ts +28 -0
  374. package/test/model/Option.test.ts +72 -0
  375. package/test/model/StateTransitionProvableBatch.test.ts +137 -0
  376. package/test/modularity/types.ts +35 -0
  377. package/test/prover/block/BlockProver.test.ts +18 -0
  378. package/test/prover/statetransition/StateTransitionProver.test.ts +261 -0
  379. package/test/state/assert/assert.test.ts +56 -0
  380. package/test/tsconfig.json +7 -0
  381. package/test/utils/ProvableHashList.test.ts +44 -0
  382. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  383. package/test/utils.test.ts +27 -0
  384. package/dist/config/ConfigurableModule.d.ts +0 -18
  385. package/dist/config/ConfigurableModule.d.ts.map +0 -1
  386. package/dist/config/ConfigurableModule.js +0 -20
  387. package/dist/config/ConfigurationAggregator.d.ts +0 -10
  388. package/dist/config/ConfigurationAggregator.d.ts.map +0 -1
  389. package/dist/config/ConfigurationAggregator.js +0 -35
  390. package/dist/config/ConfigurationReceiver.d.ts +0 -25
  391. package/dist/config/ConfigurationReceiver.d.ts.map +0 -1
  392. package/dist/config/ConfigurationReceiver.js +0 -36
  393. package/dist/config/ModuleContainer.d.ts +0 -44
  394. package/dist/config/ModuleContainer.d.ts.map +0 -1
  395. package/dist/config/ModuleContainer.js +0 -89
  396. package/dist/config/types.d.ts +0 -2
  397. package/dist/config/types.d.ts.map +0 -1
  398. package/dist/config/types.js +0 -1
  399. package/dist/model/MethodPublicInput.d.ts +0 -51
  400. package/dist/model/MethodPublicInput.d.ts.map +0 -1
  401. package/dist/model/MethodPublicInput.js +0 -11
  402. package/dist/model/transaction/ProtocolTransaction.d.ts +0 -70
  403. package/dist/model/transaction/ProtocolTransaction.d.ts.map +0 -1
  404. package/dist/model/transaction/ProtocolTransaction.js +0 -18
  405. package/dist/prover/block/BlockScopedModule.d.ts +0 -3
  406. package/dist/prover/block/BlockScopedModule.d.ts.map +0 -1
  407. package/dist/prover/block/BlockScopedModule.js +0 -6
  408. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
  409. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
  410. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +0 -7
  411. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +0 -1
  412. package/dist/src/model/Option.d.ts +0 -158
  413. package/dist/src/model/Option.d.ts.map +0 -1
  414. package/dist/src/model/Option.js +0 -53
  415. package/dist/src/model/Path.d.ts +0 -35
  416. package/dist/src/model/Path.d.ts.map +0 -1
  417. package/dist/src/model/Path.js +0 -51
  418. package/dist/src/model/StateTransition.d.ts +0 -201
  419. package/dist/src/model/StateTransition.d.ts.map +0 -1
  420. package/dist/src/model/StateTransition.js +0 -43
  421. package/dist/src/utils/PrefixedHashList.d.ts +0 -15
  422. package/dist/src/utils/PrefixedHashList.d.ts.map +0 -1
  423. package/dist/src/utils/PrefixedHashList.js +0 -28
  424. package/dist/src/utils/ProvableHashList.d.ts +0 -30
  425. package/dist/src/utils/ProvableHashList.d.ts.map +0 -1
  426. package/dist/src/utils/ProvableHashList.js +0 -43
  427. package/dist/utils/PrefixedHashList.d.ts +0 -14
  428. package/dist/utils/PrefixedHashList.d.ts.map +0 -1
  429. package/dist/utils/PrefixedHashList.js +0 -12
  430. package/dist/utils/Utils.d.ts +0 -17
  431. package/dist/utils/Utils.d.ts.map +0 -1
  432. package/dist/utils/Utils.js +0 -64
  433. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -25
  434. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
  435. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -77
  436. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts +0 -26
  437. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts.map +0 -1
  438. package/dist/utils/merkletree/MemoryMerkleTreeStorage.js +0 -79
  439. package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
  440. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
  441. package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
  442. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -130
  443. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  444. package/dist/utils/merkletree/RollupMerkleTree.js +0 -244
  445. package/src/model/Option.test.ts +0 -21
  446. package/src/model/transaction/ProtocolTransaction.ts +0 -25
  447. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -24
  448. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
  449. package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -106
  450. package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
  451. package/src/utils/merkletree/RollupMerkleTree.ts +0 -250
  452. package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
  453. package/tsconfig.test.json +0 -9
@@ -1,10 +1,13 @@
1
- import { ZkProgrammable, } from "@proto-kit/common";
2
- export class ProtocolModule extends ZkProgrammable {
3
- get appChain() {
4
- return this.protocol?.dependencyContainer.resolve("AppChain");
1
+ import { ConfigurableModule, noop, } from "@proto-kit/common";
2
+ export class ProtocolModule extends ConfigurableModule {
3
+ get areProofsEnabled() {
4
+ return this.parent?.getAreProofsEnabled();
5
5
  }
6
- constructor() {
7
- super();
8
- this.config = {};
6
+ create(childContainerProvider) {
7
+ noop();
8
+ }
9
+ async start() {
10
+ noop();
9
11
  }
10
12
  }
13
+ //# sourceMappingURL=ProtocolModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolModule.js","sourceRoot":"","sources":["../../src/protocol/ProtocolModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAElB,IAAI,GACL,MAAM,mBAAmB,CAAC;AAI3B,MAAM,OAAgB,cAEpB,SAAQ,kBAA0B;IAGlC,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,sBAA8C;QAC1D,IAAI,EAAE,CAAC;IACT,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,EAAE,CAAC;IACT,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { Field } from "o1js";
2
+ import { NoConfig } from "@proto-kit/common";
3
+ import { NetworkState } from "../model/network/NetworkState";
4
+ import { MethodPublicOutput } from "../model/MethodPublicOutput";
5
+ import { BlockProverTransactionArguments } from "../prover/block/BlockProvable";
6
+ import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
7
+ import { AfterTransactionHookArguments, BeforeTransactionHookArguments, ProvableHookBlockState, toProvableHookBlockState } from "./ProvableTransactionHook";
8
+ export interface BeforeBlockHookArguments extends ProvableHookBlockState {
9
+ }
10
+ export interface AfterBlockHookArguments extends BeforeBlockHookArguments {
11
+ stateRoot: Field;
12
+ }
13
+ export declare function toBeforeTransactionHookArgument(executionData: Omit<BlockProverTransactionArguments, "verificationKeyAttestation">, networkState: NetworkState, state: Parameters<typeof toProvableHookBlockState>[0]): BeforeTransactionHookArguments;
14
+ export declare function toAfterTransactionHookArgument(executionData: Omit<BlockProverTransactionArguments, "verificationKeyAttestation">, networkState: NetworkState, state: Parameters<typeof toProvableHookBlockState>[0], runtimeResult: MethodPublicOutput): AfterTransactionHookArguments;
15
+ export declare abstract class ProvableBlockHook<Config = NoConfig> extends TransitioningProtocolModule<Config> {
16
+ abstract beforeBlock(networkState: NetworkState, state: BeforeBlockHookArguments): Promise<NetworkState>;
17
+ abstract afterBlock(networkState: NetworkState, state: AfterBlockHookArguments): Promise<NetworkState>;
18
+ }
19
+ //# sourceMappingURL=ProvableBlockHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableBlockHook.d.ts","sourceRoot":"","sources":["../../src/protocol/ProvableBlockHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;CAAG;AAE3E,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE,SAAS,EAAE,KAAK,CAAC;CAClB;AAED,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,IAAI,CACjB,+BAA+B,EAC/B,4BAA4B,CAC7B,EACD,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,GACpD,8BAA8B,CAShC;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,IAAI,CACjB,+BAA+B,EAC/B,4BAA4B,CAC7B,EACD,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,EACrD,aAAa,EAAE,kBAAkB,GAChC,6BAA6B,CAK/B;AAGD,8BAAsB,iBAAiB,CACrC,MAAM,GAAG,QAAQ,CACjB,SAAQ,2BAA2B,CAAC,MAAM,CAAC;aAC3B,WAAW,CACzB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,YAAY,CAAC;aAER,UAAU,CACxB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,YAAY,CAAC;CACzB"}
@@ -0,0 +1,21 @@
1
+ import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
2
+ import { toProvableHookBlockState, } from "./ProvableTransactionHook";
3
+ export function toBeforeTransactionHookArgument(executionData, networkState, state) {
4
+ const { transaction, signature } = executionData;
5
+ return {
6
+ networkState,
7
+ transaction,
8
+ signature,
9
+ prover: toProvableHookBlockState(state),
10
+ };
11
+ }
12
+ export function toAfterTransactionHookArgument(executionData, networkState, state, runtimeResult) {
13
+ return {
14
+ ...toBeforeTransactionHookArgument(executionData, networkState, state),
15
+ runtimeResult,
16
+ };
17
+ }
18
+ // Purpose is to build transition from -> to network state
19
+ export class ProvableBlockHook extends TransitioningProtocolModule {
20
+ }
21
+ //# sourceMappingURL=ProvableBlockHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableBlockHook.js","sourceRoot":"","sources":["../../src/protocol/ProvableBlockHook.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAIL,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAQnC,MAAM,UAAU,+BAA+B,CAC7C,aAGC,EACD,YAA0B,EAC1B,KAAqD;IAErD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;IAEjD,OAAO;QACL,YAAY;QACZ,WAAW;QACX,SAAS;QACT,MAAM,EAAE,wBAAwB,CAAC,KAAK,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,aAGC,EACD,YAA0B,EAC1B,KAAqD,EACrD,aAAiC;IAEjC,OAAO;QACL,GAAG,+BAA+B,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC;QACtE,aAAa;KACd,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,MAAM,OAAgB,iBAEpB,SAAQ,2BAAmC;CAU5C"}
@@ -0,0 +1,34 @@
1
+ import { NoConfig } from "@proto-kit/common";
2
+ import { Signature } from "o1js";
3
+ import { RuntimeTransaction } from "../model/transaction/RuntimeTransaction";
4
+ import { NetworkState } from "../model/network/NetworkState";
5
+ import { MethodPublicOutput } from "../model/MethodPublicOutput";
6
+ import type { BlockProverState, BlockProverStateCommitments } from "../prover/block/BlockProvable";
7
+ import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
8
+ export type ProvableHookBlockState = Pick<BlockProverStateCommitments, "transactionsHash" | "eternalTransactionsHash" | "incomingMessagesHash" | "blockHashRoot">;
9
+ export declare function toProvableHookBlockState(state: Pick<BlockProverState, "transactionList" | "eternalTransactionsList" | "incomingMessages" | "blockHashRoot">): {
10
+ transactionsHash: import("o1js/dist/node/lib/provable/field").Field;
11
+ eternalTransactionsHash: import("o1js/dist/node/lib/provable/field").Field;
12
+ incomingMessagesHash: import("o1js/dist/node/lib/provable/field").Field;
13
+ blockHashRoot: import("o1js/dist/node/lib/provable/field").Field;
14
+ };
15
+ /**
16
+ * This type is a reduced set of the runtime method's public output.
17
+ * It omits internal commitments to data that is already present as data in
18
+ * the hook arguments
19
+ */
20
+ export type TransactionResult = Omit<MethodPublicOutput, "networkStateHash" | "transactionHash">;
21
+ export interface BeforeTransactionHookArguments {
22
+ transaction: RuntimeTransaction;
23
+ signature: Signature;
24
+ networkState: NetworkState;
25
+ prover: ProvableHookBlockState;
26
+ }
27
+ export interface AfterTransactionHookArguments extends BeforeTransactionHookArguments {
28
+ runtimeResult: TransactionResult;
29
+ }
30
+ export declare abstract class ProvableTransactionHook<Config = NoConfig> extends TransitioningProtocolModule<Config> {
31
+ abstract beforeTransaction(executionData: BeforeTransactionHookArguments): Promise<void>;
32
+ abstract afterTransaction(execution: AfterTransactionHookArguments): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=ProvableTransactionHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableTransactionHook.d.ts","sourceRoot":"","sources":["../../src/protocol/ProvableTransactionHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,2BAA2B,EACzB,kBAAkB,GAClB,yBAAyB,GACzB,sBAAsB,GACtB,eAAe,CAClB,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,IAAI,CACT,gBAAgB,EACd,iBAAiB,GACjB,yBAAyB,GACzB,kBAAkB,GAClB,eAAe,CAClB;;;;;EAcF;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,kBAAkB,EAClB,kBAAkB,GAAG,iBAAiB,CACvC,CAAC;AAEF,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,kBAAkB,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAED,MAAM,WAAW,6BACf,SAAQ,8BAA8B;IACtC,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAED,8BAAsB,uBAAuB,CAC3C,MAAM,GAAG,QAAQ,CACjB,SAAQ,2BAA2B,CAAC,MAAM,CAAC;aAC3B,iBAAiB,CAC/B,aAAa,EAAE,8BAA8B,GAC5C,OAAO,CAAC,IAAI,CAAC;aAEA,gBAAgB,CAC9B,SAAS,EAAE,6BAA6B,GACvC,OAAO,CAAC,IAAI,CAAC;CACjB"}
@@ -0,0 +1,13 @@
1
+ import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
2
+ export function toProvableHookBlockState(state) {
3
+ const { transactionList, eternalTransactionsList, incomingMessages, blockHashRoot, } = state;
4
+ return {
5
+ transactionsHash: transactionList.commitment,
6
+ eternalTransactionsHash: eternalTransactionsList.commitment,
7
+ incomingMessagesHash: incomingMessages.commitment,
8
+ blockHashRoot,
9
+ };
10
+ }
11
+ export class ProvableTransactionHook extends TransitioningProtocolModule {
12
+ }
13
+ //# sourceMappingURL=ProvableTransactionHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableTransactionHook.js","sourceRoot":"","sources":["../../src/protocol/ProvableTransactionHook.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAU5E,MAAM,UAAU,wBAAwB,CACtC,KAMC;IAED,MAAM,EACJ,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,GACd,GAAG,KAAK,CAAC;IACV,OAAO;QACL,gBAAgB,EAAE,eAAe,CAAC,UAAU;QAC5C,uBAAuB,EAAE,uBAAuB,CAAC,UAAU;QAC3D,oBAAoB,EAAE,gBAAgB,CAAC,UAAU;QACjD,aAAa;KACd,CAAC;AACJ,CAAC;AAwBD,MAAM,OAAgB,uBAEpB,SAAQ,2BAAmC;CAQ5C"}
@@ -0,0 +1,10 @@
1
+ import { ProtocolModule } from "./ProtocolModule";
2
+ /**
3
+ * TransitioningProtocolModule is a base interface that allows inheriting
4
+ * classes to use State and StateMap since it requires the implementation
5
+ * of a `name: string` property, which those classes need to function.
6
+ */
7
+ export declare abstract class TransitioningProtocolModule<Config> extends ProtocolModule<Config> {
8
+ name?: string;
9
+ }
10
+ //# sourceMappingURL=TransitioningProtocolModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransitioningProtocolModule.d.ts","sourceRoot":"","sources":["../../src/protocol/TransitioningProtocolModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,8BAAsB,2BAA2B,CAC/C,MAAM,CACN,SAAQ,cAAc,CAAC,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,9 @@
1
+ import { ProtocolModule } from "./ProtocolModule";
2
+ /**
3
+ * TransitioningProtocolModule is a base interface that allows inheriting
4
+ * classes to use State and StateMap since it requires the implementation
5
+ * of a `name: string` property, which those classes need to function.
6
+ */
7
+ export class TransitioningProtocolModule extends ProtocolModule {
8
+ }
9
+ //# sourceMappingURL=TransitioningProtocolModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransitioningProtocolModule.js","sourceRoot":"","sources":["../../src/protocol/TransitioningProtocolModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,MAAM,OAAgB,2BAEpB,SAAQ,cAAsB;CAE/B"}
@@ -0,0 +1,18 @@
1
+ import { Bool, Field } from "o1js";
2
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
3
+ import { NonMethods } from "../../utils/utils";
4
+ import { AppliedStateTransitionBatch } from "../../model/AppliedStateTransitionBatch";
5
+ /**
6
+ * A HashList for AppliedSTBatches, that in addition to the default
7
+ * functionality, checks that the pushed batches are not empty.
8
+ * If they are, the pushing is skipped.
9
+ * Note that if the batch has applied: false, the batch still has to be appended
10
+ * if it has STs inside
11
+ */
12
+ export declare class AppliedBatchHashList extends DefaultProvableHashList<NonMethods<AppliedStateTransitionBatch>> {
13
+ constructor(commitment?: Field);
14
+ private isNotEmpty;
15
+ push(value: AppliedStateTransitionBatch): this;
16
+ pushIf(value: AppliedStateTransitionBatch, condition: Bool): this;
17
+ }
18
+ //# sourceMappingURL=AppliedBatchHashList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppliedBatchHashList.d.ts","sourceRoot":"","sources":["../../../src/prover/accumulators/AppliedBatchHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAEtF;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,uBAAuB,CAC/D,UAAU,CAAC,2BAA2B,CAAC,CACxC;gBACoB,UAAU,GAAE,KAAgB;IAI/C,OAAO,CAAC,UAAU;IAIX,IAAI,CAAC,KAAK,EAAE,2BAA2B;IAIvC,MAAM,CAAC,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,IAAI;CAGlE"}
@@ -0,0 +1,25 @@
1
+ import { Field } from "o1js";
2
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
3
+ import { AppliedStateTransitionBatch } from "../../model/AppliedStateTransitionBatch";
4
+ /**
5
+ * A HashList for AppliedSTBatches, that in addition to the default
6
+ * functionality, checks that the pushed batches are not empty.
7
+ * If they are, the pushing is skipped.
8
+ * Note that if the batch has applied: false, the batch still has to be appended
9
+ * if it has STs inside
10
+ */
11
+ export class AppliedBatchHashList extends DefaultProvableHashList {
12
+ constructor(commitment = Field(0)) {
13
+ super(AppliedStateTransitionBatch, commitment);
14
+ }
15
+ isNotEmpty(value) {
16
+ return value.batchHash.equals(Field(0)).not();
17
+ }
18
+ push(value) {
19
+ return super.pushIf(value, this.isNotEmpty(value));
20
+ }
21
+ pushIf(value, condition) {
22
+ return super.pushIf(value, condition.and(this.isNotEmpty(value)));
23
+ }
24
+ }
25
+ //# sourceMappingURL=AppliedBatchHashList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppliedBatchHashList.js","sourceRoot":"","sources":["../../../src/prover/accumulators/AppliedBatchHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,OAAO,oBAAqB,SAAQ,uBAEzC;IACC,YAAmB,aAAoB,KAAK,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAEO,UAAU,CAAC,KAAkC;QACnD,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAChD,CAAC;IAEM,IAAI,CAAC,KAAkC;QAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAEM,MAAM,CAAC,KAAkC,EAAE,SAAe;QAC/D,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { ProvableStateTransition, StateTransition } from "../../model/StateTransition";
2
+ import { ProvableReductionHashList } from "../../utils/ProvableReductionHashList";
3
+ export declare class StateTransitionReductionList extends ProvableReductionHashList<ProvableStateTransition> {
4
+ push(value: ProvableStateTransition): this;
5
+ pushWithMetadata(value: ProvableStateTransition): {
6
+ popLast: import("o1js/dist/node/lib/provable/bool").Bool;
7
+ value: ProvableStateTransition;
8
+ };
9
+ toField(): import("o1js/dist/node/lib/provable/field").Field;
10
+ }
11
+ export declare function reduceStateTransitions(transitions: StateTransition<unknown>[]): StateTransition<unknown>[];
12
+ //# sourceMappingURL=StateTransitionReductionList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransitionReductionList.d.ts","sourceRoot":"","sources":["../../../src/prover/accumulators/StateTransitionReductionList.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,uBAAuB,EACvB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,qBAAa,4BAA6B,SAAQ,yBAAyB,CAAC,uBAAuB,CAAC;IAC3F,IAAI,CAAC,KAAK,EAAE,uBAAuB;IAMnC,gBAAgB,CAAC,KAAK,EAAE,uBAAuB;;;;IA0C/C,OAAO;CAGf;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GACtC,eAAe,CAAC,OAAO,CAAC,EAAE,CA0B5B"}
@@ -0,0 +1,64 @@
1
+ import { Provable } from "o1js";
2
+ import { ProvableOption } from "../../model/Option";
3
+ import { ProvableStateTransition, StateTransition, } from "../../model/StateTransition";
4
+ import { ProvableReductionHashList } from "../../utils/ProvableReductionHashList";
5
+ export class StateTransitionReductionList extends ProvableReductionHashList {
6
+ push(value) {
7
+ this.pushWithMetadata(value);
8
+ return this;
9
+ }
10
+ pushWithMetadata(value) {
11
+ return this.pushAndReduce(value, (previous) => {
12
+ const pathsMatch = previous.path.equals(value.path);
13
+ // Take the previous.from if the paths match, otherwise leave ST as is
14
+ const from = Provable.if(pathsMatch, ProvableOption, previous.from, value.from);
15
+ // In case we have a layout like
16
+ // { from: 5, to: 10 }, { from: 10, to: none }
17
+ // we just take the first and discard the second
18
+ const to = Provable.if(value.to.isSome.or(pathsMatch.not()), ProvableOption, value.to, previous.to);
19
+ const transition = new ProvableStateTransition({
20
+ path: value.path,
21
+ from: new ProvableOption(from),
22
+ to: new ProvableOption(to),
23
+ });
24
+ // Assert that connection is correct
25
+ previous.to.value
26
+ .equals(value.from.value)
27
+ .or(previous.to.isSome
28
+ .not()
29
+ .and(previous.from.value.equals(value.from.value)))
30
+ .or(pathsMatch.not())
31
+ .assertTrue();
32
+ return [transition, pathsMatch];
33
+ });
34
+ }
35
+ toField() {
36
+ return this.commitment;
37
+ }
38
+ }
39
+ export function reduceStateTransitions(transitions) {
40
+ const reduced = [];
41
+ transitions.forEach((st) => {
42
+ if (reduced.length === 0) {
43
+ reduced.push(st);
44
+ return;
45
+ }
46
+ const last = reduced.at(-1);
47
+ if (last.path.equals(st.path).toBoolean()) {
48
+ if (st.toValue.isSome.toBoolean()) {
49
+ reduced.pop();
50
+ reduced.push(new StateTransition(st.path, last.fromValue, st.toValue));
51
+ }
52
+ else {
53
+ // Do nothing, because we discard that ST
54
+ // { from: 5, to: 10 }, { from: 10, to: none }
55
+ // cancel the 2nd
56
+ }
57
+ }
58
+ else {
59
+ reduced.push(st);
60
+ }
61
+ });
62
+ return reduced;
63
+ }
64
+ //# sourceMappingURL=StateTransitionReductionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransitionReductionList.js","sourceRoot":"","sources":["../../../src/prover/accumulators/StateTransitionReductionList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,MAAM,OAAO,4BAA6B,SAAQ,yBAAkD;IAC3F,IAAI,CAAC,KAA8B;QACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,gBAAgB,CAAC,KAA8B;QACpD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,QAAiC,EAAE,EAAE;YACrE,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEpD,sEAAsE;YACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CACtB,UAAU,EACV,cAAc,EACd,QAAQ,CAAC,IAAI,EACb,KAAK,CAAC,IAAI,CACX,CAAC;YACF,gCAAgC;YAChC,8CAA8C;YAC9C,gDAAgD;YAChD,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CACpB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EACpC,cAAc,EACd,KAAK,CAAC,EAAE,EACR,QAAQ,CAAC,EAAE,CACZ,CAAC;YAEF,MAAM,UAAU,GAAG,IAAI,uBAAuB,CAAC;gBAC7C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC;gBAC9B,EAAE,EAAE,IAAI,cAAc,CAAC,EAAE,CAAC;aAC3B,CAAC,CAAC;YAEH,oCAAoC;YACpC,QAAQ,CAAC,EAAE,CAAC,KAAK;iBACd,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;iBACxB,EAAE,CACD,QAAQ,CAAC,EAAE,CAAC,MAAM;iBACf,GAAG,EAAE;iBACL,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrD;iBACA,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;iBACpB,UAAU,EAAE,CAAC;YAEhB,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CACpC,WAAuC;IAEvC,MAAM,OAAO,GAA+B,EAAE,CAAC;IAE/C,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACzB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO;SACR;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YACzC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;gBACjC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CACV,IAAI,eAAe,CAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,CAClE,CAAC;aACH;iBAAM;gBACL,yCAAyC;gBACzC,8CAA8C;gBAC9C,iBAAiB;aAClB;SACF;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAClB;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Field } from "o1js";
2
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
3
+ export declare class TransactionHashList extends DefaultProvableHashList<Field> {
4
+ constructor(commitment?: Field);
5
+ }
6
+ //# sourceMappingURL=TransactionHashList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionHashList.d.ts","sourceRoot":"","sources":["../../../src/prover/accumulators/TransactionHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,qBAAa,mBAAoB,SAAQ,uBAAuB,CAAC,KAAK,CAAC;gBAClD,UAAU,GAAE,KAAgB;CAGhD"}
@@ -0,0 +1,8 @@
1
+ import { Field } from "o1js";
2
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
3
+ export class TransactionHashList extends DefaultProvableHashList {
4
+ constructor(commitment = Field(0)) {
5
+ super(Field, commitment);
6
+ }
7
+ }
8
+ //# sourceMappingURL=TransactionHashList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionHashList.js","sourceRoot":"","sources":["../../../src/prover/accumulators/TransactionHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,OAAO,mBAAoB,SAAQ,uBAA8B;IACrE,YAAmB,aAAoB,KAAK,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,137 @@
1
+ import { Bool, Field } from "o1js";
2
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
3
+ declare const WitnessedRoot_base: (new (value: {
4
+ appliedBatchListState: import("o1js/dist/node/lib/provable/field").Field;
5
+ root: import("o1js/dist/node/lib/provable/field").Field;
6
+ }) => {
7
+ appliedBatchListState: import("o1js/dist/node/lib/provable/field").Field;
8
+ root: import("o1js/dist/node/lib/provable/field").Field;
9
+ }) & {
10
+ _isStruct: true;
11
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
12
+ appliedBatchListState: import("o1js/dist/node/lib/provable/field").Field;
13
+ root: import("o1js/dist/node/lib/provable/field").Field;
14
+ }, {
15
+ appliedBatchListState: bigint;
16
+ root: bigint;
17
+ }>, "fromFields"> & {
18
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
19
+ appliedBatchListState: import("o1js/dist/node/lib/provable/field").Field;
20
+ root: import("o1js/dist/node/lib/provable/field").Field;
21
+ };
22
+ } & {
23
+ fromValue: (value: {
24
+ appliedBatchListState: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
25
+ root: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
26
+ }) => {
27
+ appliedBatchListState: import("o1js/dist/node/lib/provable/field").Field;
28
+ root: import("o1js/dist/node/lib/provable/field").Field;
29
+ };
30
+ toInput: (x: {
31
+ appliedBatchListState: import("o1js/dist/node/lib/provable/field").Field;
32
+ root: import("o1js/dist/node/lib/provable/field").Field;
33
+ }) => {
34
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
35
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
36
+ };
37
+ toJSON: (x: {
38
+ appliedBatchListState: import("o1js/dist/node/lib/provable/field").Field;
39
+ root: import("o1js/dist/node/lib/provable/field").Field;
40
+ }) => {
41
+ appliedBatchListState: string;
42
+ root: string;
43
+ };
44
+ fromJSON: (x: {
45
+ appliedBatchListState: string;
46
+ root: string;
47
+ }) => {
48
+ appliedBatchListState: import("o1js/dist/node/lib/provable/field").Field;
49
+ root: import("o1js/dist/node/lib/provable/field").Field;
50
+ };
51
+ empty: () => {
52
+ appliedBatchListState: import("o1js/dist/node/lib/provable/field").Field;
53
+ root: import("o1js/dist/node/lib/provable/field").Field;
54
+ };
55
+ };
56
+ /**
57
+ * Link between a certain applied batch stack and a given root hash that the
58
+ * stack has to evaluate to at that given point in time
59
+ */
60
+ export declare class WitnessedRoot extends WitnessedRoot_base {
61
+ }
62
+ declare const WitnessedRootWitness_base: (new (value: {
63
+ witnessedRoot: import("o1js/dist/node/lib/provable/field").Field;
64
+ preimage: import("o1js/dist/node/lib/provable/field").Field;
65
+ }) => {
66
+ witnessedRoot: import("o1js/dist/node/lib/provable/field").Field;
67
+ preimage: import("o1js/dist/node/lib/provable/field").Field;
68
+ }) & {
69
+ _isStruct: true;
70
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
71
+ witnessedRoot: import("o1js/dist/node/lib/provable/field").Field;
72
+ preimage: import("o1js/dist/node/lib/provable/field").Field;
73
+ }, {
74
+ witnessedRoot: bigint;
75
+ preimage: bigint;
76
+ }>, "fromFields"> & {
77
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
78
+ witnessedRoot: import("o1js/dist/node/lib/provable/field").Field;
79
+ preimage: import("o1js/dist/node/lib/provable/field").Field;
80
+ };
81
+ } & {
82
+ fromValue: (value: {
83
+ witnessedRoot: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
84
+ preimage: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
85
+ }) => {
86
+ witnessedRoot: import("o1js/dist/node/lib/provable/field").Field;
87
+ preimage: import("o1js/dist/node/lib/provable/field").Field;
88
+ };
89
+ toInput: (x: {
90
+ witnessedRoot: import("o1js/dist/node/lib/provable/field").Field;
91
+ preimage: import("o1js/dist/node/lib/provable/field").Field;
92
+ }) => {
93
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
94
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
95
+ };
96
+ toJSON: (x: {
97
+ witnessedRoot: import("o1js/dist/node/lib/provable/field").Field;
98
+ preimage: import("o1js/dist/node/lib/provable/field").Field;
99
+ }) => {
100
+ witnessedRoot: string;
101
+ preimage: string;
102
+ };
103
+ fromJSON: (x: {
104
+ witnessedRoot: string;
105
+ preimage: string;
106
+ }) => {
107
+ witnessedRoot: import("o1js/dist/node/lib/provable/field").Field;
108
+ preimage: import("o1js/dist/node/lib/provable/field").Field;
109
+ };
110
+ empty: () => {
111
+ witnessedRoot: import("o1js/dist/node/lib/provable/field").Field;
112
+ preimage: import("o1js/dist/node/lib/provable/field").Field;
113
+ };
114
+ };
115
+ export declare class WitnessedRootWitness extends WitnessedRootWitness_base {
116
+ }
117
+ /**
118
+ * Accumulator as of section "Intermediary state roots" of the STProver v2 spec
119
+ */
120
+ export declare class WitnessedRootHashList extends DefaultProvableHashList<WitnessedRoot> {
121
+ constructor(commitment?: Field);
122
+ /**
123
+ * To be used by the BlockProver or for tracing
124
+ *
125
+ * The main purpose of this method compared to the simple push methods
126
+ * is for deduplicating witnessed roots. We need to do this because the
127
+ * STProver can only witness once per batch, therefore if multiple witness
128
+ * points fall back to the same ST (because any batches in between were empty),
129
+ * this has to be detected and compensated for.
130
+ * This function does this using the preimage of the current list state.
131
+ *
132
+ * @param preimage The preimage to the **current** state of the list.
133
+ */
134
+ witnessRoot(witnessedRoot: WitnessedRoot, preimage: Field, condition: Bool): this;
135
+ }
136
+ export {};
137
+ //# sourceMappingURL=WitnessedRootHashList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WitnessedRootHashList.d.ts","sourceRoot":"","sources":["../../../src/prover/accumulators/WitnessedRootHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAU,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvE;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAGjC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,oBAAqB,SAAQ,yBAGxC;CAAG;AAEL;;GAEG;AAEH,qBAAa,qBAAsB,SAAQ,uBAAuB,CAAC,aAAa,CAAC;gBAC5D,UAAU,GAAE,KAAgB;IAI/C;;;;;;;;;;;OAWG;IACI,WAAW,CAChB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,KAAK,EACf,SAAS,EAAE,IAAI;CAkBlB"}
@@ -0,0 +1,50 @@
1
+ import { Field, Struct } from "o1js";
2
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
3
+ /**
4
+ * Link between a certain applied batch stack and a given root hash that the
5
+ * stack has to evaluate to at that given point in time
6
+ */
7
+ export class WitnessedRoot extends Struct({
8
+ appliedBatchListState: Field,
9
+ root: Field,
10
+ }) {
11
+ }
12
+ export class WitnessedRootWitness extends Struct({
13
+ witnessedRoot: Field,
14
+ preimage: Field,
15
+ }) {
16
+ }
17
+ /**
18
+ * Accumulator as of section "Intermediary state roots" of the STProver v2 spec
19
+ */
20
+ export class WitnessedRootHashList extends DefaultProvableHashList {
21
+ constructor(commitment = Field(0)) {
22
+ super(WitnessedRoot, commitment);
23
+ }
24
+ /**
25
+ * To be used by the BlockProver or for tracing
26
+ *
27
+ * The main purpose of this method compared to the simple push methods
28
+ * is for deduplicating witnessed roots. We need to do this because the
29
+ * STProver can only witness once per batch, therefore if multiple witness
30
+ * points fall back to the same ST (because any batches in between were empty),
31
+ * this has to be detected and compensated for.
32
+ * This function does this using the preimage of the current list state.
33
+ *
34
+ * @param preimage The preimage to the **current** state of the list.
35
+ */
36
+ witnessRoot(witnessedRoot, preimage, condition) {
37
+ // Note, we don't have to validate the preimage here because of the following
38
+ // 1. If the sequencer doesn't provide the correct witness, the BlockProver's
39
+ // equality check will fail
40
+ // 2. If the list is empty, no preimage exists, therefore condition (2) doesn't
41
+ // apply, which is the same outcome when the sequencer provides an arbitrary witness
42
+ const preimageCheckList = new WitnessedRootHashList(preimage).push(witnessedRoot);
43
+ // Conditions:
44
+ // (1) don't append if witnessedRoot == finalizedRoot -> Already covered in BlockProver
45
+ // (2) don't append if preimage.push({ finalizedRoot, pendingSTBatchesHash }) == this.commitment
46
+ const skipPush = preimageCheckList.commitment.equals(this.commitment);
47
+ return this.pushIf(witnessedRoot, condition.and(skipPush.not()));
48
+ }
49
+ }
50
+ //# sourceMappingURL=WitnessedRootHashList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WitnessedRootHashList.js","sourceRoot":"","sources":["../../../src/prover/accumulators/WitnessedRootHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC;IACxC,qBAAqB,EAAE,KAAK;IAC5B,IAAI,EAAE,KAAK;CACZ,CAAC;CAAG;AAEL,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC;IAC/C,aAAa,EAAE,KAAK;IACpB,QAAQ,EAAE,KAAK;CAChB,CAAC;CAAG;AAEL;;GAEG;AAEH,MAAM,OAAO,qBAAsB,SAAQ,uBAAsC;IAC/E,YAAmB,aAAoB,KAAK,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;OAWG;IACI,WAAW,CAChB,aAA4B,EAC5B,QAAe,EACf,SAAe;QAEf,6EAA6E;QAC7E,6EAA6E;QAC7E,8BAA8B;QAC9B,+EAA+E;QAC/E,uFAAuF;QACvF,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAChE,aAAa,CACd,CAAC;QAEF,cAAc;QACd,wFAAwF;QACxF,gGAAgG;QAChG,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;CACF"}