diff --git a/_typos.toml b/_typos.toml index 6f59579b..6bf83d5e 100644 --- a/_typos.toml +++ b/_typos.toml @@ -1,5 +1,2 @@ [files] -extend-exclude = [ - "node/src/l1/abi/*.json", - "node/src/l2/abi/*.json" -] +extend-exclude = ["**/*.json"] diff --git a/e2e_tests/taiko_inbox.py b/e2e_tests/taiko_inbox.py index dddd725d..3631bd9d 100644 --- a/e2e_tests/taiko_inbox.py +++ b/e2e_tests/taiko_inbox.py @@ -1,7 +1,7 @@ from web3 import Web3 import json -with open("../whitelist/src/l1/abi/ITaikoInbox.json") as f: +with open("../whitelist/src/l1/pacaya/abi/ITaikoInbox.json") as f: abi = json.load(f) def get_last_batch_id(l1_client, taiko_inbox_address): diff --git a/e2e_tests/utils.py b/e2e_tests/utils.py index 9fc24daf..2ec3d15f 100644 --- a/e2e_tests/utils.py +++ b/e2e_tests/utils.py @@ -123,7 +123,7 @@ def send_n_txs_without_waiting(eth_client, private_key, n): send_transaction(nonce+i, account, '0.00009', eth_client, private_key) def wait_for_batch_proposed_event(eth_client, taiko_inbox_address, from_block): - with open("../whitelist/src/l1/abi/ITaikoInbox.json") as f: + with open("../whitelist/src/l1/pacaya/abi/ITaikoInbox.json") as f: abi = json.load(f) contract = eth_client.eth.contract(address=taiko_inbox_address, abi=abi) @@ -159,7 +159,7 @@ def print_batch_info(event): print("---") def get_current_operator(eth_client, l1_contract_address): - with open("../whitelist/src/l1/abi/PreconfWhitelist.json") as f: + with open("../whitelist/src/l1/pacaya/abi/PreconfWhitelist.json") as f: abi = json.load(f) contract = eth_client.eth.contract(address=l1_contract_address, abi=abi) @@ -167,7 +167,7 @@ def get_current_operator(eth_client, l1_contract_address): def get_next_operator(eth_client, l1_contract_address): import json - with open("../whitelist/src/l1/abi/PreconfWhitelist.json") as f: + with open("../whitelist/src/l1/pacaya/abi/PreconfWhitelist.json") as f: abi = json.load(f) contract = eth_client.eth.contract(address=l1_contract_address, abi=abi) @@ -193,7 +193,7 @@ def wait_till_next_l1_slot(beacon_client): time.sleep(l1_slot_duration - current_time) def get_last_batch_proposed_event(eth_client, taiko_inbox_address, from_block): - with open("../whitelist/src/l1/abi/ITaikoInbox.json") as f: + with open("../whitelist/src/l1/pacaya/abi/ITaikoInbox.json") as f: abi = json.load(f) contract = eth_client.eth.contract(address=taiko_inbox_address, abi=abi) diff --git a/whitelist/src/chain_monitor/batch_proposed_receiver.rs b/whitelist/src/chain_monitor/batch_proposed_receiver.rs index 4d6112b3..cc98902d 100644 --- a/whitelist/src/chain_monitor/batch_proposed_receiver.rs +++ b/whitelist/src/chain_monitor/batch_proposed_receiver.rs @@ -1,4 +1,4 @@ -use crate::l1::bindings::taiko_inbox::ITaikoInbox; +use crate::l1::pacaya::bindings::taiko_inbox::ITaikoInbox; use alloy::primitives::Address; use alloy::sol_types::SolEvent; use anyhow::Error; diff --git a/whitelist/src/chain_monitor/mod.rs b/whitelist/src/chain_monitor/mod.rs index 378da26b..283ba980 100644 --- a/whitelist/src/chain_monitor/mod.rs +++ b/whitelist/src/chain_monitor/mod.rs @@ -1,4 +1,4 @@ -use crate::l1::bindings::taiko_inbox::ITaikoInbox; +use crate::l1::pacaya::bindings::taiko_inbox::ITaikoInbox; use alloy::primitives::{Address, B256}; use anyhow::{Error, anyhow}; use batch_proposed_receiver::BatchProposedEventReceiver; diff --git a/whitelist/src/forced_inclusion/mod.rs b/whitelist/src/forced_inclusion/mod.rs index a6330241..4f748757 100644 --- a/whitelist/src/forced_inclusion/mod.rs +++ b/whitelist/src/forced_inclusion/mod.rs @@ -1,4 +1,4 @@ -use crate::l1::execution_layer::ExecutionLayer; +use crate::l1::pacaya::execution_layer::ExecutionLayer; use alloy::rpc::types::Transaction; use anyhow::Error; use common::{blob::blob_parser::extract_transactions_from_blob, l1::ethereum_l1::EthereumL1}; diff --git a/whitelist/src/l1/mod.rs b/whitelist/src/l1/mod.rs index bbf9c823..a714cf96 100644 --- a/whitelist/src/l1/mod.rs +++ b/whitelist/src/l1/mod.rs @@ -1,4 +1,2 @@ -pub mod bindings; -pub mod config; -pub mod execution_layer; -mod propose_batch_builder; +pub mod pacaya; +pub mod shasta; diff --git a/whitelist/src/l1/abi/ITaikoInbox.json b/whitelist/src/l1/pacaya/abi/ITaikoInbox.json similarity index 100% rename from whitelist/src/l1/abi/ITaikoInbox.json rename to whitelist/src/l1/pacaya/abi/ITaikoInbox.json diff --git a/whitelist/src/l1/abi/PreconfRouter.json b/whitelist/src/l1/pacaya/abi/PreconfRouter.json similarity index 100% rename from whitelist/src/l1/abi/PreconfRouter.json rename to whitelist/src/l1/pacaya/abi/PreconfRouter.json diff --git a/whitelist/src/l1/abi/PreconfWhitelist.json b/whitelist/src/l1/pacaya/abi/PreconfWhitelist.json similarity index 100% rename from whitelist/src/l1/abi/PreconfWhitelist.json rename to whitelist/src/l1/pacaya/abi/PreconfWhitelist.json diff --git a/whitelist/src/l1/abi/TaikoWrapper.json b/whitelist/src/l1/pacaya/abi/TaikoWrapper.json similarity index 100% rename from whitelist/src/l1/abi/TaikoWrapper.json rename to whitelist/src/l1/pacaya/abi/TaikoWrapper.json diff --git a/whitelist/src/l1/bindings.rs b/whitelist/src/l1/pacaya/bindings.rs similarity index 96% rename from whitelist/src/l1/bindings.rs rename to whitelist/src/l1/pacaya/bindings.rs index 90784c17..e34820b1 100644 --- a/whitelist/src/l1/bindings.rs +++ b/whitelist/src/l1/pacaya/bindings.rs @@ -4,7 +4,7 @@ sol!( #[allow(missing_docs)] #[sol(rpc)] PreconfWhitelist, - "src/l1/abi/PreconfWhitelist.json" + "src/l1/pacaya/abi/PreconfWhitelist.json" ); sol! { @@ -79,7 +79,7 @@ pub mod taiko_inbox { #[allow(missing_docs)] #[sol(rpc)] ITaikoInbox, - "src/l1/abi/ITaikoInbox.json" + "src/l1/pacaya/abi/ITaikoInbox.json" ); } @@ -87,7 +87,7 @@ sol!( #[allow(missing_docs)] #[sol(rpc)] PreconfRouter, - "src/l1/abi/PreconfRouter.json" + "src/l1/pacaya/abi/PreconfRouter.json" ); pub mod preconf_router { @@ -117,7 +117,7 @@ pub mod taiko_wrapper { #[allow(missing_docs)] #[sol(rpc)] TaikoWrapper, - "src/l1/abi/TaikoWrapper.json" + "src/l1/pacaya/abi/TaikoWrapper.json" ); } diff --git a/whitelist/src/l1/config.rs b/whitelist/src/l1/pacaya/config.rs similarity index 100% rename from whitelist/src/l1/config.rs rename to whitelist/src/l1/pacaya/config.rs diff --git a/whitelist/src/l1/execution_layer.rs b/whitelist/src/l1/pacaya/execution_layer.rs similarity index 100% rename from whitelist/src/l1/execution_layer.rs rename to whitelist/src/l1/pacaya/execution_layer.rs diff --git a/whitelist/src/l1/pacaya/mod.rs b/whitelist/src/l1/pacaya/mod.rs new file mode 100644 index 00000000..bbf9c823 --- /dev/null +++ b/whitelist/src/l1/pacaya/mod.rs @@ -0,0 +1,4 @@ +pub mod bindings; +pub mod config; +pub mod execution_layer; +mod propose_batch_builder; diff --git a/whitelist/src/l1/propose_batch_builder.rs b/whitelist/src/l1/pacaya/propose_batch_builder.rs similarity index 100% rename from whitelist/src/l1/propose_batch_builder.rs rename to whitelist/src/l1/pacaya/propose_batch_builder.rs diff --git a/whitelist/src/l1/shasta/bindings.rs b/whitelist/src/l1/shasta/bindings.rs new file mode 100644 index 00000000..7cb6bf34 --- /dev/null +++ b/whitelist/src/l1/shasta/bindings.rs @@ -0,0 +1,393 @@ +use alloy::sol; + +pub mod iinbox { + use super::*; + + sol!( + + library LibBlobs { + // --------------------------------------------------------------- + // Constants + // --------------------------------------------------------------- + uint256 internal constant FIELD_ELEMENT_BYTES = 32; + uint256 internal constant BLOB_FIELD_ELEMENTS = 4096; + uint256 internal constant BLOB_BYTES = BLOB_FIELD_ELEMENTS * FIELD_ELEMENT_BYTES; + + // --------------------------------------------------------------- + // Structs + // --------------------------------------------------------------- + + /// @notice Represents a segment of data that is stored in multiple consecutive blobs created + /// in this transaction. + struct BlobReference { + /// @notice The starting index of the blob. + uint16 blobStartIndex; + /// @notice The number of blobs. + uint16 numBlobs; + /// @notice The field-element offset within the blob data. + uint24 offset; + } + + /// @notice Represents a frame of data that is stored in multiple blobs. Note the size is + /// encoded as a bytes32 at the offset location. + struct BlobSlice { + /// @notice The blobs containing the proposal's content. + bytes32[] blobHashes; + /// @notice The byte offset of the proposal's content in the containing blobs. + uint24 offset; + /// @notice The timestamp when the frame was created. + uint48 timestamp; + } + + // --------------------------------------------------------------- + // Functions + // --------------------------------------------------------------- + + /// @dev Validates a blob locator and converts it to a blob slice. + /// @param _blobReference The blob locator to validate. + /// @return The blob slice. + function validateBlobReference(BlobReference memory _blobReference) + internal + view + returns (BlobSlice memory) + { + require(_blobReference.numBlobs > 0, NoBlobs()); + + bytes32[] memory blobHashes = new bytes32[](_blobReference.numBlobs); + for (uint256 i; i < _blobReference.numBlobs; ++i) { + blobHashes[i] = blobhash(_blobReference.blobStartIndex + i); + require(blobHashes[i] != 0, BlobNotFound()); + } + + return BlobSlice({ + blobHashes: blobHashes, + offset: _blobReference.offset, + timestamp: uint48(block.timestamp) + }); + } + + // --------------------------------------------------------------- + // Errors + // --------------------------------------------------------------- + + error BlobNotFound(); + error NoBlobs(); + } + + + library LibBonds { + // --------------------------------------------------------------- + // Enums + // --------------------------------------------------------------- + + enum BondType { + NONE, + PROVABILITY, + LIVENESS + } + + // --------------------------------------------------------------- + // Structs + // --------------------------------------------------------------- + + struct BondInstruction { + uint48 proposalId; + BondType bondType; + address payer; + address payee; + } + + // --------------------------------------------------------------- + // Internal Functions + // --------------------------------------------------------------- + + function aggregateBondInstruction( + bytes32 _bondInstructionsHash, + BondInstruction memory _bondInstruction + ) + internal + pure + returns (bytes32) + { + return _bondInstruction.proposalId == 0 || _bondInstruction.bondType == BondType.NONE + ? _bondInstructionsHash + : keccak256(abi.encode(_bondInstructionsHash, _bondInstruction)); + } + } + + + interface ICheckpointStore { + // --------------------------------------------------------------- + // Structs + // --------------------------------------------------------------- + + /// @notice Represents a synced checkpoint + struct Checkpoint { + uint48 blockNumber; + /// @notice The block hash for the end (last) L2 block in this proposal. + bytes32 blockHash; + /// @notice The state root for the end (last) L2 block in this proposal. + bytes32 stateRoot; + } + + // --------------------------------------------------------------- + // Events + // --------------------------------------------------------------- + + /// @notice Emitted when a checkpoint is saved + /// @param blockNumber The block number + /// @param blockHash The block hash + /// @param stateRoot The state root + event CheckpointSaved(uint48 indexed blockNumber, bytes32 blockHash, bytes32 stateRoot); + + // --------------------------------------------------------------- + // External Functions + // --------------------------------------------------------------- + + /// @notice Gets a checkpoint by index + /// @param _offset The offset of the checkpoint. Use 0 for the last checkpoint, 1 for the + /// second last, etc. + /// @return _ The checkpoint + function getCheckpoint(uint48 _offset) external view returns (Checkpoint memory); + + /// @notice Gets the latest checkpoint number + /// @return _ The latest checkpoint number + function getLatestCheckpointBlockNumber() external view returns (uint48); + + /// @notice Gets the number of checkpoints + /// @return _ The number of checkpoints + function getNumberOfCheckpoints() external view returns (uint48); + } + + + interface IInbox { + /// @notice Configuration struct for Inbox constructor parameters + struct Config { + /// @notice The token used for bonds + address bondToken; + /// @notice The proof verifier contract + address proofVerifier; + /// @notice The proposer checker contract + address proposerChecker; + /// @notice The proving window in seconds + uint48 provingWindow; + /// @notice The extended proving window in seconds + uint48 extendedProvingWindow; + /// @notice The maximum number of finalized proposals in one block + uint256 maxFinalizationCount; + /// @notice The finalization grace period in seconds + uint48 finalizationGracePeriod; + /// @notice The ring buffer size for storing proposal hashes + uint256 ringBufferSize; + /// @notice The percentage of basefee paid to coinbase + uint8 basefeeSharingPctg; + /// @notice The minimum number of forced inclusions that the proposer is forced to process + /// if they are due + uint256 minForcedInclusionCount; + /// @notice The delay for forced inclusions measured in seconds + uint64 forcedInclusionDelay; + /// @notice The fee for forced inclusions in Gwei + uint64 forcedInclusionFeeInGwei; + /// @notice The maximum number of checkpoints to store in ring buffer + uint16 maxCheckpointHistory; + } + + /// @notice Represents a source of derivation data within a Derivation + struct DerivationSource { + /// @notice Whether this source is from a forced inclusion. + bool isForcedInclusion; + /// @notice Blobs that contain the source's manifest data. + LibBlobs.BlobSlice blobSlice; + } + + /// @notice Contains derivation data for a proposal that is not needed during proving. + /// @dev This data is hashed and stored in the Proposal struct to reduce calldata size. + struct Derivation { + /// @notice The L1 block number when the proposal was accepted. + uint48 originBlockNumber; + /// @notice The hash of the origin block. + bytes32 originBlockHash; + /// @notice The percentage of base fee paid to coinbase. + uint8 basefeeSharingPctg; + /// @notice Array of derivation sources, where each can be regular or forced inclusion. + DerivationSource[] sources; + } + + /// @notice Represents a proposal for L2 blocks. + struct Proposal { + /// @notice Unique identifier for the proposal. + uint48 id; + /// @notice The L1 block timestamp when the proposal was accepted. + uint48 timestamp; + /// @notice The timestamp of the last slot where the current preconfer can propose. + uint48 endOfSubmissionWindowTimestamp; + /// @notice Address of the proposer. + address proposer; + /// @notice The current hash of coreState + bytes32 coreStateHash; + /// @notice Hash of the Derivation struct containing additional proposal data. + bytes32 derivationHash; + } + + /// @notice Represents a transition about the state transition of a proposal. + /// @dev Prover information has been moved to TransitionMetadata for out-of-order proving + /// support + struct Transition { + /// @notice The proposal's hash. + bytes32 proposalHash; + /// @notice The parent transition's hash, this is used to link the transition to its parent + /// transition to + /// finalize the corresponding proposal. + bytes32 parentTransitionHash; + /// @notice The end block header containing number, hash, and state root. + ICheckpointStore.Checkpoint checkpoint; + } + + /// @notice Metadata about the proving of a transition + /// @dev Separated from Transition to enable out-of-order proving + struct TransitionMetadata { + /// @notice The designated prover for this transition. + address designatedProver; + /// @notice The actual prover who submitted the proof. + address actualProver; + } + + /// @notice Represents a record of a transition with additional metadata. + struct TransitionRecord { + /// @notice The span indicating how many proposals this transition record covers. + uint8 span; + /// @notice The bond instructions. + LibBonds.BondInstruction[] bondInstructions; + /// @notice The hash of the last transition in the span. + bytes32 transitionHash; + /// @notice The hash of the last checkpoint in the span. + bytes32 checkpointHash; + } + + /// @notice Represents the core state of the inbox. + struct CoreState { + /// @notice The next proposal ID to be assigned. + uint48 nextProposalId; + /// @notice The next proposal block ID to be assigned. + uint48 nextProposalBlockId; + /// @notice The ID of the last finalized proposal. + uint48 lastFinalizedProposalId; + /// @notice The hash of the last finalized transition. + bytes32 lastFinalizedTransitionHash; + /// @notice The hash of all bond instructions. + bytes32 bondInstructionsHash; + } + + /// @notice Input data for the propose function + struct ProposeInput { + /// @notice The deadline timestamp for transaction inclusion (0 = no deadline). + uint48 deadline; + /// @notice The current core state before this proposal. + CoreState coreState; + /// @notice Array of existing proposals for validation (1-2 elements). + Proposal[] parentProposals; + /// @notice Blob reference for proposal data. + LibBlobs.BlobReference blobReference; + /// @notice Array of transition records for finalization. + TransitionRecord[] transitionRecords; + /// @notice The checkpoint for finalization. + ICheckpointStore.Checkpoint checkpoint; + /// @notice The number of forced inclusions that the proposer wants to process. + /// @dev This can be set to 0 if no forced inclusions are due, and there's none in the queue + /// that he wants to include. + uint8 numForcedInclusions; + } + + /// @notice Input data for the prove function + struct ProveInput { + /// @notice Array of proposals to prove. + Proposal[] proposals; + /// @notice Array of transitions containing proof details. + Transition[] transitions; + /// @notice Array of metadata for prover information. + /// @dev Must have same length as transitions array. + TransitionMetadata[] metadata; + } + + /// @notice Payload data emitted in the Proposed event + struct ProposedEventPayload { + /// @notice The proposal that was created. + Proposal proposal; + /// @notice The derivation data for the proposal. + Derivation derivation; + /// @notice The core state after the proposal. + CoreState coreState; + } + + /// @notice Payload data emitted in the Proved event + struct ProvedEventPayload { + /// @notice The proposal ID that was proven. + uint48 proposalId; + /// @notice The transition that was proven. + Transition transition; + /// @notice The transition record containing additional metadata. + TransitionRecord transitionRecord; + /// @notice The metadata containing prover information. + TransitionMetadata metadata; + } + + // --------------------------------------------------------------- + // Events + // --------------------------------------------------------------- + + /// @notice Emitted when a new proposal is proposed. + /// @param data The encoded ProposedEventPayload + event Proposed(bytes data); + + /// @notice Emitted when a proof is submitted + /// @param data The encoded ProvedEventPayload + event Proved(bytes data); + + /// @notice Emitted when bond instructions are issued + /// @param instructions The bond instructions that need to be performed. + event BondInstructed(LibBonds.BondInstruction[] instructions); + + // --------------------------------------------------------------- + // External Transactional Functions + // --------------------------------------------------------------- + + /// @notice Proposes new proposals of L2 blocks. + /// @param _lookahead The data to post a new lookahead (currently unused). + /// @param _data The encoded ProposeInput struct. + function propose(bytes calldata _lookahead, bytes calldata _data) external; + + /// @notice Proves a transition about some properties of a proposal, including its state + /// transition. + /// @param _data The encoded ProveInput struct. + /// @param _proof Validity proof for the transitions. + function prove(bytes calldata _data, bytes calldata _proof) external; + + // --------------------------------------------------------------- + // External View Functions + // --------------------------------------------------------------- + + /// @notice Returns the proposal hash for a given proposal ID. + /// @param _proposalId The proposal ID to look up. + /// @return proposalHash_ The hash stored at the proposal's ring buffer slot. + function getProposalHash(uint48 _proposalId) external view returns (bytes32 proposalHash_); + + /// @notice Returns the transition record hash for a given proposal ID and parent transition + /// hash. + /// @param _proposalId The proposal ID. + /// @param _parentTransitionHash The parent transition hash. + /// @return finalizationDeadline_ The timestamp when finalization is enforced. + /// @return recordHash_ The hash of the transition record. + function getTransitionRecordHash( + uint48 _proposalId, + bytes32 _parentTransitionHash + ) + external + view + returns (uint48 finalizationDeadline_, bytes26 recordHash_); + + /// @notice Returns the configuration parameters of the Inbox contract + /// @return config_ The configuration struct containing all immutable parameters + function getConfig() external view returns (Config memory config_); + } + ); +} diff --git a/whitelist/src/l1/shasta/mod.rs b/whitelist/src/l1/shasta/mod.rs new file mode 100644 index 00000000..f1f0747b --- /dev/null +++ b/whitelist/src/l1/shasta/mod.rs @@ -0,0 +1 @@ +mod bindings; diff --git a/whitelist/src/main.rs b/whitelist/src/main.rs index a8197f11..7310ff1b 100644 --- a/whitelist/src/main.rs +++ b/whitelist/src/main.rs @@ -3,7 +3,7 @@ use common::{ funds_monitor, l1 as common_l1, l1::el_trait::ELTrait, l2, metrics, metrics::Metrics, shared, signer, utils as common_utils, }; -use l1::execution_layer::ExecutionLayer; +use l1::pacaya::execution_layer::ExecutionLayer; use std::sync::Arc; use tokio::{ signal::unix::{SignalKind, signal}, @@ -65,7 +65,7 @@ async fn main() -> Result<(), Error> { let ethereum_l1 = common_l1::ethereum_l1::EthereumL1::::new( common_l1::config::EthereumL1Config::new(&config, l1_signer), - l1::config::EthereumL1Config::try_from(config.specific_config.clone())?, + l1::pacaya::config::EthereumL1Config::try_from(config.specific_config.clone())?, transaction_error_sender, metrics.clone(), ) diff --git a/whitelist/src/node/batch_manager/batch_builder.rs b/whitelist/src/node/batch_manager/batch_builder.rs index 3818ef82..2043e96d 100644 --- a/whitelist/src/node/batch_manager/batch_builder.rs +++ b/whitelist/src/node/batch_manager/batch_builder.rs @@ -2,7 +2,7 @@ use std::{collections::VecDeque, sync::Arc}; use super::config::{BatchesToSend, ForcedInclusionBatch}; use crate::{ - l1::execution_layer::ExecutionLayer, + l1::pacaya::execution_layer::ExecutionLayer, metrics::Metrics, node::batch_manager::{batch::Batch, config::BatchBuilderConfig}, shared::{l2_block::L2Block, l2_tx_lists::PreBuiltTxList}, diff --git a/whitelist/src/node/batch_manager/config.rs b/whitelist/src/node/batch_manager/config.rs index f52c65a2..bf00294a 100644 --- a/whitelist/src/node/batch_manager/config.rs +++ b/whitelist/src/node/batch_manager/config.rs @@ -1,5 +1,5 @@ use super::batch::Batch; -use crate::l1::bindings::BatchParams; +use crate::l1::pacaya::bindings::BatchParams; use alloy::primitives::Address; use std::collections::VecDeque; diff --git a/whitelist/src/node/batch_manager/mod.rs b/whitelist/src/node/batch_manager/mod.rs index 60cac69e..c9e7b07c 100644 --- a/whitelist/src/node/batch_manager/mod.rs +++ b/whitelist/src/node/batch_manager/mod.rs @@ -4,7 +4,7 @@ pub mod config; use crate::{ forced_inclusion::ForcedInclusion, - l1::execution_layer::ExecutionLayer, + l1::pacaya::execution_layer::ExecutionLayer, metrics::Metrics, node::batch_manager::config::BatchesToSend, shared::{l2_block::L2Block, l2_slot_info::L2SlotInfo, l2_tx_lists::PreBuiltTxList}, diff --git a/whitelist/src/node/mod.rs b/whitelist/src/node/mod.rs index 354f9d26..8a2e7009 100644 --- a/whitelist/src/node/mod.rs +++ b/whitelist/src/node/mod.rs @@ -6,7 +6,7 @@ mod verifier; use crate::{ chain_monitor::ChainMonitor, - l1::execution_layer::ExecutionLayer, + l1::pacaya::execution_layer::ExecutionLayer, metrics::Metrics, node::l2_head_verifier::L2HeadVerifier, shared::{l2_slot_info::L2SlotInfo, l2_tx_lists::PreBuiltTxList}, diff --git a/whitelist/src/node/operator.rs b/whitelist/src/node/operator.rs index 0b53ed78..1b702494 100644 --- a/whitelist/src/node/operator.rs +++ b/whitelist/src/node/operator.rs @@ -1,4 +1,4 @@ -use crate::l1::execution_layer::{ExecutionLayer, PreconfOperator}; +use crate::l1::pacaya::execution_layer::{ExecutionLayer, PreconfOperator}; use anyhow::Error; use common::{ l1::{ @@ -408,7 +408,7 @@ impl Operator { #[cfg(test)] mod tests { use super::*; - use crate::l1::bindings::preconf_router::IPreconfRouter; + use crate::l1::pacaya::bindings::preconf_router::IPreconfRouter; use alloy::primitives::B256; use alloy::primitives::U256; use chrono::DateTime; diff --git a/whitelist/src/node/verifier.rs b/whitelist/src/node/verifier.rs index 3ec20604..a7f6877a 100644 --- a/whitelist/src/node/verifier.rs +++ b/whitelist/src/node/verifier.rs @@ -1,6 +1,6 @@ use super::batch_manager::BatchManager; use crate::{ - l1::execution_layer::ExecutionLayer, metrics::Metrics, + l1::pacaya::execution_layer::ExecutionLayer, metrics::Metrics, node::batch_manager::config::BatchesToSend, }; use alloy::primitives::B256; diff --git a/whitelist/src/test_gas/mod.rs b/whitelist/src/test_gas/mod.rs index d8f89525..c91e7243 100644 --- a/whitelist/src/test_gas/mod.rs +++ b/whitelist/src/test_gas/mod.rs @@ -1,4 +1,4 @@ -use crate::l1::execution_layer::ExecutionLayer; +use crate::l1::pacaya::execution_layer::ExecutionLayer; use anyhow::Error; use common::{ l1::{el_trait::ELTrait, ethereum_l1::EthereumL1},