@proto-kit/protocol 0.1.1-develop.457 → 0.1.1-develop.651

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 (196) hide show
  1. package/dist/blockmodules/AccountStateModule.d.ts.map +1 -1
  2. package/dist/blockmodules/AccountStateModule.js +10 -3
  3. package/dist/blockmodules/BlockHeightHook.d.ts +3 -3
  4. package/dist/blockmodules/BlockHeightHook.d.ts.map +1 -1
  5. package/dist/blockmodules/BlockHeightHook.js +5 -4
  6. package/dist/blockmodules/LastStateRootBlockHook.d.ts +8 -0
  7. package/dist/blockmodules/LastStateRootBlockHook.d.ts.map +1 -0
  8. package/dist/blockmodules/LastStateRootBlockHook.js +15 -0
  9. package/dist/blockmodules/NoopBlockHook.d.ts +6 -4
  10. package/dist/blockmodules/NoopBlockHook.d.ts.map +1 -1
  11. package/dist/blockmodules/NoopBlockHook.js +4 -4
  12. package/dist/blockmodules/NoopSettlementHook.d.ts +6 -0
  13. package/dist/blockmodules/NoopSettlementHook.d.ts.map +1 -0
  14. package/dist/blockmodules/NoopSettlementHook.js +18 -0
  15. package/dist/hooks/AccountStateHook.d.ts.map +1 -1
  16. package/dist/hooks/AccountStateHook.js +17 -5
  17. package/dist/hooks/BlockHeightHook.d.ts +3 -3
  18. package/dist/hooks/BlockHeightHook.d.ts.map +1 -1
  19. package/dist/hooks/BlockHeightHook.js +5 -4
  20. package/dist/hooks/LastStateRootBlockHook.d.ts +8 -0
  21. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  22. package/dist/hooks/LastStateRootBlockHook.js +15 -0
  23. package/dist/hooks/NoopBlockHook.d.ts +6 -4
  24. package/dist/hooks/NoopBlockHook.d.ts.map +1 -1
  25. package/dist/hooks/NoopBlockHook.js +4 -4
  26. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  27. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  28. package/dist/hooks/NoopSettlementHook.js +18 -0
  29. package/dist/index.d.ts +24 -6
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +24 -6
  32. package/dist/model/MethodPublicOutput.d.ts +8 -0
  33. package/dist/model/MethodPublicOutput.d.ts.map +1 -1
  34. package/dist/model/MethodPublicOutput.js +1 -0
  35. package/dist/model/Option.d.ts +3 -2
  36. package/dist/model/Option.d.ts.map +1 -1
  37. package/dist/model/Option.js +5 -0
  38. package/dist/model/RuntimeLike.d.ts +11 -0
  39. package/dist/model/RuntimeLike.d.ts.map +1 -0
  40. package/dist/model/RuntimeLike.js +1 -0
  41. package/dist/model/StateTransition.d.ts +6 -5
  42. package/dist/model/StateTransition.d.ts.map +1 -1
  43. package/dist/model/StateTransition.js +3 -0
  44. package/dist/model/StateTransitionReduction.d.ts +3 -0
  45. package/dist/model/StateTransitionReduction.d.ts.map +1 -0
  46. package/dist/model/StateTransitionReduction.js +26 -0
  47. package/dist/model/network/NetworkState.d.ts +40 -0
  48. package/dist/model/network/NetworkState.d.ts.map +1 -1
  49. package/dist/model/network/NetworkState.js +14 -2
  50. package/dist/model/transaction/RuntimeTransaction.d.ts +45 -20
  51. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
  52. package/dist/model/transaction/RuntimeTransaction.js +68 -11
  53. package/dist/model/transaction/SignedTransaction.d.ts +71 -0
  54. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  55. package/dist/model/transaction/SignedTransaction.js +33 -0
  56. package/dist/model/transaction/ValueOption.d.ts +119 -0
  57. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  58. package/dist/model/transaction/ValueOption.js +24 -0
  59. package/dist/protocol/Protocol.d.ts +13 -16
  60. package/dist/protocol/Protocol.d.ts.map +1 -1
  61. package/dist/protocol/Protocol.js +26 -39
  62. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  63. package/dist/protocol/ProtocolModule.js +1 -1
  64. package/dist/protocol/ProvableBlockHook.d.ts +2 -10
  65. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -1
  66. package/dist/protocol/ProvableBlockHook.js +1 -1
  67. package/dist/protocol/ProvableTransactionHook.d.ts +1 -1
  68. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
  69. package/dist/protocol/TransitioningProtocolModule.d.ts +3 -2
  70. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -1
  71. package/dist/protocol/TransitioningProtocolModule.js +3 -2
  72. package/dist/prover/block/BlockProvable.d.ts +106 -28
  73. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  74. package/dist/prover/block/BlockProvable.js +23 -5
  75. package/dist/prover/block/BlockProver.d.ts +29 -8
  76. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  77. package/dist/prover/block/BlockProver.js +244 -78
  78. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +45 -0
  79. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  80. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +16 -0
  81. package/dist/prover/statetransition/StateTransitionProver.d.ts +3 -2
  82. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  83. package/dist/prover/statetransition/StateTransitionProver.js +1 -0
  84. package/dist/settlement/ContractModule.d.ts +15 -0
  85. package/dist/settlement/ContractModule.d.ts.map +1 -0
  86. package/dist/settlement/ContractModule.js +11 -0
  87. package/dist/settlement/ProvableSettlementHook.d.ts +26 -0
  88. package/dist/settlement/ProvableSettlementHook.d.ts.map +1 -0
  89. package/dist/settlement/ProvableSettlementHook.js +3 -0
  90. package/dist/settlement/SettlementContract.d.ts +230 -0
  91. package/dist/settlement/SettlementContract.d.ts.map +1 -0
  92. package/dist/settlement/SettlementContract.js +346 -0
  93. package/dist/settlement/SettlementContractModule.d.ts +39 -0
  94. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  95. package/dist/settlement/SettlementContractModule.js +68 -0
  96. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +12 -0
  97. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  98. package/dist/settlement/contracts/DispatchContractProtocolModule.js +36 -0
  99. package/dist/settlement/contracts/DispatchSmartContract.d.ts +22 -0
  100. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  101. package/dist/settlement/contracts/DispatchSmartContract.js +110 -0
  102. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +19 -0
  103. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  104. package/dist/settlement/contracts/SettlementContractProtocolModule.js +44 -0
  105. package/dist/settlement/contracts/SettlementSmartContract.d.ts +41 -0
  106. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  107. package/dist/settlement/contracts/SettlementSmartContract.js +235 -0
  108. package/dist/settlement/messages/Deposit.d.ts +39 -0
  109. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  110. package/dist/settlement/messages/Deposit.js +6 -0
  111. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +109 -0
  112. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  113. package/dist/settlement/messages/OutgoingMessageArgument.js +32 -0
  114. package/dist/settlement/messages/Withdrawal.d.ts +40 -0
  115. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  116. package/dist/settlement/messages/Withdrawal.js +13 -0
  117. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +24 -0
  118. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  119. package/dist/settlement/modularity/ProvableSettlementHook.js +3 -0
  120. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  121. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  122. package/dist/settlement/modules/NetworkStateSettlementModule.js +12 -0
  123. package/dist/state/State.d.ts.map +1 -1
  124. package/dist/state/State.js +2 -1
  125. package/dist/state/assert/assert.d.ts.map +1 -1
  126. package/dist/state/assert/assert.js +8 -5
  127. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +75 -1
  128. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
  129. package/dist/state/context/RuntimeMethodExecutionContext.js +21 -2
  130. package/dist/utils/MinaPrefixedProvableHashList.d.ts +24 -0
  131. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  132. package/dist/utils/MinaPrefixedProvableHashList.js +51 -0
  133. package/dist/utils/PrefixedProvableHashList.d.ts +2 -2
  134. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
  135. package/dist/utils/ProvableHashList.d.ts +3 -3
  136. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  137. package/dist/utils/ProvableReductionHashList.d.ts +14 -0
  138. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  139. package/dist/utils/ProvableReductionHashList.js +50 -0
  140. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  141. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  142. package/dist/utils/StateTransitionReductionList.js +60 -0
  143. package/package.json +2 -2
  144. package/src/hooks/AccountStateHook.ts +46 -0
  145. package/src/hooks/BlockHeightHook.ts +18 -0
  146. package/src/hooks/LastStateRootBlockHook.ts +26 -0
  147. package/src/hooks/NoopBlockHook.ts +20 -0
  148. package/src/hooks/NoopSettlementHook.ts +20 -0
  149. package/src/hooks/SequenceStateTransactionModule.ts +25 -0
  150. package/src/index.ts +24 -6
  151. package/src/model/MethodPublicOutput.ts +3 -2
  152. package/src/model/Option.ts +16 -0
  153. package/src/model/RuntimeLike.ts +12 -0
  154. package/src/model/StateTransition.ts +10 -2
  155. package/src/model/network/NetworkState.ts +15 -3
  156. package/src/model/transaction/RuntimeTransaction.ts +90 -16
  157. package/src/model/transaction/SignedTransaction.ts +54 -0
  158. package/src/model/transaction/ValueOption.ts +28 -0
  159. package/src/protocol/Protocol.ts +60 -67
  160. package/src/protocol/ProtocolModule.ts +3 -2
  161. package/src/protocol/ProvableBlockHook.ts +10 -13
  162. package/src/protocol/ProvableTransactionHook.ts +2 -1
  163. package/src/protocol/TransitioningProtocolModule.ts +3 -2
  164. package/src/prover/block/BlockProvable.ts +39 -6
  165. package/src/prover/block/BlockProver.ts +484 -142
  166. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +16 -0
  167. package/src/prover/statetransition/StateTransitionProver.ts +4 -2
  168. package/src/settlement/ContractModule.ts +24 -0
  169. package/src/settlement/SettlementContractModule.ts +127 -0
  170. package/src/settlement/contracts/DispatchContractProtocolModule.ts +39 -0
  171. package/src/settlement/contracts/DispatchSmartContract.ts +135 -0
  172. package/src/settlement/contracts/SettlementContractProtocolModule.ts +65 -0
  173. package/src/settlement/contracts/SettlementSmartContract.ts +329 -0
  174. package/src/settlement/messages/Deposit.ts +6 -0
  175. package/src/settlement/messages/OutgoingMessageArgument.ts +41 -0
  176. package/src/settlement/messages/Withdrawal.ts +14 -0
  177. package/src/settlement/modularity/ProvableSettlementHook.ts +34 -0
  178. package/src/settlement/modules/NetworkStateSettlementModule.ts +39 -0
  179. package/src/state/State.ts +2 -1
  180. package/src/state/assert/assert.ts +8 -6
  181. package/src/state/context/RuntimeMethodExecutionContext.ts +22 -2
  182. package/src/utils/MinaPrefixedProvableHashList.ts +72 -0
  183. package/src/utils/PrefixedProvableHashList.ts +2 -2
  184. package/src/utils/ProvableHashList.ts +3 -3
  185. package/src/utils/ProvableReductionHashList.ts +68 -0
  186. package/src/utils/StateTransitionReductionList.ts +88 -0
  187. package/test/BlockProver.test.ts +4 -5
  188. package/test/Protocol.test.ts +15 -10
  189. package/test/settlement/SettlementContract.test.ts +45 -0
  190. package/test/utils/ProvableReductionHashList.test.ts +114 -0
  191. package/src/blockmodules/AccountStateModule.ts +0 -33
  192. package/src/blockmodules/BlockHeightHook.ts +0 -21
  193. package/src/blockmodules/NoopBlockHook.ts +0 -16
  194. package/src/model/transaction/ProtocolTransaction.ts +0 -25
  195. package/src/prover/block/BlockTransactionPosition.ts +0 -34
  196. /package/src/{blockmodules → hooks}/NoopTransactionHook.ts +0 -0
