@proto-kit/protocol 0.1.1-develop.191 → 0.1.1-develop.2024

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 (466) 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 +59 -9
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +60 -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 -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 +70 -46
  48. package/dist/model/Option.d.ts.map +1 -1
  49. package/dist/model/Option.js +62 -57
  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 +389 -16
  64. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  65. package/dist/model/StateTransitionProvableBatch.js +87 -10
  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 +47 -21
  88. package/dist/protocol/Protocol.d.ts.map +1 -1
  89. package/dist/protocol/Protocol.js +127 -26
  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 -7
  96. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  97. package/dist/protocol/ProtocolModule.js +10 -7
  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 +35 -0
  104. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
  105. package/dist/protocol/ProvableTransactionHook.js +28 -0
  106. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  107. package/dist/protocol/TransitioningProtocolModule.d.ts +10 -0
  108. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -0
  109. package/dist/protocol/TransitioningProtocolModule.js +9 -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 +52 -37
  136. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  137. package/dist/prover/block/BlockProver.js +327 -107
  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 -48
  152. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  153. package/dist/prover/statetransition/StateTransitionProvable.js +10 -5
  154. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  155. package/dist/prover/statetransition/StateTransitionProver.d.ts +29 -17
  156. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  157. package/dist/prover/statetransition/StateTransitionProver.js +171 -73
  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 +53 -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 +119 -0
  184. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  185. package/dist/settlement/contracts/BridgeContract.js +269 -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 +494 -0
  252. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  253. package/dist/settlement/messages/OutgoingMessageArgument.js +40 -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 +25 -0
  260. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
  261. package/dist/settlement/modularity/OutgoingMessageProcessor.js +30 -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 +68 -0
  280. package/dist/state/State.d.ts.map +1 -0
  281. package/dist/state/State.js +141 -0
  282. package/dist/state/State.js.map +1 -0
  283. package/dist/state/StateMap.d.ts +37 -0
  284. package/dist/state/StateMap.d.ts.map +1 -0
  285. package/dist/state/StateMap.js +56 -0
  286. package/dist/state/StateMap.js.map +1 -0
  287. package/dist/state/StateService.d.ts +6 -0
  288. package/dist/state/StateService.d.ts.map +1 -0
  289. package/dist/state/StateService.js +2 -0
  290. package/dist/state/StateService.js.map +1 -0
  291. package/dist/state/StateServiceProvider.d.ts +8 -0
  292. package/dist/state/StateServiceProvider.d.ts.map +1 -0
  293. package/dist/state/StateServiceProvider.js +37 -0
  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 +42 -0
  298. package/dist/state/WitnessBlockContext.js.map +1 -0
  299. package/dist/state/assert/assert.d.ts +12 -0
  300. package/dist/state/assert/assert.d.ts.map +1 -0
  301. package/dist/state/assert/assert.js +33 -0
  302. package/dist/state/assert/assert.js.map +1 -0
  303. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +193 -0
  304. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -0
  305. package/dist/state/context/RuntimeMethodExecutionContext.js +138 -0
  306. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  307. package/dist/state/context/TransitionMethodExecutionContext.d.ts +23 -0
  308. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -0
  309. package/dist/state/context/TransitionMethodExecutionContext.js +6 -0
  310. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  311. package/dist/state/protocol/ProtocolState.d.ts +13 -0
  312. package/dist/state/protocol/ProtocolState.d.ts.map +1 -0
  313. package/dist/state/protocol/ProtocolState.js +58 -0
  314. package/dist/state/protocol/ProtocolState.js.map +1 -0
  315. package/dist/utils/FieldOptions.d.ts +62 -0
  316. package/dist/utils/FieldOptions.d.ts.map +1 -0
  317. package/dist/utils/FieldOptions.js +13 -0
  318. package/dist/utils/FieldOptions.js.map +1 -0
  319. package/dist/utils/MinaPrefixedProvableHashList.d.ts +20 -0
  320. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  321. package/dist/utils/MinaPrefixedProvableHashList.js +49 -0
  322. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  323. package/dist/utils/PrefixedProvableHashList.d.ts +3 -2
  324. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
  325. package/dist/utils/PrefixedProvableHashList.js +5 -1
  326. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  327. package/dist/utils/ProvableHashList.d.ts +27 -4
  328. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  329. package/dist/utils/ProvableHashList.js +51 -3
  330. package/dist/utils/ProvableHashList.js.map +1 -0
  331. package/dist/utils/ProvableReductionHashList.d.ts +18 -0
  332. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  333. package/dist/utils/ProvableReductionHashList.js +54 -0
  334. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  335. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  336. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  337. package/dist/utils/StateTransitionReductionList.js +61 -0
  338. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  339. package/dist/utils/utils.d.ts +11 -5
  340. package/dist/utils/utils.d.ts.map +1 -1
  341. package/dist/utils/utils.js +13 -13
  342. package/dist/utils/utils.js.map +1 -0
  343. package/jest.config.cjs +12 -1
  344. package/package.json +11 -9
  345. package/src/hashing/mina-prefixes.ts +10 -0
  346. package/src/hashing/protokit-prefixes.ts +37 -0
  347. package/src/hooks/AccountStateHook.ts +80 -0
  348. package/src/hooks/BlockHeightHook.ts +17 -0
  349. package/src/hooks/LastStateRootBlockHook.ts +25 -0
  350. package/src/hooks/NoopBlockHook.ts +24 -0
  351. package/src/hooks/NoopSettlementHook.ts +20 -0
  352. package/src/hooks/NoopTransactionHook.ts +13 -0
  353. package/src/index.ts +59 -9
  354. package/src/model/AppliedStateTransitionBatch.ts +16 -0
  355. package/src/model/MethodPublicOutput.ts +3 -1
  356. package/src/model/Option.ts +99 -73
  357. package/src/model/Path.ts +9 -5
  358. package/src/model/RuntimeLike.ts +12 -0
  359. package/src/model/StateTransition.ts +19 -5
  360. package/src/model/StateTransitionProvableBatch.ts +114 -12
  361. package/src/model/Transaction.ts +3 -1
  362. package/src/model/network/NetworkState.ts +22 -2
  363. package/src/model/transaction/AuthorizedTransaction.ts +50 -0
  364. package/src/model/transaction/RuntimeTransaction.ts +86 -15
  365. package/src/model/transaction/ValueOption.ts +28 -0
  366. package/src/protocol/Protocol.ts +201 -69
  367. package/src/protocol/ProtocolEnvironment.ts +10 -0
  368. package/src/protocol/ProtocolModule.ts +16 -15
  369. package/src/protocol/ProvableBlockHook.ts +67 -0
  370. package/src/protocol/ProvableTransactionHook.ts +96 -0
  371. package/src/protocol/TransitioningProtocolModule.ts +12 -0
  372. package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
  373. package/src/prover/accumulators/BlockHashList.ts +117 -0
  374. package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
  375. package/src/prover/accumulators/TransactionHashList.ts +9 -0
  376. package/src/prover/accumulators/WitnessedRootHashList.ts +62 -0
  377. package/src/prover/block/BlockProvable.ts +360 -28
  378. package/src/prover/block/BlockProver.ts +721 -186
  379. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +24 -0
  380. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  381. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  382. package/src/prover/statetransition/StateTransitionProvable.ts +26 -19
  383. package/src/prover/statetransition/StateTransitionProver.ts +337 -126
  384. package/src/prover/transaction/TransactionProvable.ts +183 -0
  385. package/src/prover/transaction/TransactionProver.ts +561 -0
  386. package/src/prover/utils.ts +108 -0
  387. package/src/settlement/ContractArgsRegistry.ts +60 -0
  388. package/src/settlement/ContractModule.ts +31 -0
  389. package/src/settlement/SettlementContractModule.ts +150 -0
  390. package/src/settlement/contracts/BridgeContract.ts +385 -0
  391. package/src/settlement/contracts/BridgeContractProtocolModule.ts +49 -0
  392. package/src/settlement/contracts/BridgingSettlementContractModule.ts +116 -0
  393. package/src/settlement/contracts/DispatchContractProtocolModule.ts +77 -0
  394. package/src/settlement/contracts/DispatchSmartContract.ts +359 -0
  395. package/src/settlement/contracts/SettlementSmartContractModule.ts +79 -0
  396. package/src/settlement/contracts/TokenBridgeTree.ts +73 -0
  397. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  398. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  399. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  400. package/src/settlement/contracts/settlement/BridgingSettlementContract.ts +283 -0
  401. package/src/settlement/contracts/settlement/SettlementBase.ts +249 -0
  402. package/src/settlement/contracts/settlement/SettlementContract.ts +75 -0
  403. package/src/settlement/messages/Deposit.ts +7 -0
  404. package/src/settlement/messages/OutgoingMessage.ts +17 -0
  405. package/src/settlement/messages/OutgoingMessageArgument.ts +53 -0
  406. package/src/settlement/modularity/OutgoingMessageProcessor.ts +65 -0
  407. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  408. package/src/settlement/modularity/types.ts +23 -0
  409. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  410. package/src/state/State.ts +190 -0
  411. package/src/state/StateMap.ts +73 -0
  412. package/src/state/StateService.ts +6 -0
  413. package/src/state/StateServiceProvider.ts +37 -0
  414. package/src/state/WitnessBlockContext.ts +50 -0
  415. package/src/state/assert/assert.ts +38 -0
  416. package/src/state/context/RuntimeMethodExecutionContext.ts +181 -0
  417. package/src/state/context/TransitionMethodExecutionContext.ts +26 -0
  418. package/src/state/protocol/ProtocolState.ts +98 -0
  419. package/src/utils/FieldOptions.ts +13 -0
  420. package/src/utils/MinaPrefixedProvableHashList.ts +70 -0
  421. package/src/utils/PrefixedProvableHashList.ts +6 -2
  422. package/src/utils/ProvableHashList.ts +109 -4
  423. package/src/utils/ProvableReductionHashList.ts +77 -0
  424. package/src/utils/utils.ts +21 -16
  425. package/test/BlockProver.test.ts +161 -74
  426. package/test/Protocol.test.ts +20 -10
  427. package/test/State.test.ts +45 -0
  428. package/test/StateTransition.test.ts +57 -65
  429. package/test/TestingProtocol.ts +36 -0
  430. package/test/compiling/types.ts +28 -0
  431. package/test/model/Option.test.ts +72 -0
  432. package/test/model/StateTransitionProvableBatch.test.ts +137 -0
  433. package/test/modularity/types.ts +35 -0
  434. package/test/prover/block/BlockProver.test.ts +18 -0
  435. package/test/prover/statetransition/StateTransitionProver.test.ts +261 -0
  436. package/test/state/assert/assert.test.ts +56 -0
  437. package/test/tsconfig.json +7 -0
  438. package/test/utils/ProvableHashList.test.ts +44 -0
  439. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  440. package/test/utils.test.ts +0 -3
  441. package/LICENSE.md +0 -201
  442. package/dist/model/transaction/ProtocolTransaction.d.ts +0 -70
  443. package/dist/model/transaction/ProtocolTransaction.d.ts.map +0 -1
  444. package/dist/model/transaction/ProtocolTransaction.js +0 -18
  445. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
  446. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
  447. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +0 -7
  448. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +0 -1
  449. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -25
  450. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
  451. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -77
  452. package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
  453. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
  454. package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
  455. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -130
  456. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  457. package/dist/utils/merkletree/RollupMerkleTree.js +0 -244
  458. package/src/model/Option.test.ts +0 -21
  459. package/src/model/transaction/ProtocolTransaction.ts +0 -25
  460. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -24
  461. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
  462. package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -106
  463. package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
  464. package/src/utils/merkletree/RollupMerkleTree.ts +0 -255
  465. package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
  466. package/tsconfig.test.json +0 -9
