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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/dist/Constants.js +1 -0
  2. package/dist/Constants.js.map +1 -0
  3. package/dist/hashing/mina-prefixes.d.ts +10 -0
  4. package/dist/hashing/mina-prefixes.d.ts.map +1 -0
  5. package/dist/hashing/mina-prefixes.js +10 -0
  6. package/dist/hashing/mina-prefixes.js.map +1 -0
  7. package/dist/hashing/protokit-prefixes.d.ts +10 -0
  8. package/dist/hashing/protokit-prefixes.d.ts.map +1 -0
  9. package/dist/hashing/protokit-prefixes.js +24 -0
  10. package/dist/hashing/protokit-prefixes.js.map +1 -0
  11. package/dist/hooks/AccountStateHook.d.ts +56 -0
  12. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  13. package/dist/hooks/AccountStateHook.js +62 -0
  14. package/dist/hooks/AccountStateHook.js.map +1 -0
  15. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  16. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  17. package/dist/hooks/BlockHeightHook.js +16 -0
  18. package/dist/hooks/BlockHeightHook.js.map +1 -0
  19. package/dist/hooks/LastStateRootBlockHook.d.ts +7 -0
  20. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  21. package/dist/hooks/LastStateRootBlockHook.js +16 -0
  22. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  23. package/dist/hooks/NoopBlockHook.d.ts +8 -0
  24. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  25. package/dist/hooks/NoopBlockHook.js +10 -0
  26. package/dist/hooks/NoopBlockHook.js.map +1 -0
  27. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  28. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  29. package/dist/{prover/statetransition/StateTransitionWitnessProvider.js → hooks/NoopSettlementHook.js} +8 -7
  30. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  31. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  32. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  33. package/dist/hooks/NoopTransactionHook.js +11 -0
  34. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  35. package/dist/index.d.ts +51 -13
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +52 -13
  38. package/dist/index.js.map +1 -0
  39. package/dist/model/AppliedStateTransitionBatch.d.ts +114 -0
  40. package/dist/model/AppliedStateTransitionBatch.d.ts.map +1 -0
  41. package/dist/model/AppliedStateTransitionBatch.js +16 -0
  42. package/dist/model/AppliedStateTransitionBatch.js.map +1 -0
  43. package/dist/model/MethodPublicOutput.d.ts +83 -28
  44. package/dist/model/MethodPublicOutput.d.ts.map +1 -1
  45. package/dist/model/MethodPublicOutput.js +4 -1
  46. package/dist/model/MethodPublicOutput.js.map +1 -0
  47. package/dist/model/Option.d.ts +66 -42
  48. package/dist/model/Option.d.ts.map +1 -1
  49. package/dist/model/Option.js +58 -45
  50. package/dist/model/Option.js.map +1 -0
  51. package/dist/model/Path.d.ts +4 -3
  52. package/dist/model/Path.d.ts.map +1 -1
  53. package/dist/model/Path.js +6 -5
  54. package/dist/model/Path.js.map +1 -0
  55. package/dist/model/RuntimeLike.d.ts +11 -0
  56. package/dist/model/RuntimeLike.d.ts.map +1 -0
  57. package/dist/model/RuntimeLike.js +2 -0
  58. package/dist/model/RuntimeLike.js.map +1 -0
  59. package/dist/model/StateTransition.d.ts +58 -18
  60. package/dist/model/StateTransition.d.ts.map +1 -1
  61. package/dist/model/StateTransition.js +13 -4
  62. package/dist/model/StateTransition.js.map +1 -0
  63. package/dist/model/StateTransitionProvableBatch.d.ts +369 -54
  64. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  65. package/dist/model/StateTransitionProvableBatch.js +74 -51
  66. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  67. package/dist/model/network/NetworkState.d.ts +105 -9
  68. package/dist/model/network/NetworkState.d.ts.map +1 -1
  69. package/dist/model/network/NetworkState.js +22 -2
  70. package/dist/model/network/NetworkState.js.map +1 -0
  71. package/dist/model/transaction/AuthorizedTransaction.d.ts +122 -0
  72. package/dist/model/transaction/AuthorizedTransaction.d.ts.map +1 -0
  73. package/dist/model/transaction/AuthorizedTransaction.js +39 -0
  74. package/dist/model/transaction/AuthorizedTransaction.js.map +1 -0
  75. package/dist/model/transaction/RuntimeTransaction.d.ts +94 -34
  76. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
  77. package/dist/model/transaction/RuntimeTransaction.js +72 -11
  78. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  79. package/dist/model/transaction/SignedTransaction.d.ts +110 -0
  80. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  81. package/dist/model/transaction/SignedTransaction.js +34 -0
  82. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  83. package/dist/model/transaction/ValueOption.d.ts +187 -0
  84. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  85. package/dist/model/transaction/ValueOption.js +25 -0
  86. package/dist/model/transaction/ValueOption.js.map +1 -0
  87. package/dist/protocol/Protocol.d.ts +45 -34
  88. package/dist/protocol/Protocol.d.ts.map +1 -1
  89. package/dist/protocol/Protocol.js +115 -57
  90. package/dist/protocol/Protocol.js.map +1 -0
  91. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  92. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  93. package/dist/protocol/ProtocolEnvironment.js +2 -0
  94. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  95. package/dist/protocol/ProtocolModule.d.ts +7 -6
  96. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  97. package/dist/protocol/ProtocolModule.js +10 -5
  98. package/dist/protocol/ProtocolModule.js.map +1 -0
  99. package/dist/protocol/ProvableBlockHook.d.ts +29 -0
  100. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  101. package/dist/protocol/ProvableBlockHook.js +20 -0
  102. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  103. package/dist/protocol/ProvableTransactionHook.d.ts +32 -3
  104. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
  105. package/dist/protocol/ProvableTransactionHook.js +25 -0
  106. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  107. package/dist/protocol/TransitioningProtocolModule.d.ts +6 -1
  108. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -1
  109. package/dist/protocol/TransitioningProtocolModule.js +6 -0
  110. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  111. package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
  112. package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
  113. package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
  114. package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
  115. package/dist/prover/accumulators/BlockHashList.d.ts +263 -0
  116. package/dist/prover/accumulators/BlockHashList.d.ts.map +1 -0
  117. package/dist/prover/accumulators/BlockHashList.js +97 -0
  118. package/dist/prover/accumulators/BlockHashList.js.map +1 -0
  119. package/dist/prover/accumulators/StateTransitionReductionList.d.ts +12 -0
  120. package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
  121. package/dist/prover/accumulators/StateTransitionReductionList.js +64 -0
  122. package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
  123. package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
  124. package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
  125. package/dist/prover/accumulators/TransactionHashList.js +8 -0
  126. package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
  127. package/dist/prover/accumulators/WitnessedRootHashList.d.ts +123 -0
  128. package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
  129. package/dist/prover/accumulators/WitnessedRootHashList.js +51 -0
  130. package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
  131. package/dist/prover/block/BlockProvable.d.ts +565 -96
  132. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  133. package/dist/prover/block/BlockProvable.js +196 -12
  134. package/dist/prover/block/BlockProvable.js.map +1 -0
  135. package/dist/prover/block/BlockProver.d.ts +45 -44
  136. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  137. package/dist/prover/block/BlockProver.js +306 -143
  138. package/dist/prover/block/BlockProver.js.map +1 -0
  139. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +106 -0
  140. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  141. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +25 -0
  142. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  143. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  144. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  145. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
  146. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  147. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  148. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  149. package/dist/prover/{statetransition/StateTransitionWitnessProviderReference.js → block/services/RuntimeVerificationKeyRootService.js} +11 -8
  150. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  151. package/dist/prover/statetransition/StateTransitionProvable.d.ts +137 -64
  152. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  153. package/dist/prover/statetransition/StateTransitionProvable.js +10 -7
  154. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  155. package/dist/prover/statetransition/StateTransitionProver.d.ts +26 -24
  156. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  157. package/dist/prover/statetransition/StateTransitionProver.js +159 -93
  158. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  159. package/dist/prover/transaction/TransactionProvable.d.ts +626 -0
  160. package/dist/prover/transaction/TransactionProvable.d.ts.map +1 -0
  161. package/dist/prover/transaction/TransactionProvable.js +87 -0
  162. package/dist/prover/transaction/TransactionProvable.js.map +1 -0
  163. package/dist/prover/transaction/TransactionProver.d.ts +68 -0
  164. package/dist/prover/transaction/TransactionProver.d.ts.map +1 -0
  165. package/dist/prover/transaction/TransactionProver.js +301 -0
  166. package/dist/prover/transaction/TransactionProver.js.map +1 -0
  167. package/dist/prover/utils.d.ts +19 -0
  168. package/dist/prover/utils.d.ts.map +1 -0
  169. package/dist/prover/utils.js +67 -0
  170. package/dist/prover/utils.js.map +1 -0
  171. package/dist/settlement/ContractArgsRegistry.d.ts +13 -0
  172. package/dist/settlement/ContractArgsRegistry.d.ts.map +1 -0
  173. package/dist/settlement/ContractArgsRegistry.js +58 -0
  174. package/dist/settlement/ContractArgsRegistry.js.map +1 -0
  175. package/dist/settlement/ContractModule.d.ts +16 -0
  176. package/dist/settlement/ContractModule.d.ts.map +1 -0
  177. package/dist/settlement/ContractModule.js +12 -0
  178. package/dist/settlement/ContractModule.js.map +1 -0
  179. package/dist/settlement/SettlementContractModule.d.ts +47 -0
  180. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  181. package/dist/settlement/SettlementContractModule.js +81 -0
  182. package/dist/settlement/SettlementContractModule.js.map +1 -0
  183. package/dist/settlement/contracts/BridgeContract.d.ts +114 -0
  184. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  185. package/dist/settlement/contracts/BridgeContract.js +270 -0
  186. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  187. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +18 -0
  188. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  189. package/dist/settlement/contracts/BridgeContractProtocolModule.js +42 -0
  190. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  191. package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts +21 -0
  192. package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts.map +1 -0
  193. package/dist/settlement/contracts/BridgingSettlementContractModule.js +81 -0
  194. package/dist/settlement/contracts/BridgingSettlementContractModule.js.map +1 -0
  195. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +23 -0
  196. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  197. package/dist/settlement/contracts/DispatchContractProtocolModule.js +55 -0
  198. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  199. package/dist/settlement/contracts/DispatchSmartContract.d.ts +50 -0
  200. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  201. package/dist/settlement/contracts/DispatchSmartContract.js +234 -0
  202. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  203. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
  204. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  205. package/dist/settlement/contracts/SettlementContractProtocolModule.js +84 -0
  206. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  207. package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
  208. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  209. package/dist/settlement/contracts/SettlementSmartContract.js +310 -0
  210. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  211. package/dist/settlement/contracts/SettlementSmartContractModule.d.ts +20 -0
  212. package/dist/settlement/contracts/SettlementSmartContractModule.d.ts.map +1 -0
  213. package/dist/settlement/contracts/SettlementSmartContractModule.js +56 -0
  214. package/dist/settlement/contracts/SettlementSmartContractModule.js.map +1 -0
  215. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  216. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  217. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  218. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  219. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  220. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  221. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  222. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  223. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  224. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  225. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  226. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  227. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  228. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  229. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  230. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  231. package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts +107 -0
  232. package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts.map +1 -0
  233. package/dist/settlement/contracts/settlement/BridgingSettlementContract.js +188 -0
  234. package/dist/settlement/contracts/settlement/BridgingSettlementContract.js.map +1 -0
  235. package/dist/settlement/contracts/settlement/SettlementBase.d.ts +41 -0
  236. package/dist/settlement/contracts/settlement/SettlementBase.d.ts.map +1 -0
  237. package/dist/settlement/contracts/settlement/SettlementBase.js +105 -0
  238. package/dist/settlement/contracts/settlement/SettlementBase.js.map +1 -0
  239. package/dist/settlement/contracts/settlement/SettlementContract.d.ts +15 -0
  240. package/dist/settlement/contracts/settlement/SettlementContract.d.ts.map +1 -0
  241. package/dist/settlement/contracts/settlement/SettlementContract.js +72 -0
  242. package/dist/settlement/contracts/settlement/SettlementContract.js.map +1 -0
  243. package/dist/settlement/messages/Deposit.d.ts +77 -0
  244. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  245. package/dist/settlement/messages/Deposit.js +8 -0
  246. package/dist/settlement/messages/Deposit.js.map +1 -0
  247. package/dist/settlement/messages/OutgoingMessage.d.ts +67 -0
  248. package/dist/settlement/messages/OutgoingMessage.d.ts.map +1 -0
  249. package/dist/settlement/messages/OutgoingMessage.js +7 -0
  250. package/dist/settlement/messages/OutgoingMessage.js.map +1 -0
  251. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +588 -0
  252. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  253. package/dist/settlement/messages/OutgoingMessageArgument.js +42 -0
  254. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  255. package/dist/settlement/messages/Withdrawal.d.ts +2 -0
  256. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  257. package/dist/settlement/messages/Withdrawal.js +3 -0
  258. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  259. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts +28 -0
  260. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
  261. package/dist/settlement/modularity/OutgoingMessageProcessor.js +39 -0
  262. package/dist/settlement/modularity/OutgoingMessageProcessor.js.map +1 -0
  263. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
  264. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  265. package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
  266. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  267. package/dist/settlement/modularity/types.d.ts +9 -0
  268. package/dist/settlement/modularity/types.d.ts.map +1 -0
  269. package/dist/settlement/modularity/types.js +2 -0
  270. package/dist/settlement/modularity/types.js.map +1 -0
  271. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  272. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  273. package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
  274. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  275. package/dist/state/SimpleAsyncStateService.d.ts +6 -0
  276. package/dist/state/SimpleAsyncStateService.d.ts.map +1 -0
  277. package/dist/state/SimpleAsyncStateService.js +2 -0
  278. package/dist/state/SimpleAsyncStateService.js.map +1 -0
  279. package/dist/state/State.d.ts +13 -5
  280. package/dist/state/State.d.ts.map +1 -1
  281. package/dist/state/State.js +42 -17
  282. package/dist/state/State.js.map +1 -0
  283. package/dist/state/StateMap.d.ts +4 -4
  284. package/dist/state/StateMap.d.ts.map +1 -1
  285. package/dist/state/StateMap.js +5 -5
  286. package/dist/state/StateMap.js.map +1 -0
  287. package/dist/state/StateService.d.ts +4 -4
  288. package/dist/state/StateService.d.ts.map +1 -1
  289. package/dist/state/StateService.js +1 -0
  290. package/dist/state/StateService.js.map +1 -0
  291. package/dist/state/StateServiceProvider.d.ts +5 -7
  292. package/dist/state/StateServiceProvider.d.ts.map +1 -1
  293. package/dist/state/StateServiceProvider.js +18 -23
  294. package/dist/state/StateServiceProvider.js.map +1 -0
  295. package/dist/state/WitnessBlockContext.d.ts +5 -0
  296. package/dist/state/WitnessBlockContext.d.ts.map +1 -0
  297. package/dist/state/WitnessBlockContext.js +48 -0
  298. package/dist/state/WitnessBlockContext.js.map +1 -0
  299. package/dist/state/assert/assert.d.ts +2 -2
  300. package/dist/state/assert/assert.d.ts.map +1 -1
  301. package/dist/state/assert/assert.js +16 -6
  302. package/dist/state/assert/assert.js.map +1 -0
  303. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +137 -4
  304. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
  305. package/dist/state/context/RuntimeMethodExecutionContext.js +44 -11
  306. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  307. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -1
  308. package/dist/state/context/TransitionMethodExecutionContext.js +1 -1
  309. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  310. package/dist/state/protocol/ProtocolState.d.ts +8 -2
  311. package/dist/state/protocol/ProtocolState.d.ts.map +1 -1
  312. package/dist/state/protocol/ProtocolState.js +36 -20
  313. package/dist/state/protocol/ProtocolState.js.map +1 -0
  314. package/dist/utils/FieldOptions.d.ts +62 -0
  315. package/dist/utils/FieldOptions.d.ts.map +1 -0
  316. package/dist/utils/FieldOptions.js +13 -0
  317. package/dist/utils/FieldOptions.js.map +1 -0
  318. package/dist/utils/MinaPrefixedProvableHashList.d.ts +20 -0
  319. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  320. package/dist/utils/MinaPrefixedProvableHashList.js +49 -0
  321. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  322. package/dist/utils/PrefixedProvableHashList.d.ts +3 -2
  323. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
  324. package/dist/utils/PrefixedProvableHashList.js +5 -1
  325. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  326. package/dist/utils/ProvableHashList.d.ts +27 -4
  327. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  328. package/dist/utils/ProvableHashList.js +51 -3
  329. package/dist/utils/ProvableHashList.js.map +1 -0
  330. package/dist/utils/ProvableReductionHashList.d.ts +18 -0
  331. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  332. package/dist/utils/ProvableReductionHashList.js +54 -0
  333. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  334. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  335. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  336. package/dist/utils/StateTransitionReductionList.js +61 -0
  337. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  338. package/dist/utils/utils.d.ts +11 -5
  339. package/dist/utils/utils.d.ts.map +1 -1
  340. package/dist/utils/utils.js +13 -13
  341. package/dist/utils/utils.js.map +1 -0
  342. package/jest.config.cjs +12 -1
  343. package/package.json +10 -10
  344. package/src/hashing/mina-prefixes.ts +10 -0
  345. package/src/hashing/protokit-prefixes.ts +37 -0
  346. package/src/hooks/AccountStateHook.ts +80 -0
  347. package/src/hooks/BlockHeightHook.ts +17 -0
  348. package/src/hooks/LastStateRootBlockHook.ts +25 -0
  349. package/src/hooks/NoopBlockHook.ts +24 -0
  350. package/src/hooks/NoopSettlementHook.ts +20 -0
  351. package/src/{blockmodules → hooks}/NoopTransactionHook.ts +9 -3
  352. package/src/index.ts +51 -13
  353. package/src/model/AppliedStateTransitionBatch.ts +16 -0
  354. package/src/model/MethodPublicOutput.ts +3 -1
  355. package/src/model/Option.ts +87 -57
  356. package/src/model/Path.ts +9 -5
  357. package/src/model/RuntimeLike.ts +12 -0
  358. package/src/model/StateTransition.ts +19 -5
  359. package/src/model/StateTransitionProvableBatch.ts +94 -73
  360. package/src/model/Transaction.ts +3 -1
  361. package/src/model/network/NetworkState.ts +22 -2
  362. package/src/model/transaction/AuthorizedTransaction.ts +50 -0
  363. package/src/model/transaction/RuntimeTransaction.ts +86 -15
  364. package/src/model/transaction/ValueOption.ts +28 -0
  365. package/src/protocol/Protocol.ts +186 -116
  366. package/src/protocol/ProtocolEnvironment.ts +10 -0
  367. package/src/protocol/ProtocolModule.ts +18 -11
  368. package/src/protocol/ProvableBlockHook.ts +67 -0
  369. package/src/protocol/ProvableTransactionHook.ts +92 -3
  370. package/src/protocol/TransitioningProtocolModule.ts +8 -1
  371. package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
  372. package/src/prover/accumulators/BlockHashList.ts +117 -0
  373. package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
  374. package/src/prover/accumulators/TransactionHashList.ts +9 -0
  375. package/src/prover/accumulators/WitnessedRootHashList.ts +62 -0
  376. package/src/prover/block/BlockProvable.ts +360 -28
  377. package/src/prover/block/BlockProver.ts +668 -251
  378. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +24 -0
  379. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  380. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  381. package/src/prover/statetransition/StateTransitionProvable.ts +25 -20
  382. package/src/prover/statetransition/StateTransitionProver.ts +299 -168
  383. package/src/prover/transaction/TransactionProvable.ts +183 -0
  384. package/src/prover/transaction/TransactionProver.ts +561 -0
  385. package/src/prover/utils.ts +108 -0
  386. package/src/settlement/ContractArgsRegistry.ts +64 -0
  387. package/src/settlement/ContractModule.ts +31 -0
  388. package/src/settlement/SettlementContractModule.ts +150 -0
  389. package/src/settlement/contracts/BridgeContract.ts +383 -0
  390. package/src/settlement/contracts/BridgeContractProtocolModule.ts +49 -0
  391. package/src/settlement/contracts/BridgingSettlementContractModule.ts +116 -0
  392. package/src/settlement/contracts/DispatchContractProtocolModule.ts +77 -0
  393. package/src/settlement/contracts/DispatchSmartContract.ts +359 -0
  394. package/src/settlement/contracts/SettlementSmartContractModule.ts +79 -0
  395. package/src/settlement/contracts/TokenBridgeTree.ts +86 -0
  396. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  397. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  398. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  399. package/src/settlement/contracts/settlement/BridgingSettlementContract.ts +283 -0
  400. package/src/settlement/contracts/settlement/SettlementBase.ts +249 -0
  401. package/src/settlement/contracts/settlement/SettlementContract.ts +75 -0
  402. package/src/settlement/messages/Deposit.ts +7 -0
  403. package/src/settlement/messages/OutgoingMessage.ts +17 -0
  404. package/src/settlement/messages/OutgoingMessageArgument.ts +62 -0
  405. package/src/settlement/modularity/OutgoingMessageProcessor.ts +78 -0
  406. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  407. package/src/settlement/modularity/types.ts +23 -0
  408. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  409. package/src/state/State.ts +49 -19
  410. package/src/state/StateMap.ts +5 -6
  411. package/src/state/StateService.ts +5 -5
  412. package/src/state/StateServiceProvider.ts +18 -18
  413. package/src/state/WitnessBlockContext.ts +54 -0
  414. package/src/state/assert/assert.ts +18 -8
  415. package/src/state/context/RuntimeMethodExecutionContext.ts +68 -11
  416. package/src/state/context/TransitionMethodExecutionContext.ts +0 -1
  417. package/src/state/protocol/ProtocolState.ts +61 -26
  418. package/src/utils/FieldOptions.ts +13 -0
  419. package/src/utils/MinaPrefixedProvableHashList.ts +70 -0
  420. package/src/utils/PrefixedProvableHashList.ts +6 -2
  421. package/src/utils/ProvableHashList.ts +109 -4
  422. package/src/utils/ProvableReductionHashList.ts +77 -0
  423. package/src/utils/utils.ts +21 -16
  424. package/test/BlockProver.test.ts +124 -140
  425. package/test/Protocol.test.ts +14 -21
  426. package/test/State.test.ts +45 -0
  427. package/test/StateTransition.test.ts +57 -65
  428. package/test/TestingProtocol.ts +36 -0
  429. package/test/compiling/types.ts +28 -0
  430. package/test/model/Option.test.ts +72 -0
  431. package/test/model/StateTransitionProvableBatch.test.ts +137 -0
  432. package/test/modularity/types.ts +35 -0
  433. package/test/prover/block/BlockProver.test.ts +18 -0
  434. package/test/prover/statetransition/StateTransitionProver.test.ts +261 -0
  435. package/{src → test}/state/assert/assert.test.ts +10 -3
  436. package/test/tsconfig.json +7 -0
  437. package/test/utils/ProvableHashList.test.ts +44 -0
  438. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  439. package/test/utils.test.ts +0 -3
  440. package/LICENSE.md +0 -201
  441. package/dist/blockmodules/AccountStateModule.d.ts +0 -38
  442. package/dist/blockmodules/AccountStateModule.d.ts.map +0 -1
  443. package/dist/blockmodules/AccountStateModule.js +0 -38
  444. package/dist/blockmodules/NoopTransactionHook.d.ts +0 -6
  445. package/dist/blockmodules/NoopTransactionHook.d.ts.map +0 -1
  446. package/dist/blockmodules/NoopTransactionHook.js +0 -5
  447. package/dist/model/transaction/ProtocolTransaction.d.ts +0 -70
  448. package/dist/model/transaction/ProtocolTransaction.d.ts.map +0 -1
  449. package/dist/model/transaction/ProtocolTransaction.js +0 -18
  450. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
  451. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
  452. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +0 -7
  453. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +0 -1
  454. package/dist/state/context/ProtocolMethodExecutionContext.d.ts +0 -22
  455. package/dist/state/context/ProtocolMethodExecutionContext.d.ts.map +0 -1
  456. package/dist/state/context/ProtocolMethodExecutionContext.js +0 -28
  457. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -25
  458. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
  459. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -77
  460. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts +0 -26
  461. package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts.map +0 -1
  462. package/dist/utils/merkletree/MemoryMerkleTreeStorage.js +0 -79
  463. package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
  464. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
  465. package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
  466. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -130
  467. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  468. package/dist/utils/merkletree/RollupMerkleTree.js +0 -244
  469. package/src/blockmodules/AccountStateModule.ts +0 -31
  470. package/src/model/Option.test.ts +0 -21
  471. package/src/model/transaction/ProtocolTransaction.ts +0 -25
  472. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -24
  473. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
  474. package/src/state/context/ProtocolMethodExecutionContext.ts +0 -36
  475. package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -106
  476. package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
  477. package/src/utils/merkletree/RollupMerkleTree.ts +0 -255
  478. package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
  479. package/tsconfig.test.json +0 -9
