Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion crates/contracts/foundry.lock
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
}
},
"lib/tempo-std": {
"rev": "6e1bf3f499d96ea400434108be3ccfd28b46b341"
"rev": "96f882963ce3b0e0abc7ec2b41d03d42457877bb"
}
}
27 changes: 23 additions & 4 deletions crates/l1/src/event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,14 @@ impl EnabledToken {

impl L1PortalEvents {
/// Event signature hashes that this container knows how to decode.
const SIGNATURE_HASHES: [B256; 5] = [
const SIGNATURE_HASHES: [B256; 7] = [
DepositMade::SIGNATURE_HASH,
WithdrawalBounceBack::SIGNATURE_HASH,
TokenEnabled::SIGNATURE_HASH,
SequencerEncryptionKeyUpdated::SIGNATURE_HASH,
LeaderUpdated::SIGNATURE_HASH,
PortalPaused::SIGNATURE_HASH,
PortalResumed::SIGNATURE_HASH,
];

/// Create portal events from deposits only.
Expand Down Expand Up @@ -139,14 +141,15 @@ impl L1PortalEvents {
///
/// Logs whose topic0 does not match a known portal event are skipped.
/// Known events that fail to decode return an error.
pub fn push_log(&mut self, log: &Log, block_number: u64) -> eyre::Result<()> {
/// Portal-wide pause and resume events return the new paused state.
pub(crate) fn push_log(&mut self, log: &Log, block_number: u64) -> eyre::Result<Option<bool>> {
if !Self::is_known_event(log) {
debug!(
l1_block = block_number,
topic0 = ?log.topic0(),
"Skipping unknown portal event"
);
return Ok(());
return Ok(None);
}
match ZonePortalEvents::decode_log(&log.inner)?.data {
ZonePortalEvents::DepositMade(event) => {
Expand Down Expand Up @@ -220,9 +223,25 @@ impl L1PortalEvents {
activation_tempo_block: event.activationTempoBlock,
});
}
ZonePortalEvents::PortalPaused(event) => {
info!(
l1_block = block_number,
account = %event.account,
"Portal-wide pause observed on L1"
);
return Ok(Some(true));
}
ZonePortalEvents::PortalResumed(event) => {
info!(
l1_block = block_number,
account = %event.account,
"Portal-wide resume observed on L1"
);
return Ok(Some(false));
}
_ => {}
}
Ok(())
Ok(None)
}

/// Return the leadership transition in this block, if any.
Expand Down
8 changes: 4 additions & 4 deletions crates/l1/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
#![cfg_attr(docsrs, feature(doc_cfg))]

use alloy_consensus::{BlockHeader as _, Sealable as _};
use alloy_consensus::BlockHeader as _;
use alloy_eips::{BlockNumberOrTag, NumHash};
use alloy_network::{ReceiptResponse as _, primitives::HeaderResponse as _};
use alloy_network::ReceiptResponse as _;
use alloy_primitives::{Address, B256, Bloom, U256, keccak256};
use alloy_provider::{DynProvider, Provider, ProviderBuilder};
use alloy_rpc_client::RpcClient;
Expand Down Expand Up @@ -69,8 +69,8 @@ pub(crate) mod rpc {
use crate::abi::{
Deposit as AbiDeposit, DepositPayload as AbiDepositPayload,
ZonePortal::{
DepositMade, LeaderUpdated, SequencerEncryptionKeyUpdated, TokenEnabled,
WithdrawalBounceBack, ZonePortalEvents,
DepositMade, LeaderUpdated, PortalPaused, PortalResumed, SequencerEncryptionKeyUpdated,
TokenEnabled, WithdrawalBounceBack, ZonePortalEvents,
},
};

Expand Down
Loading
Loading