@@ -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
+ }
@@ -0,0 +1,13 @@
1
+ import { noop } from "@proto-kit/common";
2
+
3
+ import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
4
+
5
+ export class NoopTransactionHook extends ProvableTransactionHook {
6
+ public async beforeTransaction() {
7
+ noop();
8
+ }
9
+
10
+ public async afterTransaction() {
11
+ noop();
12
+ }
13
+ }
package/src/index.ts CHANGED
@@ -1,23 +1,73 @@
1
- export * from "./utils/ProvableHashList";
1
+ export * from "./hooks/AccountStateHook";
2
+ export * from "./hooks/BlockHeightHook";
3
+ export * from "./hooks/LastStateRootBlockHook";
2
4
  export * from "./model/StateTransition";
3
5
  export * from "./model/StateTransitionProvableBatch";
4
6
  export * from "./model/Option";
5
7
  export * from "./model/Path";
6
8
  export * from "./model/network/NetworkState";
7
- export * from "./model/transaction/ProtocolTransaction";
9
+ export * from "./model/transaction/AuthorizedTransaction";
8
10
  export * from "./model/transaction/RuntimeTransaction";
9
- 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";
10
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";
11
26
  export * from "./prover/block/BlockProver";
12
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";
13
31
  export * from "./prover/statetransition/StateTransitionProver";
