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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/dist/Constants.js +1 -0
  2. package/dist/Constants.js.map +1 -0
  3. package/dist/hashing/mina-prefixes.d.ts +10 -0
  4. package/dist/hashing/mina-prefixes.d.ts.map +1 -0
  5. package/dist/hashing/mina-prefixes.js +10 -0
  6. package/dist/hashing/mina-prefixes.js.map +1 -0
  7. package/dist/hashing/protokit-prefixes.d.ts +10 -0
  8. package/dist/hashing/protokit-prefixes.d.ts.map +1 -0
  9. package/dist/hashing/protokit-prefixes.js +24 -0
  10. package/dist/hashing/protokit-prefixes.js.map +1 -0
  11. package/dist/hooks/AccountStateHook.d.ts +56 -0
  12. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  13. package/dist/hooks/AccountStateHook.js +62 -0
  14. package/dist/hooks/AccountStateHook.js.map +1 -0
  15. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  16. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  17. package/dist/hooks/BlockHeightHook.js +16 -0
  18. package/dist/hooks/BlockHeightHook.js.map +1 -0
  19. package/dist/hooks/LastStateRootBlockHook.d.ts +7 -0
  20. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  21. package/dist/hooks/LastStateRootBlockHook.js +16 -0
  22. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  23. package/dist/hooks/NoopBlockHook.d.ts +8 -0
  24. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  25. package/dist/hooks/NoopBlockHook.js +10 -0
  26. package/dist/hooks/NoopBlockHook.js.map +1 -0
  27. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  28. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  29. package/dist/{prover/statetransition/StateTransitionWitnessProvider.js → hooks/NoopSettlementHook.js} +8 -7
  30. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  31. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  32. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  33. package/dist/hooks/NoopTransactionHook.js +11 -0
  34. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  35. package/dist/index.d.ts +51 -13
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +52 -13
  38. package/dist/index.js.map +1 -0
  39. package/dist/model/AppliedStateTransitionBatch.d.ts +114 -0
  40. package/dist/model/AppliedStateTransitionBatch.d.ts.map +1 -0
  41. package/dist/model/AppliedStateTransitionBatch.js +16 -0
  42. package/dist/model/AppliedStateTransitionBatch.js.map +1 -0
  43. package/dist/model/MethodPublicOutput.d.ts +83 -28
  44. package/dist/model/MethodPublicOutput.d.ts.map +1 -1
  45. package/dist/model/MethodPublicOutput.js +4 -1
  46. package/dist/model/MethodPublicOutput.js.map +1 -0
  47. package/dist/model/Option.d.ts +66 -42
  48. package/dist/model/Option.d.ts.map +1 -1
  49. package/dist/model/Option.js +58 -45
  50. package/dist/model/Option.js.map +1 -0
  51. package/dist/model/Path.d.ts +4 -3
  52. package/dist/model/Path.d.ts.map +1 -1
  53. package/dist/model/Path.js +6 -5
  54. package/dist/model/Path.js.map +1 -0
  55. package/dist/model/RuntimeLike.d.ts +11 -0
  56. package/dist/model/RuntimeLike.d.ts.map +1 -0
  57. package/dist/model/RuntimeLike.js +2 -0
  58. package/dist/model/RuntimeLike.js.map +1 -0
  59. package/dist/model/StateTransition.d.ts +58 -18
  60. package/dist/model/StateTransition.d.ts.map +1 -1
  61. package/dist/model/StateTransition.js +13 -4
  62. package/dist/model/StateTransition.js.map +1 -0
  63. package/dist/model/StateTransitionProvableBatch.d.ts +369 -54
  64. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  65. package/dist/model/StateTransitionProvableBatch.js +74 -51
  66. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  67. package/dist/model/network/NetworkState.d.ts +105 -9
  68. package/dist/model/network/NetworkState.d.ts.map +1 -1
  69. package/dist/model/network/NetworkState.js +22 -2
  70. package/dist/model/network/NetworkState.js.map +1 -0
  71. package/dist/model/transaction/AuthorizedTransaction.d.ts +122 -0
  72. package/dist/model/transaction/AuthorizedTransaction.d.ts.map +1 -0
  73. package/dist/model/transaction/AuthorizedTransaction.js +39 -0
  74. package/dist/model/transaction/AuthorizedTransaction.js.map +1 -0
  75. package/dist/model/transaction/RuntimeTransaction.d.ts +94 -34
  76. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
  77. package/dist/model/transaction/RuntimeTransaction.js +72 -11
  78. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  79. package/dist/model/transaction/SignedTransaction.d.ts +110 -0
  80. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  81. package/dist/model/transaction/SignedTransaction.js +34 -0
  82. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  83. package/dist/model/transaction/ValueOption.d.ts +187 -0
  84. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  85. package/dist/model/transaction/ValueOption.js +25 -0
  86. package/dist/model/transaction/ValueOption.js.map +1 -0
  87. package/dist/protocol/Protocol.d.ts +45 -34
  88. package/dist/protocol/Protocol.d.ts.map +1 -1
  89. package/dist/protocol/Protocol.js +115 -57
  90. package/dist/protocol/Protocol.js.map +1 -0
  91. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  92. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  93. package/dist/protocol/ProtocolEnvironment.js +2 -0
  94. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  95. package/dist/protocol/ProtocolModule.d.ts +7 -6
  96. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  97. package/dist/protocol/ProtocolModule.js +10 -5
  98. package/dist/protocol/ProtocolModule.js.map +1 -0
  99. package/dist/protocol/ProvableBlockHook.d.ts +29 -0
  100. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  101. package/dist/protocol/ProvableBlockHook.js +20 -0
  102. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  103. package/dist/protocol/ProvableTransactionHook.d.ts +32 -3
  104. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
  105. package/dist/protocol/ProvableTransactionHook.js +25 -0
  106. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  107. package/dist/protocol/TransitioningProtocolModule.d.ts +6 -1
  108. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -1
  109. package/dist/protocol/TransitioningProtocolModule.js +6 -0
  110. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  111. package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
  112. package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
  113. package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
  114. package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
  115. package/dist/prover/accumulators/BlockHashList.d.ts +263 -0
  116. package/dist/prover/accumulators/BlockHashList.d.ts.map +1 -0
  117. package/dist/prover/accumulators/BlockHashList.js +97 -0
  118. package/dist/prover/accumulators/BlockHashList.js.map +1 -0
  119. package/dist/prover/accumulators/StateTransitionReductionList.d.ts +12 -0
  120. package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
  121. package/dist/prover/accumulators/StateTransitionReductionList.js +64 -0
  122. package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
  123. package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
  124. package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
  125. package/dist/prover/accumulators/TransactionHashList.js +8 -0
  126. package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
  127. package/dist/prover/accumulators/WitnessedRootHashList.d.ts +123 -0
  128. package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
  129. package/dist/prover/accumulators/WitnessedRootHashList.js +51 -0
  130. package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
  131. package/dist/prover/block/BlockProvable.d.ts +565 -96
  132. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  133. package/dist/prover/block/BlockProvable.js +196 -12
  134. package/dist/prover/block/BlockProvable.js.map +1 -0
  135. package/dist/prover/block/BlockProver.d.ts +45 -44
  136. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  137. package/dist/prover/block/BlockProver.js +306 -143
  138. package/dist/prover/block/BlockProver.js.map +1 -0
  139. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +106 -0
  140. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  141. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +25 -0
  142. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  143. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  144. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  145. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
  146. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  147. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  148. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  149. package/dist/prover/{statetransition/StateTransitionWitnessProviderReference.js → block/services/RuntimeVerificationKeyRootService.js} +11 -8
  150. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  151. package/dist/prover/statetransition/StateTransitionProvable.d.ts +137 -64
  152. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  153. package/dist/prover/statetransition/StateTransitionProvable.js +10 -7
  154. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  155. package/dist/prover/statetransition/StateTransitionProver.d.ts +26 -24
  156. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  157. package/dist/prover/statetransition/StateTransitionProver.js +159 -93
  158. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  159. package/dist/prover/transaction/TransactionProvable.d.ts +626 -0
  160. package/dist/prover/transaction/TransactionProvable.d.ts.map +1 -0
  161. package/dist/prover/transaction/TransactionProvable.js +87 -0
  162. package/dist/prover/transaction/TransactionProvable.js.map +1 -0
  163. package/dist/prover/transaction/TransactionProver.d.ts +68 -0
  164. package/dist/prover/transaction/TransactionProver.d.ts.map +1 -0
  165. package/dist/prover/transaction/TransactionProver.js +301 -0
  166. package/dist/prover/transaction/TransactionProver.js.map +1 -0
  167. package/dist/prover/utils.d.ts +19 -0
  168. package/dist/prover/utils.d.ts.map +1 -0
  169. package/dist/prover/utils.js +67 -0
  170. package/dist/prover/utils.js.map +1 -0
  171. package/dist/settlement/ContractArgsRegistry.d.ts +13 -0
  172. package/dist/settlement/ContractArgsRegistry.d.ts.map +1 -0
  173. package/dist/settlement/ContractArgsRegistry.js +58 -0
  174. package/dist/settlement/ContractArgsRegistry.js.map +1 -0
  175. package/dist/settlement/ContractModule.d.ts +16 -0
  176. package/dist/settlement/ContractModule.d.ts.map +1 -0
  177. package/dist/settlement/ContractModule.js +12 -0
  178. package/dist/settlement/ContractModule.js.map +1 -0
  179. package/dist/settlement/SettlementContractModule.d.ts +47 -0
  180. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  181. package/dist/settlement/SettlementContractModule.js +81 -0
  182. package/dist/settlement/SettlementContractModule.js.map +1 -0
  183. package/dist/settlement/contracts/BridgeContract.d.ts +114 -0
  184. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  185. package/dist/settlement/contracts/BridgeContract.js +270 -0
  186. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  187. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +18 -0
  188. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  189. package/dist/settlement/contracts/BridgeContractProtocolModule.js +42 -0
  190. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  191. package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts +21 -0
  192. package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts.map +1 -0
  193. package/dist/settlement/contracts/BridgingSettlementContractModule.js +81 -0
  194. package/dist/settlement/contracts/BridgingSettlementContractModule.js.map +1 -0
  195. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +23 -0
  196. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  197. package/dist/settlement/contracts/DispatchContractProtocolModule.js +55 -0
  198. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  199. package/dist/settlement/contracts/DispatchSmartContract.d.ts +50 -0
  200. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  201. package/dist/settlement/contracts/DispatchSmartContract.js +234 -0
  202. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  203. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
  204. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  205. package/dist/settlement/contracts/SettlementContractProtocolModule.js +84 -0
  206. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  207. package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
  208. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  209. package/dist/settlement/contracts/SettlementSmartContract.js +310 -0
  210. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  211. package/dist/settlement/contracts/SettlementSmartContractModule.d.ts +20 -0
  212. package/dist/settlement/contracts/SettlementSmartContractModule.d.ts.map +1 -0
  213. package/dist/settlement/contracts/SettlementSmartContractModule.js +56 -0
  214. package/dist/settlement/contracts/SettlementSmartContractModule.js.map +1 -0
  215. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  216. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  217. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  218. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  219. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  220. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  221. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  222. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  223. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  224. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  225. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  226. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  227. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  228. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  229. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  230. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  231. package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts +107 -0
  232. package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts.map +1 -0
  233. package/dist/settlement/contracts/settlement/BridgingSettlementContract.js +188 -0
  234. package/dist/settlement/contracts/settlement/BridgingSettlementContract.js.map +1 -0
  235. package/dist/settlement/contracts/settlement/SettlementBase.d.ts +41 -0
  236. package/dist/settlement/contracts/settlement/SettlementBase.d.ts.map +1 -0
  237. package/dist/settlement/contracts/settlement/SettlementBase.js +105 -0
  238. package/dist/settlement/contracts/settlement/SettlementBase.js.map +1 -0
  239. package/dist/settlement/contracts/settlement/SettlementContract.d.ts +15 -0
  240. package/dist/settlement/contracts/settlement/SettlementContract.d.ts.map +1 -0
  241. package/dist/settlement/contracts/settlement/SettlementContract.js +72 -0
  242. package/dist/settlement/contracts/settlement/SettlementContract.js.map +1 -0
  243. package/dist/settlement/messages/Deposit.d.ts +77 -0
  244. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  245. package/dist/settlement/messages/Deposit.js +8 -0
  246. package/dist/settlement/messages/Deposit.js.map +1 -0
  247. package/dist/settlement/messages/OutgoingMessage.d.ts +67 -0
  248. package/dist/settlement/messages/OutgoingMessage.d.ts.map +1 -0
  249. package/dist/settlement/messages/OutgoingMessage.js +7 -0
  250. package/dist/settlement/messages/OutgoingMessage.js.map +1 -0
  251. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +588 -0
  252. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  253. package/dist/settlement/messages/OutgoingMessageArgument.js +42 -0
  254. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  255. package/dist/settlement/messages/Withdrawal.d.ts +2 -0
  256. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  257. package/dist/settlement/messages/Withdrawal.js +3 -0
  258. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  259. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts +28 -0
  260. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
  261. package/dist/settlement/modularity/OutgoingMessageProcessor.js +39 -0
  262. package/dist/settlement/modularity/OutgoingMessageProcessor.js.map +1 -0
  263. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
  264. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  265. package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
  266. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  267. package/dist/settlement/modularity/types.d.ts +9 -0
  268. package/dist/settlement/modularity/types.d.ts.map +1 -0
  269. package/dist/settlement/modularity/types.js +2 -0
  270. package/dist/settlement/modularity/types.js.map +1 -0
  271. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  272. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  273. package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
  274. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  275. package/dist/state/SimpleAsyncStateService.d.ts +6 -0
  276. package/dist/state/SimpleAsyncStateService.d.ts.map +1 -0
  277. package/dist/state/SimpleAsyncStateService.js +2 -0
  278. package/dist/state/SimpleAsyncStateService.js.map +1 -0
  279. package/dist/state/State.d.ts +13 -5
  280. package/dist/state/State.d.ts.map +1 -1
  281. package/dist/state/State.js +42 -17
  282. package/dist/state/State.js.map +1 -0
  283. package/dist/state/StateMap.d.ts +4 -4
  284. package/dist/state/StateMap.d.ts.map +1 -1
  285. package/dist/state/StateMap.js +5 -5
  286. package/dist/state/StateMap.js.map +1 -0
  287. package/dist/state/StateService.d.ts +4 -4
  288. package/dist/state/StateService.d.ts.map +1 -1
  289. package/dist/state/StateService.js +1 -0
  290. package/dist/state/StateService.js.map +1 -0
  291. package/dist/state/StateServiceProvider.d.ts +5 -7
  292. package/dist/state/StateServiceProvider.d.ts.map +1 -1
  293. package/dist/state/StateServiceProvider.js +18 -23
  294. package/dist/state/StateServiceProvider.js.map +1 -0
  295. package/dist/state/WitnessBlockContext.d.ts +5 -0
  296. package/dist/state/WitnessBlockContext.d.ts.map +1 -0
  297. package/dist/state/WitnessBlockContext.js +48 -0
  298. package/dist/state/WitnessBlockContext.js.map +1 -0
  299. package/dist/state/assert/assert.d.ts +2 -2
  300. package/dist/state/assert/assert.d.ts.map +1 -1
  301. package/dist/state/assert/assert.js +16 -6
  302. package/dist/state/assert/assert.js.map +1 -0
  303. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +137 -4
  304. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
  305. package/dist/state/context/RuntimeMethodExecutionContext.js +44 -11
  306. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  307. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -1
  308. package/dist/state/context/TransitionMethodExecutionContext.js +1 -1
  309. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  310. package/dist/state/protocol/ProtocolState.d.ts +8 -2
  311. package/dist/state/protocol/ProtocolState.d.ts.map +1 -1
  312. package/dist/state/protocol/ProtocolState.js +36 -20
  313. package/dist/state/protocol/ProtocolState.js.map +1 -0
  314. package/dist/utils/FieldOptions.d.ts +62 -0
  315. package/dist/utils/FieldOptions.d.ts.map +1 -0
  316. package/dist/utils/FieldOptions.js +13 -0
  317. package/dist/utils/FieldOptions.js.map +1 -0
  318. package/dist/utils/MinaPrefixedProvableHashList.d.ts +20 -0
  319. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  320. package/dist/utils/MinaPrefixedProvableHashList.js +49 -0
  321. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  322. package/dist/utils/PrefixedProvableHashList.d.ts +3 -2
  323. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
  324. package/dist/utils/PrefixedProvableHashList.js +5 -1
  325. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  326. package/dist/utils/ProvableHashList.d.ts +27 -4
  327. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  328. package/dist/utils/ProvableHashList.js +51 -3
  329. package/dist/utils/ProvableHashList.js.map +1 -0
  330. package/dist/utils/ProvableReductionHashList.d.ts +18 -0
  331. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  332. package/dist/utils/ProvableReductionHashList.js +54 -0
  333. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  334. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  335. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  336. package/dist/utils/StateTransitionReductionList.js +61 -0
  337. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  338. package/dist/utils/utils.d.ts +11 -5
  339. package/dist/utils/utils.d.ts.map +1 -1
  340. package/dist/utils/utils.js +13 -13
  341. package/dist/utils/utils.js.map +1 -0
  342. package/jest.config.cjs +12 -1
  343. package/package.json +10 -10
  344. package/src/hashing/mina-prefixes.ts +10 -0
  345. package/src/hashing/protokit-prefixes.ts +37 -0
  346. package/src/hooks/AccountStateHook.ts +80 -0
  347. package/src/hooks/BlockHeightHook.ts +17 -0
  348. package/src/hooks/LastStateRootBlockHook.ts +25 -0
  349. package/src/hooks/NoopBlockHook.ts +24 -0
  350. package/src/hooks/NoopSettlementHook.ts +20 -0
  351. package/src/{blockmodules → hooks}/NoopTransactionHook.ts +9 -3
  352. package/src/index.ts +51 -13
  353. package/src/model/AppliedStateTransitionBatch.ts +16 -0
  354. package/src/model/MethodPublicOutput.ts +3 -1
  355. package/src/model/Option.ts +87 -57
  356. package/src/model/Path.ts +9 -5
  357. package/src/model/RuntimeLike.ts +12 -0
  358. package/src/model/StateTransition.ts +19 -5
  359. package/src/model/StateTransitionProvableBatch.ts +94 -73
  360. package/src/model/Transaction.ts +3 -1
  361. package/src/model/network/NetworkState.ts +22 -2
  362. package/src/model/transaction/AuthorizedTransaction.ts +50 -0
  363. package/src/model/transaction/RuntimeTransaction.ts +86 -15
  364. package/src/model/transaction/ValueOption.ts +28 -0
  365. package/src/protocol/Protocol.ts +186 -116
  366. package/src/protocol/ProtocolEnvironment.ts +10 -0
  367. package/src/protocol/ProtocolModule.ts +18 -11
  368. package/src/protocol/ProvableBlockHook.ts +67 -0
  369. package/src/protocol/ProvableTransactionHook.ts +92 -3
  370. package/src/protocol/TransitioningProtocolModule.ts +8 -1
  371. package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
  372. package/src/prover/accumulators/BlockHashList.ts +117 -0
  373. package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
  374. package/src/prover/accumulators/TransactionHashList.ts +9 -0
  375. package/src/prover/accumulators/WitnessedRootHashList.ts +62 -0
  376. package/src/prover/block/BlockProvable.ts +360 -28
  377. package/src/prover/block/BlockProver.ts +668 -251
  378. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +24 -0
  379. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  380. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  381. package/src/prover/statetransition/StateTransitionProvable.ts +25 -20
  382. package/src/prover/statetransition/StateTransitionProver.ts +299 -168
  383. package/src/prover/transaction/TransactionProvable.ts +183 -0
  384. package/src/prover/transaction/TransactionProver.ts +561 -0
  385. package/src/prover/utils.ts +108 -0
  386. package/src/settlement/ContractArgsRegistry.ts +64 -0
  387. package/src/settlement/ContractModule.ts +31 -0
  388. package/src/settlement/SettlementContractModule.ts +150 -0
  389. package/src/settlement/contracts/BridgeContract.ts +383 -0
  390. package/src/settlement/contracts/BridgeContractProtocolModule.ts +49 -0
  391. package/src/settlement/contracts/BridgingSettlementContractModule.ts +116 -0
  392. package/src/settlement/contracts/DispatchContractProtocolModule.ts +77 -0
  393. package/src/settlement/contracts/DispatchSmartContract.ts +359 -0
  394. package/src/settlement/contracts/SettlementSmartContractModule.ts +79 -0
  395. package/src/settlement/contracts/TokenBridgeTree.ts +86 -0
  396. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  397. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  398. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  399. package/src/settlement/contracts/settlement/BridgingSettlementContract.ts +283 -0
  400. package/src/settlement/contracts/settlement/SettlementBase.ts +249 -0
  401. package/src/settlement/contracts/settlement/SettlementContract.ts +75 -0
  402. package/src/settlement/messages/Deposit.ts +7 -0
  403. package/src/settlement/messages/OutgoingMessage.ts +17 -0
  404. package/src/settlement/messages/OutgoingMessageArgument.ts +62 -0
  405. package/src/settlement/modularity/OutgoingMessageProcessor.ts +78 -0
  406. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  407. package/src/settlement/modularity/types.ts +23 -0
  408. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  409. package/src/state/State.ts +49 -19
  410. package/src/state/StateMap.ts +5 -6
  411. package/src/state/StateService.ts +5 -5
  412. package/src/state/StateServiceProvider.ts +18 -18
  413. package/src/state/WitnessBlockContext.ts +54 -0
  414. package/src/state/assert/assert.ts +18 -8
  415. package/src/state/context/RuntimeMethodExecutionContext.ts +68 -11
  416. package/src/state/context/TransitionMethodExecutionContext.ts +0 -1
  417. package/src/state/protocol/ProtocolState.ts +61 -26
  418. package/src/utils/FieldOptions.ts +13 -0
  419. package/src/utils/MinaPrefixedProvableHashList.ts +70 -0
  420. package/src/utils/PrefixedProvableHashList.ts +6 -2
  421. package/src/utils/ProvableHashList.ts +109 -4
  422. package/src/utils/ProvableReductionHashList.ts +77 -0
  423. package/src/utils/utils.ts +21 -16
  424. package/test/BlockProver.test.ts +124 -140
  425. package/test/Protocol.test.ts +14 -21
  426. package/test/State.test.ts +45 -0
  427. package/test/StateTransition.test.ts +57 -65
  428. package/test/TestingProtocol.ts +36 -0
  429. package/test/compiling/types.ts +28 -0
  430. package/test/model/Option.test.ts +72 -0
  431. package/test/model/StateTransitionProvableBatch.test.ts +137 -0
  432. package/test/modularity/types.ts +35 -0
  433. package/test/prover/block/BlockProver.test.ts +18 -0
  434. package/test/prover/statetransition/StateTransitionProver.test.ts +261 -0
  435. package/{src → test}/state/assert/assert.test.ts +10 -3
  436. package/test/tsconfig.json +7 -0
  437. package/test/utils/ProvableHashList.test.ts +44 -0
  438. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  439. package/test/utils.test.ts +0 -3
  440. package/LICENSE.md +0 -201
  441. package/dist/blockmodules/AccountStateModule.d.ts +0 -38
  442. package/dist/blockmodules/AccountStateModule.d.ts.map +0 -1
  443. package/dist/blockmodules/AccountStateModule.js +0 -38
  444. package/dist/blockmodules/NoopTransactionHook.d.ts +0 -6
  445. package/dist/blockmodules/NoopTransactionHook.d.ts.map +0 -1
  446. package/dist/blockmodules/NoopTransactionHook.js +0 -5
  447. package/dist/model/transaction/ProtocolTransaction.d.ts +0 -70
  448. package/dist/model/transaction/ProtocolTransaction.d.ts.map +0 -1
  449. package/dist/model/transaction/ProtocolTransaction.js +0 -18
  450. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
  451. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
  452. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +0 -7
  453. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +0 -1
  454. package/dist/state/context/ProtocolMethodExecutionContext.d.ts +0 -22
  455. package/dist/state/context/ProtocolMethodExecutionContext.d.ts.map +0 -1
  456. package/dist/state/context/ProtocolMethodExecutionContext.js +0 -28
  457. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -25
  458. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
  459. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -77
  460. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts +0 -26
  461. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts.map +0 -1
  462. package/dist/utils/merkletree/MemoryMerkleTreeStorage.js +0 -79
  463. package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
  464. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
  465. package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
  466. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -130
  467. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  468. package/dist/utils/merkletree/RollupMerkleTree.js +0 -244
  469. package/src/blockmodules/AccountStateModule.ts +0 -31
  470. package/src/model/Option.test.ts +0 -21
  471. package/src/model/transaction/ProtocolTransaction.ts +0 -25
  472. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -24
  473. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
  474. package/src/state/context/ProtocolMethodExecutionContext.ts +0 -36
  475. package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -106
  476. package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
  477. package/src/utils/merkletree/RollupMerkleTree.ts +0 -255
  478. package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
  479. package/tsconfig.test.json +0 -9