@@ -6,25 +6,27 @@ import { StateServiceProvider } from "../state/StateServiceProvider";
6
6
  import { StateService } from "../state/StateService";
7
7
  import { ProtocolModule } from "./ProtocolModule";
8
8
  import { ProtocolEnvironment } from "./ProtocolEnvironment";
9
- import { AccountStateModule } from "../blockmodules/AccountStateModule";
10
- export type GenericProtocolModuleRecord = ModulesRecord<TypedClass<ProtocolModule<unknown>>>;
11
- interface BlockProverType extends ProtocolModule, BlockProvable {
9
+ import { AccountStateHook } from "../hooks/AccountStateHook";
10
+ import { BlockHeightHook } from "../hooks/BlockHeightHook";
11
+ import { LastStateRootBlockHook } from "../hooks/LastStateRootBlockHook";
12
+ export type ProtocolModulesRecord = ModulesRecord<TypedClass<ProtocolModule<unknown>>>;
13
+ export interface BlockProverType extends ProtocolModule, BlockProvable {
12
14
  }
13
- interface StateTransitionProverType extends ProtocolModule, StateTransitionProvable {
15
+ export interface StateTransitionProverType extends ProtocolModule, StateTransitionProvable {
14
16
  }
15
- export interface ProtocolCustomModulesRecord {
17
+ export type MandatoryProtocolModulesRecord = {
16
18
  BlockProver: TypedClass<BlockProverType>;
17
19
  StateTransitionProver: TypedClass<StateTransitionProverType>;
18
- AccountState: TypedClass<AccountStateModule>;
19
- }
20
- export interface ProtocolModulesRecord extends GenericProtocolModuleRecord, ProtocolCustomModulesRecord {
21
- }
20
+ AccountState: TypedClass<AccountStateHook>;
21
+ BlockHeight: TypedClass<BlockHeightHook>;
22
+ LastStateRoot: TypedClass<LastStateRootBlockHook>;
23
+ };
22
24
  export interface ProtocolDefinition<Modules extends ProtocolModulesRecord> {
23
25
  modules: Modules;
24
26
  config?: ModulesConfig<Modules>;
25
27
  }
26
- export declare class Protocol<Modules extends ProtocolModulesRecord> extends ModuleContainer<Modules> implements ProtocolEnvironment {
27
- static from<Modules extends ProtocolModulesRecord>(modules: ProtocolDefinition<Modules>): TypedClass<Protocol<Modules>>;
28
+ export declare class Protocol<Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord> extends ModuleContainer<Modules> implements ProtocolEnvironment {
29
+ static from<Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord>(modules: ProtocolDefinition<Modules>): TypedClass<Protocol<Modules>>;
28
30
  definition: ProtocolDefinition<Modules>;
29
31
  constructor(definition: ProtocolDefinition<Modules>);
30
32
  get stateService(): StateService;
@@ -37,9 +39,4 @@ export declare class Protocol<Modules extends ProtocolModulesRecord> extends Mod
37
39
  getAreProofsEnabled(): AreProofsEnabled;
38
40
  create(childContainerProvider: ChildContainerProvider): void;
39
41
  }
40
- export declare const VanillaProtocol: {
41
- create(): TypedClass<Protocol<ProtocolModulesRecord>>;
42
- from<AdditonalModules extends GenericProtocolModuleRecord>(additionalModules: AdditonalModules): TypedClass<Protocol<ProtocolModulesRecord>>;
43
- };
44
- export {};
45
42
  //# sourceMappingURL=Protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Protocol.d.ts","sourceRoot":"","sources":["../../src/protocol/Protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EAEtB,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAa,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAE5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAUxE,MAAM,MAAM,2BAA2B,GAAG,aAAa,CACrD,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CACpC,CAAC;AAEF,UAAU,eAAgB,SAAQ,cAAc,EAAE,aAAa;CAAG;AAElE,UAAU,yBACR,SAAQ,cAAc,EACpB,uBAAuB;CAAG;AAE9B,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IACzC,qBAAqB,EAAE,UAAU,CAAC,yBAAyB,CAAC,CAAC;IAC7D,YAAY,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,qBACf,SAAQ,2BAA2B,EACjC,2BAA2B;CAAG;AAElC,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,qBAAqB;IACvE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,qBAAa,QAAQ,CAAC,OAAO,SAAS,qBAAqB,CACzD,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,mBAAmB;WAGhB,IAAI,CAAC,OAAO,SAAS,qBAAqB,EACtD,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,GACnC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAQzB,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAE5B,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC;IAK1D,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,oBAAoB,IAAI,oBAAoB,CAEtD;IAEM,cAAc,CACnB,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAChC,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAY9D,IAAW,mBAAmB,IAAI,mBAAmB,CAEpD;IAED,OAAO,CAAC,QAAQ;IAMhB,IAAW,WAAW,IAAI,aAAa,CAMtC;IAED,IAAW,qBAAqB,IAAI,uBAAuB,CAI1D;IAEM,mBAAmB,IAAI,gBAAgB;IAIvC,MAAM,CAAC,sBAAsB,EAAE,sBAAsB;CA0C7D;AAED,eAAO,MAAM,eAAe;;qGAOvB,WAAW,SAAS,qBAAqB,CAAC,CAAC;CAW/C,CAAC"}
1
+ {"version":3,"file":"Protocol.d.ts","sourceRoot":"","sources":["../../src/protocol/Protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EAEtB,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAa,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAE5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAUzE,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAC/C,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CACpC,CAAC;AAEF,MAAM,WAAW,eAAgB,SAAQ,cAAc,EAAE,aAAa;CAAG;AAEzE,MAAM,WAAW,yBACf,SAAQ,cAAc,EACpB,uBAAuB;CAAG;AAE9B,MAAM,MAAM,8BAA8B,GAAG;IAC3C,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IACzC,qBAAqB,EAAE,UAAU,CAAC,yBAAyB,CAAC,CAAC;IAC7D,YAAY,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC3C,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IACzC,aAAa,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC;CACnD,CAAC;AAEF,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,qBAAqB;IACvE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,qBAAa,QAAQ,CACjB,OAAO,SAAS,qBAAqB,GAAG,8BAA8B,CAExE,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,mBAAmB;WAEhB,IAAI,CAChB,OAAO,SAAS,qBAAqB,GAAG,8BAA8B,EACtE,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAQ/D,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAE5B,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC;IAK1D,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,oBAAoB,IAAI,oBAAoB,CAEtD;IAEM,cAAc,CACnB,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAChC,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAY9D,IAAW,mBAAmB,IAAI,mBAAmB,CAEpD;IAED,OAAO,CAAC,QAAQ;IAMhB,IAAW,WAAW,IAAI,aAAa,CAMtC;IAED,IAAW,qBAAqB,IAAI,uBAAuB,CAI1D;IAEM,mBAAmB,IAAI,gBAAgB;IAIvC,MAAM,CAAC,sBAAsB,EAAE,sBAAsB;CAoD7D"}
@@ -1,19 +1,17 @@
1
1
  import { log, ModuleContainer, } from "@proto-kit/common";
2
2
  import { Lifecycle } from "tsyringe";
3
- import { StateTransitionProver } from "../prover/statetransition/StateTransitionProver";
4
- import { BlockProver } from "../prover/block/BlockProver";
5
3
  import { ProvableTransactionHook } from "./ProvableTransactionHook";
6
- import { NoopTransactionHook } from "../blockmodules/NoopTransactionHook";
7
- import { AccountStateModule } from "../blockmodules/AccountStateModule";
4
+ import { NoopTransactionHook } from "../hooks/NoopTransactionHook";
8
5
  import { ProvableBlockHook } from "./ProvableBlockHook";
9
- import { NoopBlockHook } from "../blockmodules/NoopBlockHook";
10
- import { BlockHeightHook } from "../blockmodules/BlockHeightHook";
6
+ import { NoopBlockHook } from "../hooks/NoopBlockHook";
7
+ import { ProvableSettlementHook } from "../settlement/modularity/ProvableSettlementHook";
8
+ import { NoopSettlementHook } from "../hooks/NoopSettlementHook";
11
9
  const PROTOCOL_INJECTION_TOKENS = {
12
10
  ProvableTransactionHook: "ProvableTransactionHook",
13
11
  ProvableBlockHook: "ProvableBlockHook",
12
+ ProvableSettlementHook: "ProvableSettlementHook",
14
13
  };
15
14
  export class Protocol extends ModuleContainer {
16
- // .from() to create Protocol
17
15
  static from(modules) {
18
16
  return class ScopedProtocol extends Protocol {
19
17
  constructor() {
@@ -60,40 +58,29 @@ export class Protocol extends ModuleContainer {
60
58
  super.create(childContainerProvider);
61
59
  // Register the BlockModules seperately since we need to
62
60
  // inject them differently later
63
- let atLeastOneTransactionHookRegistered = false;
64
- let atLeastOneBlockHookRegistered = false;
65
- Object.entries(this.definition.modules).forEach(([key, value]) => {
66
- if (Object.prototype.isPrototypeOf.call(ProvableTransactionHook, value)) {
67
- this.container.register(PROTOCOL_INJECTION_TOKENS.ProvableTransactionHook, { useToken: key }, { lifecycle: Lifecycle.ContainerScoped });
68
- atLeastOneTransactionHookRegistered = true;
61
+ const ABSTRACT_MODULE_TYPES = [
62
+ { type: ProvableTransactionHook, defaultType: NoopTransactionHook },
63
+ { type: ProvableBlockHook, defaultType: NoopBlockHook },
64
+ { type: ProvableSettlementHook, defaultType: NoopSettlementHook },
65
+ ];
66
+ ABSTRACT_MODULE_TYPES.forEach((moduleTypeRegistration) => {
67
+ const abstractType = moduleTypeRegistration.type;
68
+ const implementingModules = Object.entries(this.definition.modules).filter(([, value]) => Object.prototype.isPrototypeOf.call(abstractType, value));
69
+ const newInjectionToken = PROTOCOL_INJECTION_TOKENS[abstractType.name];
70
+ if (newInjectionToken === undefined) {
71
+ log.error("Can't inject hook under the underlying hook token: Alias not found in mapping");
72
+ return;
69
73
  }
70
- if (Object.prototype.isPrototypeOf.call(ProvableBlockHook, value)) {
71
- this.container.register(PROTOCOL_INJECTION_TOKENS.ProvableBlockHook, { useToken: key }, { lifecycle: Lifecycle.ContainerScoped });
72
- atLeastOneBlockHookRegistered = true;
74
+ implementingModules.forEach(([key]) => {
75
+ this.container.register(abstractType.name, { useToken: key }, { lifecycle: Lifecycle.ContainerScoped });
76
+ });
77
+ if (implementingModules.length === 0) {
78
+ // This type annotation shouldn't change anything but is necessary
79
+ // bcs tsyringe complains
80
+ const { defaultType } = moduleTypeRegistration;
81
+ // Register default (noop) version
82
+ this.container.register(abstractType.name, { useClass: defaultType }, { lifecycle: Lifecycle.ContainerScoped });
73
83
  }
74
84
  });
75
- // We need this so that tsyringe doesn't throw when no hooks are registered
76
- if (!atLeastOneTransactionHookRegistered) {
77
- this.container.register(PROTOCOL_INJECTION_TOKENS.ProvableTransactionHook, { useClass: NoopTransactionHook }, { lifecycle: Lifecycle.ContainerScoped });
78
- }
79
- if (!atLeastOneBlockHookRegistered) {
80
- this.container.register(PROTOCOL_INJECTION_TOKENS.ProvableBlockHook, { useClass: NoopBlockHook }, { lifecycle: Lifecycle.ContainerScoped });
81
- }
82
85
  }
83
86
  }
84
- export const VanillaProtocol = {
85
- create() {
86
- return VanillaProtocol.from({});
87
- },
88
- from(additionalModules) {
89
- return Protocol.from({
90
- modules: {
91
- StateTransitionProver,
92
- BlockProver,
93
- AccountState: AccountStateModule,
94
- BlockHeight: BlockHeightHook,
95
- ...additionalModules,
96
- },
97
- });
98
- },
99
- };
@@ -1 +1 @@
1
- {"version":3,"file":"ProtocolModule.d.ts","sourceRoot":"","sources":["../../src/protocol/ProtocolModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAAE,QAAQ,EAE7B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,8BAAsB,cAAc,CAClC,MAAM,GAAG,QAAQ,CACjB,SAAQ,kBAAkB,CAAC,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAEtC,IAAW,QAAQ,IAAI,gBAAgB,GAAG,SAAS,CAElD;IAGM,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI;CAGpE"}
1
+ {"version":3,"file":"ProtocolModule.d.ts","sourceRoot":"","sources":["../../src/protocol/ProtocolModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,QAAQ,EAET,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,8BAAsB,cAAc,CAClC,MAAM,GAAG,QAAQ,CACjB,SAAQ,kBAAkB,CAAC,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAEtC,IAAW,QAAQ,IAAI,gBAAgB,GAAG,SAAS,CAElD;IAGM,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI;CAGpE"}
@@ -1,4 +1,4 @@
1
- import { ConfigurableModule, noop } from "@proto-kit/common";
1
+ import { ConfigurableModule, noop, } from "@proto-kit/common";
2
2
  export class ProtocolModule extends ConfigurableModule {
3
3
  get appChain() {
4
4
  return this.protocol?.getAreProofsEnabled();
@@ -1,16 +1,8 @@
1
1
  import type { BlockProverState } from "../prover/block/BlockProver";
2
2
  import { NetworkState } from "../model/network/NetworkState";
3
3
  import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
4
- export interface BeforeBlockParameters {
5
- state: BlockProverState;
6
- networkState: NetworkState;
7
- }
8
- export interface AfterBlockParameters {
9
- state: BlockProverState;
10
- networkState: NetworkState;
11
- }
12
4
  export declare abstract class ProvableBlockHook<Config> extends TransitioningProtocolModule<Config> {
13
- abstract beforeBlock(blockData: BeforeBlockParameters): NetworkState;
14
- abstract afterBlock(blockData: AfterBlockParameters): NetworkState;
5
+ abstract beforeBlock(networkState: NetworkState, state: BlockProverState): NetworkState;
6
+ abstract afterBlock(networkState: NetworkState, state: BlockProverState): NetworkState;
15
7
  }
16
8
  //# sourceMappingURL=ProvableBlockHook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProvableBlockHook.d.ts","sourceRoot":"","sources":["../../src/protocol/ProvableBlockHook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAGD,8BAAsB,iBAAiB,CACrC,MAAM,CACN,SAAQ,2BAA2B,CAAC,MAAM,CAAC;aAC3B,WAAW,CAAC,SAAS,EAAE,qBAAqB,GAAG,YAAY;aAC3D,UAAU,CAAC,SAAS,EAAE,oBAAoB,GAAG,YAAY;CAC1E"}
1
+ {"version":3,"file":"ProvableBlockHook.d.ts","sourceRoot":"","sources":["../../src/protocol/ProvableBlockHook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,8BAAsB,iBAAiB,CACrC,MAAM,CACN,SAAQ,2BAA2B,CAAC,MAAM,CAAC;aAC3B,WAAW,CACzB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,gBAAgB,GACtB,YAAY;aAEC,UAAU,CACxB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,gBAAgB,GACtB,YAAY;CAChB"}
@@ -1,4 +1,4 @@
1
1
  import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
2
- // Purpose is to validate transition from -> to network state
2
+ // Purpose is to build transition from -> to network state
3
3
  export class ProvableBlockHook extends TransitioningProtocolModule {
4
4
  }
@@ -1,6 +1,6 @@
1
+ import { NoConfig } from "@proto-kit/common";
1
2
  import { BlockProverExecutionData } from "../prover/block/BlockProvable";
2
3
  import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
3
- import { NoConfig } from "@proto-kit/common";
4
4
  export declare abstract class ProvableTransactionHook<Config = NoConfig> extends TransitioningProtocolModule<Config> {
5
5
  abstract onTransaction(executionData: BlockProverExecutionData): void;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProvableTransactionHook.d.ts","sourceRoot":"","sources":["../../src/protocol/ProvableTransactionHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,8BAAsB,uBAAuB,CAC3C,MAAM,GAAG,QAAQ,CACjB,SAAQ,2BAA2B,CAAC,MAAM,CAAC;aAC3B,aAAa,CAAC,aAAa,EAAE,wBAAwB,GAAG,IAAI;CAC7E"}
1
+ {"version":3,"file":"ProvableTransactionHook.d.ts","sourceRoot":"","sources":["../../src/protocol/ProvableTransactionHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,8BAAsB,uBAAuB,CAC3C,MAAM,GAAG,QAAQ,CACjB,SAAQ,2BAA2B,CAAC,MAAM,CAAC;aAC3B,aAAa,CAAC,aAAa,EAAE,wBAAwB,GAAG,IAAI;CAC7E"}
@@ -1,7 +1,8 @@
1
1
  import { ProtocolModule } from "./ProtocolModule";
2
2
  /**
3
- * A Protocolmodule that enables it's implementing module to access to
4
- * StateTransitions and state
3
+ * TransitioningProtocolModule is a base interface that allows inheriting
4
+ * classes to use State and StateMap since it requires the implementation
5
+ * of a `name: string` property, which those classes need to function.
5
6
  */
6
7
  export declare abstract class TransitioningProtocolModule<Config> extends ProtocolModule<Config> {
7
8
  name?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"TransitioningProtocolModule.d.ts","sourceRoot":"","sources":["../../src/protocol/TransitioningProtocolModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;GAGG;AACH,8BAAsB,2BAA2B,CAC/C,MAAM,CACN,SAAQ,cAAc,CAAC,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"TransitioningProtocolModule.d.ts","sourceRoot":"","sources":["../../src/protocol/TransitioningProtocolModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,8BAAsB,2BAA2B,CAC/C,MAAM,CACN,SAAQ,cAAc,CAAC,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -1,7 +1,8 @@
1
1
  import { ProtocolModule } from "./ProtocolModule";
2
2
  /**
3
- * A Protocolmodule that enables it's implementing module to access to
4
- * StateTransitions and state
3
+ * TransitioningProtocolModule is a base interface that allows inheriting
4
+ * classes to use State and StateMap since it requires the implementation
5
+ * of a `name: string` property, which those classes need to function.
5
6
  */
6
7
  export class TransitioningProtocolModule extends ProtocolModule {
7
8
  }
@@ -1,29 +1,41 @@
1
- import { Proof } from "o1js";
1
+ import { Bool, Field, Proof, Signature } from "o1js";
2
2
  import { WithZkProgrammable } from "@proto-kit/common";
3
3
  import { StateTransitionProof } from "../statetransition/StateTransitionProvable";
4
4
  import { MethodPublicOutput } from "../../model/MethodPublicOutput";
5
- import { ProtocolTransaction } from "../../model/transaction/ProtocolTransaction";
5
+ import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
6
6
  import { NetworkState } from "../../model/network/NetworkState";
7
- import { BlockTransactionPosition } from "./BlockTransactionPosition";
7
+ import { BlockHashMerkleTreeWitness } from "./accummulators/BlockHashMerkleTree";
8
8
  declare const BlockProverPublicInput_base: (new (value: {
9
9
  transactionsHash: import("o1js/dist/node/lib/field").Field;
10
10
  stateRoot: import("o1js/dist/node/lib/field").Field;
11
11
  networkStateHash: import("o1js/dist/node/lib/field").Field;
12
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
13
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
14
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
12
15
  }) => {
13
16
  transactionsHash: import("o1js/dist/node/lib/field").Field;
14
17
  stateRoot: import("o1js/dist/node/lib/field").Field;
15
18
  networkStateHash: import("o1js/dist/node/lib/field").Field;
19
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
20
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
21
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
16
22
  }) & {
17
23
  _isStruct: true;
18
24
  } & import("o1js/dist/node/snarky").ProvablePure<{
19
25
  transactionsHash: import("o1js/dist/node/lib/field").Field;
20
26
  stateRoot: import("o1js/dist/node/lib/field").Field;
21
27
  networkStateHash: import("o1js/dist/node/lib/field").Field;
28
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
29
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
30
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
22
31
  }> & {
23
32
  toInput: (x: {
24
33
  transactionsHash: import("o1js/dist/node/lib/field").Field;
25
34
  stateRoot: import("o1js/dist/node/lib/field").Field;
26
35
  networkStateHash: import("o1js/dist/node/lib/field").Field;
36
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
37
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
38
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
27
39
  }) => {
28
40
  fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
29
41
  packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
@@ -32,19 +44,31 @@ declare const BlockProverPublicInput_base: (new (value: {
32
44
  transactionsHash: import("o1js/dist/node/lib/field").Field;
33
45
  stateRoot: import("o1js/dist/node/lib/field").Field;
34
46
  networkStateHash: import("o1js/dist/node/lib/field").Field;
47
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
48
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
49
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
35
50
  }) => {
36
51
  transactionsHash: string;
37
52
  stateRoot: string;
38
53
  networkStateHash: string;
54
+ blockHashRoot: string;
55
+ eternalTransactionsHash: string;
56
+ incomingMessagesHash: string;
39
57
  };
40
58
  fromJSON: (x: {
41
59
  transactionsHash: string;
42
60
  stateRoot: string;
43
61
  networkStateHash: string;
62
+ blockHashRoot: string;
63
+ eternalTransactionsHash: string;
64
+ incomingMessagesHash: string;
44
65
  }) => {
45
66
  transactionsHash: import("o1js/dist/node/lib/field").Field;
46
67
  stateRoot: import("o1js/dist/node/lib/field").Field;
47
68
  networkStateHash: import("o1js/dist/node/lib/field").Field;
69
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
70
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
71
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
48
72
  };
49
73
  };
50
74
  export declare class BlockProverPublicInput extends BlockProverPublicInput_base {
@@ -53,21 +77,41 @@ declare const BlockProverPublicOutput_base: (new (value: {
53
77
  transactionsHash: import("o1js/dist/node/lib/field").Field;
54
78
  stateRoot: import("o1js/dist/node/lib/field").Field;
55
79
  networkStateHash: import("o1js/dist/node/lib/field").Field;
80
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
81
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
82
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
83
+ closed: import("o1js/dist/node/lib/bool").Bool;
84
+ blockNumber: import("o1js/dist/node/lib/field").Field;
56
85
  }) => {
57
86
  transactionsHash: import("o1js/dist/node/lib/field").Field;
58
87
  stateRoot: import("o1js/dist/node/lib/field").Field;
59
88
  networkStateHash: import("o1js/dist/node/lib/field").Field;
89
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
90
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
91
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
92
+ closed: import("o1js/dist/node/lib/bool").Bool;
93
+ blockNumber: import("o1js/dist/node/lib/field").Field;
60
94
  }) & {
61
95
  _isStruct: true;
62
96
  } & import("o1js/dist/node/snarky").ProvablePure<{
63
97
  transactionsHash: import("o1js/dist/node/lib/field").Field;
64
98
  stateRoot: import("o1js/dist/node/lib/field").Field;
65
99
  networkStateHash: import("o1js/dist/node/lib/field").Field;
100
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
101
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
102
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
103
+ closed: import("o1js/dist/node/lib/bool").Bool;
104
+ blockNumber: import("o1js/dist/node/lib/field").Field;
66
105
  }> & {
67
106
  toInput: (x: {
68
107
  transactionsHash: import("o1js/dist/node/lib/field").Field;
69
108
  stateRoot: import("o1js/dist/node/lib/field").Field;
70
109
  networkStateHash: import("o1js/dist/node/lib/field").Field;
110
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
111
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
112
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
113
+ closed: import("o1js/dist/node/lib/bool").Bool;
114
+ blockNumber: import("o1js/dist/node/lib/field").Field;
71
115
  }) => {
72
116
  fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
73
117
  packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
@@ -76,94 +120,128 @@ declare const BlockProverPublicOutput_base: (new (value: {
76
120
  transactionsHash: import("o1js/dist/node/lib/field").Field;
77
121
  stateRoot: import("o1js/dist/node/lib/field").Field;
78
122
  networkStateHash: import("o1js/dist/node/lib/field").Field;
123
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
124
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
125
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
126
+ closed: import("o1js/dist/node/lib/bool").Bool;
127
+ blockNumber: import("o1js/dist/node/lib/field").Field;
79
128
  }) => {
80
129
  transactionsHash: string;
81
130
  stateRoot: string;
82
131
  networkStateHash: string;
132
+ blockHashRoot: string;
133
+ eternalTransactionsHash: string;
134
+ incomingMessagesHash: string;
135
+ closed: boolean;
136
+ blockNumber: string;
83
137
  };
84
138
  fromJSON: (x: {
85
139
  transactionsHash: string;
86
140
  stateRoot: string;
87
141
  networkStateHash: string;
142
+ blockHashRoot: string;
143
+ eternalTransactionsHash: string;
144
+ incomingMessagesHash: string;
145
+ closed: boolean;
146
+ blockNumber: string;
88
147
  }) => {
89
148
  transactionsHash: import("o1js/dist/node/lib/field").Field;
90
149
  stateRoot: import("o1js/dist/node/lib/field").Field;
91
150
  networkStateHash: import("o1js/dist/node/lib/field").Field;
151
+ blockHashRoot: import("o1js/dist/node/lib/field").Field;
152
+ eternalTransactionsHash: import("o1js/dist/node/lib/field").Field;
153
+ incomingMessagesHash: import("o1js/dist/node/lib/field").Field;
154
+ closed: import("o1js/dist/node/lib/bool").Bool;
155
+ blockNumber: import("o1js/dist/node/lib/field").Field;
92
156
  };
93
157
  };
94
158
  export declare class BlockProverPublicOutput extends BlockProverPublicOutput_base {
159
+ equals(input: BlockProverPublicInput, closed: Bool, blockNumber: Field): Bool;
95
160
  }
96
161
  export type BlockProverProof = Proof<BlockProverPublicInput, BlockProverPublicOutput>;
97
162
  declare const BlockProverExecutionData_base: (new (value: {
98
- transaction: ProtocolTransaction;
163
+ transaction: RuntimeTransaction;
164
+ signature: Signature;
99
165
  networkState: NetworkState;
100
- transactionPosition: BlockTransactionPosition;
101
166
  }) => {
102
- transaction: ProtocolTransaction;
167
+ transaction: RuntimeTransaction;
168
+ signature: Signature;
103
169
  networkState: NetworkState;
104
- transactionPosition: BlockTransactionPosition;
105
170
  }) & {
106
171
  _isStruct: true;
107
- } & import("o1js/dist/node/snarky").ProvablePure<{
108
- transaction: ProtocolTransaction;
172
+ } & import("o1js/dist/node/lib/provable").Provable<{
173
+ transaction: RuntimeTransaction;
174
+ signature: Signature;
109
175
  networkState: NetworkState;
110
- transactionPosition: BlockTransactionPosition;
111
176
  }> & {
112
177
  toInput: (x: {
113
- transaction: ProtocolTransaction;
178
+ transaction: RuntimeTransaction;
179
+ signature: Signature;
114
180
  networkState: NetworkState;
115
- transactionPosition: BlockTransactionPosition;
116
181
  }) => {
117
182
  fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
118
183
  packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
119
184
  };
120
185
  toJSON: (x: {
121
- transaction: ProtocolTransaction;
186
+ transaction: RuntimeTransaction;
187
+ signature: Signature;
122
188
  networkState: NetworkState;
123
- transactionPosition: BlockTransactionPosition;
124
189
  }) => {
125
190
  transaction: {
126
191
  methodId: string;
127
- nonce: string;
128
- sender: string;
129
192
  argsHash: string;
130
- signature: any;
193
+ nonce: {
194
+ isSome: boolean;
195
+ value: any;
196
+ };
197
+ sender: {
198
+ isSome: boolean;
199
+ value: any;
200
+ };
131
201
  };
202
+ signature: any;
132
203
  networkState: {
133
204
  block: {
134
205
  height: string;
135
206
  };
136
- };
137
- transactionPosition: {
138
- type: string;
207
+ previous: {
208
+ rootHash: string;
209
+ };
139
210
  };
140
211
  };
141
212
  fromJSON: (x: {
142
213
  transaction: {
143
214
  methodId: string;
144
- nonce: string;
145
- sender: string;
146
215
  argsHash: string;
147
- signature: any;
216
+ nonce: {
217
+ isSome: boolean;
218
+ value: any;
219
+ };
220
+ sender: {
221
+ isSome: boolean;
222
+ value: any;
223
+ };
148
224
  };
225
+ signature: any;
149
226
  networkState: {
150
227
  block: {
151
228
  height: string;
152
229
  };
153
- };
154
- transactionPosition: {
155
- type: string;
230
+ previous: {
231
+ rootHash: string;
232
+ };
156
233
  };
157
234
  }) => {
158
- transaction: ProtocolTransaction;
235
+ transaction: RuntimeTransaction;
236
+ signature: Signature;
159
237
  networkState: NetworkState;
160
- transactionPosition: BlockTransactionPosition;
161
238
  };
162
239
  };
163
240
  export declare class BlockProverExecutionData extends BlockProverExecutionData_base {
164
241
  }
165
242
  export interface BlockProvable extends WithZkProgrammable<BlockProverPublicInput, BlockProverPublicOutput> {
166
243
  proveTransaction: (publicInput: BlockProverPublicInput, stateProof: StateTransitionProof, appProof: Proof<void, MethodPublicOutput>, executionData: BlockProverExecutionData) => BlockProverPublicOutput;
244
+ proveBlock: (publicInput: BlockProverPublicInput, networkState: NetworkState, blockWitness: BlockHashMerkleTreeWitness, stateTransitionProof: StateTransitionProof, transactionProof: BlockProverProof) => BlockProverPublicOutput;
167
245
  merge: (publicInput: BlockProverPublicInput, proof1: BlockProverProof, proof2: BlockProverProof) => BlockProverPublicOutput;
168
246
  }
169
247
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"BlockProvable.d.ts","sourceRoot":"","sources":["../../../src/prover/block/BlockProvable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,EAAU,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qBAAa,sBAAuB,SAAQ,2BAI1C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAI3C;CAAG;AAEL,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAClC,sBAAsB,EACtB,uBAAuB,CACxB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,qBAAa,wBAAyB,SAAQ,6BAI5C;CAAG;AAEL,MAAM,WAAW,aACf,SAAQ,kBAAkB,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;IAC3E,gBAAgB,EAAE,CAChB,WAAW,EAAE,sBAAsB,EACnC,UAAU,EAAE,oBAAoB,EAChC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,EACzC,aAAa,EAAE,wBAAwB,KACpC,uBAAuB,CAAC;IAE7B,KAAK,EAAE,CACL,WAAW,EAAE,sBAAsB,EACnC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,KACrB,uBAAuB,CAAC;CAC9B"}
1
+ {"version":3,"file":"BlockProvable.d.ts","sourceRoot":"","sources":["../../../src/prover/block/BlockProvable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAU,MAAM,MAAM,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjF,qBAAa,sBAAuB,SAAQ,2BAO1C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAS3C;IACO,MAAM,CACX,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,IAAI,EACZ,WAAW,EAAE,KAAK,GACjB,IAAI;CAWR;AAED,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAClC,sBAAsB,EACtB,uBAAuB,CACxB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,qBAAa,wBAAyB,SAAQ,6BAI5C;CAAG;AAEL,MAAM,WAAW,aACf,SAAQ,kBAAkB,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;IAC3E,gBAAgB,EAAE,CAChB,WAAW,EAAE,sBAAsB,EACnC,UAAU,EAAE,oBAAoB,EAChC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,EACzC,aAAa,EAAE,wBAAwB,KACpC,uBAAuB,CAAC;IAE7B,UAAU,EAAE,CACV,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,0BAA0B,EACxC,oBAAoB,EAAE,oBAAoB,EAC1C,gBAAgB,EAAE,gBAAgB,KAC/B,uBAAuB,CAAC;IAE7B,KAAK,EAAE,CACL,WAAW,EAAE,sBAAsB,EACnC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,KACrB,uBAAuB,CAAC;CAC9B"}
@@ -1,22 +1,40 @@
1
- import { Field, Struct } from "o1js";
2
- import { ProtocolTransaction } from "../../model/transaction/ProtocolTransaction";
1
+ import { Bool, Field, Signature, Struct } from "o1js";
2
+ import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
3
3
  import { NetworkState } from "../../model/network/NetworkState";
4
- import { BlockTransactionPosition } from "./BlockTransactionPosition";
5
4
  export class BlockProverPublicInput extends Struct({
6
5
  transactionsHash: Field,
7
6
  stateRoot: Field,
8
7
  networkStateHash: Field,
8
+ blockHashRoot: Field,
9
+ eternalTransactionsHash: Field,
10
+ incomingMessagesHash: Field,
9
11
  }) {
10
12
  }
11
13
  export class BlockProverPublicOutput extends Struct({
12
14
  transactionsHash: Field,
13
15
  stateRoot: Field,
14
16
  networkStateHash: Field,
17
+ blockHashRoot: Field,
18
+ eternalTransactionsHash: Field,
19
+ incomingMessagesHash: Field,
20
+ closed: Bool,
21
+ blockNumber: Field,
15
22
  }) {
23
+ equals(input, closed, blockNumber) {
24
+ const output2 = BlockProverPublicOutput.toFields({
25
+ ...input,
26
+ closed,
27
+ blockNumber,
28
+ });
29
+ const output1 = BlockProverPublicOutput.toFields(this);
30
+ return output1
31
+ .map((value1, index) => value1.equals(output2[index]))
32
+ .reduce((a, b) => a.and(b));
33
+ }
16
34
  }
17
35
  export class BlockProverExecutionData extends Struct({
18
- transaction: ProtocolTransaction,
36
+ transaction: RuntimeTransaction,
37
+ signature: Signature,
19
38
  networkState: NetworkState,
20
- transactionPosition: BlockTransactionPosition,
21
39
  }) {
22
40
  }