14
32
  export * from "./prover/statetransition/StateTransitionProvable";
15
- export * from "./prover/statetransition/StateTransitionWitnessProvider";
16
- export * from "./utils/merkletree/MerkleTreeStore";
17
- export * from "./utils/merkletree/InMemoryMerkleTreeStorage";
18
- export * from "./utils/merkletree/RollupMerkleTree";
19
- export * from "./model/MethodPublicOutput";
20
- export * from "./prover/statetransition/StateTransitionWitnessProviderReference";
33
+ export * from "./prover/transaction/TransactionProver";
34
+ export * from "./prover/transaction/TransactionProvable";
35
+ export * from "./prover/utils";
21
36
  export * from "./protocol/Protocol";
22
37
  export * from "./protocol/ProtocolModule";
38
+ export * from "./protocol/ProtocolEnvironment";
39
+ export * from "./protocol/ProvableTransactionHook";
40
+ export * from "./protocol/ProvableBlockHook";
41
+ export * from "./state/context/TransitionMethodExecutionContext";
42
+ export * from "./state/context/RuntimeMethodExecutionContext";
43
+ export * from "./state/protocol/ProtocolState";
44
+ export * from "./state/State";
45
+ export * from "./state/StateMap";
46
+ export * from "./state/StateService";
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";
23
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
  }) {}
