@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.
- package/dist/hooks/AccountStateHook.d.ts +3 -3
- package/dist/hooks/AccountStateHook.d.ts.map +1 -1
- package/dist/hooks/AccountStateHook.js +6 -2
- package/dist/hooks/AccountStateHook.js.map +1 -1
- package/dist/hooks/LastStateRootBlockHook.d.ts +3 -4
- package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -1
- package/dist/hooks/LastStateRootBlockHook.js +4 -4
- package/dist/hooks/LastStateRootBlockHook.js.map +1 -1
- package/dist/hooks/NoopBlockHook.d.ts +3 -4
- package/dist/hooks/NoopBlockHook.d.ts.map +1 -1
- package/dist/hooks/NoopBlockHook.js +1 -1
- package/dist/hooks/NoopBlockHook.js.map +1 -1
- package/dist/hooks/NoopTransactionHook.d.ts +2 -2
- package/dist/hooks/NoopTransactionHook.d.ts.map +1 -1
- package/dist/hooks/NoopTransactionHook.js +4 -1
- package/dist/hooks/NoopTransactionHook.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/model/AppliedStateTransitionBatch.d.ts +114 -0
- package/dist/model/AppliedStateTransitionBatch.d.ts.map +1 -0
- package/dist/model/AppliedStateTransitionBatch.js +16 -0
- package/dist/model/AppliedStateTransitionBatch.js.map +1 -0
- package/dist/model/StateTransition.d.ts +1 -0
- package/dist/model/StateTransition.d.ts.map +1 -1
- package/dist/model/StateTransition.js +5 -0
- package/dist/model/StateTransition.js.map +1 -1
- package/dist/model/StateTransitionProvableBatch.d.ts +249 -97
- package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
- package/dist/model/StateTransitionProvableBatch.js +72 -65
- package/dist/model/StateTransitionProvableBatch.js.map +1 -1
- package/dist/model/transaction/RuntimeTransaction.d.ts +1 -0
- package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
- package/dist/model/transaction/RuntimeTransaction.js +3 -0
- package/dist/model/transaction/RuntimeTransaction.js.map +1 -1
- package/dist/protocol/ProvableBlockHook.d.ts +13 -3
- package/dist/protocol/ProvableBlockHook.d.ts.map +1 -1
- package/dist/protocol/ProvableBlockHook.js +16 -0
- package/dist/protocol/ProvableBlockHook.js.map +1 -1
- package/dist/protocol/ProvableTransactionHook.d.ts +29 -2
- package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
- package/dist/protocol/ProvableTransactionHook.js +9 -0
- package/dist/protocol/ProvableTransactionHook.js.map +1 -1
- package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
- package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
- package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
- package/dist/{utils → prover/accumulators}/StateTransitionReductionList.d.ts +3 -2
- package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
- package/dist/{utils → prover/accumulators}/StateTransitionReductionList.js +6 -3
- package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
- package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
- package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/TransactionHashList.js +8 -0
- package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
- package/dist/prover/accumulators/WitnessedRootHashList.d.ts +137 -0
- package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/WitnessedRootHashList.js +50 -0
- package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
- package/dist/prover/block/BlockProvable.d.ts +579 -35
- package/dist/prover/block/BlockProvable.d.ts.map +1 -1
- package/dist/prover/block/BlockProvable.js +55 -3
- package/dist/prover/block/BlockProvable.js.map +1 -1
- package/dist/prover/block/BlockProver.d.ts +52 -50
- package/dist/prover/block/BlockProver.d.ts.map +1 -1
- package/dist/prover/block/BlockProver.js +289 -209
- package/dist/prover/block/BlockProver.js.map +1 -1
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +55 -13
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -1
- package/dist/prover/block/accummulators/BlockHashMerkleTree.js +11 -3
- package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -1
- package/dist/prover/statetransition/StateTransitionProvable.d.ts +107 -106
- package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProvable.js +8 -8
- package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -1
- package/dist/prover/statetransition/StateTransitionProver.d.ts +14 -11
- package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProver.js +116 -62
- package/dist/prover/statetransition/StateTransitionProver.js.map +1 -1
- package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +1 -1
- package/dist/settlement/contracts/DispatchSmartContract.d.ts +1 -1
- package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -1
- package/dist/settlement/contracts/SettlementSmartContract.js +1 -0
- package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -1
- package/dist/state/assert/assert.d.ts.map +1 -1
- package/dist/state/assert/assert.js +5 -3
- package/dist/state/assert/assert.js.map +1 -1
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts +3 -3
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/RuntimeMethodExecutionContext.js +7 -4
- package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -1
- package/dist/utils/FieldOptions.d.ts +62 -0
- package/dist/utils/FieldOptions.d.ts.map +1 -0
- package/dist/utils/FieldOptions.js +13 -0
- package/dist/utils/FieldOptions.js.map +1 -0
- package/dist/utils/ProvableHashList.d.ts +21 -2
- package/dist/utils/ProvableHashList.d.ts.map +1 -1
- package/dist/utils/ProvableHashList.js +37 -2
- package/dist/utils/ProvableHashList.js.map +1 -1
- package/dist/utils/ProvableReductionHashList.d.ts +7 -3
- package/dist/utils/ProvableReductionHashList.d.ts.map +1 -1
- package/dist/utils/ProvableReductionHashList.js +8 -5
- package/dist/utils/ProvableReductionHashList.js.map +1 -1
- package/dist/utils/utils.d.ts +10 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +6 -0
- package/dist/utils/utils.js.map +1 -1
- package/package.json +2 -2
- package/src/hooks/AccountStateHook.ts +12 -3
- package/src/hooks/LastStateRootBlockHook.ts +7 -8
- package/src/hooks/NoopBlockHook.ts +7 -4
- package/src/hooks/NoopTransactionHook.ts +5 -2
- package/src/index.ts +6 -1
- package/src/model/AppliedStateTransitionBatch.ts +16 -0
- package/src/model/StateTransition.ts +6 -0
- package/src/model/StateTransitionProvableBatch.ts +94 -105
- package/src/model/transaction/RuntimeTransaction.ts +4 -0
- package/src/protocol/ProvableBlockHook.ts +51 -3
- package/src/protocol/ProvableTransactionHook.ts +67 -3
- package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
- package/src/{utils → prover/accumulators}/StateTransitionReductionList.ts +7 -4
- package/src/prover/accumulators/TransactionHashList.ts +9 -0
- package/src/prover/accumulators/WitnessedRootHashList.ts +61 -0
- package/src/prover/block/BlockProvable.ts +128 -9
- package/src/prover/block/BlockProver.ts +531 -383
- package/src/prover/block/accummulators/BlockHashMerkleTree.ts +11 -3
- package/src/prover/statetransition/StateTransitionProvable.ts +17 -11
- package/src/prover/statetransition/StateTransitionProver.ts +219 -144
- package/src/settlement/contracts/SettlementSmartContract.ts +4 -0
- package/src/state/assert/assert.ts +6 -3
- package/src/state/context/RuntimeMethodExecutionContext.ts +15 -7
- package/src/utils/FieldOptions.ts +13 -0
- package/src/utils/ProvableHashList.ts +77 -2
- package/src/utils/ProvableReductionHashList.ts +12 -3
- package/src/utils/utils.ts +18 -1
- package/test/BlockProver.test.ts +2 -0
- package/test/TestingProtocol.ts +5 -0
- package/test/model/StateTransitionProvableBatch.test.ts +137 -0
- package/test/prover/block/BlockProver.test.ts +18 -0
- package/test/prover/statetransition/StateTransitionProver.test.ts +240 -0
- package/test/utils/ProvableHashList.test.ts +44 -0
- package/test/utils/ProvableReductionHashList.test.ts +1 -1
- package/dist/utils/StateTransitionReductionList.d.ts.map +0 -1
- 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
|
-
|
|
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
|
|
158
|
+
export class BlockProverTransactionArguments extends Struct({
|
|
58
159
|
transaction: RuntimeTransaction,
|
|
59
160
|
signature: Signature,
|
|
60
|
-
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
|
|
207
|
+
stateTransitionProof: StateTransitionProof,
|
|
208
|
+
deferSTs: Bool,
|
|
209
|
+
afterBlockRootWitness: WitnessedRootWitness,
|
|
91
210
|
transactionProof: BlockProverProof
|
|
92
211
|
) => Promise<BlockProverPublicOutput>;
|
|
93
212
|
|