@proto-kit/protocol 0.1.1-develop.165 → 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 +11 -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
@@ -0,0 +1,12 @@
1
+ import { ProtocolModule } from "./ProtocolModule";
2
+
3
+ /**
4
+ * TransitioningProtocolModule is a base interface that allows inheriting
5
+ * classes to use State and StateMap since it requires the implementation
6
+ * of a `name: string` property, which those classes need to function.
7
+ */
8
+ export abstract class TransitioningProtocolModule<
9
+ Config,
10
+ > extends ProtocolModule<Config> {
11
+ public name?: string;
12
+ }
@@ -0,0 +1,32 @@
1
+ import { Bool, Field } from "o1js";
2
+
3
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
4
+ import { NonMethods } from "../../utils/utils";
5
+ import { AppliedStateTransitionBatch } from "../../model/AppliedStateTransitionBatch";
6
+
7
+ /**
8
+ * A HashList for AppliedSTBatches, that in addition to the default
9
+ * functionality, checks that the pushed batches are not empty.
10
+ * If they are, the pushing is skipped.
11
+ * Note that if the batch has applied: false, the batch still has to be appended
12
+ * if it has STs inside
13
+ */
14
+ export class AppliedBatchHashList extends DefaultProvableHashList<
15
+ NonMethods<AppliedStateTransitionBatch>
16
+ > {
17
+ public constructor(commitment: Field = Field(0)) {
18
+ super(AppliedStateTransitionBatch, commitment);
19
+ }
20
+
21
+ private isNotEmpty(value: AppliedStateTransitionBatch): Bool {
22
+ return value.batchHash.equals(Field(0)).not();
23
+ }
24
+
25
+ public push(value: AppliedStateTransitionBatch) {
26
+ return super.pushIf(value, this.isNotEmpty(value));
27
+ }
28
+
29
+ public pushIf(value: AppliedStateTransitionBatch, condition: Bool) {
30
+ return super.pushIf(value, condition.and(this.isNotEmpty(value)));
31
+ }
32
+ }
@@ -0,0 +1,92 @@
1
+ import { Provable } from "o1js";
2
+
3
+ import { ProvableOption } from "../../model/Option";
4
+ import {
5
+ ProvableStateTransition,
6
+ StateTransition,
7
+ } from "../../model/StateTransition";
8
+ import { ProvableReductionHashList } from "../../utils/ProvableReductionHashList";
9
+
10
+ export class StateTransitionReductionList extends ProvableReductionHashList<ProvableStateTransition> {
11
+ public push(value: ProvableStateTransition) {
12
+ this.pushWithMetadata(value);
13
+
14
+ return this;
15
+ }
16
+
17
+ public pushWithMetadata(value: ProvableStateTransition) {
18
+ return this.pushAndReduce(value, (previous: ProvableStateTransition) => {
19
+ const pathsMatch = previous.path.equals(value.path);
20
+
21
+ // Take the previous.from if the paths match, otherwise leave ST as is
22
+ const from = Provable.if(
23
+ pathsMatch,
24
+ ProvableOption,
25
+ previous.from,
26
+ value.from
27
+ );
28
+ // In case we have a layout like
29
+ // { from: 5, to: 10 }, { from: 10, to: none }
30
+ // we just take the first and discard the second
31
+ const to = Provable.if(
32
+ value.to.isSome.or(pathsMatch.not()),
33
+ ProvableOption,
34
+ value.to,
35
+ previous.to
36
+ );
37
+
38
+ const transition = new ProvableStateTransition({
39
+ path: value.path,
40
+ from: new ProvableOption(from),
41
+ to: new ProvableOption(to),
42
+ });
43
+
44
+ // Assert that connection is correct
45
+ previous.to.value
46
+ .equals(value.from.value)
47
+ .or(
48
+ previous.to.isSome
49
+ .not()
50
+ .and(previous.from.value.equals(value.from.value))
51
+ )
52
+ .or(pathsMatch.not())
53
+ .assertTrue();
54
+
55
+ return [transition, pathsMatch];
56
+ });
57
+ }
58
+
59
+ public toField() {
60
+ return this.commitment;
61
+ }
62
+ }
63
+
64
+ export function reduceStateTransitions(
65
+ transitions: StateTransition<unknown>[]
66
+ ): StateTransition<unknown>[] {
67
+ const reduced: StateTransition<unknown>[] = [];
68
+
69
+ transitions.forEach((st) => {
70
+ if (reduced.length === 0) {
71
+ reduced.push(st);
72
+ return;
73
+ }
74
+
75
+ const last = reduced.at(-1)!;
76
+ if (last.path.equals(st.path).toBoolean()) {
77
+ if (st.toValue.isSome.toBoolean()) {
78
+ reduced.pop();
79
+ reduced.push(
80
+ new StateTransition<unknown>(st.path, last.fromValue, st.toValue)
81
+ );
82
+ } else {
83
+ // Do nothing, because we discard that ST
84
+ // { from: 5, to: 10 }, { from: 10, to: none }
85
+ // cancel the 2nd
86
+ }
87
+ } else {
88
+ reduced.push(st);
89
+ }
90
+ });
91
+ return reduced;
92
+ }
@@ -0,0 +1,9 @@
1
+ import { Field } from "o1js";
2
+
3
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
4
+
5
+ export class TransactionHashList extends DefaultProvableHashList<Field> {
6
+ public constructor(commitment: Field = Field(0)) {
7
+ super(Field, commitment);
8
+ }
9
+ }
@@ -0,0 +1,61 @@
1
+ import { Bool, Field, Struct } from "o1js";
2
+
3
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
4
+
5
+ /**
6
+ * Link between a certain applied batch stack and a given root hash that the
7
+ * stack has to evaluate to at that given point in time
8
+ */
9
+ export class WitnessedRoot extends Struct({
10
+ appliedBatchListState: Field,
11
+ root: Field,
12
+ }) {}
13
+
14
+ export class WitnessedRootWitness extends Struct({
15
+ witnessedRoot: Field,
16
+ preimage: Field,
17
+ }) {}
18
+
19
+ /**
20
+ * Accumulator as of section "Intermediary state roots" of the STProver v2 spec
21
+ */
22
+
23
+ export class WitnessedRootHashList extends DefaultProvableHashList<WitnessedRoot> {
24
+ public constructor(commitment: Field = Field(0)) {
25
+ super(WitnessedRoot, commitment);
26
+ }
27
+
28
+ /**
29
+ * To be used by the BlockProver or for tracing
30
+ *
31
+ * The main purpose of this method compared to the simple push methods
32
+ * is for deduplicating witnessed roots. We need to do this because the
33
+ * STProver can only witness once per batch, therefore if multiple witness
34
+ * points fall back to the same ST (because any batches in between were empty),
35
+ * this has to be detected and compensated for.
36
+ * This function does this using the preimage of the current list state.
37
+ *
38
+ * @param preimage The preimage to the **current** state of the list.
39
+ */
40
+ public witnessRoot(
41
+ witnessedRoot: WitnessedRoot,
42
+ preimage: Field,
43
+ condition: Bool
44
+ ) {
45
+ // Note, we don't have to validate the preimage here because of the following
46
+ // 1. If the sequencer doesn't provide the correct witness, the BlockProver's
47
+ // equality check will fail
48
+ // 2. If the list is empty, no preimage exists, therefore condition (2) doesn't
49
+ // apply, which is the same outcome when the sequencer provides an arbitrary witness
50
+ const preimageCheckList = new WitnessedRootHashList(preimage).push(
51
+ witnessedRoot
52
+ );
53
+
54
+ // Conditions:
55
+ // (1) don't append if witnessedRoot == finalizedRoot -> Already covered in BlockProver
56
+ // (2) don't append if preimage.push({ finalizedRoot, pendingSTBatchesHash }) == this.commitment
57
+ const skipPush = preimageCheckList.commitment.equals(this.commitment);
58
+
59
+ return this.pushIf(witnessedRoot, condition.and(skipPush.not()));
60
+ }
61
+ }
@@ -1,45 +1,218 @@
1
- import { Field, Proof, Struct, UInt64 } from "snarkyjs";
1
+ // eslint-disable-next-line max-classes-per-file
2
+ import {
3
+ Bool,
4
+ DynamicProof,
5
+ Field,
6
+ Proof,
7
+ Signature,
8
+ Struct,
9
+ Void,
10
+ } from "o1js";
11
+ import { WithZkProgrammable, CompilableModule } from "@proto-kit/common";
2
12
 
