@proto-kit/protocol 0.1.1-develop.340 → 0.1.1-develop.455

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 (110) hide show
  1. package/dist/blockmodules/AccountStateModule.d.ts +1 -1
  2. package/dist/blockmodules/AccountStateModule.d.ts.map +1 -1
  3. package/dist/blockmodules/BlockHeightHook.d.ts +7 -0
  4. package/dist/blockmodules/BlockHeightHook.d.ts.map +1 -0
  5. package/dist/blockmodules/BlockHeightHook.js +16 -0
  6. package/dist/blockmodules/NoopBlockHook.d.ts +7 -0
  7. package/dist/blockmodules/NoopBlockHook.d.ts.map +1 -0
  8. package/dist/blockmodules/NoopBlockHook.js +9 -0
  9. package/dist/blockmodules/NoopTransactionHook.d.ts +1 -1
  10. package/dist/blockmodules/NoopTransactionHook.d.ts.map +1 -1
  11. package/dist/blockmodules/NoopTransactionHook.js +1 -2
  12. package/dist/hooks/AccountStateHook.d.ts +38 -0
  13. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  14. package/dist/hooks/AccountStateHook.js +36 -0
  15. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  16. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  17. package/dist/hooks/BlockHeightHook.js +14 -0
  18. package/dist/hooks/NoopBlockHook.d.ts +7 -0
  19. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  20. package/dist/hooks/NoopBlockHook.js +9 -0
  21. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  22. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  23. package/dist/hooks/NoopTransactionHook.js +4 -0
  24. package/dist/hooks/TransactionFeeHook.d.ts +16 -0
  25. package/dist/hooks/TransactionFeeHook.d.ts.map +1 -0
  26. package/dist/hooks/TransactionFeeHook.js +39 -0
  27. package/dist/index.d.ts +4 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +4 -4
  30. package/dist/model/Option.d.ts +29 -22
  31. package/dist/model/Option.d.ts.map +1 -1
  32. package/dist/model/Option.js +51 -45
  33. package/dist/model/StateTransition.d.ts +4 -2
  34. package/dist/model/StateTransition.d.ts.map +1 -1
  35. package/dist/model/StateTransition.js +2 -2
  36. package/dist/model/network/NetworkState.d.ts +1 -40
  37. package/dist/model/network/NetworkState.d.ts.map +1 -1
  38. package/dist/model/network/NetworkState.js +9 -10
  39. package/dist/protocol/Protocol.d.ts +4 -18
  40. package/dist/protocol/Protocol.d.ts.map +1 -1
  41. package/dist/protocol/Protocol.js +20 -9
  42. package/dist/protocol/ProtocolModule.d.ts +2 -2
  43. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  44. package/dist/protocol/ProtocolModule.js +1 -1
  45. package/dist/protocol/ProvableBlockHook.d.ts +16 -0
  46. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  47. package/dist/protocol/ProvableBlockHook.js +4 -0
  48. package/dist/protocol/ProvableTransactionHook.d.ts +2 -1
  49. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
  50. package/dist/protocol/TransitioningProtocolModule.d.ts +4 -0
  51. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -1
  52. package/dist/protocol/TransitioningProtocolModule.js +4 -0
  53. package/dist/prover/block/BlockProvable.d.ts +21 -6
  54. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  55. package/dist/prover/block/BlockProvable.js +3 -1
  56. package/dist/prover/block/BlockProver.d.ts +9 -4
  57. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  58. package/dist/prover/block/BlockProver.js +66 -16
  59. package/dist/prover/block/BlockTransactionPosition.d.ts +36 -0
  60. package/dist/prover/block/BlockTransactionPosition.d.ts.map +1 -0
  61. package/dist/prover/block/BlockTransactionPosition.js +25 -0
  62. package/dist/prover/statetransition/StateTransitionProver.d.ts +1 -1
  63. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  64. package/dist/prover/statetransition/StateTransitionProver.js +4 -5
  65. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +3 -3
  66. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +1 -1
  67. package/dist/prover/statetransition/StateTransitionWitnessProvider.js +2 -2
  68. package/dist/state/State.d.ts +8 -1
  69. package/dist/state/State.d.ts.map +1 -1
  70. package/dist/state/State.js +11 -4
  71. package/dist/state/StateServiceProvider.d.ts +0 -2
  72. package/dist/state/StateServiceProvider.d.ts.map +1 -1
  73. package/dist/state/StateServiceProvider.js +5 -17
  74. package/package.json +3 -2
  75. package/src/blockmodules/AccountStateModule.ts +2 -2
  76. package/src/blockmodules/BlockHeightHook.ts +22 -0
  77. package/src/blockmodules/NoopBlockHook.ts +16 -0
  78. package/src/blockmodules/NoopTransactionHook.ts +3 -4
  79. package/src/index.ts +4 -4
  80. package/src/model/Option.ts +71 -56
  81. package/src/model/StateTransition.ts +2 -2
  82. package/src/model/network/NetworkState.ts +9 -9
  83. package/src/protocol/Protocol.ts +33 -32
  84. package/src/protocol/ProtocolModule.ts +3 -3
  85. package/src/protocol/ProvableBlockHook.ts +22 -0
  86. package/src/protocol/ProvableTransactionHook.ts +4 -1
  87. package/src/protocol/TransitioningProtocolModule.ts +4 -0
  88. package/src/prover/block/BlockProvable.ts +4 -2
  89. package/src/prover/block/BlockProver.ts +134 -21
  90. package/src/prover/block/BlockTransactionPosition.ts +34 -0
  91. package/src/prover/statetransition/StateTransitionProver.ts +6 -13
  92. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +4 -5
  93. package/src/state/State.ts +11 -4
  94. package/src/state/StateServiceProvider.ts +2 -10
  95. package/test/Option.test.ts +64 -0
  96. package/test/StateTransition.test.ts +1 -1
  97. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -11
  98. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
  99. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -12
  100. package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
  101. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
  102. package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
  103. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -132
  104. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  105. package/dist/utils/merkletree/RollupMerkleTree.js +0 -251
  106. package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -17
  107. package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
  108. package/src/utils/merkletree/RollupMerkleTree.ts +0 -275
  109. package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
  110. package/test/utils/MerkleTree.test.ts +0 -82