@@ -0,0 +1,37 @@
1
+ import padEnd from "lodash/padEnd";
2
+ import mapValues from "lodash/mapValues";
3
+ import { Field } from "o1js";
4
+ import { prefixToField } from "@proto-kit/common";
5
+
6
+ const length = 20;
7
+ function padToHashPrefix(s: string): string {
8
+ if (s.length > 20) {
9
+ throw new Error(`Prefix string ${s} is too long (max ${length})`);
10
+ }
11
+ return padEnd(s, length, "*");
12
+ }
13
+
14
+ function padPrefixRecord<T extends Record<string, string>>(
15
+ record: T
16
+ ): {
17
+ [Key in keyof T]: string;
18
+ } {
19
+ return mapValues(record, padToHashPrefix);
20
+ }
21
+
22
+ export const PROTOKIT_PREFIXES = padPrefixRecord({
23
+ STATE_PROTOCOL: "pk-protocol-state",
24
+ STATE_RUNTIME: "pk-runtime-state",
25
+ });
26
+
27
+ export const PROTOKIT_FIELD_PREFIXES = {
28
+ OUTGOING_MESSAGE_BASE_PATH: prefixToField(
29
+ padToHashPrefix("message-base-path")
30
+ ),
31
+ OUTGOING_MESSAGE_COUNTER_PATH: prefixToField(
32
+ padToHashPrefix("message-base-path")
33
+ ),
34
+ OUTGOING_MESSAGE_DUMMY_TYPE: Field(
35
+ prefixToField(padToHashPrefix("OUT_MSG_DUMMY_TYPE"))
36
+ ),
37
+ };
@@ -0,0 +1,80 @@
1
+ import { PublicKey, Struct, UInt64 } from "o1js";
2
+ import { injectable } from "tsyringe";
3
+ import { noop } from "@proto-kit/common";
4
+
5
+ import { StateMap } from "../state/StateMap";
6
+ import { state } from "../state/protocol/ProtocolState";
7
+ import {
8
+ ProvableTransactionHook,
9
+ BeforeTransactionHookArguments,
10
+ } from "../protocol/ProvableTransactionHook";
11
+ import { assert } from "../state/assert/assert";
12
+
13
+ export class AccountState extends Struct({
14
+ nonce: UInt64,
15
+ }) {}
16
+
17
+ export type AccountStateHookConfig = {
18
+ maximumNonceLookahead?: number;
19
+ };
20
+
21
+ @injectable()
22
+ export class AccountStateHook extends ProvableTransactionHook<AccountStateHookConfig> {
23
+ @state() public accountState = StateMap.from<PublicKey, AccountState>(
24
+ PublicKey,
25
+ AccountState
26
+ );
27
+
28
+ public async beforeTransaction({
29
+ transaction: { transaction },
30
+ }: BeforeTransactionHookArguments) {
31
+ const sender = transaction.sender.value;
32
+
33
+ const aso = await this.accountState.get(sender);
34
+
35
+ const accountState = aso.orElse(new AccountState({ nonce: UInt64.zero }));
36
+
37
+ const currentNonce = accountState.nonce;
38
+
39
+ // Either the nonce matches or the tx is a message, in which case we don't care
40
+ assert(
41
+ currentNonce
42
+ .equals(transaction.nonce.value)
43
+ .or(transaction.sender.isSome.not()),
44
+ () =>
45
+ `Nonce not matching: tx sent ${transaction.nonce.value.toString()}, onchain value is ${currentNonce.toString()}`
46
+ );
47
+
48
+ // Optimized version of transaction.sender.isSome ? currentNonce.add(1) : Field(0)
49
+ // Bcs Bool(true).toField() == 1
50
+ // TODO Think about if we want to rangecheck this. If not, we should store it as Field
51
+ const newNonce = UInt64.Unsafe.fromField(
52
+ currentNonce.value.add(1).mul(transaction.sender.isSome.toField())
53
+ );
54
+
55
+ await this.accountState.set(sender, new AccountState({ nonce: newNonce }));
56
+ }
57
+
58
+ public async afterTransaction() {
59
+ noop();
60
+ }
61
+
62
+ // Under these conditions we want the tx removed from the mempool.
63
+ public async removeTransactionWhen({
64
+ transaction: { transaction },
65
+ }: BeforeTransactionHookArguments): Promise<boolean> {
66
+ const sender = transaction.sender.value;
67
+
68
+ const aso = await this.accountState.get(sender);
69
+
70
+ const accountState = aso.orElse(new AccountState({ nonce: UInt64.zero }));
71
+
72
+ const currentNonce = accountState.nonce;
73
+
74
+ const exceedsMaximumLookahead = transaction.nonce.value.greaterThan(
75
+ currentNonce.add(this.config.maximumNonceLookahead ?? 10)
76
+ );
77
+ const nonceIsInPast = transaction.nonce.value.lessThan(currentNonce);
78
+ return nonceIsInPast.or(exceedsMaximumLookahead).toBoolean();
79
+ }
80
+ }
@@ -0,0 +1,17 @@
1
+ import { NetworkState } from "../model/network/NetworkState";
2
+ import { ProvableBlockHook } from "../protocol/ProvableBlockHook";
3
+
4
+ export class BlockHeightHook extends ProvableBlockHook<Record<string, never>> {
5
+ public async afterBlock(networkState: NetworkState): Promise<NetworkState> {
6
+ return new NetworkState({
7
+ block: {
8
+ height: networkState.block.height.add(1),
9
+ },
10
+ previous: networkState.previous,
11
+ });
12
+ }
13
+
14
+ public async beforeBlock(networkState: NetworkState): Promise<NetworkState> {
15
+ return networkState;
16
+ }
17
+ }
@@ -0,0 +1,25 @@
1
+ import {
2
+ AfterBlockHookArguments,
3
+ ProvableBlockHook,
4
+ } from "../protocol/ProvableBlockHook";
5
+ import { NetworkState } from "../model/network/NetworkState";
6
+
7
+ export class LastStateRootBlockHook extends ProvableBlockHook<
8
+ Record<string, never>
9
+ > {
10
+ public async afterBlock(
11
+ networkState: NetworkState,
12
+ { stateRoot }: AfterBlockHookArguments
13
+ ): Promise<NetworkState> {
14
+ return new NetworkState({
15
+ block: networkState.block,
16
+ previous: {
17
+ rootHash: stateRoot,
18
+ },
19
+ });
20
+ }
21
+
22
+ public async beforeBlock(networkState: NetworkState): Promise<NetworkState> {
23
+ return networkState;
24
+ }
25
+ }
@@ -0,0 +1,24 @@
1
+ import { NoConfig } from "@proto-kit/common";
2
+
3
+ import {
4
+ AfterBlockHookArguments,
5
+ BeforeBlockHookArguments,
6
+ ProvableBlockHook,
7
+ } from "../protocol/ProvableBlockHook";
8
+ import { NetworkState } from "../model/network/NetworkState";
9
+
10
+ export class NoopBlockHook extends ProvableBlockHook<NoConfig> {
11
+ public async afterBlock(
12
+ networkState: NetworkState,
13
+ state: AfterBlockHookArguments
14
+ ): Promise<NetworkState> {
15
+ return networkState;
16
+ }
17
+
18
+ public async beforeBlock(
19
+ networkState: NetworkState,
20
+ state: BeforeBlockHookArguments
21
+ ): Promise<NetworkState> {
22
+ return networkState;
23
+ }
24
+ }
@@ -0,0 +1,20 @@
1
+ import { injectable } from "tsyringe";
2
+ import { noop } from "@proto-kit/common";
3
+
4
+ import {
5
+ ProvableSettlementHook,
6
+ SettlementHookInputs,
7
+ } from "../settlement/modularity/ProvableSettlementHook";
8
+ import { SettlementContractType } from "../settlement/contracts/settlement/SettlementBase";
9
+
10
+ @injectable()
11
+ export class NoopSettlementHook extends ProvableSettlementHook<
12
+ Record<string, never>
13
+ > {
14
+ public async beforeSettlement(
15
+ contract: SettlementContractType,
16
+ state: SettlementHookInputs
17
+ ) {
18
+ noop();
19
+ }
20
+ }
@@ -1,7 +1,13 @@
1
+ import { noop } from "@proto-kit/common";
2
+
1
3
  import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
