@proto-kit/protocol 0.1.1-develop.190 → 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,49 @@
1
+ import { Field, Poseidon } from "o1js";
2
+ import { hashWithPrefix, prefixToField } from "@proto-kit/common";
3
+ import { MINA_PREFIXES, MINA_SALTS } from "../hashing/mina-prefixes";
4
+ import { ProvableHashList } from "./ProvableHashList";
5
+ function salt(prefix) {
6
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
7
+ return Poseidon.update([Field(0), Field(0), Field(0)], [prefixToField(prefix)]);
8
+ }
9
+ export function emptyActions() {
10
+ return salt(MINA_SALTS.empty_actions)[0];
11
+ }
12
+ export function emptyEvents() {
13
+ return salt(MINA_SALTS.empty_events)[0];
14
+ }
15
+ export class MinaActions {
16
+ static actionHash(action, previousHash = emptyActions()) {
17
+ const actionDataHash = hashWithPrefix(MINA_PREFIXES.event, action);
18
+ return hashWithPrefix(MINA_PREFIXES.sequenceEvents, [
19
+ previousHash,
20
+ actionDataHash,
21
+ ]);
22
+ }
23
+ }
24
+ export class MinaEvents {
25
+ static eventHash(event, previousHash = emptyEvents()) {
26
+ const actionDataHash = hashWithPrefix(MINA_PREFIXES.event, event);
27
+ return hashWithPrefix(MINA_PREFIXES.events, [previousHash, actionDataHash]);
28
+ }
29
+ }
30
+ export class MinaPrefixedProvableHashList extends ProvableHashList {
31
+ constructor(valueType, prefix, internalCommitment) {
32
+ super(valueType, internalCommitment);
33
+ this.prefix = prefix;
34
+ }
35
+ empty() {
36
+ return Field(0);
37
+ }
38
+ hash(elements) {
39
+ const init = salt(this.prefix);
40
+ const digest = Poseidon.update(init, elements);
41
+ return digest[0];
42
+ }
43
+ }
44
+ export class MinaActionsHashList extends MinaPrefixedProvableHashList {
45
+ constructor(internalCommitment) {
46
+ super(Field, MINA_PREFIXES.sequenceEvents, internalCommitment);
47
+ }
48
+ }
49
+ //# sourceMappingURL=MinaPrefixedProvableHashList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinaPrefixedProvableHashList.js","sourceRoot":"","sources":["../../src/utils/MinaPrefixedProvableHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAgB,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,SAAS,IAAI,CAAC,MAAc;IAC1B,yEAAyE;IACzE,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAC9B,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CACC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,UAAU,CACf,MAAe,EACf,eAAsB,YAAY,EAAE;QAEpC,MAAM,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,cAAc,CAAC,aAAa,CAAC,cAAc,EAAE;YAClD,YAAY;YACZ,cAAc;SACf,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IACrB,MAAM,CAAC,SAAS,CAAC,KAAc,EAAE,eAAsB,WAAW,EAAE;QAClE,MAAM,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF;AAED,MAAM,OAAO,4BAEX,SAAQ,gBAAuB;IAC/B,YACE,SAA8B,EACd,MAAc,EAC9B,kBAA0B;QAE1B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAHrB,WAAM,GAAN,MAAM,CAAQ;IAIhC,CAAC;IAEM,KAAK;QACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAES,IAAI,CAAC,QAAiB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,4BAAmC;IAC1E,YAAmB,kBAA0B;QAC3C,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IACjE,CAAC;CACF"}
@@ -1,8 +1,9 @@
1
- import { Field, FlexibleProvablePure } from "snarkyjs";
1
+ import { Field, ProvablePure } from "o1js";
2
2
  import { ProvableHashList } from "./ProvableHashList.js";
3
3
  export declare class PrefixedProvableHashList<Value> extends ProvableHashList<Value> {
4
4
  private readonly prefix;
5
- constructor(valueType: FlexibleProvablePure<Value>, prefix: string, internalCommitment?: Field);
5
+ constructor(valueType: ProvablePure<Value>, prefix: string, internalCommitment?: Field);
6
+ empty(): Field;
6
7
  protected hash(elements: Field[]): Field;
7
8
  }
