From 496269622890d0279a86b9eab5c6cb4102a00af1 Mon Sep 17 00:00:00 2001 From: just-mitch Date: Fri, 26 Apr 2024 20:17:07 +0000 Subject: [PATCH] chore: remove l1 gas --- avm-transpiler/src/opcodes.rs | 6 - avm-transpiler/src/transpile.rs | 6 +- .../barretenberg/vm/avm_trace/avm_opcode.hpp | 3 - .../circuits/private-function.md | 3 - .../public-vm/_nested-context.md | 6 +- .../protocol-specs/public-vm/avm-circuit.md | 3 - .../docs/protocol-specs/public-vm/context.mdx | 3 - .../protocol-specs/public-vm/execution.md | 14 +- .../public-vm/gen/_instruction-set.mdx | 253 ++++++------------ .../protocol-specs/public-vm/nested-calls.mdx | 13 +- docs/docs/protocol-specs/public-vm/state.md | 1 - .../rollup-circuits/base-rollup.md | 2 - .../protocol-specs/rollup-circuits/index.md | 2 - .../rollup-circuits/merge-rollup.md | 1 - .../rollup-circuits/root-rollup.md | 1 - docs/docs/protocol-specs/state/archive.md | 1 - docs/docs/protocol-specs/state/index.md | 1 - .../InstructionSet/InstructionSet.js | 72 +---- .../src/core/libraries/ConstantsGen.sol | 4 +- l1-contracts/src/core/libraries/HeaderLib.sol | 9 +- l1-contracts/test/decoders/Base.sol | 1 - l1-contracts/test/fixtures/empty_block_0.json | 13 +- l1-contracts/test/fixtures/empty_block_1.json | 15 +- l1-contracts/test/fixtures/mixed_block_0.json | 13 +- l1-contracts/test/fixtures/mixed_block_1.json | 15 +- .../aztec-nr/aztec/src/context/avm_context.nr | 21 +- .../aztec-nr/aztec/src/context/gas.nr | 7 +- .../aztec-nr/aztec/src/context/interface.nr | 1 - .../aztec/src/context/public_context.nr | 4 - .../src/main.nr | 3 +- .../contracts/avm_test_contract/src/main.nr | 5 - .../contracts/test_contract/src/main.nr | 7 +- .../src/private_kernel_tail.nr | 4 +- .../src/private_kernel_tail_to_public.nr | 4 +- .../crates/public-kernel-lib/src/common.nr | 6 - .../src/public_kernel_app_logic.nr | 14 +- .../src/public_kernel_setup.nr | 16 +- .../src/public_kernel_teardown.nr | 4 +- .../private_accumulated_data_builder.nr | 8 +- .../crates/types/src/abis/gas.nr | 31 +-- .../crates/types/src/abis/gas_fees.nr | 17 +- .../crates/types/src/abis/gas_settings.nr | 14 +- .../types/src/abis/private_call_stack_item.nr | 2 +- .../src/abis/private_circuit_public_inputs.nr | 2 +- .../types/src/abis/public_call_stack_item.nr | 4 +- .../src/abis/public_circuit_public_inputs.nr | 2 +- .../crates/types/src/constants.nr | 4 +- .../crates/types/src/header.nr | 2 +- .../types/src/transaction/tx_context.nr | 2 +- .../types/src/transaction/tx_request.nr | 4 +- .../src/l2_block_code_to_purge.ts | 4 +- yarn-project/circuits.js/src/constants.gen.ts | 4 +- .../structs/__snapshots__/header.test.ts.snap | 4 +- .../private_call_stack_item.test.ts.snap | 4 +- ...private_circuit_public_inputs.test.ts.snap | 4 +- .../public_call_stack_item.test.ts.snap | 8 +- .../public_circuit_public_inputs.test.ts.snap | 4 +- .../__snapshots__/tx_context.test.ts.snap | 2 +- .../__snapshots__/tx_request.test.ts.snap | 2 +- yarn-project/circuits.js/src/structs/gas.ts | 32 +-- .../circuits.js/src/structs/gas_fees.ts | 37 +-- .../circuits.js/src/structs/gas_settings.ts | 6 +- .../src/structs/tx_request.test.ts | 2 +- .../circuits.js/src/tests/factories.ts | 4 +- .../composed/integration_l1_publisher.test.ts | 1 - .../src/e2e_dapp_subscription.test.ts | 2 +- yarn-project/end-to-end/src/e2e_fees.test.ts | 2 +- .../src/type_conversion.ts | 9 +- .../simulator/src/avm/avm_context.test.ts | 6 +- .../src/avm/avm_execution_environment.ts | 4 - .../simulator/src/avm/avm_gas.test.ts | 9 +- yarn-project/simulator/src/avm/avm_gas.ts | 18 +- .../simulator/src/avm/avm_machine_state.ts | 17 +- .../simulator/src/avm/avm_simulator.test.ts | 6 - .../simulator/src/avm/avm_simulator.ts | 2 +- .../simulator/src/avm/fixtures/index.ts | 2 - .../src/avm/opcodes/context_getters.test.ts | 3 +- .../src/avm/opcodes/context_getters.ts | 9 - .../avm/opcodes/environment_getters.test.ts | 10 +- .../src/avm/opcodes/environment_getters.ts | 27 -- .../src/avm/opcodes/external_calls.test.ts | 44 ++- .../src/avm/opcodes/external_calls.ts | 9 +- .../serialization/bytecode_serialization.ts | 8 +- .../instruction_serialization.ts | 3 - .../simulator/src/public/index.test.ts | 3 +- .../src/public/public_processor.test.ts | 10 +- .../src/public/transitional_adaptors.ts | 1 - 87 files changed, 312 insertions(+), 659 deletions(-) diff --git a/avm-transpiler/src/opcodes.rs b/avm-transpiler/src/opcodes.rs index 60bdbc87a4e..d74ce462db5 100644 --- a/avm-transpiler/src/opcodes.rs +++ b/avm-transpiler/src/opcodes.rs @@ -22,7 +22,6 @@ pub enum AvmOpcode { ADDRESS, STORAGEADDRESS, SENDER, - FEEPERL1GAS, FEEPERL2GAS, FEEPERDAGAS, CONTRACTCALLDEPTH, @@ -31,12 +30,10 @@ pub enum AvmOpcode { BLOCKNUMBER, TIMESTAMP, COINBASE, - BLOCKL1GASLIMIT, BLOCKL2GASLIMIT, BLOCKDAGASLIMIT, CALLDATACOPY, // Gas - L1GASLEFT, L2GASLEFT, DAGASLEFT, // Control flow @@ -101,7 +98,6 @@ impl AvmOpcode { AvmOpcode::ADDRESS => "ADDRESS", AvmOpcode::STORAGEADDRESS => "STORAGEADDRESS", AvmOpcode::SENDER => "SENDER", - AvmOpcode::FEEPERL1GAS => "FEEPERL1GAS", AvmOpcode::FEEPERL2GAS => "FEEPERL2GAS", AvmOpcode::FEEPERDAGAS => "FEEPERDAGAS", AvmOpcode::CONTRACTCALLDEPTH => "CONTRACTCALLDEPTH", @@ -111,7 +107,6 @@ impl AvmOpcode { AvmOpcode::BLOCKNUMBER => "BLOCKNUMBER", AvmOpcode::TIMESTAMP => "TIMESTAMP", AvmOpcode::COINBASE => "COINBASE", - AvmOpcode::BLOCKL1GASLIMIT => "BLOCKL1GASLIMIT", AvmOpcode::BLOCKL2GASLIMIT => "BLOCKL2GASLIMIT", AvmOpcode::BLOCKDAGASLIMIT => "BLOCKDAGASLIMIT", // Execution Environment - Calldata @@ -119,7 +114,6 @@ impl AvmOpcode { // Machine State // Machine State - Gas - AvmOpcode::L1GASLEFT => "L1GASLEFT", AvmOpcode::L2GASLEFT => "L2GASLEFT", AvmOpcode::DAGASLEFT => "DAGASLEFT", // Machine State - Internal Control Flow diff --git a/avm-transpiler/src/transpile.rs b/avm-transpiler/src/transpile.rs index 1dc82a955e2..9dcdc031c91 100644 --- a/avm-transpiler/src/transpile.rs +++ b/avm-transpiler/src/transpile.rs @@ -387,10 +387,10 @@ fn handle_external_call( let gas = inputs[0]; let gas_offset = match gas { ValueOrArray::HeapArray(HeapArray { pointer, size }) => { - assert!(size == 3, "Call instruction's gas input should be a HeapArray of size 3 (`[l1Gas, l2Gas, daGas]`)"); + assert!(size == 2, "Call instruction's gas input should be a HeapArray of size 2 (`[l2Gas, daGas]`)"); pointer.0 as u32 } - ValueOrArray::HeapVector(_) => panic!("Call instruction's gas input must be a HeapArray, not a HeapVector. Make sure you are explicitly defining its size as 3 (`[l1Gas, l2Gas, daGas]`)!"), + ValueOrArray::HeapVector(_) => panic!("Call instruction's gas input must be a HeapArray, not a HeapVector. Make sure you are explicitly defining its size as 2 (`[l2Gas, daGas]`)!"), _ => panic!("Call instruction's gas input should be a HeapArray"), }; let address_offset = match &inputs[1] { @@ -741,14 +741,12 @@ fn handle_getter_instruction( "avmOpcodeAddress" => AvmOpcode::ADDRESS, "avmOpcodeStorageAddress" => AvmOpcode::STORAGEADDRESS, "avmOpcodeSender" => AvmOpcode::SENDER, - "avmOpcodeFeePerL1Gas" => AvmOpcode::FEEPERL1GAS, "avmOpcodeFeePerL2Gas" => AvmOpcode::FEEPERL2GAS, "avmOpcodeFeePerDaGas" => AvmOpcode::FEEPERDAGAS, "avmOpcodeChainId" => AvmOpcode::CHAINID, "avmOpcodeVersion" => AvmOpcode::VERSION, "avmOpcodeBlockNumber" => AvmOpcode::BLOCKNUMBER, "avmOpcodeTimestamp" => AvmOpcode::TIMESTAMP, - "avmOpcodeL1GasLeft" => AvmOpcode::L1GASLEFT, "avmOpcodeL2GasLeft" => AvmOpcode::L2GASLEFT, "avmOpcodeDaGasLeft" => AvmOpcode::DAGASLEFT, // "callStackDepth" => AvmOpcode::CallStackDepth, diff --git a/barretenberg/cpp/src/barretenberg/vm/avm_trace/avm_opcode.hpp b/barretenberg/cpp/src/barretenberg/vm/avm_trace/avm_opcode.hpp index 0f1cc72295d..9313cee1d77 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm_trace/avm_opcode.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm_trace/avm_opcode.hpp @@ -41,7 +41,6 @@ enum class OpCode : uint8_t { ADDRESS, STORAGEADDRESS, SENDER, - FEEPERL1GAS, FEEPERL2GAS, FEEPERDAGAS, CONTRACTCALLDEPTH, @@ -51,7 +50,6 @@ enum class OpCode : uint8_t { BLOCKNUMBER, TIMESTAMP, COINBASE, - BLOCKL1GASLIMIT, BLOCKL2GASLIMIT, BLOCKDAGASLIMIT, // Execution Environment - Calldata @@ -59,7 +57,6 @@ enum class OpCode : uint8_t { // Machine State // Machine State - Gas - L1GASLEFT, L2GASLEFT, DAGASLEFT, // Machine State - Internal Control Flow diff --git a/docs/docs/protocol-specs/circuits/private-function.md b/docs/docs/protocol-specs/circuits/private-function.md index 3f5696c83ba..613282ef1b7 100644 --- a/docs/docs/protocol-specs/circuits/private-function.md +++ b/docs/docs/protocol-specs/circuits/private-function.md @@ -82,9 +82,6 @@ After generating a proof for a private function circuit, that proof (and associa | `da.gas_limit` | `u32` | Total limit for DA gas for the transaction. | | `da.teardown_gas_limit` | `u32` | Limit for DA gas specific to the teardown phase. | | `da.max_fee_per_gas` | `field` | Maximum amount that the sender is willing to pay per unit of DA gas. | -| `l1.gas_limit` | `u32` | Total limit for L1 gas for the transaction. | -| `l1.teardown_gas_limit` | `u32` | Limit for L1 gas specific to the teardown phase. | -| `l1.max_fee_per_gas` | `field` | Maximum amount that the sender is willing to pay per unit of L1 gas. | | `l2.gas_limit` | `u32` | Total limit for L2 gas for the transaction. | | `l2.teardown_gas_limit` | `u32` | Limit for L2 gas specific to the teardown phase. | | `l2.max_fee_per_gas` | `field` | Maximum amount that the sender is willing to pay per unit of L2 gas. | diff --git a/docs/docs/protocol-specs/public-vm/_nested-context.md b/docs/docs/protocol-specs/public-vm/_nested-context.md index 232118d88e6..cf1ec253bb0 100644 --- a/docs/docs/protocol-specs/public-vm/_nested-context.md +++ b/docs/docs/protocol-specs/public-vm/_nested-context.md @@ -17,7 +17,6 @@ nestedExecutionEnvironment = ExecutionEnvironment { sender: isDelegateCall ? context.sender : context.address, address: M[addrOffset], storageAddress: isDelegateCall ? context.storageAddress : M[addrOffset], - feePerL1Gas: context.environment.feePerL1Gas, feePerL2Gas: context.environment.feePerL2Gas, feePerDaGas: context.environment.feePerDaGas, contractCallDepth: context.contractCallDepth + 1, @@ -29,9 +28,8 @@ nestedExecutionEnvironment = ExecutionEnvironment { } nestedMachineState = MachineState { - l1GasLeft: context.machineState.memory[M[gasOffset]], - l2GasLeft: context.machineState.memory[M[gasOffset+1]], - daGasLeft: context.machineState.memory[M[gasOffset+2]], + l2GasLeft: context.machineState.memory[M[gasOffset]], + daGasLeft: context.machineState.memory[M[gasOffset+1]], pc = 0, internalCallStack = [], // initialized as empty memory = [0, ..., 0], // all 2^32 entries are initialized to zero diff --git a/docs/docs/protocol-specs/public-vm/avm-circuit.md b/docs/docs/protocol-specs/public-vm/avm-circuit.md index ecc54a1de6b..4eeddefa92a 100644 --- a/docs/docs/protocol-specs/public-vm/avm-circuit.md +++ b/docs/docs/protocol-specs/public-vm/avm-circuit.md @@ -178,7 +178,6 @@ The VM circuit's I/O (`AvmPublicInputs`) is defined below: ``` AvmSessionInputs { // Initializes Execution Environment - feePerL1Gas: field, feePerL2Gas: field, feePerDaGas: field, globals: PublicGlobalVariables, @@ -189,12 +188,10 @@ AvmSessionInputs { isStaticCall: boolean, isDelegateCall: boolean, // Initializes Machine State - l1GasLeft: field, l2GasLeft: field, daGasLeft: field, } AvmSessionResults { - l1GasLeft: field, l2GasLeft: field, daGasLeft: field, reverted: boolean, diff --git a/docs/docs/protocol-specs/public-vm/context.mdx b/docs/docs/protocol-specs/public-vm/context.mdx index 7b2d8847c25..f9a4a6b45e3 100644 --- a/docs/docs/protocol-specs/public-vm/context.mdx +++ b/docs/docs/protocol-specs/public-vm/context.mdx @@ -27,7 +27,6 @@ A context's **execution environment** remains constant throughout a contract cal | storageAddress | `AztecAddress` | | | sender | `AztecAddress` | | | portal | `EthAddress` | | -| feePerL1Gas | `field` | | | feePerL2Gas | `field` | | | feePerDaGas | `field` | | | contractCallDepth | `field` | Depth of the current call (how many nested calls deep is it). | @@ -74,7 +73,6 @@ INITIAL_EXECUTION_ENVIRONMENT = ExecutionEnvironment { storageAddress: PublicCallRequest.CallContext.storageContractAddress, sender: PublicCallRequest.CallContext.msgSender, portal: PublicCallRequest.CallContext.portalContractAddress, - feePerL1Gas: TxRequest.feePerL1Gas, feePerL2Gas: TxRequest.feePerL2Gas, feePerDaGas: TxRequest.feePerDaGas, contractCallDepth: 0, @@ -86,7 +84,6 @@ INITIAL_EXECUTION_ENVIRONMENT = ExecutionEnvironment { } INITIAL_MACHINE_STATE = MachineState { - l1GasLeft: TxRequest.l1GasLimit, l2GasLeft: TxRequest.l2GasLimit, daGasLeft: TxRequest.daGasLimit, pc: 0, diff --git a/docs/docs/protocol-specs/public-vm/execution.md b/docs/docs/protocol-specs/public-vm/execution.md index f8b5dce581d..901929e94fe 100644 --- a/docs/docs/protocol-specs/public-vm/execution.md +++ b/docs/docs/protocol-specs/public-vm/execution.md @@ -75,29 +75,27 @@ The `INTERNALCALL` instruction pushes `machineState.pc+1` to `machineState.inter ## Gas checks and tracking > See ["Gas and Fees"](../gas-and-fees) for a deeper dive into Aztec's gas model and for definitions of each type of gas. -Each instruction has an associated `l1GasCost`, `l2GasCost`, and `daGasCost`. The AVM uses these values to enforce that sufficient gas is available before executing an instruction, and to deduct the cost from the context's remaining gas. The process of checking and charging gas is referred to in other sections using the following shorthand: +Each instruction has an associated `l2GasCost` and `daGasCost`. The AVM uses these values to enforce that sufficient gas is available before executing an instruction, and to deduct the cost from the context's remaining gas. The process of checking and charging gas is referred to in other sections using the following shorthand: ```jsx -chargeGas(context, l1GasCost, l2GasCost, daGasCost) +chargeGas(context, l2GasCost, daGasCost) ``` ### Checking gas Before an instruction is executed, the VM enforces that there is sufficient gas remaining via the following assertions: ``` -assert machineState.l1GasLeft - instr.l1GasCost >= 0 assert machineState.l2GasLeft - instr.l2GasCost >= 0 assert machineState.daGasLeft - instr.daGasCost >= 0 ``` -> Many instructions (like arithmetic operations) have 0 `l1GasCost` and `daGasCost`. Instructions only incur an L1 or DA cost if they modify the [world state](./state#avm-world-state) or [accrued substate](./state#accrued-substate). +> Many instructions (like arithmetic operations) have 0 `daGasCost`. Instructions only incur a DA cost if they modify the [world state](./state#avm-world-state) or [accrued substate](./state#accrued-substate). ### Charging gas If these assertions pass, the machine state's gas left is decreased prior to the instruction's core execution: ``` -machineState.l1GasLeft -= instr.l1GasCost machineState.l2GasLeft -= instr.l2GasCost machineState.daGasLeft -= instr.daGasCost ``` @@ -105,7 +103,6 @@ machineState.daGasLeft -= instr.daGasCost If either of these assertions _fail_ for an instruction, this triggers an exceptional halt. The gas left is set to 0 and execution reverts. ``` -machineState.l1GasLeft = 0 machineState.l2GasLeft = 0 machineState.daGasLeft = 0 ``` @@ -116,7 +113,7 @@ machineState.daGasLeft = 0 An instruction's gas cost is meant to reflect the computational cost of generating a proof of its correct execution. For some instructions, this computational cost changes based on inputs. Here are some examples and important notes: -- All instructions have a base cost. [`JUMP`](./instruction-set/#isa-section-jump) is an example of an instruction with constant gas cost. Regardless of its inputs, the instruction always incurs the same `l1GasCost`, `l2GasCost`, and `daGasCost`. +- All instructions have a base cost. [`JUMP`](./instruction-set/#isa-section-jump) is an example of an instruction with constant gas cost. Regardless of its inputs, the instruction always incurs the same `l2GasCost` and `daGasCost`. - The [`SET`](./instruction-set/#isa-section-set) instruction operates on a different sized constant (based on its `dstTag`). Therefore, this instruction's gas cost increases with the size of its input. - In addition to the base cost, the cost of an instruction increases with the number of reads and writes to memory. This is affected by the total number of input and outputs: the gas cost for [`AND`](./instruction-set/#isa-section-and) should be greater than that of [`NOT`](./instruction-set/#isa-section-not) since it takes one more input. - Input parameters flagged as "indirect" require an extra memory access, so these should further increase the gas cost of the instruction. @@ -136,7 +133,6 @@ A context's execution can end with a **normal halt** or **exceptional halt**. A A normal halt occurs when the VM encounters an explicit halting instruction ([`RETURN`](./instruction-set#isa-section-return) or [`REVERT`](./instruction-set#isa-section-revert)). Such instructions consume gas normally and optionally initialize some output data before finally halting the current context's execution. ``` -machineState.l1GasLeft -= instr.l1GasCost machineState.l2GasLeft -= instr.l2GasCost machineState.daGasLeft -= instr.daGasCost results.reverted = instr.opcode == REVERT @@ -154,7 +150,6 @@ An exceptional halt is not explicitly triggered by an instruction but instead oc When an exceptional halt occurs, the context is flagged as consuming all of its allocated gas and is marked as `reverted` with _no output data_, and then execution within the current context ends. ``` -machineState.l1GasLeft = 0 machineState.l2GasLeft = 0 machineState.daGasLeft = 0 results.reverted = true @@ -165,7 +160,6 @@ The AVM's exceptional halting conditions area listed below: 1. **Insufficient gas** ``` - assert machineState.l1GasLeft - instr.l1GasCost >= 0 assert machineState.l2GasLeft - instr.l2GasCost >= 0 assert machineState.daGasLeft - instr.l2GasCost >= 0 ``` diff --git a/docs/docs/protocol-specs/public-vm/gen/_instruction-set.mdx b/docs/docs/protocol-specs/public-vm/gen/_instruction-set.mdx index 2b9540ac569..c9a84646a0c 100644 --- a/docs/docs/protocol-specs/public-vm/gen/_instruction-set.mdx +++ b/docs/docs/protocol-specs/public-vm/gen/_instruction-set.mdx @@ -140,133 +140,112 @@ Click on an instruction name to jump to its section. } - 0x12 [`FEEPERL1GAS`](#isa-section-feeperl1gas) - Get the fee to be paid per "L1 gas" - constant for entire transaction - { - `M[dstOffset] = context.environment.feePerL1Gas` - } - - - 0x13 [`FEEPERL2GAS`](#isa-section-feeperl2gas) + 0x12 [`FEEPERL2GAS`](#isa-section-feeperl2gas) Get the fee to be paid per "L2 gas" - constant for entire transaction { `M[dstOffset] = context.environment.feePerL2Gas` } - 0x14 [`FEEPERDAGAS`](#isa-section-feeperdagas) + 0x13 [`FEEPERDAGAS`](#isa-section-feeperdagas) Get the fee to be paid per "DA gas" - constant for entire transaction { `M[dstOffset] = context.environment.feePerDaGas` } - 0x15 [`CONTRACTCALLDEPTH`](#isa-section-contractcalldepth) + 0x14 [`CONTRACTCALLDEPTH`](#isa-section-contractcalldepth) Get how many contract calls deep the current call context is { `M[dstOffset] = context.environment.contractCallDepth` } - 0x16 [`CHAINID`](#isa-section-chainid) + 0x15 [`CHAINID`](#isa-section-chainid) Get this rollup's L1 chain ID { `M[dstOffset] = context.environment.globals.chainId` } - 0x17 [`VERSION`](#isa-section-version) + 0x16 [`VERSION`](#isa-section-version) Get this rollup's L2 version ID { `M[dstOffset] = context.environment.globals.version` } - 0x18 [`BLOCKNUMBER`](#isa-section-blocknumber) + 0x17 [`BLOCKNUMBER`](#isa-section-blocknumber) Get this L2 block's number { `M[dstOffset] = context.environment.globals.blocknumber` } - 0x19 [`TIMESTAMP`](#isa-section-timestamp) + 0x18 [`TIMESTAMP`](#isa-section-timestamp) Get this L2 block's timestamp { `M[dstOffset] = context.environment.globals.timestamp` } - 0x1a [`COINBASE`](#isa-section-coinbase) + 0x19 [`COINBASE`](#isa-section-coinbase) Get the block's beneficiary address { `M[dstOffset] = context.environment.globals.coinbase` } - 0x1b [`BLOCKL1GASLIMIT`](#isa-section-blockl1gaslimit) - Total amount of "L1 gas" that a block can consume - { - `M[dstOffset] = context.environment.globals.l1GasLimit` - } - - - 0x1c [`BLOCKL2GASLIMIT`](#isa-section-blockl2gaslimit) + 0x1a [`BLOCKL2GASLIMIT`](#isa-section-blockl2gaslimit) Total amount of "L2 gas" that a block can consume { `M[dstOffset] = context.environment.globals.l2GasLimit` } - 0x1d [`BLOCKDAGASLIMIT`](#isa-section-blockdagaslimit) + 0x1b [`BLOCKDAGASLIMIT`](#isa-section-blockdagaslimit) Total amount of "DA gas" that a block can consume { `M[dstOffset] = context.environment.globals.daGasLimit` } - 0x1e [`CALLDATACOPY`](#isa-section-calldatacopy) + 0x1c [`CALLDATACOPY`](#isa-section-calldatacopy) Copy calldata into memory { `M[dstOffset:dstOffset+copySize] = context.environment.calldata[cdOffset:cdOffset+copySize]` } - 0x1f [`L1GASLEFT`](#isa-section-l1gasleft) - Remaining "L1 gas" for this call (after this instruction) - { - `M[dstOffset] = context.machineState.l1GasLeft` - } - - - 0x20 [`L2GASLEFT`](#isa-section-l2gasleft) + 0x1d [`L2GASLEFT`](#isa-section-l2gasleft) Remaining "L2 gas" for this call (after this instruction) { `M[dstOffset] = context.MachineState.l2GasLeft` } - 0x21 [`DAGASLEFT`](#isa-section-dagasleft) + 0x1e [`DAGASLEFT`](#isa-section-dagasleft) Remaining "DA gas" for this call (after this instruction) { `M[dstOffset] = context.machineState.daGasLeft` } - 0x22 [`JUMP`](#isa-section-jump) + 0x1f [`JUMP`](#isa-section-jump) Jump to a location in the bytecode { `context.machineState.pc = loc` } - 0x23 [`JUMPI`](#isa-section-jumpi) + 0x20 [`JUMPI`](#isa-section-jumpi) Conditionally jump to a location in the bytecode { `context.machineState.pc = M[condOffset] > 0 ? loc : context.machineState.pc` } - 0x24 [`INTERNALCALL`](#isa-section-internalcall) + 0x21 [`INTERNALCALL`](#isa-section-internalcall) Make an internal call. Push the current PC to the internal call stack and jump to the target location. {`context.machineState.internalCallStack.push(context.machineState.pc) @@ -274,49 +253,49 @@ context.machineState.pc = loc`} - 0x25 [`INTERNALRETURN`](#isa-section-internalreturn) + 0x22 [`INTERNALRETURN`](#isa-section-internalreturn) Return from an internal call. Pop from the internal call stack and jump to the popped location. { `context.machineState.pc = context.machineState.internalCallStack.pop()` } - 0x26 [`SET`](#isa-section-set) + 0x23 [`SET`](#isa-section-set) Set a memory word from a constant in the bytecode { `M[dstOffset] = const` } - 0x27 [`MOV`](#isa-section-mov) + 0x24 [`MOV`](#isa-section-mov) Move a word from source memory location to destination { `M[dstOffset] = M[srcOffset]` } - 0x28 [`CMOV`](#isa-section-cmov) + 0x25 [`CMOV`](#isa-section-cmov) Move a word (conditionally chosen) from one memory location to another (`d = cond > 0 ? a : b`) { `M[dstOffset] = M[condOffset] > 0 ? M[aOffset] : M[bOffset]` } - 0x29 [`SLOAD`](#isa-section-sload) + 0x26 [`SLOAD`](#isa-section-sload) Load a word from this contract's persistent public storage. Zero is loaded for unwritten slots. {`M[dstOffset] = S[M[slotOffset]]`} - 0x2a [`SSTORE`](#isa-section-sstore) + 0x27 [`SSTORE`](#isa-section-sstore) Write a word to this contract's persistent public storage {`S[M[slotOffset]] = M[srcOffset]`} - 0x2b [`NOTEHASHEXISTS`](#isa-section-notehashexists) + 0x28 [`NOTEHASHEXISTS`](#isa-section-notehashexists) Check whether a note hash exists in the note hash tree (as of the start of the current block) {`exists = context.worldState.noteHashes.has({ @@ -327,7 +306,7 @@ M[existsOffset] = exists`} - 0x2c [`EMITNOTEHASH`](#isa-section-emitnotehash) + 0x29 [`EMITNOTEHASH`](#isa-section-emitnotehash) Emit a new note hash to be inserted into the note hash tree {`context.worldState.noteHashes.append( @@ -336,7 +315,7 @@ M[existsOffset] = exists`} - 0x2d [`NULLIFIEREXISTS`](#isa-section-nullifierexists) + 0x2a [`NULLIFIEREXISTS`](#isa-section-nullifierexists) Check whether a nullifier exists in the nullifier tree (including nullifiers from earlier in the current transaction or from earlier in the current block) {`exists = pendingNullifiers.has(M[addressOffset], M[nullifierOffset]) || context.worldState.nullifiers.has( @@ -346,7 +325,7 @@ M[existsOffset] = exists`} - 0x2e [`EMITNULLIFIER`](#isa-section-emitnullifier) + 0x2b [`EMITNULLIFIER`](#isa-section-emitnullifier) Emit a new nullifier to be inserted into the nullifier tree {`context.worldState.nullifiers.append( @@ -355,7 +334,7 @@ M[existsOffset] = exists`} - 0x2f [`L1TOL2MSGEXISTS`](#isa-section-l1tol2msgexists) + 0x2c [`L1TOL2MSGEXISTS`](#isa-section-l1tol2msgexists) Check if a message exists in the L1-to-L2 message tree {`exists = context.worldState.l1ToL2Messages.has({ @@ -365,7 +344,7 @@ M[existsOffset] = exists`} - 0x30 [`HEADERMEMBER`](#isa-section-headermember) + 0x2d [`HEADERMEMBER`](#isa-section-headermember) Check if a header exists in the [archive tree](../state/archive) and retrieve the specified member if so {`exists = context.worldState.header.has({ @@ -378,7 +357,7 @@ if exists: - 0x31 [`GETCONTRACTINSTANCE`](#isa-section-getcontractinstance) + 0x2e [`GETCONTRACTINSTANCE`](#isa-section-getcontractinstance) Copies contract instance data to memory {`M[dstOffset:dstOffset+CONTRACT_INSTANCE_SIZE+1] = [ @@ -393,7 +372,7 @@ if exists: - 0x32 [`EMITUNENCRYPTEDLOG`](#isa-section-emitunencryptedlog) + 0x2f [`EMITUNENCRYPTEDLOG`](#isa-section-emitunencryptedlog) Emit an unencrypted log {`context.accruedSubstate.unencryptedLogs.append( @@ -406,7 +385,7 @@ if exists: - 0x33 [`SENDL2TOL1MSG`](#isa-section-sendl2tol1msg) + 0x30 [`SENDL2TOL1MSG`](#isa-section-sendl2tol1msg) Send an L2-to-L1 message {`context.accruedSubstate.sentL2ToL1Messages.append( @@ -419,14 +398,13 @@ if exists: - 0x34 [`CALL`](#isa-section-call) + 0x31 [`CALL`](#isa-section-call) Call into another contract {`// instr.args are { gasOffset, addrOffset, argsOffset, retOffset, retSize } chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall=false, isDelegateCall=false) execute(nestedContext) @@ -434,14 +412,13 @@ updateContextAfterNestedCall(context, instr.args, nestedContext)`} - 0x35 [`STATICCALL`](#isa-section-staticcall) + 0x32 [`STATICCALL`](#isa-section-staticcall) Call into another contract, disallowing World State and Accrued Substate modifications {`// instr.args are { gasOffset, addrOffset, argsOffset, retOffset, retSize } chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall=true, isDelegateCall=false) execute(nestedContext) @@ -449,14 +426,13 @@ updateContextAfterNestedCall(context, instr.args, nestedContext)`} - 0x36 [`DELEGATECALL`](#isa-section-delegatecall) + 0x33 [`DELEGATECALL`](#isa-section-delegatecall) Call into another contract, but keep the caller's `sender` and `storageAddress` {`// instr.args are { gasOffset, addrOffset, argsOffset, retOffset, retSize } chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall=false, isDelegateCall=true) execute(nestedContext) @@ -464,7 +440,7 @@ updateContextAfterNestedCall(context, instr.args, nestedContext)`} - 0x37 [`RETURN`](#isa-section-return) + 0x34 [`RETURN`](#isa-section-return) Halt execution within this context (without revert), optionally returning some data {`context.contractCallResults.output = M[retOffset:retOffset+retSize] @@ -472,7 +448,7 @@ halt`} - 0x38 [`REVERT`](#isa-section-revert) + 0x35 [`REVERT`](#isa-section-revert) Halt execution within this context as `reverted`, optionally returning some data {`context.contractCallResults.output = M[retOffset:retOffset+retSize] @@ -852,29 +828,12 @@ Get the address of the sender (caller of the current context) [![](/img/protocol-specs/public-vm/bit-formats/SENDER.png)](/img/protocol-specs/public-vm/bit-formats/SENDER.png) -### `FEEPERL1GAS` -Get the fee to be paid per "L1 gas" - constant for entire transaction - -[See in table.](#isa-table-feeperl1gas) - -- **Opcode**: 0x12 -- **Category**: Execution Environment -- **Flags**: - - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. -- **Args**: - - **dstOffset**: memory offset specifying where to store operation's result -- **Expression**: `M[dstOffset] = context.environment.feePerL1Gas` -- **Tag updates**: `T[dstOffset] = u32` -- **Bit-size**: 56 - -[![](/img/protocol-specs/public-vm/bit-formats/FEEPERL1GAS.png)](/img/protocol-specs/public-vm/bit-formats/FEEPERL1GAS.png) - ### `FEEPERL2GAS` Get the fee to be paid per "L2 gas" - constant for entire transaction [See in table.](#isa-table-feeperl2gas) -- **Opcode**: 0x13 +- **Opcode**: 0x12 - **Category**: Execution Environment - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -891,7 +850,7 @@ Get the fee to be paid per "DA gas" - constant for entire transaction [See in table.](#isa-table-feeperdagas) -- **Opcode**: 0x14 +- **Opcode**: 0x13 - **Category**: Execution Environment - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -908,7 +867,7 @@ Get how many contract calls deep the current call context is [See in table.](#isa-table-contractcalldepth) -- **Opcode**: 0x15 +- **Opcode**: 0x14 - **Category**: Execution Environment - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -926,7 +885,7 @@ Get this rollup's L1 chain ID [See in table.](#isa-table-chainid) -- **Opcode**: 0x16 +- **Opcode**: 0x15 - **Category**: Execution Environment - Globals - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -943,7 +902,7 @@ Get this rollup's L2 version ID [See in table.](#isa-table-version) -- **Opcode**: 0x17 +- **Opcode**: 0x16 - **Category**: Execution Environment - Globals - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -960,7 +919,7 @@ Get this L2 block's number [See in table.](#isa-table-blocknumber) -- **Opcode**: 0x18 +- **Opcode**: 0x17 - **Category**: Execution Environment - Globals - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -977,7 +936,7 @@ Get this L2 block's timestamp [See in table.](#isa-table-timestamp) -- **Opcode**: 0x19 +- **Opcode**: 0x18 - **Category**: Execution Environment - Globals - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -994,7 +953,7 @@ Get the block's beneficiary address [See in table.](#isa-table-coinbase) -- **Opcode**: 0x1a +- **Opcode**: 0x19 - **Category**: Execution Environment - Globals - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1006,29 +965,12 @@ Get the block's beneficiary address [![](/img/protocol-specs/public-vm/bit-formats/COINBASE.png)](/img/protocol-specs/public-vm/bit-formats/COINBASE.png) -### `BLOCKL1GASLIMIT` -Total amount of "L1 gas" that a block can consume - -[See in table.](#isa-table-blockl1gaslimit) - -- **Opcode**: 0x1b -- **Category**: Execution Environment - Globals -- **Flags**: - - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. -- **Args**: - - **dstOffset**: memory offset specifying where to store operation's result -- **Expression**: `M[dstOffset] = context.environment.globals.l1GasLimit` -- **Tag updates**: `T[dstOffset] = u32` -- **Bit-size**: 56 - -[![](/img/protocol-specs/public-vm/bit-formats/BLOCKL1GASLIMIT.png)](/img/protocol-specs/public-vm/bit-formats/BLOCKL1GASLIMIT.png) - ### `BLOCKL2GASLIMIT` Total amount of "L2 gas" that a block can consume [See in table.](#isa-table-blockl2gaslimit) -- **Opcode**: 0x1c +- **Opcode**: 0x1a - **Category**: Execution Environment - Globals - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1045,7 +987,7 @@ Total amount of "DA gas" that a block can consume [See in table.](#isa-table-blockdagaslimit) -- **Opcode**: 0x1d +- **Opcode**: 0x1b - **Category**: Execution Environment - Globals - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1062,7 +1004,7 @@ Copy calldata into memory [See in table.](#isa-table-calldatacopy) -- **Opcode**: 0x1e +- **Opcode**: 0x1c - **Category**: Execution Environment - Calldata - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1077,29 +1019,12 @@ Copy calldata into memory [![](/img/protocol-specs/public-vm/bit-formats/CALLDATACOPY.png)](/img/protocol-specs/public-vm/bit-formats/CALLDATACOPY.png) -### `L1GASLEFT` -Remaining "L1 gas" for this call (after this instruction) - -[See in table.](#isa-table-l1gasleft) - -- **Opcode**: 0x1f -- **Category**: Machine State - Gas -- **Flags**: - - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. -- **Args**: - - **dstOffset**: memory offset specifying where to store operation's result -- **Expression**: `M[dstOffset] = context.machineState.l1GasLeft` -- **Tag updates**: `T[dstOffset] = u32` -- **Bit-size**: 56 - -[![](/img/protocol-specs/public-vm/bit-formats/L1GASLEFT.png)](/img/protocol-specs/public-vm/bit-formats/L1GASLEFT.png) - ### `L2GASLEFT` Remaining "L2 gas" for this call (after this instruction) [See in table.](#isa-table-l2gasleft) -- **Opcode**: 0x20 +- **Opcode**: 0x1d - **Category**: Machine State - Gas - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1116,7 +1041,7 @@ Remaining "DA gas" for this call (after this instruction) [See in table.](#isa-table-dagasleft) -- **Opcode**: 0x21 +- **Opcode**: 0x1e - **Category**: Machine State - Gas - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1133,7 +1058,7 @@ Jump to a location in the bytecode [See in table.](#isa-table-jump) -- **Opcode**: 0x22 +- **Opcode**: 0x1f - **Category**: Machine State - Control Flow - **Args**: - **loc**: target location to jump to @@ -1148,7 +1073,7 @@ Conditionally jump to a location in the bytecode [See in table.](#isa-table-jumpi) -- **Opcode**: 0x23 +- **Opcode**: 0x20 - **Category**: Machine State - Control Flow - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1166,7 +1091,7 @@ Make an internal call. Push the current PC to the internal call stack and jump t [See in table.](#isa-table-internalcall) -- **Opcode**: 0x24 +- **Opcode**: 0x21 - **Category**: Machine State - Control Flow - **Args**: - **loc**: target location to jump/call to @@ -1178,14 +1103,13 @@ context.machineState.pc = loc`} - **Details**: Target location is an immediate value (a constant in the bytecode). - **Bit-size**: 48 -[![](/img/protocol-specs/public-vm/bit-formats/INTERNALCALL.png)](/img/protocol-specs/public-vm/bit-formats/INTERNALCALL.png) ### `INTERNALRETURN` Return from an internal call. Pop from the internal call stack and jump to the popped location. [See in table.](#isa-table-internalreturn) -- **Opcode**: 0x25 +- **Opcode**: 0x22 - **Category**: Machine State - Control Flow - **Expression**: `context.machineState.pc = context.machineState.internalCallStack.pop()` - **Bit-size**: 16 @@ -1197,7 +1121,7 @@ Set a memory word from a constant in the bytecode [See in table.](#isa-table-set) -- **Opcode**: 0x26 +- **Opcode**: 0x23 - **Category**: Machine State - Memory - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1217,7 +1141,7 @@ Move a word from source memory location to destination [See in table.](#isa-table-mov) -- **Opcode**: 0x27 +- **Opcode**: 0x24 - **Category**: Machine State - Memory - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1235,7 +1159,7 @@ Move a word (conditionally chosen) from one memory location to another (`d = con [See in table.](#isa-table-cmov) -- **Opcode**: 0x28 +- **Opcode**: 0x25 - **Category**: Machine State - Memory - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1256,7 +1180,7 @@ Load a word from this contract's persistent public storage. Zero is loaded for u [See in table.](#isa-table-sload) -- **Opcode**: 0x29 +- **Opcode**: 0x26 - **Category**: World State - Public Storage - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1301,7 +1225,7 @@ Write a word to this contract's persistent public storage [See in table.](#isa-table-sstore) -- **Opcode**: 0x2a +- **Opcode**: 0x27 - **Category**: World State - Public Storage - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1341,7 +1265,7 @@ Check whether a note hash exists in the note hash tree (as of the start of the c [See in table.](#isa-table-notehashexists) -- **Opcode**: 0x2b +- **Opcode**: 0x28 - **Category**: World State - Notes & Nullifiers - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1379,7 +1303,7 @@ Emit a new note hash to be inserted into the note hash tree [See in table.](#isa-table-emitnotehash) -- **Opcode**: 0x2c +- **Opcode**: 0x29 - **Category**: World State - Notes & Nullifiers - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1411,7 +1335,7 @@ Check whether a nullifier exists in the nullifier tree (including nullifiers fro [See in table.](#isa-table-nullifierexists) -- **Opcode**: 0x2d +- **Opcode**: 0x2a - **Category**: World State - Notes & Nullifiers - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1448,7 +1372,7 @@ Emit a new nullifier to be inserted into the nullifier tree [See in table.](#isa-table-emitnullifier) -- **Opcode**: 0x2e +- **Opcode**: 0x2b - **Category**: World State - Notes & Nullifiers - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1480,7 +1404,7 @@ Check if a message exists in the L1-to-L2 message tree [See in table.](#isa-table-l1tol2msgexists) -- **Opcode**: 0x2f +- **Opcode**: 0x2c - **Category**: World State - Messaging - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1519,7 +1443,7 @@ Check if a header exists in the [archive tree](../state/archive) and retrieve th [See in table.](#isa-table-headermember) -- **Opcode**: 0x30 +- **Opcode**: 0x2d - **Category**: World State - Archive Tree & Headers - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1562,7 +1486,7 @@ Copies contract instance data to memory [See in table.](#isa-table-getcontractinstance) -- **Opcode**: 0x31 +- **Opcode**: 0x2e - **Category**: Other - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1592,7 +1516,7 @@ Emit an unencrypted log [See in table.](#isa-table-emitunencryptedlog) -- **Opcode**: 0x32 +- **Opcode**: 0x2f - **Category**: Accrued Substate - Logging - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1619,7 +1543,7 @@ Send an L2-to-L1 message [See in table.](#isa-table-sendl2tol1msg) -- **Opcode**: 0x33 +- **Opcode**: 0x30 - **Category**: Accrued Substate - Messaging - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1645,12 +1569,12 @@ Call into another contract [See in table.](#isa-table-call) -- **Opcode**: 0x34 +- **Opcode**: 0x31 - **Category**: Control Flow - Contract Calls - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. - **Args**: - - **gasOffset**: offset to three words containing `{l1GasLeft, l2GasLeft, daGasLeft}`: amount of gas to provide to the callee + - **gasOffset**: offset to two words containing `{l2GasLeft, daGasLeft}`: amount of gas to provide to the callee - **addrOffset**: address of the contract to call - **argsOffset**: memory offset to args (will become the callee's calldata) - **argsSizeOffset**: memory offset for the number of words to pass via callee's calldata @@ -1661,9 +1585,8 @@ Call into another contract {`// instr.args are { gasOffset, addrOffset, argsOffset, retOffset, retSize } chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall=false, isDelegateCall=false) execute(nestedContext) @@ -1693,12 +1616,12 @@ Call into another contract, disallowing World State and Accrued Substate modific [See in table.](#isa-table-staticcall) -- **Opcode**: 0x35 +- **Opcode**: 0x32 - **Category**: Control Flow - Contract Calls - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. - **Args**: - - **gasOffset**: offset to three words containing `{l1GasLeft, l2GasLeft, daGasLeft}`: amount of gas to provide to the callee + - **gasOffset**: offset to two words containing `{l2GasLeft, daGasLeft}`: amount of gas to provide to the callee - **addrOffset**: address of the contract to call - **argsOffset**: memory offset to args (will become the callee's calldata) - **argsSizeOffset**: memory offset for the number of words to pass via callee's calldata @@ -1709,9 +1632,8 @@ Call into another contract, disallowing World State and Accrued Substate modific {`// instr.args are { gasOffset, addrOffset, argsOffset, retOffset, retSize } chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall=true, isDelegateCall=false) execute(nestedContext) @@ -1738,12 +1660,12 @@ Call into another contract, but keep the caller's `sender` and `storageAddress` [See in table.](#isa-table-delegatecall) -- **Opcode**: 0x36 +- **Opcode**: 0x33 - **Category**: Control Flow - Contract Calls - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. - **Args**: - - **gasOffset**: offset to three words containing `{l1GasLeft, l2GasLeft, daGasLeft}`: amount of gas to provide to the callee + - **gasOffset**: offset to two words containing `{l2GasLeft, daGasLeft}`: amount of gas to provide to the callee - **addrOffset**: address of the contract to call - **argsOffset**: memory offset to args (will become the callee's calldata) - **argsSizeOffset**: memory offset for the number of words to pass via callee's calldata @@ -1754,9 +1676,8 @@ Call into another contract, but keep the caller's `sender` and `storageAddress` {`// instr.args are { gasOffset, addrOffset, argsOffset, retOffset, retSize } chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall=false, isDelegateCall=true) execute(nestedContext) @@ -1783,7 +1704,7 @@ Halt execution within this context (without revert), optionally returning some d [See in table.](#isa-table-return) -- **Opcode**: 0x37 +- **Opcode**: 0x34 - **Category**: Control Flow - Contract Calls - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. @@ -1805,7 +1726,7 @@ Halt execution within this context as `reverted`, optionally returning some data [See in table.](#isa-table-revert) -- **Opcode**: 0x38 +- **Opcode**: 0x35 - **Category**: Control Flow - Contract Calls - **Flags**: - **indirect**: Toggles whether each memory-offset argument is an indirect offset. Rightmost bit corresponds to 0th offset arg, etc. Indirect offsets result in memory accesses like `M[M[offset]]` instead of the more standard `M[offset]`. diff --git a/docs/docs/protocol-specs/public-vm/nested-calls.mdx b/docs/docs/protocol-specs/public-vm/nested-calls.mdx index 167f08fc2af..5da498f755e 100644 --- a/docs/docs/protocol-specs/public-vm/nested-calls.mdx +++ b/docs/docs/protocol-specs/public-vm/nested-calls.mdx @@ -17,9 +17,8 @@ isStaticCall = instr.opcode == STATICCALL isDelegateCall = instr.opcode == DELEGATECALL chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall, isDelegateCall) execute(nestedContext) @@ -59,19 +58,16 @@ A call instruction's gas cost is derived from its `gasOffset` argument. In other As with all instructions, gas is checked and cost is deducted _prior_ to the instruction's execution. ```jsx chargeGas(context, - l1GasCost=M[gasOffset], - l2GasCost=M[gasOffset+1], - daGasCost=M[gasOffset+2]) + l2GasCost=M[gasOffset], + daGasCost=M[gasOffset+1]) ``` > The shorthand `chargeGas` is defined in ["Gas checks and tracking"](./execution#gas-checks-and-tracking). As with all instructions, gas is checked and cost is deducted _prior_ to the instruction's execution. ```jsx -assert context.machineState.l1GasLeft - l1GasCost >= 0 assert context.machineState.l2GasLeft - l2GasCost >= 0 assert context.machineState.daGasLeft - daGasCost >= 0 -context.l1GasLeft -= l1GasCost context.l2GasLeft -= l2GasCost context.daGasLeft -= daGasCost ``` @@ -102,7 +98,6 @@ context.machineState.memory[instr.args.successOffset] = !nestedContext.results.r Any unused gas is refunded to the caller. ```jsx -context.l1GasLeft += nestedContext.machineState.l1GasLeft context.l2GasLeft += nestedContext.machineState.l2GasLeft context.daGasLeft += nestedContext.machineState.daGasLeft ``` diff --git a/docs/docs/protocol-specs/public-vm/state.md b/docs/docs/protocol-specs/public-vm/state.md index 5414036bc1f..bd2498b4218 100644 --- a/docs/docs/protocol-specs/public-vm/state.md +++ b/docs/docs/protocol-specs/public-vm/state.md @@ -10,7 +10,6 @@ This section describes the types of state maintained by the AVM. | Field | Type | Description | | --- | --- | --- | -| `l1GasLeft` | `field` | Tracks the amount of L1 gas remaining at any point during execution. Initialized from contract call arguments. | | `l2GasLeft` | `field` | Tracks the amount of L2 gas remaining at any point during execution. Initialized from contract call arguments. | | `daGasLeft` | `field` | Tracks the amount of DA gas remaining at any point during execution. Initialized from contract call arguments. | | `pc` | `field` | Index into the contract's bytecode indicating which instruction to execute. Initialized to 0 during context initialization. | diff --git a/docs/docs/protocol-specs/rollup-circuits/base-rollup.md b/docs/docs/protocol-specs/rollup-circuits/base-rollup.md index c4cd165b165..61ec2145d56 100644 --- a/docs/docs/protocol-specs/rollup-circuits/base-rollup.md +++ b/docs/docs/protocol-specs/rollup-circuits/base-rollup.md @@ -41,7 +41,6 @@ class GlobalVariables { coinbase: EthAddress fee_recipient: Address gas_fees.fees_per_da_gas: Fr - gas_fees.fees_per_l1_gas: Fr gas_fees.fees_per_l2_gas: Fr } @@ -143,7 +142,6 @@ class CombinedAccumulatedData { end_public_data_root: Fr gas_used.da_gas: u32 - gas_used.l1_gas: u32 gas_used.l2_gas: u32 } CombinedAccumulatedData *-- "m" PublicDataUpdateRequest: public_update_requests diff --git a/docs/docs/protocol-specs/rollup-circuits/index.md b/docs/docs/protocol-specs/rollup-circuits/index.md index 0cdac7e1f49..adcc0311365 100644 --- a/docs/docs/protocol-specs/rollup-circuits/index.md +++ b/docs/docs/protocol-specs/rollup-circuits/index.md @@ -173,7 +173,6 @@ class GlobalVariables { coinbase: EthAddress fee_recipient: Address gas_fees.fees_per_da_gas: Fr - gas_fees.fees_per_l1_gas: Fr gas_fees.fees_per_l2_gas: Fr } @@ -267,7 +266,6 @@ class CombinedAccumulatedData { end_public_data_root: Fr gas_used.da_gas: u32 - gas_used.l1_gas: u32 gas_used.l2_gas: u32 } CombinedAccumulatedData *-- "m" PublicDataUpdateRequest: public_update_requests diff --git a/docs/docs/protocol-specs/rollup-circuits/merge-rollup.md b/docs/docs/protocol-specs/rollup-circuits/merge-rollup.md index b9a34004683..3cad0d98fee 100644 --- a/docs/docs/protocol-specs/rollup-circuits/merge-rollup.md +++ b/docs/docs/protocol-specs/rollup-circuits/merge-rollup.md @@ -32,7 +32,6 @@ class GlobalVariables { coinbase: EthAddress fee_recipient: Address gas_fees.fees_per_da_gas: Fr - gas_fees.fees_per_l1_gas: Fr gas_fees.fees_per_l2_gas: Fr } diff --git a/docs/docs/protocol-specs/rollup-circuits/root-rollup.md b/docs/docs/protocol-specs/rollup-circuits/root-rollup.md index ad3fa6a32ff..a9abf3d1e48 100644 --- a/docs/docs/protocol-specs/rollup-circuits/root-rollup.md +++ b/docs/docs/protocol-specs/rollup-circuits/root-rollup.md @@ -41,7 +41,6 @@ class GlobalVariables { coinbase: EthAddress fee_recipient: Address gas_fees.fees_per_da_gas: Fr - gas_fees.fees_per_l1_gas: Fr gas_fees.fees_per_l2_gas: Fr } diff --git a/docs/docs/protocol-specs/state/archive.md b/docs/docs/protocol-specs/state/archive.md index 4214cbc509c..6a7bd5c816d 100644 --- a/docs/docs/protocol-specs/state/archive.md +++ b/docs/docs/protocol-specs/state/archive.md @@ -69,7 +69,6 @@ class GlobalVariables { coinbase: EthAddress fee_recipient: Address gas_fees.fees_per_da_gas: Fr - gas_fees.fees_per_l1_gas: Fr gas_fees.fees_per_l2_gas: Fr } diff --git a/docs/docs/protocol-specs/state/index.md b/docs/docs/protocol-specs/state/index.md index f855fe792c6..928b7b664d0 100644 --- a/docs/docs/protocol-specs/state/index.md +++ b/docs/docs/protocol-specs/state/index.md @@ -107,7 +107,6 @@ class GlobalVariables { coinbase: EthAddress fee_recipient: Address gas_fees.fees_per_da_gas: Fr - gas_fees.fees_per_l1_gas: Fr gas_fees.fees_per_l2_gas: Fr } diff --git a/docs/src/preprocess/InstructionSet/InstructionSet.js b/docs/src/preprocess/InstructionSet/InstructionSet.js index 01d9c3a1efb..556759b8749 100644 --- a/docs/src/preprocess/InstructionSet/InstructionSet.js +++ b/docs/src/preprocess/InstructionSet/InstructionSet.js @@ -30,7 +30,7 @@ const CALL_INSTRUCTION_ARGS = [ { name: "gasOffset", description: - "offset to three words containing `{l1GasLeft, l2GasLeft, daGasLeft}`: amount of gas to provide to the callee", + "offset to two words containing `{l2GasLeft, daGasLeft}`: amount of gas to provide to the callee", }, { name: "addrOffset", description: "address of the contract to call" }, { @@ -547,25 +547,6 @@ const INSTRUCTION_SET_RAW = [ "Tag checks": "", "Tag updates": "`T[dstOffset] = u32`", }, - { - id: "feeperl1gas", - Name: "`FEEPERL1GAS`", - Category: "Execution Environment", - Flags: [{ name: "indirect", description: INDIRECT_FLAG_DESCRIPTION }], - Args: [ - { - name: "dstOffset", - description: - "memory offset specifying where to store operation's result", - }, - ], - Expression: "`M[dstOffset] = context.environment.feePerL1Gas`", - Summary: - 'Get the fee to be paid per "L1 gas" - constant for entire transaction', - Details: "", - "Tag checks": "", - "Tag updates": "`T[dstOffset] = u32`", - }, { id: "feeperl2gas", Name: "`FEEPERL2GAS`", @@ -713,24 +694,6 @@ const INSTRUCTION_SET_RAW = [ "Tag checks": "", "Tag updates": "`T[dstOffset] = u32`", }, - { - id: "blockl1gaslimit", - Name: "`BLOCKL1GASLIMIT`", - Category: "Execution Environment - Globals", - Flags: [{ name: "indirect", description: INDIRECT_FLAG_DESCRIPTION }], - Args: [ - { - name: "dstOffset", - description: - "memory offset specifying where to store operation's result", - }, - ], - Expression: "`M[dstOffset] = context.environment.globals.l1GasLimit`", - Summary: 'Total amount of "L1 gas" that a block can consume', - Details: "", - "Tag checks": "", - "Tag updates": "`T[dstOffset] = u32`", - }, { id: "blockl2gaslimit", Name: "`BLOCKL2GASLIMIT`", @@ -793,24 +756,6 @@ const INSTRUCTION_SET_RAW = [ "Tag checks": "", "Tag updates": "`T[dstOffset:dstOffset+copySize] = field`", }, - { - id: "l1gasleft", - Name: "`L1GASLEFT`", - Category: "Machine State - Gas", - Flags: [{ name: "indirect", description: INDIRECT_FLAG_DESCRIPTION }], - Args: [ - { - name: "dstOffset", - description: - "memory offset specifying where to store operation's result", - }, - ], - Expression: "`M[dstOffset] = context.machineState.l1GasLeft`", - Summary: 'Remaining "L1 gas" for this call (after this instruction)', - Details: "", - "Tag checks": "", - "Tag updates": "`T[dstOffset] = u32`", - }, { id: "l2gasleft", Name: "`L2GASLEFT`", @@ -1439,9 +1384,8 @@ context.accruedSubstate.sentL2ToL1Messages.append( Expression: ` // instr.args are { gasOffset, addrOffset, argsOffset, retOffset, retSize } chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall=false, isDelegateCall=false) execute(nestedContext) @@ -1469,9 +1413,8 @@ T[retOffset:retOffset+retSize] = field Expression: ` // instr.args are { gasOffset, addrOffset, argsOffset, retOffset, retSize } chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall=true, isDelegateCall=false) execute(nestedContext) @@ -1497,9 +1440,8 @@ T[retOffset:retOffset+retSize] = field Expression: ` // instr.args are { gasOffset, addrOffset, argsOffset, retOffset, retSize } chargeGas(context, - l1GasCost=M[instr.args.gasOffset], - l2GasCost=M[instr.args.gasOffset+1], - daGasCost=M[instr.args.gasOffset+2]) + l2GasCost=M[instr.args.gasOffset], + daGasCost=M[instr.args.gasOffset+1]) traceNestedCall(context, instr.args.addrOffset) nestedContext = deriveContext(context, instr.args, isStaticCall=false, isDelegateCall=true) execute(nestedContext) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 4ad6b9baab7..b9e22c3eb70 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -97,8 +97,8 @@ library Constants { uint256 internal constant CANONICAL_KEY_REGISTRY_ADDRESS = 0x1585e564a60e6ec974bc151b62705292ebfc75c33341986a47fd9749cedb567e; uint256 internal constant AZTEC_ADDRESS_LENGTH = 1; - uint256 internal constant GAS_FEES_LENGTH = 3; - uint256 internal constant GAS_LENGTH = 3; + uint256 internal constant GAS_FEES_LENGTH = 2; + uint256 internal constant GAS_LENGTH = 2; uint256 internal constant GAS_SETTINGS_LENGTH = GAS_LENGTH * 2 + GAS_FEES_LENGTH /* inclusion_fee */ + 1; uint256 internal constant CALL_CONTEXT_LENGTH = 6; diff --git a/l1-contracts/src/core/libraries/HeaderLib.sol b/l1-contracts/src/core/libraries/HeaderLib.sol index db04f207f17..5ba700dab20 100644 --- a/l1-contracts/src/core/libraries/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/HeaderLib.sol @@ -49,8 +49,7 @@ import {Hash} from "./Hash.sol"; * | 0x01b4 | 0x14 | coinbase * | 0x01c8 | 0x20 | feeRecipient * | 0x01e8 | 0x20 | gasFees.feePerDaGas - * | 0x0208 | 0x20 | gasFees.feePerL1Gas - * | 0x0228 | 0x20 | gasFees.feePerL2Gas + * | 0x0208 | 0x20 | gasFees.feePerL2Gas * | | | } * | | | } * | --- | --- | --- @@ -76,7 +75,6 @@ library HeaderLib { struct GasFees { uint256 feePerDaGas; - uint256 feePerL1Gas; uint256 feePerL2Gas; } @@ -104,7 +102,7 @@ library HeaderLib { GlobalVariables globalVariables; } - uint256 private constant HEADER_LENGTH = 0x248; // Header byte length + uint256 private constant HEADER_LENGTH = 0x228; // Header byte length /** * @notice Validates the header @@ -190,8 +188,7 @@ library HeaderLib { header.globalVariables.coinbase = address(bytes20(_header[0x01b4:0x01c8])); header.globalVariables.feeRecipient = bytes32(_header[0x01c8:0x01e8]); header.globalVariables.gasFees.feePerDaGas = uint256(bytes32(_header[0x01e8:0x0208])); - header.globalVariables.gasFees.feePerL1Gas = uint256(bytes32(_header[0x0208:0x0228])); - header.globalVariables.gasFees.feePerL2Gas = uint256(bytes32(_header[0x0228:0x0248])); + header.globalVariables.gasFees.feePerL2Gas = uint256(bytes32(_header[0x0208:0x0228])); return header; } diff --git a/l1-contracts/test/decoders/Base.sol b/l1-contracts/test/decoders/Base.sol index 4de1162680a..8301379c8f2 100644 --- a/l1-contracts/test/decoders/Base.sol +++ b/l1-contracts/test/decoders/Base.sol @@ -53,7 +53,6 @@ contract DecoderBase is Test { struct GasFees { uint256 feePerDaGas; - uint256 feePerL1Gas; uint256 feePerL2Gas; } diff --git a/l1-contracts/test/fixtures/empty_block_0.json b/l1-contracts/test/fixtures/empty_block_0.json index fd84965eea2..23da1ab8238 100644 --- a/l1-contracts/test/fixtures/empty_block_0.json +++ b/l1-contracts/test/fixtures/empty_block_0.json @@ -8,7 +8,7 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x188be890697072b6e002cfd2c0fff9b434ab0f8075ba55861be700daa8b5245e", + "archive": "0x080ba94e0599e43b20d1d5dd297f12eee1ab3b74fc07c4b6e505d0d54dc4c878", "body": "0x00000000", "txsEffectsHash": "0x00df6b1c97b9e01113fa0363d9ff71c85addc74e92b22d433b2fb082d2493896", "decodedHeader": { @@ -23,17 +23,16 @@ "chainId": 31337, "timestamp": 0, "version": 1, - "coinbase": "0xa43e0eb6a43e0eb6a43e0eb6a43e0eb6a43e0eb6", - "feeRecipient": "0x15a9c4f4c75d79ce22330ca2cdb6c1a6ede1f6d94ba28016eeb25e5578913ccb", + "coinbase": "0xc1e85ff1bdb95e08537b887b0f371638903460e3", + "feeRecipient": "0x0cb7735e3f0a0df7ec2303f5817cec5ad40812a970544fc1fc2c310eeb3988cc", "gasFees": { "feePerDaGas": 0, - "feePerL1Gas": 0, "feePerL2Gas": 0 } }, "lastArchive": { "nextAvailableLeafIndex": 1, - "root": "0x05b0b6df52f1d47d0406318558052c89a174fbc9d615def82b3cc9ccc1937db8" + "root": "0x067a48e3140b6f15d71751ededfa0cccde3d436bb71aa7fec226b0bfe51dc5cf" }, "stateReference": { "l1ToL2MessageTree": { @@ -56,8 +55,8 @@ } } }, - "header": "0x05b0b6df52f1d47d0406318558052c89a174fbc9d615def82b3cc9ccc1937db800000001000000000000000000000000000000000000000000000000000000000000000100df6b1c97b9e01113fa0363d9ff71c85addc74e92b22d433b2fb082d249389600089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000001016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000800bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000001000572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000a43e0eb6a43e0eb6a43e0eb6a43e0eb6a43e0eb615a9c4f4c75d79ce22330ca2cdb6c1a6ede1f6d94ba28016eeb25e5578913ccb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x009a9a967263c733e1ab2c9d67836cd9145e691d0123896749c051deebaf766a", + "header": "0x067a48e3140b6f15d71751ededfa0cccde3d436bb71aa7fec226b0bfe51dc5cf00000001000000000000000000000000000000000000000000000000000000000000000100df6b1c97b9e01113fa0363d9ff71c85addc74e92b22d433b2fb082d249389600089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000001016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000000800bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000001000572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000c1e85ff1bdb95e08537b887b0f371638903460e30cb7735e3f0a0df7ec2303f5817cec5ad40812a970544fc1fc2c310eeb3988cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x000cae072f9ae6a94c6c642594e0985c0df681cfa951939a901291b8e569bc2c", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index 429eb428d2a..d545dc97678 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -8,7 +8,7 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x2d7fa58436f44491690fd5592307625dc21b12fcb7af369c9dc78d5985c0a0df", + "archive": "0x12b17b38f46254c7143bd35e6348dc09cc8833d6b34e192cd00e243a3bbe562f", "body": "0x00000000", "txsEffectsHash": "0x00df6b1c97b9e01113fa0363d9ff71c85addc74e92b22d433b2fb082d2493896", "decodedHeader": { @@ -21,19 +21,18 @@ "globalVariables": { "blockNumber": 2, "chainId": 31337, - "timestamp": 1713529904, + "timestamp": 1714163483, "version": 1, - "coinbase": "0xa43e0eb6a43e0eb6a43e0eb6a43e0eb6a43e0eb6", - "feeRecipient": "0x15a9c4f4c75d79ce22330ca2cdb6c1a6ede1f6d94ba28016eeb25e5578913ccb", + "coinbase": "0xc1e85ff1bdb95e08537b887b0f371638903460e3", + "feeRecipient": "0x0cb7735e3f0a0df7ec2303f5817cec5ad40812a970544fc1fc2c310eeb3988cc", "gasFees": { "feePerDaGas": 0, - "feePerL1Gas": 0, "feePerL2Gas": 0 } }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x188be890697072b6e002cfd2c0fff9b434ab0f8075ba55861be700daa8b5245e" + "root": "0x080ba94e0599e43b20d1d5dd297f12eee1ab3b74fc07c4b6e505d0d54dc4c878" }, "stateReference": { "l1ToL2MessageTree": { @@ -56,8 +55,8 @@ } } }, - "header": "0x188be890697072b6e002cfd2c0fff9b434ab0f8075ba55861be700daa8b5245e00000002000000000000000000000000000000000000000000000000000000000000000100df6b1c97b9e01113fa0363d9ff71c85addc74e92b22d433b2fb082d249389600089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000002016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000001000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000001800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000000c00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000066226430a43e0eb6a43e0eb6a43e0eb6a43e0eb6a43e0eb615a9c4f4c75d79ce22330ca2cdb6c1a6ede1f6d94ba28016eeb25e5578913ccb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00b00b3ab0a2b8665fa4ced9637ab3e2114446cd2975cf6fc544a0540200a0c7", + "header": "0x080ba94e0599e43b20d1d5dd297f12eee1ab3b74fc07c4b6e505d0d54dc4c87800000002000000000000000000000000000000000000000000000000000000000000000100df6b1c97b9e01113fa0363d9ff71c85addc74e92b22d433b2fb082d249389600089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c31864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f800000002016642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb000001000bcfa3e9f1a8922ee92c6dc964d6595907c1804a86753774322b468f69d4f278000001800572c8db882674dd026b8877fbba1b700a4407da3ae9ce5fa43215a28163362b000000c00000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000662c0f1bc1e85ff1bdb95e08537b887b0f371638903460e30cb7735e3f0a0df7ec2303f5817cec5ad40812a970544fc1fc2c310eeb3988cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x00f4dc87aadb7c9e401412f285d770460dcd43d2baba6b7cceecde9b86361663", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_0.json b/l1-contracts/test/fixtures/mixed_block_0.json index 47e09affc4e..6c52c423de2 100644 --- a/l1-contracts/test/fixtures/mixed_block_0.json +++ b/l1-contracts/test/fixtures/mixed_block_0.json @@ -34,7 +34,7 @@ ] }, "block": { - "archive": "0x2fc3ac909751b968a209d4b189dcd536f28c90b18d40ab9c73b95abd044d2874", + "archive": "0x2869dadfe3df86f02e6d5865cdc24253b0e5f84aafd1098b9b17bfc14dbac2dc", "body": "0x0000000400400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014100000000000000000000000000000000000000000000000000000000000001420000000000000000000000000000000000000000000000000000000000000143000000000000000000000000000000000000000000000000000000000000014400000000000000000000000000000000000000000000000000000000000001450000000000000000000000000000000000000000000000000000000000000146000000000000000000000000000000000000000000000000000000000000014700000000000000000000000000000000000000000000000000000000000001480000000000000000000000000000000000000000000000000000000000000149000000000000000000000000000000000000000000000000000000000000014a000000000000000000000000000000000000000000000000000000000000014b000000000000000000000000000000000000000000000000000000000000014c000000000000000000000000000000000000000000000000000000000000014d000000000000000000000000000000000000000000000000000000000000014e000000000000000000000000000000000000000000000000000000000000014f0000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000015100000000000000000000000000000000000000000000000000000000000001520000000000000000000000000000000000000000000000000000000000000153000000000000000000000000000000000000000000000000000000000000015400000000000000000000000000000000000000000000000000000000000001550000000000000000000000000000000000000000000000000000000000000156000000000000000000000000000000000000000000000000000000000000015700000000000000000000000000000000000000000000000000000000000001580000000000000000000000000000000000000000000000000000000000000159000000000000000000000000000000000000000000000000000000000000015a000000000000000000000000000000000000000000000000000000000000015b000000000000000000000000000000000000000000000000000000000000015c000000000000000000000000000000000000000000000000000000000000015d000000000000000000000000000000000000000000000000000000000000015e000000000000000000000000000000000000000000000000000000000000015f0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000001620000000000000000000000000000000000000000000000000000000000000163000000000000000000000000000000000000000000000000000000000000016400000000000000000000000000000000000000000000000000000000000001650000000000000000000000000000000000000000000000000000000000000166000000000000000000000000000000000000000000000000000000000000016700000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000169000000000000000000000000000000000000000000000000000000000000016a000000000000000000000000000000000000000000000000000000000000016b000000000000000000000000000000000000000000000000000000000000016c000000000000000000000000000000000000000000000000000000000000016d000000000000000000000000000000000000000000000000000000000000016e000000000000000000000000000000000000000000000000000000000000016f0000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000017100000000000000000000000000000000000000000000000000000000000001720000000000000000000000000000000000000000000000000000000000000173000000000000000000000000000000000000000000000000000000000000017400000000000000000000000000000000000000000000000000000000000001750000000000000000000000000000000000000000000000000000000000000176000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000001780000000000000000000000000000000000000000000000000000000000000179000000000000000000000000000000000000000000000000000000000000017a000000000000000000000000000000000000000000000000000000000000017b000000000000000000000000000000000000000000000000000000000000017c000000000000000000000000000000000000000000000000000000000000017d000000000000000000000000000000000000000000000000000000000000017e000000000000000000000000000000000000000000000000000000000000017f3f0000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f0000000000000000000000000000000000000000000000000000000000000270000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002720000000000000000000000000000000000000000000000000000000000000273000000000000000000000000000000000000000000000000000000000000027400000000000000000000000000000000000000000000000000000000000002750000000000000000000000000000000000000000000000000000000000000276000000000000000000000000000000000000000000000000000000000000027700000000000000000000000000000000000000000000000000000000000002780000000000000000000000000000000000000000000000000000000000000279000000000000000000000000000000000000000000000000000000000000027a000000000000000000000000000000000000000000000000000000000000027b000000000000000000000000000000000000000000000000000000000000027c000000000000000000000000000000000000000000000000000000000000027d000000000000000000000000000000000000000000000000000000000000027e0200000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000341200000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000541000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000542000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000543000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000544000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000545000000000000000000000000000000000000000000000000000000000000054f00000000000000000000000000000000000000000000000000000000000005460000000000000000000000000000000000000000000000000000000000000550000000000000000000000000000000000000000000000000000000000000054700000000000000000000000000000000000000000000000000000000000005510000000000000000000000000000000000000000000000000000000000000548000000000000000000000000000000000000000000000000000000000000055200000000000000000000000000000000000000000000000000000000000005490000000000000000000000000000000000000000000000000000000000000553000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000554000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000555000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000556000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000557000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000558000000000000000000000000000000000000000000000000000000000000054f00000000000000000000000000000000000000000000000000000000000005590000000000000000000000000000000000000000000000000000000000000550000000000000000000000000000000000000000000000000000000000000055a0000000000000000000000000000000000000000000000000000000000000551000000000000000000000000000000000000000000000000000000000000055b0000000000000000000000000000000000000000000000000000000000000552000000000000000000000000000000000000000000000000000000000000055c0000000000000000000000000000000000000000000000000000000000000553000000000000000000000000000000000000000000000000000000000000055d0000000000000000000000000000000000000000000000000000000000000554000000000000000000000000000000000000000000000000000000000000055e0000000000000000000000000000000000000000000000000000000000000555000000000000000000000000000000000000000000000000000000000000055f00000000000000000000000000000000000000000000000000000000000005560000000000000000000000000000000000000000000000000000000000000560000000000000000000000000000000000000000000000000000000000000055700000000000000000000000000000000000000000000000000000000000005610000000000000000000000000000000000000000000000000000000000000558000000000000000000000000000000000000000000000000000000000000056200000000000000000000000000000000000000000000000000000000000005590000000000000000000000000000000000000000000000000000000000000563000000000000000000000000000000000000000000000000000000000000055a0000000000000000000000000000000000000000000000000000000000000564000000000000000000000000000000000000000000000000000000000000055b0000000000000000000000000000000000000000000000000000000000000565000000000000000000000000000000000000000000000000000000000000055c0000000000000000000000000000000000000000000000000000000000000566000000000000000000000000000000000000000000000000000000000000055d0000000000000000000000000000000000000000000000000000000000000567000000000000000000000000000000000000000000000000000000000000055e0000000000000000000000000000000000000000000000000000000000000568000000000000000000000000000000000000000000000000000000000000055f0000000000000000000000000000000000000000000000000000000000000569000000000000000000400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000018100000000000000000000000000000000000000000000000000000000000001820000000000000000000000000000000000000000000000000000000000000183000000000000000000000000000000000000000000000000000000000000018400000000000000000000000000000000000000000000000000000000000001850000000000000000000000000000000000000000000000000000000000000186000000000000000000000000000000000000000000000000000000000000018700000000000000000000000000000000000000000000000000000000000001880000000000000000000000000000000000000000000000000000000000000189000000000000000000000000000000000000000000000000000000000000018a000000000000000000000000000000000000000000000000000000000000018b000000000000000000000000000000000000000000000000000000000000018c000000000000000000000000000000000000000000000000000000000000018d000000000000000000000000000000000000000000000000000000000000018e000000000000000000000000000000000000000000000000000000000000018f0000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000019100000000000000000000000000000000000000000000000000000000000001920000000000000000000000000000000000000000000000000000000000000193000000000000000000000000000000000000000000000000000000000000019400000000000000000000000000000000000000000000000000000000000001950000000000000000000000000000000000000000000000000000000000000196000000000000000000000000000000000000000000000000000000000000019700000000000000000000000000000000000000000000000000000000000001980000000000000000000000000000000000000000000000000000000000000199000000000000000000000000000000000000000000000000000000000000019a000000000000000000000000000000000000000000000000000000000000019b000000000000000000000000000000000000000000000000000000000000019c000000000000000000000000000000000000000000000000000000000000019d000000000000000000000000000000000000000000000000000000000000019e000000000000000000000000000000000000000000000000000000000000019f00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001a100000000000000000000000000000000000000000000000000000000000001a200000000000000000000000000000000000000000000000000000000000001a300000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000001a500000000000000000000000000000000000000000000000000000000000001a600000000000000000000000000000000000000000000000000000000000001a700000000000000000000000000000000000000000000000000000000000001a800000000000000000000000000000000000000000000000000000000000001a900000000000000000000000000000000000000000000000000000000000001aa00000000000000000000000000000000000000000000000000000000000001ab00000000000000000000000000000000000000000000000000000000000001ac00000000000000000000000000000000000000000000000000000000000001ad00000000000000000000000000000000000000000000000000000000000001ae00000000000000000000000000000000000000000000000000000000000001af00000000000000000000000000000000000000000000000000000000000001b000000000000000000000000000000000000000000000000000000000000001b100000000000000000000000000000000000000000000000000000000000001b200000000000000000000000000000000000000000000000000000000000001b300000000000000000000000000000000000000000000000000000000000001b400000000000000000000000000000000000000000000000000000000000001b500000000000000000000000000000000000000000000000000000000000001b600000000000000000000000000000000000000000000000000000000000001b700000000000000000000000000000000000000000000000000000000000001b800000000000000000000000000000000000000000000000000000000000001b900000000000000000000000000000000000000000000000000000000000001ba00000000000000000000000000000000000000000000000000000000000001bb00000000000000000000000000000000000000000000000000000000000001bc00000000000000000000000000000000000000000000000000000000000001bd00000000000000000000000000000000000000000000000000000000000001be00000000000000000000000000000000000000000000000000000000000001bf3f0000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b600000000000000000000000000000000000000000000000000000000000002b700000000000000000000000000000000000000000000000000000000000002b800000000000000000000000000000000000000000000000000000000000002b900000000000000000000000000000000000000000000000000000000000002ba00000000000000000000000000000000000000000000000000000000000002bb00000000000000000000000000000000000000000000000000000000000002bc00000000000000000000000000000000000000000000000000000000000002bd00000000000000000000000000000000000000000000000000000000000002be0200000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000381200000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000581000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000582000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000583000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000584000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000585000000000000000000000000000000000000000000000000000000000000058f00000000000000000000000000000000000000000000000000000000000005860000000000000000000000000000000000000000000000000000000000000590000000000000000000000000000000000000000000000000000000000000058700000000000000000000000000000000000000000000000000000000000005910000000000000000000000000000000000000000000000000000000000000588000000000000000000000000000000000000000000000000000000000000059200000000000000000000000000000000000000000000000000000000000005890000000000000000000000000000000000000000000000000000000000000593000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000594000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000595000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000596000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000597000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000598000000000000000000000000000000000000000000000000000000000000058f00000000000000000000000000000000000000000000000000000000000005990000000000000000000000000000000000000000000000000000000000000590000000000000000000000000000000000000000000000000000000000000059a0000000000000000000000000000000000000000000000000000000000000591000000000000000000000000000000000000000000000000000000000000059b0000000000000000000000000000000000000000000000000000000000000592000000000000000000000000000000000000000000000000000000000000059c0000000000000000000000000000000000000000000000000000000000000593000000000000000000000000000000000000000000000000000000000000059d0000000000000000000000000000000000000000000000000000000000000594000000000000000000000000000000000000000000000000000000000000059e0000000000000000000000000000000000000000000000000000000000000595000000000000000000000000000000000000000000000000000000000000059f000000000000000000000000000000000000000000000000000000000000059600000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000059700000000000000000000000000000000000000000000000000000000000005a1000000000000000000000000000000000000000000000000000000000000059800000000000000000000000000000000000000000000000000000000000005a2000000000000000000000000000000000000000000000000000000000000059900000000000000000000000000000000000000000000000000000000000005a3000000000000000000000000000000000000000000000000000000000000059a00000000000000000000000000000000000000000000000000000000000005a4000000000000000000000000000000000000000000000000000000000000059b00000000000000000000000000000000000000000000000000000000000005a5000000000000000000000000000000000000000000000000000000000000059c00000000000000000000000000000000000000000000000000000000000005a6000000000000000000000000000000000000000000000000000000000000059d00000000000000000000000000000000000000000000000000000000000005a7000000000000000000000000000000000000000000000000000000000000059e00000000000000000000000000000000000000000000000000000000000005a8000000000000000000000000000000000000000000000000000000000000059f00000000000000000000000000000000000000000000000000000000000005a90000000000000000004000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c300000000000000000000000000000000000000000000000000000000000001c400000000000000000000000000000000000000000000000000000000000001c500000000000000000000000000000000000000000000000000000000000001c600000000000000000000000000000000000000000000000000000000000001c700000000000000000000000000000000000000000000000000000000000001c800000000000000000000000000000000000000000000000000000000000001c900000000000000000000000000000000000000000000000000000000000001ca00000000000000000000000000000000000000000000000000000000000001cb00000000000000000000000000000000000000000000000000000000000001cc00000000000000000000000000000000000000000000000000000000000001cd00000000000000000000000000000000000000000000000000000000000001ce00000000000000000000000000000000000000000000000000000000000001cf00000000000000000000000000000000000000000000000000000000000001d000000000000000000000000000000000000000000000000000000000000001d100000000000000000000000000000000000000000000000000000000000001d200000000000000000000000000000000000000000000000000000000000001d300000000000000000000000000000000000000000000000000000000000001d400000000000000000000000000000000000000000000000000000000000001d500000000000000000000000000000000000000000000000000000000000001d600000000000000000000000000000000000000000000000000000000000001d700000000000000000000000000000000000000000000000000000000000001d800000000000000000000000000000000000000000000000000000000000001d900000000000000000000000000000000000000000000000000000000000001da00000000000000000000000000000000000000000000000000000000000001db00000000000000000000000000000000000000000000000000000000000001dc00000000000000000000000000000000000000000000000000000000000001dd00000000000000000000000000000000000000000000000000000000000001de00000000000000000000000000000000000000000000000000000000000001df00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001e100000000000000000000000000000000000000000000000000000000000001e200000000000000000000000000000000000000000000000000000000000001e300000000000000000000000000000000000000000000000000000000000001e400000000000000000000000000000000000000000000000000000000000001e500000000000000000000000000000000000000000000000000000000000001e600000000000000000000000000000000000000000000000000000000000001e700000000000000000000000000000000000000000000000000000000000001e800000000000000000000000000000000000000000000000000000000000001e900000000000000000000000000000000000000000000000000000000000001ea00000000000000000000000000000000000000000000000000000000000001eb00000000000000000000000000000000000000000000000000000000000001ec00000000000000000000000000000000000000000000000000000000000001ed00000000000000000000000000000000000000000000000000000000000001ee00000000000000000000000000000000000000000000000000000000000001ef00000000000000000000000000000000000000000000000000000000000001f000000000000000000000000000000000000000000000000000000000000001f100000000000000000000000000000000000000000000000000000000000001f200000000000000000000000000000000000000000000000000000000000001f300000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f500000000000000000000000000000000000000000000000000000000000001f600000000000000000000000000000000000000000000000000000000000001f700000000000000000000000000000000000000000000000000000000000001f800000000000000000000000000000000000000000000000000000000000001f900000000000000000000000000000000000000000000000000000000000001fa00000000000000000000000000000000000000000000000000000000000001fb00000000000000000000000000000000000000000000000000000000000001fc00000000000000000000000000000000000000000000000000000000000001fd00000000000000000000000000000000000000000000000000000000000001fe00000000000000000000000000000000000000000000000000000000000001ff3f00000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f600000000000000000000000000000000000000000000000000000000000002f700000000000000000000000000000000000000000000000000000000000002f800000000000000000000000000000000000000000000000000000000000002f900000000000000000000000000000000000000000000000000000000000002fa00000000000000000000000000000000000000000000000000000000000002fb00000000000000000000000000000000000000000000000000000000000002fc00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000002fe0200000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c12000000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005c100000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005c200000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005c300000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005c400000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005c500000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005c600000000000000000000000000000000000000000000000000000000000005d000000000000000000000000000000000000000000000000000000000000005c700000000000000000000000000000000000000000000000000000000000005d100000000000000000000000000000000000000000000000000000000000005c800000000000000000000000000000000000000000000000000000000000005d200000000000000000000000000000000000000000000000000000000000005c900000000000000000000000000000000000000000000000000000000000005d300000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005d400000000000000000000000000000000000000000000000000000000000005cb00000000000000000000000000000000000000000000000000000000000005d500000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005d600000000000000000000000000000000000000000000000000000000000005cd00000000000000000000000000000000000000000000000000000000000005d700000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005d800000000000000000000000000000000000000000000000000000000000005cf00000000000000000000000000000000000000000000000000000000000005d900000000000000000000000000000000000000000000000000000000000005d000000000000000000000000000000000000000000000000000000000000005da00000000000000000000000000000000000000000000000000000000000005d100000000000000000000000000000000000000000000000000000000000005db00000000000000000000000000000000000000000000000000000000000005d200000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000005d300000000000000000000000000000000000000000000000000000000000005dd00000000000000000000000000000000000000000000000000000000000005d400000000000000000000000000000000000000000000000000000000000005de00000000000000000000000000000000000000000000000000000000000005d500000000000000000000000000000000000000000000000000000000000005df00000000000000000000000000000000000000000000000000000000000005d600000000000000000000000000000000000000000000000000000000000005e000000000000000000000000000000000000000000000000000000000000005d700000000000000000000000000000000000000000000000000000000000005e100000000000000000000000000000000000000000000000000000000000005d800000000000000000000000000000000000000000000000000000000000005e200000000000000000000000000000000000000000000000000000000000005d900000000000000000000000000000000000000000000000000000000000005e300000000000000000000000000000000000000000000000000000000000005da00000000000000000000000000000000000000000000000000000000000005e400000000000000000000000000000000000000000000000000000000000005db00000000000000000000000000000000000000000000000000000000000005e500000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000005e600000000000000000000000000000000000000000000000000000000000005dd00000000000000000000000000000000000000000000000000000000000005e700000000000000000000000000000000000000000000000000000000000005de00000000000000000000000000000000000000000000000000000000000005e800000000000000000000000000000000000000000000000000000000000005df00000000000000000000000000000000000000000000000000000000000005e9000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020100000000000000000000000000000000000000000000000000000000000002020000000000000000000000000000000000000000000000000000000000000203000000000000000000000000000000000000000000000000000000000000020400000000000000000000000000000000000000000000000000000000000002050000000000000000000000000000000000000000000000000000000000000206000000000000000000000000000000000000000000000000000000000000020700000000000000000000000000000000000000000000000000000000000002080000000000000000000000000000000000000000000000000000000000000209000000000000000000000000000000000000000000000000000000000000020a000000000000000000000000000000000000000000000000000000000000020b000000000000000000000000000000000000000000000000000000000000020c000000000000000000000000000000000000000000000000000000000000020d000000000000000000000000000000000000000000000000000000000000020e000000000000000000000000000000000000000000000000000000000000020f0000000000000000000000000000000000000000000000000000000000000210000000000000000000000000000000000000000000000000000000000000021100000000000000000000000000000000000000000000000000000000000002120000000000000000000000000000000000000000000000000000000000000213000000000000000000000000000000000000000000000000000000000000021400000000000000000000000000000000000000000000000000000000000002150000000000000000000000000000000000000000000000000000000000000216000000000000000000000000000000000000000000000000000000000000021700000000000000000000000000000000000000000000000000000000000002180000000000000000000000000000000000000000000000000000000000000219000000000000000000000000000000000000000000000000000000000000021a000000000000000000000000000000000000000000000000000000000000021b000000000000000000000000000000000000000000000000000000000000021c000000000000000000000000000000000000000000000000000000000000021d000000000000000000000000000000000000000000000000000000000000021e000000000000000000000000000000000000000000000000000000000000021f0000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000022100000000000000000000000000000000000000000000000000000000000002220000000000000000000000000000000000000000000000000000000000000223000000000000000000000000000000000000000000000000000000000000022400000000000000000000000000000000000000000000000000000000000002250000000000000000000000000000000000000000000000000000000000000226000000000000000000000000000000000000000000000000000000000000022700000000000000000000000000000000000000000000000000000000000002280000000000000000000000000000000000000000000000000000000000000229000000000000000000000000000000000000000000000000000000000000022a000000000000000000000000000000000000000000000000000000000000022b000000000000000000000000000000000000000000000000000000000000022c000000000000000000000000000000000000000000000000000000000000022d000000000000000000000000000000000000000000000000000000000000022e000000000000000000000000000000000000000000000000000000000000022f0000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000000000023100000000000000000000000000000000000000000000000000000000000002320000000000000000000000000000000000000000000000000000000000000233000000000000000000000000000000000000000000000000000000000000023400000000000000000000000000000000000000000000000000000000000002350000000000000000000000000000000000000000000000000000000000000236000000000000000000000000000000000000000000000000000000000000023700000000000000000000000000000000000000000000000000000000000002380000000000000000000000000000000000000000000000000000000000000239000000000000000000000000000000000000000000000000000000000000023a000000000000000000000000000000000000000000000000000000000000023b000000000000000000000000000000000000000000000000000000000000023c000000000000000000000000000000000000000000000000000000000000023d000000000000000000000000000000000000000000000000000000000000023e000000000000000000000000000000000000000000000000000000000000023f3f0000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f0000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000033100000000000000000000000000000000000000000000000000000000000003320000000000000000000000000000000000000000000000000000000000000333000000000000000000000000000000000000000000000000000000000000033400000000000000000000000000000000000000000000000000000000000003350000000000000000000000000000000000000000000000000000000000000336000000000000000000000000000000000000000000000000000000000000033700000000000000000000000000000000000000000000000000000000000003380000000000000000000000000000000000000000000000000000000000000339000000000000000000000000000000000000000000000000000000000000033a000000000000000000000000000000000000000000000000000000000000033b000000000000000000000000000000000000000000000000000000000000033c000000000000000000000000000000000000000000000000000000000000033d000000000000000000000000000000000000000000000000000000000000033e0200000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000401200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000601000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000602000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000603000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000604000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000605000000000000000000000000000000000000000000000000000000000000060f00000000000000000000000000000000000000000000000000000000000006060000000000000000000000000000000000000000000000000000000000000610000000000000000000000000000000000000000000000000000000000000060700000000000000000000000000000000000000000000000000000000000006110000000000000000000000000000000000000000000000000000000000000608000000000000000000000000000000000000000000000000000000000000061200000000000000000000000000000000000000000000000000000000000006090000000000000000000000000000000000000000000000000000000000000613000000000000000000000000000000000000000000000000000000000000060a0000000000000000000000000000000000000000000000000000000000000614000000000000000000000000000000000000000000000000000000000000060b0000000000000000000000000000000000000000000000000000000000000615000000000000000000000000000000000000000000000000000000000000060c0000000000000000000000000000000000000000000000000000000000000616000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000000000617000000000000000000000000000000000000000000000000000000000000060e0000000000000000000000000000000000000000000000000000000000000618000000000000000000000000000000000000000000000000000000000000060f00000000000000000000000000000000000000000000000000000000000006190000000000000000000000000000000000000000000000000000000000000610000000000000000000000000000000000000000000000000000000000000061a0000000000000000000000000000000000000000000000000000000000000611000000000000000000000000000000000000000000000000000000000000061b0000000000000000000000000000000000000000000000000000000000000612000000000000000000000000000000000000000000000000000000000000061c0000000000000000000000000000000000000000000000000000000000000613000000000000000000000000000000000000000000000000000000000000061d0000000000000000000000000000000000000000000000000000000000000614000000000000000000000000000000000000000000000000000000000000061e0000000000000000000000000000000000000000000000000000000000000615000000000000000000000000000000000000000000000000000000000000061f00000000000000000000000000000000000000000000000000000000000006160000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000061700000000000000000000000000000000000000000000000000000000000006210000000000000000000000000000000000000000000000000000000000000618000000000000000000000000000000000000000000000000000000000000062200000000000000000000000000000000000000000000000000000000000006190000000000000000000000000000000000000000000000000000000000000623000000000000000000000000000000000000000000000000000000000000061a0000000000000000000000000000000000000000000000000000000000000624000000000000000000000000000000000000000000000000000000000000061b0000000000000000000000000000000000000000000000000000000000000625000000000000000000000000000000000000000000000000000000000000061c0000000000000000000000000000000000000000000000000000000000000626000000000000000000000000000000000000000000000000000000000000061d0000000000000000000000000000000000000000000000000000000000000627000000000000000000000000000000000000000000000000000000000000061e0000000000000000000000000000000000000000000000000000000000000628000000000000000000000000000000000000000000000000000000000000061f00000000000000000000000000000000000000000000000000000000000006290000000000000000", "txsEffectsHash": "0x0097a976d5a0b2aa3ea4f9a657d4a8534ed793f49287da441c5d301adfd10d2a", "decodedHeader": { @@ -49,17 +49,16 @@ "chainId": 31337, "timestamp": 0, "version": 1, - "coinbase": "0xa23e0eb6a23e0eb6a23e0eb6a23e0eb6a23e0eb6", - "feeRecipient": "0x09cd9129799990baa63ca94680ef6ce915fbd462e83f04298c9f4a4ee339198d", + "coinbase": "0xe19a36459b9cf8900eab53dc279d27c08776c4f0", + "feeRecipient": "0x23b3b51cce257a1d3fa861caccf0f5766e54108540f14e3214f7141597f691d2", "gasFees": { "feePerDaGas": 0, - "feePerL1Gas": 0, "feePerL2Gas": 0 } }, "lastArchive": { "nextAvailableLeafIndex": 1, - "root": "0x05b0b6df52f1d47d0406318558052c89a174fbc9d615def82b3cc9ccc1937db8" + "root": "0x067a48e3140b6f15d71751ededfa0cccde3d436bb71aa7fec226b0bfe51dc5cf" }, "stateReference": { "l1ToL2MessageTree": { @@ -82,8 +81,8 @@ } } }, - "header": "0x05b0b6df52f1d47d0406318558052c89a174fbc9d615def82b3cc9ccc1937db80000000100000000000000000000000000000000000000000000000000000000000000020097a976d5a0b2aa3ea4f9a657d4a8534ed793f49287da441c5d301adfd10d2a00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00198704eb051da0e43ff1a9b3285f168389ba3dd93f8ec1f75f6cafcadbaeb61864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000100d944282e11bdcfa5e8f2b55fe80db4c586087bfc10e0bbba5724d30b8c15e2e0000010001c16141039343d4d403501e66deecff1b024bd76794820a43dc3424087813a20000018028d06967b6a4a1cc3c799fb6f008b63a2ffecd5034b81aa10792a6659f8aca22000000c00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000a23e0eb6a23e0eb6a23e0eb6a23e0eb6a23e0eb609cd9129799990baa63ca94680ef6ce915fbd462e83f04298c9f4a4ee339198d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x0067a977a266ee76cce895807fd89aa1cf1e7b52eab7d6654525717dfa128280", + "header": "0x067a48e3140b6f15d71751ededfa0cccde3d436bb71aa7fec226b0bfe51dc5cf0000000100000000000000000000000000000000000000000000000000000000000000020097a976d5a0b2aa3ea4f9a657d4a8534ed793f49287da441c5d301adfd10d2a00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00198704eb051da0e43ff1a9b3285f168389ba3dd93f8ec1f75f6cafcadbaeb61864fcdaa80ff2719154fa7c8a9050662972707168d69eac9db6fd3110829f80000000100d944282e11bdcfa5e8f2b55fe80db4c586087bfc10e0bbba5724d30b8c15e2e0000010001c16141039343d4d403501e66deecff1b024bd76794820a43dc3424087813a20000018028d06967b6a4a1cc3c799fb6f008b63a2ffecd5034b81aa10792a6659f8aca22000000c00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000e19a36459b9cf8900eab53dc279d27c08776c4f023b3b51cce257a1d3fa861caccf0f5766e54108540f14e3214f7141597f691d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x00390dc23fc0d259c1dce81c99427614fc4eff5f5d814eb63bdc0277a693528a", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index 2ae589fa74b..e42dd844b5e 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -34,7 +34,7 @@ ] }, "block": { - "archive": "0x1522dedf40c124b28514c6ac2843ff249cab1b29cddb95e06eb05987ef013b1a", + "archive": "0x027d88854e9b418f2dda8285ad69561feed7b7d6af5ef9ae72ffc347d700f912", "body": "0x0000000400400000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e000000000000000000000000000000000000000000000000000000000000024f0000000000000000000000000000000000000000000000000000000000000250000000000000000000000000000000000000000000000000000000000000025100000000000000000000000000000000000000000000000000000000000002520000000000000000000000000000000000000000000000000000000000000253000000000000000000000000000000000000000000000000000000000000025400000000000000000000000000000000000000000000000000000000000002550000000000000000000000000000000000000000000000000000000000000256000000000000000000000000000000000000000000000000000000000000025700000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000259000000000000000000000000000000000000000000000000000000000000025a000000000000000000000000000000000000000000000000000000000000025b000000000000000000000000000000000000000000000000000000000000025c000000000000000000000000000000000000000000000000000000000000025d000000000000000000000000000000000000000000000000000000000000025e000000000000000000000000000000000000000000000000000000000000025f0000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e000000000000000000000000000000000000000000000000000000000000026f0000000000000000000000000000000000000000000000000000000000000270000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002720000000000000000000000000000000000000000000000000000000000000273000000000000000000000000000000000000000000000000000000000000027400000000000000000000000000000000000000000000000000000000000002750000000000000000000000000000000000000000000000000000000000000276000000000000000000000000000000000000000000000000000000000000027700000000000000000000000000000000000000000000000000000000000002780000000000000000000000000000000000000000000000000000000000000279000000000000000000000000000000000000000000000000000000000000027a000000000000000000000000000000000000000000000000000000000000027b000000000000000000000000000000000000000000000000000000000000027c000000000000000000000000000000000000000000000000000000000000027d000000000000000000000000000000000000000000000000000000000000027e000000000000000000000000000000000000000000000000000000000000027f3f0000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000003420000000000000000000000000000000000000000000000000000000000000343000000000000000000000000000000000000000000000000000000000000034400000000000000000000000000000000000000000000000000000000000003450000000000000000000000000000000000000000000000000000000000000346000000000000000000000000000000000000000000000000000000000000034700000000000000000000000000000000000000000000000000000000000003480000000000000000000000000000000000000000000000000000000000000349000000000000000000000000000000000000000000000000000000000000034a000000000000000000000000000000000000000000000000000000000000034b000000000000000000000000000000000000000000000000000000000000034c000000000000000000000000000000000000000000000000000000000000034d000000000000000000000000000000000000000000000000000000000000034e000000000000000000000000000000000000000000000000000000000000034f0000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000035100000000000000000000000000000000000000000000000000000000000003520000000000000000000000000000000000000000000000000000000000000353000000000000000000000000000000000000000000000000000000000000035400000000000000000000000000000000000000000000000000000000000003550000000000000000000000000000000000000000000000000000000000000356000000000000000000000000000000000000000000000000000000000000035700000000000000000000000000000000000000000000000000000000000003580000000000000000000000000000000000000000000000000000000000000359000000000000000000000000000000000000000000000000000000000000035a000000000000000000000000000000000000000000000000000000000000035b000000000000000000000000000000000000000000000000000000000000035c000000000000000000000000000000000000000000000000000000000000035d000000000000000000000000000000000000000000000000000000000000035e000000000000000000000000000000000000000000000000000000000000035f0000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000036100000000000000000000000000000000000000000000000000000000000003620000000000000000000000000000000000000000000000000000000000000363000000000000000000000000000000000000000000000000000000000000036400000000000000000000000000000000000000000000000000000000000003650000000000000000000000000000000000000000000000000000000000000366000000000000000000000000000000000000000000000000000000000000036700000000000000000000000000000000000000000000000000000000000003680000000000000000000000000000000000000000000000000000000000000369000000000000000000000000000000000000000000000000000000000000036a000000000000000000000000000000000000000000000000000000000000036b000000000000000000000000000000000000000000000000000000000000036c000000000000000000000000000000000000000000000000000000000000036d000000000000000000000000000000000000000000000000000000000000036e000000000000000000000000000000000000000000000000000000000000036f0000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000037100000000000000000000000000000000000000000000000000000000000003720000000000000000000000000000000000000000000000000000000000000373000000000000000000000000000000000000000000000000000000000000037400000000000000000000000000000000000000000000000000000000000003750000000000000000000000000000000000000000000000000000000000000376000000000000000000000000000000000000000000000000000000000000037700000000000000000000000000000000000000000000000000000000000003780000000000000000000000000000000000000000000000000000000000000379000000000000000000000000000000000000000000000000000000000000037a000000000000000000000000000000000000000000000000000000000000037b000000000000000000000000000000000000000000000000000000000000037c000000000000000000000000000000000000000000000000000000000000037d000000000000000000000000000000000000000000000000000000000000037e0200000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000441200000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000641000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000642000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000643000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000644000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000645000000000000000000000000000000000000000000000000000000000000064f00000000000000000000000000000000000000000000000000000000000006460000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000064700000000000000000000000000000000000000000000000000000000000006510000000000000000000000000000000000000000000000000000000000000648000000000000000000000000000000000000000000000000000000000000065200000000000000000000000000000000000000000000000000000000000006490000000000000000000000000000000000000000000000000000000000000653000000000000000000000000000000000000000000000000000000000000064a0000000000000000000000000000000000000000000000000000000000000654000000000000000000000000000000000000000000000000000000000000064b0000000000000000000000000000000000000000000000000000000000000655000000000000000000000000000000000000000000000000000000000000064c0000000000000000000000000000000000000000000000000000000000000656000000000000000000000000000000000000000000000000000000000000064d0000000000000000000000000000000000000000000000000000000000000657000000000000000000000000000000000000000000000000000000000000064e0000000000000000000000000000000000000000000000000000000000000658000000000000000000000000000000000000000000000000000000000000064f00000000000000000000000000000000000000000000000000000000000006590000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000065a0000000000000000000000000000000000000000000000000000000000000651000000000000000000000000000000000000000000000000000000000000065b0000000000000000000000000000000000000000000000000000000000000652000000000000000000000000000000000000000000000000000000000000065c0000000000000000000000000000000000000000000000000000000000000653000000000000000000000000000000000000000000000000000000000000065d0000000000000000000000000000000000000000000000000000000000000654000000000000000000000000000000000000000000000000000000000000065e0000000000000000000000000000000000000000000000000000000000000655000000000000000000000000000000000000000000000000000000000000065f00000000000000000000000000000000000000000000000000000000000006560000000000000000000000000000000000000000000000000000000000000660000000000000000000000000000000000000000000000000000000000000065700000000000000000000000000000000000000000000000000000000000006610000000000000000000000000000000000000000000000000000000000000658000000000000000000000000000000000000000000000000000000000000066200000000000000000000000000000000000000000000000000000000000006590000000000000000000000000000000000000000000000000000000000000663000000000000000000000000000000000000000000000000000000000000065a0000000000000000000000000000000000000000000000000000000000000664000000000000000000000000000000000000000000000000000000000000065b0000000000000000000000000000000000000000000000000000000000000665000000000000000000000000000000000000000000000000000000000000065c0000000000000000000000000000000000000000000000000000000000000666000000000000000000000000000000000000000000000000000000000000065d0000000000000000000000000000000000000000000000000000000000000667000000000000000000000000000000000000000000000000000000000000065e0000000000000000000000000000000000000000000000000000000000000668000000000000000000000000000000000000000000000000000000000000065f0000000000000000000000000000000000000000000000000000000000000669000000000000000000400000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e000000000000000000000000000000000000000000000000000000000000028f0000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000000000000000029100000000000000000000000000000000000000000000000000000000000002920000000000000000000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000002950000000000000000000000000000000000000000000000000000000000000296000000000000000000000000000000000000000000000000000000000000029700000000000000000000000000000000000000000000000000000000000002980000000000000000000000000000000000000000000000000000000000000299000000000000000000000000000000000000000000000000000000000000029a000000000000000000000000000000000000000000000000000000000000029b000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000029d000000000000000000000000000000000000000000000000000000000000029e000000000000000000000000000000000000000000000000000000000000029f00000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002a100000000000000000000000000000000000000000000000000000000000002a200000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000002a400000000000000000000000000000000000000000000000000000000000002a500000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002a700000000000000000000000000000000000000000000000000000000000002a800000000000000000000000000000000000000000000000000000000000002a900000000000000000000000000000000000000000000000000000000000002aa00000000000000000000000000000000000000000000000000000000000002ab00000000000000000000000000000000000000000000000000000000000002ac00000000000000000000000000000000000000000000000000000000000002ad00000000000000000000000000000000000000000000000000000000000002ae00000000000000000000000000000000000000000000000000000000000002af00000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002b100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000002b300000000000000000000000000000000000000000000000000000000000002b400000000000000000000000000000000000000000000000000000000000002b500000000000000000000000000000000000000000000000000000000000002b600000000000000000000000000000000000000000000000000000000000002b700000000000000000000000000000000000000000000000000000000000002b800000000000000000000000000000000000000000000000000000000000002b900000000000000000000000000000000000000000000000000000000000002ba00000000000000000000000000000000000000000000000000000000000002bb00000000000000000000000000000000000000000000000000000000000002bc00000000000000000000000000000000000000000000000000000000000002bd00000000000000000000000000000000000000000000000000000000000002be00000000000000000000000000000000000000000000000000000000000002bf3f0000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000038100000000000000000000000000000000000000000000000000000000000003820000000000000000000000000000000000000000000000000000000000000383000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000003850000000000000000000000000000000000000000000000000000000000000386000000000000000000000000000000000000000000000000000000000000038700000000000000000000000000000000000000000000000000000000000003880000000000000000000000000000000000000000000000000000000000000389000000000000000000000000000000000000000000000000000000000000038a000000000000000000000000000000000000000000000000000000000000038b000000000000000000000000000000000000000000000000000000000000038c000000000000000000000000000000000000000000000000000000000000038d000000000000000000000000000000000000000000000000000000000000038e000000000000000000000000000000000000000000000000000000000000038f0000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000039100000000000000000000000000000000000000000000000000000000000003920000000000000000000000000000000000000000000000000000000000000393000000000000000000000000000000000000000000000000000000000000039400000000000000000000000000000000000000000000000000000000000003950000000000000000000000000000000000000000000000000000000000000396000000000000000000000000000000000000000000000000000000000000039700000000000000000000000000000000000000000000000000000000000003980000000000000000000000000000000000000000000000000000000000000399000000000000000000000000000000000000000000000000000000000000039a000000000000000000000000000000000000000000000000000000000000039b000000000000000000000000000000000000000000000000000000000000039c000000000000000000000000000000000000000000000000000000000000039d000000000000000000000000000000000000000000000000000000000000039e000000000000000000000000000000000000000000000000000000000000039f00000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003a100000000000000000000000000000000000000000000000000000000000003a200000000000000000000000000000000000000000000000000000000000003a300000000000000000000000000000000000000000000000000000000000003a400000000000000000000000000000000000000000000000000000000000003a500000000000000000000000000000000000000000000000000000000000003a600000000000000000000000000000000000000000000000000000000000003a700000000000000000000000000000000000000000000000000000000000003a800000000000000000000000000000000000000000000000000000000000003a900000000000000000000000000000000000000000000000000000000000003aa00000000000000000000000000000000000000000000000000000000000003ab00000000000000000000000000000000000000000000000000000000000003ac00000000000000000000000000000000000000000000000000000000000003ad00000000000000000000000000000000000000000000000000000000000003ae00000000000000000000000000000000000000000000000000000000000003af00000000000000000000000000000000000000000000000000000000000003b000000000000000000000000000000000000000000000000000000000000003b100000000000000000000000000000000000000000000000000000000000003b200000000000000000000000000000000000000000000000000000000000003b300000000000000000000000000000000000000000000000000000000000003b400000000000000000000000000000000000000000000000000000000000003b500000000000000000000000000000000000000000000000000000000000003b600000000000000000000000000000000000000000000000000000000000003b700000000000000000000000000000000000000000000000000000000000003b800000000000000000000000000000000000000000000000000000000000003b900000000000000000000000000000000000000000000000000000000000003ba00000000000000000000000000000000000000000000000000000000000003bb00000000000000000000000000000000000000000000000000000000000003bc00000000000000000000000000000000000000000000000000000000000003bd00000000000000000000000000000000000000000000000000000000000003be0200000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000481200000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000681000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000682000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000683000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000684000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000685000000000000000000000000000000000000000000000000000000000000068f00000000000000000000000000000000000000000000000000000000000006860000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000068700000000000000000000000000000000000000000000000000000000000006910000000000000000000000000000000000000000000000000000000000000688000000000000000000000000000000000000000000000000000000000000069200000000000000000000000000000000000000000000000000000000000006890000000000000000000000000000000000000000000000000000000000000693000000000000000000000000000000000000000000000000000000000000068a0000000000000000000000000000000000000000000000000000000000000694000000000000000000000000000000000000000000000000000000000000068b0000000000000000000000000000000000000000000000000000000000000695000000000000000000000000000000000000000000000000000000000000068c0000000000000000000000000000000000000000000000000000000000000696000000000000000000000000000000000000000000000000000000000000068d0000000000000000000000000000000000000000000000000000000000000697000000000000000000000000000000000000000000000000000000000000068e0000000000000000000000000000000000000000000000000000000000000698000000000000000000000000000000000000000000000000000000000000068f00000000000000000000000000000000000000000000000000000000000006990000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000069a0000000000000000000000000000000000000000000000000000000000000691000000000000000000000000000000000000000000000000000000000000069b0000000000000000000000000000000000000000000000000000000000000692000000000000000000000000000000000000000000000000000000000000069c0000000000000000000000000000000000000000000000000000000000000693000000000000000000000000000000000000000000000000000000000000069d0000000000000000000000000000000000000000000000000000000000000694000000000000000000000000000000000000000000000000000000000000069e0000000000000000000000000000000000000000000000000000000000000695000000000000000000000000000000000000000000000000000000000000069f000000000000000000000000000000000000000000000000000000000000069600000000000000000000000000000000000000000000000000000000000006a0000000000000000000000000000000000000000000000000000000000000069700000000000000000000000000000000000000000000000000000000000006a1000000000000000000000000000000000000000000000000000000000000069800000000000000000000000000000000000000000000000000000000000006a2000000000000000000000000000000000000000000000000000000000000069900000000000000000000000000000000000000000000000000000000000006a3000000000000000000000000000000000000000000000000000000000000069a00000000000000000000000000000000000000000000000000000000000006a4000000000000000000000000000000000000000000000000000000000000069b00000000000000000000000000000000000000000000000000000000000006a5000000000000000000000000000000000000000000000000000000000000069c00000000000000000000000000000000000000000000000000000000000006a6000000000000000000000000000000000000000000000000000000000000069d00000000000000000000000000000000000000000000000000000000000006a7000000000000000000000000000000000000000000000000000000000000069e00000000000000000000000000000000000000000000000000000000000006a8000000000000000000000000000000000000000000000000000000000000069f00000000000000000000000000000000000000000000000000000000000006a90000000000000000004000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002c100000000000000000000000000000000000000000000000000000000000002c200000000000000000000000000000000000000000000000000000000000002c300000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002c500000000000000000000000000000000000000000000000000000000000002c600000000000000000000000000000000000000000000000000000000000002c700000000000000000000000000000000000000000000000000000000000002c800000000000000000000000000000000000000000000000000000000000002c900000000000000000000000000000000000000000000000000000000000002ca00000000000000000000000000000000000000000000000000000000000002cb00000000000000000000000000000000000000000000000000000000000002cc00000000000000000000000000000000000000000000000000000000000002cd00000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002cf00000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d100000000000000000000000000000000000000000000000000000000000002d200000000000000000000000000000000000000000000000000000000000002d300000000000000000000000000000000000000000000000000000000000002d400000000000000000000000000000000000000000000000000000000000002d500000000000000000000000000000000000000000000000000000000000002d600000000000000000000000000000000000000000000000000000000000002d700000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002d900000000000000000000000000000000000000000000000000000000000002da00000000000000000000000000000000000000000000000000000000000002db00000000000000000000000000000000000000000000000000000000000002dc00000000000000000000000000000000000000000000000000000000000002dd00000000000000000000000000000000000000000000000000000000000002de00000000000000000000000000000000000000000000000000000000000002df00000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000002e100000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002e300000000000000000000000000000000000000000000000000000000000002e400000000000000000000000000000000000000000000000000000000000002e500000000000000000000000000000000000000000000000000000000000002e600000000000000000000000000000000000000000000000000000000000002e700000000000000000000000000000000000000000000000000000000000002e800000000000000000000000000000000000000000000000000000000000002e900000000000000000000000000000000000000000000000000000000000002ea00000000000000000000000000000000000000000000000000000000000002eb00000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002ed00000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000002ef00000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000002f100000000000000000000000000000000000000000000000000000000000002f200000000000000000000000000000000000000000000000000000000000002f300000000000000000000000000000000000000000000000000000000000002f400000000000000000000000000000000000000000000000000000000000002f500000000000000000000000000000000000000000000000000000000000002f600000000000000000000000000000000000000000000000000000000000002f700000000000000000000000000000000000000000000000000000000000002f800000000000000000000000000000000000000000000000000000000000002f900000000000000000000000000000000000000000000000000000000000002fa00000000000000000000000000000000000000000000000000000000000002fb00000000000000000000000000000000000000000000000000000000000002fc00000000000000000000000000000000000000000000000000000000000002fd00000000000000000000000000000000000000000000000000000000000002fe00000000000000000000000000000000000000000000000000000000000002ff3f00000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c100000000000000000000000000000000000000000000000000000000000003c200000000000000000000000000000000000000000000000000000000000003c300000000000000000000000000000000000000000000000000000000000003c400000000000000000000000000000000000000000000000000000000000003c500000000000000000000000000000000000000000000000000000000000003c600000000000000000000000000000000000000000000000000000000000003c700000000000000000000000000000000000000000000000000000000000003c800000000000000000000000000000000000000000000000000000000000003c900000000000000000000000000000000000000000000000000000000000003ca00000000000000000000000000000000000000000000000000000000000003cb00000000000000000000000000000000000000000000000000000000000003cc00000000000000000000000000000000000000000000000000000000000003cd00000000000000000000000000000000000000000000000000000000000003ce00000000000000000000000000000000000000000000000000000000000003cf00000000000000000000000000000000000000000000000000000000000003d000000000000000000000000000000000000000000000000000000000000003d100000000000000000000000000000000000000000000000000000000000003d200000000000000000000000000000000000000000000000000000000000003d300000000000000000000000000000000000000000000000000000000000003d400000000000000000000000000000000000000000000000000000000000003d500000000000000000000000000000000000000000000000000000000000003d600000000000000000000000000000000000000000000000000000000000003d700000000000000000000000000000000000000000000000000000000000003d800000000000000000000000000000000000000000000000000000000000003d900000000000000000000000000000000000000000000000000000000000003da00000000000000000000000000000000000000000000000000000000000003db00000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000003dd00000000000000000000000000000000000000000000000000000000000003de00000000000000000000000000000000000000000000000000000000000003df00000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003e100000000000000000000000000000000000000000000000000000000000003e200000000000000000000000000000000000000000000000000000000000003e300000000000000000000000000000000000000000000000000000000000003e400000000000000000000000000000000000000000000000000000000000003e500000000000000000000000000000000000000000000000000000000000003e600000000000000000000000000000000000000000000000000000000000003e700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e900000000000000000000000000000000000000000000000000000000000003ea00000000000000000000000000000000000000000000000000000000000003eb00000000000000000000000000000000000000000000000000000000000003ec00000000000000000000000000000000000000000000000000000000000003ed00000000000000000000000000000000000000000000000000000000000003ee00000000000000000000000000000000000000000000000000000000000003ef00000000000000000000000000000000000000000000000000000000000003f000000000000000000000000000000000000000000000000000000000000003f100000000000000000000000000000000000000000000000000000000000003f200000000000000000000000000000000000000000000000000000000000003f300000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000003f500000000000000000000000000000000000000000000000000000000000003f600000000000000000000000000000000000000000000000000000000000003f700000000000000000000000000000000000000000000000000000000000003f800000000000000000000000000000000000000000000000000000000000003f900000000000000000000000000000000000000000000000000000000000003fa00000000000000000000000000000000000000000000000000000000000003fb00000000000000000000000000000000000000000000000000000000000003fc00000000000000000000000000000000000000000000000000000000000003fd00000000000000000000000000000000000000000000000000000000000003fe0200000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004c12000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006c100000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006c200000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006c300000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006c400000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006c500000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006c600000000000000000000000000000000000000000000000000000000000006d000000000000000000000000000000000000000000000000000000000000006c700000000000000000000000000000000000000000000000000000000000006d100000000000000000000000000000000000000000000000000000000000006c800000000000000000000000000000000000000000000000000000000000006d200000000000000000000000000000000000000000000000000000000000006c900000000000000000000000000000000000000000000000000000000000006d300000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006d400000000000000000000000000000000000000000000000000000000000006cb00000000000000000000000000000000000000000000000000000000000006d500000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006d600000000000000000000000000000000000000000000000000000000000006cd00000000000000000000000000000000000000000000000000000000000006d700000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006d800000000000000000000000000000000000000000000000000000000000006cf00000000000000000000000000000000000000000000000000000000000006d900000000000000000000000000000000000000000000000000000000000006d000000000000000000000000000000000000000000000000000000000000006da00000000000000000000000000000000000000000000000000000000000006d100000000000000000000000000000000000000000000000000000000000006db00000000000000000000000000000000000000000000000000000000000006d200000000000000000000000000000000000000000000000000000000000006dc00000000000000000000000000000000000000000000000000000000000006d300000000000000000000000000000000000000000000000000000000000006dd00000000000000000000000000000000000000000000000000000000000006d400000000000000000000000000000000000000000000000000000000000006de00000000000000000000000000000000000000000000000000000000000006d500000000000000000000000000000000000000000000000000000000000006df00000000000000000000000000000000000000000000000000000000000006d600000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000006d700000000000000000000000000000000000000000000000000000000000006e100000000000000000000000000000000000000000000000000000000000006d800000000000000000000000000000000000000000000000000000000000006e200000000000000000000000000000000000000000000000000000000000006d900000000000000000000000000000000000000000000000000000000000006e300000000000000000000000000000000000000000000000000000000000006da00000000000000000000000000000000000000000000000000000000000006e400000000000000000000000000000000000000000000000000000000000006db00000000000000000000000000000000000000000000000000000000000006e500000000000000000000000000000000000000000000000000000000000006dc00000000000000000000000000000000000000000000000000000000000006e600000000000000000000000000000000000000000000000000000000000006dd00000000000000000000000000000000000000000000000000000000000006e700000000000000000000000000000000000000000000000000000000000006de00000000000000000000000000000000000000000000000000000000000006e800000000000000000000000000000000000000000000000000000000000006df00000000000000000000000000000000000000000000000000000000000006e9000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000003020000000000000000000000000000000000000000000000000000000000000303000000000000000000000000000000000000000000000000000000000000030400000000000000000000000000000000000000000000000000000000000003050000000000000000000000000000000000000000000000000000000000000306000000000000000000000000000000000000000000000000000000000000030700000000000000000000000000000000000000000000000000000000000003080000000000000000000000000000000000000000000000000000000000000309000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000030b000000000000000000000000000000000000000000000000000000000000030c000000000000000000000000000000000000000000000000000000000000030d000000000000000000000000000000000000000000000000000000000000030e000000000000000000000000000000000000000000000000000000000000030f0000000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000000000000000031100000000000000000000000000000000000000000000000000000000000003120000000000000000000000000000000000000000000000000000000000000313000000000000000000000000000000000000000000000000000000000000031400000000000000000000000000000000000000000000000000000000000003150000000000000000000000000000000000000000000000000000000000000316000000000000000000000000000000000000000000000000000000000000031700000000000000000000000000000000000000000000000000000000000003180000000000000000000000000000000000000000000000000000000000000319000000000000000000000000000000000000000000000000000000000000031a000000000000000000000000000000000000000000000000000000000000031b000000000000000000000000000000000000000000000000000000000000031c000000000000000000000000000000000000000000000000000000000000031d000000000000000000000000000000000000000000000000000000000000031e000000000000000000000000000000000000000000000000000000000000031f0000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032100000000000000000000000000000000000000000000000000000000000003220000000000000000000000000000000000000000000000000000000000000323000000000000000000000000000000000000000000000000000000000000032400000000000000000000000000000000000000000000000000000000000003250000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000032700000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000329000000000000000000000000000000000000000000000000000000000000032a000000000000000000000000000000000000000000000000000000000000032b000000000000000000000000000000000000000000000000000000000000032c000000000000000000000000000000000000000000000000000000000000032d000000000000000000000000000000000000000000000000000000000000032e000000000000000000000000000000000000000000000000000000000000032f0000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000000000033100000000000000000000000000000000000000000000000000000000000003320000000000000000000000000000000000000000000000000000000000000333000000000000000000000000000000000000000000000000000000000000033400000000000000000000000000000000000000000000000000000000000003350000000000000000000000000000000000000000000000000000000000000336000000000000000000000000000000000000000000000000000000000000033700000000000000000000000000000000000000000000000000000000000003380000000000000000000000000000000000000000000000000000000000000339000000000000000000000000000000000000000000000000000000000000033a000000000000000000000000000000000000000000000000000000000000033b000000000000000000000000000000000000000000000000000000000000033c000000000000000000000000000000000000000000000000000000000000033d000000000000000000000000000000000000000000000000000000000000033e000000000000000000000000000000000000000000000000000000000000033f3f0000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040100000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000403000000000000000000000000000000000000000000000000000000000000040400000000000000000000000000000000000000000000000000000000000004050000000000000000000000000000000000000000000000000000000000000406000000000000000000000000000000000000000000000000000000000000040700000000000000000000000000000000000000000000000000000000000004080000000000000000000000000000000000000000000000000000000000000409000000000000000000000000000000000000000000000000000000000000040a000000000000000000000000000000000000000000000000000000000000040b000000000000000000000000000000000000000000000000000000000000040c000000000000000000000000000000000000000000000000000000000000040d000000000000000000000000000000000000000000000000000000000000040e000000000000000000000000000000000000000000000000000000000000040f0000000000000000000000000000000000000000000000000000000000000410000000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004120000000000000000000000000000000000000000000000000000000000000413000000000000000000000000000000000000000000000000000000000000041400000000000000000000000000000000000000000000000000000000000004150000000000000000000000000000000000000000000000000000000000000416000000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004180000000000000000000000000000000000000000000000000000000000000419000000000000000000000000000000000000000000000000000000000000041a000000000000000000000000000000000000000000000000000000000000041b000000000000000000000000000000000000000000000000000000000000041c000000000000000000000000000000000000000000000000000000000000041d000000000000000000000000000000000000000000000000000000000000041e000000000000000000000000000000000000000000000000000000000000041f0000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000042100000000000000000000000000000000000000000000000000000000000004220000000000000000000000000000000000000000000000000000000000000423000000000000000000000000000000000000000000000000000000000000042400000000000000000000000000000000000000000000000000000000000004250000000000000000000000000000000000000000000000000000000000000426000000000000000000000000000000000000000000000000000000000000042700000000000000000000000000000000000000000000000000000000000004280000000000000000000000000000000000000000000000000000000000000429000000000000000000000000000000000000000000000000000000000000042a000000000000000000000000000000000000000000000000000000000000042b000000000000000000000000000000000000000000000000000000000000042c000000000000000000000000000000000000000000000000000000000000042d000000000000000000000000000000000000000000000000000000000000042e000000000000000000000000000000000000000000000000000000000000042f0000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000000000000000000000000000000000000043100000000000000000000000000000000000000000000000000000000000004320000000000000000000000000000000000000000000000000000000000000433000000000000000000000000000000000000000000000000000000000000043400000000000000000000000000000000000000000000000000000000000004350000000000000000000000000000000000000000000000000000000000000436000000000000000000000000000000000000000000000000000000000000043700000000000000000000000000000000000000000000000000000000000004380000000000000000000000000000000000000000000000000000000000000439000000000000000000000000000000000000000000000000000000000000043a000000000000000000000000000000000000000000000000000000000000043b000000000000000000000000000000000000000000000000000000000000043c000000000000000000000000000000000000000000000000000000000000043d000000000000000000000000000000000000000000000000000000000000043e0200000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000501200000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000701000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000702000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000703000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000704000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000705000000000000000000000000000000000000000000000000000000000000070f00000000000000000000000000000000000000000000000000000000000007060000000000000000000000000000000000000000000000000000000000000710000000000000000000000000000000000000000000000000000000000000070700000000000000000000000000000000000000000000000000000000000007110000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000071200000000000000000000000000000000000000000000000000000000000007090000000000000000000000000000000000000000000000000000000000000713000000000000000000000000000000000000000000000000000000000000070a0000000000000000000000000000000000000000000000000000000000000714000000000000000000000000000000000000000000000000000000000000070b0000000000000000000000000000000000000000000000000000000000000715000000000000000000000000000000000000000000000000000000000000070c0000000000000000000000000000000000000000000000000000000000000716000000000000000000000000000000000000000000000000000000000000070d0000000000000000000000000000000000000000000000000000000000000717000000000000000000000000000000000000000000000000000000000000070e0000000000000000000000000000000000000000000000000000000000000718000000000000000000000000000000000000000000000000000000000000070f00000000000000000000000000000000000000000000000000000000000007190000000000000000000000000000000000000000000000000000000000000710000000000000000000000000000000000000000000000000000000000000071a0000000000000000000000000000000000000000000000000000000000000711000000000000000000000000000000000000000000000000000000000000071b0000000000000000000000000000000000000000000000000000000000000712000000000000000000000000000000000000000000000000000000000000071c0000000000000000000000000000000000000000000000000000000000000713000000000000000000000000000000000000000000000000000000000000071d0000000000000000000000000000000000000000000000000000000000000714000000000000000000000000000000000000000000000000000000000000071e0000000000000000000000000000000000000000000000000000000000000715000000000000000000000000000000000000000000000000000000000000071f00000000000000000000000000000000000000000000000000000000000007160000000000000000000000000000000000000000000000000000000000000720000000000000000000000000000000000000000000000000000000000000071700000000000000000000000000000000000000000000000000000000000007210000000000000000000000000000000000000000000000000000000000000718000000000000000000000000000000000000000000000000000000000000072200000000000000000000000000000000000000000000000000000000000007190000000000000000000000000000000000000000000000000000000000000723000000000000000000000000000000000000000000000000000000000000071a0000000000000000000000000000000000000000000000000000000000000724000000000000000000000000000000000000000000000000000000000000071b0000000000000000000000000000000000000000000000000000000000000725000000000000000000000000000000000000000000000000000000000000071c0000000000000000000000000000000000000000000000000000000000000726000000000000000000000000000000000000000000000000000000000000071d0000000000000000000000000000000000000000000000000000000000000727000000000000000000000000000000000000000000000000000000000000071e0000000000000000000000000000000000000000000000000000000000000728000000000000000000000000000000000000000000000000000000000000071f00000000000000000000000000000000000000000000000000000000000007290000000000000000", "txsEffectsHash": "0x001f86cec051421edd80056cd49b7bf9034751ec5b14e4c120fdc4427f5bba63", "decodedHeader": { @@ -47,19 +47,18 @@ "globalVariables": { "blockNumber": 2, "chainId": 31337, - "timestamp": 1713529803, + "timestamp": 1714163442, "version": 1, - "coinbase": "0xa23e0eb6a23e0eb6a23e0eb6a23e0eb6a23e0eb6", - "feeRecipient": "0x09cd9129799990baa63ca94680ef6ce915fbd462e83f04298c9f4a4ee339198d", + "coinbase": "0xe19a36459b9cf8900eab53dc279d27c08776c4f0", + "feeRecipient": "0x23b3b51cce257a1d3fa861caccf0f5766e54108540f14e3214f7141597f691d2", "gasFees": { "feePerDaGas": 0, - "feePerL1Gas": 0, "feePerL2Gas": 0 } }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x2fc3ac909751b968a209d4b189dcd536f28c90b18d40ab9c73b95abd044d2874" + "root": "0x2869dadfe3df86f02e6d5865cdc24253b0e5f84aafd1098b9b17bfc14dbac2dc" }, "stateReference": { "l1ToL2MessageTree": { @@ -82,8 +81,8 @@ } } }, - "header": "0x2fc3ac909751b968a209d4b189dcd536f28c90b18d40ab9c73b95abd044d2874000000020000000000000000000000000000000000000000000000000000000000000002001f86cec051421edd80056cd49b7bf9034751ec5b14e4c120fdc4427f5bba6300212ff46db74e06c26240f9a92fb6fea84709380935d657361bbd5bcb89193700a5a7c9f331ce6832a69dc81873ed87de7ceeaaed2af1d595cb14ca9616eddd2e0232573b292e99cb24c082c3ef340d619341ab76aa1e9dff1ab1914963452d0000002024c6dc6d357aad01e10fe1adb877bb28b1df97375b874116e488086ca76e5f9600000200268020a622156e2beac47431b0cd70e1c81fef9a6aa3c365bfcbed9aa7301c5e000002802ecba8caa69552bb0d9bdf0d13eb328aeb6f166a1509678d9bfa9970971d69ab000001400000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000662263cba23e0eb6a23e0eb6a23e0eb6a23e0eb6a23e0eb609cd9129799990baa63ca94680ef6ce915fbd462e83f04298c9f4a4ee339198d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x000587c30ef90e65a291fa5b6632b54e235c8adfd16ff10791f82d688c7d387f", + "header": "0x2869dadfe3df86f02e6d5865cdc24253b0e5f84aafd1098b9b17bfc14dbac2dc000000020000000000000000000000000000000000000000000000000000000000000002001f86cec051421edd80056cd49b7bf9034751ec5b14e4c120fdc4427f5bba6300212ff46db74e06c26240f9a92fb6fea84709380935d657361bbd5bcb89193700a5a7c9f331ce6832a69dc81873ed87de7ceeaaed2af1d595cb14ca9616eddd2e0232573b292e99cb24c082c3ef340d619341ab76aa1e9dff1ab1914963452d0000002024c6dc6d357aad01e10fe1adb877bb28b1df97375b874116e488086ca76e5f9600000200268020a622156e2beac47431b0cd70e1c81fef9a6aa3c365bfcbed9aa7301c5e000002802ecba8caa69552bb0d9bdf0d13eb328aeb6f166a1509678d9bfa9970971d69ab000001400000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000662c0ef2e19a36459b9cf8900eab53dc279d27c08776c4f023b3b51cce257a1d3fa861caccf0f5766e54108540f14e3214f7141597f691d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x00ef9453e7a05c708f090888d31f67b02f00950537dfee842538794866faf7a2", "numTxs": 4 } } \ No newline at end of file diff --git a/noir-projects/aztec-nr/aztec/src/context/avm_context.nr b/noir-projects/aztec-nr/aztec/src/context/avm_context.nr index 16d7de0223b..6c3e855d712 100644 --- a/noir-projects/aztec-nr/aztec/src/context/avm_context.nr +++ b/noir-projects/aztec-nr/aztec/src/context/avm_context.nr @@ -24,9 +24,6 @@ impl AvmContext { pub fn storage_address(self) -> AztecAddress { storage_address() } - pub fn fee_per_l1_gas(self) -> Field { - fee_per_l1_gas() - } pub fn fee_per_l2_gas(self) -> Field { fee_per_l2_gas() } @@ -76,11 +73,6 @@ impl PublicContextInterface for AvmContext { 0 } - fn fee_per_l1_gas(self) -> Field { - assert(false, "'fee_per_l1_gas' not implemented!"); - 0 - } - fn fee_per_l2_gas(self) -> Field { assert(false, "'fee_per_l2_gas' not implemented!"); 0 @@ -196,9 +188,8 @@ impl ContextInterface for AvmContext { } // Helper functions -fn gas_for_call(user_gas: GasOpts) -> [Field; 3] { +fn gas_for_call(user_gas: GasOpts) -> [Field; 2] { [ - user_gas.l1_gas.unwrap_or_else(|| l1_gas_left()), user_gas.l2_gas.unwrap_or_else(|| l2_gas_left() - NESTED_CALL_L2_GAS_BUFFER), user_gas.da_gas.unwrap_or_else(|| da_gas_left()) ] @@ -217,9 +208,6 @@ fn sender() -> AztecAddress {} #[oracle(avmOpcodePortal)] fn portal() -> EthAddress {} -#[oracle(avmOpcodeFeePerL1Gas)] -fn fee_per_l1_gas() -> Field {} - #[oracle(avmOpcodeFeePerL2Gas)] fn fee_per_l2_gas() -> Field {} @@ -238,9 +226,6 @@ fn block_number() -> Field {} #[oracle(avmOpcodeTimestamp)] fn timestamp() -> u64 {} -#[oracle(avmOpcodeL1GasLeft)] -fn l1_gas_left() -> Field {} - #[oracle(avmOpcodeL2GasLeft)] fn l2_gas_left() -> Field {} @@ -270,7 +255,7 @@ fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {} #[oracle(avmOpcodeCall)] fn call( - gas: [Field; 3], // gas allocation: [l1_gas, l2_gas, da_gas] + gas: [Field; 2], // gas allocation: [l2_gas, da_gas] address: AztecAddress, args: [Field], // TODO(5110): consider passing in calldata directly @@ -280,7 +265,7 @@ fn call( #[oracle(avmOpcodeStaticCall)] fn call_static( - gas: [Field; 3], // gas allocation: [l1_gas, l2_gas, da_gas] + gas: [Field; 2], // gas allocation: [l2_gas, da_gas] address: AztecAddress, args: [Field], // TODO(5110): consider passing in calldata directly diff --git a/noir-projects/aztec-nr/aztec/src/context/gas.nr b/noir-projects/aztec-nr/aztec/src/context/gas.nr index 346eb089496..835a78664eb 100644 --- a/noir-projects/aztec-nr/aztec/src/context/gas.nr +++ b/noir-projects/aztec-nr/aztec/src/context/gas.nr @@ -1,15 +1,14 @@ struct GasOpts { - l1_gas: Option, l2_gas: Option, da_gas: Option, } impl GasOpts { pub fn default() -> Self { - GasOpts { l1_gas: Option::none(), l2_gas: Option::none(), da_gas: Option::none() } + GasOpts { l2_gas: Option::none(), da_gas: Option::none() } } - pub fn new(l1_gas: Field, l2_gas: Field, da_gas: Field) -> Self { - GasOpts { l1_gas: Option::some(l1_gas), l2_gas: Option::some(l2_gas), da_gas: Option::some(da_gas) } + pub fn new(l2_gas: Field, da_gas: Field) -> Self { + GasOpts { l2_gas: Option::some(l2_gas), da_gas: Option::some(da_gas) } } } diff --git a/noir-projects/aztec-nr/aztec/src/context/interface.nr b/noir-projects/aztec-nr/aztec/src/context/interface.nr index f13e5d6df5e..a42d342c48c 100644 --- a/noir-projects/aztec-nr/aztec/src/context/interface.nr +++ b/noir-projects/aztec-nr/aztec/src/context/interface.nr @@ -29,7 +29,6 @@ trait PublicContextInterface { fn coinbase(self) -> EthAddress; fn fee_recipient(self) -> AztecAddress; fn fee_per_da_gas(self) -> Field; - fn fee_per_l1_gas(self) -> Field; fn fee_per_l2_gas(self) -> Field; fn message_portal(&mut self, recipient: EthAddress, content: Field); fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress, leaf_index: Field); diff --git a/noir-projects/aztec-nr/aztec/src/context/public_context.nr b/noir-projects/aztec-nr/aztec/src/context/public_context.nr index 80182425b17..be5c22cc7be 100644 --- a/noir-projects/aztec-nr/aztec/src/context/public_context.nr +++ b/noir-projects/aztec-nr/aztec/src/context/public_context.nr @@ -241,10 +241,6 @@ impl PublicContextInterface for PublicContext { self.inputs.public_global_variables.gas_fees.fee_per_da_gas } - fn fee_per_l1_gas(self) -> Field { - self.inputs.public_global_variables.gas_fees.fee_per_l1_gas - } - fn fee_per_l2_gas(self) -> Field { self.inputs.public_global_variables.gas_fees.fee_per_l2_gas } diff --git a/noir-projects/noir-contracts/contracts/avm_nested_calls_test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/avm_nested_calls_test_contract/src/main.nr index 1526d48e5b6..4a0611968ed 100644 --- a/noir-projects/noir-contracts/contracts/avm_nested_calls_test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/avm_nested_calls_test_contract/src/main.nr @@ -37,11 +37,10 @@ contract AvmNestedCallsTest { fn nested_call_to_add_with_gas( arg_a: Field, arg_b: Field, - l1_gas: Field, l2_gas: Field, da_gas: Field ) -> pub Field { - AvmNestedCallsTest::at(context.this_address()).add_args_return(arg_a, arg_b).call(&mut context, GasOpts::new(l1_gas, l2_gas, da_gas)) + AvmNestedCallsTest::at(context.this_address()).add_args_return(arg_a, arg_b).call(&mut context, GasOpts::new(l2_gas, da_gas)) } // Use the `call_public_function` wrapper to initiate a nested call to the add function diff --git a/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr index f3f6cce1948..a05fc566308 100644 --- a/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr @@ -207,11 +207,6 @@ contract AvmTest { context.msg_sender() } - #[aztec(public-vm)] - fn get_fee_per_l1_gas() -> pub Field { - context.fee_per_l1_gas() - } - #[aztec(public-vm)] fn get_fee_per_l2_gas() -> pub Field { context.fee_per_l2_gas() diff --git a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr index 1c14b54c96a..6d0f3fca2e0 100644 --- a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr @@ -25,7 +25,10 @@ contract Test { note_getter_options::NoteStatus }, deploy::deploy_contract as aztec_deploy_contract, - oracle::{encryption::aes128_encrypt, get_public_key::get_public_key as get_public_key_oracle, unsafe_rand::unsafe_rand} + oracle::{ + encryption::aes128_encrypt, get_public_key::get_public_key as get_public_key_oracle, + unsafe_rand::unsafe_rand + } }; use dep::token_portal_content_hash_lib::{get_mint_private_content_hash, get_mint_public_content_hash}; use dep::value_note::value_note::ValueNote; @@ -328,7 +331,6 @@ contract Test { coinbase: EthAddress, fee_recipient: AztecAddress, fee_per_da_gas: Field, - fee_per_l1_gas: Field, fee_per_l2_gas: Field ) { assert(context.chain_id() == chain_id, "Invalid chain id"); @@ -338,7 +340,6 @@ contract Test { assert(context.coinbase() == coinbase, "Invalid coinbase"); assert(context.fee_recipient() == fee_recipient, "Invalid fee recipient"); assert(context.fee_per_da_gas() == fee_per_da_gas, "Invalid fee per da gas"); - assert(context.fee_per_l1_gas() == fee_per_l1_gas, "Invalid fee per l1 gas"); assert(context.fee_per_l2_gas() == fee_per_l2_gas, "Invalid fee per l2 gas"); } diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr index 730d2979dee..88e8348c6f0 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail.nr @@ -493,9 +493,9 @@ mod tests { unconstrained fn set_teardown_gas_as_gas_used() { // TODO(gas): When we compute DA gas used, we'll have to include it here as well. let mut builder = PrivateKernelTailInputsBuilder::new(); - builder.previous_kernel.tx_context.gas_settings.teardown_gas_limits = Gas::new(300, 300, 300); + builder.previous_kernel.tx_context.gas_settings.teardown_gas_limits = Gas::new(300, 300); let public_inputs = builder.execute(); - assert_eq(public_inputs.end.gas_used, Gas::new(300, 300, 300)); + assert_eq(public_inputs.end.gas_used, Gas::new(300, 300)); } } diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail_to_public.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail_to_public.nr index c19f24bdee4..27d9d51a606 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail_to_public.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/private_kernel_tail_to_public.nr @@ -543,9 +543,9 @@ mod tests { unconstrained fn set_teardown_gas_as_gas_used() { // TODO(gas): When we compute DA gas used, we'll have to include it here as well. let mut builder = PrivateKernelTailToPublicInputsBuilder::new(); - builder.previous_kernel.tx_context.gas_settings.teardown_gas_limits = Gas::new(300, 300, 300); + builder.previous_kernel.tx_context.gas_settings.teardown_gas_limits = Gas::new(300, 300); let public_inputs = builder.execute(); - assert_eq(public_inputs.end.gas_used, Gas::new(300, 300, 300)); + assert_eq(public_inputs.end.gas_used, Gas::new(300, 300)); } } diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr index 9004bbec8c8..02b12081a97 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/common.nr @@ -209,13 +209,10 @@ pub fn update_revertible_gas_used(public_call: PublicCallData, circuit_outputs: // "Updating revertible gas: limit.da={0} limit.l1={1} limit.l2={2} left.da={3} left.l1={4} left.l2={5} used.da={6} used.l1={7} used.l2={8}", // [ // tx_gas_limits.da_gas as Field, - // tx_gas_limits.l1_gas as Field, // tx_gas_limits.l2_gas as Field, // call_gas_left.da_gas as Field, - // call_gas_left.l1_gas as Field, // call_gas_left.l2_gas as Field, // accum_end_non_revertible_gas_used.da_gas as Field, - // accum_end_non_revertible_gas_used.l1_gas as Field, // accum_end_non_revertible_gas_used.l2_gas as Field // ] // ); @@ -238,13 +235,10 @@ pub fn update_non_revertible_gas_used(public_call: PublicCallData, circuit_outpu // "Updating non-revertible gas: limit.da={0} limit.l1={1} limit.l2={2} left.da={3} left.l1={4} left.l2={5} used.da={6} used.l1={7} used.l2={8}", // [ // tx_gas_limits.da_gas as Field, - // tx_gas_limits.l1_gas as Field, // tx_gas_limits.l2_gas as Field, // call_gas_left.da_gas as Field, - // call_gas_left.l1_gas as Field, // call_gas_left.l2_gas as Field, // accum_end_gas_used.da_gas as Field, - // accum_end_gas_used.l1_gas as Field, // accum_end_gas_used.l2_gas as Field // ] // ); diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_app_logic.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_app_logic.nr index 07beccedc3c..bb4985312fd 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_app_logic.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_app_logic.nr @@ -454,28 +454,28 @@ mod tests { let mut builder = PublicKernelAppLogicCircuitPrivateInputsBuilder::new(); // Transaction gas limit is 1k - builder.previous_kernel.tx_context.gas_settings.gas_limits = Gas::new(1000, 1000, 1000); + builder.previous_kernel.tx_context.gas_settings.gas_limits = Gas::new(1000, 1000); // Revertible has already used 300 - builder.previous_kernel.gas_used = Gas::new(300, 300, 300); + builder.previous_kernel.gas_used = Gas::new(300, 300); // This call starts with 700 gas left - builder.public_call.public_inputs.start_gas_left = Gas::new(700, 700, 700); + builder.public_call.public_inputs.start_gas_left = Gas::new(700, 700); // And uses 200, ending with 500 left - builder.public_call.public_inputs.end_gas_left = Gas::new(500, 500, 500); + builder.public_call.public_inputs.end_gas_left = Gas::new(500, 500); // So the updated gas used by revertible must go up by 200, and non-revertible must stay the same let output = builder.execute(); - assert_eq(output.end.gas_used, Gas::new(500, 500, 500)); - assert_eq(output.end_non_revertible.gas_used, Gas::new(0, 0, 0)); + assert_eq(output.end.gas_used, Gas::new(500, 500)); + assert_eq(output.end_non_revertible.gas_used, Gas::new(0, 0)); } #[test(should_fail_with="Start gas for public phase does not match transaction gas left")] fn validates_start_gas() { let mut builder = PublicKernelAppLogicCircuitPrivateInputsBuilder::new(); - builder.public_call.public_inputs.start_gas_left = Gas::new(200, 100, 100); + builder.public_call.public_inputs.start_gas_left = Gas::new(100, 100); builder.failed(); } diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr index d81f22114b7..65a8ed28b68 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_setup.nr @@ -507,31 +507,31 @@ mod tests { let mut builder = PublicKernelSetupCircuitPrivateInputsBuilder::new(); // Transaction gas limit is 1k - builder.previous_kernel.tx_context.gas_settings.gas_limits = Gas::new(1000, 1000, 1000); + builder.previous_kernel.tx_context.gas_settings.gas_limits = Gas::new(1000, 1000); // Revertible has already used 100 - builder.previous_revertible.gas_used = Gas::new(100, 100, 100); + builder.previous_revertible.gas_used = Gas::new(100, 100); // And non-revertible has used another 200 - builder.previous_kernel.gas_used = Gas::new(200, 200, 200); + builder.previous_kernel.gas_used = Gas::new(200, 200); // So this call starts with 700 gas left - builder.public_call.public_inputs.start_gas_left = Gas::new(700, 700, 700); + builder.public_call.public_inputs.start_gas_left = Gas::new(700, 700); // And uses 300, ending with 400 left - builder.public_call.public_inputs.end_gas_left = Gas::new(400, 400, 400); + builder.public_call.public_inputs.end_gas_left = Gas::new(400, 400); // So the updated gas used by non-revertible must go up by 300, and revertible must stay the same let output = builder.execute(); - assert_eq(output.end_non_revertible.gas_used, Gas::new(500, 500, 500)); - assert_eq(output.end.gas_used, Gas::new(100, 100, 100)); + assert_eq(output.end_non_revertible.gas_used, Gas::new(500, 500)); + assert_eq(output.end.gas_used, Gas::new(100, 100)); } #[test(should_fail_with="Start gas for public phase does not match transaction gas left")] fn validates_start_gas() { let mut builder = PublicKernelSetupCircuitPrivateInputsBuilder::new(); - builder.public_call.public_inputs.start_gas_left = Gas::new(200, 100, 100); + builder.public_call.public_inputs.start_gas_left = Gas::new(100, 100); builder.failed(); } diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_teardown.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_teardown.nr index 6b55d131ac2..6c877b458e7 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_teardown.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_teardown.nr @@ -44,10 +44,8 @@ impl PublicKernelTeardownCircuitPrivateInputs { // "Validating tx fee: total_gas_used.da={0} total_gas_used.l1={1} total_gas_used.l2={2} block_fee_per_gas.da={3} block_fee_per_gas.l1={4} block_fee_per_gas.l2={5} inclusion_fee={6} computed={7} actual={8}", // [ // total_gas_used.da_gas as Field, - // total_gas_used.l1_gas as Field, // total_gas_used.l2_gas as Field, // block_gas_fees.fee_per_da_gas as Field, - // block_gas_fees.fee_per_l1_gas as Field, // block_gas_fees.fee_per_l2_gas as Field, // inclusion_fee, // computed_transaction_fee, @@ -415,7 +413,7 @@ mod tests { #[test(should_fail_with="Start gas for teardown phase does not match teardown gas allocation")] fn validates_start_gas() { let mut builder = PublicKernelTeardownCircuitPrivateInputsBuilder::new(); - builder.public_call.public_inputs.start_gas_left = Gas::new(10, 20, 30); + builder.public_call.public_inputs.start_gas_left = Gas::new(10, 30); builder.failed(); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_data_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_data_builder.nr index 70d79d5180d..222632af328 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_data_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/accumulated_data/private_accumulated_data_builder.nr @@ -212,8 +212,8 @@ mod tests { builder.public_call_stack.extend_from_array(non_revertible_public_stack); builder.public_call_stack.extend_from_array(revertible_public_call_stack); - builder.gas_used = Gas::new(20,20,20); - builder.non_revertible_gas_used = Gas::new(10,10,10); + builder.gas_used = Gas::new(20,20); + builder.non_revertible_gas_used = Gas::new(10,10); let (non_revertible, revertible) = builder.split_to_public(7); @@ -225,8 +225,8 @@ mod tests { assert(array_eq(revertible.new_nullifiers, revertible_nullifiers)); assert(array_eq(revertible.public_call_stack, revertible_public_call_stack)); - assert_eq(revertible.gas_used, Gas::new(20, 20, 20)); - assert_eq(non_revertible.gas_used, Gas::new(10, 10, 10)); + assert_eq(revertible.gas_used, Gas::new(20, 20)); + assert_eq(non_revertible.gas_used, Gas::new(10, 10)); } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr index 7a738d0e27c..63a8db91ec9 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr @@ -6,63 +6,52 @@ use crate::{ struct Gas { da_gas: u32, - l1_gas: u32, l2_gas: u32, } impl Gas { - pub fn new(da_gas: u32, l1_gas: u32, l2_gas: u32) -> Self { - Self { da_gas, l1_gas, l2_gas } + pub fn new(da_gas: u32, l2_gas: u32) -> Self { + Self { da_gas, l2_gas } } pub fn add(self, other: Gas) -> Self { - Gas::new( - self.da_gas + other.da_gas, - self.l1_gas + other.l1_gas, - self.l2_gas + other.l2_gas - ) + Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas) } pub fn sub(self, other: Gas) -> Self { - Gas::new( - self.da_gas - other.da_gas, - self.l1_gas - other.l1_gas, - self.l2_gas - other.l2_gas - ) + Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas) } pub fn compute_fee(self, fees: GasFees) -> Field { - (self.da_gas as Field) * fees.fee_per_da_gas - + (self.l1_gas as Field) * fees.fee_per_l1_gas - + (self.l2_gas as Field) * fees.fee_per_l2_gas + (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas } pub fn is_empty(self) -> bool { - (self.da_gas == 0) & (self.l1_gas == 0) & (self.l2_gas == 0) + (self.da_gas == 0) & (self.l2_gas == 0) } } impl Serialize for Gas { fn serialize(self) -> [Field; GAS_LENGTH] { - [self.da_gas as Field, self.l1_gas as Field, self.l2_gas as Field] + [self.da_gas as Field, self.l2_gas as Field] } } impl Deserialize for Gas { fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas { - Gas::new(serialized[0] as u32, serialized[1] as u32, serialized[2] as u32) + Gas::new(serialized[0] as u32, serialized[1] as u32) } } impl Eq for Gas { fn eq(self, other : Gas) -> bool { - (self.da_gas == other.da_gas) & (self.l1_gas == other.l1_gas) & (self.l2_gas == other.l2_gas) + (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas) } } impl Empty for Gas { fn empty() -> Self { - Gas::new(0, 0, 0) + Gas::new(0, 0) } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr index 45e9ed3ab66..70680bad93a 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr @@ -6,44 +6,43 @@ use crate::{ struct GasFees { fee_per_da_gas: Field, - fee_per_l1_gas: Field, fee_per_l2_gas: Field, } impl GasFees { - pub fn new(fee_per_da_gas: Field, fee_per_l1_gas: Field, fee_per_l2_gas: Field) -> Self { - Self { fee_per_da_gas, fee_per_l1_gas, fee_per_l2_gas } + pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self { + Self { fee_per_da_gas, fee_per_l2_gas } } pub fn default() -> Self { - GasFees::new(1, 1, 1) + GasFees::new(1, 1) } pub fn is_empty(self) -> bool { - (self.fee_per_da_gas == 0) & (self.fee_per_l1_gas == 0) & (self.fee_per_l2_gas == 0) + (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0) } } impl Serialize for GasFees { fn serialize(self) -> [Field; GAS_FEES_LENGTH] { - [self.fee_per_da_gas, self.fee_per_l1_gas, self.fee_per_l2_gas] + [self.fee_per_da_gas, self.fee_per_l2_gas] } } impl Deserialize for GasFees { fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees { - GasFees::new(serialized[0], serialized[1], serialized[2]) + GasFees::new(serialized[0], serialized[1]) } } impl Eq for GasFees { fn eq(self, other : GasFees) -> bool { - (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l1_gas == other.fee_per_l1_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas) + (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas) } } impl Empty for GasFees { fn empty() -> Self { - GasFees::new(0, 0, 0) + GasFees::new(0, 0) } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr index ba4657985b7..5d1081db428 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr @@ -28,17 +28,9 @@ impl GasSettings { pub fn default() -> Self { GasSettings::new( - Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT), - Gas::new( - DEFAULT_TEARDOWN_GAS_LIMIT, - DEFAULT_TEARDOWN_GAS_LIMIT, - DEFAULT_TEARDOWN_GAS_LIMIT - ), - GasFees::new( - DEFAULT_MAX_FEE_PER_GAS, - DEFAULT_MAX_FEE_PER_GAS, - DEFAULT_MAX_FEE_PER_GAS - ), + Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT), + Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT), + GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS), DEFAULT_INCLUSION_FEE ) } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr index e3d17abef66..7fc8c7a86c0 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr @@ -85,6 +85,6 @@ fn empty_hash() { let hash = item.hash(); // Value from private_call_stack_item.test.ts "computes empty item hash" test - let test_data_empty_hash = 0x138c6ad441864ce43487e99d5e1e122c38b4b55d893edec04a32f5aacecc856c; + let test_data_empty_hash = 0x17fd6ffcb3394b845069dc87e055c37ac50599f274130fac69c6fe919bfe382e; assert_eq(hash, test_data_empty_hash); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr index fb499f46f0c..159cfc964d1 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr @@ -211,6 +211,6 @@ fn empty_hash() { let inputs = PrivateCircuitPublicInputs::empty(); let hash = inputs.hash(); // Value from private_circuit_public_inputs.test.ts "computes empty item hash" test - let test_data_empty_hash = 0x2517b9a84487bde68e18647e59530c6ffe4a7a88c5c556f013d09fd22b84ba35; + let test_data_empty_hash = 0x29129c06414f4ac73bf889692c7011f91727d4cdbfe4fe143e6adee69b565cc8; assert_eq(hash, test_data_empty_hash); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr index 1939b3034f0..301e04e65cc 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr @@ -69,7 +69,7 @@ mod tests { let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data }; // Value from public_call_stack_item.test.ts "Computes a callstack item request hash" test - let test_data_call_stack_item_request_hash = 0x22848497ff97ff3a4517aec32454059030fb5a3ef4f3ca533ee40132d7a63aea; + let test_data_call_stack_item_request_hash = 0x1595b195f0faa3a492109039dc807b291d0edd81a5e3a380866d5098ffd505dd; assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash); } @@ -87,7 +87,7 @@ mod tests { let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data }; // Value from public_call_stack_item.test.ts "Computes a callstack item hash" test - let test_data_call_stack_item_hash = 0x0e18ddd9aaddae02d45598f0278d925e289913384d6e15057ce5b4a9e8e7488d; + let test_data_call_stack_item_hash = 0x1122a7d7e6174b7e5d111c8eb0233564d3a1ffd755afc7ce4b594d738e2770d7; assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash); } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr index 2dba18750fd..53865b83b21 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr @@ -195,6 +195,6 @@ fn empty_hash() { let hash = inputs.hash(); // Value from public_circuit_public_inputs.test.ts "computes empty item hash" test - let test_data_empty_hash = 0x2d91debc43bd6354caef4fd152975e7c6dd44e8623b6b62c21b9f547f2fabd32; + let test_data_empty_hash = 0x1a2da219bb2e3ac24519fd844365c4f656fc3ba8c58f2960706d25bceb4d1769; assert_eq(hash, test_data_empty_hash); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index aef7fa3e8a0..1594f7adf20 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -138,8 +138,8 @@ global CANONICAL_KEY_REGISTRY_ADDRESS = 0x1585e564a60e6ec974bc151b62705292ebfc75 // LENGTH OF STRUCTS SERIALIZED TO FIELDS global AZTEC_ADDRESS_LENGTH = 1; -global GAS_FEES_LENGTH: u64 = 3; -global GAS_LENGTH: u64 = 3; +global GAS_FEES_LENGTH: u64 = 2; +global GAS_LENGTH: u64 = 2; global GAS_SETTINGS_LENGTH: u64 = GAS_LENGTH * 2 + GAS_FEES_LENGTH + /* inclusion_fee */ 1; global CALL_CONTEXT_LENGTH: u64 = 6; global CONTENT_COMMITMENT_LENGTH: u64 = 4; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/header.nr b/noir-projects/noir-protocol-circuits/crates/types/src/header.nr index 99b12c62168..bb962762f3e 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/header.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/header.nr @@ -100,6 +100,6 @@ fn empty_hash_is_zero() { let hash = header.hash(); // Value from new_contract_data.test.ts "computes empty hash" test - let test_data_empty_hash = 0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7; + let test_data_empty_hash = 0x2b2525fb1ae91c903827b8055b9ffaf8444ddf4c2b4dce4a79a3cba426bfbd73; assert_eq(hash, test_data_empty_hash); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr b/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr index d90eb2a6ee7..1da12afa7bd 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr @@ -86,6 +86,6 @@ fn empty_hash() { let hash = context.hash(); // Value from tx_context.test.ts "computes empty item hash" test - let test_data_empty_hash = 0x1acd086cc3b911cd49713c263bf4af6032a567fa1e79fe7ef77c063565d3ead3; + let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261; assert_eq(hash, test_data_empty_hash); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_request.nr b/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_request.nr index 2ca9a759d13..5d804fa5d0a 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_request.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_request.nr @@ -90,7 +90,7 @@ mod tests { #[test] fn compute_hash() { - let gas_settings = GasSettings::new(Gas::new(2, 2, 2), Gas::new(1, 1, 1), GasFees::new(3, 3, 3), 10); + let gas_settings = GasSettings::new(Gas::new(2, 2), Gas::new(1, 1), GasFees::new(3, 3), 10); let tx_request = TxRequest { origin: AztecAddress::from_field(1), args_hash: 3, @@ -98,7 +98,7 @@ mod tests { function_data: FunctionData { selector: FunctionSelector::from_u32(2), is_private: true } }; // Value from tx_request.test.ts "compute hash" test - let test_data_tx_request_hash = 0x00b8affaf5ca65d647756e359ce0b2c5fa5c2c03f219189e28db323f22975706; + let test_data_tx_request_hash = 0x0d982a1c7a65919b2bcacbf5660f5b861132072a8190d97c82b1591da402f5ea; assert(tx_request.hash() == test_data_tx_request_hash); } } diff --git a/yarn-project/circuit-types/src/l2_block_code_to_purge.ts b/yarn-project/circuit-types/src/l2_block_code_to_purge.ts index 7a0db9388db..20fdece0cf4 100644 --- a/yarn-project/circuit-types/src/l2_block_code_to_purge.ts +++ b/yarn-project/circuit-types/src/l2_block_code_to_purge.ts @@ -93,7 +93,7 @@ export function makeGlobalVariables(seed = 1, blockNumber: number | undefined = new Fr(seed + 3), EthAddress.fromField(new Fr(seed + 4)), AztecAddress.fromField(new Fr(seed + 5)), - new GasFees(new Fr(seed + 6), new Fr(seed + 7), new Fr(seed + 8)), + new GasFees(new Fr(seed + 6), new Fr(seed + 7)), ); } return new GlobalVariables( @@ -103,6 +103,6 @@ export function makeGlobalVariables(seed = 1, blockNumber: number | undefined = new Fr(seed + 3), EthAddress.fromField(new Fr(seed + 4)), AztecAddress.fromField(new Fr(seed + 5)), - new GasFees(new Fr(seed + 6), new Fr(seed + 7), new Fr(seed + 8)), + new GasFees(new Fr(seed + 6), new Fr(seed + 7)), ); } diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 62a986338e1..1b98ef98a39 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -81,8 +81,8 @@ export const DEFAULT_MAX_FEE_PER_GAS = 10; export const DEFAULT_INCLUSION_FEE = 0; export const CANONICAL_KEY_REGISTRY_ADDRESS = 0x1585e564a60e6ec974bc151b62705292ebfc75c33341986a47fd9749cedb567en; export const AZTEC_ADDRESS_LENGTH = 1; -export const GAS_FEES_LENGTH = 3; -export const GAS_LENGTH = 3; +export const GAS_FEES_LENGTH = 2; +export const GAS_LENGTH = 2; export const GAS_SETTINGS_LENGTH = GAS_LENGTH * 2 + GAS_FEES_LENGTH + /* inclusion_fee */ 1; export const CALL_CONTEXT_LENGTH = 6; export const CONTENT_COMMITMENT_LENGTH = 4; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/header.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/header.test.ts.snap index 99f650c7036..5c166a45c4d 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/header.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/header.test.ts.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Header computes empty hash 1`] = `Fr<0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7>`; +exports[`Header computes empty hash 1`] = `Fr<0x2b2525fb1ae91c903827b8055b9ffaf8444ddf4c2b4dce4a79a3cba426bfbd73>`; -exports[`Header computes hash 1`] = `Fr<0x18a5f612e161132949f801a96e671678455d00eafbc0685afe11dba0727286c1>`; +exports[`Header computes hash 1`] = `Fr<0x256e19fe5b99a73cce35b5ab67652155919c75aea90b39c2c5b612a8a59cdf15>`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap index b8e9c3e8a75..0299196996c 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/private_call_stack_item.test.ts.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`PrivateCallStackItem computes empty item hash 1`] = `Fr<0x138c6ad441864ce43487e99d5e1e122c38b4b55d893edec04a32f5aacecc856c>`; +exports[`PrivateCallStackItem computes empty item hash 1`] = `Fr<0x17fd6ffcb3394b845069dc87e055c37ac50599f274130fac69c6fe919bfe382e>`; -exports[`PrivateCallStackItem computes hash 1`] = `Fr<0x05d108b08c41f27b8cd03753347993a77a0e7637ed2afdd03c3813ab92bfbb78>`; +exports[`PrivateCallStackItem computes hash 1`] = `Fr<0x1e08d7680651e7a3d41fa303b981be282e0b019921978866ce7b634ac520b494>`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap index befc50ad5fc..84ff5a6b6c7 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`PrivateCircuitPublicInputs computes empty inputs hash 1`] = `Fr<0x2517b9a84487bde68e18647e59530c6ffe4a7a88c5c556f013d09fd22b84ba35>`; +exports[`PrivateCircuitPublicInputs computes empty inputs hash 1`] = `Fr<0x29129c06414f4ac73bf889692c7011f91727d4cdbfe4fe143e6adee69b565cc8>`; -exports[`PrivateCircuitPublicInputs hash matches snapshot 1`] = `Fr<0x0edeaf808ed3d5e61d2fffa2bf089f9e9109eba5c5d42d3523b5470734d56347>`; +exports[`PrivateCircuitPublicInputs hash matches snapshot 1`] = `Fr<0x070e364221be09c89aa9d6cef0a6da965bf61a94b61e1b105728b46da06bdec3>`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/public_call_stack_item.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/public_call_stack_item.test.ts.snap index 733ca2607b5..6c95202a2fd 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/public_call_stack_item.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/public_call_stack_item.test.ts.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`PublicCallStackItem Computes a callstack item hash 1`] = `"0x0e18ddd9aaddae02d45598f0278d925e289913384d6e15057ce5b4a9e8e7488d"`; +exports[`PublicCallStackItem Computes a callstack item hash 1`] = `"0x1122a7d7e6174b7e5d111c8eb0233564d3a1ffd755afc7ce4b594d738e2770d7"`; -exports[`PublicCallStackItem Computes a callstack item request hash 1`] = `"0x22848497ff97ff3a4517aec32454059030fb5a3ef4f3ca533ee40132d7a63aea"`; +exports[`PublicCallStackItem Computes a callstack item request hash 1`] = `"0x1595b195f0faa3a492109039dc807b291d0edd81a5e3a380866d5098ffd505dd"`; -exports[`PublicCallStackItem computes empty item hash 1`] = `Fr<0x004e1dc292cd5919dcea653efb6d791458a1eee853432e27d385ef56714edce9>`; +exports[`PublicCallStackItem computes empty item hash 1`] = `Fr<0x302550c2014c51737798139c9a80af984fa23be608c9758de295181944dddf66>`; -exports[`PublicCallStackItem computes hash 1`] = `Fr<0x1efb84fc01ae8d6e8c27826100655f2d24344fa6edef9907649243770fc0798d>`; +exports[`PublicCallStackItem computes hash 1`] = `Fr<0x0c1ebcec0faa3cc95bd96dc568e88585d2123d1cdbcb50a4b5f4fc033c58b958>`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap index 7b63132cfd7..6daacfd0635 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`PublicCircuitPublicInputs computes empty inputs hash 1`] = `Fr<0x2d91debc43bd6354caef4fd152975e7c6dd44e8623b6b62c21b9f547f2fabd32>`; +exports[`PublicCircuitPublicInputs computes empty inputs hash 1`] = `Fr<0x1a2da219bb2e3ac24519fd844365c4f656fc3ba8c58f2960706d25bceb4d1769>`; -exports[`PublicCircuitPublicInputs hash matches snapshot 1`] = `Fr<0x1710f7b36cf97619af020da867f7029d826d45b8237e6205981d1c15307875e0>`; +exports[`PublicCircuitPublicInputs hash matches snapshot 1`] = `Fr<0x0d91b877304f117c8cb1f1b104f4d809fad7360bd2fcdb050c8607cd6a39da81>`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/tx_context.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/tx_context.test.ts.snap index 439ecb7f0c3..6a46b379e5b 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/tx_context.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/tx_context.test.ts.snap @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`TxContext computes empty context hash 1`] = `Fr<0x1acd086cc3b911cd49713c263bf4af6032a567fa1e79fe7ef77c063565d3ead3>`; +exports[`TxContext computes empty context hash 1`] = `Fr<0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261>`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/tx_request.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/tx_request.test.ts.snap index 94bae498a3c..fbadc0a1a84 100644 --- a/yarn-project/circuits.js/src/structs/__snapshots__/tx_request.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/__snapshots__/tx_request.test.ts.snap @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`TxRequest compute hash 1`] = `"0x00b8affaf5ca65d647756e359ce0b2c5fa5c2c03f219189e28db323f22975706"`; +exports[`TxRequest compute hash 1`] = `"0x0d982a1c7a65919b2bcacbf5660f5b861132072a8190d97c82b1591da402f5ea"`; diff --git a/yarn-project/circuits.js/src/structs/gas.ts b/yarn-project/circuits.js/src/structs/gas.ts index b1e2a844c88..94af1bdb021 100644 --- a/yarn-project/circuits.js/src/structs/gas.ts +++ b/yarn-project/circuits.js/src/structs/gas.ts @@ -7,15 +7,15 @@ import { inspect } from 'util'; import { type GasFees } from './gas_fees.js'; import { type UInt32 } from './shared.js'; -export const GasDimensions = ['da', 'l1', 'l2'] as const; +export const GasDimensions = ['da', 'l2'] as const; export type GasDimensions = (typeof GasDimensions)[number]; /** Gas amounts in each dimension. */ export class Gas { - constructor(public readonly daGas: UInt32, public readonly l1Gas: UInt32, public readonly l2Gas: UInt32) {} + constructor(public readonly daGas: UInt32, public readonly l2Gas: UInt32) {} clone(): Gas { - return new Gas(this.daGas, this.l1Gas, this.l2Gas); + return new Gas(this.daGas, this.l2Gas); } get(dimension: GasDimensions) { @@ -23,49 +23,49 @@ export class Gas { } equals(other: Gas) { - return this.daGas === other.daGas && this.l1Gas === other.l1Gas && this.l2Gas === other.l2Gas; + return this.daGas === other.daGas && this.l2Gas === other.l2Gas; } static from(fields: Partial>) { - return new Gas(fields.daGas ?? 0, fields.l1Gas ?? 0, fields.l2Gas ?? 0); + return new Gas(fields.daGas ?? 0, fields.l2Gas ?? 0); } static empty() { - return new Gas(0, 0, 0); + return new Gas(0, 0); } /** Returns large enough gas amounts for testing purposes. */ static test() { - return new Gas(1e9, 1e9, 1e9); + return new Gas(1e9, 1e9); } isEmpty() { - return this.daGas === 0 && this.l1Gas === 0 && this.l2Gas === 0; + return this.daGas === 0 && this.l2Gas === 0; } static fromBuffer(buffer: Buffer | BufferReader): Gas { const reader = BufferReader.asReader(buffer); - return new Gas(reader.readNumber(), reader.readNumber(), reader.readNumber()); + return new Gas(reader.readNumber(), reader.readNumber()); } toBuffer() { - return serializeToBuffer(this.daGas, this.l1Gas, this.l2Gas); + return serializeToBuffer(this.daGas, this.l2Gas); } [inspect.custom]() { - return `Gas { daGas=${this.daGas} l1Gas=${this.l1Gas} l2Gas=${this.l2Gas} }`; + return `Gas { daGas=${this.daGas} l2Gas=${this.l2Gas} }`; } add(other: Gas) { - return new Gas(this.daGas + other.daGas, this.l1Gas + other.l1Gas, this.l2Gas + other.l2Gas); + return new Gas(this.daGas + other.daGas, this.l2Gas + other.l2Gas); } sub(other: Gas) { - return new Gas(this.daGas - other.daGas, this.l1Gas - other.l1Gas, this.l2Gas - other.l2Gas); + return new Gas(this.daGas - other.daGas, this.l2Gas - other.l2Gas); } mul(scalar: number) { - return new Gas(Math.ceil(this.daGas * scalar), Math.ceil(this.l1Gas * scalar), Math.ceil(this.l2Gas * scalar)); + return new Gas(Math.ceil(this.daGas * scalar), Math.ceil(this.l2Gas * scalar)); } computeFee(gasFees: GasFees) { @@ -76,11 +76,11 @@ export class Gas { } toFields() { - return serializeToFields(this.daGas, this.l1Gas, this.l2Gas); + return serializeToFields(this.daGas, this.l2Gas); } static fromFields(fields: Fr[] | FieldReader) { const reader = FieldReader.asReader(fields); - return new Gas(reader.readU32(), reader.readU32(), reader.readU32()); + return new Gas(reader.readU32(), reader.readU32()); } } diff --git a/yarn-project/circuits.js/src/structs/gas_fees.ts b/yarn-project/circuits.js/src/structs/gas_fees.ts index 4e2cde284c1..17d5e0835fe 100644 --- a/yarn-project/circuits.js/src/structs/gas_fees.ts +++ b/yarn-project/circuits.js/src/structs/gas_fees.ts @@ -9,90 +9,81 @@ import { type GasDimensions } from './gas.js'; /** Gas prices for each dimension. */ export class GasFees { public readonly feePerDaGas: Fr; - public readonly feePerL1Gas: Fr; public readonly feePerL2Gas: Fr; - constructor(feePerDaGas: Fr | number | bigint, feePerL1Gas: Fr | number | bigint, feePerL2Gas: Fr | number | bigint) { + constructor(feePerDaGas: Fr | number | bigint, feePerL2Gas: Fr | number | bigint) { this.feePerDaGas = new Fr(feePerDaGas); - this.feePerL1Gas = new Fr(feePerL1Gas); this.feePerL2Gas = new Fr(feePerL2Gas); } clone(): GasFees { - return new GasFees(this.feePerDaGas, this.feePerL1Gas, this.feePerL2Gas); + return new GasFees(this.feePerDaGas, this.feePerL2Gas); } equals(other: GasFees) { - return ( - this.feePerDaGas.equals(other.feePerDaGas) && - this.feePerL1Gas.equals(other.feePerL1Gas) && - this.feePerL2Gas.equals(other.feePerL2Gas) - ); + return this.feePerDaGas.equals(other.feePerDaGas) && this.feePerL2Gas.equals(other.feePerL2Gas); } get(dimension: GasDimensions) { switch (dimension) { case 'da': return this.feePerDaGas; - case 'l1': - return this.feePerL1Gas; case 'l2': return this.feePerL2Gas; } } static from(fields: FieldsOf) { - return new GasFees(fields.feePerDaGas, fields.feePerL1Gas, fields.feePerL2Gas); + return new GasFees(fields.feePerDaGas, fields.feePerL2Gas); } static random() { - return new GasFees(Fr.random(), Fr.random(), Fr.random()); + return new GasFees(Fr.random(), Fr.random()); } static empty() { - return new GasFees(Fr.ZERO, Fr.ZERO, Fr.ZERO); + return new GasFees(Fr.ZERO, Fr.ZERO); } /** Fixed gas fee values used until we define how gas fees in the protocol are computed. */ static default() { - return new GasFees(Fr.ONE, Fr.ONE, Fr.ONE); + return new GasFees(Fr.ONE, Fr.ONE); } isEmpty() { - return this.feePerDaGas.isZero() && this.feePerL1Gas.isZero() && this.feePerL2Gas.isZero(); + return this.feePerDaGas.isZero() && this.feePerL2Gas.isZero(); } static fromBuffer(buffer: Buffer | BufferReader): GasFees { const reader = BufferReader.asReader(buffer); - return new GasFees(reader.readObject(Fr), reader.readObject(Fr), reader.readObject(Fr)); + return new GasFees(reader.readObject(Fr), reader.readObject(Fr)); } toBuffer() { - return serializeToBuffer(this.feePerDaGas, this.feePerL1Gas, this.feePerL2Gas); + return serializeToBuffer(this.feePerDaGas, this.feePerL2Gas); } static fromFields(fields: Fr[] | FieldReader) { const reader = FieldReader.asReader(fields); - return new GasFees(reader.readField(), reader.readField(), reader.readField()); + return new GasFees(reader.readField(), reader.readField()); } toFields() { - return serializeToFields(this.feePerDaGas, this.feePerL1Gas, this.feePerL2Gas); + return serializeToFields(this.feePerDaGas, this.feePerL2Gas); } static fromJSON(obj: any) { - return new GasFees(Fr.fromString(obj.feePerDaGas), Fr.fromString(obj.feePerL1Gas), Fr.fromString(obj.feePerL2Gas)); + return new GasFees(Fr.fromString(obj.feePerDaGas), Fr.fromString(obj.feePerL2Gas)); } toJSON() { return { feePerDaGas: this.feePerDaGas.toString(), - feePerL1Gas: this.feePerL1Gas.toString(), feePerL2Gas: this.feePerL2Gas.toString(), }; } [inspect.custom]() { - return `GasFees { feePerDaGas=${this.feePerDaGas} feePerL1Gas=${this.feePerL1Gas} feePerL2Gas=${this.feePerL2Gas} }`; + return `GasFees { feePerDaGas=${this.feePerDaGas} feePerL2Gas=${this.feePerL2Gas} }`; } } diff --git a/yarn-project/circuits.js/src/structs/gas_settings.ts b/yarn-project/circuits.js/src/structs/gas_settings.ts index 4f6a3eb52da..3a0878bff5d 100644 --- a/yarn-project/circuits.js/src/structs/gas_settings.ts +++ b/yarn-project/circuits.js/src/structs/gas_settings.ts @@ -64,9 +64,9 @@ export class GasSettings { /** Default gas settings to use when user has not provided them. */ static default() { return new GasSettings( - new Gas(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT), - new Gas(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT), - new GasFees(new Fr(DEFAULT_MAX_FEE_PER_GAS), new Fr(DEFAULT_MAX_FEE_PER_GAS), new Fr(DEFAULT_MAX_FEE_PER_GAS)), + new Gas(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT), + new Gas(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT), + new GasFees(new Fr(DEFAULT_MAX_FEE_PER_GAS), new Fr(DEFAULT_MAX_FEE_PER_GAS)), new Fr(DEFAULT_INCLUSION_FEE), ); } diff --git a/yarn-project/circuits.js/src/structs/tx_request.test.ts b/yarn-project/circuits.js/src/structs/tx_request.test.ts index c7c0882827a..f4a44c77fc3 100644 --- a/yarn-project/circuits.js/src/structs/tx_request.test.ts +++ b/yarn-project/circuits.js/src/structs/tx_request.test.ts @@ -34,7 +34,7 @@ describe('TxRequest', () => { }); it('compute hash', () => { - const gasSettings = new GasSettings(new Gas(2, 2, 2), new Gas(1, 1, 1), new GasFees(3, 3, 3), new Fr(10)); + const gasSettings = new GasSettings(new Gas(2, 2), new Gas(1, 1), new GasFees(3, 3), new Fr(10)); const txRequest = TxRequest.from({ origin: AztecAddress.fromBigInt(1n), functionData: new FunctionData(FunctionSelector.fromField(new Fr(2n)), true), diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 4d22544afd8..598c4ddace3 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -326,7 +326,7 @@ export function makeCombinedAccumulatedData(seed = 1, full = false): CombinedAcc } export function makeGas(seed = 1) { - return new Gas(seed, seed + 1, seed + 2); + return new Gas(seed, seed + 1); } /** @@ -951,7 +951,7 @@ export function makeGlobalVariables(seed = 1, blockNumber: number | undefined = } export function makeGasFees(seed = 1) { - return new GasFees(fr(seed), fr(seed + 1), fr(seed + 2)); + return new GasFees(fr(seed), fr(seed + 1)); } /** diff --git a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts index b72df9815b3..43f80b52ee1 100644 --- a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts @@ -271,7 +271,6 @@ describe('L1Publisher integration', () => { feeRecipient: `0x${block.header.globalVariables.feeRecipient.toBuffer().toString('hex').padStart(64, '0')}`, gasFees: { feePerDaGas: block.header.globalVariables.gasFees.feePerDaGas.toNumber(), - feePerL1Gas: block.header.globalVariables.gasFees.feePerL1Gas.toNumber(), feePerL2Gas: block.header.globalVariables.gasFees.feePerL2Gas.toNumber(), }, }, diff --git a/yarn-project/end-to-end/src/e2e_dapp_subscription.test.ts b/yarn-project/end-to-end/src/e2e_dapp_subscription.test.ts index cf465a0ea7f..d496bfb8716 100644 --- a/yarn-project/end-to-end/src/e2e_dapp_subscription.test.ts +++ b/yarn-project/end-to-end/src/e2e_dapp_subscription.test.ts @@ -53,7 +53,7 @@ describe('e2e_dapp_subscription', () => { const PRIVATELY_MINTED_BANANAS = BigInt(600e9); const FEE_AMOUNT = 1n; - const MAX_FEE = BigInt(30e9); + const MAX_FEE = BigInt(20e9); const GAS_SETTINGS = GasSettings.default(); diff --git a/yarn-project/end-to-end/src/e2e_fees.test.ts b/yarn-project/end-to-end/src/e2e_fees.test.ts index 795fa7719cf..8a25e7d77d4 100644 --- a/yarn-project/end-to-end/src/e2e_fees.test.ts +++ b/yarn-project/end-to-end/src/e2e_fees.test.ts @@ -219,7 +219,7 @@ describe('e2e_fees', () => { beforeEach(async () => { FeeAmount = 1n; - MaxFee = BigInt(30e9); + MaxFee = BigInt(20e9); RefundAmount = MaxFee - FeeAmount; RefundSecret = Fr.random(); diff --git a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts index 1e758ef4c80..64137c301ef 100644 --- a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts @@ -1102,7 +1102,6 @@ export function mapPublicAccumulatedDataToNoir( export function mapGasFromNoir(gasUsed: GasNoir): Gas { return Gas.from({ daGas: mapNumberFromNoir(gasUsed.da_gas), - l1Gas: mapNumberFromNoir(gasUsed.l1_gas), l2Gas: mapNumberFromNoir(gasUsed.l2_gas), }); } @@ -1110,7 +1109,6 @@ export function mapGasFromNoir(gasUsed: GasNoir): Gas { export function mapGasToNoir(gasUsed: Gas): GasNoir { return { da_gas: mapNumberToNoir(gasUsed.daGas), - l1_gas: mapNumberToNoir(gasUsed.l1Gas), l2_gas: mapNumberToNoir(gasUsed.l2Gas), }; } @@ -1506,17 +1504,12 @@ export function mapGlobalVariablesFromNoir(globalVariables: GlobalVariablesNoir) export function mapGasFeesToNoir(gasFees: GasFees): GasFeesNoir { return { fee_per_da_gas: mapFieldToNoir(gasFees.feePerDaGas), - fee_per_l1_gas: mapFieldToNoir(gasFees.feePerL1Gas), fee_per_l2_gas: mapFieldToNoir(gasFees.feePerL2Gas), }; } export function mapGasFeesFromNoir(gasFees: GasFeesNoir): GasFees { - return new GasFees( - mapFieldFromNoir(gasFees.fee_per_da_gas), - mapFieldFromNoir(gasFees.fee_per_l1_gas), - mapFieldFromNoir(gasFees.fee_per_l2_gas), - ); + return new GasFees(mapFieldFromNoir(gasFees.fee_per_da_gas), mapFieldFromNoir(gasFees.fee_per_l2_gas)); } /** diff --git a/yarn-project/simulator/src/avm/avm_context.test.ts b/yarn-project/simulator/src/avm/avm_context.test.ts index c281f3cf928..bea44afec38 100644 --- a/yarn-project/simulator/src/avm/avm_context.test.ts +++ b/yarn-project/simulator/src/avm/avm_context.test.ts @@ -9,7 +9,7 @@ describe('Avm Context', () => { const newAddress = AztecAddress.random(); const newCalldata = [new Fr(1), new Fr(2)]; - const allocatedGas = { l1Gas: 1, l2Gas: 2, daGas: 3 }; // How much of the current call gas we pass to the nested call + const allocatedGas = { l2Gas: 2, daGas: 3 }; // How much of the current call gas we pass to the nested call const newContext = context.createNestedContractCallContext(newAddress, newCalldata, allocatedGas, 'CALL'); expect(newContext.environment).toEqual( @@ -24,7 +24,6 @@ describe('Avm Context', () => { expect(newContext.machineState).toEqual( allSameExcept(context.machineState, { pc: 0, - l1GasLeft: 1, l2GasLeft: 2, daGasLeft: 3, }), @@ -40,7 +39,7 @@ describe('Avm Context', () => { const newAddress = AztecAddress.random(); const newCalldata = [new Fr(1), new Fr(2)]; - const allocatedGas = { l1Gas: 1, l2Gas: 2, daGas: 3 }; + const allocatedGas = { l2Gas: 2, daGas: 3 }; const newContext = context.createNestedContractCallContext(newAddress, newCalldata, allocatedGas, 'STATICCALL'); expect(newContext.environment).toEqual( @@ -55,7 +54,6 @@ describe('Avm Context', () => { expect(newContext.machineState).toEqual( allSameExcept(context.machineState, { pc: 0, - l1GasLeft: 1, l2GasLeft: 2, daGasLeft: 3, }), diff --git a/yarn-project/simulator/src/avm/avm_execution_environment.ts b/yarn-project/simulator/src/avm/avm_execution_environment.ts index 3d26ff7a175..4a38171103d 100644 --- a/yarn-project/simulator/src/avm/avm_execution_environment.ts +++ b/yarn-project/simulator/src/avm/avm_execution_environment.ts @@ -23,7 +23,6 @@ export class AvmExecutionEnvironment { public readonly address: AztecAddress, public readonly storageAddress: AztecAddress, public readonly sender: AztecAddress, - public readonly feePerL1Gas: Fr, public readonly feePerL2Gas: Fr, public readonly feePerDaGas: Fr, public readonly contractCallDepth: Fr, @@ -55,7 +54,6 @@ export class AvmExecutionEnvironment { targetAddress, /*storageAddress=*/ targetAddress, this.address, - this.feePerL1Gas, this.feePerL2Gas, this.feePerDaGas, this.contractCallDepth, @@ -79,7 +77,6 @@ export class AvmExecutionEnvironment { address, /*storageAddress=*/ address, this.sender, - this.feePerL1Gas, this.feePerL2Gas, this.feePerDaGas, this.contractCallDepth, @@ -103,7 +100,6 @@ export class AvmExecutionEnvironment { address, this.storageAddress, this.sender, - this.feePerL1Gas, this.feePerL2Gas, this.feePerDaGas, this.contractCallDepth, diff --git a/yarn-project/simulator/src/avm/avm_gas.test.ts b/yarn-project/simulator/src/avm/avm_gas.test.ts index ccac607fdfd..3c6ef45d611 100644 --- a/yarn-project/simulator/src/avm/avm_gas.test.ts +++ b/yarn-project/simulator/src/avm/avm_gas.test.ts @@ -23,19 +23,14 @@ describe('AVM simulator: dynamic gas costs per instruction', () => { [new Sub(/*indirect=*/ 3, /*inTag=*/ TypeTag.UINT8, /*aOffset=*/ 1, /*bOffset=*/ 2, /*dstOffset=*/ 3), [150]], [new Mul(/*indirect=*/ 3, /*inTag=*/ TypeTag.UINT8, /*aOffset=*/ 1, /*bOffset=*/ 2, /*dstOffset=*/ 3), [150]], [new Div(/*indirect=*/ 3, /*inTag=*/ TypeTag.UINT8, /*aOffset=*/ 1, /*bOffset=*/ 2, /*dstOffset=*/ 3), [150]], - ] as const)('computes gas cost for %s', async (instruction, [l2GasCost, l1GasCost, daGasCost]) => { + ] as const)('computes gas cost for %s', async (instruction, [l2GasCost, daGasCost]) => { const bytecode = encodeToBytecode([instruction]); const context = initContext(); - const { - l2GasLeft: initialL2GasLeft, - daGasLeft: initialDaGasLeft, - l1GasLeft: initialL1GasLeft, - } = context.machineState; + const { l2GasLeft: initialL2GasLeft, daGasLeft: initialDaGasLeft } = context.machineState; await new AvmSimulator(context).executeBytecode(bytecode); expect(initialL2GasLeft - context.machineState.l2GasLeft).toEqual(l2GasCost ?? 0); - expect(initialL1GasLeft - context.machineState.l1GasLeft).toEqual(l1GasCost ?? 0); expect(initialDaGasLeft - context.machineState.daGasLeft).toEqual(daGasCost ?? 0); }); }); diff --git a/yarn-project/simulator/src/avm/avm_gas.ts b/yarn-project/simulator/src/avm/avm_gas.ts index 5d7bae10514..7b47e6c626a 100644 --- a/yarn-project/simulator/src/avm/avm_gas.ts +++ b/yarn-project/simulator/src/avm/avm_gas.ts @@ -5,19 +5,18 @@ import { Opcode } from './serialization/instruction_serialization.js'; /** Gas counters in L1, L2, and DA. */ export type Gas = { - l1Gas: number; l2Gas: number; daGas: number; }; /** Maps a Gas struct to gasLeft properties. */ export function gasToGasLeft(gas: Gas) { - return { l1GasLeft: gas.l1Gas, l2GasLeft: gas.l2Gas, daGasLeft: gas.daGas }; + return { l2GasLeft: gas.l2Gas, daGasLeft: gas.daGas }; } /** Maps gasLeft properties to a gas struct. */ -export function gasLeftToGas(gasLeft: { l1GasLeft: number; l2GasLeft: number; daGasLeft: number }) { - return { l1Gas: gasLeft.l1GasLeft, l2Gas: gasLeft.l2GasLeft, daGas: gasLeft.daGasLeft }; +export function gasLeftToGas(gasLeft: { l2GasLeft: number; daGasLeft: number }) { + return { l2Gas: gasLeft.l2GasLeft, daGas: gasLeft.daGasLeft }; } /** Creates a new instance with all values set to zero except the ones set. */ @@ -29,7 +28,6 @@ export function makeGas(gasCost: Partial) { export function sumGas(...gases: Partial[]) { return gases.reduce( (acc: Gas, gas) => ({ - l1Gas: acc.l1Gas + (gas.l1Gas ?? 0), l2Gas: acc.l2Gas + (gas.l2Gas ?? 0), daGas: acc.daGas + (gas.daGas ?? 0), }), @@ -39,24 +37,23 @@ export function sumGas(...gases: Partial[]) { /** Multiplies a gas instance by a scalar. */ export function mulGas(gas: Partial, scalar: number) { - return { l1Gas: (gas.l1Gas ?? 0) * scalar, l2Gas: (gas.l2Gas ?? 0) * scalar, daGas: (gas.daGas ?? 0) * scalar }; + return { l2Gas: (gas.l2Gas ?? 0) * scalar, daGas: (gas.daGas ?? 0) * scalar }; } /** Zero gas across all gas dimensions. */ export const EmptyGas: Gas = { - l1Gas: 0, l2Gas: 0, daGas: 0, }; /** Dimensions of gas usage: L1, L2, and DA. */ -export const GasDimensions = ['l1Gas', 'l2Gas', 'daGas'] as const; +export const GasDimensions = ['l2Gas', 'daGas'] as const; /** Null object to represent a gas cost that's dynamic instead of fixed for a given instruction. */ export const DynamicGasCost = Symbol('DynamicGasCost'); /** Temporary default gas cost. We should eventually remove all usage of this variable in favor of actual gas for each opcode. */ -const TemporaryDefaultGasCost = { l1Gas: 0, l2Gas: 10, daGas: 0 }; +const TemporaryDefaultGasCost = { l2Gas: 10, daGas: 0 }; /** Base gas costs for each instruction. Additional gas cost may be added on top due to memory or storage accesses, etc. */ export const GasCosts: Record = { @@ -79,7 +76,6 @@ export const GasCosts: Record = { [Opcode.ADDRESS]: TemporaryDefaultGasCost, [Opcode.STORAGEADDRESS]: TemporaryDefaultGasCost, [Opcode.SENDER]: TemporaryDefaultGasCost, - [Opcode.FEEPERL1GAS]: TemporaryDefaultGasCost, [Opcode.FEEPERL2GAS]: TemporaryDefaultGasCost, [Opcode.FEEPERDAGAS]: TemporaryDefaultGasCost, [Opcode.CONTRACTCALLDEPTH]: TemporaryDefaultGasCost, @@ -88,12 +84,10 @@ export const GasCosts: Record = { [Opcode.BLOCKNUMBER]: TemporaryDefaultGasCost, [Opcode.TIMESTAMP]: TemporaryDefaultGasCost, [Opcode.COINBASE]: TemporaryDefaultGasCost, - [Opcode.BLOCKL1GASLIMIT]: TemporaryDefaultGasCost, [Opcode.BLOCKL2GASLIMIT]: TemporaryDefaultGasCost, [Opcode.BLOCKDAGASLIMIT]: TemporaryDefaultGasCost, [Opcode.CALLDATACOPY]: TemporaryDefaultGasCost, // Gas - [Opcode.L1GASLEFT]: TemporaryDefaultGasCost, [Opcode.L2GASLEFT]: TemporaryDefaultGasCost, [Opcode.DAGASLEFT]: TemporaryDefaultGasCost, // Control flow diff --git a/yarn-project/simulator/src/avm/avm_machine_state.ts b/yarn-project/simulator/src/avm/avm_machine_state.ts index 4183e1ff9c7..eeb490b291b 100644 --- a/yarn-project/simulator/src/avm/avm_machine_state.ts +++ b/yarn-project/simulator/src/avm/avm_machine_state.ts @@ -9,7 +9,6 @@ import { OutOfGasError } from './errors.js'; * A few fields of machine state are initialized from AVM session inputs or call instruction arguments */ export type InitialAvmMachineState = { - l1GasLeft: number; l2GasLeft: number; daGasLeft: number; }; @@ -18,7 +17,6 @@ export type InitialAvmMachineState = { * Avm state modified on an instruction-per-instruction basis. */ export class AvmMachineState { - public l1GasLeft: number; /** gas remaining of the gas allocated for a contract call */ public l2GasLeft: number; public daGasLeft: number; @@ -45,23 +43,22 @@ export class AvmMachineState { private output: Fr[] = []; constructor(gasLeft: Gas); - constructor(l1GasLeft: number, l2GasLeft: number, daGasLeft: number); - constructor(gasLeftOrL1GasLeft: Gas | number, l2GasLeft?: number, daGasLeft?: number) { - if (typeof gasLeftOrL1GasLeft === 'object') { - ({ l1Gas: this.l1GasLeft, l2Gas: this.l2GasLeft, daGas: this.daGasLeft } = gasLeftOrL1GasLeft); + constructor(l2GasLeft: number, daGasLeft: number); + constructor(gasLeftOrL2GasLeft: Gas | number, daGasLeft?: number) { + if (typeof gasLeftOrL2GasLeft === 'object') { + ({ l2Gas: this.l2GasLeft, daGas: this.daGasLeft } = gasLeftOrL2GasLeft); } else { - this.l1GasLeft = gasLeftOrL1GasLeft; - this.l2GasLeft = l2GasLeft!; + this.l2GasLeft = gasLeftOrL2GasLeft!; this.daGasLeft = daGasLeft!; } } public get gasLeft(): Gas { - return { l1Gas: this.l1GasLeft, l2Gas: this.l2GasLeft, daGas: this.daGasLeft }; + return { l2Gas: this.l2GasLeft, daGas: this.daGasLeft }; } public static fromState(state: InitialAvmMachineState): AvmMachineState { - return new AvmMachineState(state.l1GasLeft, state.l2GasLeft, state.daGasLeft); + return new AvmMachineState(state.l2GasLeft, state.daGasLeft); } /** diff --git a/yarn-project/simulator/src/avm/avm_simulator.test.ts b/yarn-project/simulator/src/avm/avm_simulator.test.ts index b8850982f1f..4df5ccbbbf2 100644 --- a/yarn-project/simulator/src/avm/avm_simulator.test.ts +++ b/yarn-project/simulator/src/avm/avm_simulator.test.ts @@ -64,7 +64,6 @@ describe('AVM simulator: injected bytecode', () => { expect(results.output).toEqual([]); expect(results.revertReason?.name).toEqual('OutOfGasError'); expect(context.machineState.l2GasLeft).toEqual(0); - expect(context.machineState.l1GasLeft).toEqual(0); expect(context.machineState.daGasLeft).toEqual(0); }); }); @@ -190,11 +189,6 @@ describe('AVM simulator: transpiled Noir contracts', () => { await testEnvGetter('sender', sender, 'get_sender'); }); - it('getFeePerL1Gas', async () => { - const fee = new Fr(1); - await testEnvGetter('feePerL1Gas', fee, 'get_fee_per_l1_gas'); - }); - it('getFeePerL2Gas', async () => { const fee = new Fr(1); await testEnvGetter('feePerL2Gas', fee, 'get_fee_per_l2_gas'); diff --git a/yarn-project/simulator/src/avm/avm_simulator.ts b/yarn-project/simulator/src/avm/avm_simulator.ts index bdce9cf7622..337cd244980 100644 --- a/yarn-project/simulator/src/avm/avm_simulator.ts +++ b/yarn-project/simulator/src/avm/avm_simulator.ts @@ -61,7 +61,7 @@ export class AvmSimulator { 'AVM attempted to execute non-existent instruction. This should never happen (invalid bytecode or AVM simulator bug)!', ); - const gasLeft = `l1=${machineState.l1GasLeft} l2=${machineState.l2GasLeft} da=${machineState.daGasLeft}`; + const gasLeft = `l2=${machineState.l2GasLeft} da=${machineState.daGasLeft}`; this.log.debug(`@${machineState.pc} ${instruction.toString()} (${gasLeft})`); // Execute the instruction. // Normal returns and reverts will return normally here. diff --git a/yarn-project/simulator/src/avm/fixtures/index.ts b/yarn-project/simulator/src/avm/fixtures/index.ts index 2800a605bb3..1ef3dadcc39 100644 --- a/yarn-project/simulator/src/avm/fixtures/index.ts +++ b/yarn-project/simulator/src/avm/fixtures/index.ts @@ -56,7 +56,6 @@ export function initExecutionEnvironment(overrides?: Partial): Globa */ export function initMachineState(overrides?: Partial): AvmMachineState { return AvmMachineState.fromState({ - l1GasLeft: overrides?.l1GasLeft ?? 100e6, l2GasLeft: overrides?.l2GasLeft ?? 100e6, daGasLeft: overrides?.daGasLeft ?? 100e6, }); diff --git a/yarn-project/simulator/src/avm/opcodes/context_getters.test.ts b/yarn-project/simulator/src/avm/opcodes/context_getters.test.ts index 8cbc26e7dcd..9c3b9787dd6 100644 --- a/yarn-project/simulator/src/avm/opcodes/context_getters.test.ts +++ b/yarn-project/simulator/src/avm/opcodes/context_getters.test.ts @@ -1,8 +1,7 @@ import { initContext, initMachineState } from '../fixtures/index.js'; -import { DAGasLeft, L1GasLeft, L2GasLeft } from './context_getters.js'; +import { DAGasLeft, L2GasLeft } from './context_getters.js'; describe.each([ - [L1GasLeft, 'l1GasLeft'], [L2GasLeft, 'l2GasLeft'], [DAGasLeft, 'daGasLeft'], ] as const)('Context getter instructions for machine state', (clsValue, key) => { diff --git a/yarn-project/simulator/src/avm/opcodes/context_getters.ts b/yarn-project/simulator/src/avm/opcodes/context_getters.ts index d1fbc639771..22bd501f59d 100644 --- a/yarn-project/simulator/src/avm/opcodes/context_getters.ts +++ b/yarn-project/simulator/src/avm/opcodes/context_getters.ts @@ -13,15 +13,6 @@ export class L2GasLeft extends GetterInstruction { } } -export class L1GasLeft extends GetterInstruction { - static type: string = 'L1GASLEFT'; - static readonly opcode: Opcode = Opcode.L1GASLEFT; - - protected getValue(context: AvmContext): MemoryValue { - return new Field(context.machineState.l1GasLeft); - } -} - export class DAGasLeft extends GetterInstruction { static type: string = 'DAGASLEFT'; static readonly opcode: Opcode = Opcode.DAGASLEFT; diff --git a/yarn-project/simulator/src/avm/opcodes/environment_getters.test.ts b/yarn-project/simulator/src/avm/opcodes/environment_getters.test.ts index 7eaff3e408d..2fc5ffda5b0 100644 --- a/yarn-project/simulator/src/avm/opcodes/environment_getters.test.ts +++ b/yarn-project/simulator/src/avm/opcodes/environment_getters.test.ts @@ -6,7 +6,6 @@ import { BlockNumber, ChainId, FeePerDAGas, - FeePerL1Gas, FeePerL2Gas, Sender, StorageAddress, @@ -14,15 +13,8 @@ import { Version, } from './environment_getters.js'; -type EnvInstruction = - | typeof FeePerL1Gas - | typeof FeePerL2Gas - | typeof FeePerDAGas - | typeof Sender - | typeof StorageAddress - | typeof Address; +type EnvInstruction = typeof FeePerL2Gas | typeof FeePerDAGas | typeof Sender | typeof StorageAddress | typeof Address; describe.each([ - [FeePerL1Gas, 'feePerL1Gas'], [FeePerL2Gas, 'feePerL2Gas'], [FeePerDAGas, 'feePerDaGas'], [Sender, 'sender'], diff --git a/yarn-project/simulator/src/avm/opcodes/environment_getters.ts b/yarn-project/simulator/src/avm/opcodes/environment_getters.ts index d9316c03ca8..e1182eff12d 100644 --- a/yarn-project/simulator/src/avm/opcodes/environment_getters.ts +++ b/yarn-project/simulator/src/avm/opcodes/environment_getters.ts @@ -41,15 +41,6 @@ export class Sender extends EnvironmentGetterInstruction { } } -export class FeePerL1Gas extends EnvironmentGetterInstruction { - static type: string = 'FEEPERL1GAS'; - static readonly opcode: Opcode = Opcode.FEEPERL1GAS; - - protected getEnvironmentValue(env: AvmExecutionEnvironment) { - return env.feePerL1Gas; - } -} - export class FeePerL2Gas extends EnvironmentGetterInstruction { static type: string = 'FEEPERL2GAS'; static readonly opcode: Opcode = Opcode.FEEPERL2GAS; @@ -121,24 +112,6 @@ export class Timestamp extends EnvironmentGetterInstruction { // } // } -// // TODO: are these even needed within the block? (both block gas limit variables - why does the execution env care?) -// export class BlockL1GasLimit extends EnvironmentGetterInstruction { -// static type: string = 'BLOCKL1GASLIMIT'; -// static numberOfOperands = 1; - -// constructor(private destOffset: number) { -// super(); -// } - -// async execute(machineState: AvmMachineState, _journal: AvmJournal): Promise { -// const {blockL1GasLimit} = machineState.executionEnvironment.globals; - -// machineState.memory.set(this.destOffset, blockL1GasLimit); - -// this.incrementPc(machineState); -// } -// } - // export class BlockL2GasLimit extends EnvironmentGetterInstruction { // static type: string = 'BLOCKL2GASLIMIT'; // static numberOfOperands = 1; diff --git a/yarn-project/simulator/src/avm/opcodes/external_calls.test.ts b/yarn-project/simulator/src/avm/opcodes/external_calls.test.ts index 2c76fc38f83..ae81b5afc48 100644 --- a/yarn-project/simulator/src/avm/opcodes/external_calls.test.ts +++ b/yarn-project/simulator/src/avm/opcodes/external_calls.test.ts @@ -60,18 +60,17 @@ describe('External Calls', () => { it('Should execute a call correctly', async () => { const gasOffset = 0; - const l1Gas = 1e6; const l2Gas = 2e6; const daGas = 3e6; - const addrOffset = 3; + const addrOffset = 2; const addr = new Fr(123456n); - const argsOffset = 4; + const argsOffset = 3; const args = [new Field(1n), new Field(2n), new Field(3n)]; const argsSize = args.length; const argsSizeOffset = 20; - const retOffset = 8; + const retOffset = 7; const retSize = 2; - const successOffset = 7; + const successOffset = 6; // const otherContextInstructionsL2GasCost = 780; // Includes the cost of the call itself const otherContextInstructionsBytecode = markBytecodeAsAvm( @@ -87,15 +86,14 @@ describe('External Calls', () => { ]), ); - // const { l1GasLeft: initialL1Gas, l2GasLeft: initialL2Gas, daGasLeft: initialDaGas } = context.machineState; - const { l1GasLeft: initialL1Gas, daGasLeft: initialDaGas } = context.machineState; + // const { l2GasLeft: initialL2Gas, daGasLeft: initialDaGas } = context.machineState; + const { daGasLeft: initialDaGas } = context.machineState; - context.machineState.memory.set(0, new Field(l1Gas)); - context.machineState.memory.set(1, new Field(l2Gas)); - context.machineState.memory.set(2, new Field(daGas)); - context.machineState.memory.set(3, new Field(addr)); + context.machineState.memory.set(0, new Field(l2Gas)); + context.machineState.memory.set(1, new Field(daGas)); + context.machineState.memory.set(2, new Field(addr)); context.machineState.memory.set(argsSizeOffset, new Uint32(argsSize)); - context.machineState.memory.setSlice(4, args); + context.machineState.memory.setSlice(3, args); jest .spyOn(context.persistableState.hostStorage.contractsDb, 'getBytecode') .mockReturnValue(Promise.resolve(otherContextInstructionsBytecode)); @@ -130,8 +128,6 @@ describe('External Calls', () => { const expectedStoredValue = new Fr(1n); expect(nestedContractWrites!.get(slotNumber)).toEqual(expectedStoredValue); - // Check that the nested gas call was used and refunded - expect(context.machineState.l1GasLeft).toEqual(initialL1Gas); // TODO(https://github.com/AztecProtocol/aztec-packages/issues/5625): gas not plumbed through correctly in nested calls. // expect(context.machineState.l2GasLeft).toEqual(initialL2Gas - otherContextInstructionsL2GasCost); expect(context.machineState.daGasLeft).toEqual(initialDaGas); @@ -139,25 +135,23 @@ describe('External Calls', () => { it('Should refuse to execute a call if not enough gas', async () => { const gasOffset = 0; - const l1Gas = 1e9; // We request more gas than what we have - const l2Gas = 2e6; + const l2Gas = 1e9; const daGas = 3e6; - const addrOffset = 3; + const addrOffset = 2; const addr = new Fr(123456n); - const argsOffset = 4; + const argsOffset = 3; const args = [new Field(1n), new Field(2n), new Field(3n)]; const argsSize = args.length; const argsSizeOffset = 20; - const retOffset = 8; + const retOffset = 7; const retSize = 2; - const successOffset = 7; + const successOffset = 6; - context.machineState.memory.set(0, new Field(l1Gas)); - context.machineState.memory.set(1, new Field(l2Gas)); - context.machineState.memory.set(2, new Field(daGas)); - context.machineState.memory.set(3, new Field(addr)); + context.machineState.memory.set(0, new Field(l2Gas)); + context.machineState.memory.set(1, new Field(daGas)); + context.machineState.memory.set(2, new Field(addr)); context.machineState.memory.set(argsSizeOffset, new Uint32(argsSize)); - context.machineState.memory.setSlice(4, args); + context.machineState.memory.setSlice(3, args); jest .spyOn(context.persistableState.hostStorage.contractsDb, 'getBytecode') diff --git a/yarn-project/simulator/src/avm/opcodes/external_calls.ts b/yarn-project/simulator/src/avm/opcodes/external_calls.ts index f3f982f792f..5985f9f78ad 100644 --- a/yarn-project/simulator/src/avm/opcodes/external_calls.ts +++ b/yarn-project/simulator/src/avm/opcodes/external_calls.ts @@ -60,13 +60,12 @@ abstract class ExternalCall extends Instruction { const callAddress = memory.getAs(addrOffset); const calldataSize = memory.get(argsSizeOffset).toNumber(); const calldata = memory.getSlice(argsOffset, calldataSize).map(f => f.toFr()); - const l1Gas = memory.get(gasOffset).toNumber(); - const l2Gas = memory.getAs(gasOffset + 1).toNumber(); - const daGas = memory.getAs(gasOffset + 2).toNumber(); + const l2Gas = memory.get(gasOffset).toNumber(); + const daGas = memory.getAs(gasOffset + 1).toNumber(); const functionSelector = memory.getAs(this.temporaryFunctionSelectorOffset).toFr(); - const allocatedGas = { l1Gas, l2Gas, daGas }; - const memoryOperations = { reads: calldataSize + 6, writes: 1 + this.retSize, indirect: this.indirect }; + const allocatedGas = { l2Gas, daGas }; + const memoryOperations = { reads: calldataSize + 5, writes: 1 + this.retSize, indirect: this.indirect }; const totalGas = sumGas(this.gasCost(memoryOperations), allocatedGas); context.machineState.consumeGas(totalGas); diff --git a/yarn-project/simulator/src/avm/serialization/bytecode_serialization.ts b/yarn-project/simulator/src/avm/serialization/bytecode_serialization.ts index d3245a24d5b..6345715bace 100644 --- a/yarn-project/simulator/src/avm/serialization/bytecode_serialization.ts +++ b/yarn-project/simulator/src/avm/serialization/bytecode_serialization.ts @@ -1,5 +1,6 @@ -import { DAGasLeft, L1GasLeft, L2GasLeft } from '../opcodes/context_getters.js'; +import { DAGasLeft, L2GasLeft } from '../opcodes/context_getters.js'; import { Keccak, Pedersen, Poseidon2, Sha256 } from '../opcodes/hashing.js'; +import type { Instruction } from '../opcodes/index.js'; import { Add, Address, @@ -16,7 +17,6 @@ import { EmitUnencryptedLog, Eq, FeePerDAGas, - FeePerL1Gas, FeePerL2Gas, FieldDiv, GetContractInstance, @@ -49,7 +49,6 @@ import { Version, Xor, } from '../opcodes/index.js'; -import type { Instruction } from '../opcodes/index.js'; import { BufferCursor } from './buffer_cursor.js'; import { Opcode } from './instruction_serialization.js'; @@ -81,7 +80,6 @@ const INSTRUCTION_SET = () => [Address.opcode, Address], [StorageAddress.opcode, StorageAddress], [Sender.opcode, Sender], - [FeePerL1Gas.opcode, FeePerL1Gas], [FeePerL2Gas.opcode, FeePerL2Gas], [FeePerDAGas.opcode, FeePerDAGas], //[Contractcalldepth.opcode, Contractcalldepth], @@ -91,7 +89,6 @@ const INSTRUCTION_SET = () => [BlockNumber.opcode, BlockNumber], [Timestamp.opcode, Timestamp], //[Coinbase.opcode, Coinbase], - //[Blockl1gaslimit.opcode, Blockl1gaslimit], //[Blockl2gaslimit.opcode, Blockl2gaslimit], //[Blockdagaslimit.opcode, Blockdagaslimit], // Execution Environment - Calldata @@ -99,7 +96,6 @@ const INSTRUCTION_SET = () => // Machine State // Machine State - Gas - [L1GasLeft.opcode, L1GasLeft], [L2GasLeft.opcode, L2GasLeft], [DAGasLeft.opcode, DAGasLeft], // Machine State - Internal Control Flow diff --git a/yarn-project/simulator/src/avm/serialization/instruction_serialization.ts b/yarn-project/simulator/src/avm/serialization/instruction_serialization.ts index 6dcc877194d..d8bec39412c 100644 --- a/yarn-project/simulator/src/avm/serialization/instruction_serialization.ts +++ b/yarn-project/simulator/src/avm/serialization/instruction_serialization.ts @@ -27,7 +27,6 @@ export enum Opcode { ADDRESS, STORAGEADDRESS, SENDER, - FEEPERL1GAS, FEEPERL2GAS, FEEPERDAGAS, CONTRACTCALLDEPTH, @@ -36,12 +35,10 @@ export enum Opcode { BLOCKNUMBER, TIMESTAMP, COINBASE, - BLOCKL1GASLIMIT, BLOCKL2GASLIMIT, BLOCKDAGASLIMIT, CALLDATACOPY, // Gas - L1GASLEFT, L2GASLEFT, DAGASLEFT, // Control flow diff --git a/yarn-project/simulator/src/public/index.test.ts b/yarn-project/simulator/src/public/index.test.ts index 644b1e970ea..a41b2e24d0b 100644 --- a/yarn-project/simulator/src/public/index.test.ts +++ b/yarn-project/simulator/src/public/index.test.ts @@ -290,7 +290,7 @@ describe('ACIR public execution simulator', () => { new Fr(7), EthAddress.fromField(new Fr(8)), AztecAddress.fromField(new Fr(9)), - new GasFees(new Fr(10), new Fr(11), new Fr(12)), + new GasFees(new Fr(10), new Fr(11)), ); const result = await simulate(execution, globalVariables); @@ -644,7 +644,6 @@ describe('ACIR public execution simulator', () => { description: 'Fee recipient', }, { value: new Fr(1), invalidValue: Fr.random(), description: 'Fee per DA gas' }, - { value: new Fr(1), invalidValue: Fr.random(), description: 'Fee per L1 gas' }, { value: new Fr(1), invalidValue: Fr.random(), description: 'Fee per L2 gas' }, ]; diff --git a/yarn-project/simulator/src/public/public_processor.test.ts b/yarn-project/simulator/src/public/public_processor.test.ts index 7f52b6352f9..94e666fd524 100644 --- a/yarn-project/simulator/src/public/public_processor.test.ts +++ b/yarn-project/simulator/src/public/public_processor.test.ts @@ -658,13 +658,13 @@ describe('public_processor', () => { publicCallRequests, }); - const gasLimits = Gas.from({ l1Gas: 1e9, l2Gas: 1e9, daGas: 1e9 }); - const teardownGas = Gas.from({ l1Gas: 1e7, l2Gas: 1e7, daGas: 1e7 }); + const gasLimits = Gas.from({ l2Gas: 1e9, daGas: 1e9 }); + const teardownGas = Gas.from({ l2Gas: 1e7, daGas: 1e7 }); tx.data.constants.txContext.gasSettings = GasSettings.from({ gasLimits: gasLimits, teardownGasLimits: teardownGas, inclusionFee: new Fr(1e4), - maxFeesPerGas: { feePerDaGas: new Fr(10), feePerL1Gas: new Fr(10), feePerL2Gas: new Fr(10) }, + maxFeesPerGas: { feePerDaGas: new Fr(10), feePerL2Gas: new Fr(10) }, }); // Private kernel tail to public pushes teardown gas allocation into revertible gas used @@ -684,10 +684,10 @@ describe('public_processor', () => { // Total gas used is the sum of teardown gas allocation plus all expenditures along the way, // without including the gas used in the teardown phase (since that's consumed entirely up front). - const expectedTotalGasUsed = { l2Gas: 1e7 + 1e6 + 2e6, daGas: 1e7 + 2e6, l1Gas: 1e7 }; + const expectedTotalGasUsed = { l2Gas: 1e7 + 1e6 + 2e6, daGas: 1e7 + 2e6 }; // Inclusion fee plus block gas fees times total gas used - const expectedTxFee = 1e4 + (1e7 + 1e6 + 2e6) * 1 + (1e7 + 2e6) * 1 + 1e7 * 1; + const expectedTxFee = 1e4 + (1e7 + 1e6 + 2e6) * 1 + (1e7 + 2e6) * 1; const transactionFee = new Fr(expectedTxFee); const simulatorResults: PublicExecutionResult[] = [ diff --git a/yarn-project/simulator/src/public/transitional_adaptors.ts b/yarn-project/simulator/src/public/transitional_adaptors.ts index 437d7a4a529..a791e2ef7fc 100644 --- a/yarn-project/simulator/src/public/transitional_adaptors.ts +++ b/yarn-project/simulator/src/public/transitional_adaptors.ts @@ -45,7 +45,6 @@ export function createAvmExecutionEnvironment( current.contractAddress, current.callContext.storageContractAddress, current.callContext.msgSender, - globalVariables.gasFees.feePerL1Gas, globalVariables.gasFees.feePerL2Gas, globalVariables.gasFees.feePerDaGas, /*contractCallDepth=*/ Fr.zero(),