2
- import { BlockProverExecutionData } from "../prover/block/BlockProvable";
3
4
 
4
5
  export class NoopTransactionHook extends ProvableTransactionHook {
5
- public onTransaction(executionData: BlockProverExecutionData): void {
6
+ public async beforeTransaction() {
7
+ noop();
8
+ }
9
+
10
+ public async afterTransaction() {
11
+ noop();
6
12
  }
7
- }
13
+ }
package/src/index.ts CHANGED
@@ -1,30 +1,43 @@
1
- export * from "./blockmodules/AccountStateModule";
2
- export * from "./utils/ProvableHashList";
1
+ export * from "./hooks/AccountStateHook";
2
+ export * from "./hooks/BlockHeightHook";
3
+ export * from "./hooks/LastStateRootBlockHook";
3
4
  export * from "./model/StateTransition";
4
5
  export * from "./model/StateTransitionProvableBatch";
5
6
  export * from "./model/Option";
6
7
  export * from "./model/Path";
7
8
  export * from "./model/network/NetworkState";
8
- export * from "./model/transaction/ProtocolTransaction";
9
+ export * from "./model/transaction/AuthorizedTransaction";
9
10
  export * from "./model/transaction/RuntimeTransaction";
10
- export * from "./utils/PrefixedProvableHashList.js";
11
+ export * from "./model/transaction/ValueOption";
12
+ export * from "./model/MethodPublicOutput";
13
+ export * from "./model/RuntimeLike";
14
+ export * from "./model/AppliedStateTransitionBatch";
15
+ export * from "./utils/ProvableHashList";
16
+ export * from "./utils/PrefixedProvableHashList";
17
+ export * from "./utils/MinaPrefixedProvableHashList";
18
+ export * from "./utils/ProvableReductionHashList";
11
19
  export * from "./utils/utils";
