Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,6 @@
#define AVM_PUBLIC_INPUTS_COLUMNS_COMBINED_LENGTH 18740
#define AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED 16400
#define AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED 1000
#define AVM_MAX_PROCESSABLE_L2_GAS 6000000
#define AVM_PC_SIZE_IN_BITS 32
#define AVM_MAX_OPERANDS 7
#define AVM_MAX_REGISTERS 6
Expand Down Expand Up @@ -221,7 +220,7 @@
#define AVM_L1TOL2MSGEXISTS_BASE_L2_GAS 540
#define AVM_GETCONTRACTINSTANCE_BASE_L2_GAS 6108
#define AVM_EMITPUBLICLOG_BASE_L2_GAS 15
#define AVM_SENDL2TOL1MSG_BASE_L2_GAS 478
#define AVM_SENDL2TOL1MSG_BASE_L2_GAS 78
#define AVM_CALL_BASE_L2_GAS 9936
#define AVM_STATICCALL_BASE_L2_GAS 9936
#define AVM_RETURN_BASE_L2_GAS 9
Expand All @@ -237,12 +236,13 @@
#define AVM_TORADIXBE_DYN_L2_GAS 3
#define AVM_BITWISE_DYN_L2_GAS 3
#define AVM_EMITPUBLICLOG_DYN_L2_GAS 3
#define AVM_EMITNOTEHASH_BASE_DA_GAS 512
#define AVM_EMITNULLIFIER_BASE_DA_GAS 512
#define AVM_SENDL2TOL1MSG_BASE_DA_GAS 512
#define AVM_EMITPUBLICLOG_BASE_DA_GAS 1024
#define AVM_EMITPUBLICLOG_DYN_DA_GAS 512
#define AVM_SSTORE_DYN_DA_GAS 1024
#define AVM_EMITNOTEHASH_BASE_DA_GAS 32
#define AVM_EMITNULLIFIER_BASE_DA_GAS 32
#define AVM_SENDL2TOL1MSG_BASE_DA_GAS 32
#define AVM_EMITPUBLICLOG_BASE_DA_GAS 64
#define AVM_EMITPUBLICLOG_DYN_DA_GAS 32
#define AVM_SSTORE_DYN_DA_GAS 64
#define AVM_MAX_PROCESSABLE_L2_GAS 17116620
#define AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_HEIGHT 6
#define AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_INITIAL_ROOT \
"0x2870b93163d4fd6ada360fe48ee1e8e8e69308af34cdfaeffacbbe5929e2466d"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class AvmHardCodedVKAndHash {
using FF = bb::curve::BN254::ScalarField;

// Precomputed VK hash (hash of all commitments below).
static FF vk_hash() { return FF(uint256_t("0x1f47e68404e58fcde864ff61573d61acab5832efb230f9a32ae68044d31dfd19")); }
static FF vk_hash() { return FF(uint256_t("0x07f2022571cb67e211da9b225c4527e176d9bc983c60265b70c0d07388f1fd84")); }

static constexpr std::array<Commitment, NUM_PRECOMPUTED_ENTITIES> get_all()
{
Expand Down Expand Up @@ -59,21 +59,21 @@ class AvmHardCodedVKAndHash {
uint256_t(
"0x09f2eef32136799118634a108531dc248506d5f58f64885575b245865b56d48e")), // precomputed_exec_opcode
Commitment(
uint256_t("0x0188169f0225c14e925347c4f9f192d191b2ab6ca2fbc1d0453f48af5d9c667b"),
uint256_t("0x09bd44905d676585d8c7a91c8ba8fd6b1b598326cb80b95e80b4b39703c7e2c8"),
uint256_t(
"0x25b997de6f92af3ea3b409b41437fea01980b344a12fabc6b833656f26d6e954")), // precomputed_exec_opcode_base_da_gas
"0x1bec3a67476715f88745bc09b1ea57859c8fe809fae4376efab6ba773ea7f6d4")), // precomputed_exec_opcode_base_da_gas
Commitment(
uint256_t("0x1ddbbb27c627edafce021d5f332867ac9234c6f507442633bff9a5dbb4d02803"),
uint256_t("0x0f5b3fee86f9815eb0be052412de7f2a4c82f678604ba9e161c4412529810057"),
uint256_t(
"0x10fda7a2360b21bbfbb1e815377adc0fa869bbcb4a46b29c31ae017893fdfb0d")), // precomputed_exec_opcode_dynamic_da_gas
"0x1ad065dec1d51664807b4d551d0eb8abe0b061b8380dde6d662e2df36a1f85c8")), // precomputed_exec_opcode_dynamic_da_gas
Commitment(
uint256_t("0x06c03e425e92d09aa8243220a0968b4d7d00c89e541a2b6095920883a8a6fa72"),
uint256_t(
"0x090dda25e7d64ab5cabe09fd80fbb731af2a98de7a608157dc10394b4fc022a4")), // precomputed_exec_opcode_dynamic_l2_gas
Commitment(
uint256_t("0x2216a1693dcb1cc83f57ea8058f681d71bdf0e6cfc839502cf16fb0a88a5f673"),
uint256_t("0x007aaedd69614e1f1917e5e0b3f41e04f900c6cf1eb8cebd77f7af7889fdd934"),
uint256_t(
"0x255e6760ed9adda61aca7d0b7d4bb28bb62e3cca6e860009461a9a1708184be2")), // precomputed_exec_opcode_opcode_gas
"0x1c26e9c86d373a46bc316b1fa41fdd140a6f19e272411d52466a6fff9dfa9fb3")), // precomputed_exec_opcode_opcode_gas
Commitment(
uint256_t("0x296def9415d1c96b4d8ab91df5f59ad8522a726f98461b1ab5c4d4c5b22471a4"),
uint256_t(
Expand Down
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ use types::{
abis::{gas::Gas, kernel_circuit_public_inputs::PrivateKernelCircuitPublicInputs},
constants::{
AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS,
DA_BYTES_PER_FIELD, DA_GAS_PER_BYTE, FIXED_AVM_STARTUP_L2_GAS,
L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH,
DA_GAS_PER_FIELD, FIXED_AVM_STARTUP_L2_GAS, FIXED_L2_GAS_FOR_TX_WITH_PUBLIC_CALLS,
L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH,
L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG,
},
traits::Empty,
Expand All @@ -14,23 +14,24 @@ struct BaseL2Gas {
nullifier: u32,
l2_to_l1_msg: u32,
private_log: u32,
contract_class_log: u32,
contract_class_log_field: u32,
}

global PRIVATE_ONLY_TX_L2_GAS: BaseL2Gas = BaseL2Gas {
note_hash: L2_GAS_PER_NOTE_HASH,
nullifier: L2_GAS_PER_NULLIFIER,
l2_to_l1_msg: L2_GAS_PER_L2_TO_L1_MSG,
private_log: L2_GAS_PER_PRIVATE_LOG,
contract_class_log: L2_GAS_PER_CONTRACT_CLASS_LOG,
contract_class_log_field: L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD,
};

global PUBLIC_TX_L2_GAS: BaseL2Gas = BaseL2Gas {
note_hash: AVM_EMITNOTEHASH_BASE_L2_GAS,
nullifier: AVM_EMITNULLIFIER_BASE_L2_GAS,
l2_to_l1_msg: AVM_SENDL2TOL1MSG_BASE_L2_GAS,
// The AVM doesn't process private logs and contract class logs, so the gas cost is the same as for private-only tx.
private_log: L2_GAS_PER_PRIVATE_LOG,
contract_class_log: L2_GAS_PER_CONTRACT_CLASS_LOG,
contract_class_log_field: L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD,
};

/// Meter the gas used for a private or public tx.
Expand Down Expand Up @@ -68,15 +69,18 @@ pub fn meter_gas_used(public_inputs: PrivateKernelCircuitPublicInputs, is_for_pu
metered_l2_gas += num_private_logs * l2_gas.private_log;

let num_contract_class_logs = data.contract_class_logs_hashes.length;
metered_da_fields +=
let num_contract_class_log_fields =
data.contract_class_logs_hashes.array.fold(0, |acc, l| acc + l.innermost().length);
metered_da_fields += num_contract_class_log_fields;
// Add `num_contract_class_logs` da fields below because each contract class log emits its contract address as an
// additional field.
// It is slightly more efficient to account for all extra fields at once, rather than adding one field per log individually.
metered_da_fields += num_contract_class_logs;
metered_l2_gas += num_contract_class_logs * l2_gas.contract_class_log;
metered_l2_gas += num_contract_class_log_fields * l2_gas.contract_class_log_field;

if is_for_public {
metered_l2_gas += FIXED_L2_GAS_FOR_TX_WITH_PUBLIC_CALLS;

let num_public_call_requests = data.public_call_requests.length;
metered_l2_gas += num_public_call_requests * FIXED_AVM_STARTUP_L2_GAS;
// Public call requests don't count towards DA fields.
Expand All @@ -88,7 +92,7 @@ pub fn meter_gas_used(public_inputs: PrivateKernelCircuitPublicInputs, is_for_pu
public_inputs.constants.tx_context.gas_settings.teardown_gas_limits
};

let metered_da_gas = metered_da_fields * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let metered_da_gas = metered_da_fields * DA_GAS_PER_FIELD;

Gas::tx_overhead() + Gas::new(metered_da_gas, metered_l2_gas) + teardown_gas
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,16 @@ use super::TestBuilder;
use types::{
abis::gas::Gas,
constants::{
CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, DA_BYTES_PER_FIELD, DA_GAS_PER_BYTE,
L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH,
L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX,
MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX,
MAX_PRIVATE_LOGS_PER_TX, PRIVATE_LOG_SIZE_IN_FIELDS,
CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, DA_GAS_PER_FIELD, L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD,
L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH, L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG,
MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX,
MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, PRIVATE_LOG_SIZE_IN_FIELDS,
},
};

/// A minimum (private) tx initialized in the TestBuilder contains a protocol nullifier, which must exist in every tx.
fn get_minimum_private_tx_gas_used() -> Gas {
let nullifier_gas_used =
Gas { da_gas: DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE, l2_gas: L2_GAS_PER_NULLIFIER };
let nullifier_gas_used = Gas { da_gas: DA_GAS_PER_FIELD, l2_gas: L2_GAS_PER_NULLIFIER };
Gas::tx_overhead() + nullifier_gas_used
}

Expand All @@ -30,7 +28,7 @@ fn with_note_hashes() {

builder.previous_kernel.append_siloed_note_hashes(3);

let da_gas = 3 * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let da_gas = 3 * DA_GAS_PER_FIELD;
let l2_gas = 3 * L2_GAS_PER_NOTE_HASH;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_private_tx_gas_used();

Expand All @@ -44,7 +42,7 @@ fn with_nullifiers() {

builder.previous_kernel.append_siloed_nullifiers(5);

let da_gas = 5 * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let da_gas = 5 * DA_GAS_PER_FIELD;
let l2_gas = 5 * L2_GAS_PER_NULLIFIER;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_private_tx_gas_used();

Expand All @@ -58,7 +56,7 @@ fn with_l2_to_l1_msgs() {

builder.previous_kernel.append_l2_to_l1_msgs(3);

let da_gas = 3 * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let da_gas = 3 * DA_GAS_PER_FIELD;
let l2_gas = 3 * L2_GAS_PER_L2_TO_L1_MSG;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_private_tx_gas_used();

Expand All @@ -74,8 +72,7 @@ fn with_private_logs() {
builder.previous_kernel.append_siloed_private_logs_with_lengths([2, 5, 1, 7]);

let da_gas = (2 + 5 + 1 + 7 + 4) // +4 for the length field of each private log.
* DA_BYTES_PER_FIELD
* DA_GAS_PER_BYTE;
* DA_GAS_PER_FIELD;
let l2_gas = 4 * L2_GAS_PER_PRIVATE_LOG;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_private_tx_gas_used();

Expand All @@ -90,9 +87,8 @@ fn with_contract_class_logs() {
builder.previous_kernel.append_contract_class_logs_with_lengths([11]);

let da_gas = (11 + 1) // +1 for the contract address.
* DA_BYTES_PER_FIELD
* DA_GAS_PER_BYTE;
let l2_gas = 1 * L2_GAS_PER_CONTRACT_CLASS_LOG;
* DA_GAS_PER_FIELD;
let l2_gas = 11 * L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_private_tx_gas_used();

let data = builder.execute();
Expand All @@ -108,19 +104,19 @@ fn full_side_effects() {
// Note hashes.
builder.previous_kernel.append_siloed_note_hashes(MAX_NOTE_HASHES_PER_TX);
expected_gas_used += Gas {
da_gas: MAX_NOTE_HASHES_PER_TX * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE,
da_gas: MAX_NOTE_HASHES_PER_TX * DA_GAS_PER_FIELD,
l2_gas: MAX_NOTE_HASHES_PER_TX * L2_GAS_PER_NOTE_HASH,
};
// Nullifiers.
builder.previous_kernel.append_siloed_nullifiers(MAX_NULLIFIERS_PER_TX - 1); // -1 for the pre-added protocol nullifier.
expected_gas_used += Gas {
da_gas: MAX_NULLIFIERS_PER_TX * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE,
da_gas: MAX_NULLIFIERS_PER_TX * DA_GAS_PER_FIELD,
l2_gas: MAX_NULLIFIERS_PER_TX * L2_GAS_PER_NULLIFIER,
};
// L2 to L1 messages.
builder.previous_kernel.append_l2_to_l1_msgs(MAX_L2_TO_L1_MSGS_PER_TX);
expected_gas_used += Gas {
da_gas: MAX_L2_TO_L1_MSGS_PER_TX * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE,
da_gas: MAX_L2_TO_L1_MSGS_PER_TX * DA_GAS_PER_FIELD,
l2_gas: MAX_L2_TO_L1_MSGS_PER_TX * L2_GAS_PER_L2_TO_L1_MSG,
};
// Private logs.
Expand All @@ -130,8 +126,7 @@ fn full_side_effects() {
expected_gas_used += Gas {
da_gas: (PRIVATE_LOG_SIZE_IN_FIELDS + 1) // +1 for the length field.
* MAX_PRIVATE_LOGS_PER_TX
* DA_BYTES_PER_FIELD
* DA_GAS_PER_BYTE,
* DA_GAS_PER_FIELD,
l2_gas: MAX_PRIVATE_LOGS_PER_TX * L2_GAS_PER_PRIVATE_LOG,
};
// Contract class logs.
Expand All @@ -143,9 +138,10 @@ fn full_side_effects() {
expected_gas_used += Gas {
da_gas: (CONTRACT_CLASS_LOG_SIZE_IN_FIELDS + 1) // +1 for the contract address.
* MAX_CONTRACT_CLASS_LOGS_PER_TX
* DA_BYTES_PER_FIELD
* DA_GAS_PER_BYTE,
l2_gas: MAX_CONTRACT_CLASS_LOGS_PER_TX * L2_GAS_PER_CONTRACT_CLASS_LOG,
* DA_GAS_PER_FIELD,
l2_gas: MAX_CONTRACT_CLASS_LOGS_PER_TX
* CONTRACT_CLASS_LOG_SIZE_IN_FIELDS
* L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD,
};

let data = builder.execute();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,23 @@ use types::{
abis::gas::Gas,
constants::{
AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS,
CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, DA_BYTES_PER_FIELD, DA_GAS_PER_BYTE,
FIXED_AVM_STARTUP_L2_GAS, L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_PRIVATE_LOG,
MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX,
MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX,
PRIVATE_LOG_SIZE_IN_FIELDS,
CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, DA_GAS_PER_FIELD, FIXED_AVM_STARTUP_L2_GAS,
FIXED_L2_GAS_FOR_TX_WITH_PUBLIC_CALLS, L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD,
L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX,
MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX,
MAX_PRIVATE_LOGS_PER_TX, PRIVATE_LOG_SIZE_IN_FIELDS,
},
};

/// A minimum (public) tx initialized in the TestBuilder contains:
/// - a protocol nullifier, which must exist in every tx.
/// - a public call request, that's what makes it a "public" tx.
fn get_minimum_public_tx_gas_used() -> Gas {
let fixed_gas = Gas { da_gas: 0, l2_gas: FIXED_L2_GAS_FOR_TX_WITH_PUBLIC_CALLS };
let nullifier_gas_used =
Gas { da_gas: DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE, l2_gas: AVM_EMITNULLIFIER_BASE_L2_GAS };
Gas { da_gas: DA_GAS_PER_FIELD, l2_gas: AVM_EMITNULLIFIER_BASE_L2_GAS };
let public_call_gas_used = Gas { da_gas: 0, l2_gas: FIXED_AVM_STARTUP_L2_GAS };
Gas::tx_overhead() + nullifier_gas_used + public_call_gas_used
Gas::tx_overhead() + fixed_gas + nullifier_gas_used + public_call_gas_used
}

#[test]
Expand Down Expand Up @@ -75,7 +76,7 @@ fn with_note_hashes() {

let num_note_hashes = 2 /* non-revertible */
+ 3 /* revertible */;
let da_gas = num_note_hashes * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let da_gas = num_note_hashes * DA_GAS_PER_FIELD;
let l2_gas = num_note_hashes * AVM_EMITNOTEHASH_BASE_L2_GAS;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_public_tx_gas_used();

Expand All @@ -93,7 +94,7 @@ fn with_nullifiers() {

let num_nullifiers = 2 /* non-revertible */
+ 3 /* revertible */;
let da_gas = num_nullifiers * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let da_gas = num_nullifiers * DA_GAS_PER_FIELD;
let l2_gas = num_nullifiers * AVM_EMITNULLIFIER_BASE_L2_GAS;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_public_tx_gas_used();

Expand All @@ -111,7 +112,7 @@ fn with_l2_to_l1_msgs() {

let num_msgs = 2 /* non-revertible */
+ 3 /* revertible */;
let da_gas = num_msgs * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let da_gas = num_msgs * DA_GAS_PER_FIELD;
let l2_gas = num_msgs * AVM_SENDL2TOL1MSG_BASE_L2_GAS;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_public_tx_gas_used();

Expand All @@ -133,7 +134,7 @@ fn with_private_logs() {
let num_private_logs = 2 /* non-revertible */
+ 3 /* revertible */;
let num_fields = 4 + 3 + 2 + 6 + 1 + num_private_logs; // +num_private_logs for the length field of each private log.
let da_gas = num_fields * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let da_gas = num_fields * DA_GAS_PER_FIELD;
let l2_gas = num_private_logs * L2_GAS_PER_PRIVATE_LOG;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_public_tx_gas_used();

Expand All @@ -147,10 +148,8 @@ fn with_non_revertible_contract_class_logs() {

builder.previous_kernel.append_contract_class_logs_with_length::<12>(1);

let num_logs = 1;
let num_fields = 12 + 1; // +1 for the contract address.
let da_gas = num_fields * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let l2_gas = num_logs * L2_GAS_PER_CONTRACT_CLASS_LOG;
let da_gas = (12 + 1) * DA_GAS_PER_FIELD; // +1 for the contract address.
let l2_gas = 12 * L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_public_tx_gas_used();

let public_inputs = builder.execute();
Expand All @@ -164,10 +163,8 @@ fn with_revertible_contract_class_logs() {
builder.previous_kernel.end_setup();
builder.previous_kernel.append_contract_class_logs_with_length::<12>(1);

let num_logs = 1;
let num_fields = 12 + 1; // +1 for the contract address.
let da_gas = num_fields * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let l2_gas = num_logs * L2_GAS_PER_CONTRACT_CLASS_LOG;
let da_gas = (12 + 1) * DA_GAS_PER_FIELD; // +1 for the contract address.
let l2_gas = 12 * L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD;
let expected_gas_used = Gas::new(da_gas, l2_gas) + get_minimum_public_tx_gas_used();

let public_inputs = builder.execute();
Expand Down Expand Up @@ -230,14 +227,18 @@ fn full_side_effects() {
+ MAX_L2_TO_L1_MSGS_PER_TX
+ (PRIVATE_LOG_SIZE_IN_FIELDS + 1) * MAX_PRIVATE_LOGS_PER_TX // +1 for the length field of each private log.
+ (CONTRACT_CLASS_LOG_SIZE_IN_FIELDS + 1) * MAX_CONTRACT_CLASS_LOGS_PER_TX; // +1 for the contract address.
let da_gas = num_da_fields * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
let da_gas = num_da_fields * DA_GAS_PER_FIELD;
let l2_gas = MAX_NOTE_HASHES_PER_TX * AVM_EMITNOTEHASH_BASE_L2_GAS
+ MAX_NULLIFIERS_PER_TX * AVM_EMITNULLIFIER_BASE_L2_GAS
+ MAX_L2_TO_L1_MSGS_PER_TX * AVM_SENDL2TOL1MSG_BASE_L2_GAS
+ MAX_PRIVATE_LOGS_PER_TX * L2_GAS_PER_PRIVATE_LOG
+ MAX_CONTRACT_CLASS_LOGS_PER_TX * L2_GAS_PER_CONTRACT_CLASS_LOG
+ MAX_CONTRACT_CLASS_LOGS_PER_TX
* CONTRACT_CLASS_LOG_SIZE_IN_FIELDS
* L2_GAS_PER_CONTRACT_CLASS_LOG_FIELD
+ MAX_ENQUEUED_CALLS_PER_TX * FIXED_AVM_STARTUP_L2_GAS;
let expected_gas_used = Gas::tx_overhead() + Gas::new(da_gas, l2_gas) + teardown_gas_limits;
let fixed_gas = Gas { da_gas: 0, l2_gas: FIXED_L2_GAS_FOR_TX_WITH_PUBLIC_CALLS };
let expected_gas_used =
Gas::tx_overhead() + fixed_gas + Gas::new(da_gas, l2_gas) + teardown_gas_limits;

let public_inputs = builder.execute();
assert_eq(public_inputs.gas_used, expected_gas_used);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ struct TestBuilder {
impl TestBuilder {
pub fn new() -> Self {
let mut previous_kernel = FixtureBuilder::new().in_vk_tree(PRIVATE_KERNEL_INNER_VK_INDEX);
previous_kernel.tx_context.gas_settings.gas_limits = Gas::new(1_000_000_000, 1_000_000_000);
previous_kernel.tx_context.gas_settings.gas_limits = Gas::new(1_000_000_000, 2_000_000_000);
previous_kernel.append_siloed_nullifiers(1);
previous_kernel.claimed_first_nullifier =
previous_kernel.nullifiers.get(0).innermost().value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000

[previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits]
da_gas = "0x0000000000000000000000000000000000000000000000000000000000c00000"
l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80"
l2_gas = "0x00000000000000000000000000000000000000000000000000000000505b8d80"

[previous_kernel_public_inputs.constants.tx_context.gas_settings.teardown_gas_limits]
da_gas = "0x00000000000000000000000000000000000000000000000000000000000f4240"
Expand Down
Loading
Loading