@proto-kit/protocol 0.1.1-develop.165 → 0.1.1-develop.1665

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 (441) hide show
  1. package/dist/Constants.js +1 -0
  2. package/dist/Constants.js.map +1 -0
  3. package/dist/hashing/mina-prefixes.d.ts +10 -0
  4. package/dist/hashing/mina-prefixes.d.ts.map +1 -0
  5. package/dist/hashing/mina-prefixes.js +10 -0
  6. package/dist/hashing/mina-prefixes.js.map +1 -0
  7. package/dist/hashing/protokit-prefixes.d.ts +10 -0
  8. package/dist/hashing/protokit-prefixes.d.ts.map +1 -0
  9. package/dist/hashing/protokit-prefixes.js +24 -0
  10. package/dist/hashing/protokit-prefixes.js.map +1 -0
  11. package/dist/hooks/AccountStateHook.d.ts +52 -0
  12. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  13. package/dist/hooks/AccountStateHook.js +52 -0
  14. package/dist/hooks/AccountStateHook.js.map +1 -0
  15. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  16. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  17. package/dist/hooks/BlockHeightHook.js +16 -0
  18. package/dist/hooks/BlockHeightHook.js.map +1 -0
  19. package/dist/hooks/LastStateRootBlockHook.d.ts +7 -0
  20. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  21. package/dist/hooks/LastStateRootBlockHook.js +16 -0
  22. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  23. package/dist/hooks/NoopBlockHook.d.ts +8 -0
  24. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  25. package/dist/hooks/NoopBlockHook.js +10 -0
  26. package/dist/hooks/NoopBlockHook.js.map +1 -0
  27. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  28. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  29. package/dist/{prover/statetransition/StateTransitionWitnessProvider.js → hooks/NoopSettlementHook.js} +8 -7
  30. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  31. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  32. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  33. package/dist/hooks/NoopTransactionHook.js +11 -0
  34. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  35. package/dist/index.d.ts +51 -9
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +52 -9
  38. package/dist/index.js.map +1 -0
  39. package/dist/model/AppliedStateTransitionBatch.d.ts +114 -0
  40. package/dist/model/AppliedStateTransitionBatch.d.ts.map +1 -0
  41. package/dist/model/AppliedStateTransitionBatch.js +16 -0
  42. package/dist/model/AppliedStateTransitionBatch.js.map +1 -0
  43. package/dist/model/MethodPublicOutput.d.ts +83 -29
  44. package/dist/model/MethodPublicOutput.d.ts.map +1 -1
  45. package/dist/model/MethodPublicOutput.js +4 -1
  46. package/dist/model/MethodPublicOutput.js.map +1 -0
  47. package/dist/model/Option.d.ts +70 -42
  48. package/dist/model/Option.d.ts.map +1 -1
  49. package/dist/model/Option.js +62 -47
  50. package/dist/model/Option.js.map +1 -0
  51. package/dist/model/Path.d.ts +4 -3
  52. package/dist/model/Path.d.ts.map +1 -1
  53. package/dist/model/Path.js +6 -5
  54. package/dist/model/Path.js.map +1 -0
  55. package/dist/model/RuntimeLike.d.ts +11 -0
  56. package/dist/model/RuntimeLike.d.ts.map +1 -0
  57. package/dist/model/RuntimeLike.js +2 -0
  58. package/dist/model/RuntimeLike.js.map +1 -0
  59. package/dist/model/StateTransition.d.ts +67 -16
  60. package/dist/model/StateTransition.d.ts.map +1 -1
  61. package/dist/model/StateTransition.js +18 -2
  62. package/dist/model/StateTransition.js.map +1 -0
  63. package/dist/model/StateTransitionProvableBatch.d.ts +389 -16
  64. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  65. package/dist/model/StateTransitionProvableBatch.js +88 -11
  66. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  67. package/dist/model/network/NetworkState.d.ts +105 -9
  68. package/dist/model/network/NetworkState.d.ts.map +1 -1
  69. package/dist/model/network/NetworkState.js +20 -2
  70. package/dist/model/network/NetworkState.js.map +1 -0
  71. package/dist/model/transaction/RuntimeTransaction.d.ts +96 -28
  72. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
  73. package/dist/model/transaction/RuntimeTransaction.js +75 -11
  74. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  75. package/dist/model/transaction/SignedTransaction.d.ts +107 -0
  76. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  77. package/dist/model/transaction/SignedTransaction.js +34 -0
  78. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  79. package/dist/model/transaction/ValueOption.d.ts +173 -0
  80. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  81. package/dist/model/transaction/ValueOption.js +25 -0
  82. package/dist/model/transaction/ValueOption.js.map +1 -0
  83. package/dist/protocol/Protocol.d.ts +27 -25
  84. package/dist/protocol/Protocol.d.ts.map +1 -1
  85. package/dist/protocol/Protocol.js +98 -28
  86. package/dist/protocol/Protocol.js.map +1 -0
  87. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  88. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  89. package/dist/protocol/ProtocolEnvironment.js +2 -0
  90. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  91. package/dist/protocol/ProtocolModule.d.ts +7 -7
  92. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  93. package/dist/protocol/ProtocolModule.js +10 -7
  94. package/dist/protocol/ProtocolModule.js.map +1 -0
  95. package/dist/protocol/ProvableBlockHook.d.ts +19 -0
  96. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  97. package/dist/protocol/ProvableBlockHook.js +21 -0
  98. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  99. package/dist/protocol/ProvableTransactionHook.d.ts +34 -0
  100. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
  101. package/dist/protocol/ProvableTransactionHook.js +13 -0
  102. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  103. package/dist/protocol/TransitioningProtocolModule.d.ts +10 -0
  104. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -0
  105. package/dist/protocol/TransitioningProtocolModule.js +9 -0
  106. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  107. package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
  108. package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
  109. package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
  110. package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
  111. package/dist/prover/accumulators/StateTransitionReductionList.d.ts +12 -0
  112. package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
  113. package/dist/prover/accumulators/StateTransitionReductionList.js +64 -0
  114. package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
  115. package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
  116. package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
  117. package/dist/prover/accumulators/TransactionHashList.js +8 -0
  118. package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
  119. package/dist/prover/accumulators/WitnessedRootHashList.d.ts +137 -0
  120. package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
  121. package/dist/prover/accumulators/WitnessedRootHashList.js +50 -0
  122. package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
  123. package/dist/prover/block/BlockProvable.d.ts +869 -65
  124. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  125. package/dist/prover/block/BlockProvable.js +86 -6
  126. package/dist/prover/block/BlockProvable.js.map +1 -0
  127. package/dist/prover/block/BlockProver.d.ts +82 -34
  128. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  129. package/dist/prover/block/BlockProver.js +505 -86
  130. package/dist/prover/block/BlockProver.js.map +1 -0
  131. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +106 -0
  132. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  133. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +25 -0
  134. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  135. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  136. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  137. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
  138. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  139. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  140. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  141. package/dist/prover/{statetransition/StateTransitionWitnessProviderReference.js → block/services/RuntimeVerificationKeyRootService.js} +11 -8
  142. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  143. package/dist/prover/statetransition/StateTransitionProvable.d.ts +137 -48
  144. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  145. package/dist/prover/statetransition/StateTransitionProvable.js +10 -5
  146. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  147. package/dist/prover/statetransition/StateTransitionProver.d.ts +30 -17
  148. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  149. package/dist/prover/statetransition/StateTransitionProver.js +169 -74
  150. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  151. package/dist/settlement/ContractModule.d.ts +16 -0
  152. package/dist/settlement/ContractModule.d.ts.map +1 -0
  153. package/dist/settlement/ContractModule.js +12 -0
  154. package/dist/settlement/ContractModule.js.map +1 -0
  155. package/dist/settlement/SettlementContractModule.d.ts +51 -0
  156. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  157. package/dist/settlement/SettlementContractModule.js +80 -0
  158. package/dist/settlement/SettlementContractModule.js.map +1 -0
  159. package/dist/settlement/contracts/BridgeContract.d.ts +116 -0
  160. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  161. package/dist/settlement/contracts/BridgeContract.js +259 -0
  162. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  163. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +16 -0
  164. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  165. package/dist/settlement/contracts/BridgeContractProtocolModule.js +41 -0
  166. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  167. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +21 -0
  168. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  169. package/dist/settlement/contracts/DispatchContractProtocolModule.js +57 -0
  170. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  171. package/dist/settlement/contracts/DispatchSmartContract.d.ts +44 -0
  172. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  173. package/dist/settlement/contracts/DispatchSmartContract.js +229 -0
  174. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  175. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
  176. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  177. package/dist/settlement/contracts/SettlementContractProtocolModule.js +84 -0
  178. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  179. package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
  180. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  181. package/dist/settlement/contracts/SettlementSmartContract.js +310 -0
  182. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  183. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  184. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  185. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  186. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  187. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  188. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  189. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  190. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  191. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  192. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  193. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  194. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  195. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  196. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  197. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  198. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  199. package/dist/settlement/messages/Deposit.d.ts +77 -0
  200. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  201. package/dist/settlement/messages/Deposit.js +8 -0
  202. package/dist/settlement/messages/Deposit.js.map +1 -0
  203. package/dist/settlement/messages/OutgoingMessage.d.ts +67 -0
  204. package/dist/settlement/messages/OutgoingMessage.d.ts.map +1 -0
  205. package/dist/settlement/messages/OutgoingMessage.js +7 -0
  206. package/dist/settlement/messages/OutgoingMessage.js.map +1 -0
  207. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +462 -0
  208. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  209. package/dist/settlement/messages/OutgoingMessageArgument.js +40 -0
  210. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  211. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts +25 -0
  212. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
  213. package/dist/settlement/modularity/OutgoingMessageProcessor.js +30 -0
  214. package/dist/settlement/modularity/OutgoingMessageProcessor.js.map +1 -0
  215. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
  216. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  217. package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
  218. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  219. package/dist/settlement/modularity/types.d.ts +8 -0
  220. package/dist/settlement/modularity/types.d.ts.map +1 -0
  221. package/dist/settlement/modularity/types.js +2 -0
  222. package/dist/settlement/modularity/types.js.map +1 -0
  223. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  224. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  225. package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
  226. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  227. package/dist/state/State.d.ts +68 -0
  228. package/dist/state/State.d.ts.map +1 -0
  229. package/dist/state/State.js +131 -0
  230. package/dist/state/State.js.map +1 -0
  231. package/dist/state/StateMap.d.ts +37 -0
  232. package/dist/state/StateMap.d.ts.map +1 -0
  233. package/dist/state/StateMap.js +56 -0
  234. package/dist/state/StateMap.js.map +1 -0
  235. package/dist/state/StateService.d.ts +6 -0
  236. package/dist/state/StateService.d.ts.map +1 -0
  237. package/dist/state/StateService.js +2 -0
  238. package/dist/state/StateService.js.map +1 -0
  239. package/dist/state/StateServiceProvider.d.ts +8 -0
  240. package/dist/state/StateServiceProvider.d.ts.map +1 -0
  241. package/dist/state/StateServiceProvider.js +37 -0
  242. package/dist/state/StateServiceProvider.js.map +1 -0
  243. package/dist/state/assert/assert.d.ts +12 -0
  244. package/dist/state/assert/assert.d.ts.map +1 -0
  245. package/dist/state/assert/assert.js +33 -0
  246. package/dist/state/assert/assert.js.map +1 -0
  247. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +193 -0
  248. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -0
  249. package/dist/state/context/RuntimeMethodExecutionContext.js +138 -0
  250. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  251. package/dist/state/context/TransitionMethodExecutionContext.d.ts +23 -0
  252. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -0
  253. package/dist/state/context/TransitionMethodExecutionContext.js +6 -0
  254. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  255. package/dist/state/protocol/ProtocolState.d.ts +13 -0
  256. package/dist/state/protocol/ProtocolState.d.ts.map +1 -0
  257. package/dist/state/protocol/ProtocolState.js +58 -0
  258. package/dist/state/protocol/ProtocolState.js.map +1 -0
  259. package/dist/utils/FieldOptions.d.ts +62 -0
  260. package/dist/utils/FieldOptions.d.ts.map +1 -0
  261. package/dist/utils/FieldOptions.js +13 -0
  262. package/dist/utils/FieldOptions.js.map +1 -0
  263. package/dist/utils/MinaPrefixedProvableHashList.d.ts +19 -0
  264. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  265. package/dist/utils/MinaPrefixedProvableHashList.js +46 -0
  266. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  267. package/dist/utils/PrefixedProvableHashList.d.ts +2 -2
  268. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
  269. package/dist/utils/PrefixedProvableHashList.js +2 -1
  270. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  271. package/dist/utils/ProvableHashList.d.ts +23 -4
  272. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  273. package/dist/utils/ProvableHashList.js +38 -2
  274. package/dist/utils/ProvableHashList.js.map +1 -0
  275. package/dist/utils/ProvableReductionHashList.d.ts +18 -0
  276. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  277. package/dist/utils/ProvableReductionHashList.js +54 -0
  278. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  279. package/dist/utils/utils.d.ts +20 -0
  280. package/dist/utils/utils.d.ts.map +1 -0
  281. package/dist/utils/utils.js +51 -0
  282. package/dist/utils/utils.js.map +1 -0
  283. package/jest.config.cjs +12 -1
  284. package/package.json +11 -9
  285. package/src/hashing/mina-prefixes.ts +10 -0
  286. package/src/hashing/protokit-prefixes.ts +37 -0
  287. package/src/hooks/AccountStateHook.ts +57 -0
  288. package/src/hooks/BlockHeightHook.ts +17 -0
  289. package/src/hooks/LastStateRootBlockHook.ts +25 -0
  290. package/src/hooks/NoopBlockHook.ts +24 -0
  291. package/src/hooks/NoopSettlementHook.ts +20 -0
  292. package/src/hooks/NoopTransactionHook.ts +13 -0
  293. package/src/index.ts +51 -9
  294. package/src/model/AppliedStateTransitionBatch.ts +16 -0
  295. package/src/model/MethodPublicOutput.ts +3 -1
  296. package/src/model/Option.ts +99 -60
  297. package/src/model/Path.ts +9 -5
  298. package/src/model/RuntimeLike.ts +12 -0
  299. package/src/model/StateTransition.ts +25 -3
  300. package/src/model/StateTransitionProvableBatch.ts +117 -14
  301. package/src/model/Transaction.ts +3 -1
  302. package/src/model/network/NetworkState.ts +21 -3
  303. package/src/model/transaction/RuntimeTransaction.ts +90 -15
  304. package/src/model/transaction/SignedTransaction.ts +47 -0
  305. package/src/model/transaction/ValueOption.ts +28 -0
  306. package/src/protocol/Protocol.ts +166 -74
  307. package/src/protocol/ProtocolEnvironment.ts +10 -0
  308. package/src/protocol/ProtocolModule.ts +16 -16
  309. package/src/protocol/ProvableBlockHook.ts +68 -0
  310. package/src/protocol/ProvableTransactionHook.ts +77 -0
  311. package/src/protocol/TransitioningProtocolModule.ts +12 -0
  312. package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
  313. package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
  314. package/src/prover/accumulators/TransactionHashList.ts +9 -0
  315. package/src/prover/accumulators/WitnessedRootHashList.ts +61 -0
  316. package/src/prover/block/BlockProvable.ts +188 -15
  317. package/src/prover/block/BlockProver.ts +979 -143
  318. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +24 -0
  319. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  320. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  321. package/src/prover/statetransition/StateTransitionProvable.ts +26 -19
  322. package/src/prover/statetransition/StateTransitionProver.ts +338 -130
  323. package/src/settlement/ContractModule.ts +31 -0
  324. package/src/settlement/SettlementContractModule.ts +145 -0
  325. package/src/settlement/contracts/BridgeContract.ts +366 -0
  326. package/src/settlement/contracts/BridgeContractProtocolModule.ts +48 -0
  327. package/src/settlement/contracts/DispatchContractProtocolModule.ts +75 -0
  328. package/src/settlement/contracts/DispatchSmartContract.ts +325 -0
  329. package/src/settlement/contracts/SettlementContractProtocolModule.ts +113 -0
  330. package/src/settlement/contracts/SettlementSmartContract.ts +502 -0
  331. package/src/settlement/contracts/TokenBridgeTree.ts +73 -0
  332. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  333. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  334. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  335. package/src/settlement/messages/Deposit.ts +7 -0
  336. package/src/settlement/messages/OutgoingMessage.ts +17 -0
  337. package/src/settlement/messages/OutgoingMessageArgument.ts +53 -0
  338. package/src/settlement/modularity/OutgoingMessageProcessor.ts +65 -0
  339. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  340. package/src/settlement/modularity/types.ts +22 -0
  341. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  342. package/src/state/State.ts +177 -0
  343. package/src/state/StateMap.ts +73 -0
  344. package/src/state/StateService.ts +6 -0
  345. package/src/state/StateServiceProvider.ts +37 -0
  346. package/src/state/assert/assert.ts +38 -0
  347. package/src/state/context/RuntimeMethodExecutionContext.ts +181 -0
  348. package/src/state/context/TransitionMethodExecutionContext.ts +26 -0
  349. package/src/state/protocol/ProtocolState.ts +98 -0
  350. package/src/utils/FieldOptions.ts +13 -0
  351. package/src/utils/MinaPrefixedProvableHashList.ts +66 -0
  352. package/src/utils/PrefixedProvableHashList.ts +2 -2
  353. package/src/utils/ProvableHashList.ts +78 -3
  354. package/src/utils/ProvableReductionHashList.ts +77 -0
  355. package/src/utils/utils.ts +44 -55
  356. package/test/BlockProver.test.ts +161 -74
  357. package/test/Protocol.test.ts +20 -10
  358. package/test/State.test.ts +45 -0
  359. package/test/StateTransition.test.ts +57 -65
  360. package/test/TestingProtocol.ts +56 -0
  361. package/test/compiling/types.ts +28 -0
  362. package/test/model/Option.test.ts +72 -0
  363. package/test/model/StateTransitionProvableBatch.test.ts +137 -0
  364. package/test/modularity/types.ts +35 -0
  365. package/test/prover/block/BlockProver.test.ts +18 -0
  366. package/test/prover/statetransition/StateTransitionProver.test.ts +261 -0
  367. package/test/state/assert/assert.test.ts +56 -0
  368. package/test/tsconfig.json +7 -0
  369. package/test/utils/ProvableHashList.test.ts +44 -0
  370. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  371. package/test/utils.test.ts +27 -0
  372. package/dist/config/ConfigurableModule.d.ts +0 -18
  373. package/dist/config/ConfigurableModule.d.ts.map +0 -1
  374. package/dist/config/ConfigurableModule.js +0 -20
  375. package/dist/config/ConfigurationAggregator.d.ts +0 -10
  376. package/dist/config/ConfigurationAggregator.d.ts.map +0 -1
  377. package/dist/config/ConfigurationAggregator.js +0 -35
  378. package/dist/config/ConfigurationReceiver.d.ts +0 -25
  379. package/dist/config/ConfigurationReceiver.d.ts.map +0 -1
  380. package/dist/config/ConfigurationReceiver.js +0 -36
  381. package/dist/config/ModuleContainer.d.ts +0 -44
  382. package/dist/config/ModuleContainer.d.ts.map +0 -1
  383. package/dist/config/ModuleContainer.js +0 -89
  384. package/dist/config/types.d.ts +0 -2
  385. package/dist/config/types.d.ts.map +0 -1
  386. package/dist/config/types.js +0 -1
  387. package/dist/model/MethodPublicInput.d.ts +0 -51
  388. package/dist/model/MethodPublicInput.d.ts.map +0 -1
  389. package/dist/model/MethodPublicInput.js +0 -11
  390. package/dist/model/transaction/ProtocolTransaction.d.ts +0 -70
  391. package/dist/model/transaction/ProtocolTransaction.d.ts.map +0 -1
  392. package/dist/model/transaction/ProtocolTransaction.js +0 -18
  393. package/dist/prover/block/BlockScopedModule.d.ts +0 -3
  394. package/dist/prover/block/BlockScopedModule.d.ts.map +0 -1
  395. package/dist/prover/block/BlockScopedModule.js +0 -6
  396. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
  397. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
  398. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +0 -7
  399. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +0 -1
  400. package/dist/src/model/Option.d.ts +0 -158
  401. package/dist/src/model/Option.d.ts.map +0 -1
  402. package/dist/src/model/Option.js +0 -53
  403. package/dist/src/model/Path.d.ts +0 -35
  404. package/dist/src/model/Path.d.ts.map +0 -1
  405. package/dist/src/model/Path.js +0 -51
  406. package/dist/src/model/StateTransition.d.ts +0 -201
  407. package/dist/src/model/StateTransition.d.ts.map +0 -1
  408. package/dist/src/model/StateTransition.js +0 -43
  409. package/dist/src/utils/PrefixedHashList.d.ts +0 -15
  410. package/dist/src/utils/PrefixedHashList.d.ts.map +0 -1
  411. package/dist/src/utils/PrefixedHashList.js +0 -28
  412. package/dist/src/utils/ProvableHashList.d.ts +0 -30
  413. package/dist/src/utils/ProvableHashList.d.ts.map +0 -1
  414. package/dist/src/utils/ProvableHashList.js +0 -43
  415. package/dist/utils/PrefixedHashList.d.ts +0 -14
  416. package/dist/utils/PrefixedHashList.d.ts.map +0 -1
  417. package/dist/utils/PrefixedHashList.js +0 -12
  418. package/dist/utils/Utils.d.ts +0 -17
  419. package/dist/utils/Utils.d.ts.map +0 -1
  420. package/dist/utils/Utils.js +0 -64
  421. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -25
  422. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
  423. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -77
  424. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts +0 -26
  425. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts.map +0 -1
  426. package/dist/utils/merkletree/MemoryMerkleTreeStorage.js +0 -79
  427. package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
  428. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
  429. package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
  430. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -130
  431. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  432. package/dist/utils/merkletree/RollupMerkleTree.js +0 -244
  433. package/src/model/Option.test.ts +0 -21
  434. package/src/model/transaction/ProtocolTransaction.ts +0 -25
  435. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -24
  436. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
  437. package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -106
  438. package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
  439. package/src/utils/merkletree/RollupMerkleTree.ts +0 -250
  440. package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
  441. package/tsconfig.test.json +0 -9