20
+ export * from "./utils/FieldOptions";
21
+ export * from "./prover/accumulators/StateTransitionReductionList";
22
+ export * from "./prover/accumulators/AppliedBatchHashList";
23
+ export * from "./prover/accumulators/WitnessedRootHashList";
24
+ export * from "./prover/accumulators/TransactionHashList";
25
+ export * from "./prover/accumulators/BlockHashList";
12
26
  export * from "./prover/block/BlockProver";
13
27
  export * from "./prover/block/BlockProvable";
28
+ export * from "./prover/block/accummulators/RuntimeVerificationKeyTree";
29
+ export * from "./prover/block/accummulators/BlockHashMerkleTree";
30
+ export * from "./prover/block/services/RuntimeVerificationKeyRootService";
14
31
  export * from "./prover/statetransition/StateTransitionProver";
15
32
  export * from "./prover/statetransition/StateTransitionProvable";
16
- export * from "./prover/statetransition/StateTransitionWitnessProvider";
17
- export * from "./utils/merkletree/MerkleTreeStore";
18
- export * from "./utils/merkletree/InMemoryMerkleTreeStorage";
19
- export * from "./utils/merkletree/RollupMerkleTree";
20
- export * from "./model/MethodPublicOutput";
21
- export * from "./prover/statetransition/StateTransitionWitnessProviderReference";
33
+ export * from "./prover/transaction/TransactionProver";
34
+ export * from "./prover/transaction/TransactionProvable";
35
+ export * from "./prover/utils";
22
36
  export * from "./protocol/Protocol";
