@aztec/stdlib 0.87.2 → 0.87.3-nightly.20250529
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/dest/abi/abi.d.ts +3 -0
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/abi.js +38 -0
- package/dest/avm/avm.d.ts +696 -12
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +16 -8
- package/dest/avm/avm_accumulated_data.d.ts +77 -0
- package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
- package/dest/avm/avm_accumulated_data.js +67 -0
- package/dest/avm/avm_circuit_public_inputs.d.ts +73 -3
- package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
- package/dest/avm/avm_circuit_public_inputs.js +19 -9
- package/dest/avm/avm_proving_request.d.ts +366 -0
- package/dest/avm/avm_proving_request.d.ts.map +1 -1
- package/dest/block/body.d.ts +1 -1
- package/dest/block/body.d.ts.map +1 -1
- package/dest/block/body.js +2 -2
- package/dest/block/index.d.ts +1 -0
- package/dest/block/index.d.ts.map +1 -1
- package/dest/block/index.js +1 -0
- package/dest/block/l2_block.d.ts +3 -2
- package/dest/block/l2_block.d.ts.map +1 -1
- package/dest/block/l2_block.js +10 -5
- package/dest/block/l2_block_source.d.ts +9 -4
- package/dest/block/l2_block_source.d.ts.map +1 -1
- package/dest/block/l2_block_source.js +1 -0
- package/dest/block/proposal/committee_attestation.d.ts +34 -0
- package/dest/block/proposal/committee_attestation.d.ts.map +1 -0
- package/dest/block/proposal/committee_attestation.js +59 -0
- package/dest/block/proposal/index.d.ts +2 -0
- package/dest/block/proposal/index.d.ts.map +1 -0
- package/dest/block/proposal/index.js +1 -0
- package/dest/block/published_l2_block.d.ts +99 -69
- package/dest/block/published_l2_block.d.ts.map +1 -1
- package/dest/block/published_l2_block.js +38 -12
- package/dest/block/test/l2_tips_store_test_suite.js +1 -1
- package/dest/interfaces/archiver.js +2 -2
- package/dest/interfaces/aztec-node.js +2 -2
- package/dest/interfaces/p2p.d.ts +5 -2
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +1 -2
- package/dest/interfaces/prover-agent.d.ts +31 -6
- package/dest/interfaces/prover-agent.d.ts.map +1 -1
- package/dest/interfaces/prover-agent.js +15 -6
- package/dest/interfaces/proving-job.d.ts +370 -4
- package/dest/interfaces/proving-job.d.ts.map +1 -1
- package/dest/interfaces/proving-job.js +2 -2
- package/dest/interfaces/server_circuit_prover.d.ts +3 -2
- package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
- package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +1 -1
- package/dest/kernel/hints/key_validation_hint.d.ts +2 -6
- package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
- package/dest/kernel/hints/key_validation_hint.js +5 -7
- package/dest/kernel/hints/private_kernel_reset_hints.d.ts +7 -7
- package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
- package/dest/kernel/hints/private_kernel_reset_hints.js +8 -4
- package/dest/kernel/hints/read_request_hints.d.ts +8 -8
- package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
- package/dest/kernel/index.d.ts +1 -0
- package/dest/kernel/index.d.ts.map +1 -1
- package/dest/kernel/index.js +1 -0
- package/dest/kernel/padded_side_effects.d.ts +26 -0
- package/dest/kernel/padded_side_effects.d.ts.map +1 -0
- package/dest/kernel/padded_side_effects.js +51 -0
- package/dest/kernel/private_kernel_data.d.ts +6 -25
- package/dest/kernel/private_kernel_data.d.ts.map +1 -1
- package/dest/kernel/private_kernel_data.js +8 -19
- package/dest/kernel/private_kernel_prover_output.d.ts +3 -0
- package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
- package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +7 -4
- package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_reset_circuit_private_inputs.js +10 -6
- package/dest/kernel/private_kernel_reset_dimensions.d.ts +10 -10
- package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
- package/dest/kernel/private_kernel_reset_dimensions.js +29 -29
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
- package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +8 -3
- package/dest/kernel/public_call_request.d.ts +54 -0
- package/dest/kernel/public_call_request.d.ts.map +1 -1
- package/dest/kernel/public_call_request.js +58 -0
- package/dest/logs/contract_class_log.d.ts +0 -4
- package/dest/logs/contract_class_log.d.ts.map +1 -1
- package/dest/logs/contract_class_log.js +0 -33
- package/dest/logs/log_with_tx_data.d.ts +3 -3
- package/dest/logs/log_with_tx_data.d.ts.map +1 -1
- package/dest/logs/log_with_tx_data.js +9 -13
- package/dest/logs/pending_tagged_log.d.ts +1 -1
- package/dest/logs/pending_tagged_log.js +1 -1
- package/dest/logs/private_log.d.ts +1 -0
- package/dest/logs/private_log.d.ts.map +1 -1
- package/dest/logs/private_log.js +3 -0
- package/dest/logs/public_log.d.ts +1 -0
- package/dest/logs/public_log.d.ts.map +1 -1
- package/dest/logs/public_log.js +3 -0
- package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
- package/dest/logs/tx_scoped_l2_log.js +1 -0
- package/dest/rollup/avm_proof_data.d.ts +7 -5
- package/dest/rollup/avm_proof_data.d.ts.map +1 -1
- package/dest/rollup/avm_proof_data.js +12 -4
- package/dest/rollup/base_rollup_hints.d.ts +4 -4
- package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
- package/dest/rollup/base_rollup_hints.js +8 -8
- package/dest/rollup/previous_rollup_block_data.d.ts +6 -15
- package/dest/rollup/previous_rollup_block_data.d.ts.map +1 -1
- package/dest/rollup/previous_rollup_block_data.js +8 -13
- package/dest/rollup/previous_rollup_data.d.ts +6 -15
- package/dest/rollup/previous_rollup_data.d.ts.map +1 -1
- package/dest/rollup/previous_rollup_data.js +8 -13
- package/dest/rollup/private_tube_data.d.ts +3 -3
- package/dest/rollup/private_tube_data.d.ts.map +1 -1
- package/dest/rollup/private_tube_data.js +3 -3
- package/dest/rollup/public_tube_data.d.ts +3 -3
- package/dest/rollup/public_tube_data.d.ts.map +1 -1
- package/dest/rollup/public_tube_data.js +3 -3
- package/dest/rollup/root_rollup.d.ts +9 -10
- package/dest/rollup/root_rollup.d.ts.map +1 -1
- package/dest/rollup/root_rollup.js +9 -20
- package/dest/tests/factories.d.ts +2 -1
- package/dest/tests/factories.d.ts.map +1 -1
- package/dest/tests/factories.js +25 -19
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +4 -3
- package/dest/tx/private_execution_result.d.ts +6 -0
- package/dest/tx/private_execution_result.d.ts.map +1 -1
- package/dest/tx/processed_tx.d.ts.map +1 -1
- package/dest/tx/processed_tx.js +2 -5
- package/dest/tx/profiling.d.ts +41 -0
- package/dest/tx/profiling.d.ts.map +1 -1
- package/dest/tx/profiling.js +4 -1
- package/dest/tx/proven_tx.d.ts +40 -18
- package/dest/tx/proven_tx.d.ts.map +1 -1
- package/dest/tx/proven_tx.js +2 -2
- package/dest/tx/tx.d.ts +10 -25
- package/dest/tx/tx.d.ts.map +1 -1
- package/dest/tx/tx.js +25 -50
- package/dest/tx/tx_effect.d.ts +1 -1
- package/dest/tx/tx_effect.d.ts.map +1 -1
- package/dest/tx/tx_effect.js +2 -2
- package/dest/validators/types.d.ts +4 -0
- package/dest/validators/types.d.ts.map +1 -1
- package/dest/vks/index.d.ts +1 -1
- package/dest/vks/index.d.ts.map +1 -1
- package/dest/vks/index.js +1 -1
- package/dest/vks/{vk_witness_data.d.ts → vk_data.d.ts} +8 -8
- package/dest/vks/vk_data.d.ts.map +1 -0
- package/dest/vks/{vk_witness_data.js → vk_data.js} +10 -10
- package/package.json +7 -7
- package/src/abi/abi.ts +37 -0
- package/src/avm/avm.ts +14 -0
- package/src/avm/avm_accumulated_data.ts +93 -0
- package/src/avm/avm_circuit_public_inputs.ts +22 -2
- package/src/block/body.ts +7 -2
- package/src/block/index.ts +1 -0
- package/src/block/l2_block.ts +8 -3
- package/src/block/l2_block_source.ts +9 -3
- package/src/block/proposal/committee_attestation.ts +70 -0
- package/src/block/proposal/index.ts +1 -0
- package/src/block/published_l2_block.ts +38 -24
- package/src/block/test/l2_tips_store_test_suite.ts +1 -1
- package/src/interfaces/archiver.ts +2 -2
- package/src/interfaces/aztec-node.ts +2 -2
- package/src/interfaces/p2p.ts +8 -3
- package/src/interfaces/prover-agent.ts +9 -10
- package/src/interfaces/proving-job.ts +3 -3
- package/src/interfaces/server_circuit_prover.ts +3 -2
- package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +3 -3
- package/src/kernel/hints/key_validation_hint.ts +4 -6
- package/src/kernel/hints/private_kernel_reset_hints.ts +34 -43
- package/src/kernel/hints/read_request_hints.ts +27 -15
- package/src/kernel/index.ts +1 -0
- package/src/kernel/padded_side_effects.ts +73 -0
- package/src/kernel/private_kernel_data.ts +7 -29
- package/src/kernel/private_kernel_prover_output.ts +1 -0
- package/src/kernel/private_kernel_reset_circuit_private_inputs.ts +16 -13
- package/src/kernel/private_kernel_reset_dimensions.ts +27 -27
- package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +10 -2
- package/src/kernel/public_call_request.ts +66 -0
- package/src/logs/contract_class_log.ts +0 -36
- package/src/logs/log_with_tx_data.ts +7 -11
- package/src/logs/pending_tagged_log.ts +1 -1
- package/src/logs/private_log.ts +4 -0
- package/src/logs/public_log.ts +4 -0
- package/src/logs/tx_scoped_l2_log.ts +1 -0
- package/src/rollup/avm_proof_data.ts +14 -7
- package/src/rollup/base_rollup_hints.ts +4 -4
- package/src/rollup/previous_rollup_block_data.ts +6 -12
- package/src/rollup/previous_rollup_data.ts +6 -12
- package/src/rollup/private_tube_data.ts +4 -4
- package/src/rollup/public_tube_data.ts +4 -4
- package/src/rollup/root_rollup.ts +6 -19
- package/src/tests/factories.ts +36 -32
- package/src/tests/mocks.ts +6 -3
- package/src/tx/private_execution_result.ts +1 -1
- package/src/tx/processed_tx.ts +4 -5
- package/src/tx/profiling.ts +6 -1
- package/src/tx/proven_tx.ts +2 -2
- package/src/tx/tx.ts +28 -54
- package/src/tx/tx_effect.ts +23 -5
- package/src/validators/types.ts +2 -0
- package/src/vks/index.ts +1 -1
- package/src/vks/{vk_witness_data.ts → vk_data.ts} +6 -6
- package/dest/vks/vk_witness_data.d.ts.map +0 -1
|
@@ -10,8 +10,8 @@ export class PrivateKernelResetHints<
|
|
|
10
10
|
NH_RR_SETTLED extends number,
|
|
11
11
|
NLL_RR_PENDING extends number,
|
|
12
12
|
NLL_RR_SETTLED extends number,
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
KEY_VALIDATION_HINTS_LEN extends number,
|
|
14
|
+
TRANSIENT_DATA_HINTS_LEN extends number,
|
|
15
15
|
> {
|
|
16
16
|
constructor(
|
|
17
17
|
/**
|
|
@@ -25,11 +25,11 @@ export class PrivateKernelResetHints<
|
|
|
25
25
|
/**
|
|
26
26
|
* Contains hints for key validation request.
|
|
27
27
|
*/
|
|
28
|
-
public keyValidationHints: Tuple<KeyValidationHint,
|
|
28
|
+
public keyValidationHints: Tuple<KeyValidationHint, KEY_VALIDATION_HINTS_LEN>,
|
|
29
29
|
/**
|
|
30
30
|
* Contains hints for the transient note hashes to locate corresponding nullifiers.
|
|
31
31
|
*/
|
|
32
|
-
public transientDataIndexHints: Tuple<TransientDataIndexHint,
|
|
32
|
+
public transientDataIndexHints: Tuple<TransientDataIndexHint, TRANSIENT_DATA_HINTS_LEN>,
|
|
33
33
|
/**
|
|
34
34
|
* The "final" minRevertibleSideEffectCounter of a tx, to split the data for squashing.
|
|
35
35
|
* Not the minRevertibleSideEffectCounter at the point the reset circuit is run.
|
|
@@ -47,39 +47,30 @@ export class PrivateKernelResetHints<
|
|
|
47
47
|
);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
trimToSizes
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
numTransientDataIndexHints: NUM_TRANSIENT_DATA_INDEX_HINTS,
|
|
64
|
-
): PrivateKernelResetHints<
|
|
65
|
-
NEW_NH_RR_PENDING,
|
|
66
|
-
NEW_NH_RR_SETTLED,
|
|
67
|
-
NEW_NLL_RR_PENDING,
|
|
68
|
-
NEW_NLL_RR_SETTLED,
|
|
69
|
-
NEW_KEY_VALIDATION_REQUESTS,
|
|
70
|
-
NUM_TRANSIENT_DATA_INDEX_HINTS
|
|
71
|
-
> {
|
|
50
|
+
trimToSizes(
|
|
51
|
+
numNoteHashReadRequestPending: number,
|
|
52
|
+
numNoteHashReadRequestSettled: number,
|
|
53
|
+
numNullifierReadRequestPending: number,
|
|
54
|
+
numNullifierReadRequestSettled: number,
|
|
55
|
+
numKeyValidationHints: number,
|
|
56
|
+
numTransientDataIndexHints: number,
|
|
57
|
+
) {
|
|
58
|
+
// Noir does not allow empty arrays. So we make the minimum array size 1.
|
|
59
|
+
// There is a constant for each dimension, coded in the circuit that indicates how many hints should be applied.
|
|
60
|
+
// The circuit is selected based on the dimension sizes, not the hint array sizes created here.
|
|
61
|
+
const useSize = (num: number) => Math.max(num, 1);
|
|
62
|
+
|
|
72
63
|
return new PrivateKernelResetHints(
|
|
73
|
-
this.noteHashReadRequestHints.trimToSizes(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
64
|
+
this.noteHashReadRequestHints.trimToSizes(
|
|
65
|
+
useSize(numNoteHashReadRequestPending),
|
|
66
|
+
useSize(numNoteHashReadRequestSettled),
|
|
67
|
+
),
|
|
68
|
+
this.nullifierReadRequestHints.trimToSizes(
|
|
69
|
+
useSize(numNullifierReadRequestPending),
|
|
70
|
+
useSize(numNullifierReadRequestSettled),
|
|
71
|
+
),
|
|
72
|
+
this.keyValidationHints.slice(0, useSize(numKeyValidationHints)),
|
|
73
|
+
this.transientDataIndexHints.slice(0, useSize(numTransientDataIndexHints)),
|
|
83
74
|
this.validationRequestsSplitCounter,
|
|
84
75
|
);
|
|
85
76
|
}
|
|
@@ -93,23 +84,23 @@ export class PrivateKernelResetHints<
|
|
|
93
84
|
NH_RR_SETTLED extends number,
|
|
94
85
|
NLL_RR_PENDING extends number,
|
|
95
86
|
NLL_RR_SETTLED extends number,
|
|
96
|
-
|
|
97
|
-
|
|
87
|
+
KEY_VALIDATION_HINTS_LEN extends number,
|
|
88
|
+
TRANSIENT_DATA_HINTS_LEN extends number,
|
|
98
89
|
>(
|
|
99
90
|
buffer: Buffer | BufferReader,
|
|
100
91
|
numNoteHashReadRequestPending: NH_RR_PENDING,
|
|
101
92
|
numNoteHashReadRequestSettled: NH_RR_SETTLED,
|
|
102
93
|
numNullifierReadRequestPending: NLL_RR_PENDING,
|
|
103
94
|
numNullifierReadRequestSettled: NLL_RR_SETTLED,
|
|
104
|
-
|
|
105
|
-
numTransientDataIndexHints:
|
|
95
|
+
numKeyValidationHints: KEY_VALIDATION_HINTS_LEN,
|
|
96
|
+
numTransientDataIndexHints: TRANSIENT_DATA_HINTS_LEN,
|
|
106
97
|
): PrivateKernelResetHints<
|
|
107
98
|
NH_RR_PENDING,
|
|
108
99
|
NH_RR_SETTLED,
|
|
109
100
|
NLL_RR_PENDING,
|
|
110
101
|
NLL_RR_SETTLED,
|
|
111
|
-
|
|
112
|
-
|
|
102
|
+
KEY_VALIDATION_HINTS_LEN,
|
|
103
|
+
TRANSIENT_DATA_HINTS_LEN
|
|
113
104
|
> {
|
|
114
105
|
const reader = BufferReader.asReader(buffer);
|
|
115
106
|
return new PrivateKernelResetHints(
|
|
@@ -121,7 +112,7 @@ export class PrivateKernelResetHints<
|
|
|
121
112
|
fromBuffer: buf =>
|
|
122
113
|
nullifierReadRequestHintsFromBuffer(buf, numNullifierReadRequestPending, numNullifierReadRequestSettled),
|
|
123
114
|
}),
|
|
124
|
-
reader.readArray(
|
|
115
|
+
reader.readArray(numKeyValidationHints, KeyValidationHint),
|
|
125
116
|
reader.readArray(numTransientDataIndexHints, TransientDataIndexHint),
|
|
126
117
|
reader.readNumber(),
|
|
127
118
|
);
|
|
@@ -94,8 +94,8 @@ export class SettledReadHint<TREE_HEIGHT extends number, LEAF_PREIMAGE extends B
|
|
|
94
94
|
*/
|
|
95
95
|
export class ReadRequestResetHints<
|
|
96
96
|
READ_REQUEST_LEN extends number,
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
PENDING_READ_HINTS_LEN extends number,
|
|
98
|
+
SETTLED_READ_HINTS_LEN extends number,
|
|
99
99
|
TREE_HEIGHT extends number,
|
|
100
100
|
LEAF_PREIMAGE extends Bufferable,
|
|
101
101
|
> {
|
|
@@ -104,23 +104,29 @@ export class ReadRequestResetHints<
|
|
|
104
104
|
/**
|
|
105
105
|
* The hints for read requests reading pending values.
|
|
106
106
|
*/
|
|
107
|
-
public pendingReadHints: Tuple<PendingReadHint,
|
|
107
|
+
public pendingReadHints: Tuple<PendingReadHint, PENDING_READ_HINTS_LEN>,
|
|
108
108
|
/**
|
|
109
109
|
* The hints for read requests reading settled values.
|
|
110
110
|
*/
|
|
111
|
-
public settledReadHints: Tuple<SettledReadHint<TREE_HEIGHT, LEAF_PREIMAGE>,
|
|
111
|
+
public settledReadHints: Tuple<SettledReadHint<TREE_HEIGHT, LEAF_PREIMAGE>, SETTLED_READ_HINTS_LEN>,
|
|
112
112
|
) {}
|
|
113
113
|
|
|
114
|
-
trimToSizes<
|
|
115
|
-
numPendingReads:
|
|
116
|
-
numSettledReads:
|
|
117
|
-
): ReadRequestResetHints<
|
|
114
|
+
trimToSizes<NEW_PENDING_READ_HINTS_LEN extends number, NEW_SETTLED_READ_HINTS_LEN extends number>(
|
|
115
|
+
numPendingReads: NEW_PENDING_READ_HINTS_LEN,
|
|
116
|
+
numSettledReads: NEW_SETTLED_READ_HINTS_LEN,
|
|
117
|
+
): ReadRequestResetHints<
|
|
118
|
+
READ_REQUEST_LEN,
|
|
119
|
+
NEW_PENDING_READ_HINTS_LEN,
|
|
120
|
+
NEW_SETTLED_READ_HINTS_LEN,
|
|
121
|
+
TREE_HEIGHT,
|
|
122
|
+
LEAF_PREIMAGE
|
|
123
|
+
> {
|
|
118
124
|
return new ReadRequestResetHints(
|
|
119
125
|
this.readRequestStatuses,
|
|
120
|
-
this.pendingReadHints.slice(0, numPendingReads) as Tuple<PendingReadHint,
|
|
126
|
+
this.pendingReadHints.slice(0, numPendingReads) as Tuple<PendingReadHint, NEW_PENDING_READ_HINTS_LEN>,
|
|
121
127
|
this.settledReadHints.slice(0, numSettledReads) as Tuple<
|
|
122
128
|
SettledReadHint<TREE_HEIGHT, LEAF_PREIMAGE>,
|
|
123
|
-
|
|
129
|
+
NEW_SETTLED_READ_HINTS_LEN
|
|
124
130
|
>,
|
|
125
131
|
);
|
|
126
132
|
}
|
|
@@ -132,18 +138,24 @@ export class ReadRequestResetHints<
|
|
|
132
138
|
*/
|
|
133
139
|
static fromBuffer<
|
|
134
140
|
READ_REQUEST_LEN extends number,
|
|
135
|
-
|
|
136
|
-
|
|
141
|
+
PENDING_READ_HINTS_LEN extends number,
|
|
142
|
+
SETTLED_READ_HINTS_LEN extends number,
|
|
137
143
|
TREE_HEIGHT extends number,
|
|
138
144
|
LEAF_PREIMAGE extends Bufferable,
|
|
139
145
|
>(
|
|
140
146
|
buffer: Buffer | BufferReader,
|
|
141
147
|
readRequestLen: READ_REQUEST_LEN,
|
|
142
|
-
numPendingReads:
|
|
143
|
-
numSettledReads:
|
|
148
|
+
numPendingReads: PENDING_READ_HINTS_LEN,
|
|
149
|
+
numSettledReads: SETTLED_READ_HINTS_LEN,
|
|
144
150
|
treeHeight: TREE_HEIGHT,
|
|
145
151
|
leafPreimageFromBuffer: { fromBuffer: (buffer: BufferReader) => LEAF_PREIMAGE },
|
|
146
|
-
): ReadRequestResetHints<
|
|
152
|
+
): ReadRequestResetHints<
|
|
153
|
+
READ_REQUEST_LEN,
|
|
154
|
+
PENDING_READ_HINTS_LEN,
|
|
155
|
+
SETTLED_READ_HINTS_LEN,
|
|
156
|
+
TREE_HEIGHT,
|
|
157
|
+
LEAF_PREIMAGE
|
|
158
|
+
> {
|
|
147
159
|
const reader = BufferReader.asReader(buffer);
|
|
148
160
|
return new ReadRequestResetHints(
|
|
149
161
|
reader.readArray(readRequestLen, ReadRequestStatus),
|
package/src/kernel/index.ts
CHANGED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX } from '@aztec/constants';
|
|
2
|
+
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
4
|
+
import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
|
+
|
|
6
|
+
import { PrivateLog } from '../logs/index.js';
|
|
7
|
+
|
|
8
|
+
export class PaddedSideEffects {
|
|
9
|
+
constructor(
|
|
10
|
+
public noteHashes: Tuple<Fr, typeof MAX_NOTE_HASHES_PER_TX>,
|
|
11
|
+
public nullifiers: Tuple<Fr, typeof MAX_NULLIFIERS_PER_TX>,
|
|
12
|
+
public privateLogs: Tuple<PrivateLog, typeof MAX_PRIVATE_LOGS_PER_TX>,
|
|
13
|
+
) {}
|
|
14
|
+
|
|
15
|
+
toBuffer() {
|
|
16
|
+
return serializeToBuffer(this.noteHashes, this.nullifiers, this.privateLogs);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
20
|
+
const reader = BufferReader.asReader(buffer);
|
|
21
|
+
return new PaddedSideEffects(
|
|
22
|
+
reader.readArray(MAX_NOTE_HASHES_PER_TX, Fr),
|
|
23
|
+
reader.readArray(MAX_NULLIFIERS_PER_TX, Fr),
|
|
24
|
+
reader.readArray(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static empty() {
|
|
29
|
+
return new PaddedSideEffects(
|
|
30
|
+
makeTuple(MAX_NOTE_HASHES_PER_TX, Fr.zero),
|
|
31
|
+
makeTuple(MAX_NULLIFIERS_PER_TX, Fr.zero),
|
|
32
|
+
makeTuple(MAX_PRIVATE_LOGS_PER_TX, PrivateLog.empty),
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class PaddedSideEffectAmounts {
|
|
38
|
+
constructor(
|
|
39
|
+
public nonRevertibleNoteHashes: number,
|
|
40
|
+
public revertibleNoteHashes: number,
|
|
41
|
+
public nonRevertibleNullifiers: number,
|
|
42
|
+
public revertibleNullifiers: number,
|
|
43
|
+
public nonRevertiblePrivateLogs: number,
|
|
44
|
+
public revertiblePrivateLogs: number,
|
|
45
|
+
) {}
|
|
46
|
+
|
|
47
|
+
toBuffer() {
|
|
48
|
+
return serializeToBuffer(
|
|
49
|
+
this.nonRevertibleNoteHashes,
|
|
50
|
+
this.revertibleNoteHashes,
|
|
51
|
+
this.nonRevertibleNullifiers,
|
|
52
|
+
this.revertibleNullifiers,
|
|
53
|
+
this.nonRevertiblePrivateLogs,
|
|
54
|
+
this.revertiblePrivateLogs,
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
59
|
+
const reader = BufferReader.asReader(buffer);
|
|
60
|
+
return new PaddedSideEffectAmounts(
|
|
61
|
+
reader.readNumber(),
|
|
62
|
+
reader.readNumber(),
|
|
63
|
+
reader.readNumber(),
|
|
64
|
+
reader.readNumber(),
|
|
65
|
+
reader.readNumber(),
|
|
66
|
+
reader.readNumber(),
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static empty() {
|
|
71
|
+
return new PaddedSideEffectAmounts(0, 0, 0, 0, 0, 0);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
4
|
-
import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
1
|
+
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
2
|
|
|
6
|
-
import
|
|
7
|
-
import { VerificationKeyData } from '../vks/verification_key.js';
|
|
3
|
+
import { VkData } from '../vks/index.js';
|
|
8
4
|
import { PrivateKernelCircuitPublicInputs } from './private_kernel_circuit_public_inputs.js';
|
|
9
5
|
|
|
10
6
|
/**
|
|
@@ -19,17 +15,9 @@ export class PrivateKernelData {
|
|
|
19
15
|
*/
|
|
20
16
|
public publicInputs: PrivateKernelCircuitPublicInputs,
|
|
21
17
|
/**
|
|
22
|
-
*
|
|
18
|
+
* The verification key and the witness of the vk in the vk tree.
|
|
23
19
|
*/
|
|
24
|
-
public
|
|
25
|
-
/**
|
|
26
|
-
* Index of the previous kernel's vk in a tree of vks.
|
|
27
|
-
*/
|
|
28
|
-
public vkIndex: UInt32,
|
|
29
|
-
/**
|
|
30
|
-
* Sibling path of the previous kernel's vk in a tree of vks.
|
|
31
|
-
*/
|
|
32
|
-
public vkPath: Tuple<Fr, typeof VK_TREE_HEIGHT>,
|
|
20
|
+
public vkData: VkData,
|
|
33
21
|
) {}
|
|
34
22
|
|
|
35
23
|
/**
|
|
@@ -37,25 +25,15 @@ export class PrivateKernelData {
|
|
|
37
25
|
* @returns The buffer.
|
|
38
26
|
*/
|
|
39
27
|
toBuffer() {
|
|
40
|
-
return serializeToBuffer(this.publicInputs, this.
|
|
28
|
+
return serializeToBuffer(this.publicInputs, this.vkData);
|
|
41
29
|
}
|
|
42
30
|
|
|
43
31
|
static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelData {
|
|
44
32
|
const reader = BufferReader.asReader(buffer);
|
|
45
|
-
return new this(
|
|
46
|
-
reader.readObject(PrivateKernelCircuitPublicInputs),
|
|
47
|
-
reader.readObject(VerificationKeyData),
|
|
48
|
-
reader.readNumber(),
|
|
49
|
-
reader.readArray(VK_TREE_HEIGHT, Fr),
|
|
50
|
-
);
|
|
33
|
+
return new this(reader.readObject(PrivateKernelCircuitPublicInputs), reader.readObject(VkData));
|
|
51
34
|
}
|
|
52
35
|
|
|
53
36
|
static empty(): PrivateKernelData {
|
|
54
|
-
return new PrivateKernelData(
|
|
55
|
-
PrivateKernelCircuitPublicInputs.empty(),
|
|
56
|
-
VerificationKeyData.empty(),
|
|
57
|
-
0,
|
|
58
|
-
makeTuple(VK_TREE_HEIGHT, Fr.zero),
|
|
59
|
-
);
|
|
37
|
+
return new PrivateKernelData(PrivateKernelCircuitPublicInputs.empty(), VkData.empty());
|
|
60
38
|
}
|
|
61
39
|
}
|
|
@@ -7,6 +7,7 @@ import type {
|
|
|
7
7
|
import { serializeToBuffer } from '@aztec/foundation/serialize';
|
|
8
8
|
|
|
9
9
|
import type { PrivateKernelResetHints } from './hints/private_kernel_reset_hints.js';
|
|
10
|
+
import type { PaddedSideEffects } from './padded_side_effects.js';
|
|
10
11
|
import type { PrivateKernelData } from './private_kernel_data.js';
|
|
11
12
|
import type { PrivateKernelResetDimensions } from './private_kernel_reset_dimensions.js';
|
|
12
13
|
|
|
@@ -15,23 +16,24 @@ export class PrivateKernelResetCircuitPrivateInputsVariants<
|
|
|
15
16
|
NH_RR_SETTLED extends number,
|
|
16
17
|
NLL_RR_PENDING extends number,
|
|
17
18
|
NLL_RR_SETTLED extends number,
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
KEY_VALIDATION_HINTS_LEN extends number,
|
|
20
|
+
TRANSIENT_DATA_HINTS_LEN extends number,
|
|
20
21
|
> {
|
|
21
22
|
constructor(
|
|
22
23
|
public previousKernel: PrivateKernelData,
|
|
24
|
+
public paddedSideEffects: PaddedSideEffects,
|
|
23
25
|
public hints: PrivateKernelResetHints<
|
|
24
26
|
NH_RR_PENDING,
|
|
25
27
|
NH_RR_SETTLED,
|
|
26
28
|
NLL_RR_PENDING,
|
|
27
29
|
NLL_RR_SETTLED,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
KEY_VALIDATION_HINTS_LEN,
|
|
31
|
+
TRANSIENT_DATA_HINTS_LEN
|
|
30
32
|
>,
|
|
31
33
|
) {}
|
|
32
34
|
|
|
33
35
|
toBuffer() {
|
|
34
|
-
return serializeToBuffer(this.previousKernel, this.hints);
|
|
36
|
+
return serializeToBuffer(this.previousKernel, this.paddedSideEffects, this.hints);
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
|
|
@@ -44,6 +46,7 @@ export class PrivateKernelResetCircuitPrivateInputs {
|
|
|
44
46
|
* The previous kernel data
|
|
45
47
|
*/
|
|
46
48
|
public previousKernel: PrivateKernelData,
|
|
49
|
+
public paddedSideEffects: PaddedSideEffects,
|
|
47
50
|
public hints: PrivateKernelResetHints<
|
|
48
51
|
typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
49
52
|
typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
|
|
@@ -60,18 +63,18 @@ export class PrivateKernelResetCircuitPrivateInputs {
|
|
|
60
63
|
* @returns The buffer.
|
|
61
64
|
*/
|
|
62
65
|
toBuffer() {
|
|
63
|
-
return serializeToBuffer(this.previousKernel, this.hints, this.dimensions);
|
|
66
|
+
return serializeToBuffer(this.previousKernel, this.paddedSideEffects, this.hints, this.dimensions);
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
trimToSizes() {
|
|
67
70
|
const hints = this.hints.trimToSizes(
|
|
68
|
-
this.dimensions.
|
|
69
|
-
this.dimensions.
|
|
70
|
-
this.dimensions.
|
|
71
|
-
this.dimensions.
|
|
72
|
-
this.dimensions.
|
|
73
|
-
this.dimensions.
|
|
71
|
+
this.dimensions.NOTE_HASH_PENDING_READ,
|
|
72
|
+
this.dimensions.NOTE_HASH_SETTLED_READ,
|
|
73
|
+
this.dimensions.NULLIFIER_PENDING_READ,
|
|
74
|
+
this.dimensions.NULLIFIER_SETTLED_READ,
|
|
75
|
+
this.dimensions.KEY_VALIDATION,
|
|
76
|
+
this.dimensions.TRANSIENT_DATA_SQUASHING,
|
|
74
77
|
);
|
|
75
|
-
return new PrivateKernelResetCircuitPrivateInputsVariants(this.previousKernel, hints);
|
|
78
|
+
return new PrivateKernelResetCircuitPrivateInputsVariants(this.previousKernel, this.paddedSideEffects, hints);
|
|
76
79
|
}
|
|
77
80
|
}
|
|
@@ -3,28 +3,28 @@ import type { FieldsOf } from '@aztec/foundation/types';
|
|
|
3
3
|
|
|
4
4
|
export class PrivateKernelResetDimensions {
|
|
5
5
|
constructor(
|
|
6
|
-
public
|
|
7
|
-
public
|
|
8
|
-
public
|
|
9
|
-
public
|
|
10
|
-
public
|
|
11
|
-
public
|
|
12
|
-
public
|
|
13
|
-
public
|
|
14
|
-
public
|
|
6
|
+
public NOTE_HASH_PENDING_READ: number,
|
|
7
|
+
public NOTE_HASH_SETTLED_READ: number,
|
|
8
|
+
public NULLIFIER_PENDING_READ: number,
|
|
9
|
+
public NULLIFIER_SETTLED_READ: number,
|
|
10
|
+
public KEY_VALIDATION: number,
|
|
11
|
+
public TRANSIENT_DATA_SQUASHING: number,
|
|
12
|
+
public NOTE_HASH_SILOING: number,
|
|
13
|
+
public NULLIFIER_SILOING: number,
|
|
14
|
+
public PRIVATE_LOG_SILOING: number,
|
|
15
15
|
) {}
|
|
16
16
|
|
|
17
17
|
toBuffer() {
|
|
18
18
|
return serializeToBuffer(
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
19
|
+
this.NOTE_HASH_PENDING_READ,
|
|
20
|
+
this.NOTE_HASH_SETTLED_READ,
|
|
21
|
+
this.NULLIFIER_PENDING_READ,
|
|
22
|
+
this.NULLIFIER_SETTLED_READ,
|
|
23
|
+
this.KEY_VALIDATION,
|
|
24
|
+
this.TRANSIENT_DATA_SQUASHING,
|
|
25
|
+
this.NOTE_HASH_SILOING,
|
|
26
|
+
this.NULLIFIER_SILOING,
|
|
27
|
+
this.PRIVATE_LOG_SILOING,
|
|
28
28
|
);
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -57,15 +57,15 @@ export class PrivateKernelResetDimensions {
|
|
|
57
57
|
export type DimensionName = keyof FieldsOf<PrivateKernelResetDimensions>;
|
|
58
58
|
|
|
59
59
|
export const privateKernelResetDimensionNames: DimensionName[] = [
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'
|
|
64
|
-
'
|
|
65
|
-
'
|
|
66
|
-
'
|
|
67
|
-
'
|
|
68
|
-
'
|
|
60
|
+
'NOTE_HASH_PENDING_READ',
|
|
61
|
+
'NOTE_HASH_SETTLED_READ',
|
|
62
|
+
'NULLIFIER_PENDING_READ',
|
|
63
|
+
'NULLIFIER_SETTLED_READ',
|
|
64
|
+
'KEY_VALIDATION',
|
|
65
|
+
'TRANSIENT_DATA_SQUASHING',
|
|
66
|
+
'NOTE_HASH_SILOING',
|
|
67
|
+
'NULLIFIER_SILOING',
|
|
68
|
+
'PRIVATE_LOG_SILOING',
|
|
69
69
|
];
|
|
70
70
|
|
|
71
71
|
export interface DimensionConfig {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
2
2
|
|
|
3
|
+
import { PaddedSideEffectAmounts } from './padded_side_effects.js';
|
|
3
4
|
import { PrivateKernelData } from './private_kernel_data.js';
|
|
4
5
|
import { countAccumulatedItems } from './utils/order_and_comparison.js';
|
|
5
6
|
|
|
@@ -12,6 +13,10 @@ export class PrivateKernelTailCircuitPrivateInputs {
|
|
|
12
13
|
* The previous kernel data
|
|
13
14
|
*/
|
|
14
15
|
public previousKernel: PrivateKernelData,
|
|
16
|
+
/**
|
|
17
|
+
* The number of the padded side effects.
|
|
18
|
+
*/
|
|
19
|
+
public paddedSideEffectAmounts: PaddedSideEffectAmounts,
|
|
15
20
|
) {}
|
|
16
21
|
|
|
17
22
|
isForPublic() {
|
|
@@ -26,7 +31,7 @@ export class PrivateKernelTailCircuitPrivateInputs {
|
|
|
26
31
|
* @returns The buffer.
|
|
27
32
|
*/
|
|
28
33
|
toBuffer() {
|
|
29
|
-
return serializeToBuffer(this.previousKernel);
|
|
34
|
+
return serializeToBuffer(this.previousKernel, this.paddedSideEffectAmounts);
|
|
30
35
|
}
|
|
31
36
|
|
|
32
37
|
/**
|
|
@@ -36,6 +41,9 @@ export class PrivateKernelTailCircuitPrivateInputs {
|
|
|
36
41
|
*/
|
|
37
42
|
static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelTailCircuitPrivateInputs {
|
|
38
43
|
const reader = BufferReader.asReader(buffer);
|
|
39
|
-
return new PrivateKernelTailCircuitPrivateInputs(
|
|
44
|
+
return new PrivateKernelTailCircuitPrivateInputs(
|
|
45
|
+
reader.readObject(PrivateKernelData),
|
|
46
|
+
reader.readObject(PaddedSideEffectAmounts),
|
|
47
|
+
);
|
|
40
48
|
}
|
|
41
49
|
}
|
|
@@ -123,6 +123,72 @@ export class PublicCallRequest {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Represents lengths of arrays of public call requests.
|
|
128
|
+
*/
|
|
129
|
+
export class PublicCallRequestArrayLengths {
|
|
130
|
+
constructor(
|
|
131
|
+
/**
|
|
132
|
+
* Number of setup call requests
|
|
133
|
+
*/
|
|
134
|
+
public setupCalls: number,
|
|
135
|
+
/**
|
|
136
|
+
* Number of app logic call requests
|
|
137
|
+
*/
|
|
138
|
+
public appLogicCalls: number,
|
|
139
|
+
/**
|
|
140
|
+
* Whether there is a teardown call request
|
|
141
|
+
*/
|
|
142
|
+
public teardownCall: boolean,
|
|
143
|
+
) {}
|
|
144
|
+
|
|
145
|
+
static get schema() {
|
|
146
|
+
return z
|
|
147
|
+
.object({
|
|
148
|
+
setupCalls: z.number(),
|
|
149
|
+
appLogicCalls: z.number(),
|
|
150
|
+
teardownCall: z.boolean(),
|
|
151
|
+
})
|
|
152
|
+
.transform(({ setupCalls, appLogicCalls, teardownCall }) => {
|
|
153
|
+
return new PublicCallRequestArrayLengths(setupCalls, appLogicCalls, teardownCall);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
static getFields(fields: FieldsOf<PublicCallRequestArrayLengths>) {
|
|
158
|
+
return [fields.setupCalls, fields.appLogicCalls, fields.teardownCall] as const;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
static fromFields(fields: Fr[] | FieldReader): PublicCallRequestArrayLengths {
|
|
162
|
+
const reader = FieldReader.asReader(fields);
|
|
163
|
+
return new PublicCallRequestArrayLengths(reader.readU32(), reader.readU32(), reader.readBoolean());
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
toFields(): Fr[] {
|
|
167
|
+
return serializeToFields(...PublicCallRequestArrayLengths.getFields(this));
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
171
|
+
const reader = BufferReader.asReader(buffer);
|
|
172
|
+
return new PublicCallRequestArrayLengths(reader.readNumber(), reader.readNumber(), reader.readBoolean());
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
toBuffer() {
|
|
176
|
+
return serializeToBuffer(...PublicCallRequestArrayLengths.getFields(this));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
static empty() {
|
|
180
|
+
return new PublicCallRequestArrayLengths(0, 0, false);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
[inspect.custom]() {
|
|
184
|
+
return `PublicCallRequestArrayLengths {
|
|
185
|
+
setupCalls: ${this.setupCalls}
|
|
186
|
+
appLogicCalls: ${this.appLogicCalls}
|
|
187
|
+
teardownCall: ${this.teardownCall}
|
|
188
|
+
}`;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
126
192
|
export class CountedPublicCallRequest {
|
|
127
193
|
constructor(
|
|
128
194
|
public inner: PublicCallRequest,
|
|
@@ -96,8 +96,6 @@ export class ContractClassLogFields {
|
|
|
96
96
|
|
|
97
97
|
export class ContractClassLog {
|
|
98
98
|
static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * CONTRACT_CLASS_LOG_LENGTH;
|
|
99
|
-
// Keeps original first field pre-siloing. Only set by silo().
|
|
100
|
-
public unsiloedFirstField?: Fr | undefined;
|
|
101
99
|
|
|
102
100
|
constructor(
|
|
103
101
|
public contractAddress: AztecAddress,
|
|
@@ -180,40 +178,6 @@ export class ContractClassLog {
|
|
|
180
178
|
);
|
|
181
179
|
}
|
|
182
180
|
|
|
183
|
-
setUnsiloedFirstField(field: Fr) {
|
|
184
|
-
this.unsiloedFirstField = field;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
toUnsiloed() {
|
|
188
|
-
if (this.contractAddress.isZero()) {
|
|
189
|
-
return this;
|
|
190
|
-
}
|
|
191
|
-
if (this.unsiloedFirstField) {
|
|
192
|
-
return new ContractClassLog(
|
|
193
|
-
this.contractAddress,
|
|
194
|
-
new ContractClassLogFields([this.unsiloedFirstField].concat(this.fields.fields.slice(1))),
|
|
195
|
-
this.emittedLength,
|
|
196
|
-
);
|
|
197
|
-
} else {
|
|
198
|
-
return this;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// TODO(#13914): Don't need to silo the contract class logs.
|
|
203
|
-
async silo() {
|
|
204
|
-
if (this.contractAddress.isZero()) {
|
|
205
|
-
return this;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
const fields = this.fields.clone();
|
|
209
|
-
const unsiloedField = fields.fields[0];
|
|
210
|
-
const siloedField = await poseidon2Hash([this.contractAddress, unsiloedField]);
|
|
211
|
-
fields.fields[0] = siloedField;
|
|
212
|
-
const cloned = new ContractClassLog(this.contractAddress, fields, this.emittedLength);
|
|
213
|
-
cloned.setUnsiloedFirstField(unsiloedField);
|
|
214
|
-
return cloned;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
181
|
async hash() {
|
|
218
182
|
return await this.fields.hash();
|
|
219
183
|
}
|