@proto-kit/protocol 0.1.1-develop.0

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 (333) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +45 -0
  3. package/dist/Constants.d.ts +4 -0
  4. package/dist/Constants.d.ts.map +1 -0
  5. package/dist/Constants.js +4 -0
  6. package/dist/Constants.js.map +1 -0
  7. package/dist/hooks/AccountStateHook.d.ts +52 -0
  8. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  9. package/dist/hooks/AccountStateHook.js +48 -0
  10. package/dist/hooks/AccountStateHook.js.map +1 -0
  11. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  12. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  13. package/dist/hooks/BlockHeightHook.js +16 -0
  14. package/dist/hooks/BlockHeightHook.js.map +1 -0
  15. package/dist/hooks/LastStateRootBlockHook.d.ts +8 -0
  16. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  17. package/dist/hooks/LastStateRootBlockHook.js +16 -0
  18. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  19. package/dist/hooks/NoopBlockHook.d.ts +9 -0
  20. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  21. package/dist/hooks/NoopBlockHook.js +10 -0
  22. package/dist/hooks/NoopBlockHook.js.map +1 -0
  23. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  24. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  25. package/dist/hooks/NoopSettlementHook.js +18 -0
  26. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  27. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  28. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  29. package/dist/hooks/NoopTransactionHook.js +8 -0
  30. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  31. package/dist/index.d.ts +58 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +58 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/model/MethodPublicOutput.d.ts +113 -0
  36. package/dist/model/MethodPublicOutput.d.ts.map +1 -0
  37. package/dist/model/MethodPublicOutput.js +15 -0
  38. package/dist/model/MethodPublicOutput.js.map +1 -0
  39. package/dist/model/Option.d.ts +122 -0
  40. package/dist/model/Option.d.ts.map +1 -0
  41. package/dist/model/Option.js +111 -0
  42. package/dist/model/Option.js.map +1 -0
  43. package/dist/model/Path.d.ts +31 -0
  44. package/dist/model/Path.d.ts.map +1 -0
  45. package/dist/model/Path.js +43 -0
  46. package/dist/model/Path.js.map +1 -0
  47. package/dist/model/RuntimeLike.d.ts +11 -0
  48. package/dist/model/RuntimeLike.d.ts.map +1 -0
  49. package/dist/model/RuntimeLike.js +2 -0
  50. package/dist/model/RuntimeLike.js.map +1 -0
  51. package/dist/model/StateTransition.d.ts +135 -0
  52. package/dist/model/StateTransition.d.ts.map +1 -0
  53. package/dist/model/StateTransition.js +69 -0
  54. package/dist/model/StateTransition.js.map +1 -0
  55. package/dist/model/StateTransitionProvableBatch.d.ts +198 -0
  56. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -0
  57. package/dist/model/StateTransitionProvableBatch.js +91 -0
  58. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  59. package/dist/model/network/NetworkState.d.ts +160 -0
  60. package/dist/model/network/NetworkState.d.ts.map +1 -0
  61. package/dist/model/network/NetworkState.js +32 -0
  62. package/dist/model/network/NetworkState.js.map +1 -0
  63. package/dist/model/transaction/RuntimeTransaction.d.ts +122 -0
  64. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -0
  65. package/dist/model/transaction/RuntimeTransaction.js +87 -0
  66. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  67. package/dist/model/transaction/SignedTransaction.d.ts +107 -0
  68. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  69. package/dist/model/transaction/SignedTransaction.js +34 -0
  70. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  71. package/dist/model/transaction/ValueOption.d.ts +173 -0
  72. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  73. package/dist/model/transaction/ValueOption.js +25 -0
  74. package/dist/model/transaction/ValueOption.js.map +1 -0
  75. package/dist/protocol/Protocol.d.ts +43 -0
  76. package/dist/protocol/Protocol.d.ts.map +1 -0
  77. package/dist/protocol/Protocol.js +120 -0
  78. package/dist/protocol/Protocol.js.map +1 -0
  79. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  80. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  81. package/dist/protocol/ProtocolEnvironment.js +2 -0
  82. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  83. package/dist/protocol/ProtocolModule.d.ts +9 -0
  84. package/dist/protocol/ProtocolModule.d.ts.map +1 -0
  85. package/dist/protocol/ProtocolModule.js +13 -0
  86. package/dist/protocol/ProtocolModule.js.map +1 -0
  87. package/dist/protocol/ProvableBlockHook.d.ts +8 -0
  88. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  89. package/dist/protocol/ProvableBlockHook.js +5 -0
  90. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  91. package/dist/protocol/ProvableTransactionHook.d.ts +7 -0
  92. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
  93. package/dist/protocol/ProvableTransactionHook.js +4 -0
  94. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  95. package/dist/protocol/TransitioningProtocolModule.d.ts +10 -0
  96. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -0
  97. package/dist/protocol/TransitioningProtocolModule.js +9 -0
  98. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  99. package/dist/prover/block/BlockProvable.d.ts +409 -0
  100. package/dist/prover/block/BlockProvable.d.ts.map +1 -0
  101. package/dist/prover/block/BlockProvable.js +48 -0
  102. package/dist/prover/block/BlockProvable.js.map +1 -0
  103. package/dist/prover/block/BlockProver.d.ts +94 -0
  104. package/dist/prover/block/BlockProver.d.ts.map +1 -0
  105. package/dist/prover/block/BlockProver.js +510 -0
  106. package/dist/prover/block/BlockProver.js.map +1 -0
  107. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +64 -0
  108. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  109. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +17 -0
  110. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  111. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  112. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  113. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
  114. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  115. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  116. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  117. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js +23 -0
  118. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  119. package/dist/prover/statetransition/StateTransitionProvable.d.ts +172 -0
  120. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -0
  121. package/dist/prover/statetransition/StateTransitionProvable.js +16 -0
  122. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  123. package/dist/prover/statetransition/StateTransitionProver.d.ts +48 -0
  124. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -0
  125. package/dist/prover/statetransition/StateTransitionProver.js +187 -0
  126. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  127. package/dist/settlement/ContractModule.d.ts +16 -0
  128. package/dist/settlement/ContractModule.d.ts.map +1 -0
  129. package/dist/settlement/ContractModule.js +12 -0
  130. package/dist/settlement/ContractModule.js.map +1 -0
  131. package/dist/settlement/SettlementContractModule.d.ts +53 -0
  132. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  133. package/dist/settlement/SettlementContractModule.js +80 -0
  134. package/dist/settlement/SettlementContractModule.js.map +1 -0
  135. package/dist/settlement/contracts/BridgeContract.d.ts +97 -0
  136. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  137. package/dist/settlement/contracts/BridgeContract.js +164 -0
  138. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  139. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +14 -0
  140. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  141. package/dist/settlement/contracts/BridgeContractProtocolModule.js +30 -0
  142. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  143. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +21 -0
  144. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  145. package/dist/settlement/contracts/DispatchContractProtocolModule.js +57 -0
  146. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  147. package/dist/settlement/contracts/DispatchSmartContract.d.ts +44 -0
  148. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  149. package/dist/settlement/contracts/DispatchSmartContract.js +230 -0
  150. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  151. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
  152. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  153. package/dist/settlement/contracts/SettlementContractProtocolModule.js +82 -0
  154. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  155. package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
  156. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  157. package/dist/settlement/contracts/SettlementSmartContract.js +309 -0
  158. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  159. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  160. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  161. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  162. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  163. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  164. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  165. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  166. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  167. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  168. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  169. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  170. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  171. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  172. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  173. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  174. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  175. package/dist/settlement/messages/Deposit.d.ts +77 -0
  176. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  177. package/dist/settlement/messages/Deposit.js +8 -0
  178. package/dist/settlement/messages/Deposit.js.map +1 -0
  179. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +197 -0
  180. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  181. package/dist/settlement/messages/OutgoingMessageArgument.js +33 -0
  182. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  183. package/dist/settlement/messages/Withdrawal.d.ts +78 -0
  184. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  185. package/dist/settlement/messages/Withdrawal.js +16 -0
  186. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  187. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
  188. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  189. package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
  190. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  191. package/dist/settlement/modularity/types.d.ts +8 -0
  192. package/dist/settlement/modularity/types.d.ts.map +1 -0
  193. package/dist/settlement/modularity/types.js +2 -0
  194. package/dist/settlement/modularity/types.js.map +1 -0
  195. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  196. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  197. package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
  198. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  199. package/dist/state/State.d.ts +68 -0
  200. package/dist/state/State.d.ts.map +1 -0
  201. package/dist/state/State.js +130 -0
  202. package/dist/state/State.js.map +1 -0
  203. package/dist/state/StateMap.d.ts +37 -0
  204. package/dist/state/StateMap.d.ts.map +1 -0
  205. package/dist/state/StateMap.js +56 -0
  206. package/dist/state/StateMap.js.map +1 -0
  207. package/dist/state/StateService.d.ts +6 -0
  208. package/dist/state/StateService.d.ts.map +1 -0
  209. package/dist/state/StateService.js +2 -0
  210. package/dist/state/StateService.js.map +1 -0
  211. package/dist/state/StateServiceProvider.d.ts +8 -0
  212. package/dist/state/StateServiceProvider.d.ts.map +1 -0
  213. package/dist/state/StateServiceProvider.js +37 -0
  214. package/dist/state/StateServiceProvider.js.map +1 -0
  215. package/dist/state/assert/assert.d.ts +12 -0
  216. package/dist/state/assert/assert.d.ts.map +1 -0
  217. package/dist/state/assert/assert.js +31 -0
  218. package/dist/state/assert/assert.js.map +1 -0
  219. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +193 -0
  220. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -0
  221. package/dist/state/context/RuntimeMethodExecutionContext.js +136 -0
  222. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  223. package/dist/state/context/TransitionMethodExecutionContext.d.ts +23 -0
  224. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -0
  225. package/dist/state/context/TransitionMethodExecutionContext.js +6 -0
  226. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  227. package/dist/state/protocol/ProtocolState.d.ts +7 -0
  228. package/dist/state/protocol/ProtocolState.d.ts.map +1 -0
  229. package/dist/state/protocol/ProtocolState.js +40 -0
  230. package/dist/state/protocol/ProtocolState.js.map +1 -0
  231. package/dist/utils/MinaPrefixedProvableHashList.d.ts +24 -0
  232. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  233. package/dist/utils/MinaPrefixedProvableHashList.js +53 -0
  234. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  235. package/dist/utils/PrefixedProvableHashList.d.ts +8 -0
  236. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -0
  237. package/dist/utils/PrefixedProvableHashList.js +13 -0
  238. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  239. package/dist/utils/ProvableHashList.d.ts +27 -0
  240. package/dist/utils/ProvableHashList.d.ts.map +1 -0
  241. package/dist/utils/ProvableHashList.js +44 -0
  242. package/dist/utils/ProvableHashList.js.map +1 -0
  243. package/dist/utils/ProvableReductionHashList.d.ts +14 -0
  244. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  245. package/dist/utils/ProvableReductionHashList.js +51 -0
  246. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  247. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  248. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  249. package/dist/utils/StateTransitionReductionList.js +61 -0
  250. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  251. package/dist/utils/utils.d.ts +11 -0
  252. package/dist/utils/utils.d.ts.map +1 -0
  253. package/dist/utils/utils.js +45 -0
  254. package/dist/utils/utils.js.map +1 -0
  255. package/jest.config.cjs +12 -0
  256. package/package.json +36 -0
  257. package/src/Constants.ts +3 -0
  258. package/src/hooks/AccountStateHook.ts +48 -0
  259. package/src/hooks/BlockHeightHook.ts +17 -0
  260. package/src/hooks/LastStateRootBlockHook.ts +26 -0
  261. package/src/hooks/NoopBlockHook.ts +21 -0
  262. package/src/hooks/NoopSettlementHook.ts +20 -0
  263. package/src/hooks/NoopTransactionHook.ts +10 -0
  264. package/src/index.ts +57 -0
  265. package/src/model/MethodPublicOutput.ts +14 -0
  266. package/src/model/Option.ts +172 -0
  267. package/src/model/Path.ts +50 -0
  268. package/src/model/RuntimeLike.ts +12 -0
  269. package/src/model/StateTransition.ts +88 -0
  270. package/src/model/StateTransitionProvableBatch.ts +145 -0
  271. package/src/model/Transaction.ts +31 -0
  272. package/src/model/network/NetworkState.ts +33 -0
  273. package/src/model/transaction/RuntimeTransaction.ts +105 -0
  274. package/src/model/transaction/SignedTransaction.ts +47 -0
  275. package/src/model/transaction/ValueOption.ts +28 -0
  276. package/src/protocol/Protocol.ts +226 -0
  277. package/src/protocol/ProtocolEnvironment.ts +10 -0
  278. package/src/protocol/ProtocolModule.ts +27 -0
  279. package/src/protocol/ProvableBlockHook.ts +19 -0
  280. package/src/protocol/ProvableTransactionHook.ts +13 -0
  281. package/src/protocol/TransitioningProtocolModule.ts +12 -0
  282. package/src/prover/block/BlockProvable.ts +99 -0
  283. package/src/prover/block/BlockProver.ts +990 -0
  284. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +16 -0
  285. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  286. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  287. package/src/prover/statetransition/StateTransitionProvable.ts +41 -0
  288. package/src/prover/statetransition/StateTransitionProver.ts +377 -0
  289. package/src/settlement/ContractModule.ts +31 -0
  290. package/src/settlement/SettlementContractModule.ts +145 -0
  291. package/src/settlement/contracts/BridgeContract.ts +237 -0
  292. package/src/settlement/contracts/BridgeContractProtocolModule.ts +43 -0
  293. package/src/settlement/contracts/DispatchContractProtocolModule.ts +73 -0
  294. package/src/settlement/contracts/DispatchSmartContract.ts +326 -0
  295. package/src/settlement/contracts/SettlementContractProtocolModule.ts +108 -0
  296. package/src/settlement/contracts/SettlementSmartContract.ts +498 -0
  297. package/src/settlement/contracts/TokenBridgeTree.ts +73 -0
  298. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  299. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  300. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  301. package/src/settlement/messages/Deposit.ts +7 -0
  302. package/src/settlement/messages/OutgoingMessageArgument.ts +42 -0
  303. package/src/settlement/messages/Withdrawal.ts +16 -0
  304. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  305. package/src/settlement/modularity/types.ts +22 -0
  306. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  307. package/src/state/State.ts +175 -0
  308. package/src/state/StateMap.ts +73 -0
  309. package/src/state/StateService.ts +6 -0
  310. package/src/state/StateServiceProvider.ts +37 -0
  311. package/src/state/assert/assert.ts +35 -0
  312. package/src/state/context/RuntimeMethodExecutionContext.ts +174 -0
  313. package/src/state/context/TransitionMethodExecutionContext.ts +26 -0
  314. package/src/state/protocol/ProtocolState.ts +61 -0
  315. package/src/utils/MinaPrefixedProvableHashList.ts +73 -0
  316. package/src/utils/PrefixedProvableHashList.ts +21 -0
  317. package/src/utils/ProvableHashList.ts +50 -0
  318. package/src/utils/ProvableReductionHashList.ts +68 -0
  319. package/src/utils/StateTransitionReductionList.ts +89 -0
  320. package/src/utils/utils.ts +75 -0
  321. package/test/BlockProver.test.ts +212 -0
  322. package/test/Protocol.test.ts +37 -0
  323. package/test/State.test.ts +45 -0
  324. package/test/StateTransition.test.ts +174 -0
  325. package/test/TestingProtocol.ts +52 -0
  326. package/test/compiling/types.ts +28 -0
  327. package/test/model/Option.test.ts +72 -0
  328. package/test/modularity/types.ts +35 -0
  329. package/test/state/assert/assert.test.ts +56 -0
  330. package/test/tsconfig.json +7 -0
  331. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  332. package/test/utils.test.ts +27 -0
  333. package/tsconfig.json +8 -0