23
37
  export * from "./protocol/ProtocolModule";
24
- export * from "./protocol/TransitioningProtocolModule";
38
+ export * from "./protocol/ProtocolEnvironment";
25
39
  export * from "./protocol/ProvableTransactionHook";
26
- export * from "./state/assert/assert";
27
- export * from "./state/context/ProtocolMethodExecutionContext";
40
+ export * from "./protocol/ProvableBlockHook";
28
41
  export * from "./state/context/TransitionMethodExecutionContext";
29
42
  export * from "./state/context/RuntimeMethodExecutionContext";
30
43
  export * from "./state/protocol/ProtocolState";
@@ -32,4 +45,29 @@ export * from "./state/State";
32
45
  export * from "./state/StateMap";
33
46
  export * from "./state/StateService";
34
47
  export * from "./state/StateServiceProvider";
48
+ export * from "./state/assert/assert";
49
+ export * from "./settlement/contracts/authorizations/ContractAuthorization";
50
+ export * from "./settlement/contracts/authorizations/UpdateMessagesHashAuth";
51
+ export * from "./settlement/contracts/authorizations/TokenBridgeDeploymentAuth";
52
+ export * from "./settlement/contracts/settlement/SettlementBase";
53
+ export * from "./settlement/contracts/settlement/SettlementContract";
54
+ export * from "./settlement/contracts/settlement/BridgingSettlementContract";
55
+ export * from "./settlement/contracts/BridgingSettlementContractModule";
56
+ export * from "./settlement/contracts/SettlementSmartContractModule";
57
+ export * from "./settlement/contracts/DispatchSmartContract";
58
+ export * from "./settlement/contracts/DispatchContractProtocolModule";
59
+ export * from "./settlement/contracts/BridgeContract";
60
+ export * from "./settlement/contracts/BridgeContractProtocolModule";
61
+ export * from "./settlement/contracts/TokenBridgeTree";
62
+ export * from "./settlement/SettlementContractModule";
63
+ export * from "./settlement/ContractModule";
64
+ export * from "./settlement/modularity/ProvableSettlementHook";
65
+ export * from "./settlement/modularity/OutgoingMessageProcessor";
66
+ export * from "./settlement/messages/OutgoingMessageArgument";
67
+ export * from "./settlement/messages/OutgoingMessage";
68
+ export * from "./settlement/modules/NetworkStateSettlementModule";
69
+ export * from "./settlement/messages/Deposit";
70
+ export * from "./settlement/ContractArgsRegistry";
35
71
  export { constants as ProtocolConstants } from "./Constants";