3
13
  import { StateTransitionProof } from "../statetransition/StateTransitionProvable";
4
14
  import { MethodPublicOutput } from "../../model/MethodPublicOutput";
5
- import { ZkProgrammable } from "@proto-kit/common";
6
- import { ProtocolTransaction } from "../../model/transaction/ProtocolTransaction";
15
+ import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
7
16
  import { NetworkState } from "../../model/network/NetworkState";
17
+ import { TransactionHashList } from "../accumulators/TransactionHashList";
18
+ import { MinaActionsHashList } from "../../utils/MinaPrefixedProvableHashList";
19
+ import { AppliedBatchHashList } from "../accumulators/AppliedBatchHashList";
20
+ import {
21
+ WitnessedRootHashList,
22
+ WitnessedRootWitness,
23
+ } from "../accumulators/WitnessedRootHashList";
8
24
 
9
- export class BlockProverPublicInput extends Struct({
25
+ import { BlockHashMerkleTreeWitness } from "./accummulators/BlockHashMerkleTree";
26
+ import { RuntimeVerificationKeyAttestation } from "./accummulators/RuntimeVerificationKeyTree";
27
+
28
+ // Should be equal to BlockProver.PublicInput
29
+ export interface BlockProverState {
30
+ /**
31
+ * The current state root of the block prover
32
+ */
33
+ stateRoot: Field;
34
+
35
+ /**
36
+ * The current commitment of the transaction-list which
37
+ * will at the end equal the bundle hash
38
+ */
39
+ transactionList: TransactionHashList;
40
+
41
+ /**
42
+ * The network state which gives access to values such as blockHeight
43
+ * This value is the same for the whole batch (L2 block)
44
+ */
45
+ networkState: NetworkState;
46
+
47
+ /**
48
+ * The root of the merkle tree encoding all block hashes,
49
+ * see `BlockHashMerkleTree`
50
+ */
51
+ blockHashRoot: Field;
52
+
53
+ /**
54
+ * A variant of the transactionsHash that is never reset.
55
+ * Thought for usage in the sequence state mempool.
56
+ * In comparison, transactionsHash restarts at 0 for every new block
57
+ */
58
+ eternalTransactionsList: TransactionHashList;
59
+
60
+ pendingSTBatches: AppliedBatchHashList;
61
+
62
+ incomingMessages: MinaActionsHashList;
63
+
64
+ witnessedRoots: WitnessedRootHashList;
65
+
66
+ blockNumber: Field;
67
+ }
68
+
69
+ // TODO Sort and organize public inputs and outputs
70
+ export class BlockProverStateCommitments extends Struct({
10
71
  transactionsHash: Field,
11
72
  stateRoot: Field,
73
+ // Commitment to the list of unprocessed (pending) batches of STs that need to be proven
74
+ pendingSTBatchesHash: Field,
75
+ witnessedRootsHash: Field,
12
76
  networkStateHash: Field,
13
- }) {}
77
+ blockHashRoot: Field,
78
+ eternalTransactionsHash: Field,
79
+ incomingMessagesHash: Field,
80
+ blockNumber: Field,
81
+ }) {
82
+ public static fromBlockProverState(
83
+ state: BlockProverState
84
+ ): BlockProverStateCommitments {
85
+ return {
86
+ networkStateHash: state.networkState.hash(),
87
+ stateRoot: state.stateRoot,
88
+ blockNumber: state.blockNumber,
89
+ blockHashRoot: state.blockHashRoot,
90
+ pendingSTBatchesHash: state.pendingSTBatches.commitment,
91
+ transactionsHash: state.transactionList.commitment,
92
+ eternalTransactionsHash: state.eternalTransactionsList.commitment,
93
+ incomingMessagesHash: state.incomingMessages.commitment,
94
+ witnessedRootsHash: state.witnessedRoots.commitment,
95
+ };
96
+ }
97
+
98
+ public static toBlockProverState(
99
+ publicInput: BlockProverStateCommitments,
100
+ networkState: NetworkState
101
+ ): BlockProverState {
102
+ publicInput.networkStateHash.assertEquals(
103
+ networkState.hash(),
104
+ "ExecutionData Networkstate doesn't equal public input hash"
105
+ );
106
+
107
+ return {
108
+ networkState,
109
+ stateRoot: publicInput.stateRoot,
110
+ blockHashRoot: publicInput.blockHashRoot,
111
+ transactionList: new TransactionHashList(publicInput.transactionsHash),
112
+ eternalTransactionsList: new TransactionHashList(
113
+ publicInput.eternalTransactionsHash
114
+ ),
115
+ incomingMessages: new MinaActionsHashList(
116
+ publicInput.incomingMessagesHash
117
+ ),
118
+ pendingSTBatches: new AppliedBatchHashList(
119
+ publicInput.pendingSTBatchesHash
120
+ ),
121
+ witnessedRoots: new WitnessedRootHashList(publicInput.witnessedRootsHash),
122
+ blockNumber: publicInput.blockNumber,
123
+ };
124
+ }
125
+ }
126
+
127
+ export class BlockProverPublicInput extends BlockProverStateCommitments {}
14
128
 
