@proto-kit/protocol 0.1.1-develop.1316 → 0.1.1-develop.1343

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 (145) hide show
  1. package/dist/hooks/AccountStateHook.d.ts +3 -3
  2. package/dist/hooks/AccountStateHook.d.ts.map +1 -1
  3. package/dist/hooks/AccountStateHook.js +6 -2
  4. package/dist/hooks/AccountStateHook.js.map +1 -1
  5. package/dist/hooks/LastStateRootBlockHook.d.ts +3 -4
  6. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -1
  7. package/dist/hooks/LastStateRootBlockHook.js +4 -4
  8. package/dist/hooks/LastStateRootBlockHook.js.map +1 -1
  9. package/dist/hooks/NoopBlockHook.d.ts +3 -4
  10. package/dist/hooks/NoopBlockHook.d.ts.map +1 -1
  11. package/dist/hooks/NoopBlockHook.js +1 -1
  12. package/dist/hooks/NoopBlockHook.js.map +1 -1
  13. package/dist/hooks/NoopTransactionHook.d.ts +2 -2
  14. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -1
  15. package/dist/hooks/NoopTransactionHook.js +4 -1
  16. package/dist/hooks/NoopTransactionHook.js.map +1 -1
  17. package/dist/index.d.ts +6 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +6 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/model/AppliedStateTransitionBatch.d.ts +114 -0
  22. package/dist/model/AppliedStateTransitionBatch.d.ts.map +1 -0
  23. package/dist/model/AppliedStateTransitionBatch.js +16 -0
  24. package/dist/model/AppliedStateTransitionBatch.js.map +1 -0
  25. package/dist/model/StateTransition.d.ts +1 -0
  26. package/dist/model/StateTransition.d.ts.map +1 -1
  27. package/dist/model/StateTransition.js +5 -0
  28. package/dist/model/StateTransition.js.map +1 -1
  29. package/dist/model/StateTransitionProvableBatch.d.ts +249 -97
  30. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  31. package/dist/model/StateTransitionProvableBatch.js +72 -65
  32. package/dist/model/StateTransitionProvableBatch.js.map +1 -1
  33. package/dist/model/transaction/RuntimeTransaction.d.ts +1 -0
  34. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
  35. package/dist/model/transaction/RuntimeTransaction.js +3 -0
  36. package/dist/model/transaction/RuntimeTransaction.js.map +1 -1
  37. package/dist/protocol/ProvableBlockHook.d.ts +13 -3
  38. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -1
  39. package/dist/protocol/ProvableBlockHook.js +16 -0
  40. package/dist/protocol/ProvableBlockHook.js.map +1 -1
  41. package/dist/protocol/ProvableTransactionHook.d.ts +29 -2
  42. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
  43. package/dist/protocol/ProvableTransactionHook.js +9 -0
  44. package/dist/protocol/ProvableTransactionHook.js.map +1 -1
  45. package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
  46. package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
  47. package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
  48. package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
  49. package/dist/{utils → prover/accumulators}/StateTransitionReductionList.d.ts +3 -2
  50. package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
  51. package/dist/{utils → prover/accumulators}/StateTransitionReductionList.js +6 -3
  52. package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
  53. package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
  54. package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
  55. package/dist/prover/accumulators/TransactionHashList.js +8 -0
  56. package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
  57. package/dist/prover/accumulators/WitnessedRootHashList.d.ts +137 -0
  58. package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
  59. package/dist/prover/accumulators/WitnessedRootHashList.js +50 -0
  60. package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
  61. package/dist/prover/block/BlockProvable.d.ts +579 -35
  62. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  63. package/dist/prover/block/BlockProvable.js +55 -3
  64. package/dist/prover/block/BlockProvable.js.map +1 -1
  65. package/dist/prover/block/BlockProver.d.ts +52 -50
  66. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  67. package/dist/prover/block/BlockProver.js +289 -209
  68. package/dist/prover/block/BlockProver.js.map +1 -1
  69. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +55 -13
  70. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -1
  71. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +11 -3
  72. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -1
  73. package/dist/prover/statetransition/StateTransitionProvable.d.ts +107 -106
  74. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  75. package/dist/prover/statetransition/StateTransitionProvable.js +8 -8
  76. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -1
  77. package/dist/prover/statetransition/StateTransitionProver.d.ts +14 -11
  78. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  79. package/dist/prover/statetransition/StateTransitionProver.js +116 -62
  80. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -1
  81. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +1 -1
  82. package/dist/settlement/contracts/DispatchSmartContract.d.ts +1 -1
  83. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -1
  84. package/dist/settlement/contracts/SettlementSmartContract.js +1 -0
  85. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -1
  86. package/dist/state/assert/assert.d.ts.map +1 -1
  87. package/dist/state/assert/assert.js +5 -3
  88. package/dist/state/assert/assert.js.map +1 -1
  89. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +3 -3
  90. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
  91. package/dist/state/context/RuntimeMethodExecutionContext.js +7 -4
  92. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -1
  93. package/dist/utils/FieldOptions.d.ts +62 -0
  94. package/dist/utils/FieldOptions.d.ts.map +1 -0
  95. package/dist/utils/FieldOptions.js +13 -0
  96. package/dist/utils/FieldOptions.js.map +1 -0
  97. package/dist/utils/ProvableHashList.d.ts +21 -2
  98. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  99. package/dist/utils/ProvableHashList.js +37 -2
  100. package/dist/utils/ProvableHashList.js.map +1 -1
  101. package/dist/utils/ProvableReductionHashList.d.ts +7 -3
  102. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -1
  103. package/dist/utils/ProvableReductionHashList.js +8 -5
  104. package/dist/utils/ProvableReductionHashList.js.map +1 -1
  105. package/dist/utils/utils.d.ts +10 -1
  106. package/dist/utils/utils.d.ts.map +1 -1
  107. package/dist/utils/utils.js +6 -0
  108. package/dist/utils/utils.js.map +1 -1
  109. package/package.json +2 -2
  110. package/src/hooks/AccountStateHook.ts +12 -3
  111. package/src/hooks/LastStateRootBlockHook.ts +7 -8
  112. package/src/hooks/NoopBlockHook.ts +7 -4
  113. package/src/hooks/NoopTransactionHook.ts +5 -2
  114. package/src/index.ts +6 -1
  115. package/src/model/AppliedStateTransitionBatch.ts +16 -0
  116. package/src/model/StateTransition.ts +6 -0
  117. package/src/model/StateTransitionProvableBatch.ts +94 -105
  118. package/src/model/transaction/RuntimeTransaction.ts +4 -0
  119. package/src/protocol/ProvableBlockHook.ts +51 -3
  120. package/src/protocol/ProvableTransactionHook.ts +67 -3
  121. package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
  122. package/src/{utils → prover/accumulators}/StateTransitionReductionList.ts +7 -4
  123. package/src/prover/accumulators/TransactionHashList.ts +9 -0
  124. package/src/prover/accumulators/WitnessedRootHashList.ts +61 -0
  125. package/src/prover/block/BlockProvable.ts +128 -9
  126. package/src/prover/block/BlockProver.ts +531 -383
  127. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +11 -3
  128. package/src/prover/statetransition/StateTransitionProvable.ts +17 -11
  129. package/src/prover/statetransition/StateTransitionProver.ts +219 -144
  130. package/src/settlement/contracts/SettlementSmartContract.ts +4 -0
  131. package/src/state/assert/assert.ts +6 -3
  132. package/src/state/context/RuntimeMethodExecutionContext.ts +15 -7
  133. package/src/utils/FieldOptions.ts +13 -0
  134. package/src/utils/ProvableHashList.ts +77 -2
  135. package/src/utils/ProvableReductionHashList.ts +12 -3
  136. package/src/utils/utils.ts +18 -1
  137. package/test/BlockProver.test.ts +2 -0
  138. package/test/TestingProtocol.ts +5 -0
  139. package/test/model/StateTransitionProvableBatch.test.ts +137 -0
  140. package/test/prover/block/BlockProver.test.ts +18 -0
  141. package/test/prover/statetransition/StateTransitionProver.test.ts +240 -0
  142. package/test/utils/ProvableHashList.test.ts +44 -0
  143. package/test/utils/ProvableReductionHashList.test.ts +1 -1
  144. package/dist/utils/StateTransitionReductionList.d.ts.map +0 -1
  145. package/dist/utils/StateTransitionReductionList.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ // eslint-disable-next-line max-classes-per-file