72
+ export * from "./hashing/protokit-prefixes";
73
+ export * from "./hashing/mina-prefixes";
@@ -0,0 +1,16 @@
1
+ import { Bool, Field, Poseidon, Provable, Struct } from "o1js";
2
+
3
+ export class AppliedStateTransitionBatch extends Struct({
4
+ batchHash: Field,
5
+ applied: Bool,
6
+ }) {}
7
+
8
+ export class AppliedStateTransitionBatchState extends Struct({
9
+ batchHash: Field,
10
+ root: Field,
11
+ }) {
12
+ public hashOrZero(): Field {
13
+ const hash = Poseidon.hash(AppliedStateTransitionBatchState.toFields(this));
14
+ return Provable.if(this.batchHash.equals(0), Field(0), hash);
15
+ }
16
+ }
@@ -1,4 +1,4 @@
1
- import { Bool, Field, Struct } from "snarkyjs";
1
+ import { Bool, Field, Struct } from "o1js";
2
2
 
3
3
  /**
4
4
  * Public input used to link in-circuit execution with
@@ -9,4 +9,6 @@ export class MethodPublicOutput extends Struct({
9
9
  status: Bool,
10
10
  transactionHash: Field,
11
11
  networkStateHash: Field,
12
+ isMessage: Bool,
13
+ eventsHash: Field,
12
14
  }) {}
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  Bool,
3
3
  Field,
4
- FlexibleProvable,
5
4
  type FlexibleProvablePure,
6
5
  Poseidon,
7
6
  Provable,
7
+ ProvablePure,
8
8
  Struct,
9
- } from "snarkyjs";
9
+ } from "o1js";
10
10
 
11
11
  export class ProvableOption extends Struct({
12
12
  isSome: Bool,
@@ -18,14 +18,70 @@ export class ProvableOption extends Struct({
18
18
  }
19
19
  }
20
20
 
21
- export interface ToFieldable {
22
- toFields: () => Field[];
21
+ export abstract class OptionBase {
22
+ protected constructor(
23
+ public isSome: Bool,
24
+ public isForcedSome: Bool
25
+ ) {}
26
+
27
+ protected abstract encodeValueToFields(): Field[];
28
+
29
+ protected abstract clone(): OptionBase;
30
+
31
+ /**
32
+ * @returns Tree representation of the current value
33
+ */
34
+ public get treeValue() {
35
+ const treeValue = Poseidon.hash(this.encodeValueToFields());
36
+
37
+ return Provable.if(
38
+ this.isSome.and(this.isForcedSome.not()),
39
+ treeValue,
40
+ Field(0)
41
+ );
42
+ }
43
+
44
+ public forceSome() {
45
+ this.isForcedSome = Provable.if(this.isSome, Bool(false), Bool(true));
46
+ this.isSome = Bool(true);
47
+ }
48
+
49
+ /**
50
+ * Returns the `to`-value as decoded as a list of fields
51
+ * Not in circuit
52
+ */
53
+ public toFields(): Field[] {
54
+ if (this.isSome.toBoolean()) {
55
+ return this.encodeValueToFields();
56
+ }
57
+ return [Field(0)];
58
+ }
59
+
60
+ /**
61
+ * @returns Provable representation of the current option.
62
+ */
63
+ public toProvable() {
64
+ return new ProvableOption({
65
+ isSome: this.isSome,
66
+ value: this.treeValue,
67
+ });
68
+ }
69
+
70
+ public toJSON() {
71
+ const value = this.encodeValueToFields().map((field) => field.toString());
72
+
73
+ return {
74
+ isSome: this.isSome.toBoolean(),
75
+ isForcedSome: this.isForcedSome.toBoolean(),
76
+ value,
77
+ };
78
+ }
23
79
  }