15
129
  export class BlockProverPublicOutput extends Struct({
16
130
  transactionsHash: Field,
17
131
  stateRoot: Field,
18
- }) {}
132
+ pendingSTBatchesHash: Field,
133
+ witnessedRootsHash: Field,
134
+ networkStateHash: Field,
135
+ blockHashRoot: Field,
136
+ eternalTransactionsHash: Field,
137
+ incomingMessagesHash: Field,
138
+ closed: Bool,
139
+ blockNumber: Field,
140
+ }) {
141
+ public equals(input: BlockProverPublicInput, closed: Bool): Bool {
142
+ const output2 = BlockProverPublicOutput.toFields({
143
+ ...input,
144
+ closed,
145
+ });
146
+ const output1 = BlockProverPublicOutput.toFields(this);
147
+ return output1
148
+ .map((value1, index) => value1.equals(output2[index]))
149
+ .reduce((a, b) => a.and(b));
150
+ }
151
+ }
19
152
 
20
153
  export type BlockProverProof = Proof<
21
154
  BlockProverPublicInput,
22
155
  BlockProverPublicOutput
23
156
  >;
24
157
 
25
- export class BlockProverExecutionData extends Struct({
26
- transaction: ProtocolTransaction,
158
+ export class BlockProverTransactionArguments extends Struct({
159
+ transaction: RuntimeTransaction,
160
+ signature: Signature,
161
+ verificationKeyAttestation: RuntimeVerificationKeyAttestation,
162
+ }) {}
163
+
164
+ export class DynamicRuntimeProof extends DynamicProof<
165
+ Void,
166
+ MethodPublicOutput
167
+ > {
168
+ static publicInputType = Void;
169
+
170
+ static publicOutputType = MethodPublicOutput;
171
+
172
+ // TODO this won't be 0 for proofs-as-args
173
+ static maxProofsVerified = 0 as const;
174
+ }
175
+
176
+ export class BlockProverSingleTransactionExecutionData extends Struct({
177
+ transaction: BlockProverTransactionArguments,
178
+ networkState: NetworkState,
179
+ }) {}
180
+
181
+ export class BlockProverMultiTransactionExecutionData extends Struct({
182
+ transaction1: BlockProverTransactionArguments,
183
+ transaction2: BlockProverTransactionArguments,
27
184
  networkState: NetworkState,
28
- // accountstate
29
185
  }) {}
30
186
 
31
187
  export interface BlockProvable
32
- extends ZkProgrammable<BlockProverPublicInput, BlockProverPublicOutput> {
188
+ extends WithZkProgrammable<BlockProverPublicInput, BlockProverPublicOutput>,
189
+ CompilableModule {
33
190
  proveTransaction: (
34
191
  publicInput: BlockProverPublicInput,
35
- stateProof: StateTransitionProof,
36
- appProof: Proof<void, MethodPublicOutput>,
37
- executionData: BlockProverExecutionData
38
- ) => BlockProverPublicOutput;
192
+ runtimeProof: DynamicRuntimeProof,
193
+ executionData: BlockProverSingleTransactionExecutionData
194
+ ) => Promise<BlockProverPublicOutput>;
195
+
196
+ proveTransactions: (
197
+ publicInput: BlockProverPublicInput,
198
+ runtimeProof1: DynamicRuntimeProof,
199
+ runtimeProof2: DynamicRuntimeProof,
200
+ executionData: BlockProverMultiTransactionExecutionData
201
+ ) => Promise<BlockProverPublicOutput>;
202
+
203
+ proveBlock: (
204
+ publicInput: BlockProverPublicInput,
205
+ networkState: NetworkState,
206
+ blockWitness: BlockHashMerkleTreeWitness,
207
+ stateTransitionProof: StateTransitionProof,
208
+ deferSTs: Bool,
209
+ afterBlockRootWitness: WitnessedRootWitness,
210
+ transactionProof: BlockProverProof
211
+ ) => Promise<BlockProverPublicOutput>;
39
212
 
40
213
  merge: (
41
214
  publicInput: BlockProverPublicInput,
42
215
  proof1: BlockProverProof,
43
216
  proof2: BlockProverProof
44
- ) => BlockProverPublicOutput;
217
+ ) => Promise<BlockProverPublicOutput>;
45
218
  }