@@ -27,78 +27,39 @@ declare const CurrentBlock_base: (new (value: {
27
27
  };
28
28
  export declare class CurrentBlock extends CurrentBlock_base {
29
29
  }
30
- declare const PreviousBlock_base: (new (value: {
31
- rootHash: import("o1js/dist/node/lib/field").Field;
32
- }) => {
33
- rootHash: import("o1js/dist/node/lib/field").Field;
34
- }) & {
35
- _isStruct: true;
36
- } & import("o1js/dist/node/snarky").ProvablePure<{
37
- rootHash: import("o1js/dist/node/lib/field").Field;
38
- }> & {
39
- toInput: (x: {
40
- rootHash: import("o1js/dist/node/lib/field").Field;
41
- }) => {
42
- fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
43
- packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
44
- };
45
- toJSON: (x: {
46
- rootHash: import("o1js/dist/node/lib/field").Field;
47
- }) => {
48
- rootHash: string;
49
- };
50
- fromJSON: (x: {
51
- rootHash: string;
52
- }) => {
53
- rootHash: import("o1js/dist/node/lib/field").Field;
54
- };
55
- };
56
- export declare class PreviousBlock extends PreviousBlock_base {
57
- }
58
30
  declare const NetworkState_base: (new (value: {
59
31
  block: CurrentBlock;
60
- previous: PreviousBlock;
61
32
  }) => {
62
33
  block: CurrentBlock;
63
- previous: PreviousBlock;
64
34
  }) & {
65
35
  _isStruct: true;
66
36
  } & import("o1js/dist/node/snarky").ProvablePure<{
67
37
  block: CurrentBlock;
68
- previous: PreviousBlock;
69
38
  }> & {
70
39
  toInput: (x: {
71
40
  block: CurrentBlock;
72
- previous: PreviousBlock;
73
41
  }) => {
74
42
  fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
75
43
  packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
76
44
  };
77
45
  toJSON: (x: {
78
46
  block: CurrentBlock;
79
- previous: PreviousBlock;
80
47
  }) => {
81
48
  block: {
82
49
  height: string;
83
50
  };
84
- previous: {
85
- rootHash: string;
86
- };
87
51
  };
88
52
  fromJSON: (x: {
89
53
  block: {
90
54
  height: string;
91
55
  };
92
- previous: {
93
- rootHash: string;
94
- };
95
56
  }) => {
96
57
  block: CurrentBlock;
97
- previous: PreviousBlock;
98
58
  };
99
59
  };
100
60
  export declare class NetworkState extends NetworkState_base {
101
61
  hash(): Field;
62
+ static empty(): NetworkState;
102
63
  }
103
64
  export {};
104
65
  //# sourceMappingURL=NetworkState.d.ts.map
@@ -1 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvD,qBAAa,YAAa,SAAQ,iBAEhC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,aAAc,SAAQ,kBAEjC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,YAAa,SAAQ,iBAGhC;IACO,IAAI,IAAI,KAAK;CAMrB"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvD,qBAAa,YAAa,SAAQ,iBAEhC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,YAAa,SAAQ,iBAEhC;IACO,IAAI,IAAI,KAAK;WAIN,KAAK;CAOpB"}
@@ -1,20 +1,19 @@
1
- import { Field, Poseidon, Struct, UInt64 } from "o1js";
1
+ import { Poseidon, Struct, UInt64 } from "o1js";
2
2
  export class CurrentBlock extends Struct({
3
3
  height: UInt64,
4
4
  }) {
5
5
  }
6
- export class PreviousBlock extends Struct({
7
- rootHash: Field,
8
- }) {
9
- }
10
6
  export class NetworkState extends Struct({
11
7
  block: CurrentBlock,
12
- previous: PreviousBlock,
13
8
  }) {
14
9
  hash() {
15
- return Poseidon.hash([
16
- ...CurrentBlock.toFields(this.block),
17
- ...PreviousBlock.toFields(this.previous),
18
- ]);
10
+ return Poseidon.hash(CurrentBlock.toFields(this.block));
11
+ }
12
+ static empty() {
13
+ return new NetworkState({
14
+ block: {
15
+ height: UInt64.zero,
16
+ },
17
+ });
19
18
  }
20
19
  }
@@ -1,18 +1,16 @@
1
1
  import { AreProofsEnabled, ChildContainerProvider, ModuleContainer, ModulesConfig, ModulesRecord, StringKeyOf, TypedClass } from "@proto-kit/common";
2
2
  import { DependencyContainer } from "tsyringe";
3
3
  import { BlockProvable } from "../prover/block/BlockProvable";
4
- import { StateTransitionProver } from "../prover/statetransition/StateTransitionProver";
5
4
  import { StateTransitionProvable } from "../prover/statetransition/StateTransitionProvable";
6
- import { BlockProver } from "../prover/block/BlockProver";
7
5
  import { StateServiceProvider } from "../state/StateServiceProvider";
8
6
  import { StateService } from "../state/StateService";
9
7
  import { ProtocolModule } from "./ProtocolModule";
10
8
  import { ProtocolEnvironment } from "./ProtocolEnvironment";
11
9
  import { AccountStateModule } from "../blockmodules/AccountStateModule";
12
10
  export type GenericProtocolModuleRecord = ModulesRecord<TypedClass<ProtocolModule<unknown>>>;
13
- interface BlockProverType extends ProtocolModule<object>, BlockProvable {
11
+ interface BlockProverType extends ProtocolModule, BlockProvable {
14
12
  }
15
- interface StateTransitionProverType extends ProtocolModule<object>, StateTransitionProvable {
13
+ interface StateTransitionProverType extends ProtocolModule, StateTransitionProvable {
16
14
  }
17
15
  export interface ProtocolCustomModulesRecord {
18
16
  BlockProver: TypedClass<BlockProverType>;
@@ -40,20 +38,8 @@ export declare class Protocol<Modules extends ProtocolModulesRecord> extends Mod
40
38
  create(childContainerProvider: ChildContainerProvider): void;
41
39
  }
42
40
  export declare const VanillaProtocol: {
43
- create(): TypedClass<Protocol<{
44
- StateTransitionProver: typeof StateTransitionProver;
45
- BlockProver: typeof BlockProver;
46
- AccountState: typeof AccountStateModule;
47
- }>>;
48
- from<AdditonalModules extends GenericProtocolModuleRecord>(additionalModules: AdditonalModules, config: ModulesConfig<AdditonalModules & {
49
- StateTransitionProver: typeof StateTransitionProver;
50
- BlockProver: typeof BlockProver;
51
- AccountState: typeof AccountStateModule;
52
- }>): TypedClass<Protocol<AdditonalModules & {
53
- StateTransitionProver: typeof StateTransitionProver;
54
- BlockProver: typeof BlockProver;
55
- AccountState: typeof AccountStateModule;
56
- }>>;
41
+ create(): TypedClass<Protocol<ProtocolModulesRecord>>;
42
+ from<AdditonalModules extends GenericProtocolModuleRecord>(additionalModules: AdditonalModules): TypedClass<Protocol<ProtocolModulesRecord>>;
57
43
  };
58
44
  export {};
59
45
  //# 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;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,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;AAExE,MAAM,MAAM,2BAA2B,GAAG,aAAa,CACrD,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CACpC,CAAC;AAEF,UAAU,eAAgB,SAAQ,cAAc,CAAC,MAAM,CAAC,EAAE,aAAa;CAAG;AAE1E,UAAU,yBACR,SAAQ,cAAc,CAAC,MAAM,CAAC,EAC5B,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;CA0B7D;AAED,eAAO,MAAM,eAAe;;+BAwBG,4BAA4B;qBACtC,kBAAkB;sBACjB,yBAAyB;;;+BAVhB,4BAA4B;qBACtC,kBAAkB;sBACjB,yBAAyB;;+BAMhB,4BAA4B;qBACtC,kBAAkB;sBACjB,yBAAyB;;CAe9C,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,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"}
@@ -5,6 +5,13 @@ import { BlockProver } from "../prover/block/BlockProver";
5
5
  import { ProvableTransactionHook } from "./ProvableTransactionHook";
6
6
  import { NoopTransactionHook } from "../blockmodules/NoopTransactionHook";
7
7
  import { AccountStateModule } from "../blockmodules/AccountStateModule";
8
+ import { ProvableBlockHook } from "./ProvableBlockHook";
9
+ import { NoopBlockHook } from "../blockmodules/NoopBlockHook";
10
+ import { BlockHeightHook } from "../blockmodules/BlockHeightHook";
11
+ const PROTOCOL_INJECTION_TOKENS = {
12
+ ProvableTransactionHook: "ProvableTransactionHook",
13
+ ProvableBlockHook: "ProvableBlockHook",
14
+ };
8
15
  export class Protocol extends ModuleContainer {
9
16
  // .from() to create Protocol
10
17
  static from(modules) {
@@ -54,35 +61,39 @@ export class Protocol extends ModuleContainer {
54
61
  // Register the BlockModules seperately since we need to
55
62
  // inject them differently later
56
63
  let atLeastOneTransactionHookRegistered = false;
64
+ let atLeastOneBlockHookRegistered = false;
57
65
  Object.entries(this.definition.modules).forEach(([key, value]) => {
58
66
  if (Object.prototype.isPrototypeOf.call(ProvableTransactionHook, value)) {
59
- this.container.register("ProvableTransactionHook", { useToken: key }, { lifecycle: Lifecycle.ContainerScoped });
67
+ this.container.register(PROTOCOL_INJECTION_TOKENS.ProvableTransactionHook, { useToken: key }, { lifecycle: Lifecycle.ContainerScoped });
60
68
  atLeastOneTransactionHookRegistered = true;
61
69
  }
70
+ if (Object.prototype.isPrototypeOf.call(ProvableBlockHook, value)) {
71
+ this.container.register(PROTOCOL_INJECTION_TOKENS.ProvableBlockHook, { useToken: key }, { lifecycle: Lifecycle.ContainerScoped });
72
+ atLeastOneBlockHookRegistered = true;
73
+ }
62
74
  });
63
75
  // We need this so that tsyringe doesn't throw when no hooks are registered
64
76
  if (!atLeastOneTransactionHookRegistered) {
65
- this.container.register("ProvableTransactionHook", { useClass: NoopTransactionHook }, { lifecycle: Lifecycle.ContainerScoped });
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 });
66
81
  }
67
82
  }
68
83
  }
69
84
  export const VanillaProtocol = {
70
85
  create() {
71
- return VanillaProtocol.from({}, {
72
- BlockProver: {},
73
- StateTransitionProver: {},
74
- AccountState: {},
75
- });
86
+ return VanillaProtocol.from({});
76
87
  },
77
- from(additionalModules, config) {
88
+ from(additionalModules) {
78
89
  return Protocol.from({
79
90
  modules: {
80
91
  StateTransitionProver,
81
92
  BlockProver,
82
93
  AccountState: AccountStateModule,
94
+ BlockHeight: BlockHeightHook,
83
95
  ...additionalModules,
84
96
  },
85
- config,
86
97
  });
87
98
  },
88
99
  };
@@ -1,6 +1,6 @@
1
- import { AreProofsEnabled, ChildContainerProvider, ConfigurableModule } from "@proto-kit/common";
1
+ import { AreProofsEnabled, ChildContainerProvider, ConfigurableModule, NoConfig } from "@proto-kit/common";
2
2
  import { ProtocolEnvironment } from "./ProtocolEnvironment";
3
- export declare abstract class ProtocolModule<Config> extends ConfigurableModule<Config> {
3
+ export declare abstract class ProtocolModule<Config = NoConfig> extends ConfigurableModule<Config> {
4
4
  protocol?: ProtocolEnvironment;
5
5
  get appChain(): AreProofsEnabled | undefined;
6
6
  create(childContainerProvider: ChildContainerProvider): void;
@@ -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,EAEnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,8BAAsB,cAAc,CAClC,MAAM,CACN,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,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,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();
@@ -0,0 +1,16 @@
1
+ import type { BlockProverState } from "../prover/block/BlockProver";
2
+ import { NetworkState } from "../model/network/NetworkState";
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
+ export declare abstract class ProvableBlockHook<Config> extends TransitioningProtocolModule<Config> {
13
+ abstract beforeBlock(blockData: BeforeBlockParameters): NetworkState;
14
+ abstract afterBlock(blockData: AfterBlockParameters): NetworkState;
15
+ }
16
+ //# sourceMappingURL=ProvableBlockHook.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
2
+ // Purpose is to validate transition from -> to network state
3
+ export class ProvableBlockHook extends TransitioningProtocolModule {
4
+ }
@@ -1,6 +1,7 @@
1
1
  import { BlockProverExecutionData } from "../prover/block/BlockProvable";
2
2
  import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
3
- export declare abstract class ProvableTransactionHook<Config> extends TransitioningProtocolModule<Config> {
3
+ import { NoConfig } from "@proto-kit/common";
4
+ export declare abstract class ProvableTransactionHook<Config = NoConfig> extends TransitioningProtocolModule<Config> {
4
5
  abstract onTransaction(executionData: BlockProverExecutionData): void;
5
6
  }
6
7
  //# sourceMappingURL=ProvableTransactionHook.d.ts.map
@@ -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;AAE5E,8BAAsB,uBAAuB,CAAC,MAAM,CAAE,SAAQ,2BAA2B,CAAC,MAAM,CAAC;aAC/E,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,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,4 +1,8 @@
1
1
  import { ProtocolModule } from "./ProtocolModule";
2
+ /**
3
+ * A Protocolmodule that enables it's implementing module to access to
4
+ * StateTransitions and state
5
+ */
2
6
  export declare abstract class TransitioningProtocolModule<Config> extends ProtocolModule<Config> {
3
7
  name?: string;
4
8
  }
@@ -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,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;;;GAGG;AACH,8BAAsB,2BAA2B,CAC/C,MAAM,CACN,SAAQ,cAAc,CAAC,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -1,3 +1,7 @@
1
1
  import { ProtocolModule } from "./ProtocolModule";
2
+ /**
3
+ * A Protocolmodule that enables it's implementing module to access to
4
+ * StateTransitions and state
5
+ */
2
6
  export class TransitioningProtocolModule extends ProtocolModule {
3
7
  }
@@ -4,6 +4,7 @@ import { StateTransitionProof } from "../statetransition/StateTransitionProvable
4
4
  import { MethodPublicOutput } from "../../model/MethodPublicOutput";
5
5
  import { ProtocolTransaction } from "../../model/transaction/ProtocolTransaction";
6
6
  import { NetworkState } from "../../model/network/NetworkState";
7
+ import { BlockTransactionPosition } from "./BlockTransactionPosition";
7
8
  declare const BlockProverPublicInput_base: (new (value: {
8
9
  transactionsHash: import("o1js/dist/node/lib/field").Field;
9
10
  stateRoot: import("o1js/dist/node/lib/field").Field;
@@ -51,18 +52,22 @@ export declare class BlockProverPublicInput extends BlockProverPublicInput_base
51
52
  declare const BlockProverPublicOutput_base: (new (value: {
52
53
  transactionsHash: import("o1js/dist/node/lib/field").Field;
53
54
  stateRoot: import("o1js/dist/node/lib/field").Field;
55
+ networkStateHash: import("o1js/dist/node/lib/field").Field;
54
56
  }) => {
55
57
  transactionsHash: import("o1js/dist/node/lib/field").Field;
56
58
  stateRoot: import("o1js/dist/node/lib/field").Field;
59
+ networkStateHash: import("o1js/dist/node/lib/field").Field;
57
60
  }) & {
58
61
  _isStruct: true;
59
62
  } & import("o1js/dist/node/snarky").ProvablePure<{
60
63
  transactionsHash: import("o1js/dist/node/lib/field").Field;
61
64
  stateRoot: import("o1js/dist/node/lib/field").Field;
65
+ networkStateHash: import("o1js/dist/node/lib/field").Field;
62
66
  }> & {
63
67
  toInput: (x: {
64
68
  transactionsHash: import("o1js/dist/node/lib/field").Field;
65
69
  stateRoot: import("o1js/dist/node/lib/field").Field;
70
+ networkStateHash: import("o1js/dist/node/lib/field").Field;
66
71
  }) => {
67
72
  fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
68
73
  packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
@@ -70,16 +75,20 @@ declare const BlockProverPublicOutput_base: (new (value: {
70
75
  toJSON: (x: {
71
76
  transactionsHash: import("o1js/dist/node/lib/field").Field;
72
77
  stateRoot: import("o1js/dist/node/lib/field").Field;
78
+ networkStateHash: import("o1js/dist/node/lib/field").Field;
73
79
  }) => {
74
80
  transactionsHash: string;
75
81
  stateRoot: string;
82
+ networkStateHash: string;
76
83
  };
77
84
  fromJSON: (x: {
78
85
  transactionsHash: string;
79
86
  stateRoot: string;
87
+ networkStateHash: string;
80
88
  }) => {
81
89
  transactionsHash: import("o1js/dist/node/lib/field").Field;
82
90
  stateRoot: import("o1js/dist/node/lib/field").Field;
91
+ networkStateHash: import("o1js/dist/node/lib/field").Field;
83
92
  };
84
93
  };
85
94
  export declare class BlockProverPublicOutput extends BlockProverPublicOutput_base {
@@ -88,18 +97,22 @@ export type BlockProverProof = Proof<BlockProverPublicInput, BlockProverPublicOu
88
97
  declare const BlockProverExecutionData_base: (new (value: {
89
98
  transaction: ProtocolTransaction;
90
99
  networkState: NetworkState;
100
+ transactionPosition: BlockTransactionPosition;
91
101
  }) => {
92
102
  transaction: ProtocolTransaction;
93
103
  networkState: NetworkState;
104
+ transactionPosition: BlockTransactionPosition;
94
105
  }) & {
95
106
  _isStruct: true;
96
107
  } & import("o1js/dist/node/snarky").ProvablePure<{
97
108
  transaction: ProtocolTransaction;
98
109
  networkState: NetworkState;
110
+ transactionPosition: BlockTransactionPosition;
99
111
  }> & {
100
112
  toInput: (x: {
101
113
  transaction: ProtocolTransaction;
102
114
  networkState: NetworkState;
115
+ transactionPosition: BlockTransactionPosition;
103
116
  }) => {
104
117
  fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
105
118
  packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
@@ -107,6 +120,7 @@ declare const BlockProverExecutionData_base: (new (value: {
107
120
  toJSON: (x: {
108
121
  transaction: ProtocolTransaction;
109
122
  networkState: NetworkState;
123
+ transactionPosition: BlockTransactionPosition;
110
124
  }) => {
111
125
  transaction: {
112
126
  methodId: string;
@@ -119,9 +133,9 @@ declare const BlockProverExecutionData_base: (new (value: {
119
133
  block: {
120
134
  height: string;
121
135
  };
122
- previous: {
123
- rootHash: string;
124
- };
136
+ };
137
+ transactionPosition: {
138
+ type: string;
125
139
  };
126
140
  };
127
141
  fromJSON: (x: {
@@ -136,13 +150,14 @@ declare const BlockProverExecutionData_base: (new (value: {
136
150
  block: {
137
151
  height: string;
138
152
  };
139
- previous: {
140
- rootHash: string;
141
- };
153
+ };
154
+ transactionPosition: {
155
+ type: string;
142
156
  };
143
157
  }) => {
144
158
  transaction: ProtocolTransaction;
145
159
  networkState: NetworkState;
160
+ transactionPosition: BlockTransactionPosition;
146
161
  };
147
162
  };
148
163
  export declare class BlockProverExecutionData extends BlockProverExecutionData_base {
@@ -1 +1 @@
1
- {"version":3,"file":"BlockProvable.d.ts","sourceRoot":"","sources":["../../../src/prover/block/BlockProvable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,EAAU,MAAM,MAAM,CAAC;AAC5C,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhE,qBAAa,sBAAuB,SAAQ,2BAI1C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAG3C;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,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,6 +1,7 @@
1
1
  import { Field, Struct } from "o1js";
2
2
  import { ProtocolTransaction } from "../../model/transaction/ProtocolTransaction";
3
3
  import { NetworkState } from "../../model/network/NetworkState";
4
+ import { BlockTransactionPosition } from "./BlockTransactionPosition";
4
5
  export class BlockProverPublicInput extends Struct({
5
6
  transactionsHash: Field,
6
7
  stateRoot: Field,
@@ -10,11 +11,12 @@ export class BlockProverPublicInput extends Struct({
10
11
  export class BlockProverPublicOutput extends Struct({
11
12
  transactionsHash: Field,
12
13
  stateRoot: Field,
14
+ networkStateHash: Field,
13
15
  }) {
14
16
  }
15
17
  export class BlockProverExecutionData extends Struct({
16
18
  transaction: ProtocolTransaction,
17
19
  networkState: NetworkState,
18
- // accountstate
20
+ transactionPosition: BlockTransactionPosition,
19
21
  }) {
20
22
  }
@@ -5,6 +5,7 @@ import { ProtocolModule } from "../../protocol/ProtocolModule";
5
5
  import { StateTransitionProof, StateTransitionProverPublicInput, StateTransitionProverPublicOutput } from "../statetransition/StateTransitionProvable";
6
6
  import { BlockProvable, BlockProverExecutionData, BlockProverProof, BlockProverPublicInput, BlockProverPublicOutput } from "./BlockProvable";
7
7
  import { ProvableTransactionHook } from "../../protocol/ProvableTransactionHook";
8
+ import { ProvableBlockHook } from "../../protocol/ProvableBlockHook";
8
9
  export interface BlockProverState {
9
10
  stateRoot: Field;
10
11
  /**
@@ -22,8 +23,9 @@ export declare class BlockProverProgrammable extends ZkProgrammable<BlockProverP
22
23
  private readonly prover;
23
24
  readonly stateTransitionProver: ZkProgrammable<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>;
24
25
  readonly runtime: ZkProgrammable<undefined, MethodPublicOutput>;
25
- private readonly blockModules;
26
- constructor(prover: BlockProver, stateTransitionProver: ZkProgrammable<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>, runtime: ZkProgrammable<undefined, MethodPublicOutput>, blockModules: ProvableTransactionHook<unknown>[]);
26
+ private readonly transactionHooks;
27
+ private readonly blockHooks;
28
+ constructor(prover: BlockProver, stateTransitionProver: ZkProgrammable<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>, runtime: ZkProgrammable<undefined, MethodPublicOutput>, transactionHooks: ProvableTransactionHook<unknown>[], blockHooks: ProvableBlockHook<unknown>[]);
27
29
  get appChain(): AreProofsEnabled | undefined;
28
30
  /**
29
31
  * Applies and checks the two proofs and applies the corresponding state
@@ -37,6 +39,9 @@ export declare class BlockProverProgrammable extends ZkProgrammable<BlockProverP
37
39
  */
38
40
  applyTransaction(state: BlockProverState, stateTransitionProof: Proof<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>, appProof: Proof<void, MethodPublicOutput>, executionData: BlockProverExecutionData): BlockProverState;
39
41
  assertProtocolTransitions(stateTransitionProof: Proof<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>, executionData: BlockProverExecutionData): void;
42
+ private getBeforeBlockNetworkState;
43
+ private getAfterBlockNetworkState;
44
+ private addTransactionToBundle;
40
45
  proveTransaction(publicInput: BlockProverPublicInput, stateProof: StateTransitionProof, appProof: Proof<void, MethodPublicOutput>, executionData: BlockProverExecutionData): BlockProverPublicOutput;
41
46
  merge(publicInput: BlockProverPublicInput, proof1: BlockProverProof, proof2: BlockProverProof): BlockProverPublicOutput;
42
47
  /**
@@ -51,11 +56,11 @@ export declare class BlockProverProgrammable extends ZkProgrammable<BlockProverP
51
56
  * a StateTransitionProof into a single BlockProof, that can
52
57
  * then be merged to be committed to the base-layer contract
53
58
  */
54
- export declare class BlockProver extends ProtocolModule<object> implements BlockProvable {
59
+ export declare class BlockProver extends ProtocolModule implements BlockProvable {
55
60
  readonly stateTransitionProver: WithZkProgrammable<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>;
56
61
  readonly runtime: WithZkProgrammable<undefined, MethodPublicOutput>;
57
62
  zkProgrammable: BlockProverProgrammable;
58
- constructor(stateTransitionProver: WithZkProgrammable<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>, runtime: WithZkProgrammable<undefined, MethodPublicOutput>, transactionHooks: ProvableTransactionHook<unknown>[]);
63
+ constructor(stateTransitionProver: WithZkProgrammable<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>, runtime: WithZkProgrammable<undefined, MethodPublicOutput>, transactionHooks: ProvableTransactionHook<unknown>[], blockHooks: ProvableBlockHook<unknown>[]);
59
64
  merge(publicInput: BlockProverPublicInput, proof1: BlockProverProof, proof2: BlockProverProof): BlockProverPublicOutput;
60
65
  proveTransaction(publicInput: BlockProverPublicInput, stateProof: StateTransitionProof, appProof: Proof<void, MethodPublicOutput>, executionData: BlockProverExecutionData): BlockProverPublicOutput;
61
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BlockProver.d.ts","sourceRoot":"","sources":["../../../src/prover/block/BlockProver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BlockProver.d.ts","sourceRoot":"","sources":["../../../src/prover/block/BlockProver.ts"],"names":[],"mappings":"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"}