24
80
 
25
81
  /**
26
82
  * Option facilitating in-circuit values that may or may not exist.
27
83
  */
28
- export class Option<Value> {
84
+ export class Option<Value> extends OptionBase {
29
85
  /**
30
86
  * Creates a new Option from the provided parameters
31
87
  *
@@ -63,57 +119,28 @@ export class Option<Value> {
63
119
  return new Option(Bool(false), Field(0), Field);
64
120
  }
65
121
 
66
- public isForcedSome = Bool(false);
67
-
68
122
  public constructor(
69
- public isSome: Bool,
123
+ isSome: Bool,
70
124
  public value: Value,
71
- public valueType: FlexibleProvablePure<Value>
72
- ) {}
73
-
74
- public clone() {
75
- return new Option(this.isSome, this.value, this.valueType);
125
+ public valueType: FlexibleProvablePure<Value>,
126
+ isForcedSome = Bool(false)
127
+ ) {
128
+ super(isSome, isForcedSome);
76
129
  }
77
130
 
78
- public forceSome() {
79
- this.isForcedSome = Provable.if(this.isSome, Bool(false), Bool(true));
80
- this.isSome = Bool(true);
131
+ public encodeValueToFields(): Field[] {
132
+ return this.valueType.toFields(this.value);
81
133
  }
82
134
 
83
- /**
84
- * @returns Tree representation of the current value
85
- */
86
- public get treeValue() {
87
- const treeValue = Poseidon.hash(this.valueType.toFields(this.value));
88
-
89
- return Provable.if(
90
- this.isSome.and(this.isForcedSome.not()),
91
- treeValue,
92
- Field(0)
135
+ public clone(): Option<Value> {
136
+ return new Option(
137
+ this.isSome,
138
+ this.value,
139
+ this.valueType,
140
+ this.isForcedSome
93
141
  );
94
142
  }
95
143
 
96
- /**
97
- * Returns the `to`-value as decoded as a list of fields
98
- * Not in circuit
99
- */
100
- public toFields(): Field[] {
101
- if (this.isSome.toBoolean()) {
102
- return this.valueType.toFields(this.value);
103
- }
104
- return [Field(0)];
105
- }
106
-
107
- /**
108
- * @returns Provable representation of the current option.
109
- */
110
- public toProvable() {
111
- return new ProvableOption({
112
- isSome: this.isSome,
113
- value: this.treeValue,
114
- });
115
- }
116
-
117
144
  /**
118
145
  * @returns Returns the value of this option if it isSome,
119
146
  * otherwise returns the given defaultValue
@@ -127,16 +154,19 @@ export class Option<Value> {
127
154
  );
128
155
  }
129
156
 
130
- public toJSON() {
131
- const valueContent = this.valueType
132
- .toFields(this.value)
133
- .map((field) => field.toString())
134
- .reduce((a, b) => `${a}, ${b}`);
135
-
136
- return {
137
- isSome: this.isSome.toBoolean(),
157
+ public toConstant() {
158
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
159
+ const valueConstant = (this.valueType as ProvablePure<Value>).fromFields(
160
+ this.valueType.toFields(this.value).map((field) => field.toConstant())
161
+ );
162
+ const boolConstant = (bool: Bool) =>
163
+ Bool.fromFields([bool.toField().toConstant()]);
138
164
 
139
- value: `[${valueContent}]`,
140
- };
165
+ return new Option(
166
+ boolConstant(this.isSome),
167
+ valueConstant,
168
+ this.valueType,
169
+ boolConstant(this.isForcedSome)
170
+ );
141
171
  }
142
172
  }
package/src/model/Path.ts CHANGED
@@ -1,6 +1,5 @@
1
- /* eslint-disable @typescript-eslint/no-extraneous-class */
2
- /* eslint-disable @shopify/no-fully-static-classes */
3
- import { Field, type FlexibleProvablePure, Poseidon } from "snarkyjs";
1
+ import { Field, type FlexibleProvablePure, Poseidon } from "o1js";
2
+ import { hashWithPrefix } from "@proto-kit/common";
4
3
 
5
4
  import { stringToField } from "../utils/utils";
6
5
 
@@ -23,10 +22,15 @@ export class Path {
23
22
  *
24
23
  * @param className
25
24
  * @param propertyKey
25
+ * @param prefix
26
26
  * @returns Field representation of class name + property name
27
27
  */
28
- public static fromProperty(className: string, propertyKey: string): Field {
29
- return Poseidon.hash([
28
+ public static fromProperty(
29
+ className: string,
30
+ propertyKey: string,
31
+ prefix: string
32
+ ): Field {
33
+ return hashWithPrefix(prefix, [
30
34
  Path.toField(className),
31
35
  Path.toField(propertyKey),
32
36
  Field(0),
@@ -0,0 +1,12 @@
1
+ export type RuntimeMethodInvocationType = "INCOMING_MESSAGE" | "SIGNATURE";
2
+
3
+ export type RuntimeMethodIdMapping = Record<
4
+ `${string}.${string}`,
5
+ { methodId: bigint; type: RuntimeMethodInvocationType }
6
+ >;
7
+
8
+ export interface RuntimeLike {
9
+ get methodIdResolver(): {
10
+ methodIdMap: () => RuntimeMethodIdMapping;
11
+ };
12
+ }
@@ -1,6 +1,6 @@
1
- import { Field, Struct } from "snarkyjs";
1
+ import { Field, Struct } from "o1js";
2
2
 
3
- import { Option, ProvableOption, ToFieldable } from "./Option.js";
3
+ import { Option, ProvableOption } from "./Option";
4
4
 
5
5
  /**
6
6
  * Provable representation of a State Transition, used to
@@ -23,6 +23,12 @@ export class ProvableStateTransition extends Struct({
23
23
  to: Option.none().toProvable(),
24
24
  });
25
25
  }
26
+
27
+ public static isDummy(stateTransition: ProvableStateTransition) {
28
+ return stateTransition.path
29
+ .equals(0)
30
+ .and(stateTransition.from.isSome.not());
31
+ }
26
32
  }
27
33
 
28
34
  /**
@@ -44,7 +50,7 @@ export class StateTransition<Value> {
44
50
 
45
51
  public constructor(
46
52
  public path: Field,
47
- public fromValue: Option<Field> | Option<Value>,
53
+ public fromValue: Option<Value>,
48
54
  public toValue: Option<Field> | Option<Value>
49
55
  ) {}
50
56
 
@@ -73,8 +79,16 @@ export class StateTransition<Value> {
73
79
  public toJSON() {
74
80
  return {
75
81
  path: this.path.toString(),
76
- from: this.from.toJSON(),
77
- to: this.to.toJSON(),
82
+ from: this.fromValue.toJSON(),
83
+ to: this.toValue.toJSON(),
78
84
  };
79
85
  }
86
+
87
+ public toConstant(): StateTransition<Value> {
88
+ return new StateTransition<Value>(
89
+ this.path.toConstant(),
90
+ this.fromValue.toConstant(),
91
+ this.toValue.toConstant()
92
+ );
93
+ }
80
94
  }