@@ -4,8 +4,9 @@ import {
4
4
  type FlexibleProvablePure,
5
5
  Poseidon,
6
6
  Provable,
7
+ ProvablePure,
7
8
  Struct,
8
- } from "snarkyjs";
9
+ } from "o1js";
9
10
 
10
11
  export class ProvableOption extends Struct({
11
12
  isSome: Bool,
@@ -17,10 +18,70 @@ export class ProvableOption extends Struct({
17
18
  }
18
19
  }
19
20
 
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
+ }
79
+ }
80
+
20
81
  /**
21
82
  * Option facilitating in-circuit values that may or may not exist.
22
83
  */
23
- export class Option<Value> {
84
+ export class Option<Value> extends OptionBase {
24
85
  /**
25
86
  * Creates a new Option from the provided parameters
26
87
  *
@@ -58,89 +119,54 @@ export class Option<Value> {
58
119
  return new Option(Bool(false), Field(0), Field);
59
120
  }
60
121
 
61
- public static dummyValueFields<Value>(
62
- valueType: FlexibleProvablePure<Value>
63
- ): Field[] {
64
- const length = valueType.sizeInFields();
65
- return Array.from({ length }, () => Field(0));
66
- }
67
-
68
- /**
69
- * Computes a dummy value for the given value type.
70
- *
71
- * @param valueType - Value type to generate the dummy value for
72
- * @returns Dummy value for the given value type
73
- */
74
- public static dummyValue<Value>(
75
- valueType: FlexibleProvablePure<Value>
76
- ): Value {
77
- const fields = Option.dummyValueFields(valueType);
78
-
79
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
80
- return valueType.fromFields(fields) as Value;
81
- }
82
-
83
- public isForcedSome = Bool(false);
84
-
85
122
  public constructor(
86
- public isSome: Bool,
123
+ isSome: Bool,
87
124
  public value: Value,
88
- public valueType: FlexibleProvablePure<Value>
89
- ) {}
90
-
91
- public clone() {
92
- return new Option(this.isSome, this.value, this.valueType);
125
+ public valueType: FlexibleProvablePure<Value>,
126
+ isForcedSome = Bool(false)
127
+ ) {
128
+ super(isSome, isForcedSome);
93
129
  }
94
130
 
95
- public forceSome() {
96
- this.isForcedSome = Provable.if(this.isSome, Bool(false), Bool(true));
97
- this.isSome = Bool(true);
131
+ public encodeValueToFields(): Field[] {
132
+ return this.valueType.toFields(this.value);
98
133
  }
99
134
 
100
- /**
101
- * @returns Tree representation of the current value
102
- */
103
- public get treeValue() {
104
- const treeValue = Poseidon.hash(this.valueType.toFields(this.value));
105
-
106
- return Provable.if(
107
- this.isSome.and(this.isForcedSome.not()),
108
- treeValue,
109
- Field(0)
135
+ public clone(): Option<Value> {
136
+ return new Option(
137
+ this.isSome,
138
+ this.value,
139
+ this.valueType,
140
+ this.isForcedSome
110
141
  );
111
142
  }
112
143
 
113
144
  /**
114
- * Returns the `to`-value as decoded as a list of fields
115
- * Not in circuit
145
+ * @returns Returns the value of this option if it isSome,
146
+ * otherwise returns the given defaultValue
116
147
  */
117
- public toFields(): Field[] {
118
- if (this.isSome.toBoolean()) {
119
- return this.valueType.toFields(this.value);
120
- }
121
- return [Field(0)];
122
- }
123
-
124
- /**
125
- * @returns Provable representation of the current option.
126
- */
127
- public toProvable() {
128
- return new ProvableOption({
129
- isSome: this.isSome,
130
- value: this.treeValue,
131
- });
148
+ public orElse(defaultValue: Value): Value {
149
+ return Provable.if<Value>(
150
+ this.isSome,
151
+ this.valueType,
152
+ this.value,
153
+ defaultValue
154
+ );
132
155
  }
133
156
 
134
- public toJSON() {
135
- const valueContent = this.valueType
136
- .toFields(this.value)
137
- .map((field) => field.toString())
138
- .reduce((a, b) => `${a}, ${b}`);
139
-
140
- return {
141
- isSome: this.isSome.toBoolean(),
142
-
143
- value: `[${valueContent}]`,
144
- };
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()]);
164
+
165
+ return new Option(
166
+ boolConstant(this.isSome),
167
+ valueConstant,
168
+ this.valueType,
169
+ boolConstant(this.isForcedSome)
170
+ );
145
171
  }
146
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 } 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
  }