@proto-kit/protocol 0.1.1-develop.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +45 -0
  3. package/dist/Constants.d.ts +4 -0
  4. package/dist/Constants.d.ts.map +1 -0
  5. package/dist/Constants.js +4 -0
  6. package/dist/Constants.js.map +1 -0
  7. package/dist/hooks/AccountStateHook.d.ts +52 -0
  8. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  9. package/dist/hooks/AccountStateHook.js +48 -0
  10. package/dist/hooks/AccountStateHook.js.map +1 -0
  11. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  12. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  13. package/dist/hooks/BlockHeightHook.js +16 -0
  14. package/dist/hooks/BlockHeightHook.js.map +1 -0
  15. package/dist/hooks/LastStateRootBlockHook.d.ts +8 -0
  16. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  17. package/dist/hooks/LastStateRootBlockHook.js +16 -0
  18. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  19. package/dist/hooks/NoopBlockHook.d.ts +9 -0
  20. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  21. package/dist/hooks/NoopBlockHook.js +10 -0
  22. package/dist/hooks/NoopBlockHook.js.map +1 -0
  23. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  24. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  25. package/dist/hooks/NoopSettlementHook.js +18 -0
  26. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  27. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  28. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  29. package/dist/hooks/NoopTransactionHook.js +8 -0
  30. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  31. package/dist/index.d.ts +58 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +58 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/model/MethodPublicOutput.d.ts +113 -0
  36. package/dist/model/MethodPublicOutput.d.ts.map +1 -0
  37. package/dist/model/MethodPublicOutput.js +15 -0
  38. package/dist/model/MethodPublicOutput.js.map +1 -0
  39. package/dist/model/Option.d.ts +122 -0
  40. package/dist/model/Option.d.ts.map +1 -0
  41. package/dist/model/Option.js +111 -0
  42. package/dist/model/Option.js.map +1 -0
  43. package/dist/model/Path.d.ts +31 -0
  44. package/dist/model/Path.d.ts.map +1 -0
  45. package/dist/model/Path.js +43 -0
  46. package/dist/model/Path.js.map +1 -0
  47. package/dist/model/RuntimeLike.d.ts +11 -0
  48. package/dist/model/RuntimeLike.d.ts.map +1 -0
  49. package/dist/model/RuntimeLike.js +2 -0
  50. package/dist/model/RuntimeLike.js.map +1 -0
  51. package/dist/model/StateTransition.d.ts +135 -0
  52. package/dist/model/StateTransition.d.ts.map +1 -0
  53. package/dist/model/StateTransition.js +69 -0
  54. package/dist/model/StateTransition.js.map +1 -0
  55. package/dist/model/StateTransitionProvableBatch.d.ts +198 -0
  56. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -0
  57. package/dist/model/StateTransitionProvableBatch.js +91 -0
  58. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  59. package/dist/model/network/NetworkState.d.ts +160 -0
  60. package/dist/model/network/NetworkState.d.ts.map +1 -0
  61. package/dist/model/network/NetworkState.js +32 -0
  62. package/dist/model/network/NetworkState.js.map +1 -0
  63. package/dist/model/transaction/RuntimeTransaction.d.ts +122 -0
  64. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -0
  65. package/dist/model/transaction/RuntimeTransaction.js +87 -0
  66. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  67. package/dist/model/transaction/SignedTransaction.d.ts +107 -0
  68. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  69. package/dist/model/transaction/SignedTransaction.js +34 -0
  70. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  71. package/dist/model/transaction/ValueOption.d.ts +173 -0
  72. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  73. package/dist/model/transaction/ValueOption.js +25 -0
  74. package/dist/model/transaction/ValueOption.js.map +1 -0
  75. package/dist/protocol/Protocol.d.ts +43 -0
  76. package/dist/protocol/Protocol.d.ts.map +1 -0
  77. package/dist/protocol/Protocol.js +120 -0
  78. package/dist/protocol/Protocol.js.map +1 -0
  79. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  80. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  81. package/dist/protocol/ProtocolEnvironment.js +2 -0
  82. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  83. package/dist/protocol/ProtocolModule.d.ts +9 -0
  84. package/dist/protocol/ProtocolModule.d.ts.map +1 -0
  85. package/dist/protocol/ProtocolModule.js +13 -0
  86. package/dist/protocol/ProtocolModule.js.map +1 -0
  87. package/dist/protocol/ProvableBlockHook.d.ts +8 -0
  88. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  89. package/dist/protocol/ProvableBlockHook.js +5 -0
  90. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  91. package/dist/protocol/ProvableTransactionHook.d.ts +7 -0
  92. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
  93. package/dist/protocol/ProvableTransactionHook.js +4 -0
  94. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  95. package/dist/protocol/TransitioningProtocolModule.d.ts +10 -0
  96. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -0
  97. package/dist/protocol/TransitioningProtocolModule.js +9 -0
  98. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  99. package/dist/prover/block/BlockProvable.d.ts +409 -0
  100. package/dist/prover/block/BlockProvable.d.ts.map +1 -0
  101. package/dist/prover/block/BlockProvable.js +48 -0
  102. package/dist/prover/block/BlockProvable.js.map +1 -0
  103. package/dist/prover/block/BlockProver.d.ts +94 -0
  104. package/dist/prover/block/BlockProver.d.ts.map +1 -0
  105. package/dist/prover/block/BlockProver.js +510 -0
  106. package/dist/prover/block/BlockProver.js.map +1 -0
  107. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +64 -0
  108. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  109. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +17 -0
  110. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  111. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  112. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  113. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
  114. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  115. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  116. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  117. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js +23 -0
  118. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  119. package/dist/prover/statetransition/StateTransitionProvable.d.ts +172 -0
  120. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -0
  121. package/dist/prover/statetransition/StateTransitionProvable.js +16 -0
  122. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  123. package/dist/prover/statetransition/StateTransitionProver.d.ts +48 -0
  124. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -0
  125. package/dist/prover/statetransition/StateTransitionProver.js +187 -0
  126. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  127. package/dist/settlement/ContractModule.d.ts +16 -0
  128. package/dist/settlement/ContractModule.d.ts.map +1 -0
  129. package/dist/settlement/ContractModule.js +12 -0
  130. package/dist/settlement/ContractModule.js.map +1 -0
  131. package/dist/settlement/SettlementContractModule.d.ts +53 -0
  132. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  133. package/dist/settlement/SettlementContractModule.js +80 -0
  134. package/dist/settlement/SettlementContractModule.js.map +1 -0
  135. package/dist/settlement/contracts/BridgeContract.d.ts +97 -0
  136. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  137. package/dist/settlement/contracts/BridgeContract.js +164 -0
  138. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  139. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +14 -0
  140. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  141. package/dist/settlement/contracts/BridgeContractProtocolModule.js +30 -0
  142. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  143. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +21 -0
  144. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  145. package/dist/settlement/contracts/DispatchContractProtocolModule.js +57 -0
  146. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  147. package/dist/settlement/contracts/DispatchSmartContract.d.ts +44 -0
  148. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  149. package/dist/settlement/contracts/DispatchSmartContract.js +230 -0
  150. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  151. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
  152. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  153. package/dist/settlement/contracts/SettlementContractProtocolModule.js +82 -0
  154. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  155. package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
  156. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  157. package/dist/settlement/contracts/SettlementSmartContract.js +309 -0
  158. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  159. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  160. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  161. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  162. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  163. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  164. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  165. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  166. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  167. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  168. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  169. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  170. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  171. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  172. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  173. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  174. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  175. package/dist/settlement/messages/Deposit.d.ts +77 -0
  176. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  177. package/dist/settlement/messages/Deposit.js +8 -0
  178. package/dist/settlement/messages/Deposit.js.map +1 -0
  179. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +197 -0
  180. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  181. package/dist/settlement/messages/OutgoingMessageArgument.js +33 -0
  182. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  183. package/dist/settlement/messages/Withdrawal.d.ts +78 -0
  184. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  185. package/dist/settlement/messages/Withdrawal.js +16 -0
  186. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  187. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
  188. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  189. package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
  190. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  191. package/dist/settlement/modularity/types.d.ts +8 -0
  192. package/dist/settlement/modularity/types.d.ts.map +1 -0
  193. package/dist/settlement/modularity/types.js +2 -0
  194. package/dist/settlement/modularity/types.js.map +1 -0
  195. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  196. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  197. package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
  198. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  199. package/dist/state/State.d.ts +68 -0
  200. package/dist/state/State.d.ts.map +1 -0
  201. package/dist/state/State.js +130 -0
  202. package/dist/state/State.js.map +1 -0
  203. package/dist/state/StateMap.d.ts +37 -0
  204. package/dist/state/StateMap.d.ts.map +1 -0
  205. package/dist/state/StateMap.js +56 -0
  206. package/dist/state/StateMap.js.map +1 -0
  207. package/dist/state/StateService.d.ts +6 -0
  208. package/dist/state/StateService.d.ts.map +1 -0
  209. package/dist/state/StateService.js +2 -0
  210. package/dist/state/StateService.js.map +1 -0
  211. package/dist/state/StateServiceProvider.d.ts +8 -0
  212. package/dist/state/StateServiceProvider.d.ts.map +1 -0
  213. package/dist/state/StateServiceProvider.js +37 -0
  214. package/dist/state/StateServiceProvider.js.map +1 -0
  215. package/dist/state/assert/assert.d.ts +12 -0
  216. package/dist/state/assert/assert.d.ts.map +1 -0
  217. package/dist/state/assert/assert.js +31 -0
  218. package/dist/state/assert/assert.js.map +1 -0
  219. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +193 -0
  220. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -0
  221. package/dist/state/context/RuntimeMethodExecutionContext.js +136 -0
  222. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  223. package/dist/state/context/TransitionMethodExecutionContext.d.ts +23 -0
  224. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -0
  225. package/dist/state/context/TransitionMethodExecutionContext.js +6 -0
  226. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  227. package/dist/state/protocol/ProtocolState.d.ts +7 -0
  228. package/dist/state/protocol/ProtocolState.d.ts.map +1 -0
  229. package/dist/state/protocol/ProtocolState.js +40 -0
  230. package/dist/state/protocol/ProtocolState.js.map +1 -0
  231. package/dist/utils/MinaPrefixedProvableHashList.d.ts +24 -0
  232. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  233. package/dist/utils/MinaPrefixedProvableHashList.js +53 -0
  234. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  235. package/dist/utils/PrefixedProvableHashList.d.ts +8 -0
  236. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -0
  237. package/dist/utils/PrefixedProvableHashList.js +13 -0
  238. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  239. package/dist/utils/ProvableHashList.d.ts +27 -0
  240. package/dist/utils/ProvableHashList.d.ts.map +1 -0
  241. package/dist/utils/ProvableHashList.js +44 -0
  242. package/dist/utils/ProvableHashList.js.map +1 -0
  243. package/dist/utils/ProvableReductionHashList.d.ts +14 -0
  244. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  245. package/dist/utils/ProvableReductionHashList.js +51 -0
  246. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  247. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  248. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  249. package/dist/utils/StateTransitionReductionList.js +61 -0
  250. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  251. package/dist/utils/utils.d.ts +11 -0
  252. package/dist/utils/utils.d.ts.map +1 -0
  253. package/dist/utils/utils.js +45 -0
  254. package/dist/utils/utils.js.map +1 -0
  255. package/jest.config.cjs +12 -0
  256. package/package.json +36 -0
  257. package/src/Constants.ts +3 -0
  258. package/src/hooks/AccountStateHook.ts +48 -0
  259. package/src/hooks/BlockHeightHook.ts +17 -0
  260. package/src/hooks/LastStateRootBlockHook.ts +26 -0
  261. package/src/hooks/NoopBlockHook.ts +21 -0
  262. package/src/hooks/NoopSettlementHook.ts +20 -0
  263. package/src/hooks/NoopTransactionHook.ts +10 -0
  264. package/src/index.ts +57 -0
  265. package/src/model/MethodPublicOutput.ts +14 -0
  266. package/src/model/Option.ts +172 -0
  267. package/src/model/Path.ts +50 -0
  268. package/src/model/RuntimeLike.ts +12 -0
  269. package/src/model/StateTransition.ts +88 -0
  270. package/src/model/StateTransitionProvableBatch.ts +145 -0
  271. package/src/model/Transaction.ts +31 -0
  272. package/src/model/network/NetworkState.ts +33 -0
  273. package/src/model/transaction/RuntimeTransaction.ts +105 -0
  274. package/src/model/transaction/SignedTransaction.ts +47 -0
  275. package/src/model/transaction/ValueOption.ts +28 -0
  276. package/src/protocol/Protocol.ts +226 -0
  277. package/src/protocol/ProtocolEnvironment.ts +10 -0
  278. package/src/protocol/ProtocolModule.ts +27 -0
  279. package/src/protocol/ProvableBlockHook.ts +19 -0
  280. package/src/protocol/ProvableTransactionHook.ts +13 -0
  281. package/src/protocol/TransitioningProtocolModule.ts +12 -0
  282. package/src/prover/block/BlockProvable.ts +99 -0
  283. package/src/prover/block/BlockProver.ts +990 -0
  284. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +16 -0
  285. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  286. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  287. package/src/prover/statetransition/StateTransitionProvable.ts +41 -0
  288. package/src/prover/statetransition/StateTransitionProver.ts +377 -0
  289. package/src/settlement/ContractModule.ts +31 -0
  290. package/src/settlement/SettlementContractModule.ts +145 -0
  291. package/src/settlement/contracts/BridgeContract.ts +237 -0
  292. package/src/settlement/contracts/BridgeContractProtocolModule.ts +43 -0
  293. package/src/settlement/contracts/DispatchContractProtocolModule.ts +73 -0
  294. package/src/settlement/contracts/DispatchSmartContract.ts +326 -0
  295. package/src/settlement/contracts/SettlementContractProtocolModule.ts +108 -0
  296. package/src/settlement/contracts/SettlementSmartContract.ts +498 -0
  297. package/src/settlement/contracts/TokenBridgeTree.ts +73 -0
  298. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  299. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  300. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  301. package/src/settlement/messages/Deposit.ts +7 -0
  302. package/src/settlement/messages/OutgoingMessageArgument.ts +42 -0
  303. package/src/settlement/messages/Withdrawal.ts +16 -0
  304. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  305. package/src/settlement/modularity/types.ts +22 -0
  306. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  307. package/src/state/State.ts +175 -0
  308. package/src/state/StateMap.ts +73 -0
  309. package/src/state/StateService.ts +6 -0
  310. package/src/state/StateServiceProvider.ts +37 -0
  311. package/src/state/assert/assert.ts +35 -0
  312. package/src/state/context/RuntimeMethodExecutionContext.ts +174 -0
  313. package/src/state/context/TransitionMethodExecutionContext.ts +26 -0
  314. package/src/state/protocol/ProtocolState.ts +61 -0
  315. package/src/utils/MinaPrefixedProvableHashList.ts +73 -0
  316. package/src/utils/PrefixedProvableHashList.ts +21 -0
  317. package/src/utils/ProvableHashList.ts +50 -0
  318. package/src/utils/ProvableReductionHashList.ts +68 -0
  319. package/src/utils/StateTransitionReductionList.ts +89 -0
  320. package/src/utils/utils.ts +75 -0
  321. package/test/BlockProver.test.ts +212 -0
  322. package/test/Protocol.test.ts +37 -0
  323. package/test/State.test.ts +45 -0
  324. package/test/StateTransition.test.ts +174 -0
  325. package/test/TestingProtocol.ts +52 -0
  326. package/test/compiling/types.ts +28 -0
  327. package/test/model/Option.test.ts +72 -0
  328. package/test/modularity/types.ts +35 -0
  329. package/test/state/assert/assert.test.ts +56 -0
  330. package/test/tsconfig.json +7 -0
  331. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  332. package/test/utils.test.ts +27 -0
  333. package/tsconfig.json +8 -0