@@ -0,0 +1,325 @@
1
+ import {
2
+ AccountUpdate,
3
+ Bool,
4
+ Field,
5
+ method,
6
+ Poseidon,
7
+ Provable,
8
+ ProvableExtended,
9
+ PublicKey,
10
+ Reducer,
11
+ SmartContract,
12
+ State,
13
+ state,
14
+ TokenId,
15
+ UInt64,
16
+ } from "o1js";
17
+ import { InMemoryMerkleTreeStorage, TypedClass } from "@proto-kit/common";
18
+
19
+ import { RuntimeMethodIdMapping } from "../../model/RuntimeLike";
20
+ import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
21
+ import {
22
+ MinaActions,
23
+ MinaEvents,
24
+ } from "../../utils/MinaPrefixedProvableHashList";
25
+ import { Deposit } from "../messages/Deposit";
26
+
27
+ import type { SettlementContractType } from "./SettlementSmartContract";
28
+ import { TokenBridgeDeploymentAuth } from "./authorizations/TokenBridgeDeploymentAuth";
29
+ import { UpdateMessagesHashAuth } from "./authorizations/UpdateMessagesHashAuth";
30
+ import {
31
+ TokenBridgeAttestation,
32
+ TokenBridgeEntry,
33
+ TokenBridgeTree,
34
+ TokenBridgeTreeAddition,
35
+ TokenBridgeTreeWitness,
36
+ } from "./TokenBridgeTree";
37
+
38
+ export const ACTIONS_EMPTY_HASH = Reducer.initialActionState;
39
+
40
+ export interface DispatchContractType {
41
+ updateMessagesHash: (
42
+ executedMessagesHash: Field,
43
+ newPromisedMessagesHash: Field
44
+ ) => Promise<void>;
45
+ initialize: (settlementContract: PublicKey) => Promise<void>;
46
+ enableTokenDeposits: (
47
+ tokenId: Field,
48
+ bridgeContractAddress: PublicKey,
49
+ settlementContractAddress: PublicKey
50
+ ) => Promise<void>;
51
+
52
+ promisedMessagesHash: State<Field>;
53
+ }
54
+
55
+ const tokenBridgeRoot = new TokenBridgeTree(
56
+ new InMemoryMerkleTreeStorage()
57
+ ).getRoot();
58
+
59
+ export abstract class DispatchSmartContractBase extends SmartContract {
60
+ public static args: {
61
+ methodIdMappings: RuntimeMethodIdMapping;
62
+ incomingMessagesPaths: Record<string, `${string}.${string}`>;
63
+ settlementContractClass?: TypedClass<SettlementContractType> &
64
+ typeof SmartContract;
65
+ };
66
+
67
+ events = {
68
+ "token-bridge-added": TokenBridgeTreeAddition,
69
+ // We need a placeholder event here, so that o1js internally adds a identifier to the
70
+ // emitted event-fields. That will lead to the o1js API being able to distinguish the
71
+ // TokenBridgeEvents from the manually emitted events for the incoming messages
72
+ "incoming-message-placeholder": Field,
73
+ };
74
+
75
+ abstract promisedMessagesHash: State<Field>;
76
+
77
+ abstract honoredMessagesHash: State<Field>;
78
+
79
+ abstract settlementContract: State<PublicKey>;
80
+
81
+ abstract tokenBridgeRoot: State<Field>;
82
+
83
+ abstract tokenBridgeCount: State<Field>;
84
+
85
+ protected updateMessagesHashBase(
86
+ executedMessagesHash: Field,
87
+ newPromisedMessagesHash: Field
88
+ ) {
89
+ const promisedMessagesHash =
90
+ this.promisedMessagesHash.getAndRequireEquals();
91
+ this.honoredMessagesHash.getAndRequireEquals();
92
+
93
+ executedMessagesHash.assertEquals(promisedMessagesHash);
94
+
95
+ this.honoredMessagesHash.set(executedMessagesHash);
96
+
97
+ // Assert and apply new promisedMessagesHash
98
+ this.self.account.actionState.requireEquals(newPromisedMessagesHash);
99
+ this.promisedMessagesHash.set(newPromisedMessagesHash);
100
+
101
+ const settlementContractAddress =
102
+ this.settlementContract.getAndRequireEquals();
103
+ const settlementContract =
104
+ new DispatchSmartContractBase.args.settlementContractClass!(
105
+ settlementContractAddress
106
+ );
107
+
108
+ settlementContract.authorizationField.requireEquals(
109
+ new UpdateMessagesHashAuth({
110
+ target: this.address,
111
+ executedMessagesHash,
112
+ newPromisedMessagesHash,
113
+ }).hash()
114
+ );
115
+ this.approve(settlementContract.self);
116
+ }
117
+
118
+ protected initializeBase(settlementContract: PublicKey) {
119
+ this.promisedMessagesHash.getAndRequireEquals().assertEquals(Field(0));
120
+ this.honoredMessagesHash.getAndRequireEquals().assertEquals(Field(0));
121
+ this.settlementContract
122
+ .getAndRequireEquals()
123
+ .assertEquals(PublicKey.empty<typeof PublicKey>());
124
+
125
+ this.promisedMessagesHash.set(ACTIONS_EMPTY_HASH);
126
+ this.honoredMessagesHash.set(ACTIONS_EMPTY_HASH);
127
+ this.settlementContract.set(settlementContract);
128
+ }
129
+
130
+ protected dispatchMessage<Type>(
131
+ methodId: Field,
132
+ value: Type,
133
+ valueType: ProvableExtended<Type>
134
+ ) {
135
+ const args = valueType.toFields(value);
136
+ // Should be the same as RuntimeTransaction.hash
137
+ const argsHash = Poseidon.hash(args);
138
+ const runtimeTransaction = RuntimeTransaction.fromMessage({
139
+ methodId,
140
+ argsHash,
141
+ });
142
+
143
+ // Append tx to incomingMessagesHash
144
+ const actionData = runtimeTransaction.hashData();
145
+ const actionHash = MinaActions.actionHash(actionData);
146
+
147
+ this.self.body.actions = {
148
+ hash: actionHash,
149
+ data: [actionData],
150
+ };
151
+
152
+ // Find event index of placeholder event that we can use for manual event dispatching
153
+ const eventIndex = Object.keys(this.events)
154
+ .sort()
155
+ .indexOf("incoming-message-placeholder");
156
+ if (eventIndex === -1) {
157
+ throw new Error("Unknown event type for placeholder event");
158
+ }
159
+ const paddedArgs = [Field(eventIndex), ...args];
160
+
161
+ const eventHash = MinaEvents.eventHash(paddedArgs);
162
+ this.self.body.events = {
163
+ hash: eventHash,
164
+ data: [paddedArgs],
165
+ };
166
+ }
167
+
168
+ protected async enableTokenDepositsBase(
169
+ tokenId: Field,
170
+ bridgeContractAddress: PublicKey,
171
+ // Witness it here, since o1js doesn't fetch this state correctly since
172
+ // its updated in a parent AU
173
+ settlementContractAddress: PublicKey
174
+ // treeWitness: TokenBridgeTreeWitness
175
+ ) {
176
+ this.settlementContract.requireEquals(settlementContractAddress);
177
+ const settlementContract =
178
+ new DispatchSmartContractBase.args.settlementContractClass!(
179
+ settlementContractAddress
180
+ );
181
+
182
+ // Append bridge address to the tree
183
+ // TODO This not concurrent and will fail if multiple users deploy bridges at the same time
184
+ const counter = this.tokenBridgeCount.getAndRequireEquals();
185
+ const root = this.tokenBridgeRoot.getAndRequireEquals();
186
+
187
+ const treeWitness = await Provable.witnessAsync(
188
+ TokenBridgeTreeWitness,
189
+ async () => {
190
+ const tree = await TokenBridgeTree.buildTreeFromEvents(this);
191
+ return tree.getWitness(counter.toBigInt());
192
+ }
193
+ );
194
+
195
+ treeWitness
196
+ .checkMembership(root, counter, Field(0))
197
+ .assertTrue("Bridge Tree Witness not valid");
198
+
199
+ const entry = new TokenBridgeEntry({
200
+ tokenId,
201
+ address: bridgeContractAddress,
202
+ });
203
+ const newRoot = treeWitness.calculateRoot(entry.hash());
204
+ this.tokenBridgeRoot.set(newRoot);
205
+ this.tokenBridgeCount.set(counter.add(1));
206
+
207
+ this.emitEvent(
208
+ "token-bridge-added",
209
+ new TokenBridgeTreeAddition({
210
+ index: counter,
211
+ value: entry,
212
+ })
213
+ );
214
+
215
+ // Authenticate call via callback
216
+ settlementContract.authorizationField.requireEquals(
217
+ new TokenBridgeDeploymentAuth({
218
+ target: this.address,
219
+ tokenId,
220
+ address: bridgeContractAddress,
221
+ }).hash()
222
+ );
223
+
224
+ this.approve(settlementContract.self);
225
+ }
226
+ }
227
+
228
+ export class DispatchSmartContract
229
+ extends DispatchSmartContractBase
230
+ implements DispatchContractType
231
+ {
232
+ @state(Field) public promisedMessagesHash = State<Field>();
233
+
234
+ @state(Field) public honoredMessagesHash = State<Field>();
235
+
236
+ @state(PublicKey) public settlementContract = State<PublicKey>();
237
+
238
+ @state(Field) public tokenBridgeRoot = State<Field>(tokenBridgeRoot);
239
+
240
+ @state(Field) public tokenBridgeCount = State<Field>();
241
+
242
+ @method
243
+ public async enableTokenDeposits(
244
+ tokenId: Field,
245
+ bridgeContractAddress: PublicKey,
246
+ settlementContractAddress: PublicKey
247
+ ) {
248
+ await this.enableTokenDepositsBase(
249
+ tokenId,
250
+ bridgeContractAddress,
251
+ settlementContractAddress
252
+ );
253
+ }
254
+
255
+ @method
256
+ public async updateMessagesHash(
257
+ executedMessagesHash: Field,
258
+ newPromisedMessagesHash: Field
259
+ ) {
260
+ return this.updateMessagesHashBase(
261
+ executedMessagesHash,
262
+ newPromisedMessagesHash
263
+ );
264
+ }
265
+
266
+ @method
267
+ public async initialize(settlementContract: PublicKey) {
268
+ return this.initializeBase(settlementContract);
269
+ }
270
+
271
+ @method
272
+ public async deposit(
273
+ amount: UInt64,
274
+ tokenId: Field,
275
+ bridgingContract: PublicKey,
276
+ bridgingContractAttestation: TokenBridgeAttestation,
277
+ l2Receiver: PublicKey
278
+ ) {
279
+ const childrenMayUseToken: AccountUpdate["body"]["mayUseToken"] = {
280
+ parentsOwnToken: Bool(false),
281
+ // MayUseToken has to be set only for custom tokens
282
+ inheritFromParent: tokenId.equals(TokenId.default).not(),
283
+ };
284
+
285
+ // Check that the bridgingContract parameter is valid => is in the offchain tree
286
+ const bridgeTreeRoot = this.tokenBridgeRoot.getAndRequireEquals();
287
+ const entry = new TokenBridgeEntry({
288
+ tokenId,
289
+ address: bridgingContract,
290
+ });
291
+
292
+ bridgingContractAttestation.witness
293
+ .checkMembership(
294
+ bridgeTreeRoot,
295
+ bridgingContractAttestation.index,
296
+ entry.hash()
297
+ )
298
+ .assertTrue("Bridging Contract Attestation not valid");
299
+
300
+ // Credit the amount to the settlement contract
301
+ const balanceAU = AccountUpdate.create(bridgingContract, tokenId);
302
+ balanceAU.balance.addInPlace(amount);
303
+ balanceAU.body.mayUseToken = childrenMayUseToken;
304
+ this.approve(balanceAU);
305
+
306
+ const action = new Deposit({
307
+ tokenId,
308
+ address: l2Receiver,
309
+ amount,
310
+ });
311
+
312
+ const { methodIdMappings, incomingMessagesPaths } =
313
+ DispatchSmartContractBase.args;
314
+
315
+ const methodId = Field(
316
+ methodIdMappings[incomingMessagesPaths.deposit].methodId
317
+ ).toConstant();
318
+ this.dispatchMessage(methodId.toConstant(), action, Deposit);
319
+
320
+ this.self.body.mayUseToken = {
321
+ parentsOwnToken: tokenId.equals(TokenId.default).not(),
322
+ inheritFromParent: Bool(false),
323
+ };
324
+ }
325
+ }
@@ -0,0 +1,113 @@
1
+ import { inject, injectable, injectAll } from "tsyringe";
2
+ import {
3
+ ArtifactRecord,
4
+ ChildVerificationKeyService,
5
+ CompileRegistry,
6
+ log,
7
+ } from "@proto-kit/common";
8
+
9
+ import { BlockProvable } from "../../prover/block/BlockProvable";
10
+ import {
11
+ ContractModule,
12
+ SmartContractClassFromInterface,
13
+ } from "../ContractModule";
14
+ import { ProvableSettlementHook } from "../modularity/ProvableSettlementHook";
15
+
16
+ import { DispatchSmartContractBase } from "./DispatchSmartContract";
17
+ import {
18
+ SettlementContractType,
19
+ SettlementSmartContract,
20
+ SettlementSmartContractBase,
21
+ } from "./SettlementSmartContract";
22
+ import { BridgeContractBase } from "./BridgeContract";
23
+ import { DispatchContractProtocolModule } from "./DispatchContractProtocolModule";
24
+ import { BridgeContractProtocolModule } from "./BridgeContractProtocolModule";
25
+
26
+ export type SettlementContractConfig = {
27
+ escapeHatchSlotsInterval?: number;
28
+ };
29
+
30
+ // 24 hours
31
+ const DEFAULT_ESCAPE_HATCH = (60 / 3) * 24;
32
+
33
+ @injectable()
34
+ export class SettlementContractProtocolModule extends ContractModule<
35
+ SettlementContractType,
36
+ SettlementContractConfig
37
+ > {
38
+ public constructor(
39
+ @injectAll("ProvableSettlementHook")
40
+ private readonly hooks: ProvableSettlementHook<unknown>[],
41
+ @inject("BlockProver")
42
+ private readonly blockProver: BlockProvable,
43
+ @inject("DispatchContract")
44
+ private readonly dispatchContractModule: DispatchContractProtocolModule,
45
+ @inject("BridgeContract")
46
+ private readonly bridgeContractModule: BridgeContractProtocolModule,
47
+ private readonly childVerificationKeyService: ChildVerificationKeyService
48
+ ) {
49
+ super();
50
+ }
51
+
52
+ public contractFactory(): SmartContractClassFromInterface<SettlementContractType> {
53
+ const { hooks, config } = this;
54
+ const dispatchContract = this.dispatchContractModule.contractFactory();
55
+ const bridgeContract = this.bridgeContractModule.contractFactory();
56
+
57
+ const escapeHatchSlotsInterval =
58
+ config.escapeHatchSlotsInterval ?? DEFAULT_ESCAPE_HATCH;
59
+
60
+ const { args } = SettlementSmartContractBase;
61
+ SettlementSmartContractBase.args = {
62
+ ...args,
63
+ DispatchContract: dispatchContract,
64
+ hooks,
65
+ escapeHatchSlotsInterval,
66
+ BridgeContract: bridgeContract,
67
+ BridgeContractVerificationKey: args?.BridgeContractVerificationKey,
68
+ BridgeContractPermissions: args?.BridgeContractPermissions,
69
+ signedSettlements: args?.signedSettlements,
70
+ ChildVerificationKeyService: this.childVerificationKeyService,
71
+ };
72
+
73
+ // Ideally we don't want to have this cyclic dependency, but we have it in the protocol,
74
+ // So its logical that we can't avoid that here
75
+ BridgeContractBase.args.SettlementContract = SettlementSmartContract;
76
+
77
+ DispatchSmartContractBase.args.settlementContractClass =
78
+ SettlementSmartContract;
79
+
80
+ return SettlementSmartContract;
81
+ }
82
+
83
+ public async compile(
84
+ registry: CompileRegistry
85
+ ): Promise<ArtifactRecord | undefined> {
86
+ // Dependencies
87
+ const bridgeArtifact = await this.bridgeContractModule.compile(registry);
88
+
89
+ await this.blockProver.compile(registry);
90
+
91
+ this.contractFactory();
92
+
93
+ // Init params
94
+ SettlementSmartContractBase.args.BridgeContractVerificationKey =
95
+ bridgeArtifact.BridgeContract.verificationKey;
96
+
97
+ if (SettlementSmartContractBase.args.signedSettlements === undefined) {
98
+ throw new Error(
99
+ "Args not fully initialized - make sure to also include the SettlementModule in the sequencer"
100
+ );
101
+ }
102
+
103
+ log.debug("Compiling Settlement Contract");
104
+
105
+ const artifact = await registry.forceProverExists(
106
+ async (reg) => await registry.compile(SettlementSmartContract)
107
+ );
108
+
109
+ return {
110
+ SettlementSmartContract: artifact,
111
+ };
112
+ }
113
+ }