8
9
  //# sourceMappingURL=PrefixedProvableHashList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrefixedProvableHashList.d.ts","sourceRoot":"","sources":["../../src/utils/PrefixedProvableHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAY,MAAM,UAAU,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,qBAAa,wBAAwB,CAAC,KAAK,CAAE,SAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAG7B,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC,EACtC,MAAM,EAAE,MAAM,EACd,kBAAkB,GAAE,KAAgB;IAMtC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK;CAGzC"}
1
+ {"version":3,"file":"PrefixedProvableHashList.d.ts","sourceRoot":"","sources":["../../src/utils/PrefixedProvableHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAY,MAAM,MAAM,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,qBAAa,wBAAwB,CAAC,KAAK,CAAE,SAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAG7B,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,kBAAkB,GAAE,KAAgB;IAM/B,KAAK,IAAI,KAAK;IAIrB,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK;CAGzC"}
@@ -1,4 +1,4 @@
1
- import { Field, Poseidon } from "snarkyjs";
1
+ import { Field, Poseidon } from "o1js";
2
2
  import { ProvableHashList } from "./ProvableHashList.js";
3
3
  import { stringToField } from "./utils";
4
4
  export class PrefixedProvableHashList extends ProvableHashList {
@@ -6,7 +6,11 @@ export class PrefixedProvableHashList extends ProvableHashList {
6
6
  super(valueType, internalCommitment);
7
7
  this.prefix = stringToField(prefix);
8
8
  }
9
+ empty() {
10
+ return Field(0);
11
+ }
9
12
  hash(elements) {
10
13
  return Poseidon.hash([this.prefix, ...elements]);
11
14
  }
12
15
  }
16
+ //# sourceMappingURL=PrefixedProvableHashList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrefixedProvableHashList.js","sourceRoot":"","sources":["../../src/utils/PrefixedProvableHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAgB,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,OAAO,wBAAgC,SAAQ,gBAAuB;IAG1E,YACE,SAA8B,EAC9B,MAAc,EACd,qBAA4B,KAAK,CAAC,CAAC,CAAC;QAEpC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK;QACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAES,IAAI,CAAC,QAAiB;QAC9B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -1,12 +1,32 @@
1
- import { Field, FlexibleProvablePure, Bool } from "snarkyjs";
1
+ import { Field, Bool, ProvablePure, Unconstrained } from "o1js";
2
+ import { NonMethods } from "./utils";
3
+ export type ProvableHashListData<Value> = {
4
+ preimage: Field;
5
+ value: NonMethods<Value>;
6
+ };
7
+ export type VerifiedTransition<T> = {
8
+ from: T;
9
+ to: T;
10
+ };
2
11
  /**
3
12
  * Utilities for creating a hash list from a given value type.
4
13
  */
5
14
  export declare abstract class ProvableHashList<Value> {
6
- private readonly valueType;
15
+ protected readonly valueType: ProvablePure<Value>;
16
+ private unconstrainedList;
7
17
  commitment: Field;
8
- constructor(valueType: FlexibleProvablePure<Value>, commitment?: Field);
18
+ constructor(valueType: ProvablePure<Value>, commitment?: Field | undefined, unconstrainedList?: Unconstrained<ProvableHashListData<Value>[]>);
19
+ protected abstract empty(): Field;
9
20
  protected abstract hash(elements: Field[]): Field;
21
+ private pushUnconstrained;
22
+ /**
23
+ * Fast-forwards the state of the hashlist to a specified new tip.
24
+ * This assumes the transition (from -> to) to be already verified somewhere
25
+ * else that is outside this scope.
26
+ */
27
+ fastForward(transition: VerifiedTransition<Field>, message?: string): void;
28
+ fastForwardIf(transition: VerifiedTransition<Field>, condition: Bool, message?: string): void;
29
+ witnessTip(preimage: Field, value: Value): Bool;
10
30
  /**
11
31
  * Converts the provided value to Field[] and appends it to
12
32
  * the current hashlist.
@@ -19,9 +39,12 @@ export declare abstract class ProvableHashList<Value> {
19
39
  /**
20
40
  * @returns Traling hash of the current hashlist.
21
41
  */
22
- toField(): import("snarkyjs/dist/node/lib/field").Field;
42
+ toField(): import("o1js/dist/node/lib/provable/field").Field;
43
+ isEmpty(): Bool;
44
+ getUnconstrainedValues(): Unconstrained<ProvableHashListData<Value>[]>;
23
45
  }
24
46
  export declare class DefaultProvableHashList<Value> extends ProvableHashList<Value> {
25
47
  hash(elements: Field[]): Field;
48
+ empty(): Field;
26
49
  }
27
50
  //# sourceMappingURL=ProvableHashList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProvableHashList.d.ts","sourceRoot":"","sources":["../../src/utils/ProvableHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,oBAAoB,EAAE,IAAI,EAAY,MAAM,UAAU,CAAC;AAEjF;;GAEG;AACH,8BAAsB,gBAAgB,CAAC,KAAK;IAExC,OAAO,CAAC,QAAQ,CAAC,SAAS;IACnB,UAAU,EAAE,KAAK;gBADP,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAChD,UAAU,GAAE,KAAgB;IAGrC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK;IAEjD;;;;;;OAMG;IACI,IAAI,CAAC,KAAK,EAAE,KAAK;IAQjB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI;IAS3C;;OAEG;IACI,OAAO;CAGf;AAED,qBAAa,uBAAuB,CAAC,KAAK,CAAE,SAAQ,gBAAgB,CAAC,KAAK,CAAC;IAClE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK;CAGtC"}
1
+ {"version":3,"file":"ProvableHashList.d.ts","sourceRoot":"","sources":["../../src/utils/ProvableHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAEL,IAAI,EAEJ,YAAY,EACZ,aAAa,EACd,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,MAAM,oBAAoB,CAAC,KAAK,IAAI;IACxC,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAClC,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,CAAC,CAAC;CACP,CAAC;AAEF;;GAEG;AACH,8BAAsB,gBAAgB,CAAC,KAAK;IAIxC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC;IAEjD,OAAO,CAAC,iBAAiB;IALpB,UAAU,EAAE,KAAK,CAAC;gBAGJ,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,EACjD,UAAU,CAAC,EAAE,KAAK,GAAG,SAAS,EACtB,iBAAiB,GAAE,aAAa,CACtC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CACL;IAK5B,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK;IAEjC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK;IAEjD,OAAO,CAAC,iBAAiB;IAezB;;;;OAIG;IACI,WAAW,CAChB,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,EACrC,OAAO,GAAE,MAAwB;IAW5B,aAAa,CAClB,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,EACrC,SAAS,EAAE,IAAI,EACf,OAAO,GAAE,MAAwB;IAe5B,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAMtD;;;;;;OAMG;IACI,IAAI,CAAC,KAAK,EAAE,KAAK;IAWjB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI;IAY3C;;OAEG;IACI,OAAO;IAIP,OAAO,IAAI,IAAI;IAIf,sBAAsB,IAAI,aAAa,CAC5C,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAC9B;CAGF;AAED,qBAAa,uBAAuB,CAAC,KAAK,CAAE,SAAQ,gBAAgB,CAAC,KAAK,CAAC;IAClE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK;IAI9B,KAAK,IAAI,KAAK;CAGtB"}
@@ -1,11 +1,47 @@
1
- import { Field, Poseidon, Provable } from "snarkyjs";
1
+ import { Field, Poseidon, Provable, Unconstrained, } from "o1js";
2
2
  /**
3
3
  * Utilities for creating a hash list from a given value type.
4
4
  */
5
5
  export class ProvableHashList {
6
- constructor(valueType, commitment = Field(0)) {
6
+ constructor(valueType, commitment, unconstrainedList = Unconstrained.from([])) {
7
7
  this.valueType = valueType;
8
- this.commitment = commitment;
8
+ this.unconstrainedList = unconstrainedList;
9
+ this.commitment = commitment ?? this.empty();
10
+ }
11
+ pushUnconstrained(preimage, value, condition) {
12
+ this.unconstrainedList.updateAsProver((array) => {
13
+ if (condition !== undefined && !condition.toBoolean()) {
14
+ return array;
15
+ }
16
+ return [
17
+ ...array,
18
+ {
19
+ preimage: preimage.toConstant(),
20
+ value: Provable.toConstant(this.valueType, value),
21
+ },
22
+ ];
23
+ });
24
+ }
25
+ /**
26
+ * Fast-forwards the state of the hashlist to a specified new tip.
27
+ * This assumes the transition (from -> to) to be already verified somewhere
28
+ * else that is outside this scope.
29
+ */
30
+ fastForward(transition, message = "some hashlist") {
31
+ const { from, to } = transition;
32
+ from.assertEquals(this.commitment, `From-commitment for ${message} not matching`);
33
+ this.commitment = to;
34
+ }
35
+ fastForwardIf(transition, condition, message = "some hashlist") {
36
+ const { from, to } = transition;
37
+ // Equal to condition -> (from == this.commitment)
38
+ from
39
+ .mul(condition.toField())
40
+ .assertEquals(this.commitment.mul(condition.toField()), `From-commitment for ${message} not matching`);
41
+ this.commitment = Provable.if(condition, to, this.commitment);
42
+ }
43
+ witnessTip(preimage, value) {
44
+ return this.hash([preimage, ...this.valueType.toFields(value)]).equals(this.commitment);
9
45
  }
10
46
  /**
11
47
  * Converts the provided value to Field[] and appends it to
@@ -15,6 +51,7 @@ export class ProvableHashList {
15
51
  * @returns Current hash list.
16
52
  */
17
53
  push(value) {
54
+ this.pushUnconstrained(this.commitment, value);
18
55
  this.commitment = this.hash([
19
56
  this.commitment,
20
57
  ...this.valueType.toFields(value),
@@ -22,6 +59,7 @@ export class ProvableHashList {
22
59
  return this;
23
60
  }
24
61
  pushIf(value, condition) {
62
+ this.pushUnconstrained(this.commitment, value, condition);
25
63
  const newCommitment = this.hash([
26
64
  this.commitment,
27
65
  ...this.valueType.toFields(value),
@@ -35,9 +73,19 @@ export class ProvableHashList {
35
73
  toField() {
36
74
  return this.commitment;
37
75
  }
76
+ isEmpty() {
77
+ return this.commitment.equals(this.empty());
78
+ }
79
+ getUnconstrainedValues() {
80
+ return this.unconstrainedList;
81
+ }
38
82
  }
39
83
  export class DefaultProvableHashList extends ProvableHashList {
40
84
  hash(elements) {
41
85
  return Poseidon.hash(elements);
42
86
  }
87
+ empty() {
88
+ return Field(0);
89
+ }
43
90
  }
91
+ //# sourceMappingURL=ProvableHashList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableHashList.js","sourceRoot":"","sources":["../../src/utils/ProvableHashList.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Bool, Field, ProvablePure } from "o1js";
2
+ import { NonMethods } from "./utils";
3
+ export declare class ProvableReductionHashList<Value> {
4
+ protected readonly valueType: ProvablePure<Value>;
5
+ commitment: Field;
6
+ constructor(valueType: ProvablePure<Value>, commitment?: Field);
7
+ unconstrainedList: Value[];
8
+ private constrainedLastValue;
9
+ private preimage;
10
+ pushAndReduce(value: Value, reduce: (previous: Value) => [Value, Bool]): {
11
+ popLast: Bool;
12
+ value: Value;
13
+ };
14
+ pushIf(value: Value, condition: Bool): this;
15
+ hash(elements: Field[]): Field;
16
+ getUnconstrainedValues(): NonMethods<Value>[];
17
+ }
18
+ //# sourceMappingURL=ProvableReductionHashList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableReductionHashList.d.ts","sourceRoot":"","sources":["../../src/utils/ProvableReductionHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAsB,YAAY,EAAE,MAAM,MAAM,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,qBAAa,yBAAyB,CAAC,KAAK;IAExC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC;IAC1C,UAAU,EAAE,KAAK;gBADL,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,EAC1C,UAAU,GAAE,KAAgB;IAG9B,iBAAiB,EAAE,KAAK,EAAE,CAAM;IAEvC,OAAO,CAAC,oBAAoB,CAAgC;IAE5D,OAAO,CAAC,QAAQ,CAA0B;IAEnC,aAAa,CAClB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GACzC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE;IA4C3B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI;IAMpC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK;IAI9B,sBAAsB,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;CAGrD"}
@@ -0,0 +1,54 @@
1
+ import { Bool, Field, Poseidon, Provable } from "o1js";
2
+ export class ProvableReductionHashList {
3
+ constructor(valueType, commitment = Field(0)) {
4
+ this.valueType = valueType;
5
+ this.commitment = commitment;
6
+ this.unconstrainedList = [];
7
+ this.constrainedLastValue = undefined;
8
+ this.preimage = this.commitment;
9
+ }
10
+ pushAndReduce(value, reduce) {
11
+ let valueToPush = value;
12
+ let popLast = Bool(false);
13
+ // Theoretically, we can feed the preimage + last value as a witness
14
+ // for non-zero commitment starts (like used in the BlockProver), because
15
+ // currently it won't reduce across chunks. But this is okay for now I think
16
+ if (this.constrainedLastValue !== undefined) {
17
+ [valueToPush, popLast] = reduce(this.constrainedLastValue);
18
+ }
19
+ Provable.asProver(() => {
20
+ if (popLast.toBoolean()) {
21
+ this.unconstrainedList.pop();
22
+ }
23
+ const valueAsConstant = this.valueType.fromFields(this.valueType.toFields(valueToPush).map((field) => field.toConstant()));
24
+ this.unconstrainedList.push(valueAsConstant);
25
+ });
26
+ const currentCommitment = this.commitment;
27
+ const noPopCommitment = this.hash([
28
+ currentCommitment,
29
+ ...this.valueType.toFields(valueToPush),
30
+ ]);
31
+ const popCommitment = this.hash([
32
+ this.preimage,
33
+ ...this.valueType.toFields(valueToPush),
34
+ ]);
35
+ this.commitment = Provable.if(popLast, popCommitment, noPopCommitment);
36
+ this.constrainedLastValue = valueToPush;
37
+ this.preimage = Provable.if(popLast, this.preimage, currentCommitment);
38
+ return {
39
+ popLast,
40
+ value: valueToPush,
41
+ };
42
+ }
43
+ pushIf(value, condition) {
44
+ throw new Error("pushIf is not implemented for ReducedHashList");
45
+ return this;
46
+ }
47
+ hash(elements) {
48
+ return Poseidon.hash(elements);
49
+ }
50
+ getUnconstrainedValues() {
51
+ return this.unconstrainedList;
52
+ }
53
+ }
54
+ //# sourceMappingURL=ProvableReductionHashList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableReductionHashList.js","sourceRoot":"","sources":["../../src/utils/ProvableReductionHashList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAgB,MAAM,MAAM,CAAC;AAIrE,MAAM,OAAO,yBAAyB;IACpC,YACqB,SAA8B,EAC1C,aAAoB,KAAK,CAAC,CAAC,CAAC;QADhB,cAAS,GAAT,SAAS,CAAqB;QAC1C,eAAU,GAAV,UAAU,CAAkB;QAG9B,sBAAiB,GAAY,EAAE,CAAC;QAE/B,yBAAoB,GAAsB,SAAS,CAAC;QAEpD,aAAQ,GAAU,IAAI,CAAC,UAAU,CAAC;IANvC,CAAC;IAQG,aAAa,CAClB,KAAY,EACZ,MAA0C;QAE1C,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1B,oEAAoE;QACpE,yEAAyE;QACzE,4EAA4E;QAC5E,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;YAC3C,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SAC5D;QAED,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;YACrB,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE;gBACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;aAC9B;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CACxE,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC;YAChC,iBAAiB;YACjB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;SACxC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,QAAQ;YACb,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAEvE,OAAO;YACL,OAAO;YACP,KAAK,EAAE,WAAW;SACnB,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,KAAY,EAAE,SAAe;QACzC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAEjE,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,IAAI,CAAC,QAAiB;QAC3B,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAEM,sBAAsB;QAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import { ProvableStateTransition, StateTransition } from "../model/StateTransition";
2
+ import { ProvableReductionHashList } from "./ProvableReductionHashList";
3
+ export declare class StateTransitionReductionList extends ProvableReductionHashList<ProvableStateTransition> {
4
+ push(value: ProvableStateTransition): this;
5
+ pushWithMetadata(value: ProvableStateTransition): {
6
+ popLast: import("o1js/dist/node/lib/provable/bool").Bool;
7
+ value: ProvableStateTransition;
8
+ };
9
+ }
10
+ export declare function reduceStateTransitions(transitions: StateTransition<unknown>[]): StateTransition<unknown>[];
11
+ //# sourceMappingURL=StateTransitionReductionList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransitionReductionList.d.ts","sourceRoot":"","sources":["../../src/utils/StateTransitionReductionList.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,uBAAuB,EACvB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,qBAAa,4BAA6B,SAAQ,yBAAyB,CAAC,uBAAuB,CAAC;IAC3F,IAAI,CAAC,KAAK,EAAE,uBAAuB;IAMnC,gBAAgB,CAAC,KAAK,EAAE,uBAAuB;;;;CAyCvD;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GACtC,eAAe,CAAC,OAAO,CAAC,EAAE,CA0B5B"}
@@ -0,0 +1,61 @@
1
+ import { Provable } from "o1js";
2
+ import { ProvableOption } from "../model/Option";
3
+ import { ProvableStateTransition, StateTransition, } from "../model/StateTransition";
4
+ import { ProvableReductionHashList } from "./ProvableReductionHashList";
5
+ export class StateTransitionReductionList extends ProvableReductionHashList {
6
+ push(value) {
7
+ this.pushWithMetadata(value);
8
+ return this;
9
+ }
10
+ pushWithMetadata(value) {
11
+ return this.pushAndReduce(value, (previous) => {
12
+ const pathsMatch = previous.path.equals(value.path);
13
+ // Take the previous.from if the paths match, otherwise leave ST as is
14
+ const from = Provable.if(pathsMatch, ProvableOption, previous.from, value.from);
15
+ // In case we have a layout like
16
+ // { from: 5, to: 10 }, { from: 10, to: none }
17
+ // we just take the first and discard the second
18
+ const to = Provable.if(value.to.isSome.or(pathsMatch.not()), ProvableOption, value.to, previous.to);
19
+ const transition = new ProvableStateTransition({
20
+ path: value.path,
21
+ from: new ProvableOption(from),
22
+ to: new ProvableOption(to),
23
+ });
24
+ // Assert that connection is correct
25
+ previous.to.value
26
+ .equals(value.from.value)
27
+ .or(previous.to.isSome
28
+ .not()
29
+ .and(previous.from.value.equals(value.from.value)))
30
+ .or(pathsMatch.not())
31
+ .assertTrue();
32
+ return [transition, pathsMatch];
33
+ });
34
+ }
35
+ }
36
+ export function reduceStateTransitions(transitions) {
37
+ const reduced = [];
38
+ transitions.forEach((st) => {
39
+ if (reduced.length === 0) {
40
+ reduced.push(st);
41
+ return;
42
+ }
43
+ const last = reduced.at(-1);
44
+ if (last.path.equals(st.path).toBoolean()) {
45
+ if (st.toValue.isSome.toBoolean()) {
46
+ reduced.pop();
47
+ reduced.push(new StateTransition(st.path, last.fromValue, st.toValue));
48
+ }
49
+ else {
50
+ // Do nothing, because we discard that ST
51
+ // { from: 5, to: 10 }, { from: 10, to: none }
52
+ // cancel the 2nd
53
+ }
54
+ }
55
+ else {
56
+ reduced.push(st);
57
+ }
58
+ });
59
+ return reduced;
60
+ }
61
+ //# sourceMappingURL=StateTransitionReductionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransitionReductionList.js","sourceRoot":"","sources":["../../src/utils/StateTransitionReductionList.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,20 @@
1
- import { Field } from "snarkyjs";
1
+ import { Bool, Field } from "o1js";
2
2
  export type ReturnType<FunctionType extends Function> = FunctionType extends (...args: any[]) => infer Return ? Return : any;
3
- export type UnTypedClass = new (...args: any[]) => any;
4
- export type TypedClass<Class> = new (...args: any[]) => Class;
5
3
  export type Subclass<Class extends new (...args: any) => any> = (new (...args: any) => InstanceType<Class>) & {
6
4
  [Key in keyof Class]: Class[Key];
7
5
  } & {
8
6
  prototype: InstanceType<Class>;
9
7
  };
10
8
  export declare function notInCircuit(): MethodDecorator;
11
- export declare function stringToField(value: string): import("snarkyjs/dist/node/lib/field").Field;
9
+ export declare function stringToField(value: string): import("o1js/dist/node/lib/provable/field").Field;
12
10
  export declare function singleFieldToString(value: Field | bigint): string;
13
- export declare function noop(): void;
11
+ type NonMethodKeys<T> = {
12
+ [K in keyof T]: T[K] extends Function ? never : K;
13
+ }[keyof T];
14
+ export type NonMethods<T> = Pick<T, NonMethodKeys<T>>;
15
+ /**
16
+ * Asserts the equality of a and b, but only if doAssertion is true, otherwise it will assert 0 = 0
17
+ */
18
+ export declare function assertEqualsIf(a: Field, b: Field, doAssertion: Bool, msg: string): void;
19
+ export {};
14
20
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAsB,MAAM,UAAU,CAAC;AAGrD,MAAM,MAAM,UAAU,CAAC,YAAY,SAAS,QAAQ,IAAI,YAAY,SAAS,CAC3E,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,MAAM,MAAM,GACb,MAAM,GACN,GAAG,CAAC;AAER,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAEvD,MAAM,MAAM,UAAU,CAAC,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,CAAC;AAE9D,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,KAC/D,GAAG,IAAI,EAAE,GAAG,KACT,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG;KACzB,GAAG,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;CACjC,GAAG;IAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;CAAE,CAAC;AAEvC,wBAAgB,YAAY,IAAI,eAAe,CAoB9C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,gDAiC1C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,IAAI,IAAI,IAAI,CAAG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAsB,MAAM,MAAM,CAAC;AAGvD,MAAM,MAAM,UAAU,CAAC,YAAY,SAAS,QAAQ,IAAI,YAAY,SAAS,CAC3E,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,MAAM,MAAM,GACb,MAAM,GACN,GAAG,CAAC;AAER,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,KAC/D,GAAG,IAAI,EAAE,GAAG,KACT,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG;KACzB,GAAG,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;CACjC,GAAG;IAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;CAAE,CAAC;AAEvC,wBAAgB,YAAY,IAAI,eAAe,CAkB9C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,qDA+B1C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAMjE;AAED,KAAK,aAAa,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,KAAK,GAAG,CAAC;CAClD,CAAC,MAAM,CAAC,CAAC,CAAC;AACX,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,KAAK,EACR,CAAC,EAAE,KAAK,EACR,WAAW,EAAE,IAAI,EACjB,GAAG,EAAE,MAAM,QAGZ"}
@@ -1,6 +1,4 @@
1
- // eslint-disable-next-line max-len
2
- /* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/ban-types, @typescript-eslint/no-unsafe-return,@typescript-eslint/no-empty-function */
3
- import { Field, Poseidon, Provable } from "snarkyjs";
1
+ import { Field, Poseidon, Provable } from "o1js";
4
2
  import floor from "lodash/floor";
5
3
  export function notInCircuit() {
6
4
  return function ReplacedFunction(target, propertyKey, descriptor) {
@@ -10,15 +8,13 @@ export function notInCircuit() {
10
8
  if (Provable.inCheckedComputation() || Provable.inProver()) {
11
9
  throw new Error(`Method ${propertyKey.toString()} is supposed to be only called outside of the circuit`);
12
10
  }
13
- // eslint-disable-next-line max-len
14
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
15
11
  return childFunction.apply(this, args);
16
12
  };
17
13
  return descriptor;
18
14
  };
19
15
  }
20
16
  export function stringToField(value) {
21
- const fieldSize = Field.sizeInBytes() - 1;
17
+ const fieldSize = Field.sizeInBytes - 1;
22
18
  // Encode string as byte[]
23
19
  const encoder = new TextEncoder();
24
20
  const stringBytes = Array.from(encoder.encode(value));
@@ -32,20 +28,24 @@ export function stringToField(value) {
32
28
  const arrayIndex = floor(index / fieldSize);
33
29
  a[arrayIndex].push(b);
34
30
  return a;
35
- },
36
- // eslint-disable-next-line array-func/from-map
37
- Array.from({ length: floor(data.length / fieldSize) }).map(() => []));
31
+ }, Array.from({ length: floor(data.length / fieldSize) }).map(() => []));
38
32
  const fields = chunks.map((x) =>
39
33
  // We have to add a zero at the highest byte here, because a Field is
40
34
  // a bit smaller than 2^256
41
- // console.log(x.concat([0]).length);
42
35
  Field.fromBytes(x.concat([0])));
43
36
  return Poseidon.hash(fields);
44
37
  }
45
38
  export function singleFieldToString(value) {
39
+ let fieldValue = value;
46
40
  if (typeof value === "bigint") {
47
- value = Field(value);
41
+ fieldValue = Field(value);
48
42
  }
49
- return value.toString();
43
+ return fieldValue.toString();
50
44
  }
51
- export function noop() { }
45
+ /**
46
+ * Asserts the equality of a and b, but only if doAssertion is true, otherwise it will assert 0 = 0
47
+ */
48
+ export function assertEqualsIf(a, b, doAssertion, msg) {
49
+ a.mul(doAssertion.toField()).assertEquals(b.mul(doAssertion.toField()), msg);
50
+ }
51
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,KAAK,MAAM,cAAc,CAAC;AAcjC,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,gBAAgB,CAC9B,MAAW,EACX,WAA4B,EAC5B,UAA8B;QAE9B,mEAAmE;QACnE,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;QACvC,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK,CAAY,GAAG,IAAW;YACzD,IAAI,QAAQ,CAAC,oBAAoB,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC1D,MAAM,IAAI,KAAK,CACb,UAAU,WAAW,CAAC,QAAQ,EAAE,uDAAuD,CACxF,CAAC;aACH;YACD,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;IAExC,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtD,wEAAwE;IACxE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAS;QACjC,MAAM,EAAE,SAAS,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;KACrD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACX,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IAEnD,0CAA0C;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC,EAED,KAAK,CAAC,IAAI,CAAW,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAClE,GAAG,EAAE,CAAC,EAAE,CACT,CACF,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;IAC9B,qEAAqE;IACrE,2BAA2B;IAC3B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/B,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAqB;IACvD,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;KAC3B;IACD,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAOD;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,CAAQ,EACR,CAAQ,EACR,WAAiB,EACjB,GAAW;IAEX,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/E,CAAC"}
package/jest.config.cjs CHANGED
@@ -1 +1,12 @@
1
- module.exports = require("../../jest.config.cjs");
1
+ // @ts-ignore
2
+ const config = require("../../jest.config.cjs");
3
+
4
+ module.exports = {
5
+ ...config,
6
+ collectCoverageFrom: [
7
+ "packages/protocol/src/**",
8
+ "!**/node_modules/**",
9
+ "!**/dist/**",
10
+ ],
11
+ coverageDirectory: "coverage/protocol",
12
+ };
package/package.json CHANGED
@@ -3,32 +3,34 @@
3
3
  "license": "MIT",
4
4
  "private": false,
5
5
  "type": "module",
6
- "version": "0.1.1-develop.190+f5a17c3",
6
+ "version": "0.1.1-develop.2024+5a945075",
7
7
  "scripts": {
8
8
  "build": "tsc -p tsconfig.json",
9
9
  "dev": "tsc -p tsconfig.json --watch",
10
10
  "lint": "eslint ./src ./test",
11
- "test:file": "node --experimental-vm-modules --experimental-wasm-modules --experimental-wasm-threads ../../node_modules/jest/bin/jest.js",
12
- "test": "npm run test:file -- ./src/** ./test/**",
13
- "test:watch": "npm run test:file -- ./src/** ./test/** --watch"
11
+ "test:file": "node --experimental-vm-modules --experimental-wasm-modules ../../node_modules/jest/bin/jest.js",
12
+ "test": "npm run test:file -- ./test/**",
13
+ "test:watch": "npm run test:file -- ./test/** --watch"
14
14
  },
15
15
  "main": "dist/index.js",
16
16
  "publishConfig": {
17
17
  "access": "public"
18
18
  },
19
19
  "dependencies": {
20
- "@proto-kit/common": "*",
21
20
  "lodash": "^4.17.21",
22
21
  "loglevel": "^1.8.1",
23
- "reflect-metadata": "^0.1.13"
22
+ "reflect-metadata": "^0.1.13",
23
+ "ts-mixer": "^6.0.3"
24
24
  },
25
25
  "peerDependencies": {
26
- "snarkyjs": "0.12.0",
27
- "tsyringe": "^4.7.0"
26
+ "@proto-kit/common": "*",
27
+ "o1js": "^2.10.0",
28
+ "ts-pattern": "^4.3.0",
29
+ "tsyringe": "^4.10.0"
28
30
  },
29
31
  "devDependencies": {
30
32
  "@jest/globals": "^29.5.0",
31
33
  "@types/lodash": "^4.14.194"
32
34
  },
33
- "gitHead": "f5a17c3c4cb13e568fa9802c9d15c27089cccf0d"
35
+ "gitHead": "fb121dd0802012f70abff6afe48e82a67c13318d"
34
36
  }
@@ -0,0 +1,10 @@
1
+ export const MINA_PREFIXES = {
2
+ event: "MinaZkappEvent******",
3
+ events: "MinaZkappEvents*****",
4
+ sequenceEvents: "MinaZkappSeqEvents**",
5
+ } as const;
6
+
7
+ export const MINA_SALTS = {
8
+ empty_actions: "MinaZkappActionsEmpty",
9
+ empty_events: "MinaZkappEventsEmpty",
10
+ };
@@ -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
+ };