@aztec/stdlib 0.87.7 → 1.0.0-nightly.20250605
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 +1318 -33
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +37 -14
- 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 +103 -10
- package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
- package/dest/avm/avm_circuit_public_inputs.js +25 -10
- package/dest/avm/avm_proving_request.d.ts +648 -0
- package/dest/avm/avm_proving_request.d.ts.map +1 -1
- package/dest/avm/gas.d.ts +7 -0
- package/dest/avm/gas.d.ts.map +1 -0
- package/dest/avm/gas.js +13 -0
- package/dest/avm/index.d.ts +1 -0
- package/dest/avm/index.d.ts.map +1 -1
- package/dest/avm/index.js +1 -0
- 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/fees/transaction_fee.d.ts +5 -0
- package/dest/fees/transaction_fee.d.ts.map +1 -1
- package/dest/fees/transaction_fee.js +10 -3
- package/dest/interfaces/archiver.js +2 -2
- package/dest/interfaces/aztec-node.d.ts +3 -8
- package/dest/interfaces/aztec-node.d.ts.map +1 -1
- package/dest/interfaces/aztec-node.js +3 -6
- package/dest/interfaces/block-builder.d.ts +41 -2
- package/dest/interfaces/block-builder.d.ts.map +1 -1
- package/dest/interfaces/block-builder.js +1 -1
- package/dest/interfaces/epoch-prover.d.ts +2 -2
- package/dest/interfaces/epoch-prover.d.ts.map +1 -1
- package/dest/interfaces/merkle_tree_operations.d.ts +14 -0
- package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
- package/dest/interfaces/p2p.d.ts +6 -3
- package/dest/interfaces/p2p.d.ts.map +1 -1
- package/dest/interfaces/p2p.js +1 -2
- package/dest/interfaces/proving-job.d.ts +652 -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_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/private_to_avm_accumulated_data.d.ts +1 -0
- package/dest/kernel/private_to_avm_accumulated_data.d.ts.map +1 -1
- package/dest/kernel/private_to_avm_accumulated_data.js +4 -0
- 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 +13 -3
- package/dest/logs/log_with_tx_data.d.ts.map +1 -1
- package/dest/logs/log_with_tx_data.js +26 -14
- 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/messaging/index.d.ts +1 -0
- package/dest/messaging/index.d.ts.map +1 -1
- package/dest/messaging/index.js +1 -0
- package/dest/messaging/l2_to_l1_membership.d.ts +11 -0
- package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -0
- package/dest/messaging/l2_to_l1_membership.js +70 -0
- package/dest/p2p/consensus_payload.d.ts.map +1 -1
- 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 +53 -28
- package/dest/tests/mocks.d.ts.map +1 -1
- package/dest/tests/mocks.js +4 -3
- package/dest/tx/processed_tx.d.ts.map +1 -1
- package/dest/tx/processed_tx.js +2 -5
- 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/tx/tx_hash.d.ts +1 -0
- package/dest/tx/tx_hash.d.ts.map +1 -1
- package/dest/tx/tx_hash.js +3 -0
- 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 +37 -4
- package/src/avm/avm_accumulated_data.ts +93 -0
- package/src/avm/avm_circuit_public_inputs.ts +33 -3
- package/src/avm/gas.ts +26 -0
- package/src/avm/index.ts +1 -0
- 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/fees/transaction_fee.ts +12 -3
- package/src/interfaces/archiver.ts +2 -2
- package/src/interfaces/aztec-node.ts +8 -16
- package/src/interfaces/block-builder.ts +49 -2
- package/src/interfaces/epoch-prover.ts +2 -2
- package/src/interfaces/merkle_tree_operations.ts +20 -0
- package/src/interfaces/p2p.ts +9 -4
- 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_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/private_to_avm_accumulated_data.ts +9 -0
- 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 +26 -12
- 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/messaging/index.ts +1 -0
- package/src/messaging/l2_to_l1_membership.ts +113 -0
- package/src/p2p/consensus_payload.ts +3 -1
- 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 +82 -43
- package/src/tests/mocks.ts +6 -3
- package/src/tx/processed_tx.ts +4 -5
- package/src/tx/tx.ts +28 -54
- package/src/tx/tx_effect.ts +23 -5
- package/src/tx/tx_hash.ts +4 -0
- 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
|
@@ -7,7 +7,6 @@ import { BufferReader, type Tuple, serializeToBuffer, serializeToFields } from '
|
|
|
7
7
|
import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
|
|
8
8
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
9
9
|
|
|
10
|
-
import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
|
|
11
10
|
import { FeeRecipient } from './block_root_or_block_merge_public_inputs.js';
|
|
12
11
|
import { PreviousRollupBlockData } from './previous_rollup_block_data.js';
|
|
13
12
|
|
|
@@ -100,13 +99,10 @@ export class RootRollupInputs {
|
|
|
100
99
|
*/
|
|
101
100
|
export class RootRollupPublicInputs {
|
|
102
101
|
constructor(
|
|
103
|
-
/**
|
|
104
|
-
public
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
public endTimestamp: Fr,
|
|
108
|
-
public endBlockNumber: Fr,
|
|
109
|
-
public outHash: Fr,
|
|
102
|
+
/** Root of the archive tree before this rollup is processed */
|
|
103
|
+
public previousArchiveRoot: Fr,
|
|
104
|
+
/** Root of the archive tree after this rollup is processed */
|
|
105
|
+
public endArchiveRoot: Fr,
|
|
110
106
|
public proposedBlockHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
|
|
111
107
|
public fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>,
|
|
112
108
|
public chainId: Fr,
|
|
@@ -119,11 +115,8 @@ export class RootRollupPublicInputs {
|
|
|
119
115
|
|
|
120
116
|
static getFields(fields: FieldsOf<RootRollupPublicInputs>) {
|
|
121
117
|
return [
|
|
122
|
-
fields.
|
|
123
|
-
fields.
|
|
124
|
-
fields.endTimestamp,
|
|
125
|
-
fields.endBlockNumber,
|
|
126
|
-
fields.outHash,
|
|
118
|
+
fields.previousArchiveRoot,
|
|
119
|
+
fields.endArchiveRoot,
|
|
127
120
|
fields.proposedBlockHeaderHashes,
|
|
128
121
|
fields.fees,
|
|
129
122
|
fields.chainId,
|
|
@@ -155,9 +148,6 @@ export class RootRollupPublicInputs {
|
|
|
155
148
|
public static fromBuffer(buffer: Buffer | BufferReader): RootRollupPublicInputs {
|
|
156
149
|
const reader = BufferReader.asReader(buffer);
|
|
157
150
|
return new RootRollupPublicInputs(
|
|
158
|
-
reader.readObject(AppendOnlyTreeSnapshot),
|
|
159
|
-
reader.readObject(AppendOnlyTreeSnapshot),
|
|
160
|
-
Fr.fromBuffer(reader),
|
|
161
151
|
Fr.fromBuffer(reader),
|
|
162
152
|
Fr.fromBuffer(reader),
|
|
163
153
|
reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
|
|
@@ -192,9 +182,6 @@ export class RootRollupPublicInputs {
|
|
|
192
182
|
/** Creates a random instance. */
|
|
193
183
|
static random() {
|
|
194
184
|
return new RootRollupPublicInputs(
|
|
195
|
-
AppendOnlyTreeSnapshot.random(),
|
|
196
|
-
AppendOnlyTreeSnapshot.random(),
|
|
197
|
-
Fr.random(),
|
|
198
185
|
Fr.random(),
|
|
199
186
|
Fr.random(),
|
|
200
187
|
makeTuple(AZTEC_MAX_EPOCH_DURATION, Fr.random),
|
package/src/tests/factories.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { makeBlockBlobPublicInputs, makeSpongeBlob } from '@aztec/blob-lib/testing';
|
|
2
2
|
import {
|
|
3
3
|
ARCHIVE_HEIGHT,
|
|
4
|
-
|
|
4
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
|
|
5
5
|
AZTEC_MAX_EPOCH_DURATION,
|
|
6
6
|
BLOBS_PER_BLOCK,
|
|
7
7
|
CONTRACT_CLASS_LOG_SIZE_IN_FIELDS,
|
|
@@ -55,6 +55,7 @@ import { ContractStorageRead } from '../avm/contract_storage_read.js';
|
|
|
55
55
|
import { ContractStorageUpdateRequest } from '../avm/contract_storage_update_request.js';
|
|
56
56
|
import {
|
|
57
57
|
AvmAccumulatedData,
|
|
58
|
+
AvmAccumulatedDataArrayLengths,
|
|
58
59
|
AvmAppendLeavesHint,
|
|
59
60
|
AvmBytecodeCommitmentHint,
|
|
60
61
|
AvmCircuitInputs,
|
|
@@ -75,6 +76,7 @@ import {
|
|
|
75
76
|
AvmSequentialInsertHintPublicDataTree,
|
|
76
77
|
AvmTxHint,
|
|
77
78
|
RevertCode,
|
|
79
|
+
clampGasSettingsForAVM,
|
|
78
80
|
} from '../avm/index.js';
|
|
79
81
|
import { PublicDataHint } from '../avm/public_data_hint.js';
|
|
80
82
|
import { PublicDataRead } from '../avm/public_data_read.js';
|
|
@@ -115,7 +117,11 @@ import { PrivateCallRequest } from '../kernel/private_call_request.js';
|
|
|
115
117
|
import { PrivateCircuitPublicInputs } from '../kernel/private_circuit_public_inputs.js';
|
|
116
118
|
import { PrivateLogData } from '../kernel/private_log_data.js';
|
|
117
119
|
import { PrivateToRollupKernelCircuitPublicInputs } from '../kernel/private_to_rollup_kernel_circuit_public_inputs.js';
|
|
118
|
-
import {
|
|
120
|
+
import {
|
|
121
|
+
CountedPublicCallRequest,
|
|
122
|
+
PublicCallRequest,
|
|
123
|
+
PublicCallRequestArrayLengths,
|
|
124
|
+
} from '../kernel/public_call_request.js';
|
|
119
125
|
import { PublicKeys, computeAddress } from '../keys/index.js';
|
|
120
126
|
import { ContractClassLogFields } from '../logs/index.js';
|
|
121
127
|
import { PrivateLog } from '../logs/private_log.js';
|
|
@@ -168,8 +174,8 @@ import { TxConstantData } from '../tx/tx_constant_data.js';
|
|
|
168
174
|
import { TxContext } from '../tx/tx_context.js';
|
|
169
175
|
import { TxRequest } from '../tx/tx_request.js';
|
|
170
176
|
import { RollupTypes, Vector } from '../types/index.js';
|
|
177
|
+
import { VkData } from '../vks/index.js';
|
|
171
178
|
import { VerificationKey, VerificationKeyAsFields, VerificationKeyData } from '../vks/verification_key.js';
|
|
172
|
-
import { VkWitnessData } from '../vks/vk_witness_data.js';
|
|
173
179
|
import { mockTx } from './mocks.js';
|
|
174
180
|
|
|
175
181
|
/**
|
|
@@ -368,6 +374,10 @@ function makeAvmAccumulatedData(seed = 1) {
|
|
|
368
374
|
);
|
|
369
375
|
}
|
|
370
376
|
|
|
377
|
+
function makeAvmAccumulatedDataArrayLengths(seed = 1) {
|
|
378
|
+
return new AvmAccumulatedDataArrayLengths(seed, seed + 1, seed + 2, seed + 3, seed + 4);
|
|
379
|
+
}
|
|
380
|
+
|
|
371
381
|
export function makeGas(seed = 1) {
|
|
372
382
|
return new Gas(seed, seed + 1);
|
|
373
383
|
}
|
|
@@ -452,7 +462,9 @@ function makeAvmCircuitPublicInputs(seed = 1) {
|
|
|
452
462
|
makeTreeSnapshots(seed + 0x10),
|
|
453
463
|
makeGas(seed + 0x20),
|
|
454
464
|
makeGasSettings(),
|
|
465
|
+
makeGasFees(seed + 0x30),
|
|
455
466
|
makeAztecAddress(seed + 0x40),
|
|
467
|
+
makePublicCallRequestArrayLengths(seed + 0x40),
|
|
456
468
|
makeTuple(MAX_ENQUEUED_CALLS_PER_TX, makePublicCallRequest, seed + 0x100),
|
|
457
469
|
makeTuple(MAX_ENQUEUED_CALLS_PER_TX, makePublicCallRequest, seed + 0x200),
|
|
458
470
|
makePublicCallRequest(seed + 0x300),
|
|
@@ -462,6 +474,7 @@ function makeAvmCircuitPublicInputs(seed = 1) {
|
|
|
462
474
|
makePrivateToAvmAccumulatedData(seed + 0x600),
|
|
463
475
|
makeTreeSnapshots(seed + 0x700),
|
|
464
476
|
makeGas(seed + 0x750),
|
|
477
|
+
makeAvmAccumulatedDataArrayLengths(seed + 0x800),
|
|
465
478
|
makeAvmAccumulatedData(seed + 0x800),
|
|
466
479
|
fr(seed + 0x900),
|
|
467
480
|
false,
|
|
@@ -533,6 +546,10 @@ export function makePublicCallRequest(seed = 1) {
|
|
|
533
546
|
return new PublicCallRequest(makeAztecAddress(seed), makeAztecAddress(seed + 1), false, fr(seed + 0x3));
|
|
534
547
|
}
|
|
535
548
|
|
|
549
|
+
export function makePublicCallRequestArrayLengths(seed = 1) {
|
|
550
|
+
return new PublicCallRequestArrayLengths(seed, seed + 1, seed % 2 === 0);
|
|
551
|
+
}
|
|
552
|
+
|
|
536
553
|
function makeCountedPublicCallRequest(seed = 1) {
|
|
537
554
|
return new CountedPublicCallRequest(makePublicCallRequest(seed), seed + 0x100);
|
|
538
555
|
}
|
|
@@ -742,8 +759,7 @@ export function makePreviousRollupData(
|
|
|
742
759
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
743
760
|
seed + 0x50,
|
|
744
761
|
),
|
|
745
|
-
|
|
746
|
-
makeMembershipWitness(VK_TREE_HEIGHT, seed + 0x120),
|
|
762
|
+
makeVkData(seed + 0x100),
|
|
747
763
|
);
|
|
748
764
|
}
|
|
749
765
|
|
|
@@ -763,8 +779,7 @@ export function makePreviousRollupBlockData(
|
|
|
763
779
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
764
780
|
seed + 0x50,
|
|
765
781
|
),
|
|
766
|
-
|
|
767
|
-
makeMembershipWitness(VK_TREE_HEIGHT, seed + 0x120),
|
|
782
|
+
makeVkData(seed + 0x100),
|
|
768
783
|
);
|
|
769
784
|
}
|
|
770
785
|
|
|
@@ -881,13 +896,10 @@ export function makeRootParityInputs(seed = 0): RootParityInputs {
|
|
|
881
896
|
*/
|
|
882
897
|
export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs {
|
|
883
898
|
return new RootRollupPublicInputs(
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
fr(seed
|
|
887
|
-
|
|
888
|
-
fr(seed + 0x500),
|
|
889
|
-
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x650),
|
|
890
|
-
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x600),
|
|
899
|
+
fr(seed + 0x100),
|
|
900
|
+
fr(seed + 0x200),
|
|
901
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x300),
|
|
902
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
|
|
891
903
|
fr(seed + 0x700),
|
|
892
904
|
fr(seed + 0x701),
|
|
893
905
|
fr(seed + 0x702),
|
|
@@ -1070,15 +1082,15 @@ export function makePrivateBaseStateDiffHints(seed = 1): PrivateBaseStateDiffHin
|
|
|
1070
1082
|
);
|
|
1071
1083
|
}
|
|
1072
1084
|
|
|
1073
|
-
function
|
|
1074
|
-
return new
|
|
1085
|
+
function makeVkData(seed = 1) {
|
|
1086
|
+
return new VkData(VerificationKeyData.makeFakeHonk(), seed, makeTuple(VK_TREE_HEIGHT, fr, seed + 0x100));
|
|
1075
1087
|
}
|
|
1076
1088
|
|
|
1077
1089
|
function makePrivateTubeData(seed = 1, kernelPublicInputs?: PrivateToRollupKernelCircuitPublicInputs) {
|
|
1078
1090
|
return new PrivateTubeData(
|
|
1079
1091
|
kernelPublicInputs ?? makePrivateToRollupKernelCircuitPublicInputs(seed, true),
|
|
1080
1092
|
makeRecursiveProof<typeof TUBE_PROOF_LENGTH>(TUBE_PROOF_LENGTH, seed + 0x100),
|
|
1081
|
-
|
|
1093
|
+
makeVkData(seed + 0x200),
|
|
1082
1094
|
);
|
|
1083
1095
|
}
|
|
1084
1096
|
|
|
@@ -1095,11 +1107,7 @@ function makePrivateBaseRollupHints(seed = 1) {
|
|
|
1095
1107
|
|
|
1096
1108
|
const archiveRootMembershipWitness = makeMembershipWitness(ARCHIVE_HEIGHT, seed + 0x9000);
|
|
1097
1109
|
|
|
1098
|
-
const
|
|
1099
|
-
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
1100
|
-
makeContractClassLogFields,
|
|
1101
|
-
seed + 0x800,
|
|
1102
|
-
);
|
|
1110
|
+
const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, makeContractClassLogFields, seed + 0x800);
|
|
1103
1111
|
|
|
1104
1112
|
const constants = makeConstantRollupData(0x100);
|
|
1105
1113
|
|
|
@@ -1111,7 +1119,7 @@ function makePrivateBaseRollupHints(seed = 1) {
|
|
|
1111
1119
|
stateDiffHints,
|
|
1112
1120
|
feePayerFeeJuiceBalanceReadHint,
|
|
1113
1121
|
archiveRootMembershipWitness,
|
|
1114
|
-
|
|
1122
|
+
contractClassLogsFields,
|
|
1115
1123
|
constants,
|
|
1116
1124
|
});
|
|
1117
1125
|
}
|
|
@@ -1121,18 +1129,14 @@ function makePublicBaseRollupHints(seed = 1) {
|
|
|
1121
1129
|
|
|
1122
1130
|
const archiveRootMembershipWitness = makeMembershipWitness(ARCHIVE_HEIGHT, seed + 0x9000);
|
|
1123
1131
|
|
|
1124
|
-
const
|
|
1125
|
-
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
1126
|
-
makeContractClassLogFields,
|
|
1127
|
-
seed + 0x800,
|
|
1128
|
-
);
|
|
1132
|
+
const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, makeContractClassLogFields, seed + 0x800);
|
|
1129
1133
|
|
|
1130
1134
|
const constants = makeConstantRollupData(0x100);
|
|
1131
1135
|
|
|
1132
1136
|
return PublicBaseRollupHints.from({
|
|
1133
1137
|
startSpongeBlob,
|
|
1134
1138
|
archiveRootMembershipWitness,
|
|
1135
|
-
|
|
1139
|
+
contractClassLogsFields,
|
|
1136
1140
|
constants,
|
|
1137
1141
|
});
|
|
1138
1142
|
}
|
|
@@ -1151,15 +1155,15 @@ function makePublicTubeData(seed = 1) {
|
|
|
1151
1155
|
return new PublicTubeData(
|
|
1152
1156
|
makePrivateToPublicKernelCircuitPublicInputs(seed),
|
|
1153
1157
|
makeRecursiveProof<typeof TUBE_PROOF_LENGTH>(TUBE_PROOF_LENGTH, seed + 0x100),
|
|
1154
|
-
|
|
1158
|
+
makeVkData(seed + 0x200),
|
|
1155
1159
|
);
|
|
1156
1160
|
}
|
|
1157
1161
|
|
|
1158
1162
|
function makeAvmProofData(seed = 1) {
|
|
1159
1163
|
return new AvmProofData(
|
|
1160
1164
|
makeAvmCircuitPublicInputs(seed),
|
|
1161
|
-
makeRecursiveProof<typeof
|
|
1162
|
-
|
|
1165
|
+
makeRecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, seed + 0x100),
|
|
1166
|
+
makeVkData(seed + 0x200),
|
|
1163
1167
|
);
|
|
1164
1168
|
}
|
|
1165
1169
|
|
|
@@ -1486,17 +1490,22 @@ export function makeAvmTxHint(seed = 0): AvmTxHint {
|
|
|
1486
1490
|
return new AvmTxHint(
|
|
1487
1491
|
`txhash-${seed}`,
|
|
1488
1492
|
makeGlobalVariables(seed),
|
|
1493
|
+
makeGasSettings(),
|
|
1494
|
+
makeGasFees(seed + 0x1000),
|
|
1489
1495
|
{
|
|
1490
1496
|
noteHashes: makeArray((seed % 20) + 4, i => new Fr(i), seed + 0x1000),
|
|
1491
1497
|
nullifiers: makeArray((seed % 20) + 4, i => new Fr(i), seed + 0x2000),
|
|
1498
|
+
l2ToL1Messages: makeArray((seed % 20) + 4, i => makeScopedL2ToL1Message(i), seed + 0x3000),
|
|
1492
1499
|
},
|
|
1493
1500
|
{
|
|
1494
1501
|
noteHashes: makeArray((seed % 20) + 4, i => new Fr(i), seed + 0x3000),
|
|
1495
1502
|
nullifiers: makeArray((seed % 20) + 4, i => new Fr(i), seed + 0x4000),
|
|
1503
|
+
l2ToL1Messages: makeArray((seed % 20) + 4, i => makeScopedL2ToL1Message(i), seed + 0x5000),
|
|
1496
1504
|
},
|
|
1497
1505
|
makeArray((seed % 20) + 4, i => makeAvmEnqueuedCallHint(i), seed + 0x5000), // setupEnqueuedCalls
|
|
1498
1506
|
makeArray((seed % 20) + 4, i => makeAvmEnqueuedCallHint(i), seed + 0x6000), // appLogicEnqueuedCalls
|
|
1499
1507
|
makeAvmEnqueuedCallHint(seed + 0x7000), // teardownEnqueuedCall
|
|
1508
|
+
makeGas(seed + 0x8000), // gasUsedByPrivate
|
|
1500
1509
|
);
|
|
1501
1510
|
}
|
|
1502
1511
|
|
|
@@ -1647,27 +1656,55 @@ export async function makeBloatedProcessedTx({
|
|
|
1647
1656
|
|
|
1648
1657
|
if (privateOnly) {
|
|
1649
1658
|
const data = makePrivateToRollupAccumulatedData(seed + 0x1000);
|
|
1659
|
+
clearContractClassLogs(data);
|
|
1650
1660
|
|
|
1651
1661
|
const transactionFee = tx.data.gasUsed.computeFee(globalVariables.gasFees);
|
|
1652
1662
|
feePaymentPublicDataWrite ??= new PublicDataWrite(Fr.random(), Fr.random());
|
|
1653
1663
|
|
|
1654
|
-
clearLogs(data);
|
|
1655
|
-
|
|
1656
1664
|
tx.data.forRollup!.end = data;
|
|
1657
1665
|
|
|
1658
1666
|
return makeProcessedTxFromPrivateOnlyTx(tx, transactionFee, feePaymentPublicDataWrite, globalVariables);
|
|
1659
1667
|
} else {
|
|
1660
|
-
const
|
|
1661
|
-
const revertibleData = makePrivateToPublicAccumulatedData(seed + 0x1000);
|
|
1668
|
+
const dataFromPrivate = tx.data.forPublic!;
|
|
1662
1669
|
|
|
1663
|
-
|
|
1670
|
+
const nonRevertibleData = dataFromPrivate.nonRevertibleAccumulatedData;
|
|
1664
1671
|
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1672
|
+
// Create revertible data.
|
|
1673
|
+
const revertibleData = makePrivateToPublicAccumulatedData(seed + 0x1000);
|
|
1674
|
+
clearContractClassLogs(revertibleData);
|
|
1675
|
+
revertibleData.nullifiers[MAX_NULLIFIERS_PER_TX - 1] = Fr.ZERO; // Leave one space for the tx hash nullifier in nonRevertibleAccumulatedData.
|
|
1676
|
+
dataFromPrivate.revertibleAccumulatedData = revertibleData;
|
|
1668
1677
|
|
|
1678
|
+
// Create avm output.
|
|
1669
1679
|
const avmOutput = AvmCircuitPublicInputs.empty();
|
|
1680
|
+
// Assign data from private.
|
|
1670
1681
|
avmOutput.globalVariables = globalVariables;
|
|
1682
|
+
avmOutput.startGasUsed = tx.data.gasUsed;
|
|
1683
|
+
avmOutput.gasSettings = gasSettings;
|
|
1684
|
+
avmOutput.feePayer = feePayer;
|
|
1685
|
+
avmOutput.publicCallRequestArrayLengths = new PublicCallRequestArrayLengths(
|
|
1686
|
+
tx.data.numberOfNonRevertiblePublicCallRequests(),
|
|
1687
|
+
tx.data.numberOfRevertiblePublicCallRequests(),
|
|
1688
|
+
tx.data.hasTeardownPublicCallRequest(),
|
|
1689
|
+
);
|
|
1690
|
+
avmOutput.publicSetupCallRequests = dataFromPrivate.nonRevertibleAccumulatedData.publicCallRequests;
|
|
1691
|
+
avmOutput.publicAppLogicCallRequests = dataFromPrivate.revertibleAccumulatedData.publicCallRequests;
|
|
1692
|
+
avmOutput.publicTeardownCallRequest = dataFromPrivate.publicTeardownCallRequest;
|
|
1693
|
+
avmOutput.previousNonRevertibleAccumulatedData = new PrivateToAvmAccumulatedData(
|
|
1694
|
+
dataFromPrivate.nonRevertibleAccumulatedData.noteHashes,
|
|
1695
|
+
dataFromPrivate.nonRevertibleAccumulatedData.nullifiers,
|
|
1696
|
+
dataFromPrivate.nonRevertibleAccumulatedData.l2ToL1Msgs,
|
|
1697
|
+
);
|
|
1698
|
+
avmOutput.previousNonRevertibleAccumulatedDataArrayLengths =
|
|
1699
|
+
avmOutput.previousNonRevertibleAccumulatedData.getArrayLengths();
|
|
1700
|
+
avmOutput.previousRevertibleAccumulatedData = new PrivateToAvmAccumulatedData(
|
|
1701
|
+
dataFromPrivate.revertibleAccumulatedData.noteHashes,
|
|
1702
|
+
dataFromPrivate.revertibleAccumulatedData.nullifiers,
|
|
1703
|
+
dataFromPrivate.revertibleAccumulatedData.l2ToL1Msgs,
|
|
1704
|
+
);
|
|
1705
|
+
avmOutput.previousRevertibleAccumulatedDataArrayLengths =
|
|
1706
|
+
avmOutput.previousRevertibleAccumulatedData.getArrayLengths();
|
|
1707
|
+
// Assign final data emitted from avm.
|
|
1671
1708
|
avmOutput.accumulatedData.noteHashes = revertibleData.noteHashes;
|
|
1672
1709
|
avmOutput.accumulatedData.nullifiers = mergeAccumulatedData(
|
|
1673
1710
|
nonRevertibleData.nullifiers,
|
|
@@ -1680,8 +1717,10 @@ export async function makeBloatedProcessedTx({
|
|
|
1680
1717
|
i => new PublicDataWrite(new Fr(i), new Fr(i + 10)),
|
|
1681
1718
|
seed + 0x2000,
|
|
1682
1719
|
);
|
|
1720
|
+
avmOutput.gasSettings = clampGasSettingsForAVM(gasSettings, tx.data.gasUsed);
|
|
1683
1721
|
|
|
1684
1722
|
const avmCircuitInputs = await makeAvmCircuitInputs(seed + 0x3000, { publicInputs: avmOutput });
|
|
1723
|
+
|
|
1685
1724
|
const gasUsed = {
|
|
1686
1725
|
totalGas: Gas.empty(),
|
|
1687
1726
|
teardownGas: Gas.empty(),
|
|
@@ -1702,8 +1741,8 @@ export async function makeBloatedProcessedTx({
|
|
|
1702
1741
|
}
|
|
1703
1742
|
}
|
|
1704
1743
|
|
|
1705
|
-
// Remove all
|
|
1706
|
-
|
|
1707
|
-
|
|
1744
|
+
// Remove all contract class log hashes from the data as they are not required for the current tests.
|
|
1745
|
+
// If they are needed one day, change this to create the random fields first and update the data with real hashes of those fields.
|
|
1746
|
+
function clearContractClassLogs(data: { contractClassLogsHashes: ScopedLogHash[] }) {
|
|
1708
1747
|
data.contractClassLogsHashes.forEach((_, i) => (data.contractClassLogsHashes[i] = ScopedLogHash.empty()));
|
|
1709
1748
|
}
|
package/src/tests/mocks.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
6
6
|
|
|
7
7
|
import type { ContractArtifact } from '../abi/abi.js';
|
|
8
8
|
import { AztecAddress } from '../aztec-address/index.js';
|
|
9
|
+
import { CommitteeAttestation } from '../block/index.js';
|
|
9
10
|
import { L2Block } from '../block/l2_block.js';
|
|
10
11
|
import type { PublishedL2Block } from '../block/published_l2_block.js';
|
|
11
12
|
import { computeContractAddressFromInstance } from '../contract/contract_address.js';
|
|
@@ -299,7 +300,7 @@ export async function randomPublishedL2Block(
|
|
|
299
300
|
};
|
|
300
301
|
|
|
301
302
|
const signers = opts.signers ?? times(3, () => Secp256k1Signer.random());
|
|
302
|
-
const
|
|
303
|
+
const atts = await Promise.all(
|
|
303
304
|
signers.map(signer =>
|
|
304
305
|
makeBlockAttestation({
|
|
305
306
|
signer,
|
|
@@ -310,6 +311,8 @@ export async function randomPublishedL2Block(
|
|
|
310
311
|
}),
|
|
311
312
|
),
|
|
312
313
|
);
|
|
313
|
-
const
|
|
314
|
-
|
|
314
|
+
const attestations = atts.map(
|
|
315
|
+
(attestation, i) => new CommitteeAttestation(signers[i].address, attestation.signature),
|
|
316
|
+
);
|
|
317
|
+
return { block, l1, attestations };
|
|
315
318
|
}
|
package/src/tx/processed_tx.ts
CHANGED
|
@@ -99,7 +99,7 @@ export async function makeProcessedTxFromPrivateOnlyTx(
|
|
|
99
99
|
[feePaymentPublicDataWrite],
|
|
100
100
|
data.end.privateLogs.filter(l => !l.isEmpty()),
|
|
101
101
|
[],
|
|
102
|
-
|
|
102
|
+
tx.getContractClassLogs(),
|
|
103
103
|
);
|
|
104
104
|
|
|
105
105
|
const gasUsed = {
|
|
@@ -147,10 +147,9 @@ export async function makeProcessedTxFromTxWithPublicCalls(
|
|
|
147
147
|
...(revertCode.isOK() ? tx.data.forPublic!.revertibleAccumulatedData.privateLogs : []),
|
|
148
148
|
].filter(l => !l.isEmpty());
|
|
149
149
|
|
|
150
|
-
const contractClassLogs =
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
].filter(l => !l.isEmpty());
|
|
150
|
+
const contractClassLogs = revertCode.isOK()
|
|
151
|
+
? tx.getContractClassLogs()
|
|
152
|
+
: tx.getSplitContractClassLogs(false /* revertible */);
|
|
154
153
|
|
|
155
154
|
const txEffect = new TxEffect(
|
|
156
155
|
revertCode,
|
package/src/tx/tx.ts
CHANGED
|
@@ -11,7 +11,6 @@ import type { GasSettings } from '../gas/gas_settings.js';
|
|
|
11
11
|
import type { GetPublicLogsResponse } from '../interfaces/get_logs_response.js';
|
|
12
12
|
import type { L2LogsSource } from '../interfaces/l2_logs_source.js';
|
|
13
13
|
import type { PublicCallRequest } from '../kernel/index.js';
|
|
14
|
-
import type { ScopedLogHash } from '../kernel/log_hash.js';
|
|
15
14
|
import { PrivateKernelTailCircuitPublicInputs } from '../kernel/private_kernel_tail_circuit_public_inputs.js';
|
|
16
15
|
import { ContractClassLog, ContractClassLogFields } from '../logs/contract_class_log.js';
|
|
17
16
|
import { Gossipable } from '../p2p/gossipable.js';
|
|
@@ -42,9 +41,11 @@ export class Tx extends Gossipable {
|
|
|
42
41
|
*/
|
|
43
42
|
public readonly clientIvcProof: ClientIvcProof,
|
|
44
43
|
/**
|
|
45
|
-
* Contract class
|
|
44
|
+
* Contract class log fields emitted from the tx.
|
|
45
|
+
* Their order should match the order of the log hashes returned from `this.data.getNonEmptyContractClassLogsHashes`.
|
|
46
|
+
* It's checked in data_validator.ts
|
|
46
47
|
*/
|
|
47
|
-
public
|
|
48
|
+
public contractClassLogFields: ContractClassLogFields[],
|
|
48
49
|
/**
|
|
49
50
|
* An array of calldata for the enqueued public function calls and the teardown function call.
|
|
50
51
|
*/
|
|
@@ -120,7 +121,7 @@ export class Tx extends Gossipable {
|
|
|
120
121
|
return serializeToBuffer([
|
|
121
122
|
this.data,
|
|
122
123
|
this.clientIvcProof,
|
|
123
|
-
serializeArrayOfBufferableToVector(this.
|
|
124
|
+
serializeArrayOfBufferableToVector(this.contractClassLogFields, 1),
|
|
124
125
|
serializeArrayOfBufferableToVector(this.publicFunctionCalldata, 1),
|
|
125
126
|
]);
|
|
126
127
|
}
|
|
@@ -130,14 +131,14 @@ export class Tx extends Gossipable {
|
|
|
130
131
|
.object({
|
|
131
132
|
data: PrivateKernelTailCircuitPublicInputs.schema,
|
|
132
133
|
clientIvcProof: ClientIvcProof.schema,
|
|
133
|
-
|
|
134
|
+
contractClassLogFields: z.array(ContractClassLogFields.schema),
|
|
134
135
|
publicFunctionCalldata: z.array(HashedValues.schema),
|
|
135
136
|
})
|
|
136
137
|
.transform(Tx.from);
|
|
137
138
|
}
|
|
138
139
|
|
|
139
140
|
static from(fields: FieldsOf<Tx>) {
|
|
140
|
-
return new Tx(fields.data, fields.clientIvcProof, fields.
|
|
141
|
+
return new Tx(fields.data, fields.clientIvcProof, fields.contractClassLogFields, fields.publicFunctionCalldata);
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
/**
|
|
@@ -149,43 +150,32 @@ export class Tx extends Gossipable {
|
|
|
149
150
|
return logsSource.getPublicLogs({ txHash: await this.getTxHash() });
|
|
150
151
|
}
|
|
151
152
|
|
|
153
|
+
getContractClassLogs(): ContractClassLog[] {
|
|
154
|
+
const logHashes = this.data.getNonEmptyContractClassLogsHashes();
|
|
155
|
+
return logHashes.map((logHash, i) =>
|
|
156
|
+
ContractClassLog.from({
|
|
157
|
+
contractAddress: logHash.contractAddress,
|
|
158
|
+
fields: this.contractClassLogFields[i],
|
|
159
|
+
emittedLength: logHash.logHash.length,
|
|
160
|
+
}),
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
|
|
152
164
|
/**
|
|
153
165
|
* Gets either revertible or non revertible contract class logs emitted by this tx.
|
|
154
166
|
* @param revertible - true for revertible only logs, false for non reverible only logs.
|
|
155
167
|
* @returns The requested logs.
|
|
156
168
|
*/
|
|
157
|
-
|
|
158
|
-
// Should only be called on txs with public calls
|
|
169
|
+
getSplitContractClassLogs(revertible: boolean): ContractClassLog[] {
|
|
159
170
|
if (!this.data.forPublic) {
|
|
160
|
-
|
|
171
|
+
throw new Error('`getSplitContractClassLogs` should only be called on txs with public calls');
|
|
161
172
|
}
|
|
162
|
-
const contractClassLogsHashes = revertible
|
|
163
|
-
? this.data.forPublic.revertibleAccumulatedData.contractClassLogsHashes.filter(h => !h.isEmpty())
|
|
164
|
-
: this.data.forPublic.nonRevertibleAccumulatedData.contractClassLogsHashes.filter(h => !h.isEmpty());
|
|
165
|
-
return await this.filterContractClassLogs(contractClassLogsHashes, silo);
|
|
166
|
-
}
|
|
167
173
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
*/
|
|
174
|
-
async filterContractClassLogs(logHashes: ScopedLogHash[], silo: boolean = false): Promise<ContractClassLog[]> {
|
|
175
|
-
const contractClassLogs = [];
|
|
176
|
-
for (const fields of this.contractClassLogs) {
|
|
177
|
-
const hashedLog = await fields.hash();
|
|
178
|
-
const logHash = logHashes.find(hash => hash.value.equals(hashedLog));
|
|
179
|
-
if (logHash) {
|
|
180
|
-
const log = ContractClassLog.from({
|
|
181
|
-
contractAddress: logHash.contractAddress,
|
|
182
|
-
fields,
|
|
183
|
-
emittedLength: logHash.logHash.length,
|
|
184
|
-
});
|
|
185
|
-
contractClassLogs.push(silo ? await log.silo() : log);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return contractClassLogs;
|
|
174
|
+
const contractClassLogs = this.getContractClassLogs();
|
|
175
|
+
const numNonRevertible = this.data.forPublic.nonRevertibleAccumulatedData.contractClassLogsHashes.filter(
|
|
176
|
+
h => !h.isEmpty(),
|
|
177
|
+
).length;
|
|
178
|
+
return revertible ? contractClassLogs.slice(numNonRevertible) : contractClassLogs.slice(0, numNonRevertible);
|
|
189
179
|
}
|
|
190
180
|
|
|
191
181
|
/**
|
|
@@ -246,7 +236,7 @@ export class Tx extends Gossipable {
|
|
|
246
236
|
return (
|
|
247
237
|
this.data.getSize() +
|
|
248
238
|
this.clientIvcProof.clientIvcProofBuffer.length +
|
|
249
|
-
arraySerializedSizeOfNonEmpty(this.
|
|
239
|
+
arraySerializedSizeOfNonEmpty(this.contractClassLogFields) +
|
|
250
240
|
this.publicFunctionCalldata.reduce((accum, cd) => accum + cd.getSize(), 0)
|
|
251
241
|
);
|
|
252
242
|
}
|
|
@@ -290,9 +280,9 @@ export class Tx extends Gossipable {
|
|
|
290
280
|
static clone(tx: Tx): Tx {
|
|
291
281
|
const publicInputs = PrivateKernelTailCircuitPublicInputs.fromBuffer(tx.data.toBuffer());
|
|
292
282
|
const clientIvcProof = ClientIvcProof.fromBuffer(tx.clientIvcProof.toBuffer());
|
|
293
|
-
const
|
|
283
|
+
const contractClassLogFields = tx.contractClassLogFields.map(p => p.clone());
|
|
294
284
|
const publicFunctionCalldata = tx.publicFunctionCalldata.map(cd => HashedValues.fromBuffer(cd.toBuffer()));
|
|
295
|
-
const clonedTx = new Tx(publicInputs, clientIvcProof,
|
|
285
|
+
const clonedTx = new Tx(publicInputs, clientIvcProof, contractClassLogFields, publicFunctionCalldata);
|
|
296
286
|
if (tx.txHash) {
|
|
297
287
|
clonedTx.setTxHash(TxHash.fromBuffer(tx.txHash.toBuffer()));
|
|
298
288
|
}
|
|
@@ -314,22 +304,6 @@ export class Tx extends Gossipable {
|
|
|
314
304
|
);
|
|
315
305
|
}
|
|
316
306
|
|
|
317
|
-
/**
|
|
318
|
-
* Filters out logs from functions that are not present in the provided kernel output.
|
|
319
|
-
*
|
|
320
|
-
* The purpose of this is to remove logs that got dropped due to a revert,
|
|
321
|
-
* in which case, we only have the kernel's hashes to go on, as opposed to
|
|
322
|
-
* this grouping by function maintained in this class.
|
|
323
|
-
*
|
|
324
|
-
* The logic therefore is to drop all FunctionLogs if any constituent hash
|
|
325
|
-
* does not appear in the provided hashes: it is impossible for part of a
|
|
326
|
-
* function to revert.
|
|
327
|
-
*/
|
|
328
|
-
// TODO: don't modify the tx object directly. The preimages should match the log hashes. When did the log hashes change?
|
|
329
|
-
public async filterRevertedLogs() {
|
|
330
|
-
this.contractClassLogs = (await this.getSplitContractClassLogs(false)).map(log => log.fields);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
307
|
#combinePublicCallRequestWithCallData(request: PublicCallRequest) {
|
|
334
308
|
const calldataMap = this.getCalldataMap();
|
|
335
309
|
// Assume empty calldata if nothing is given for the hash.
|
package/src/tx/tx_effect.ts
CHANGED
|
@@ -232,15 +232,33 @@ export class TxEffect {
|
|
|
232
232
|
return thisLayer[0];
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
static async random(
|
|
235
|
+
static async random(
|
|
236
|
+
numPublicCallsPerTx = 3,
|
|
237
|
+
numPublicLogsPerCall = 1,
|
|
238
|
+
maxEffects: number | undefined = undefined,
|
|
239
|
+
): Promise<TxEffect> {
|
|
236
240
|
return new TxEffect(
|
|
237
241
|
RevertCode.random(),
|
|
238
242
|
TxHash.random(),
|
|
239
243
|
new Fr(Math.floor(Math.random() * 100_000)),
|
|
240
|
-
makeTuple(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
+
makeTuple(
|
|
245
|
+
maxEffects === undefined ? MAX_NOTE_HASHES_PER_TX : Math.min(maxEffects, MAX_NOTE_HASHES_PER_TX),
|
|
246
|
+
Fr.random,
|
|
247
|
+
),
|
|
248
|
+
makeTuple(
|
|
249
|
+
maxEffects === undefined ? MAX_NULLIFIERS_PER_TX : Math.min(maxEffects, MAX_NULLIFIERS_PER_TX),
|
|
250
|
+
Fr.random,
|
|
251
|
+
),
|
|
252
|
+
makeTuple(
|
|
253
|
+
maxEffects === undefined ? MAX_L2_TO_L1_MSGS_PER_TX : Math.min(maxEffects, MAX_L2_TO_L1_MSGS_PER_TX),
|
|
254
|
+
Fr.random,
|
|
255
|
+
),
|
|
256
|
+
makeTuple(
|
|
257
|
+
maxEffects === undefined
|
|
258
|
+
? MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
259
|
+
: Math.min(maxEffects, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX),
|
|
260
|
+
PublicDataWrite.random,
|
|
261
|
+
),
|
|
244
262
|
makeTuple(MAX_PRIVATE_LOGS_PER_TX, () => PrivateLog.random()),
|
|
245
263
|
await makeTupleAsync(numPublicCallsPerTx * numPublicLogsPerCall, async () => await PublicLog.random()),
|
|
246
264
|
await makeTupleAsync(MAX_CONTRACT_CLASS_LOGS_PER_TX, ContractClassLog.random),
|
package/src/tx/tx_hash.ts
CHANGED
package/src/validators/types.ts
CHANGED
package/src/vks/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './verification_key.js';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './vk_data.js';
|