@aztec/stdlib 0.87.7 → 1.0.0-nightly.20250604
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 +1188 -25
- package/dest/avm/avm.d.ts.map +1 -1
- package/dest/avm/avm.js +31 -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 +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 +572 -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/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 +576 -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 +25 -4
- package/src/avm/avm_accumulated_data.ts +93 -0
- package/src/avm/avm_circuit_public_inputs.ts +22 -2
- 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/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 +80 -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
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
|
}
|
|
@@ -453,6 +463,7 @@ function makeAvmCircuitPublicInputs(seed = 1) {
|
|
|
453
463
|
makeGas(seed + 0x20),
|
|
454
464
|
makeGasSettings(),
|
|
455
465
|
makeAztecAddress(seed + 0x40),
|
|
466
|
+
makePublicCallRequestArrayLengths(seed + 0x40),
|
|
456
467
|
makeTuple(MAX_ENQUEUED_CALLS_PER_TX, makePublicCallRequest, seed + 0x100),
|
|
457
468
|
makeTuple(MAX_ENQUEUED_CALLS_PER_TX, makePublicCallRequest, seed + 0x200),
|
|
458
469
|
makePublicCallRequest(seed + 0x300),
|
|
@@ -462,6 +473,7 @@ function makeAvmCircuitPublicInputs(seed = 1) {
|
|
|
462
473
|
makePrivateToAvmAccumulatedData(seed + 0x600),
|
|
463
474
|
makeTreeSnapshots(seed + 0x700),
|
|
464
475
|
makeGas(seed + 0x750),
|
|
476
|
+
makeAvmAccumulatedDataArrayLengths(seed + 0x800),
|
|
465
477
|
makeAvmAccumulatedData(seed + 0x800),
|
|
466
478
|
fr(seed + 0x900),
|
|
467
479
|
false,
|
|
@@ -533,6 +545,10 @@ export function makePublicCallRequest(seed = 1) {
|
|
|
533
545
|
return new PublicCallRequest(makeAztecAddress(seed), makeAztecAddress(seed + 1), false, fr(seed + 0x3));
|
|
534
546
|
}
|
|
535
547
|
|
|
548
|
+
export function makePublicCallRequestArrayLengths(seed = 1) {
|
|
549
|
+
return new PublicCallRequestArrayLengths(seed, seed + 1, seed % 2 === 0);
|
|
550
|
+
}
|
|
551
|
+
|
|
536
552
|
function makeCountedPublicCallRequest(seed = 1) {
|
|
537
553
|
return new CountedPublicCallRequest(makePublicCallRequest(seed), seed + 0x100);
|
|
538
554
|
}
|
|
@@ -742,8 +758,7 @@ export function makePreviousRollupData(
|
|
|
742
758
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
743
759
|
seed + 0x50,
|
|
744
760
|
),
|
|
745
|
-
|
|
746
|
-
makeMembershipWitness(VK_TREE_HEIGHT, seed + 0x120),
|
|
761
|
+
makeVkData(seed + 0x100),
|
|
747
762
|
);
|
|
748
763
|
}
|
|
749
764
|
|
|
@@ -763,8 +778,7 @@ export function makePreviousRollupBlockData(
|
|
|
763
778
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
764
779
|
seed + 0x50,
|
|
765
780
|
),
|
|
766
|
-
|
|
767
|
-
makeMembershipWitness(VK_TREE_HEIGHT, seed + 0x120),
|
|
781
|
+
makeVkData(seed + 0x100),
|
|
768
782
|
);
|
|
769
783
|
}
|
|
770
784
|
|
|
@@ -881,13 +895,10 @@ export function makeRootParityInputs(seed = 0): RootParityInputs {
|
|
|
881
895
|
*/
|
|
882
896
|
export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs {
|
|
883
897
|
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),
|
|
898
|
+
fr(seed + 0x100),
|
|
899
|
+
fr(seed + 0x200),
|
|
900
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x300),
|
|
901
|
+
makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
|
|
891
902
|
fr(seed + 0x700),
|
|
892
903
|
fr(seed + 0x701),
|
|
893
904
|
fr(seed + 0x702),
|
|
@@ -1070,15 +1081,15 @@ export function makePrivateBaseStateDiffHints(seed = 1): PrivateBaseStateDiffHin
|
|
|
1070
1081
|
);
|
|
1071
1082
|
}
|
|
1072
1083
|
|
|
1073
|
-
function
|
|
1074
|
-
return new
|
|
1084
|
+
function makeVkData(seed = 1) {
|
|
1085
|
+
return new VkData(VerificationKeyData.makeFakeHonk(), seed, makeTuple(VK_TREE_HEIGHT, fr, seed + 0x100));
|
|
1075
1086
|
}
|
|
1076
1087
|
|
|
1077
1088
|
function makePrivateTubeData(seed = 1, kernelPublicInputs?: PrivateToRollupKernelCircuitPublicInputs) {
|
|
1078
1089
|
return new PrivateTubeData(
|
|
1079
1090
|
kernelPublicInputs ?? makePrivateToRollupKernelCircuitPublicInputs(seed, true),
|
|
1080
1091
|
makeRecursiveProof<typeof TUBE_PROOF_LENGTH>(TUBE_PROOF_LENGTH, seed + 0x100),
|
|
1081
|
-
|
|
1092
|
+
makeVkData(seed + 0x200),
|
|
1082
1093
|
);
|
|
1083
1094
|
}
|
|
1084
1095
|
|
|
@@ -1095,11 +1106,7 @@ function makePrivateBaseRollupHints(seed = 1) {
|
|
|
1095
1106
|
|
|
1096
1107
|
const archiveRootMembershipWitness = makeMembershipWitness(ARCHIVE_HEIGHT, seed + 0x9000);
|
|
1097
1108
|
|
|
1098
|
-
const
|
|
1099
|
-
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
1100
|
-
makeContractClassLogFields,
|
|
1101
|
-
seed + 0x800,
|
|
1102
|
-
);
|
|
1109
|
+
const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, makeContractClassLogFields, seed + 0x800);
|
|
1103
1110
|
|
|
1104
1111
|
const constants = makeConstantRollupData(0x100);
|
|
1105
1112
|
|
|
@@ -1111,7 +1118,7 @@ function makePrivateBaseRollupHints(seed = 1) {
|
|
|
1111
1118
|
stateDiffHints,
|
|
1112
1119
|
feePayerFeeJuiceBalanceReadHint,
|
|
1113
1120
|
archiveRootMembershipWitness,
|
|
1114
|
-
|
|
1121
|
+
contractClassLogsFields,
|
|
1115
1122
|
constants,
|
|
1116
1123
|
});
|
|
1117
1124
|
}
|
|
@@ -1121,18 +1128,14 @@ function makePublicBaseRollupHints(seed = 1) {
|
|
|
1121
1128
|
|
|
1122
1129
|
const archiveRootMembershipWitness = makeMembershipWitness(ARCHIVE_HEIGHT, seed + 0x9000);
|
|
1123
1130
|
|
|
1124
|
-
const
|
|
1125
|
-
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
1126
|
-
makeContractClassLogFields,
|
|
1127
|
-
seed + 0x800,
|
|
1128
|
-
);
|
|
1131
|
+
const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, makeContractClassLogFields, seed + 0x800);
|
|
1129
1132
|
|
|
1130
1133
|
const constants = makeConstantRollupData(0x100);
|
|
1131
1134
|
|
|
1132
1135
|
return PublicBaseRollupHints.from({
|
|
1133
1136
|
startSpongeBlob,
|
|
1134
1137
|
archiveRootMembershipWitness,
|
|
1135
|
-
|
|
1138
|
+
contractClassLogsFields,
|
|
1136
1139
|
constants,
|
|
1137
1140
|
});
|
|
1138
1141
|
}
|
|
@@ -1151,15 +1154,15 @@ function makePublicTubeData(seed = 1) {
|
|
|
1151
1154
|
return new PublicTubeData(
|
|
1152
1155
|
makePrivateToPublicKernelCircuitPublicInputs(seed),
|
|
1153
1156
|
makeRecursiveProof<typeof TUBE_PROOF_LENGTH>(TUBE_PROOF_LENGTH, seed + 0x100),
|
|
1154
|
-
|
|
1157
|
+
makeVkData(seed + 0x200),
|
|
1155
1158
|
);
|
|
1156
1159
|
}
|
|
1157
1160
|
|
|
1158
1161
|
function makeAvmProofData(seed = 1) {
|
|
1159
1162
|
return new AvmProofData(
|
|
1160
1163
|
makeAvmCircuitPublicInputs(seed),
|
|
1161
|
-
makeRecursiveProof<typeof
|
|
1162
|
-
|
|
1164
|
+
makeRecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, seed + 0x100),
|
|
1165
|
+
makeVkData(seed + 0x200),
|
|
1163
1166
|
);
|
|
1164
1167
|
}
|
|
1165
1168
|
|
|
@@ -1486,17 +1489,21 @@ export function makeAvmTxHint(seed = 0): AvmTxHint {
|
|
|
1486
1489
|
return new AvmTxHint(
|
|
1487
1490
|
`txhash-${seed}`,
|
|
1488
1491
|
makeGlobalVariables(seed),
|
|
1492
|
+
makeGasSettings(),
|
|
1489
1493
|
{
|
|
1490
1494
|
noteHashes: makeArray((seed % 20) + 4, i => new Fr(i), seed + 0x1000),
|
|
1491
1495
|
nullifiers: makeArray((seed % 20) + 4, i => new Fr(i), seed + 0x2000),
|
|
1496
|
+
l2ToL1Messages: makeArray((seed % 20) + 4, i => makeScopedL2ToL1Message(i), seed + 0x3000),
|
|
1492
1497
|
},
|
|
1493
1498
|
{
|
|
1494
1499
|
noteHashes: makeArray((seed % 20) + 4, i => new Fr(i), seed + 0x3000),
|
|
1495
1500
|
nullifiers: makeArray((seed % 20) + 4, i => new Fr(i), seed + 0x4000),
|
|
1501
|
+
l2ToL1Messages: makeArray((seed % 20) + 4, i => makeScopedL2ToL1Message(i), seed + 0x5000),
|
|
1496
1502
|
},
|
|
1497
1503
|
makeArray((seed % 20) + 4, i => makeAvmEnqueuedCallHint(i), seed + 0x5000), // setupEnqueuedCalls
|
|
1498
1504
|
makeArray((seed % 20) + 4, i => makeAvmEnqueuedCallHint(i), seed + 0x6000), // appLogicEnqueuedCalls
|
|
1499
1505
|
makeAvmEnqueuedCallHint(seed + 0x7000), // teardownEnqueuedCall
|
|
1506
|
+
makeGas(seed + 0x8000), // gasUsedByPrivate
|
|
1500
1507
|
);
|
|
1501
1508
|
}
|
|
1502
1509
|
|
|
@@ -1647,27 +1654,55 @@ export async function makeBloatedProcessedTx({
|
|
|
1647
1654
|
|
|
1648
1655
|
if (privateOnly) {
|
|
1649
1656
|
const data = makePrivateToRollupAccumulatedData(seed + 0x1000);
|
|
1657
|
+
clearContractClassLogs(data);
|
|
1650
1658
|
|
|
1651
1659
|
const transactionFee = tx.data.gasUsed.computeFee(globalVariables.gasFees);
|
|
1652
1660
|
feePaymentPublicDataWrite ??= new PublicDataWrite(Fr.random(), Fr.random());
|
|
1653
1661
|
|
|
1654
|
-
clearLogs(data);
|
|
1655
|
-
|
|
1656
1662
|
tx.data.forRollup!.end = data;
|
|
1657
1663
|
|
|
1658
1664
|
return makeProcessedTxFromPrivateOnlyTx(tx, transactionFee, feePaymentPublicDataWrite, globalVariables);
|
|
1659
1665
|
} else {
|
|
1660
|
-
const
|
|
1661
|
-
const revertibleData = makePrivateToPublicAccumulatedData(seed + 0x1000);
|
|
1666
|
+
const dataFromPrivate = tx.data.forPublic!;
|
|
1662
1667
|
|
|
1663
|
-
|
|
1668
|
+
const nonRevertibleData = dataFromPrivate.nonRevertibleAccumulatedData;
|
|
1664
1669
|
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1670
|
+
// Create revertible data.
|
|
1671
|
+
const revertibleData = makePrivateToPublicAccumulatedData(seed + 0x1000);
|
|
1672
|
+
clearContractClassLogs(revertibleData);
|
|
1673
|
+
revertibleData.nullifiers[MAX_NULLIFIERS_PER_TX - 1] = Fr.ZERO; // Leave one space for the tx hash nullifier in nonRevertibleAccumulatedData.
|
|
1674
|
+
dataFromPrivate.revertibleAccumulatedData = revertibleData;
|
|
1668
1675
|
|
|
1676
|
+
// Create avm output.
|
|
1669
1677
|
const avmOutput = AvmCircuitPublicInputs.empty();
|
|
1678
|
+
// Assign data from private.
|
|
1670
1679
|
avmOutput.globalVariables = globalVariables;
|
|
1680
|
+
avmOutput.startGasUsed = tx.data.gasUsed;
|
|
1681
|
+
avmOutput.gasSettings = gasSettings;
|
|
1682
|
+
avmOutput.feePayer = feePayer;
|
|
1683
|
+
avmOutput.publicCallRequestArrayLengths = new PublicCallRequestArrayLengths(
|
|
1684
|
+
tx.data.numberOfNonRevertiblePublicCallRequests(),
|
|
1685
|
+
tx.data.numberOfRevertiblePublicCallRequests(),
|
|
1686
|
+
tx.data.hasTeardownPublicCallRequest(),
|
|
1687
|
+
);
|
|
1688
|
+
avmOutput.publicSetupCallRequests = dataFromPrivate.nonRevertibleAccumulatedData.publicCallRequests;
|
|
1689
|
+
avmOutput.publicAppLogicCallRequests = dataFromPrivate.revertibleAccumulatedData.publicCallRequests;
|
|
1690
|
+
avmOutput.publicTeardownCallRequest = dataFromPrivate.publicTeardownCallRequest;
|
|
1691
|
+
avmOutput.previousNonRevertibleAccumulatedData = new PrivateToAvmAccumulatedData(
|
|
1692
|
+
dataFromPrivate.nonRevertibleAccumulatedData.noteHashes,
|
|
1693
|
+
dataFromPrivate.nonRevertibleAccumulatedData.nullifiers,
|
|
1694
|
+
dataFromPrivate.nonRevertibleAccumulatedData.l2ToL1Msgs,
|
|
1695
|
+
);
|
|
1696
|
+
avmOutput.previousNonRevertibleAccumulatedDataArrayLengths =
|
|
1697
|
+
avmOutput.previousNonRevertibleAccumulatedData.getArrayLengths();
|
|
1698
|
+
avmOutput.previousRevertibleAccumulatedData = new PrivateToAvmAccumulatedData(
|
|
1699
|
+
dataFromPrivate.revertibleAccumulatedData.noteHashes,
|
|
1700
|
+
dataFromPrivate.revertibleAccumulatedData.nullifiers,
|
|
1701
|
+
dataFromPrivate.revertibleAccumulatedData.l2ToL1Msgs,
|
|
1702
|
+
);
|
|
1703
|
+
avmOutput.previousRevertibleAccumulatedDataArrayLengths =
|
|
1704
|
+
avmOutput.previousRevertibleAccumulatedData.getArrayLengths();
|
|
1705
|
+
// Assign final data emitted from avm.
|
|
1671
1706
|
avmOutput.accumulatedData.noteHashes = revertibleData.noteHashes;
|
|
1672
1707
|
avmOutput.accumulatedData.nullifiers = mergeAccumulatedData(
|
|
1673
1708
|
nonRevertibleData.nullifiers,
|
|
@@ -1680,8 +1715,10 @@ export async function makeBloatedProcessedTx({
|
|
|
1680
1715
|
i => new PublicDataWrite(new Fr(i), new Fr(i + 10)),
|
|
1681
1716
|
seed + 0x2000,
|
|
1682
1717
|
);
|
|
1718
|
+
avmOutput.gasSettings = clampGasSettingsForAVM(gasSettings, tx.data.gasUsed);
|
|
1683
1719
|
|
|
1684
1720
|
const avmCircuitInputs = await makeAvmCircuitInputs(seed + 0x3000, { publicInputs: avmOutput });
|
|
1721
|
+
|
|
1685
1722
|
const gasUsed = {
|
|
1686
1723
|
totalGas: Gas.empty(),
|
|
1687
1724
|
teardownGas: Gas.empty(),
|
|
@@ -1702,8 +1739,8 @@ export async function makeBloatedProcessedTx({
|
|
|
1702
1739
|
}
|
|
1703
1740
|
}
|
|
1704
1741
|
|
|
1705
|
-
// Remove all
|
|
1706
|
-
|
|
1707
|
-
|
|
1742
|
+
// Remove all contract class log hashes from the data as they are not required for the current tests.
|
|
1743
|
+
// If they are needed one day, change this to create the random fields first and update the data with real hashes of those fields.
|
|
1744
|
+
function clearContractClassLogs(data: { contractClassLogsHashes: ScopedLogHash[] }) {
|
|
1708
1745
|
data.contractClassLogsHashes.forEach((_, i) => (data.contractClassLogsHashes[i] = ScopedLogHash.empty()));
|
|
1709
1746
|
}
|
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';
|
|
@@ -7,26 +7,26 @@ import { bufferToHex } from '@aztec/foundation/string';
|
|
|
7
7
|
import type { UInt32 } from '../types/shared.js';
|
|
8
8
|
import { VerificationKeyData } from './verification_key.js';
|
|
9
9
|
|
|
10
|
-
export class
|
|
10
|
+
export class VkData {
|
|
11
11
|
constructor(
|
|
12
12
|
public vk: VerificationKeyData,
|
|
13
13
|
/**
|
|
14
14
|
* Index of the vk in the vk tree.
|
|
15
15
|
*/
|
|
16
|
-
public
|
|
16
|
+
public leafIndex: UInt32,
|
|
17
17
|
/**
|
|
18
18
|
* Sibling path of the vk in the vk tree.
|
|
19
19
|
*/
|
|
20
|
-
public
|
|
20
|
+
public siblingPath: Tuple<Fr, typeof VK_TREE_HEIGHT>,
|
|
21
21
|
) {}
|
|
22
22
|
|
|
23
23
|
static empty() {
|
|
24
|
-
return new
|
|
24
|
+
return new VkData(VerificationKeyData.empty(), 0, makeTuple(VK_TREE_HEIGHT, Fr.zero));
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
28
28
|
const reader = BufferReader.asReader(buffer);
|
|
29
|
-
return new
|
|
29
|
+
return new VkData(
|
|
30
30
|
reader.readObject(VerificationKeyData),
|
|
31
31
|
reader.readNumber(),
|
|
32
32
|
reader.readArray(VK_TREE_HEIGHT, Fr),
|
|
@@ -34,7 +34,7 @@ export class VkWitnessData {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
toBuffer() {
|
|
37
|
-
return serializeToBuffer(this.vk, this.
|
|
37
|
+
return serializeToBuffer(this.vk, this.leafIndex, this.siblingPath);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
toString() {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vk_witness_data.d.ts","sourceRoot":"","sources":["../../src/vks/vk_witness_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAqB,MAAM,6BAA6B,CAAC;AAG1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,aAAa;IAEf,EAAE,EAAE,mBAAmB;IAC9B;;OAEG;IACI,OAAO,EAAE,MAAM;IACtB;;OAEG;IACI,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC;gBARxC,EAAE,EAAE,mBAAmB;IAC9B;;OAEG;IACI,OAAO,EAAE,MAAM;IACtB;;OAEG;IACI,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC;IAGjD,MAAM,CAAC,KAAK;IAIZ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAS/C,QAAQ;IAIR,QAAQ;CAGT"}
|