@@ -0,0 +1,510 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Bool, Field, Poseidon, Provable, SelfProof, ZkProgram, } from "o1js";
14
+ import { container, inject, injectable, injectAll } from "tsyringe";
15
+ import { MAX_FIELD, provableMethod, ZkProgrammable, } from "@proto-kit/common";
16
+ import { DefaultProvableHashList } from "../../utils/ProvableHashList";
17
+ import { ProtocolModule } from "../../protocol/ProtocolModule";
18
+ import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
19
+ import { ProvableStateTransition, } from "../../model/StateTransition";
20
+ import { RuntimeMethodExecutionContext } from "../../state/context/RuntimeMethodExecutionContext";
21
+ import { NetworkState } from "../../model/network/NetworkState";
22
+ import { SignedTransaction } from "../../model/transaction/SignedTransaction";
23
+ import { MinaActions, MinaActionsHashList, } from "../../utils/MinaPrefixedProvableHashList";
24
+ import { StateTransitionReductionList } from "../../utils/StateTransitionReductionList";
25
+ import { BlockProverExecutionData, BlockProverPublicInput, BlockProverPublicOutput, DynamicRuntimeProof, } from "./BlockProvable";
26
+ import { BlockHashMerkleTreeWitness, BlockHashTreeEntry, } from "./accummulators/BlockHashMerkleTree";
27
+ import { MethodVKConfigData, RuntimeVerificationKeyAttestation, } from "./accummulators/RuntimeVerificationKeyTree";
28
+ import { RuntimeVerificationKeyRootService } from "./services/RuntimeVerificationKeyRootService";
29
+ const errors = {
30
+ stateProofNotStartingAtZero: () => "StateProof not starting ST-commitment at zero",
31
+ stateTransitionsHashNotEqual: () => "StateTransition list commitments are not equal",
32
+ propertyNotMatchingStep: (propertyName, step) => `${propertyName} not matching: ${step}`,
33
+ propertyNotMatching: (propertyName) => `${propertyName} not matching`,
34
+ stateRootNotMatching: (step) => errors.propertyNotMatchingStep("StateRoots", step),
35
+ transactionsHashNotMatching: (step) => errors.propertyNotMatchingStep("Transactions hash", step),
36
+ networkStateHashNotMatching: (step) => errors.propertyNotMatchingStep("Network state hash", step),
37
+ invalidZkProgramTreeRoot: () => "Root hash of the provided zkProgram config witness is invalid",
38
+ invalidZkProgramConfigMethodId: () => "Method id of the provided zkProgram config does not match the executed transaction method id",
39
+ };
40
+ export class BlockProverProgrammable extends ZkProgrammable {
41
+ constructor(prover, stateTransitionProver, runtime, transactionHooks, blockHooks, verificationKeyService) {
42
+ super();
43
+ this.prover = prover;
44
+ this.stateTransitionProver = stateTransitionProver;
45
+ this.runtime = runtime;
46
+ this.transactionHooks = transactionHooks;
47
+ this.blockHooks = blockHooks;
48
+ this.verificationKeyService = verificationKeyService;
49
+ this.name = "BlockProver";
50
+ }
51
+ get areProofsEnabled() {
52
+ return this.prover.areProofsEnabled;
53
+ }
54
+ /**
55
+ * Applies and checks the two proofs and applies the corresponding state
56
+ * changes to the given state
57
+ *
58
+ * @param state The from-state of the BlockProver
59
+ * @param stateTransitionProof
60
+ * @param runtimeProof
61
+ * @param executionData
62
+ * @param verificationKey
63
+ * @returns The new BlockProver-state to be used as public output
64
+ */
65
+ async applyTransaction(state, stateTransitionProof, runtimeProof, executionData, verificationKey) {
66
+ const { transaction, networkState, signature } = executionData;
67
+ const { isMessage } = runtimeProof.publicOutput;
68
+ runtimeProof.verify(verificationKey);
69
+ stateTransitionProof.verify();
70
+ const stateTo = { ...state };
71
+ // Checks for the stateTransitionProof and appProof matching
72
+ stateTransitionProof.publicInput.stateTransitionsHash.assertEquals(Field(0), errors.stateProofNotStartingAtZero());
73
+ stateTransitionProof.publicInput.protocolTransitionsHash.assertEquals(Field(0), errors.stateProofNotStartingAtZero());
74
+ runtimeProof.publicOutput.stateTransitionsHash.assertEquals(stateTransitionProof.publicOutput.stateTransitionsHash, errors.stateTransitionsHashNotEqual());
75
+ // Assert from state roots
76
+ state.stateRoot.assertEquals(stateTransitionProof.publicInput.stateRoot, errors.propertyNotMatching("from state root"));
77
+ state.stateRoot.assertEquals(stateTransitionProof.publicInput.protocolStateRoot, errors.propertyNotMatching("from protocol state root"));
78
+ // Apply protocol state transitions
79
+ await this.assertProtocolTransitions(stateTransitionProof, executionData, runtimeProof);
80
+ // Apply state if status success
81
+ stateTo.stateRoot = Provable.if(runtimeProof.publicOutput.status, stateTransitionProof.publicOutput.stateRoot, stateTransitionProof.publicOutput.protocolStateRoot);
82
+ // Check transaction integrity against appProof
83
+ const blockTransactionHash = transaction.hash();
84
+ blockTransactionHash.assertEquals(runtimeProof.publicOutput.transactionHash, "Transactions provided in AppProof and BlockProof do not match");
85
+ // Check transaction signature
86
+ new SignedTransaction({
87
+ transaction,
88
+ signature,
89
+ })
90
+ .validateSignature()
91
+ .or(isMessage)
92
+ .assertTrue("Transaction signature not valid");
93
+ // Validate layout of transaction witness
94
+ transaction.assertTransactionType(isMessage);
95
+ // Check network state integrity against appProof
96
+ state.networkStateHash.assertEquals(runtimeProof.publicOutput.networkStateHash, "Network state does not match state used in AppProof");
97
+ state.networkStateHash.assertEquals(networkState.hash(), "Network state provided to BlockProver does not match the publicInput");
98
+ return stateTo;
99
+ }
100
+ // eslint-disable-next-line max-len
101
+ // TODO How does this interact with the RuntimeMethodExecutionContext when executing runtimemethods?
102
+ async assertProtocolTransitions(stateTransitionProof, executionData, runtimeProof) {
103
+ const executionContext = container.resolve(RuntimeMethodExecutionContext);
104
+ executionContext.clear();
105
+ // Setup context for potential calls to runtime methods.
106
+ // This way they can use this.transaction etc. while still having provable
107
+ // integrity between data
108
+ executionContext.setup({
109
+ // That is why we should probably hide it from the transaction context inputs
110
+ transaction: executionData.transaction,
111
+ networkState: executionData.networkState,
112
+ });
113
+ executionContext.beforeMethod("", "", []);
114
+ for (const module of this.transactionHooks) {
115
+ // eslint-disable-next-line no-await-in-loop
116
+ await module.onTransaction(executionData);
117
+ }
118
+ executionContext.afterMethod();
119
+ const { stateTransitions, status, statusMessage } = executionContext.current().result;
120
+ status.assertTrue(statusMessage);
121
+ const transitions = stateTransitions.map((transition) => transition.toProvable());
122
+ const hashList = new StateTransitionReductionList(ProvableStateTransition, stateTransitionProof.publicInput.protocolTransitionsHash);
123
+ transitions.forEach((transition) => {
124
+ hashList.push(transition);
125
+ });
126
+ stateTransitionProof.publicOutput.protocolTransitionsHash.assertEquals(hashList.commitment, "ProtocolTransitionsHash not matching the generated protocol transitions");
127
+ }
128
+ async executeBlockHooks(state, inputNetworkState, type) {
129
+ const executionContext = container.resolve(RuntimeMethodExecutionContext);
130
+ executionContext.clear();
131
+ executionContext.beforeMethod("", "", []);
132
+ const resultingNetworkState = await this.blockHooks.reduce(async (networkStatePromise, blockHook) => {
133
+ const networkState = await networkStatePromise;
134
+ // Setup context for potential calls to runtime methods.
135
+ // With the special case that we set the new networkstate for every hook
136
+ // We also have to put in a dummy transaction for network.transaction
137
+ executionContext.setup({
138
+ transaction: RuntimeTransaction.dummyTransaction(),
139
+ networkState,
140
+ });
141
+ if (type === "beforeBlock") {
142
+ return await blockHook.beforeBlock(networkState, state);
143
+ }
144
+ if (type === "afterBlock") {
145
+ return await blockHook.afterBlock(networkState, state);
146
+ }
147
+ throw new Error("Unreachable");
148
+ }, Promise.resolve(inputNetworkState));
149
+ executionContext.afterMethod();
150
+ const { stateTransitions, status, statusMessage } = executionContext.current().result;
151
+ status.assertTrue(`Block hook call failed: ${statusMessage ?? "-"}`);
152
+ return {
153
+ networkState: resultingNetworkState,
154
+ stateTransitions,
155
+ };
156
+ }
157
+ addTransactionToBundle(state, isMessage, transaction) {
158
+ const stateTo = {
159
+ ...state,
160
+ };
161
+ const transactionHash = transaction.hash();
162
+ // Append tx to transaction list
163
+ const transactionList = new DefaultProvableHashList(Field, state.transactionsHash);
164
+ transactionList.pushIf(transactionHash, isMessage.not());
165
+ stateTo.transactionsHash = transactionList.commitment;
166
+ // Append tx to eternal transaction list
167
+ // TODO Change that to the a sequence-state compatible transaction struct
168
+ const eternalTransactionList = new DefaultProvableHashList(Field, state.eternalTransactionsHash);
169
+ eternalTransactionList.pushIf(transactionHash, isMessage.not());
170
+ stateTo.eternalTransactionsHash = eternalTransactionList.commitment;
171
+ // Append tx to incomingMessagesHash
172
+ const actionHash = MinaActions.actionHash(transaction.hashData());
173
+ const incomingMessagesList = new MinaActionsHashList(state.incomingMessagesHash);
174
+ incomingMessagesList.pushIf(actionHash, isMessage);
175
+ stateTo.incomingMessagesHash = incomingMessagesList.commitment;
176
+ return stateTo;
177
+ }
178
+ async proveTransaction(publicInput, stateProof, runtimeProof, executionData, verificationKeyWitness) {
179
+ const state = {
180
+ ...publicInput,
181
+ };
182
+ state.networkStateHash.assertEquals(executionData.networkState.hash(), "ExecutionData Networkstate doesn't equal public input hash");
183
+ publicInput.blockNumber.assertEquals(MAX_FIELD, "blockNumber has to be MAX for transaction proofs");
184
+ // Verify the [methodId, vk] tuple against the baked-in vk tree root
185
+ const { verificationKey, witness: verificationKeyTreeWitness } = verificationKeyWitness;
186
+ const root = Field(this.verificationKeyService.getRoot());
187
+ const calculatedRoot = verificationKeyTreeWitness.calculateRoot(new MethodVKConfigData({
188
+ methodId: executionData.transaction.methodId,
189
+ vkHash: verificationKey.hash,
190
+ }).hash());
191
+ root.assertEquals(calculatedRoot, errors.invalidZkProgramTreeRoot());
192
+ const bundleInclusionState = this.addTransactionToBundle(state, runtimeProof.publicOutput.isMessage, executionData.transaction);
193
+ const stateTo = await this.applyTransaction(bundleInclusionState, stateProof, runtimeProof, executionData, verificationKey);
194
+ return new BlockProverPublicOutput({
195
+ ...stateTo,
196
+ blockNumber: publicInput.blockNumber,
197
+ closed: Bool(false),
198
+ });
199
+ }
200
+ assertSTProofInput(stateTransitionProof, stateRoot) {
201
+ stateTransitionProof.publicInput.stateTransitionsHash.assertEquals(Field(0), errors.stateProofNotStartingAtZero());
202
+ stateTransitionProof.publicInput.protocolTransitionsHash.assertEquals(Field(0), errors.stateProofNotStartingAtZero());
203
+ // Assert from state roots
204
+ stateRoot.assertEquals(stateTransitionProof.publicInput.stateRoot, errors.propertyNotMatching("from state root"));
205
+ }
206
+ async proveBlock(publicInput, networkState, blockWitness,
207
+ // stateTransitionProof: StateTransitionProof,
208
+ transactionProof) {
209
+ const state = {
210
+ ...publicInput,
211
+ };
212
+ // 1. Make assertions about the inputs
213
+ publicInput.transactionsHash.assertEquals(Field(0), "Transactionshash has to start at 0");
214
+ publicInput.networkStateHash.assertEquals(networkState.hash(), "Wrong NetworkState supplied");
215
+ transactionProof.publicInput.transactionsHash.assertEquals(Field(0), "TransactionProof transactionshash has to start at 0");
216
+ transactionProof.publicInput.blockHashRoot.assertEquals(Field(0), "TransactionProof cannot carry the blockHashRoot - publicInput");
217
+ transactionProof.publicOutput.blockHashRoot.assertEquals(Field(0), "TransactionProof cannot carry the blockHashRoot - publicOutput");
218
+ transactionProof.publicInput.networkStateHash.assertEquals(transactionProof.publicOutput.networkStateHash, "TransactionProof cannot alter the network state");
219
+ transactionProof.publicInput.eternalTransactionsHash.assertEquals(state.eternalTransactionsHash, "TransactionProof starting eternalTransactionHash not matching");
220
+ transactionProof.publicInput.incomingMessagesHash.assertEquals(state.incomingMessagesHash, "TransactionProof starting incomingMessagesHash not matching");
221
+ // TODO Reintroduce ST Proofs
222
+ // Verify ST Proof only if STs have been emitted,
223
+ // otherwise we can input a dummy proof
224
+ // const stsEmitted = stateTransitionProof.publicOutput.stateTransitionsHash
225
+ // .equals(0)
226
+ // .and(stateTransitionProof.publicOutput.protocolTransitionsHash.equals(0))
227
+ // .not();
228
+ // Provable.log("VerifyIf 1", stsEmitted);
229
+ // stateTransitionProof.verifyIf(Bool(false));
230
+ // stateTransitionProof.verifyIf(stsEmitted);
231
+ // Verify Transaction proof if it has at least 1 tx - i.e. the
232
+ // input and output doesn't match fully
233
+ // We have to compare the whole input and output because we can make no
234
+ // assumptions about the values, since it can be an arbitrary dummy-proof
235
+ const txProofOutput = transactionProof.publicOutput;
236
+ const isEmptyTransition = txProofOutput.equals(transactionProof.publicInput, txProofOutput.closed);
237
+ Provable.log("VerifyIf 2", isEmptyTransition.not());
238
+ transactionProof.verifyIf(isEmptyTransition.not());
239
+ // 2. Execute beforeBlock hooks
240
+ const beforeBlockResult = await this.executeBlockHooks(state, networkState, "beforeBlock");
241
+ // const beforeBlockHashList = new StateTransitionReductionList(
242
+ // ProvableStateTransition
243
+ // );
244
+ // beforeBlockResult.stateTransitions.forEach((st) => {
245
+ // beforeBlockHashList.push(st.toProvable());
246
+ // });
247
+ // We are reusing protocolSTs here as beforeBlock STs
248
+ // TODO Not possible atm bcs we can't have a seperation between protocol/runtime state roots,
249
+ // which we would for both before and after to be able to emit STs
250
+ // stateTransitionProof.publicInput.protocolTransitionsHash.assertEquals(
251
+ // beforeBlockHashList.commitment
252
+ // );
253
+ // state.stateRoot = stateTransitionProof.publicInput.protocolStateRoot;
254
+ // TODO Only for now
255
+ // beforeBlockHashList.commitment.assertEquals(
256
+ // Field(0),
257
+ // "beforeBlock() cannot emit state transitions yet"
258
+ // );
259
+ // 4. Apply TX-type BlockProof
260
+ transactionProof.publicInput.networkStateHash.assertEquals(beforeBlockResult.networkState.hash(), "TransactionProof networkstate hash not matching beforeBlock hook result");
261
+ transactionProof.publicInput.stateRoot.assertEquals(state.stateRoot, "TransactionProof input state root not matching blockprover state root");
262
+ state.stateRoot = transactionProof.publicOutput.stateRoot;
263
+ state.transactionsHash = transactionProof.publicOutput.transactionsHash;
264
+ state.eternalTransactionsHash =
265
+ transactionProof.publicOutput.eternalTransactionsHash;
266
+ state.incomingMessagesHash =
267
+ transactionProof.publicOutput.incomingMessagesHash;
268
+ // 5. Execute afterBlock hooks
269
+ // this.assertSTProofInput(stateTransitionProof, state.stateRoot);
270
+ const afterBlockResult = await this.executeBlockHooks(state, beforeBlockResult.networkState, "afterBlock");
271
+ const afterBlockHashList = new StateTransitionReductionList(ProvableStateTransition);
272
+ afterBlockResult.stateTransitions.forEach((st) => {
273
+ afterBlockHashList.push(st.toProvable());
274
+ });
275
+ state.networkStateHash = afterBlockResult.networkState.hash();
276
+ // We are reusing runtime STs here as afterBlock STs
277
+ // stateTransitionProof.publicInput.protocolTransitionsHash.assertEquals(
278
+ // afterBlockHashList.commitment,
279
+ // "STProof from-ST-hash not matching generated ST-hash from afterBlock hooks"
280
+ // );
281
+ // state.stateRoot = Provable.if(
282
+ // stsEmitted,
283
+ // stateTransitionProof.publicOutput.stateRoot,
284
+ // state.stateRoot
285
+ // );
286
+ // 6. Close block
287
+ // Calculate the new block index
288
+ const blockIndex = blockWitness.calculateIndex();
289
+ blockIndex.assertEquals(publicInput.blockNumber);
290
+ blockWitness
291
+ .calculateRoot(Field(0))
292
+ .assertEquals(publicInput.blockHashRoot, "Supplied block hash witness not matching state root");
293
+ state.blockHashRoot = blockWitness.calculateRoot(new BlockHashTreeEntry({
294
+ // Mirroring UnprovenBlock.hash()
295
+ blockHash: Poseidon.hash([blockIndex, state.transactionsHash]),
296
+ closed: Bool(true),
297
+ }).hash());
298
+ return new BlockProverPublicOutput({
299
+ ...state,
300
+ blockNumber: blockIndex.add(1),
301
+ closed: Bool(true),
302
+ });
303
+ }
304
+ async merge(publicInput, proof1, proof2) {
305
+ proof1.verify();
306
+ proof2.verify();
307
+ // Check state
308
+ publicInput.stateRoot.assertEquals(proof1.publicInput.stateRoot, errors.stateRootNotMatching("publicInput.from -> proof1.from"));
309
+ proof1.publicOutput.stateRoot.assertEquals(proof2.publicInput.stateRoot, errors.stateRootNotMatching("proof1.to -> proof2.from"));
310
+ // Check transaction list hash.
311
+ // Only assert them if these are tx proofs, skip for closed proofs
312
+ publicInput.transactionsHash
313
+ .equals(proof1.publicInput.transactionsHash)
314
+ .or(proof1.publicOutput.closed)
315
+ .assertTrue(errors.transactionsHashNotMatching("publicInput.from -> proof1.from"));
316
+ proof1.publicOutput.transactionsHash
317
+ .equals(proof2.publicInput.transactionsHash)
318
+ .or(proof1.publicOutput.closed)
319
+ .assertTrue(errors.transactionsHashNotMatching("proof1.to -> proof2.from"));
320
+ // Check networkhash
321
+ publicInput.networkStateHash.assertEquals(proof1.publicInput.networkStateHash, errors.networkStateHashNotMatching("publicInput.from -> proof1.from"));
322
+ proof1.publicOutput.networkStateHash.assertEquals(proof2.publicInput.networkStateHash, errors.networkStateHashNotMatching("proof1.to -> proof2.from"));
323
+ // Check blockHashRoot
324
+ publicInput.blockHashRoot.assertEquals(proof1.publicInput.blockHashRoot, errors.transactionsHashNotMatching("publicInput.from -> proof1.from"));
325
+ proof1.publicOutput.blockHashRoot.assertEquals(proof2.publicInput.blockHashRoot, errors.transactionsHashNotMatching("proof1.to -> proof2.from"));
326
+ // Check eternalTransactionsHash
327
+ publicInput.eternalTransactionsHash.assertEquals(proof1.publicInput.eternalTransactionsHash, errors.transactionsHashNotMatching("publicInput.from -> proof1.from"));
328
+ proof1.publicOutput.eternalTransactionsHash.assertEquals(proof2.publicInput.eternalTransactionsHash, errors.transactionsHashNotMatching("proof1.to -> proof2.from"));
329
+ // Check incomingMessagesHash
330
+ publicInput.incomingMessagesHash.assertEquals(proof1.publicInput.incomingMessagesHash, errors.propertyNotMatchingStep("IncomingMessagesHash", "publicInput.from -> proof1.from"));
331
+ proof1.publicOutput.incomingMessagesHash.assertEquals(proof2.publicInput.incomingMessagesHash, errors.propertyNotMatchingStep("IncomingMessagesHash", "proof1.to -> proof2.from"));
332
+ // Assert closed indicator matches
333
+ // (i.e. we can only merge TX-Type and Block-Type with each other)
334
+ proof1.publicOutput.closed.assertEquals(proof2.publicOutput.closed, "Closed indicators not matching");
335
+ // Either
336
+ // blockNumbers are unset and proofs are unclosed or
337
+ // both blocks are closed, then they have to increment or
338
+ // one block is closed, then height has to be the same
339
+ // Imperative algo would look like
340
+ // if(proof1.height == MAX && proof2.height == MAX){
341
+ // assert !proof1.closed && !proof2.closed;
342
+ // }else if(proof1.closed && proof2.closed){
343
+ // assert proof1.height + 1 == proof2.height
344
+ // // next one is omitted for now
345
+ // }else if(proof1.closed || proof2.closed{
346
+ // assert proof1.height == proof2.height
347
+ // }
348
+ const proof1Closed = proof1.publicOutput.closed;
349
+ const proof2Closed = proof2.publicOutput.closed;
350
+ const blockNumberProgressionValid = publicInput.blockNumber
351
+ .equals(proof1.publicInput.blockNumber)
352
+ .and(proof1.publicOutput.blockNumber.equals(proof2.publicInput.blockNumber));
353
+ // For tx proofs, we check that the progression starts and end with MAX
354
+ // in addition to that both proofs are non-closed
355
+ const isValidTransactionMerge = publicInput.blockNumber
356
+ .equals(MAX_FIELD)
357
+ .and(blockNumberProgressionValid)
358
+ .and(proof1Closed.or(proof2Closed).not());
359
+ const isValidClosedMerge = proof1Closed
360
+ .and(proof2Closed)
361
+ .and(blockNumberProgressionValid);
362
+ isValidTransactionMerge
363
+ .or(isValidClosedMerge)
364
+ .assertTrue("Invalid BlockProof merge");
365
+ return new BlockProverPublicOutput({
366
+ stateRoot: proof2.publicOutput.stateRoot,
367
+ transactionsHash: proof2.publicOutput.transactionsHash,
368
+ networkStateHash: proof2.publicOutput.networkStateHash,
369
+ blockHashRoot: proof2.publicOutput.blockHashRoot,
370
+ eternalTransactionsHash: proof2.publicOutput.eternalTransactionsHash,
371
+ incomingMessagesHash: proof2.publicOutput.incomingMessagesHash,
372
+ closed: isValidClosedMerge,
373
+ blockNumber: proof2.publicOutput.blockNumber,
374
+ });
375
+ }
376
+ /**
377
+ * Creates the BlockProver ZkProgram.
378
+ * Recursive linking of proofs is done via the previously
379
+ * injected StateTransitionProver and the required AppChainProof class
380
+ */
381
+ zkProgramFactory() {
382
+ const { prover, stateTransitionProver } = this;
383
+ const StateTransitionProofClass = stateTransitionProver.zkProgram[0].Proof;
384
+ const proveTransaction = prover.proveTransaction.bind(prover);
385
+ const proveBlock = prover.proveBlock.bind(prover);
386
+ const merge = prover.merge.bind(prover);
387
+ const program = ZkProgram({
388
+ name: "BlockProver",
389
+ publicInput: BlockProverPublicInput,
390
+ publicOutput: BlockProverPublicOutput,
391
+ methods: {
392
+ proveTransaction: {
393
+ privateInputs: [
394
+ StateTransitionProofClass,
395
+ DynamicRuntimeProof,
396
+ BlockProverExecutionData,
397
+ RuntimeVerificationKeyAttestation,
398
+ ],
399
+ async method(publicInput, stateProof, appProof, executionData, verificationKeyAttestation) {
400
+ return await proveTransaction(publicInput, stateProof, appProof, executionData, verificationKeyAttestation);
401
+ },
402
+ },
403
+ proveBlock: {
404
+ privateInputs: [
405
+ NetworkState,
406
+ BlockHashMerkleTreeWitness,
407
+ // StateTransitionProofClass,
408
+ (SelfProof),
409
+ ],
410
+ async method(publicInput, networkState, blockWitness,
411
+ // stateTransitionProof: StateTransitionProof,
412
+ transactionProof) {
413
+ return await proveBlock(publicInput, networkState, blockWitness,
414
+ // stateTransitionProof,
415
+ transactionProof);
416
+ },
417
+ },
418
+ merge: {
419
+ privateInputs: [
420
+ (SelfProof),
421
+ (SelfProof),
422
+ ],
423
+ async method(publicInput, proof1, proof2) {
424
+ return await merge(publicInput, proof1, proof2);
425
+ },
426
+ },
427
+ },
428
+ });
429
+ const methods = {
430
+ proveTransaction: program.proveTransaction,
431
+ proveBlock: program.proveBlock,
432
+ merge: program.merge,
433
+ };
434
+ const SelfProofClass = ZkProgram.Proof(program);
435
+ return [
436
+ {
437
+ name: program.name,
438
+ compile: program.compile.bind(program),
439
+ verify: program.verify.bind(program),
440
+ analyzeMethods: program.analyzeMethods.bind(program),
441
+ Proof: SelfProofClass,
442
+ methods,
443
+ },
444
+ ];
445
+ }
446
+ }
447
+ __decorate([
448
+ provableMethod(),
449
+ __metadata("design:type", Function),
450
+ __metadata("design:paramtypes", [BlockProverPublicInput, Object, DynamicRuntimeProof,
451
+ BlockProverExecutionData,
452
+ RuntimeVerificationKeyAttestation]),
453
+ __metadata("design:returntype", Promise)
454
+ ], BlockProverProgrammable.prototype, "proveTransaction", null);
455
+ __decorate([
456
+ provableMethod(),
457
+ __metadata("design:type", Function),
458
+ __metadata("design:paramtypes", [BlockProverPublicInput,
459
+ NetworkState,
460
+ BlockHashMerkleTreeWitness, Object]),
461
+ __metadata("design:returntype", Promise)
462
+ ], BlockProverProgrammable.prototype, "proveBlock", null);
463
+ __decorate([
464
+ provableMethod(),
465
+ __metadata("design:type", Function),
466
+ __metadata("design:paramtypes", [BlockProverPublicInput, Object, Object]),
467
+ __metadata("design:returntype", Promise)
468
+ ], BlockProverProgrammable.prototype, "merge", null);
469
+ /**
470
+ * BlockProver class, which aggregates a AppChainProof and
471
+ * a StateTransitionProof into a single BlockProof, that can
472
+ * then be merged to be committed to the base-layer contract
473
+ */
474
+ export let BlockProver = class BlockProver extends ProtocolModule {
475
+ constructor(stateTransitionProver, runtime, transactionHooks, blockHooks, verificationKeyService) {
476
+ super();
477
+ this.stateTransitionProver = stateTransitionProver;
478
+ this.runtime = runtime;
479
+ this.zkProgrammable = new BlockProverProgrammable(this, stateTransitionProver.zkProgrammable, runtime.zkProgrammable, transactionHooks, blockHooks, verificationKeyService);
480
+ }
481
+ async compile(registry) {
482
+ await registry.forceProverExists(async () => {
483
+ await this.stateTransitionProver.compile(registry);
484
+ await this.runtime.compile(registry);
485
+ });
486
+ return await this.zkProgrammable.compile(registry);
487
+ }
488
+ proveTransaction(publicInput, stateProof, appProof, executionData, verificationKeyAttestation) {
489
+ return this.zkProgrammable.proveTransaction(publicInput, stateProof, appProof, executionData, verificationKeyAttestation);
490
+ }
491
+ proveBlock(publicInput, networkState, blockWitness,
492
+ // stateTransitionProof: StateTransitionProof,
493
+ transactionProof) {
494
+ return this.zkProgrammable.proveBlock(publicInput, networkState, blockWitness,
495
+ // stateTransitionProof,
496
+ transactionProof);
497
+ }
498
+ merge(publicInput, proof1, proof2) {
499
+ return this.zkProgrammable.merge(publicInput, proof1, proof2);
500
+ }
501
+ };
502
+ BlockProver = __decorate([
503
+ injectable(),
504
+ __param(0, inject("StateTransitionProver")),
505
+ __param(1, inject("Runtime")),
506
+ __param(2, injectAll("ProvableTransactionHook")),
507
+ __param(3, injectAll("ProvableBlockHook")),
508
+ __metadata("design:paramtypes", [Object, Object, Array, Array, RuntimeVerificationKeyRootService])
509
+ ], BlockProver);
510
+ //# 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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"}
@@ -0,0 +1,64 @@
1
+ import { Field } from "o1js";
2
+ declare const BlockHashMerkleTree_base: import("@proto-kit/common").AbstractMerkleTreeClass;
3
+ export declare class BlockHashMerkleTree extends BlockHashMerkleTree_base {
4
+ }
5
+ export declare class BlockHashMerkleTreeWitness extends BlockHashMerkleTree.WITNESS {
6
+ }
7
+ declare const BlockHashTreeEntry_base: (new (value: {
8
+ blockHash: import("o1js/dist/node/lib/provable/field").Field;
9
+ closed: import("o1js/dist/node/lib/provable/bool").Bool;
10
+ }) => {
11
+ blockHash: import("o1js/dist/node/lib/provable/field").Field;
12
+ closed: import("o1js/dist/node/lib/provable/bool").Bool;
13
+ }) & {
14
+ _isStruct: true;
15
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
16
+ blockHash: import("o1js/dist/node/lib/provable/field").Field;
17
+ closed: import("o1js/dist/node/lib/provable/bool").Bool;
18
+ }, {
19
+ blockHash: bigint;
20
+ closed: boolean;
21
+ }>, "fromFields"> & {
22
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
23
+ blockHash: import("o1js/dist/node/lib/provable/field").Field;
24
+ closed: import("o1js/dist/node/lib/provable/bool").Bool;
25
+ };
26
+ } & {
27
+ fromValue: (value: {
28
+ blockHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
29
+ closed: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
30
+ }) => {
31
+ blockHash: import("o1js/dist/node/lib/provable/field").Field;
32
+ closed: import("o1js/dist/node/lib/provable/bool").Bool;
33
+ };
34
+ toInput: (x: {
35
+ blockHash: import("o1js/dist/node/lib/provable/field").Field;
36
+ closed: import("o1js/dist/node/lib/provable/bool").Bool;
37
+ }) => {
38
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
39
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
40
+ };
41
+ toJSON: (x: {
42
+ blockHash: import("o1js/dist/node/lib/provable/field").Field;
43
+ closed: import("o1js/dist/node/lib/provable/bool").Bool;
44
+ }) => {
45
+ blockHash: string;
46
+ closed: boolean;
47
+ };
48
+ fromJSON: (x: {
49
+ blockHash: string;
50
+ closed: boolean;
51
+ }) => {
52
+ blockHash: import("o1js/dist/node/lib/provable/field").Field;
53
+ closed: import("o1js/dist/node/lib/provable/bool").Bool;
54
+ };
55
+ empty: () => {
56
+ blockHash: import("o1js/dist/node/lib/provable/field").Field;
57
+ closed: import("o1js/dist/node/lib/provable/bool").Bool;
58
+ };
59
+ };
60
+ export declare class BlockHashTreeEntry extends BlockHashTreeEntry_base {
61
+ hash(): Field;
62
+ }
63
+ export {};
64
+ //# sourceMappingURL=BlockHashMerkleTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockHashMerkleTree.d.ts","sourceRoot":"","sources":["../../../../src/prover/block/accummulators/BlockHashMerkleTree.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,EAAoB,MAAM,MAAM,CAAC;;AAErD,qBAAa,mBAAoB,SAAQ,wBAAoB;CAAG;AAChE,qBAAa,0BAA2B,SAAQ,mBAAmB,CAAC,OAAO;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE9E,qBAAa,kBAAmB,SAAQ,uBAKtC;IACO,IAAI,IAAI,KAAK;CAGrB"}
@@ -0,0 +1,17 @@
1
+ import { createMerkleTree } from "@proto-kit/common";
2
+ import { Bool, Field, Poseidon, Struct } from "o1js";
3
+ export class BlockHashMerkleTree extends createMerkleTree(40) {
4
+ }
5
+ export class BlockHashMerkleTreeWitness extends BlockHashMerkleTree.WITNESS {
6
+ }
7
+ export class BlockHashTreeEntry extends Struct({
8
+ blockHash: Field,
9
+ closed: Bool,
10
+ // TODO We could add startingEternalTransactionsHash here to offer
11
+ // a more trivial connection to the sequence state
12
+ }) {
13
+ hash() {
14
+ return Poseidon.hash([this.blockHash, ...this.closed.toFields()]);
15
+ }
16
+ }
17
+ //# sourceMappingURL=BlockHashMerkleTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockHashMerkleTree.js","sourceRoot":"","sources":["../../../../src/prover/block/accummulators/BlockHashMerkleTree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAErD,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB,CAAC,EAAE,CAAC;CAAG;AAChE,MAAM,OAAO,0BAA2B,SAAQ,mBAAmB,CAAC,OAAO;CAAG;AAE9E,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC;IAC7C,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,IAAI;IACZ,kEAAkE;IAClE,kDAAkD;CACnD,CAAC;IACO,IAAI;QACT,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;CACF"}