@@ -0,0 +1,135 @@
1
+ import { Field } from "o1js";
2
+ import { Option, ProvableOption } from "./Option";
3
+ declare const ProvableStateTransition_base: (new (value: {
4
+ path: import("o1js/dist/node/lib/provable/field").Field;
5
+ from: ProvableOption;
6
+ to: ProvableOption;
7
+ }) => {
8
+ path: import("o1js/dist/node/lib/provable/field").Field;
9
+ from: ProvableOption;
10
+ to: ProvableOption;
11
+ }) & {
12
+ _isStruct: true;
13
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
14
+ path: import("o1js/dist/node/lib/provable/field").Field;
15
+ from: ProvableOption;
16
+ to: ProvableOption;
17
+ }, {
18
+ path: bigint;
19
+ from: {
20
+ isSome: boolean;
21
+ value: bigint;
22
+ };
23
+ to: {
24
+ isSome: boolean;
25
+ value: bigint;
26
+ };
27
+ }>, "fromFields"> & {
28
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
29
+ path: import("o1js/dist/node/lib/provable/field").Field;
30
+ from: ProvableOption;
31
+ to: ProvableOption;
32
+ };
33
+ } & {
34
+ fromValue: (value: {
35
+ path: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
36
+ from: ProvableOption | {
37
+ isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
38
+ value: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
39
+ };
40
+ to: ProvableOption | {
41
+ isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
42
+ value: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
43
+ };
44
+ }) => {
45
+ path: import("o1js/dist/node/lib/provable/field").Field;
46
+ from: ProvableOption;
47
+ to: ProvableOption;
48
+ };
49
+ toInput: (x: {
50
+ path: import("o1js/dist/node/lib/provable/field").Field;
51
+ from: ProvableOption;
52
+ to: ProvableOption;
53
+ }) => {
54
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
55
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
56
+ };
57
+ toJSON: (x: {
58
+ path: import("o1js/dist/node/lib/provable/field").Field;
59
+ from: ProvableOption;
60
+ to: ProvableOption;
61
+ }) => {
62
+ path: string;
63
+ from: {
64
+ isSome: boolean;
65
+ value: string;
66
+ };
67
+ to: {
68
+ isSome: boolean;
69
+ value: string;
70
+ };
71
+ };
72
+ fromJSON: (x: {
73
+ path: string;
74
+ from: {
75
+ isSome: boolean;
76
+ value: string;
77
+ };
78
+ to: {
79
+ isSome: boolean;
80
+ value: string;
81
+ };
82
+ }) => {
83
+ path: import("o1js/dist/node/lib/provable/field").Field;
84
+ from: ProvableOption;
85
+ to: ProvableOption;
86
+ };
87
+ empty: () => {
88
+ path: import("o1js/dist/node/lib/provable/field").Field;
89
+ from: ProvableOption;
90
+ to: ProvableOption;
91
+ };
92
+ };
93
+ /**
94
+ * Provable representation of a State Transition, used to
95
+ * normalize state transitions of various value types for
96
+ * the state transition circuit.
97
+ */
98
+ export declare class ProvableStateTransition extends ProvableStateTransition_base {
99
+ static dummy(): ProvableStateTransition;
100
+ }
101
+ /**
102
+ * Generic state transition that constraints the current method circuit
103
+ * to external state, by providing a state anchor.
104
+ */
105
+ export declare class StateTransition<Value> {
106
+ path: Field;
107
+ fromValue: Option<Value>;
108
+ toValue: Option<Field> | Option<Value>;
109
+ static from<Value>(path: Field, fromValue: Option<Value>): StateTransition<Value>;
110
+ static fromTo<Value>(path: Field, fromValue: Option<Value>, toValue: Option<Value>): StateTransition<Value>;
111
+ constructor(path: Field, fromValue: Option<Value>, toValue: Option<Field> | Option<Value>);
112
+ get from(): Option<Value>;
113
+ get to(): Option<import("o1js/dist/node/lib/provable/field").Field> | Option<Value>;
114
+ /**
115
+ * Converts a StateTransition to a ProvableStateTransition,
116
+ * while enforcing the 'from' property to be 'Some' in all cases.
117
+ */
118
+ toProvable(): ProvableStateTransition;
119
+ toJSON(): {
120
+ path: string;
121
+ from: {
122
+ isSome: boolean;
123
+ isForcedSome: boolean;
124
+ value: string[];
125
+ };
126
+ to: {
127
+ isSome: boolean;
128
+ isForcedSome: boolean;
129
+ value: string[];
130
+ };
131
+ };
132
+ toConstant(): StateTransition<Value>;
133
+ }
134
+ export {};
135
+ //# sourceMappingURL=StateTransition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransition.d.ts","sourceRoot":"","sources":["../../src/model/StateTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAU,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElD;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,4BAQ3C;WACc,KAAK,IAAI,uBAAuB;CAO/C;AAED;;;GAGG;AACH,qBAAa,eAAe,CAAC,KAAK;IAcvB,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;WAfjC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;WAIjD,MAAM,CAAC,KAAK,EACxB,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EACxB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;gBAMf,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EACxB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IAG/C,IAAW,IAAI,kBAId;IAED,IAAW,EAAE,8EAEZ;IAED;;;OAGG;IACI,UAAU,IAAI,uBAAuB;IAQrC,MAAM;;;;;;;;;;;;;IAQN,UAAU,IAAI,eAAe,CAAC,KAAK,CAAC;CAO5C"}
@@ -0,0 +1,69 @@
1
+ import { Field, Struct } from "o1js";
2
+ import { Option, ProvableOption } from "./Option";
3
+ /**
4
+ * Provable representation of a State Transition, used to
5
+ * normalize state transitions of various value types for
6
+ * the state transition circuit.
7
+ */
8
+ export class ProvableStateTransition extends Struct({
9
+ path: Field,
10
+ // must be applied even if `None`
11
+ from: ProvableOption,
12
+ // must be ignored if `None`
13
+ to: ProvableOption,
14
+ }) {
15
+ static dummy() {
16
+ return new ProvableStateTransition({
17
+ path: Field(0),
18
+ from: Option.none().toProvable(),
19
+ to: Option.none().toProvable(),
20
+ });
21
+ }
22
+ }
23
+ /**
24
+ * Generic state transition that constraints the current method circuit
25
+ * to external state, by providing a state anchor.
26
+ */
27
+ export class StateTransition {
28
+ static from(path, fromValue) {
29
+ return new StateTransition(path, fromValue, Option.none());
30
+ }
31
+ static fromTo(path, fromValue, toValue) {
32
+ return new StateTransition(path, fromValue, toValue);
33
+ }
34
+ constructor(path, fromValue, toValue) {
35
+ this.path = path;
36
+ this.fromValue = fromValue;
37
+ this.toValue = toValue;
38
+ }
39
+ get from() {
40
+ const from = this.fromValue.clone();
41
+ from.forceSome();
42
+ return from;
43
+ }
44
+ get to() {
45
+ return this.toValue.clone();
46
+ }
47
+ /**
48
+ * Converts a StateTransition to a ProvableStateTransition,
49
+ * while enforcing the 'from' property to be 'Some' in all cases.
50
+ */
51
+ toProvable() {
52
+ return new ProvableStateTransition({
53
+ path: this.path,
54
+ from: this.from.toProvable(),
55
+ to: this.to.toProvable(),
56
+ });
57
+ }
58
+ toJSON() {
59
+ return {
60
+ path: this.path.toString(),
61
+ from: this.fromValue.toJSON(),
62
+ to: this.toValue.toJSON(),
63
+ };
64
+ }
65
+ toConstant() {
66
+ return new StateTransition(this.path.toConstant(), this.fromValue.toConstant(), this.toValue.toConstant());
67
+ }
68
+ }
69
+ //# sourceMappingURL=StateTransition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransition.js","sourceRoot":"","sources":["../../src/model/StateTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAElD;;;;GAIG;AACH,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC;IAClD,IAAI,EAAE,KAAK;IAEX,iCAAiC;IACjC,IAAI,EAAE,cAAc;IAEpB,4BAA4B;IAC5B,EAAE,EAAE,cAAc;CACnB,CAAC;IACO,MAAM,CAAC,KAAK;QACjB,OAAO,IAAI,uBAAuB,CAAC;YACjC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;YAChC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IACnB,MAAM,CAAC,IAAI,CAAQ,IAAW,EAAE,SAAwB;QAC7D,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEM,MAAM,CAAC,MAAM,CAClB,IAAW,EACX,SAAwB,EACxB,OAAsB;QAEtB,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,YACS,IAAW,EACX,SAAwB,EACxB,OAAsC;QAFtC,SAAI,GAAJ,IAAI,CAAO;QACX,cAAS,GAAT,SAAS,CAAe;QACxB,YAAO,GAAP,OAAO,CAA+B;IAC5C,CAAC;IAEJ,IAAW,IAAI;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,UAAU;QACf,OAAO,IAAI,uBAAuB,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC5B,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;IAEM,MAAM;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAC7B,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;SAC1B,CAAC;IACJ,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,eAAe,CACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EACtB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAC1B,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,198 @@
1
+ import { Bool } from "o1js";
2
+ import { RollupMerkleTreeWitness } from "@proto-kit/common";
3
+ import { ProvableStateTransition } from "./StateTransition.js";
4
+ export declare class StateTransitionType {
5
+ static readonly normal = true;
6
+ static readonly protocol = false;
7
+ static isNormal(type: boolean): boolean;
8
+ static isProtocol(type: boolean): boolean;
9
+ }
10
+ declare const ProvableStateTransitionType_base: (new (value: {
11
+ type: import("o1js/dist/node/lib/provable/bool").Bool;
12
+ }) => {
13
+ type: import("o1js/dist/node/lib/provable/bool").Bool;
14
+ }) & {
15
+ _isStruct: true;
16
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
17
+ type: import("o1js/dist/node/lib/provable/bool").Bool;
18
+ }, {
19
+ type: boolean;
20
+ }>, "fromFields"> & {
21
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
22
+ type: import("o1js/dist/node/lib/provable/bool").Bool;
23
+ };
24
+ } & {
25
+ fromValue: (value: {
26
+ type: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
27
+ }) => {
28
+ type: import("o1js/dist/node/lib/provable/bool").Bool;
29
+ };
30
+ toInput: (x: {
31
+ type: import("o1js/dist/node/lib/provable/bool").Bool;
32
+ }) => {
33
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
34
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
35
+ };
36
+ toJSON: (x: {
37
+ type: import("o1js/dist/node/lib/provable/bool").Bool;
38
+ }) => {
39
+ type: boolean;
40
+ };
41
+ fromJSON: (x: {
42
+ type: boolean;
43
+ }) => {
44
+ type: import("o1js/dist/node/lib/provable/bool").Bool;
45
+ };
46
+ empty: () => {
47
+ type: import("o1js/dist/node/lib/provable/bool").Bool;
48
+ };
49
+ };
50
+ export declare class ProvableStateTransitionType extends ProvableStateTransitionType_base {
51
+ static get normal(): ProvableStateTransitionType;
52
+ static get protocol(): ProvableStateTransitionType;
53
+ isNormal(): Bool;
54
+ isProtocol(): Bool;
55
+ }
56
+ declare const StateTransitionProvableBatch_base: (new (value: {
57
+ batch: ProvableStateTransition[];
58
+ transitionTypes: ProvableStateTransitionType[];
59
+ merkleWitnesses: RollupMerkleTreeWitness[];
60
+ }) => {
61
+ batch: ProvableStateTransition[];
62
+ transitionTypes: ProvableStateTransitionType[];
63
+ merkleWitnesses: RollupMerkleTreeWitness[];
64
+ }) & {
65
+ _isStruct: true;
66
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
67
+ batch: ProvableStateTransition[];
68
+ transitionTypes: ProvableStateTransitionType[];
69
+ merkleWitnesses: RollupMerkleTreeWitness[];
70
+ }, {
71
+ batch: {
72
+ path: bigint;
73
+ from: {
74
+ isSome: boolean;
75
+ value: bigint;
76
+ };
77
+ to: {
78
+ isSome: boolean;
79
+ value: bigint;
80
+ };
81
+ }[];
82
+ transitionTypes: {
83
+ type: boolean;
84
+ }[];
85
+ merkleWitnesses: {
86
+ path: bigint[];
87
+ isLeft: boolean[];
88
+ }[];
89
+ }>, "fromFields"> & {
90
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
91
+ batch: ProvableStateTransition[];
92
+ transitionTypes: ProvableStateTransitionType[];
93
+ merkleWitnesses: RollupMerkleTreeWitness[];
94
+ };
95
+ } & {
96
+ fromValue: (value: {
97
+ batch: ProvableStateTransition[] | {
98
+ path: bigint;
99
+ from: {
100
+ isSome: boolean;
101
+ value: bigint;
102
+ };
103
+ to: {
104
+ isSome: boolean;
105
+ value: bigint;
106
+ };
107
+ }[];
108
+ transitionTypes: ProvableStateTransitionType[] | {
109
+ type: boolean;
110
+ }[];
111
+ merkleWitnesses: RollupMerkleTreeWitness[] | {
112
+ path: bigint[];
113
+ isLeft: boolean[];
114
+ }[];
115
+ }) => {
116
+ batch: ProvableStateTransition[];
117
+ transitionTypes: ProvableStateTransitionType[];
118
+ merkleWitnesses: RollupMerkleTreeWitness[];
119
+ };
120
+ toInput: (x: {
121
+ batch: ProvableStateTransition[];
122
+ transitionTypes: ProvableStateTransitionType[];
123
+ merkleWitnesses: RollupMerkleTreeWitness[];
124
+ }) => {
125
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
126
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
127
+ };
128
+ toJSON: (x: {
129
+ batch: ProvableStateTransition[];
130
+ transitionTypes: ProvableStateTransitionType[];
131
+ merkleWitnesses: RollupMerkleTreeWitness[];
132
+ }) => {
133
+ batch: {
134
+ path: string;
135
+ from: {
136
+ isSome: boolean;
137
+ value: string;
138
+ };
139
+ to: {
140
+ isSome: boolean;
141
+ value: string;
142
+ };
143
+ }[];
144
+ transitionTypes: {
145
+ type: boolean;
146
+ }[];
147
+ merkleWitnesses: {
148
+ path: string[];
149
+ isLeft: boolean[];
150
+ }[];
151
+ };
152
+ fromJSON: (x: {
153
+ batch: {
154
+ path: string;
155
+ from: {
156
+ isSome: boolean;
157
+ value: string;
158
+ };
159
+ to: {
160
+ isSome: boolean;
161
+ value: string;
162
+ };
163
+ }[];
164
+ transitionTypes: {
165
+ type: boolean;
166
+ }[];
167
+ merkleWitnesses: {
168
+ path: string[];
169
+ isLeft: boolean[];
170
+ }[];
171
+ }) => {
172
+ batch: ProvableStateTransition[];
173
+ transitionTypes: ProvableStateTransitionType[];
174
+ merkleWitnesses: RollupMerkleTreeWitness[];
175
+ };
176
+ empty: () => {
177
+ batch: ProvableStateTransition[];
178
+ transitionTypes: ProvableStateTransitionType[];
179
+ merkleWitnesses: RollupMerkleTreeWitness[];
180
+ };
181
+ };
182
+ /**
183
+ * A Batch of StateTransitions to be consumed by the StateTransitionProver
184
+ * to prove multiple STs at once
185
+ *
186
+ * transitionType:
187
+ * true == normal ST, false == protocol ST
188
+ */
189
+ export declare class StateTransitionProvableBatch extends StateTransitionProvableBatch_base {
190
+ static fromMappings(transitions: {
191
+ transition: ProvableStateTransition;
192
+ type: ProvableStateTransitionType;
193
+ }[], merkleWitnesses: RollupMerkleTreeWitness[]): StateTransitionProvableBatch;
194
+ static fromTransitions(transitions: ProvableStateTransition[], protocolTransitions: ProvableStateTransition[], merkleWitnesses: RollupMerkleTreeWitness[]): StateTransitionProvableBatch;
195
+ private constructor();
196
+ }
197
+ export {};
198
+ //# sourceMappingURL=StateTransitionProvableBatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransitionProvableBatch.d.ts","sourceRoot":"","sources":["../../src/model/StateTransitionProvableBatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,MAAM,CAAC;AAC9C,OAAO,EAIL,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,mBAAmB;IAC9B,gBAAuB,MAAM,QAAQ;IAErC,gBAAuB,QAAQ,SAAS;WAE1B,QAAQ,CAAC,IAAI,EAAE,OAAO;WAItB,UAAU,CAAC,IAAI,EAAE,OAAO;CAGvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,2BAA4B,SAAQ,gCAE/C;IACA,WAAkB,MAAM,IAAI,2BAA2B,CAItD;IAED,WAAkB,QAAQ,IAAI,2BAA2B,CAIxD;IAEM,QAAQ,IAAI,IAAI;IAIhB,UAAU,IAAI,IAAI;CAG1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED;;;;;;GAMG;AACH,qBAAa,4BAA6B,SAAQ,iCAehD;WACc,YAAY,CACxB,WAAW,EAAE;QACX,UAAU,EAAE,uBAAuB,CAAC;QACpC,IAAI,EAAE,2BAA2B,CAAC;KACnC,EAAE,EACH,eAAe,EAAE,uBAAuB,EAAE,GACzC,4BAA4B;WA+BjB,eAAe,CAC3B,WAAW,EAAE,uBAAuB,EAAE,EACtC,mBAAmB,EAAE,uBAAuB,EAAE,EAC9C,eAAe,EAAE,uBAAuB,EAAE,GACzC,4BAA4B;IAuB/B,OAAO;CAOR"}
@@ -0,0 +1,91 @@
1
+ import { Bool, Provable, Struct } from "o1js";
2
+ import { InMemoryMerkleTreeStorage, range, RollupMerkleTree, RollupMerkleTreeWitness, } from "@proto-kit/common";
3
+ import { constants } from "../Constants";
4
+ import { ProvableStateTransition } from "./StateTransition.js";
5
+ export class StateTransitionType {
6
+ static isNormal(type) {
7
+ return type === StateTransitionType.normal;
8
+ }
9
+ static isProtocol(type) {
10
+ return type === StateTransitionType.protocol;
11
+ }
12
+ }
13
+ StateTransitionType.normal = true;
14
+ StateTransitionType.protocol = false;
15
+ export class ProvableStateTransitionType extends Struct({
16
+ type: Bool,
17
+ }) {
18
+ static get normal() {
19
+ return new ProvableStateTransitionType({
20
+ type: Bool(StateTransitionType.normal),
21
+ });
22
+ }
23
+ static get protocol() {
24
+ return new ProvableStateTransitionType({
25
+ type: Bool(StateTransitionType.protocol),
26
+ });
27
+ }
28
+ isNormal() {
29
+ return this.type;
30
+ }
31
+ isProtocol() {
32
+ return this.type.not();
33
+ }
34
+ }
35
+ /**
36
+ * A Batch of StateTransitions to be consumed by the StateTransitionProver
37
+ * to prove multiple STs at once
38
+ *
39
+ * transitionType:
40
+ * true == normal ST, false == protocol ST
41
+ */
42
+ export class StateTransitionProvableBatch extends Struct({
43
+ batch: Provable.Array(ProvableStateTransition, constants.stateTransitionProverBatchSize),
44
+ transitionTypes: Provable.Array(ProvableStateTransitionType, constants.stateTransitionProverBatchSize),
45
+ merkleWitnesses: Provable.Array(RollupMerkleTreeWitness, constants.stateTransitionProverBatchSize),
46
+ }) {
47
+ static fromMappings(transitions, merkleWitnesses) {
48
+ const batch = transitions.map((entry) => entry.transition);
49
+ const transitionTypes = transitions.map((entry) => entry.type);
50
+ const witnesses = merkleWitnesses.slice();
51
+ // Check that order is correct
52
+ let normalSTsStarted = false;
53
+ transitionTypes.forEach((x) => {
54
+ if (!normalSTsStarted && x.isNormal().toBoolean()) {
55
+ normalSTsStarted = true;
56
+ }
57
+ if (normalSTsStarted && x.isProtocol().toBoolean()) {
58
+ throw new Error("Order in initializing STBatch not correct");
59
+ }
60
+ });
61
+ while (batch.length < constants.stateTransitionProverBatchSize) {
62
+ batch.push(ProvableStateTransition.dummy());
63
+ transitionTypes.push(ProvableStateTransitionType.normal);
64
+ witnesses.push(new RollupMerkleTree(new InMemoryMerkleTreeStorage()).getWitness(BigInt(0)));
65
+ }
66
+ return new StateTransitionProvableBatch({
67
+ batch,
68
+ transitionTypes,
69
+ merkleWitnesses: witnesses,
70
+ });
71
+ }
72
+ static fromTransitions(transitions, protocolTransitions, merkleWitnesses) {
73
+ const array = transitions.slice().concat(protocolTransitions);
74
+ const transitionTypes = range(0, transitions.length)
75
+ .map(() => ProvableStateTransitionType.normal)
76
+ .concat(range(0, protocolTransitions.length).map(() => ProvableStateTransitionType.protocol));
77
+ while (array.length < constants.stateTransitionProverBatchSize) {
78
+ array.push(ProvableStateTransition.dummy());
79
+ transitionTypes.push(ProvableStateTransitionType.normal);
80
+ }
81
+ return new StateTransitionProvableBatch({
82
+ batch: array,
83
+ transitionTypes,
84
+ merkleWitnesses,
85
+ });
86
+ }
87
+ constructor(object) {
88
+ super(object);
89
+ }
90
+ }
91
+ //# sourceMappingURL=StateTransitionProvableBatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransitionProvableBatch.js","sourceRoot":"","sources":["../../src/model/StateTransitionProvableBatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ import { Field, UInt64 } from "o1js";
2
+ declare const CurrentBlock_base: (new (value: {
3
+ height: UInt64;
4
+ }) => {
5
+ height: UInt64;
6
+ }) & {
7
+ _isStruct: true;
8
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
9
+ height: UInt64;
10
+ }, {
11
+ height: bigint;
12
+ }>, "fromFields"> & {
13
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
14
+ height: UInt64;
15
+ };
16
+ } & {
17
+ fromValue: (value: {
18
+ height: bigint | UInt64;
19
+ }) => {
20
+ height: UInt64;
21
+ };
22
+ toInput: (x: {
23
+ height: UInt64;
24
+ }) => {
25
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
26
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
27
+ };
28
+ toJSON: (x: {
29
+ height: UInt64;
30
+ }) => {
31
+ height: string;
32
+ };
33
+ fromJSON: (x: {
34
+ height: string;
35
+ }) => {
36
+ height: UInt64;
37
+ };
38
+ empty: () => {
39
+ height: UInt64;
40
+ };
41
+ };
42
+ export declare class CurrentBlock extends CurrentBlock_base {
43
+ }
44
+ declare const PreviousBlock_base: (new (value: {
45
+ rootHash: import("o1js/dist/node/lib/provable/field").Field;
46
+ }) => {
47
+ rootHash: import("o1js/dist/node/lib/provable/field").Field;
48
+ }) & {
49
+ _isStruct: true;
50
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
51
+ rootHash: import("o1js/dist/node/lib/provable/field").Field;
52
+ }, {
53
+ rootHash: bigint;
54
+ }>, "fromFields"> & {
55
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
56
+ rootHash: import("o1js/dist/node/lib/provable/field").Field;
57
+ };
58
+ } & {
59
+ fromValue: (value: {
60
+ rootHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
61
+ }) => {
62
+ rootHash: import("o1js/dist/node/lib/provable/field").Field;
63
+ };
64
+ toInput: (x: {
65
+ rootHash: import("o1js/dist/node/lib/provable/field").Field;
66
+ }) => {
67
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
68
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
69
+ };
70
+ toJSON: (x: {
71
+ rootHash: import("o1js/dist/node/lib/provable/field").Field;
72
+ }) => {
73
+ rootHash: string;
74
+ };
75
+ fromJSON: (x: {
76
+ rootHash: string;
77
+ }) => {
78
+ rootHash: import("o1js/dist/node/lib/provable/field").Field;
79
+ };
80
+ empty: () => {
81
+ rootHash: import("o1js/dist/node/lib/provable/field").Field;
82
+ };
83
+ };
84
+ export declare class PreviousBlock extends PreviousBlock_base {
85
+ }
86
+ declare const NetworkState_base: (new (value: {
87
+ block: CurrentBlock;
88
+ previous: PreviousBlock;
89
+ }) => {
90
+ block: CurrentBlock;
91
+ previous: PreviousBlock;
92
+ }) & {
93
+ _isStruct: true;
94
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
95
+ block: CurrentBlock;
96
+ previous: PreviousBlock;
97
+ }, {
98
+ block: {
99
+ height: bigint;
100
+ };
101
+ previous: {
102
+ rootHash: bigint;
103
+ };
104
+ }>, "fromFields"> & {
105
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
106
+ block: CurrentBlock;
107
+ previous: PreviousBlock;
108
+ };
109
+ } & {
110
+ fromValue: (value: {
111
+ block: CurrentBlock | {
112
+ height: bigint | UInt64;
113
+ };
114
+ previous: PreviousBlock | {
115
+ rootHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
116
+ };
117
+ }) => {
118
+ block: CurrentBlock;
119
+ previous: PreviousBlock;
120
+ };
121
+ toInput: (x: {
122
+ block: CurrentBlock;
123
+ previous: PreviousBlock;
124
+ }) => {
125
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
126
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
127
+ };
128
+ toJSON: (x: {
129
+ block: CurrentBlock;
130
+ previous: PreviousBlock;
131
+ }) => {
132
+ block: {
133
+ height: string;
134
+ };
135
+ previous: {
136
+ rootHash: string;
137
+ };
138
+ };
139
+ fromJSON: (x: {
140
+ block: {
141
+ height: string;
142
+ };
143
+ previous: {
144
+ rootHash: string;
145
+ };
146
+ }) => {
147
+ block: CurrentBlock;
148
+ previous: PreviousBlock;
149
+ };
150
+ empty: () => {
151
+ block: CurrentBlock;
152
+ previous: PreviousBlock;
153
+ };
154
+ };
155
+ export declare class NetworkState extends NetworkState_base {
156
+ hash(): Field;
157
+ static empty(): NetworkState;
158
+ }
159
+ export {};
160
+ //# sourceMappingURL=NetworkState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkState.d.ts","sourceRoot":"","sources":["../../../src/model/network/NetworkState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAoB,MAAM,EAAE,MAAM,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGvD,qBAAa,YAAa,SAAQ,iBAEhC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,aAAc,SAAQ,kBAEjC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,YAAa,SAAQ,iBAGhC;IACO,IAAI,IAAI,KAAK;WAON,KAAK;CAUpB"}