1
2
  import {
2
3
  Bool,
3
4
  DynamicProof,
@@ -13,23 +14,123 @@ import { StateTransitionProof } from "../statetransition/StateTransitionProvable
13
14
  import { MethodPublicOutput } from "../../model/MethodPublicOutput";
14
15
  import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
15
16
  import { NetworkState } from "../../model/network/NetworkState";
17
+ import { TransactionHashList } from "../accumulators/TransactionHashList";
18
+ import { MinaActionsHashList } from "../../utils/MinaPrefixedProvableHashList";
19
+ import { AppliedBatchHashList } from "../accumulators/AppliedBatchHashList";
20
+ import {
21
+ WitnessedRootHashList,
22
+ WitnessedRootWitness,
23
+ } from "../accumulators/WitnessedRootHashList";
16
24
 
17
25
  import { BlockHashMerkleTreeWitness } from "./accummulators/BlockHashMerkleTree";
18
26
  import { RuntimeVerificationKeyAttestation } from "./accummulators/RuntimeVerificationKeyTree";
19
27
 
20
- export class BlockProverPublicInput extends Struct({
28
+ // Should be equal to BlockProver.PublicInput
29
+ export interface BlockProverState {
30
+ /**
31
+ * The current state root of the block prover
32
+ */
33
+ stateRoot: Field;
34
+
35
+ /**
36
+ * The current commitment of the transaction-list which
37
+ * will at the end equal the bundle hash
38
+ */
39
+ transactionList: TransactionHashList;
40
+
41
+ /**
42
+ * The network state which gives access to values such as blockHeight
43
+ * This value is the same for the whole batch (L2 block)
44
+ */
45
+ networkState: NetworkState;
46
+
47
+ /**
48
+ * The root of the merkle tree encoding all block hashes,
49
+ * see `BlockHashMerkleTree`
50
+ */
51
+ blockHashRoot: Field;
52
+
53
+ /**
54
+ * A variant of the transactionsHash that is never reset.
55
+ * Thought for usage in the sequence state mempool.
56
+ * In comparison, transactionsHash restarts at 0 for every new block
57
+ */
58
+ eternalTransactionsList: TransactionHashList;
59
+
60
+ pendingSTBatches: AppliedBatchHashList;
61
+
62
+ incomingMessages: MinaActionsHashList;
63
+
64
+ witnessedRoots: WitnessedRootHashList;
65
+
66
+ blockNumber: Field;
67
+ }
68
+
69
+ // TODO Sort and organize public inputs and outputs
70
+ export class BlockProverStateCommitments extends Struct({
21
71
  transactionsHash: Field,
22
72
  stateRoot: Field,
73
+ // Commitment to the list of unprocessed (pending) batches of STs that need to be proven
74
+ pendingSTBatchesHash: Field,
75
+ witnessedRootsHash: Field,
23
76
  networkStateHash: Field,
24
77
  blockHashRoot: Field,
25
78
  eternalTransactionsHash: Field,
26
79
  incomingMessagesHash: Field,
27
80
  blockNumber: Field,
28
- }) {}
81
+ }) {
82
+ public static fromBlockProverState(
83
+ state: BlockProverState
84
+ ): BlockProverStateCommitments {
85
+ return {
86
+ networkStateHash: state.networkState.hash(),
87
+ stateRoot: state.stateRoot,
88
+ blockNumber: state.blockNumber,
89
+ blockHashRoot: state.blockHashRoot,
90
+ pendingSTBatchesHash: state.pendingSTBatches.commitment,
91
+ transactionsHash: state.transactionList.commitment,
92
+ eternalTransactionsHash: state.eternalTransactionsList.commitment,
93
+ incomingMessagesHash: state.incomingMessages.commitment,
94
+ witnessedRootsHash: state.witnessedRoots.commitment,
95
+ };
96
+ }
97
+
98
+ public static toBlockProverState(
99
+ publicInput: BlockProverStateCommitments,
100
+ networkState: NetworkState
101
+ ): BlockProverState {
102
+ publicInput.networkStateHash.assertEquals(
103
+ networkState.hash(),
104
+ "ExecutionData Networkstate doesn't equal public input hash"
105
+ );
106
+
107
+ return {
108
+ networkState,
109
+ stateRoot: publicInput.stateRoot,
110
+ blockHashRoot: publicInput.blockHashRoot,
111
+ transactionList: new TransactionHashList(publicInput.transactionsHash),
112
+ eternalTransactionsList: new TransactionHashList(
113
+ publicInput.eternalTransactionsHash
114
+ ),
115
+ incomingMessages: new MinaActionsHashList(
116
+ publicInput.incomingMessagesHash
117
+ ),
118
+ pendingSTBatches: new AppliedBatchHashList(
119
+ publicInput.pendingSTBatchesHash
120
+ ),
121
+ witnessedRoots: new WitnessedRootHashList(publicInput.witnessedRootsHash),
122
+ blockNumber: publicInput.blockNumber,
123
+ };
124
+ }
125
+ }
126
+
127
+ export class BlockProverPublicInput extends BlockProverStateCommitments {}
29
128
 
30
129
  export class BlockProverPublicOutput extends Struct({
31
130
  transactionsHash: Field,
32
131
  stateRoot: Field,
132
+ pendingSTBatchesHash: Field,
133
+ witnessedRootsHash: Field,
33
134
  networkStateHash: Field,
34
135
  blockHashRoot: Field,
35
136
  eternalTransactionsHash: Field,
@@ -54,10 +155,10 @@ export type BlockProverProof = Proof<
54
155
  BlockProverPublicOutput
55
156
  >;
56
157
 
57
- export class BlockProverExecutionData extends Struct({
158
+ export class BlockProverTransactionArguments extends Struct({
58
159
  transaction: RuntimeTransaction,
59
160
  signature: Signature,
60
- networkState: NetworkState,
161
+ verificationKeyAttestation: RuntimeVerificationKeyAttestation,
61
162
  }) {}
62
163
 
63
164
  export class DynamicRuntimeProof extends DynamicProof<
@@ -72,22 +173,40 @@ export class DynamicRuntimeProof extends DynamicProof<
72
173
  static maxProofsVerified = 0 as const;
73
174
  }
74
175
 
176
+ export class BlockProverSingleTransactionExecutionData extends Struct({
177
+ transaction: BlockProverTransactionArguments,
178
+ networkState: NetworkState,
179
+ }) {}
180
+
181
+ export class BlockProverMultiTransactionExecutionData extends Struct({
182
+ transaction1: BlockProverTransactionArguments,
183
+ transaction2: BlockProverTransactionArguments,
184
+ networkState: NetworkState,
185
+ }) {}
186
+
75
187
  export interface BlockProvable
76
188
  extends WithZkProgrammable<BlockProverPublicInput, BlockProverPublicOutput>,
77
189
  CompilableModule {
78
190
  proveTransaction: (
79
191
  publicInput: BlockProverPublicInput,
80
- stateProof: StateTransitionProof,
81
- appProof: DynamicRuntimeProof,
82
- executionData: BlockProverExecutionData,
83
- verificationKeyAttestation: RuntimeVerificationKeyAttestation
192
+ runtimeProof: DynamicRuntimeProof,
193
+ executionData: BlockProverSingleTransactionExecutionData
194
+ ) => Promise<BlockProverPublicOutput>;
195
+
196
+ proveTransactions: (
197
+ publicInput: BlockProverPublicInput,
198
+ runtimeProof1: DynamicRuntimeProof,
199
+ runtimeProof2: DynamicRuntimeProof,
200
+ executionData: BlockProverMultiTransactionExecutionData
84
201
  ) => Promise<BlockProverPublicOutput>;
85
202
 
86
203
  proveBlock: (
87
204
  publicInput: BlockProverPublicInput,
88
205
  networkState: NetworkState,
89
206
  blockWitness: BlockHashMerkleTreeWitness,
90
- // stateTransitionProof: StateTransitionProof,
207
+ stateTransitionProof: StateTransitionProof,
208
+ deferSTs: Bool,
209
+ afterBlockRootWitness: WitnessedRootWitness,
91
210
  transactionProof: BlockProverProof
92
211
  ) => Promise<BlockProverPublicOutput>;
93
212