@@ -10,131 +10,240 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
- /* eslint-disable max-lines */
14
- import { Experimental, Field, Provable, SelfProof } from "snarkyjs";
13
+ import { Bool, Field, Provable, SelfProof, ZkProgram } from "o1js";
15
14
  import { container, inject, injectable, injectAll } from "tsyringe";
16
- import { provableMethod, ZkProgrammable, } from "@proto-kit/common";
17
- import { DefaultProvableHashList } from "../../utils/ProvableHashList";
15
+ import { log, provableMethod, reduceSequential, ZkProgrammable, } from "@proto-kit/common";
18
16
  import { ProtocolModule } from "../../protocol/ProtocolModule";
19
17
  import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
20
- import { BlockProverExecutionData, BlockProverPublicInput, BlockProverPublicOutput, } from "./BlockProvable";
21
- import { ProvableStateTransition } from "../../model/StateTransition";
22
18
  import { RuntimeMethodExecutionContext } from "../../state/context/RuntimeMethodExecutionContext";
19
+ import { toAfterBlockHookArgument, toBeforeBlockHookArgument, } from "../../protocol/ProvableBlockHook";
20
+ import { NetworkState } from "../../model/network/NetworkState";
21
+ import { assertEqualsIf } from "../../utils/utils";
22
+ import { StateServiceProvider } from "../../state/StateServiceProvider";
23
+ import { executeHooks } from "../utils";
24
+ import { Bundle } from "../accumulators/BlockHashList";
25
+ import { BlockArgumentsBatch, BlockProverPublicInput, BlockProverPublicOutput, BlockProverState, BlockProverStateInput, } from "./BlockProvable";
26
+ import { BlockHashMerkleTreeWitness, BlockHashTreeEntry, } from "./accummulators/BlockHashMerkleTree";
23
27
  const errors = {
24
- stateProofNotStartingAtZero: () => "StateProof not starting ST-commitment at zero",
25
- stateTransitionsHashNotEqual: () => "StateTransition list commitments are not equal",
28
+ propertyNotMatchingStep: (propertyName, step) => `${propertyName} not matching: ${step}`,
26
29
  propertyNotMatching: (propertyName) => `${propertyName} not matching`,
27
- stateRootNotMatching: (step) => `StateRoots not matching ${step}`,
28
- transactionsHashNotMatching: (step) => `transactions hash not matching ${step}`,
29
30
  };
30
31
  export class BlockProverProgrammable extends ZkProgrammable {
31
- constructor(
32
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
33
- prover, stateTransitionProver, runtime, blockModules) {
32
+ constructor(prover, stateTransitionProver, transactionProver, blockHooks, stateServiceProvider) {
34
33
  super();
35
34
  this.prover = prover;
36
35
  this.stateTransitionProver = stateTransitionProver;
37
- this.runtime = runtime;
38
- this.blockModules = blockModules;
36
+ this.transactionProver = transactionProver;
37
+ this.blockHooks = blockHooks;
38
+ this.stateServiceProvider = stateServiceProvider;
39
+ this.name = "BlockProver";
39
40
  }
40
- get appChain() {
41
- return this.prover.appChain;
41
+ get areProofsEnabled() {
42
+ return this.prover.areProofsEnabled;
42
43
  }
43
- /**
44
- * Applies and checks the two proofs and applies the corresponding state
45
- * changes to the given state
46
- *
47
- * @param state The from-state of the BlockProver
48
- * @param stateTransitionProof
49
- * @param appProof
50
- * @param executionData
51
- * @returns The new BlockProver-state to be used as public output
52
- */
53
- applyTransaction(state, stateTransitionProof, appProof, executionData) {
54
- const { transaction, networkState } = executionData;
55
- appProof.verify();
56
- stateTransitionProof.verify();
57
- const stateTo = { ...state };
58
- // eslint-disable-next-line no-warning-comments
59
- // TODO Check methodId?
60
- // Checks for the stateTransitionProof and appProof matching
61
- stateTransitionProof.publicInput.stateTransitionsHash.assertEquals(Field(0), errors.stateProofNotStartingAtZero());
62
- appProof.publicOutput.stateTransitionsHash.assertEquals(stateTransitionProof.publicOutput.stateTransitionsHash, errors.stateTransitionsHashNotEqual());
63
- // Apply state if status success
64
- state.stateRoot.assertEquals(stateTransitionProof.publicInput.stateRoot, errors.propertyNotMatching("from state root"));
65
- stateTo.stateRoot = Provable.if(appProof.publicOutput.status, stateTransitionProof.publicOutput.stateRoot, stateTransitionProof.publicInput.stateRoot);
66
- // Apply protocol state transitions
67
- this.assertProtocolTransitions(stateTransitionProof, executionData);
68
- // Check transaction signature
69
- transaction
70
- .validateSignature()
71
- .assertTrue("Transaction signature not valid");
72
- // Check if the methodId is correct
73
- // to do
74
- // Check transaction integrity against appProof
75
- const blockTransactionHash = RuntimeTransaction.fromProtocolTransaction(transaction).hash();
76
- blockTransactionHash.assertEquals(appProof.publicOutput.transactionHash, "Transactions provided in AppProof and BlockProof do not match");
77
- // Check network state integrity against appProof
78
- state.networkStateHash.assertEquals(appProof.publicOutput.networkStateHash, "Network state does not match state used in AppProof");
79
- state.networkStateHash.assertEquals(networkState.hash(), "Network state provided to BlockProver does not match the publicInput");
80
- // Append tx to transaction list
81
- const transactionList = new DefaultProvableHashList(Field, state.transactionsHash);
82
- const { transactionHash } = appProof.publicOutput;
83
- transactionList.push(transactionHash);
84
- stateTo.transactionsHash = transactionList.commitment;
85
- return stateTo;
86
- }
87
- // eslint-disable-next-line no-warning-comments, max-len
88
- // TODO How does this interact with the RuntimeMethodExecutionContext when executing runtimemethods?
89
- assertProtocolTransitions(stateTransitionProof, executionData) {
90
- const executionContext = container.resolve(RuntimeMethodExecutionContext);
91
- executionContext.clear();
92
- // Setup context for potential calls to runtime methods.
93
- // This way they can use this.transaction etc. while still having provable
94
- // integrity between data
95
- executionContext.setup({
96
- transaction: RuntimeTransaction.fromProtocolTransaction(executionData.transaction),
97
- networkState: executionData.networkState,
98
- });
99
- executionContext.beforeMethod("", "", []);
100
- this.blockModules.forEach((module) => {
101
- module.onTransaction(executionData);
102
- });
103
- executionContext.afterMethod();
104
- const { stateTransitions, status, statusMessage } = executionContext.current().result;
105
- status.assertTrue(statusMessage);
106
- const transitions = stateTransitions.map((transition) => transition.toProvable());
107
- const hashList = new DefaultProvableHashList(ProvableStateTransition, stateTransitionProof.publicInput.protocolTransitionsHash);
108
- transitions.forEach((transition) => {
109
- hashList.push(transition);
110
- });
111
- stateTransitionProof.publicOutput.protocolTransitionsHash.assertEquals(hashList.commitment, "ProtocolTransitionsHash not matching the generated protocol transitions");
44
+ async executeBlockHooks(type, hook, hookArguments, inputNetworkState, isDummy) {
45
+ const transaction = RuntimeTransaction.dummyTransaction();
46
+ const startingInputs = {
47
+ transaction,
48
+ networkState: inputNetworkState,
49
+ };
50
+ return await executeHooks(startingInputs, `${type}Block`, async () => {
51
+ const executionContext = container.resolve(RuntimeMethodExecutionContext);
52
+ return await this.blockHooks.reduce(async (networkStatePromise, blockHook) => {
53
+ const networkState = await networkStatePromise;
54
+ // Setup context for potential calls to runtime methods.
55
+ // With the special case that we set the new networkstate for every hook
56
+ // We also have to put in a dummy transaction for network.transaction
57
+ executionContext.setup({
58
+ transaction: RuntimeTransaction.dummyTransaction(),
59
+ networkState,
60
+ });
61
+ return await hook(blockHook, networkState, hookArguments);
62
+ }, Promise.resolve(inputNetworkState));
63
+ }, isDummy);
112
64
  }
113
- proveTransaction(publicInput, stateProof, appProof, executionData) {
114
- const state = {
115
- transactionsHash: publicInput.transactionsHash,
116
- stateRoot: publicInput.stateRoot,
117
- networkStateHash: publicInput.networkStateHash,
65
+ includeSTProof(stateTransitionProof, apply, stateRoot, pendingSTBatchesHash, witnessedRootsHash) {
66
+ assertEqualsIf(stateTransitionProof.publicInput.currentBatchStateHash, Field(0), apply, "State for STProof has to be empty at the start");
67
+ assertEqualsIf(stateTransitionProof.publicOutput.currentBatchStateHash, Field(0), apply, "State for STProof has to be empty at the end");
68
+ assertEqualsIf(stateTransitionProof.publicInput.batchesHash, Field(0), apply, "Batcheshash doesn't start at 0");
69
+ // Assert from state root
70
+ assertEqualsIf(stateRoot, stateTransitionProof.publicInput.root, apply, errors.propertyNotMatching("from state root"));
71
+ // Assert the stBatchesHash executed is the same
72
+ assertEqualsIf(pendingSTBatchesHash, stateTransitionProof.publicOutput.batchesHash, apply, "Pending STBatches are not the same that have been executed by the ST proof");
73
+ // Assert root Accumulator
74
+ assertEqualsIf(Field(0), stateTransitionProof.publicInput.witnessedRootsHash, apply, errors.propertyNotMatching("from state root"));
75
+ // Assert the witnessedRootsHash created is the same
76
+ assertEqualsIf(witnessedRootsHash, stateTransitionProof.publicOutput.witnessedRootsHash, apply, "Root accumulator Commitment is not the same that have been executed by the ST proof");
77
+ // update root only if we didn't defer
78
+ const newRoot = Provable.if(apply, stateTransitionProof.publicOutput.root, stateRoot);
79
+ // Reset only if we didn't defer
80
+ const newBatchesHash = Provable.if(apply, Field(0), pendingSTBatchesHash);
81
+ const newWitnessedRootsHash = Provable.if(apply, Field(0), witnessedRootsHash);
82
+ return {
83
+ stateRoot: newRoot,
84
+ pendingSTBatchesHash: newBatchesHash,
85
+ witnessedRootsHash: newWitnessedRootsHash,
118
86
  };
119
- const stateTo = this.applyTransaction(state, stateProof, appProof, executionData);
120
- return new BlockProverPublicOutput({
121
- stateRoot: stateTo.stateRoot,
122
- transactionsHash: stateTo.transactionsHash,
87
+ }
88
+ verifySTProof(state, stateTransitionProof, deferSTProof) {
89
+ // Verify ST Proof only if STs have been emitted,
90
+ // and we don't defer the verification of the STs
91
+ // otherwise we can input a dummy proof
92
+ const batchesEmpty = state.pendingSTBatches.commitment.equals(Field(0));
93
+ const verifyStProof = deferSTProof.not().and(batchesEmpty.not());
94
+ log.provable.debug("Verify STProof", verifyStProof);
95
+ stateTransitionProof.verifyIf(verifyStProof);
96
+ // Apply STProof if not deferred
97
+ const stateProofResult = this.includeSTProof(stateTransitionProof, verifyStProof, state.stateRoot, state.pendingSTBatches.commitment, state.witnessedRoots.commitment);
98
+ state.stateRoot = stateProofResult.stateRoot;
99
+ state.pendingSTBatches.commitment = stateProofResult.pendingSTBatchesHash;
100
+ state.witnessedRoots.commitment = stateProofResult.witnessedRootsHash;
101
+ }
102
+ verifyTransactionProof(state, transactionProof, deferTransactionProof) {
103
+ // Verify Transaction proof if it has at least 1 tx and it isn't deferred
104
+ const finalizeBlockProof = deferTransactionProof.not();
105
+ const verifyTransactionProof = finalizeBlockProof.and(state.bundleList.isEmpty().not());
106
+ transactionProof.verifyIf(verifyTransactionProof);
107
+ // Fast-forward transaction trackers by the results of the aggregated transaction proof
108
+ // Implicitly, the 'from' values here are asserted against the publicInput, since the hashlists
109
+ // are created out of the public input
110
+ state.eternalTransactionsList.fastForwardIf({
111
+ from: transactionProof.publicInput.eternalTransactionsHash,
112
+ to: transactionProof.publicOutput.eternalTransactionsHash,
113
+ }, verifyTransactionProof, "eternalTransactionsList");
114
+ state.incomingMessages.fastForwardIf({
115
+ from: transactionProof.publicInput.incomingMessagesHash,
116
+ to: transactionProof.publicOutput.incomingMessagesHash,
117
+ }, verifyTransactionProof, "incomingMessages");
118
+ // Cancel out remainders for transaction proof
119
+ assertEqualsIf(transactionProof.publicInput.bundlesHash, Field(0), verifyTransactionProof, "TransactionProof has to start bundles at 0");
120
+ // Fast Backwards actually, but logic holds
121
+ state.bundleList.fastForwardIf({
122
+ from: transactionProof.publicOutput.bundlesHash,
123
+ to: state.bundleList.empty(),
124
+ }, verifyTransactionProof, "bundles hash");
125
+ }
126
+ parseState(publicInput, stateWitness, networkState, blockWitness) {
127
+ const hasNoStateRemained = publicInput.proverStateRemainder.equals(0);
128
+ // If the state is supplied as a witness, we check that it is equals the PI's stateHash
129
+ stateWitness
130
+ .hash()
131
+ .equals(publicInput.proverStateRemainder)
132
+ .or(hasNoStateRemained)
133
+ .assertTrue("Input state witness is invalid");
134
+ const stateInputs = Provable.if(hasNoStateRemained, BlockProverStateInput, BlockProverStateInput.fromPublicInput(publicInput), stateWitness);
135
+ stateInputs.networkStateHash.assertEquals(networkState.hash(), "Network state not valid");
136
+ const state = BlockProverState.blockProverFromCommitments(stateInputs, networkState, blockWitness);
137
+ // Verify block witness validity
138
+ const blockIndex = blockWitness.calculateIndex();
139
+ blockIndex.assertEquals(stateInputs.blockNumber);
140
+ blockWitness
141
+ .calculateRoot(Field(0))
142
+ .assertEquals(stateInputs.blockHashRoot, "Supplied block hash witness not matching state root");
143
+ return state;
144
+ }
145
+ computeOutput(publicInput, state, finalizeBlockProof) {
146
+ const finalizedOutput = state.toCommitments();
147
+ const deferredOutput = {
148
+ ...publicInput,
149
+ };
150
+ deferredOutput.proverStateRemainder = finalizedOutput.hash();
151
+ return new BlockProverPublicOutput(Provable.if(finalizeBlockProof, BlockProverPublicOutput, finalizedOutput.finalize(finalizeBlockProof), deferredOutput));
152
+ }
153
+ async proveBlockBatchNoProofs(publicInput, stateWitness, networkState, blockWitness, batch, finalize) {
154
+ return await this.proveBlockBatch(false, publicInput, stateWitness, networkState, blockWitness, batch, Bool(true), Bool(true), finalize);
155
+ }
156
+ async proveBlockBatchWithProofs(publicInput, stateWitness, networkState, blockWitness, batch, deferSTProof, deferTransactionProof, stateTransitionProof, transactionProof) {
157
+ const finalize = deferTransactionProof.or(deferSTProof).not();
158
+ return await this.proveBlockBatch(true, publicInput, stateWitness, networkState, blockWitness, batch, deferSTProof, deferTransactionProof, finalize, stateTransitionProof, transactionProof);
159
+ }
160
+ async proveBlockBatch(doProofVerification, publicInput, stateWitness, networkState, blockWitness, batch, deferSTProof, deferTransactionProof, finalize, stateTransitionProof, transactionProof) {
161
+ let state = this.parseState(publicInput, stateWitness, networkState, blockWitness);
162
+ // Prove blocks iteratively
163
+ state = await reduceSequential(batch.batch, async (current, block) => {
164
+ const result = await this.proveBlock(current.copy(), block);
165
+ this.stateServiceProvider.popCurrentStateService();
166
+ return BlockProverState.choose(block.isDummy, current, result);
167
+ }, state);
168
+ if (doProofVerification) {
169
+ this.verifyTransactionProof(state, transactionProof, deferTransactionProof);
170
+ this.verifySTProof(state, stateTransitionProof, deferSTProof);
171
+ }
172
+ return this.computeOutput(publicInput, state, finalize);
173
+ }
174
+ async proveBlock(state, args) {
175
+ const { networkState, blockWitness } = state;
176
+ const { afterBlockRootWitness, transactionsHash, isDummy } = args;
177
+ const startingPendingStBatches = state.pendingSTBatches.commitment;
178
+ // 1. Execute beforeBlock hooks
179
+ const beforeBlockArgs = toBeforeBlockHookArgument(state);
180
+ const beforeBlockResult = await this.executeBlockHooks("before", async (module, networkStateArg, hookArgs) => await module.beforeBlock(networkStateArg, hookArgs), beforeBlockArgs, networkState, isDummy);
181
+ state.pendingSTBatches.push(beforeBlockResult.batch);
182
+ // 2. "Apply" TX-type BlockProof
183
+ args.pendingSTBatchesHash.from.assertEquals(state.pendingSTBatches.commitment);
184
+ args.witnessedRootsHash.from.assertEquals(state.witnessedRoots.commitment);
185
+ const isEmptyBlock = transactionsHash.equals(Field(0));
186
+ const isNotEmptyBlock = isEmptyBlock.not();
187
+ // Check & fast-forward the stBatchHashList to after all transactions appended
188
+ state.pendingSTBatches.fastForward(args.pendingSTBatchesHash, "Transaction proof doesn't start their STs after the beforeBlockHook");
189
+ // Same for witnessedRootsHash
190
+ state.witnessedRoots.fastForward(args.witnessedRootsHash, "Transaction proof doesn't start with correct witnessed roots hash");
191
+ // Add block to bundles list
192
+ const bundle = new Bundle({
193
+ transactionsHash: transactionsHash,
194
+ networkStateHash: beforeBlockResult.result.hash(),
195
+ pendingSTBatchesHash: args.pendingSTBatchesHash,
196
+ witnessedRootsHash: args.witnessedRootsHash,
123
197
  });
198
+ state.bundleList.pushIf(bundle, isNotEmptyBlock);
199
+ // 3.
200
+ // Calculate new block tree root and increment witness
201
+ // Blocknumber as the index here is already authenticated previously
202
+ const [root, newWitness] = blockWitness.calculateRootIncrement(state.blockNumber, new BlockHashTreeEntry({
203
+ block: {
204
+ index: state.blockNumber,
205
+ transactionListHash: transactionsHash,
206
+ },
207
+ closed: Bool(true),
208
+ }).hash());
209
+ state.blockHashRoot = root;
210
+ state.blockWitness = newWitness;
211
+ state.blockNumber = state.blockNumber.add(1);
212
+ // 4. Execute afterBlock hooks
213
+ // Witness root
214
+ const hasNoSTBatches = state.pendingSTBatches.commitment.equals(startingPendingStBatches);
215
+ // TODO Cover case when we witness root but pendingSTBatches is completely empty
216
+ state.witnessedRoots.witnessRoot({
217
+ appliedBatchListState: state.pendingSTBatches.commitment,
218
+ root: afterBlockRootWitness.witnessedRoot,
219
+ }, hasNoSTBatches.not());
220
+ // Switch state service to afterBlock one
221
+ this.stateServiceProvider.popCurrentStateService();
222
+ // Execute hooks
223
+ const afterBlockHookArgs = toAfterBlockHookArgument(state, afterBlockRootWitness.witnessedRoot, transactionsHash);
224
+ const afterBlockResult = await this.executeBlockHooks("after", async (module, networkStateArg, hookArgs) => await module.afterBlock(networkStateArg, hookArgs), {
225
+ ...afterBlockHookArgs,
226
+ }, beforeBlockResult.result, isDummy);
227
+ // Apply state and network state changes
228
+ state.pendingSTBatches.push(afterBlockResult.batch);
229
+ state.networkState = afterBlockResult.result;
230
+ return state;
124
231
  }
125
- merge(publicInput, proof1, proof2) {
232
+ async merge(publicInput, proof1, proof2) {
126
233
  proof1.verify();
127
234
  proof2.verify();
128
- // Check state
129
- publicInput.stateRoot.assertEquals(proof1.publicInput.stateRoot, errors.stateRootNotMatching("publicInput.from -> proof1.from"));
130
- proof1.publicOutput.stateRoot.assertEquals(proof2.publicInput.stateRoot, errors.stateRootNotMatching("proof1.to -> proof2.from"));
131
- // Check transaction list
132
- publicInput.transactionsHash.assertEquals(proof1.publicInput.transactionsHash, errors.transactionsHashNotMatching("publicInput.from -> proof1.from"));
133
- proof1.publicOutput.transactionsHash.assertEquals(proof2.publicInput.transactionsHash, errors.transactionsHashNotMatching("proof1.to -> proof2.from"));
134
- return new BlockProverPublicOutput({
135
- stateRoot: proof2.publicOutput.stateRoot,
136
- transactionsHash: proof2.publicOutput.transactionsHash,
137
- });
235
+ function checkProperty(key) {
236
+ // Check state
237
+ publicInput[key].assertEquals(proof1.publicInput[key], errors.propertyNotMatchingStep(key, "publicInput.from -> proof1.from"));
238
+ proof1.publicOutput[key].assertEquals(proof2.publicInput[key], errors.propertyNotMatchingStep(key, "proof1.to -> proof2.from"));
239
+ }
240
+ checkProperty("stateRoot");
241
+ checkProperty("networkStateHash");
242
+ checkProperty("blockHashRoot");
243
+ checkProperty("eternalTransactionsHash");
244
+ checkProperty("incomingMessagesHash");
245
+ checkProperty("proverStateRemainder");
246
+ return proof2.publicOutput;
138
247
  }
139
248
  /**
140
249
  * Creates the BlockProver ZkProgram.
@@ -142,23 +251,46 @@ export class BlockProverProgrammable extends ZkProgrammable {
142
251
  * injected StateTransitionProver and the required AppChainProof class
143
252
  */
144
253
  zkProgramFactory() {
145
- const { prover, stateTransitionProver, runtime } = this;
146
- const StateTransitionProofClass = stateTransitionProver.zkProgram.Proof;
147
- const RuntimeProofClass = runtime.zkProgram.Proof;
148
- const proveTransaction = prover.proveTransaction.bind(prover);
254
+ const { prover, stateTransitionProver, transactionProver } = this;
255
+ const StateTransitionProofClass = stateTransitionProver.zkProgram[0].Proof;
256
+ const TransactionProofClass = transactionProver.zkProgram[0].Proof;
257
+ const proveBlockBatchWithProofs = prover.proveBlockBatchWithProofs.bind(prover);
258
+ const proveBlockBatchNoProofs = prover.proveBlockBatchNoProofs.bind(prover);
149
259
  const merge = prover.merge.bind(prover);
150
- const program = Experimental.ZkProgram({
260
+ const program = ZkProgram({
261
+ name: "BlockProver",
151
262
  publicInput: BlockProverPublicInput,
152
263
  publicOutput: BlockProverPublicOutput,
153
264
  methods: {
154
- proveTransaction: {
265
+ proveBlockBatchWithProofs: {
155
266
  privateInputs: [
267
+ BlockProverStateInput,
268
+ NetworkState,
269
+ BlockHashMerkleTreeWitness,
270
+ BlockArgumentsBatch,
271
+ Bool,
272
+ Bool,
156
273
  StateTransitionProofClass,
157
- RuntimeProofClass,
158
- BlockProverExecutionData,
274
+ TransactionProofClass,
159
275
  ],
160
- method(publicInput, stateProof, appProof, executionData) {
161
- return proveTransaction(publicInput, stateProof, appProof, executionData);
276
+ async method(publicInput, stateWitness, networkState, blockWitness, batch, deferSTProof, deferTransactionProof, stateTransitionProof, transactionProof) {
277
+ return {
278
+ publicOutput: await proveBlockBatchWithProofs(publicInput, stateWitness, networkState, blockWitness, batch, deferSTProof, deferTransactionProof, stateTransitionProof, transactionProof),
279
+ };
280
+ },
281
+ },
282
+ proveBlockBatchNoProofs: {
283
+ privateInputs: [
284
+ BlockProverStateInput,
285
+ NetworkState,
286
+ BlockHashMerkleTreeWitness,
287
+ BlockArgumentsBatch,
288
+ Bool,
289
+ ],
290
+ async method(publicInput, stateWitness, networkState, blockWitness, batch, finalize) {
291
+ return {
292
+ publicOutput: await proveBlockBatchNoProofs(publicInput, stateWitness, networkState, blockWitness, batch, finalize),
293
+ };
162
294
  },
163
295
  },
164
296
  merge: {
@@ -166,63 +298,94 @@ export class BlockProverProgrammable extends ZkProgrammable {
166
298
  (SelfProof),
167
299
  (SelfProof),
168
300
  ],
169
- method(publicInput, proof1, proof2) {
170
- return merge(publicInput, proof1, proof2);
301
+ async method(publicInput, proof1, proof2) {
302
+ return { publicOutput: await merge(publicInput, proof1, proof2) };
171
303
  },
172
304
  },
173
305
  },
174
306
  });
175
307
  const methods = {
176
- proveTransaction: program.proveTransaction,
308
+ proveBlockBatchWithProofs: program.proveBlockBatchWithProofs,
309
+ proveBlockBatchNoProofs: program.proveBlockBatchNoProofs,
177
310
  merge: program.merge,
178
311
  };
179
- const SelfProofClass = Experimental.ZkProgram.Proof(program);
180
- return {
181
- compile: program.compile.bind(program),
182
- verify: program.verify.bind(program),
183
- Proof: SelfProofClass,
184
- methods,
185
- };
312
+ const SelfProofClass = ZkProgram.Proof(program);
313
+ return [
314
+ {
315
+ name: program.name,
316
+ compile: program.compile.bind(program),
317
+ verify: program.verify.bind(program),
318
+ analyzeMethods: program.analyzeMethods.bind(program),
319
+ Proof: SelfProofClass,
320
+ methods,
321
+ },
322
+ ];
186
323
  }
187
324
  }
188
325
  __decorate([
189
326
  provableMethod(),
190
327
  __metadata("design:type", Function),
191
- __metadata("design:paramtypes", [BlockProverPublicInput, Object, Function, BlockProverExecutionData]),
192
- __metadata("design:returntype", BlockProverPublicOutput)
193
- ], BlockProverProgrammable.prototype, "proveTransaction", null);
328
+ __metadata("design:paramtypes", [BlockProverPublicInput,
329
+ BlockProverStateInput,
330
+ NetworkState,
331
+ BlockHashMerkleTreeWitness,
332
+ BlockArgumentsBatch,
333
+ Bool]),
334
+ __metadata("design:returntype", Promise)
335
+ ], BlockProverProgrammable.prototype, "proveBlockBatchNoProofs", null);
336
+ __decorate([
337
+ provableMethod(),
338
+ __metadata("design:type", Function),
339
+ __metadata("design:paramtypes", [BlockProverPublicInput,
340
+ BlockProverStateInput,
341
+ NetworkState,
342
+ BlockHashMerkleTreeWitness,
343
+ BlockArgumentsBatch,
344
+ Bool,
345
+ Bool, Object, Object]),
346
+ __metadata("design:returntype", Promise)
347
+ ], BlockProverProgrammable.prototype, "proveBlockBatchWithProofs", null);
194
348
  __decorate([
195
349
  provableMethod(),
196
350
  __metadata("design:type", Function),
197
351
  __metadata("design:paramtypes", [BlockProverPublicInput, Object, Object]),
198
- __metadata("design:returntype", BlockProverPublicOutput)
352
+ __metadata("design:returntype", Promise)
199
353
  ], BlockProverProgrammable.prototype, "merge", null);
200
354
  /**
201
355
  * BlockProver class, which aggregates a AppChainProof and
202
356
  * a StateTransitionProof into a single BlockProof, that can
203
357
  * then be merged to be committed to the base-layer contract
204
358
  */
205
- let BlockProver = class BlockProver extends ProtocolModule {
206
- constructor(stateTransitionProver, runtime, transactionHooks) {
359
+ export let BlockProver = class BlockProver extends ProtocolModule {
360
+ constructor(stateTransitionProver, transactionProver, blockHooks, stateServiceProvider) {
207
361
  super();
208
362
  this.stateTransitionProver = stateTransitionProver;
209
- this.runtime = runtime;
210
- this.zkProgrammable = new BlockProverProgrammable(this, stateTransitionProver.zkProgrammable, runtime.zkProgrammable, transactionHooks
211
- // protocol.dependencyContainer.resolveAll("P rovableTransactionHook")
212
- );
363
+ this.transactionProver = transactionProver;
364
+ this.zkProgrammable = new BlockProverProgrammable(this, stateTransitionProver.zkProgrammable, transactionProver.zkProgrammable, blockHooks, stateServiceProvider);
365
+ }
366
+ async compile(registry) {
367
+ return await registry.forceProverExists(async () => {
368
+ await this.stateTransitionProver.compile(registry);
369
+ await this.transactionProver.compile(registry);
370
+ return await this.zkProgrammable.compile(registry);
371
+ });
372
+ }
373
+ proveBlockBatchNoProofs(publicInput, stateWitness, networkState, blockWitness, batch, finalize) {
374
+ return this.zkProgrammable.proveBlockBatchNoProofs(publicInput, stateWitness, networkState, blockWitness, batch, finalize);
375
+ }
376
+ proveBlockBatchWithProofs(publicInput, stateWitness, networkState, blockWitness, batch, deferSTProof, deferTransactionProof, stateTransitionProof, transactionProof) {
377
+ return this.zkProgrammable.proveBlockBatchWithProofs(publicInput, stateWitness, networkState, blockWitness, batch, deferSTProof, deferTransactionProof, stateTransitionProof, transactionProof);
213
378
  }
214
379
  merge(publicInput, proof1, proof2) {
215
380
  return this.zkProgrammable.merge(publicInput, proof1, proof2);
216
381
  }
217
- proveTransaction(publicInput, stateProof, appProof, executionData) {
218
- return this.zkProgrammable.proveTransaction(publicInput, stateProof, appProof, executionData);
219
- }
220
382
  };
221
383
  BlockProver = __decorate([
222
384
  injectable(),
223
385
  __param(0, inject("StateTransitionProver")),
224
- __param(1, inject("Runtime")),
225
- __param(2, injectAll("ProvableTransactionHook")),
226
- __metadata("design:paramtypes", [Object, Object, Array])
386
+ __param(1, inject("TransactionProver")),
387
+ __param(2, injectAll("ProvableBlockHook")),
388
+ __param(3, inject("StateServiceProvider")),
389
+ __metadata("design:paramtypes", [Object, Object, Array, StateServiceProvider])
227
390
  ], BlockProver);
228
- export { BlockProver };
391
+ //# sourceMappingURL=BlockProver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockProver.js","sourceRoot":"","sources":["../../../src/prover/block/BlockProver.ts"],"names":[],"mappings":"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"}