From e9e30ff019b6d551e8a776020766a45b85783600 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov Date: Tue, 2 Jun 2026 00:42:41 +0300 Subject: [PATCH 1/4] feat(sequencer): implement bridge withdraw flow --- Cargo.lock | 1 + Cargo.toml | 1 + integration_tests/tests/bridge.rs | 7 +- lez/common/src/transaction.rs | 45 +++++++++-- lez/sequencer/core/Cargo.toml | 5 +- lez/sequencer/core/src/block_publisher.rs | 48 +++++++++--- lez/sequencer/core/src/lib.rs | 95 ++++++++++++++++++----- lez/sequencer/core/src/mock.rs | 7 +- program_methods/guest/src/bin/bridge.rs | 30 ++++++- programs/bridge/core/src/lib.rs | 15 +++- 10 files changed, 211 insertions(+), 43 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2178d13a..7dae1215 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9018,6 +9018,7 @@ dependencies = [ "logos-blockchain-key-management-system-service", "logos-blockchain-zone-sdk", "mempool", + "num-bigint 0.4.6", "rand 0.8.6", "risc0-zkvm", "serde", diff --git a/Cargo.toml b/Cargo.toml index 6f30b095..4bc7994a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -133,6 +133,7 @@ chrono = "0.4.41" borsh = "1.5.7" base58 = "0.2.0" itertools = "0.14.0" +num-bigint = "0.4.6" url = { version = "2.5.4", features = ["serde"] } tokio-retry = "0.3.0" schemars = "1.2" diff --git a/integration_tests/tests/bridge.rs b/integration_tests/tests/bridge.rs index e7d52e83..048ad50c 100644 --- a/integration_tests/tests/bridge.rs +++ b/integration_tests/tests/bridge.rs @@ -18,7 +18,7 @@ use lee::{ }; use lee_core::{InputAccountIdentity, account::AccountWithMetadata}; use log::info; -use logos_blockchain_core::mantle::{Value, ledger::Inputs, ops::channel::deposit::DepositOp}; +use logos_blockchain_core::mantle::{ledger::Inputs, ops::channel::deposit::DepositOp}; use logos_blockchain_http_api_common::bodies::{ channel::ChannelDepositRequestBody, wallet::{ @@ -198,7 +198,7 @@ async fn private_bridge_deposit_invocation_is_dropped() -> anyhow::Result<()> { async fn submit_bedrock_deposit( bedrock_addr: std::net::SocketAddr, recipient_id: AccountId, - amount: u128, + amount: u64, ) -> anyhow::Result<()> { #[derive(BorshSerialize)] struct DepositMetadata { @@ -213,9 +213,6 @@ async fn submit_bedrock_deposit( let funding_key = "2e03b2eff5a45478e7e79668d2a146cf2c5c7925bce927f2b1c67f2ab4fc0d26"; - let amount: Value = amount - .try_into() - .context("Deposit amount does not fit Bedrock Value type")?; let channel_id = integration_tests::config::bedrock_channel_id(); let client = reqwest::Client::new(); diff --git a/lez/common/src/transaction.rs b/lez/common/src/transaction.rs index a74474a9..c30896a1 100644 --- a/lez/common/src/transaction.rs +++ b/lez/common/src/transaction.rs @@ -80,15 +80,16 @@ impl LeeTransaction { ) -> Result { let diff = self.compute_state_diff(state, block_id, timestamp)?; - // system accounts guard - let system_accounts = lee::CLOCK_PROGRAM_ACCOUNT_IDS.iter().copied().chain([ - lee::system_faucet_account_id(), - lee::system_bridge_account_id(), - ]); + let system_accounts = lee::CLOCK_PROGRAM_ACCOUNT_IDS + .iter() + .copied() + .chain(std::iter::once(lee::system_faucet_account_id())); for account_id in system_accounts { validate_doesnt_modify_account(state, &diff, account_id)?; } + self.validate_bridge_account_modification(state, &diff)?; + Ok(diff) } @@ -150,6 +151,40 @@ impl LeeTransaction { state.apply_state_diff(diff); Ok(self) } + + fn validate_bridge_account_modification( + &self, + state: &V03State, + diff: &ValidatedStateDiff, + ) -> Result<(), lee::error::LeeError> { + let bridge_account_id = lee::system_bridge_account_id(); + let pre = state.get_account_by_id(bridge_account_id); + let Some(post) = diff.public_diff().get(&bridge_account_id).cloned() else { + return Ok(()); + }; + + let Self::Public(_) = self else { + return Err(lee::error::LeeError::InvalidInput(format!( + "Non-public transaction cannot modify system bridge account {bridge_account_id}" + ))); + }; + + let only_balance_increased = { + let expected_pre = lee::Account { + balance: pre.balance, + ..post.clone() + }; + (expected_pre == pre) && (pre.balance <= post.balance) + }; + + if only_balance_increased { + Ok(()) + } else { + Err(lee::error::LeeError::InvalidInput(format!( + "Transaction modifies restricted system bridge account {bridge_account_id}" + ))) + } + } } impl From for LeeTransaction { diff --git a/lez/sequencer/core/Cargo.toml b/lez/sequencer/core/Cargo.toml index f7296f42..d5bd5c3a 100644 --- a/lez/sequencer/core/Cargo.toml +++ b/lez/sequencer/core/Cargo.toml @@ -19,6 +19,8 @@ faucet_core.workspace = true bridge_core.workspace = true vault_core.workspace = true +logos-blockchain-key-management-system-service.workspace = true +logos-blockchain-core.workspace = true anyhow.workspace = true serde.workspace = true serde_json.workspace = true @@ -27,13 +29,12 @@ tempfile.workspace = true chrono.workspace = true log.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } -logos-blockchain-key-management-system-service.workspace = true -logos-blockchain-core.workspace = true rand.workspace = true borsh.workspace = true bytesize.workspace = true hex.workspace = true url.workspace = true +num-bigint.workspace = true risc0-zkvm.workspace = true [features] diff --git a/lez/sequencer/core/src/block_publisher.rs b/lez/sequencer/core/src/block_publisher.rs index f07a47c6..6c7ab1cd 100644 --- a/lez/sequencer/core/src/block_publisher.rs +++ b/lez/sequencer/core/src/block_publisher.rs @@ -3,8 +3,8 @@ use std::{pin::Pin, sync::Arc, time::Duration}; use anyhow::{Context as _, Result}; use common::block::Block; use log::warn; -pub use logos_blockchain_core::mantle::ops::channel::MsgId; -pub use logos_blockchain_key_management_system_service::keys::Ed25519Key; +use logos_blockchain_core::mantle::{Note, ledger::Outputs}; +pub use logos_blockchain_key_management_system_service::keys::{Ed25519Key, ZkKey}; pub use logos_blockchain_zone_sdk::sequencer::SequencerCheckpoint; use logos_blockchain_zone_sdk::{ CommonHttpClient, @@ -12,9 +12,10 @@ use logos_blockchain_zone_sdk::{ sequencer::{Event, SequencerConfig as ZoneSdkSequencerConfig, SequencerHandle, ZoneSequencer}, state::{DepositInfo, FinalizedOp, InscriptionInfo}, }; +use num_bigint::BigUint; use tokio::task::JoinHandle; -use crate::config::BedrockConfig; +use crate::{BridgeWithdrawData, config::BedrockConfig}; /// Sink for `Event::Published` checkpoints emitted by the drive task. /// Caller is responsible for persistence (e.g. writing to rocksdb). @@ -43,7 +44,11 @@ pub trait BlockPublisherTrait: Clone { /// Fire-and-forget publish. Zone-sdk drives the actual submission and /// retries internally; this just hands the payload off. - async fn publish_block(&self, block: &Block) -> Result<()>; + async fn publish_block( + &self, + block: &Block, + bridge_withdrawals: Vec, + ) -> Result<()>; } /// Real block publisher backed by zone-sdk's `ZoneSequencer`. @@ -127,17 +132,42 @@ impl BlockPublisherTrait for ZoneSdkPublisher { }) } - async fn publish_block(&self, block: &Block) -> Result<()> { + async fn publish_block( + &self, + block: &Block, + bridge_withdrawals: Vec, + ) -> Result<()> { let data = borsh::to_vec(block).context("Failed to serialize block")?; let data_bounded = data .try_into() .context("Block data exceeds maximum allowed size")?; - self.handle - .publish_message(data_bounded) - .await - .context("Failed to publish block")?; + if bridge_withdrawals.is_empty() { + self.handle + .publish_message(data_bounded) + .await + .context("Failed to publish block")?; + return Ok(()); + } + let withdraws = bridge_withdrawals + .into_iter() + .map(|withdrawal| { + let recipient_pk = + logos_blockchain_key_management_system_service::keys::ZkPublicKey::from( + BigUint::from_bytes_le(&withdrawal.bedrock_account_pk), + ); + + logos_blockchain_zone_sdk::sequencer::WithdrawArg { + outputs: Outputs::new(Note::new(withdrawal.amount, recipient_pk)), + } + }) + .collect(); + + self.handle + .publish_atomic_withdraw(data_bounded, withdraws) + .await + .context("Failed to publish block with withdrawals")?; Ok(()) } } diff --git a/lez/sequencer/core/src/lib.rs b/lez/sequencer/core/src/lib.rs index 2a8af528..ce0cadeb 100644 --- a/lez/sequencer/core/src/lib.rs +++ b/lez/sequencer/core/src/lib.rs @@ -242,7 +242,7 @@ impl SequencerCore { // restarts. if is_fresh_start { block_publisher - .publish_block(&genesis_block) + .publish_block(&genesis_block, vec![]) .await .expect("Failed to publish genesis block"); } @@ -261,16 +261,16 @@ impl SequencerCore { /// Produces a new block from mempool transactions and publishes it via zone-sdk. pub async fn produce_new_block(&mut self) -> Result { - let block_with_meta = self - .build_block_from_mempool() - .context("Failed to build block from mempool transactions")?; let BlockWithMeta { block, deposit_event_ids, - } = block_with_meta; + bridge_withdrawals, + } = self + .build_block_from_mempool() + .context("Failed to build block from mempool transactions")?; self.block_publisher - .publish_block(&block) + .publish_block(&block, bridge_withdrawals) .await .context("Failed to publish block to Bedrock")?; @@ -298,6 +298,7 @@ impl SequencerCore { let mut valid_transactions = Vec::new(); let mut deposit_event_ids = Vec::new(); + let mut bridge_withdrawals = Vec::new(); let max_block_size = usize::try_from(self.sequencer_config.max_block_size.as_u64()) .expect("`max_block_size` should fit into usize"); @@ -362,6 +363,10 @@ impl SequencerCore { } }; + if let Some(withdraw_data) = extract_bridge_withdraw_data(&tx) { + bridge_withdrawals.push(withdraw_data); + } + self.state.apply_state_diff(validated_diff); } TransactionOrigin::Sequencer => { @@ -369,17 +374,8 @@ impl SequencerCore { panic!("Sequencer may only generate Public transactions, found {tx:#?}"); }; - if public_tx.message.program_id == Program::bridge().id() { - let instruction: bridge_core::Instruction = - risc0_zkvm::serde::from_slice(&public_tx.message.instruction_data) - .context("Failed to deserialize bridge instruction")?; - match instruction { - bridge_core::Instruction::Deposit { - l1_deposit_op_id, .. - } => { - deposit_event_ids.push(HashType(l1_deposit_op_id)); - } - } + if let Some(deposit_op_id) = extract_bridge_deposit_id(&tx) { + deposit_event_ids.push(deposit_op_id); } self.state @@ -393,6 +389,7 @@ impl SequencerCore { } valid_transactions.push(tx); + info!("Validated transaction with hash {tx_hash}, including it in block"); if valid_transactions.len() >= self.sequencer_config.max_num_tx_in_block { break; @@ -427,6 +424,7 @@ impl SequencerCore { Ok(BlockWithMeta { block, deposit_event_ids, + bridge_withdrawals, }) } @@ -486,6 +484,13 @@ impl SequencerCore { struct BlockWithMeta { block: Block, deposit_event_ids: Vec, + bridge_withdrawals: Vec, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct BridgeWithdrawData { + pub amount: u64, + pub bedrock_account_pk: [u8; 32], } /// Checks the database for any pending deposit events that have not yet been marked as submitted in @@ -640,7 +645,7 @@ fn build_bridge_deposit_tx_from_event(event: &PendingDepositEventRecord) -> Resu l1_deposit_op_id: event.deposit_op_id.0, vault_program_id, recipient_id: metadata.recipient_id, - amount: u128::from(event.amount), + amount: event.amount, }, ) .context("Failed to build bridge deposit message")?; @@ -652,6 +657,58 @@ fn build_bridge_deposit_tx_from_event(event: &PendingDepositEventRecord) -> Resu ))) } +#[must_use] +fn extract_bridge_deposit_id(tx: &LeeTransaction) -> Option { + let LeeTransaction::Public(tx) = tx else { + return None; + }; + + let message = tx.message(); + if message.program_id != lee::program::Program::bridge().id() { + return None; + } + + let instruction = + risc0_zkvm::serde::from_slice::(&message.instruction_data) + .ok()?; + + match instruction { + bridge_core::Instruction::Deposit { + l1_deposit_op_id, .. + } => Some(HashType(l1_deposit_op_id)), + bridge_core::Instruction::Withdraw { .. } => None, + } +} + +#[must_use] +fn extract_bridge_withdraw_data(tx: &LeeTransaction) -> Option { + let LeeTransaction::Public(tx) = tx else { + return None; + }; + + let message = tx.message(); + if message.program_id != lee::program::Program::bridge().id() { + return None; + } + + let instruction = + risc0_zkvm::serde::from_slice::(&message.instruction_data) + .ok()?; + + match instruction { + bridge_core::Instruction::Withdraw { + amount, + bedrock_account_pk, + } => Some(BridgeWithdrawData { + amount, + bedrock_account_pk, + }), + bridge_core::Instruction::Deposit { .. } => unreachable!( + "Deposit instructions from users should never pass validation, and thus should never be seen here" + ), + } +} + /// Load signing key from file or generate a new one if it doesn't exist. fn load_or_create_signing_key(path: &Path) -> Result { if path.exists() { @@ -788,7 +845,7 @@ mod tests { l1_deposit_op_id, amount, .. - } if l1_deposit_op_id == deposit_op_id && amount == u128::from(expected_amount) + } if l1_deposit_op_id == deposit_op_id && amount == expected_amount ) } diff --git a/lez/sequencer/core/src/mock.rs b/lez/sequencer/core/src/mock.rs index e041269a..0b0024ac 100644 --- a/lez/sequencer/core/src/mock.rs +++ b/lez/sequencer/core/src/mock.rs @@ -5,6 +5,7 @@ use common::block::Block; use logos_blockchain_key_management_system_service::keys::Ed25519Key; use crate::{ + BridgeWithdrawData, block_publisher::{ BlockPublisherTrait, CheckpointSink, FinalizedBlockSink, OnDepositEventSink, SequencerCheckpoint, @@ -30,7 +31,11 @@ impl BlockPublisherTrait for MockBlockPublisher { Ok(Self) } - async fn publish_block(&self, _block: &Block) -> Result<()> { + async fn publish_block( + &self, + _block: &Block, + _bridge_withdrawals: Vec, + ) -> Result<()> { Ok(()) } } diff --git a/program_methods/guest/src/bin/bridge.rs b/program_methods/guest/src/bin/bridge.rs index eb082c7c..19d6509c 100644 --- a/program_methods/guest/src/bin/bridge.rs +++ b/program_methods/guest/src/bin/bridge.rs @@ -63,12 +63,40 @@ fn main() { vec![bridge_for_vault, recipient_vault], &vault_core::Instruction::Transfer { recipient_id, - amount, + amount: u128::from(amount), }, ) .with_pda_seeds(vec![bridge_core::compute_bridge_seed()]), ] } + Instruction::Withdraw { + amount, + bedrock_account_pk: _, + } => { + let [sender, bridge] = pre_states + .try_into() + .expect("Withdraw requires exactly 2 accounts"); + + assert_eq!( + bridge.account_id, + bridge_core::compute_bridge_account_id(self_program_id), + "Second account must be bridge PDA" + ); + + let auth_transfer_program_id = bridge.account.program_owner; + assert_eq!( + sender.account.program_owner, auth_transfer_program_id, + "Sender account must be owned by the authenticated transfer program" + ); + + vec![ChainedCall::new( + auth_transfer_program_id, + vec![sender, bridge], + &authenticated_transfer_core::Instruction::Transfer { + amount: u128::from(amount), + }, + )] + } }; ProgramOutput::new( diff --git a/programs/bridge/core/src/lib.rs b/programs/bridge/core/src/lib.rs index 1e1bff4f..c9666f27 100644 --- a/programs/bridge/core/src/lib.rs +++ b/programs/bridge/core/src/lib.rs @@ -17,7 +17,20 @@ pub enum Instruction { l1_deposit_op_id: [u8; 32], vault_program_id: ProgramId, recipient_id: AccountId, - amount: u128, + amount: u64, + }, + + /// Transfers native tokens from a user account to the bridge PDA account. + /// + /// Required accounts (2): + /// - Sender account + /// - Bridge PDA account + /// + /// `bedrock_account_pk` is consumed by the Sequencer and is not used by the Bridge program + /// logic. + Withdraw { + amount: u64, + bedrock_account_pk: [u8; 32], }, } From d6e68a52ca4e79d1d00b8c9b1ef226cb9b621fad Mon Sep 17 00:00:00 2001 From: Daniil Polyakov Date: Tue, 2 Jun 2026 15:56:46 +0300 Subject: [PATCH 2/4] feat(state): forbid private bridge withdrawals --- Cargo.lock | 1 + lee/state_machine/core/src/commitment.rs | 1 + lee/state_machine/core/src/nullifier.rs | 1 + lez/sequencer/core/Cargo.toml | 1 + lez/sequencer/core/src/lib.rs | 109 +++++++++++++++++++++++ 5 files changed, 113 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 7dae1215..7ccc172b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9011,6 +9011,7 @@ dependencies = [ "futures", "hex", "humantime-serde", + "key_protocol", "lee", "lee_core", "log", diff --git a/lee/state_machine/core/src/commitment.rs b/lee/state_machine/core/src/commitment.rs index 7c81c12c..92085d7d 100644 --- a/lee/state_machine/core/src/commitment.rs +++ b/lee/state_machine/core/src/commitment.rs @@ -52,6 +52,7 @@ impl std::fmt::Debug for Commitment { impl Commitment { /// Generates the commitment to a private account owned by user for `account_id`: /// SHA256( `Comm_DS` || `account_id` || `program_owner` || balance || nonce || SHA256(data)). + // TODO: Accept account_id by value as it's Copy #[must_use] pub fn new(account_id: &AccountId, account: &Account) -> Self { const COMMITMENT_PREFIX: &[u8; 32] = diff --git a/lee/state_machine/core/src/nullifier.rs b/lee/state_machine/core/src/nullifier.rs index d1fbae42..0490ac00 100644 --- a/lee/state_machine/core/src/nullifier.rs +++ b/lee/state_machine/core/src/nullifier.rs @@ -97,6 +97,7 @@ impl Nullifier { } /// Computes a nullifier for an account initialization. + // TODO: Accept account_id by value as it's Copy #[must_use] pub fn for_account_initialization(account_id: &AccountId) -> Self { const INIT_PREFIX: &[u8; 32] = b"/LEE/v0.3/Nullifier/Initialize/\x00"; diff --git a/lez/sequencer/core/Cargo.toml b/lez/sequencer/core/Cargo.toml index d5bd5c3a..8a6a8c08 100644 --- a/lez/sequencer/core/Cargo.toml +++ b/lez/sequencer/core/Cargo.toml @@ -47,3 +47,4 @@ mock = [] futures.workspace = true test_program_methods.workspace = true lee = { workspace = true, features = ["test-utils"] } +key_protocol.workspace = true diff --git a/lez/sequencer/core/src/lib.rs b/lez/sequencer/core/src/lib.rs index ce0cadeb..60345357 100644 --- a/lez/sequencer/core/src/lib.rs +++ b/lez/sequencer/core/src/lib.rs @@ -744,6 +744,20 @@ mod tests { test_utils::sequencer_sign_key_for_testing, transaction::{LeeTransaction, clock_invocation}, }; + use key_protocol::key_management::KeyChain; + use lee::{ + Account, AccountId, Data, EphemeralPublicKey, PrivacyPreservingTransaction, + SharedSecretKey, V03State, + error::LeeError, + execute_and_prove, + privacy_preserving_transaction::{Message, circuit::ProgramWithDependencies}, + program::Program, + system_bridge_account_id, + }; + use lee_core::{ + Commitment, InputAccountIdentity, Nullifier, + account::{AccountWithMetadata, Nonce}, + }; use logos_blockchain_core::mantle::ops::channel::ChannelId; use mempool::MemPoolHandle; use storage::sequencer::sequencer_cells::PendingDepositEventRecord; @@ -1514,4 +1528,99 @@ mod tests { "Block production should abort when clock account data is corrupted" ); } + + #[test] + fn private_bridge_withdraw_invocation_is_dropped() { + let sender_keys = KeyChain::new_os_random(); + let sender_account_id = + AccountId::for_regular_private_account(&sender_keys.nullifier_public_key, 0); + let sender_private_account = Account { + program_owner: Program::authenticated_transfer_program().id(), + balance: 100, + nonce: Nonce(0xdead_beef), + data: Data::default(), + }; + + let mut state = V03State::new_with_genesis_accounts( + &[], + vec![( + Commitment::new(&sender_account_id, &sender_private_account), + Nullifier::for_account_initialization(&sender_account_id), + )], + 0, + ); + + let sender_commitment = Commitment::new(&sender_account_id, &sender_private_account); + let bridge_account_id = system_bridge_account_id(); + + let sender_pre = AccountWithMetadata::new( + sender_private_account, + true, + (&sender_keys.nullifier_public_key, 0), + ); + let bridge_pre = AccountWithMetadata::new( + state.get_account_by_id(bridge_account_id), + false, + bridge_account_id, + ); + + let shared_secret = SharedSecretKey::encapsulate(&sender_keys.viewing_public_key).0; + + let instruction = Program::serialize_instruction(bridge_core::Instruction::Withdraw { + amount: 1, + bedrock_account_pk: [0; 32], + }) + .unwrap(); + + let program_with_deps = ProgramWithDependencies::new( + Program::bridge(), + [( + Program::authenticated_transfer_program().id(), + Program::authenticated_transfer_program(), + )] + .into(), + ); + + let (output, proof) = execute_and_prove( + vec![sender_pre, bridge_pre], + instruction, + vec![ + InputAccountIdentity::PrivateAuthorizedUpdate { + ssk: shared_secret, + nsk: sender_keys.private_key_holder.nullifier_secret_key, + membership_proof: state + .get_proof_for_commitment(&sender_commitment) + .expect("sender commitment must be in state"), + identifier: 0, + }, + InputAccountIdentity::Public, + ], + &program_with_deps, + ) + .expect("Execution should succeed"); + + let message = Message::try_from_circuit_output( + vec![bridge_account_id], + vec![], + vec![( + sender_keys.nullifier_public_key, + sender_keys.viewing_public_key, + EphemeralPublicKey(vec![12_u8; 1088]), + )], + output, + ) + .expect("Message construction should succeed"); + let witness_set = + lee::privacy_preserving_transaction::WitnessSet::for_message(&message, proof, &[]); + let tx = LeeTransaction::PrivacyPreserving(PrivacyPreservingTransaction::new( + message, + witness_set, + )); + let res = tx.execute_check_on_state(&mut state, 1, 0); + + assert!( + matches!(res, Err(LeeError::InvalidInput(_))), + "Bridge withdraw invocation should be rejected in private execution" + ); + } } From 77f1fb3f2127d0d87fe17f27b57fff5fc1c480e6 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov Date: Tue, 2 Jun 2026 18:51:03 +0300 Subject: [PATCH 3/4] feat(wallet): add bridge withdraw command --- Cargo.lock | 5 + completions/bash/wallet | 20 +++- completions/zsh/_wallet | 33 ++++++ integration_tests/Cargo.toml | 8 +- integration_tests/tests/bridge.rs | 131 ++++++++++++++++++++-- lez/sequencer/core/src/block_publisher.rs | 18 ++- lez/wallet/Cargo.toml | 6 +- lez/wallet/src/cli/mod.rs | 8 +- lez/wallet/src/cli/programs/bridge.rs | 64 +++++++++++ lez/wallet/src/cli/programs/mod.rs | 1 + lez/wallet/src/program_facades/bridge.rs | 35 ++++++ lez/wallet/src/program_facades/mod.rs | 1 + 12 files changed, 309 insertions(+), 21 deletions(-) create mode 100644 lez/wallet/src/cli/programs/bridge.rs create mode 100644 lez/wallet/src/program_facades/bridge.rs diff --git a/Cargo.lock b/Cargo.lock index 7ccc172b..b072d916 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4140,6 +4140,7 @@ dependencies = [ "bytesize", "common", "faucet_core", + "futures", "hex", "indexer_ffi", "indexer_service_protocol", @@ -4150,6 +4151,9 @@ dependencies = [ "log", "logos-blockchain-core", "logos-blockchain-http-api-common", + "logos-blockchain-key-management-system-service", + "logos-blockchain-zone-sdk", + "num-bigint 0.4.6", "reqwest", "sequencer_core", "sequencer_service_rpc", @@ -10876,6 +10880,7 @@ dependencies = [ "base58", "bincode", "bip39", + "bridge_core", "clap", "common", "derive_more", diff --git a/completions/bash/wallet b/completions/bash/wallet index d714122c..4820d985 100644 --- a/completions/bash/wallet +++ b/completions/bash/wallet @@ -46,7 +46,7 @@ _wallet() { cword=$COMP_CWORD } - local commands="auth-transfer chain-info account pinata token amm ata vault check-health config restore-keys deploy-program help" + local commands="auth-transfer chain-info account pinata token amm ata vault bridge check-health config restore-keys deploy-program help" # Find the main command and subcommand by scanning words before the cursor. # Global options that take a value are skipped along with their argument. @@ -561,6 +561,24 @@ _wallet() { ;; # no specific completion *) COMPREPLY=($(compgen -W "--account-id --amount" -- "$cur")) + esac + ;; + esac + ;; + bridge) + case "$subcmd" in + "") + COMPREPLY=($(compgen -W "withdraw help" -- "$cur")) + ;; + withdraw) + case "$prev" in + --from) + _wallet_complete_account_id "$cur" + ;; + --amount | --bedrock-account-pk) + ;; # no specific completion + *) + COMPREPLY=($(compgen -W "--from --amount --bedrock-account-pk" -- "$cur")) ;; esac ;; diff --git a/completions/zsh/_wallet b/completions/zsh/_wallet index ea3de32f..c16b9ada 100644 --- a/completions/zsh/_wallet +++ b/completions/zsh/_wallet @@ -26,6 +26,7 @@ _wallet() { 'amm:AMM program interaction subcommand' 'ata:Associated Token Account program interaction subcommand' 'vault:Vault program interaction subcommand' + 'bridge:Bridge program interaction subcommand' 'check-health:Check the wallet can connect to the node and builtin local programs match the remote versions' 'config:Command to setup config, get and set config fields' 'restore-keys:Restoring keys from given password at given depth' @@ -59,6 +60,8 @@ _wallet() { ;; vault) _wallet_vault + bridge) + _wallet_bridge ;; config) _wallet_config @@ -481,6 +484,35 @@ _wallet_vault() { esac } +# bridge subcommand +_wallet_bridge() { + local -a subcommands + + _arguments -C \ + '1: :->subcommand' \ + '*:: :->args' + + case $state in + subcommand) + subcommands=( + 'withdraw:Withdraw native tokens through the bridge' + 'help:Print this message or the help of the given subcommand(s)' + ) + _describe -t subcommands 'bridge subcommands' subcommands + ;; + args) + case $line[1] in + withdraw) + _arguments \ + '--from[Sender account with privacy prefix]:from:_wallet_account_ids' \ + '--amount[Amount of native tokens to withdraw]:amount:' \ + '--bedrock-account-pk[Bedrock account public key (32-byte hex)]:bedrock_pk:' + ;; + esac + ;; + esac +} + # config subcommand _wallet_config() { local -a subcommands @@ -555,6 +587,7 @@ _wallet_help() { 'amm:AMM program interaction subcommand' 'ata:Associated Token Account program interaction subcommand' 'vault:Vault program interaction subcommand' + 'bridge:Bridge program interaction subcommand' 'check-health:Check the wallet can connect to the node' 'config:Command to setup config, get and set config fields' 'restore-keys:Restoring keys from given password at given depth' diff --git a/integration_tests/Cargo.toml b/integration_tests/Cargo.toml index b35f9deb..3b1731d8 100644 --- a/integration_tests/Cargo.toml +++ b/integration_tests/Cargo.toml @@ -29,13 +29,17 @@ wallet-ffi.workspace = true indexer_ffi.workspace = true indexer_service_protocol.workspace = true +logos-blockchain-http-api-common.workspace = true +logos-blockchain-core.workspace = true +logos-blockchain-zone-sdk.workspace = true +logos-blockchain-key-management-system-service.workspace = true anyhow.workspace = true log.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } +futures.workspace = true hex.workspace = true tempfile.workspace = true bytesize.workspace = true reqwest.workspace = true borsh.workspace = true -logos-blockchain-http-api-common.workspace = true -logos-blockchain-core.workspace = true +num-bigint.workspace = true diff --git a/integration_tests/tests/bridge.rs b/integration_tests/tests/bridge.rs index 048ad50c..6b9aba96 100644 --- a/integration_tests/tests/bridge.rs +++ b/integration_tests/tests/bridge.rs @@ -9,6 +9,7 @@ use std::{ops::Deref as _, time::Duration}; use anyhow::Context as _; use borsh::BorshSerialize; use common::transaction::LeeTransaction; +use futures::StreamExt as _; use integration_tests::{ TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, wait_for_indexer_to_catch_up, }; @@ -26,8 +27,14 @@ use logos_blockchain_http_api_common::bodies::{ transfer_funds::{WalletTransferFundsRequestBody, WalletTransferFundsResponseBody}, }, }; +use logos_blockchain_zone_sdk::{ + CommonHttpClient, ZoneMessage, adapter::NodeHttpClient, indexer::ZoneIndexer, +}; +use num_bigint::BigUint; use sequencer_service_rpc::RpcClient as _; +use test_fixtures::public_mention; use tokio::test; +use wallet::cli::{Command, execute_subcommand, programs::bridge::BridgeSubcommand}; const TIME_TO_FINALIZE_DEPOSIT_EVENT_ON_BEDROCK: Duration = Duration::from_mins(2); @@ -197,6 +204,7 @@ async fn private_bridge_deposit_invocation_is_dropped() -> anyhow::Result<()> { async fn submit_bedrock_deposit( bedrock_addr: std::net::SocketAddr, + bedrock_account_pk: &str, recipient_id: AccountId, amount: u64, ) -> anyhow::Result<()> { @@ -211,15 +219,13 @@ async fn submit_bedrock_deposit( .try_into() .context("Encoded metadata is too big")?; - let funding_key = "2e03b2eff5a45478e7e79668d2a146cf2c5c7925bce927f2b1c67f2ab4fc0d26"; - let channel_id = integration_tests::config::bedrock_channel_id(); let client = reqwest::Client::new(); let query_balance = || async { let balance_response = client .get(format!( - "http://{bedrock_addr}/wallet/{funding_key}/balance" + "http://{bedrock_addr}/wallet/{bedrock_account_pk}/balance" )) .send() .await @@ -236,13 +242,13 @@ async fn submit_bedrock_deposit( let mut balance = query_balance().await?; info!( - "Queried Bedrock balance for key {funding_key}: {:?}", + "Queried Bedrock balance for key {bedrock_account_pk}: {:?}", balance.balance ); if balance.balance < amount { anyhow::bail!( - "Bedrock wallet with key {funding_key} has insufficient balance {:?} for deposit amount {:?}", + "Bedrock wallet with key {bedrock_account_pk} has insufficient balance {:?} for deposit amount {:?}", balance.balance, amount ); @@ -368,11 +374,18 @@ async fn wait_for_vault_balance( })? } +/// Test deposit and withdraw round trip. +/// +/// Implemented as one test instead of two separate tests for deposit and withdraw, because the +/// withdraw test depends on the deposit to set up the necessary state (funds in vault) for testing +/// withdraw functionality. #[test] -async fn bedrock_deposit_mints_to_vault_then_claim_succeeds() -> anyhow::Result<()> { - let ctx = TestContext::new().await?; +async fn bedrock_deposit_claim_and_withdraw_round_trip_succeeds() -> anyhow::Result<()> { + let mut ctx = TestContext::new().await?; + let bedrock_account_pk = "2e03b2eff5a45478e7e79668d2a146cf2c5c7925bce927f2b1c67f2ab4fc0d26"; let recipient_id = ctx.existing_public_accounts()[0]; + let amount = 1_u64; let vault_program_id = Program::vault().id(); let recipient_vault_id = vault_core::compute_vault_account_id(vault_program_id, recipient_id); @@ -386,10 +399,17 @@ async fn bedrock_deposit_mints_to_vault_then_claim_succeeds() -> anyhow::Result< .await?; // Submit deposit to Bedrock - submit_bedrock_deposit(ctx.bedrock_addr(), recipient_id, 1).await?; + submit_bedrock_deposit(ctx.bedrock_addr(), bedrock_account_pk, recipient_id, amount) + .await + .context("Failed to submit Bedrock deposit for round-trip setup")?; // Wait for vault to receive the deposit (minted from bridge to vault) - wait_for_vault_balance(&ctx, recipient_vault_id, vault_balance_before + 1).await?; + wait_for_vault_balance( + &ctx, + recipient_vault_id, + vault_balance_before + u128::from(amount), + ) + .await?; // Now claim funds from vault back to recipient let nonces = ctx @@ -409,7 +429,9 @@ async fn bedrock_deposit_mints_to_vault_then_claim_succeeds() -> anyhow::Result< vault_program_id, vec![recipient_id, recipient_vault_id], nonces, - vault_core::Instruction::Claim { amount: 1 }, + vault_core::Instruction::Claim { + amount: u128::from(amount), + }, ) .context("Failed to build vault claim message")?; @@ -444,7 +466,7 @@ async fn bedrock_deposit_mints_to_vault_then_claim_succeeds() -> anyhow::Result< ); assert_eq!( recipient_balance_after_claim, - recipient_balance_before + 1, + recipient_balance_before + u128::from(amount), "Recipient balance should increase by claimed amount" ); @@ -469,5 +491,92 @@ async fn bedrock_deposit_mints_to_vault_then_claim_succeeds() -> anyhow::Result< ); } + // Withdraw back to Bedrock and wait for finalized withdraw event. + let sender_id = recipient_id; + + let observer = create_zone_indexer_observer(ctx.bedrock_addr())?; + let observe_fut = wait_for_finalized_withdraw_op(&observer, amount); + + let withdraw_fut = execute_subcommand( + ctx.wallet_mut(), + Command::Bridge(BridgeSubcommand::Withdraw { + from: public_mention(sender_id), + amount, + bedrock_account_pk: bedrock_account_pk.to_owned(), + }), + ); + + let (observe_result, withdraw_result) = tokio::join!(observe_fut, withdraw_fut); + + withdraw_result.context("Failed to execute wallet bridge withdraw command")?; + + observe_result + .context("Failed while waiting for finalized withdraw event from zone indexer")?; + Ok(()) } + +fn create_zone_indexer_observer( + bedrock_addr: std::net::SocketAddr, +) -> anyhow::Result> { + let bedrock_url = integration_tests::config::addr_to_url( + integration_tests::config::UrlProtocol::Http, + bedrock_addr, + ) + .context("Failed to convert Bedrock addr to URL for zone indexer observer")?; + + let node = NodeHttpClient::new(CommonHttpClient::new(None), bedrock_url); + + Ok(ZoneIndexer::new( + integration_tests::config::bedrock_channel_id(), + node, + )) +} + +async fn wait_for_finalized_withdraw_op( + observer: &ZoneIndexer, + expected_amount: u64, + receiver_pk: &str, +) -> anyhow::Result<()> { + let timeout = TIME_TO_FINALIZE_DEPOSIT_EVENT_ON_BEDROCK + + Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS); + + let bedrock_account_pk_bytes = hex::decode(receiver_pk) + .context("Failed to decode expected receiver public key from hex")?; + let expected_receiver_pk = + logos_blockchain_key_management_system_service::keys::ZkPublicKey::from( + BigUint::from_bytes_le(&bedrock_account_pk_bytes), + ); + + tokio::time::timeout(timeout, async { + loop { + let stream = observer + .follow() + .await + .context("Failed to read zone indexer message batch")?; + let mut stream = std::pin::pin!(stream); + + while let Some(message) = stream.next().await { + info!("Observed zone message {message:?}"); + + let ZoneMessage::Withdraw(withdraw) = message else { + continue; + }; + + let amount = withdraw.outputs.amount().context( + "Failed to compute finalized withdraw amount from zone indexer message", + )?; + + if amount == expected_amount { + return Ok(()); + } + } + + tokio::time::sleep(Duration::from_millis(500)).await; + } + }) + .await + .with_context(|| { + format!("Timed out waiting for finalized withdraw message with amount {expected_amount}") + })? +} diff --git a/lez/sequencer/core/src/block_publisher.rs b/lez/sequencer/core/src/block_publisher.rs index 6c7ab1cd..2cf2dc5b 100644 --- a/lez/sequencer/core/src/block_publisher.rs +++ b/lez/sequencer/core/src/block_publisher.rs @@ -2,8 +2,8 @@ use std::{pin::Pin, sync::Arc, time::Duration}; use anyhow::{Context as _, Result}; use common::block::Block; -use log::warn; -use logos_blockchain_core::mantle::{Note, ledger::Outputs}; +use log::{info, warn}; +use logos_blockchain_core::mantle::{Note, ledger::Outputs, ops::channel::inscribe::Inscription}; pub use logos_blockchain_key_management_system_service::keys::{Ed25519Key, ZkKey}; pub use logos_blockchain_zone_sdk::sequencer::SequencerCheckpoint; use logos_blockchain_zone_sdk::{ @@ -138,19 +138,23 @@ impl BlockPublisherTrait for ZoneSdkPublisher { bridge_withdrawals: Vec, ) -> Result<()> { let data = borsh::to_vec(block).context("Failed to serialize block")?; - let data_bounded = data + let data_bounded: Inscription = data .try_into() .context("Block data exceeds maximum allowed size")?; + let data_byte_size = data_bounded.len(); if bridge_withdrawals.is_empty() { self.handle .publish_message(data_bounded) .await .context("Failed to publish block")?; + + info!("Published block with the size of {data_byte_size} bytes"); + return Ok(()); } - let withdraws = bridge_withdrawals + let withdraws: Vec<_> = bridge_withdrawals .into_iter() .map(|withdrawal| { let recipient_pk = @@ -164,10 +168,16 @@ impl BlockPublisherTrait for ZoneSdkPublisher { }) .collect(); + let withdraw_count = withdraws.len(); self.handle .publish_atomic_withdraw(data_bounded, withdraws) .await .context("Failed to publish block with withdrawals")?; + + info!( + "Published block with the size of {data_byte_size} bytes and {withdraw_count} bridge withdrawals", + ); + Ok(()) } } diff --git a/lez/wallet/Cargo.toml b/lez/wallet/Cargo.toml index b6b8bdbd..e04b0d91 100644 --- a/lez/wallet/Cargo.toml +++ b/lez/wallet/Cargo.toml @@ -14,16 +14,18 @@ common.workspace = true authenticated_transfer_core.workspace = true key_protocol.workspace = true sequencer_service_rpc = { workspace = true, features = ["client"] } -token_core.workspace = true amm_core.workspace = true testnet_initial_state.workspace = true +token_core.workspace = true ata_core.workspace = true vault_core.workspace = true +bridge_core.workspace = true +keycard_wallet.workspace = true + bip39.workspace = true pyo3.workspace = true rpassword = "7" zeroize.workspace = true -keycard_wallet.workspace = true anyhow.workspace = true thiserror.workspace = true diff --git a/lez/wallet/src/cli/mod.rs b/lez/wallet/src/cli/mod.rs index c30b8a56..8a91d3ae 100644 --- a/lez/wallet/src/cli/mod.rs +++ b/lez/wallet/src/cli/mod.rs @@ -20,7 +20,7 @@ use crate::{ group::GroupSubcommand, keycard::KeycardSubcommand, programs::{ - amm::AmmProgramAgnosticSubcommand, ata::AtaSubcommand, + amm::AmmProgramAgnosticSubcommand, ata::AtaSubcommand, bridge::BridgeSubcommand, native_token_transfer::AuthTransferSubcommand, pinata::PinataProgramAgnosticSubcommand, token::TokenProgramAgnosticSubcommand, vault::VaultSubcommand, }, @@ -68,6 +68,9 @@ pub enum Command { /// Vault program interaction subcommand. #[command(subcommand)] Vault(VaultSubcommand), + /// Bridge program interaction subcommand. + #[command(subcommand)] + Bridge(BridgeSubcommand), /// Group key management (create, invite, join, derive keys). #[command(subcommand)] Group(GroupSubcommand), @@ -258,6 +261,9 @@ pub async fn execute_subcommand( Command::AMM(amm_subcommand) => amm_subcommand.handle_subcommand(wallet_core).await?, Command::Ata(ata_subcommand) => ata_subcommand.handle_subcommand(wallet_core).await?, Command::Vault(vault_subcommand) => vault_subcommand.handle_subcommand(wallet_core).await?, + Command::Bridge(bridge_subcommand) => { + bridge_subcommand.handle_subcommand(wallet_core).await? + } Command::Group(group_subcommand) => group_subcommand.handle_subcommand(wallet_core).await?, Command::Keycard(keycard_subcommand) => { keycard_subcommand.handle_subcommand(wallet_core).await? diff --git a/lez/wallet/src/cli/programs/bridge.rs b/lez/wallet/src/cli/programs/bridge.rs new file mode 100644 index 00000000..8d8cf5ee --- /dev/null +++ b/lez/wallet/src/cli/programs/bridge.rs @@ -0,0 +1,64 @@ +use anyhow::{Context as _, Result}; +use clap::Subcommand; + +use crate::{ + WalletCore, + account::AccountIdWithPrivacy, + cli::{CliAccountMention, SubcommandReturnValue, WalletSubcommand}, + program_facades::bridge::Bridge, +}; + +/// Represents generic CLI subcommand for a wallet working with bridge program. +#[derive(Subcommand, Debug, Clone)] +pub enum BridgeSubcommand { + /// Withdraw native tokens from a public account to Bedrock through the bridge. + Withdraw { + /// Sender account mention - account id with privacy prefix or a label. + #[arg(long)] + from: CliAccountMention, + /// Amount of native tokens to withdraw. + #[arg(long)] + amount: u64, + /// Bedrock account public key encoded as a 32-byte hex string. + #[arg(long)] + bedrock_account_pk: String, + }, +} + +impl WalletSubcommand for BridgeSubcommand { + async fn handle_subcommand( + self, + wallet_core: &mut WalletCore, + ) -> Result { + match self { + Self::Withdraw { + from, + amount, + bedrock_account_pk, + } => { + let from = from.resolve(wallet_core.storage())?; + let AccountIdWithPrivacy::Public(sender_account_id) = from else { + anyhow::bail!("Bridge withdraw supports only public sender accounts"); + }; + + let bedrock_account_pk = parse_bedrock_account_pk(&bedrock_account_pk)?; + + let tx_hash = Bridge(wallet_core) + .send_withdraw(sender_account_id, amount, bedrock_account_pk) + .await?; + + println!("Transaction hash is {tx_hash}"); + + Ok(SubcommandReturnValue::Empty) + } + } + } +} + +fn parse_bedrock_account_pk(raw: &str) -> Result<[u8; 32]> { + let raw = raw.strip_prefix("0x").unwrap_or(raw); + let mut bedrock_account_pk = [0_u8; 32]; + hex::decode_to_slice(raw, &mut bedrock_account_pk) + .context("Invalid `bedrock-account-pk`: expected hex string of 32 bytes")?; + Ok(bedrock_account_pk) +} diff --git a/lez/wallet/src/cli/programs/mod.rs b/lez/wallet/src/cli/programs/mod.rs index 32133606..bc8abaf2 100644 --- a/lez/wallet/src/cli/programs/mod.rs +++ b/lez/wallet/src/cli/programs/mod.rs @@ -1,5 +1,6 @@ pub mod amm; pub mod ata; +pub mod bridge; pub mod native_token_transfer; pub mod pinata; pub mod token; diff --git a/lez/wallet/src/program_facades/bridge.rs b/lez/wallet/src/program_facades/bridge.rs new file mode 100644 index 00000000..60ad9483 --- /dev/null +++ b/lez/wallet/src/program_facades/bridge.rs @@ -0,0 +1,35 @@ +use common::HashType; +use lee::{AccountId, program::Program}; + +use crate::{AccountIdentity, ExecutionFailureKind, WalletCore}; + +pub struct Bridge<'wallet>(pub &'wallet WalletCore); + +impl Bridge<'_> { + pub async fn send_withdraw( + &self, + sender_account_id: AccountId, + amount: u64, + bedrock_account_pk: [u8; 32], + ) -> Result { + let program = Program::bridge(); + let bridge_account_id = lee::system_bridge_account_id(); + let instruction = bridge_core::Instruction::Withdraw { + amount, + bedrock_account_pk, + }; + let instruction_data = + Program::serialize_instruction(instruction).expect("Instruction should serialize"); + + self.0 + .send_pub_tx( + vec![ + AccountIdentity::Public(sender_account_id), + AccountIdentity::PublicNoSign(bridge_account_id), + ], + instruction_data, + &program.into(), + ) + .await + } +} diff --git a/lez/wallet/src/program_facades/mod.rs b/lez/wallet/src/program_facades/mod.rs index cfeb54ad..a634e4ca 100644 --- a/lez/wallet/src/program_facades/mod.rs +++ b/lez/wallet/src/program_facades/mod.rs @@ -3,6 +3,7 @@ pub mod amm; pub mod ata; +pub mod bridge; pub mod native_token_transfer; pub mod pinata; pub mod token; From e5ca40c0f9aab8f72d6d43c3eae55cd0de78a1f0 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov Date: Wed, 3 Jun 2026 23:50:44 +0300 Subject: [PATCH 4/4] feat: add bedrock withdraw events validation --- artifacts/program_methods/amm.bin | Bin 532980 -> 532972 bytes .../associated_token_account.bin | Bin 451040 -> 451032 bytes .../authenticated_transfer.bin | Bin 405140 -> 405132 bytes artifacts/program_methods/bridge.bin | Bin 425236 -> 428968 bytes artifacts/program_methods/clock.bin | Bin 403528 -> 403520 bytes artifacts/program_methods/faucet.bin | Bin 421604 -> 421596 bytes artifacts/program_methods/pinata.bin | Bin 394012 -> 394004 bytes artifacts/program_methods/pinata_token.bin | Bin 399920 -> 399912 bytes .../privacy_preserving_circuit.bin | Bin 594072 -> 594060 bytes artifacts/program_methods/token.bin | Bin 483024 -> 483016 bytes artifacts/program_methods/vault.bin | Bin 413560 -> 413548 bytes .../auth_asserting_noop.bin | Bin 384712 -> 384704 bytes .../auth_transfer_proxy.bin | Bin 403592 -> 403584 bytes artifacts/test_program_methods/burner.bin | Bin 386768 -> 386760 bytes .../test_program_methods/chain_caller.bin | Bin 405484 -> 405476 bytes .../test_program_methods/changer_claimer.bin | Bin 389228 -> 389220 bytes artifacts/test_program_methods/claimer.bin | Bin 386116 -> 386108 bytes .../clock_chain_caller.bin | Bin 392636 -> 392628 bytes .../test_program_methods/data_changer.bin | Bin 385240 -> 385232 bytes .../test_program_methods/extra_output.bin | Bin 385652 -> 385644 bytes .../faucet_chain_caller.bin | Bin 399016 -> 399008 bytes .../flash_swap_callback.bin | Bin 395020 -> 395012 bytes .../flash_swap_initiator.bin | Bin 411212 -> 411204 bytes .../malicious_authorization_changer.bin | Bin 392204 -> 392196 bytes .../malicious_caller_program_id.bin | Bin 384244 -> 384236 bytes .../malicious_injector.bin | Bin 403824 -> 403832 bytes .../malicious_launderer.bin | Bin 389588 -> 389580 bytes .../malicious_self_program_id.bin | Bin 384212 -> 384204 bytes artifacts/test_program_methods/minter.bin | Bin 386464 -> 386456 bytes .../test_program_methods/missing_output.bin | Bin 386240 -> 386232 bytes .../modified_transfer.bin | Bin 385716 -> 385708 bytes .../test_program_methods/nonce_changer.bin | Bin 386796 -> 386788 bytes artifacts/test_program_methods/noop.bin | Bin 384256 -> 384248 bytes .../test_program_methods/pda_claimer.bin | Bin 391240 -> 391232 bytes .../test_program_methods/pda_spend_proxy.bin | Bin 399364 -> 399356 bytes .../test_program_methods/pinata_cooldown.bin | Bin 405112 -> 405104 bytes .../private_pda_delegator.bin | Bin 395416 -> 395408 bytes .../program_owner_changer.bin | Bin 386160 -> 386152 bytes .../simple_balance_transfer.bin | Bin 390836 -> 390828 bytes .../time_locked_transfer.bin | Bin 407748 -> 407740 bytes .../test_program_methods/two_pda_claimer.bin | Bin 391952 -> 391944 bytes .../test_program_methods/validity_window.bin | Bin 387564 -> 387556 bytes .../validity_window_chain_caller.bin | Bin 410132 -> 410124 bytes integration_tests/tests/bridge.rs | 18 +- lez/common/src/transaction.rs | 4 +- lez/sequencer/core/src/block_publisher.rs | 58 ++- lez/sequencer/core/src/block_store.rs | 52 +-- lez/sequencer/core/src/lib.rs | 349 +++++++++++------- lez/sequencer/core/src/mock.rs | 7 +- lez/storage/src/sequencer/mod.rs | 87 ++++- lez/storage/src/sequencer/sequencer_cells.rs | 48 ++- 51 files changed, 411 insertions(+), 212 deletions(-) diff --git a/artifacts/program_methods/amm.bin b/artifacts/program_methods/amm.bin index 317fd705714b54630d14f97b62845b0b570ee7ad..e8eab0e7103b2e778ea45dd2622670f8bec2d816 100644 GIT binary patch delta 8761 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 delta 8776 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 diff --git a/artifacts/program_methods/associated_token_account.bin b/artifacts/program_methods/associated_token_account.bin index dd841336019502fbeb92bad17a3121d75f30294f..ed23efb4ea3b225dad027c385bf424b7062ccc0e 100644 GIT binary patch delta 8848 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 delta 8870 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 delta 8463 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 diff --git a/artifacts/program_methods/bridge.bin b/artifacts/program_methods/bridge.bin index 69c18210478d630e8ebfc82738c90c92e74fd404..c55b6f9444f0e38aa43761831ebe005443e24765 100644 GIT binary patch delta 117028 zcmd44d3Y4X7B}2gJxgX1ATU`Wz+^fbA;ho-5aI-~0bvIPE+R3kihu~Xp_wpASVS&Z zKyeiXlvPl{1O^c`(IhMvy+KjAiW(Lb6%iB=F~aw&uAVHY_x;}gUY@6|t~#eqovlut zs_KcWu19X;tye^;N;AvK_K|_tPB@irilXEMT2}VYOPldDRm5XPlM<{b1jX#tRGGcm zr9TV)r6}StHG-c{R+aNZG(0O$_n_TVN?Vg$EA@0^(*llAPZ$a>Ycs{h%57a}c^h`w z_E}iTM2ERhVdg^Ou%r_{Oi{k|c#g2M_R-cF@m_v~xdYp_8LcU*d-Y{z4ptm?JjEu3 z*9y2Yh&>Y6SK_*_umgc@t-(~#c$(D)wxh~`XM%=MC4&tM>SXok9ctLc=CRg2F2!Lk z{*vtqN~TH_s}1Ts!c(9@nlmq$F3!66)z7IqhWV6luS;PimfBPwdRPyhW9Hea!}6e+ z&lbZd^Bs0YN!lWPE5UGsK z2<|K2m0fI?zumKwoeS=6;BR9wEe#ycCN{0*jbzJR&>&@StyzlF%wf(@e9$1Ye3x!u z0W$?F+%2@`xs$DG<)Q%Xlf}taiJ}(ZNX``a!=U*Gsl;^;a=<|}=OzUf{IMzBiD+B@ zN7J_1XuF61^A*y8ZE|#>?iuWaqX#XY#)3ooQO_hcDx?Qh^4PMF-qd|JJA_7MEDH*~ zt_!gHe+U3rg8)&iTbM4u7+EX`(*@WTmYn7nV7Fg@mJI^5ztEJ~zYriK{64DmXP)pZ z>PcgV!h6&5-pmw{McqAEZbWbD>B1JHrX-ivL@c*Z%NRDX{kSm87)-fHsc8}+HCMin z)wG`=FjAa%iej-7ERSJ3ovwO(p=sc!=vH}H@$|iO@9MY2C%xn0eSkfQCb&W6itdEiyB#6mPJI24(lU}iLxk?#Wq4&=5%}KghCdsco`|;fyPLMnM%z8Rnznh+*8a7oZ7T%5 zSDLnM5cGC7X&YqTB?#_l(r7Lh1Yd62RwD>*YuZ*T2yXSau^DmO<=pjr#iHUP+sKgg zg~Ln`sfo#9QA}Khw3BRDd^=j+h0TtCzzEn&+1dDBvWxN`hdCPP<%o(lMRqBFzqDt< zB_a{ruYz6x=vf?QgiW2M@(RmH95JqXs=>}A0TQu7dS3bQRI}m%yOpVW)NQ~M9z9F( zkUzIO5$i!-_uTTD(u;|A6C*bLz(yq*u?gXMZ4y=wJyd_q4kQhbIA{;*bR(`L|5kox zDdiS9Rs)QsB=;WYcEJ)?{{%8OVPg$&KKL_EN+VW1tAwZsXQnglY}a7POKiq-5d~UI zdNa*6yqV_AYo;YX80avWmHZORc*hcp!ivlwP-ufnDZhC0CgNwInptSer)CQ?SJ;?o zw^i6fUqCnLGkJo;dr*oh;Cq2;H@0eZf zf6DIdf61;6A%Wf@EA8sgjdt(Q-FEMQ3OfrP7ZR)v9B%gx%(JV59<+N0724UZE*+cM zy*bf#Z@j?HY|0jF&0z)LpoKw@XkuJJ8x-k}?9rQZ!C>cHJ-g{+>GUM*sF z2WWAp0k=Mz)gUg)Yw9kH@3p0#u2kO zF5Rrg7pmU)3RO)YCT~JIa8FS!0W=bcs>WAPZ#>F`bXAMlXwl+!TfnwOOFU-Ll1`bl z-zxjb17g-@0tPVbswE8%fFW#}^O9Y29kas_b|}{lxE*%4=LbZF zYDt7bXYl_*73qw$y+_OeLZ#(N4#Yc=ih&t6>xIw|HL)={ZN4zK8|I9l69f710_04bd|QYk%snW+6&QiNn$ zdKMi9?nXc8bv;{{l2kBCDLpq!(UNv6TJkA4Nd-mlq*_c%Rnrx72~*`5rpj(il~WXO zOpT3VN?@7^kEow!$S-8RFFn2+Wc-=Xhd)(I>c_)9zL}Fv$j@GI0 zmj<_P+!OQR;`-}+SQzb9@RV68we5BLur{;e;+y%WySEq4o4R`OVuyM4;;wtPQ+D@c zC7(_ScPzCisr7qTEH`!!mR^4<?f?;mmg$q#jqQ7*v%qJ$W61T zmjGvjzV7c;H=E2LXjZornY~*o&0VcahzU)Wi-Mz6?57{|vMSgBcCdMj@DW3_m@+==6zLlw z(#U!O#dd>$do4@p71~B8=2=q@uOGm@noZo(oej@*Ha2O?wgfM_pH$a&hn@+sBh2)H7-tXSbm2B$Zw6LU=L`&YSu#cB1YFGtQty4q| z-^kt^+(l-i%I$ntGEHGg`|K=vNWg$}A`d7^zC;dzDYX$(3Je#U#k7IxFpXj`wRA2Z z0JxB6EbfQ$Bg|NZz(H&wQR6CD!4TIS|MSd)5bhRd9_6!S+FD&8W}lwf>w+uOS?$!2 z@p=l1`JlOU#fftrJ%BrG{vcld85Bq4{F$fZx7vd|DP74Aifxu3Vh)h@t6sq@ZYbU) z1G%2cDmXdn8oltA~Fsjj#|o;mn_E>&3aaO$$A-i zTqS#_Z{#$wN6-QgcML_z!AjOhC0aO4g}nwOl_q*hFy_rHR8lQiaV+zd{NO4RyArCL zS!(`S_O+~HSaq8+>YgGPjqzq}RMhO1iZ^?=0u3u{O^H(a%{L0;R#N)SRfLqUF0tAn zne|>7nTWw5b$x_T0+@SfTk9J*99d#p&n6A+Wz{FIvYl-j8g0D)z>W@`YAdBi4{7L$&U3ZKFx zV1X4OKAn@p2jm2?SEmLk9v>zPTWVj=Vup9HuFyTZI~z58xTdG2=RZwB3ize zf5cL9Vp#CV&~O=4ATMI9(4L%$fh@OIpMvmTh%!}CuOY(U(2`ri_JxX;2(!fKdnJWm z)KBYv)Dl)Isb!e?rplc<1MmZf1$!bzKTxzdiZh^yjj%PCYXU1bIf{$^2Bs9Kj^fI{ z0lEn?4D#1RJvTAn-@wZMz<_@PQ|eezC15KJMq4+QLM(iRhD3^kZLo!~n9m~nYZMxK zZ+&>FuBlR^JfOyz6*V>s&Wl-AVusWftRNOeYSjCU8f#X<`zu1bsciPhw*B?^QT3X` zT1c6?K}mfZ+H9Wojt?bU{=u7$7Bz|wIIOtpfShqx-%8yFoPb07eJI)DX>YTdksTbh z!XobZUW71MO%>}h^BjvTC>3M%|2bSQy)EU+Uj3lMA`}V!iox3%A;Wta5;o;=hh^9; zFtxt}vPeFPH->*C@V%2T&P^?@CFC_jKf;aO$Hh7X9u&Zc&co4OVXpU{7q8w}vnd~o zuo|0*1CC%tvZSul(UO+8wMrKM#e#ZAw$Z(_8fP7F91F-7RlRJ{vgh^XFJ#Ln#E1xALJUhEx4sPYbTKAA30FFd_iz>*jiafhQj%U4V$M`$<2 z5i(clYTM*C9Q+lwq{xc(2|j|E4Za#V`VKbnj&SncGY?0xRd*!Q>RGI4xvL=ab$J4w zz1v}#2r=MAx|KXxjWr~-8oL)e5n@>4reX2YhBogF+4gmru$;u}|A%3bHyoA}qfM=o zZJS?rbZsDbT{dR=92Sp(=>1K$RqYcQxmM)R#ILuF5v71D=3;In2X=V^YU%|cw`6Duq zb81Y5;$`pmyDLZfl}xqtsJKGUPwuO4M}!qA8Q0sD=|+2{E}Gc+Nc^eDo?;4^I9)Pf z{x8AY5z9yU>dPYS#T;qQu*?`)WqT+s&b!$Ly?9iyQfjUWq_rEd7bQymGBc7PtiZ{7 z6vY90I`As=yh^4e@EbOP z&`hGpM=Fp2AwNebarn)$K?tU_R1=Xb75G)sYFwzgd5PlPd{|Mp*ob$_0Hntok>Np# z1W1F8lfw*^>RN)fEQ)cf=6+E~lOHv%g&K=~u>+7qA>ofZOw@Rr;*B4ms0pB(a2Ogp zZt}(<@o`~A)?mJb5Ot82xCuKl9AG3@QtTYSKn57Vs^>Hz%{&WrUIr5;)qxl!xBX?X zI~Kk;WMK)TAmt=TX@c#~^4F4Sbb*5qi-?w~GU?pplNW6-85eCkn10cAN#!Yeq)eAd zXV#+*k<-BGq<6Y|!{4blhN$A`SB)WfPluYzv6(<_8&e3gr7JvG&r3eiV$xyrLTGAb z2Py|HJ|qV&IcN<0J~OWnrw&vOj9@x(PeOs;^}XA(hJAIJWja_I zri1cBzQv6D5f5=(Z6kJd4O1b=BBuguSMM+wRBSPfi?2r-Wyu9fzGY7U#0nEGed{zZ zI?U5OF%X{k)Z;kCn&*(>!p##f1rj@BSA2_OxOET1=@%TsG7p{!cgLPajZ24$8az{t zMG{f(;vsu*x&`lug?GeNDC}(i(SexIniC%As-P?*L*u1QEUX{Y*IN$RpPq1q{M957 zGW!#J5hnap8(DE@6E++9{w)SA_#2Csw}k7RLnau8OfU?YV3?K=9j?W74u`(Nak3t+ zIrG91c0)ycL+A)$rt}ajmUb8_5MjcO*rxDuacb=LLd+Vy>TQ+5ZCnl8lI6@feCU9kJvGafzm_#N0l7&1fgIu{5(*^ zIA%tuSyh&dn5X79x0}SaCcoAG!R92iHN!#^f)X6# zP%f?z99INsF&n|q?hu5M5QLHt!5~x*={MT{o-xlq#2EDs(r!;{&{MHJlGqUKav){)$za!F`!|vZD)}8(U#Q zx6)!NT4`~|TA{CSXfQ%Ty>aQGTEeMTTH>Wv5W)dpbExr!p@@q(oi4-abR|xwkHcRO zx?+in`Gz@q7AMt!Cjp*ZX=fN0W8y{v3$Zl+4_ZQoO-o#bYlj$HftK72C&F`a6*Q`u z7Bi`t*I5y+#uSFb)ZuCe5)M;`!9T*hiRoc#M-t}kSP=@xj}S2zCWj9e25LAO$1xiQ ztPsvy@0)N91bWP89KFd|RrSFwVY1)^Gw%{{(jTBdhqiIqk&erbLR^4=a3TmNRoMTU zz@lTaKM6Df{HJOMFaRGF=T*!Ui&bMKXha8UNu2}#OrsyR4c3DO6MiD)A40-9s2fWW zW>dm3CG{#c=a#Gxk$0zNrBUyE{Y>NPh>LJ^Ja=?|MfNt8Q`61|;=aY)GG>a${XSgw5Cx8SdY_7n`sUVzVo= z&rG&%!)%t(_g`&v7TpiSyI^Qz_b0`i&rUq{F7(p!x!rty5q*J?N&&jf&Ck znS@P_$l1guM`5dDA)H$YXZn6GP6!SKybfjOB97*2i7Rupgy_MDql2}W^udUugEeQ~ zV8qcufaA*y5@ZB|kr*$;J2p05%-Rryoe(viIK1)c4mF|B;Z3M;z%LO85fhVPMdvZ< z?Lb1|pP}B^!caA?B2;so!b*BcB$e3dwnP>~!qoWmFmHTen3}+D+!a%B3gP1toS5Kp zZlg(!L7c+{gqnyL=fWjjOa-o4jv;Uoe1Af4C#0D8Y!PJ3C#bQcCH%N0m}?2zQ%Kw|S+s%}V#RjSs;9fgL;$iq zf9ZB3|E{jX!1xR!-DF(U`Vc}QF>s_Kth?d}ou_m)SGl{EY*wVlSgv6Cj^z5Oif6fF zZV1w2lhX@9)Fe#0m_m~S$FBLSHZ4#)nsDmSAp<8IMevYHkuS7{?eNW#F5xh5M-!5i z3|zXCAcv(qK(@Pw<|{$e5!wewLJO4A;>~Wc><-dYD-(J^71w%m*X4u_iPG}t^% zi>XM1&C`I;%NtwK3-I26_l7;wV9zwzGYuw6!$6%uI1N7G&jGJug&*%5rD4~z>M{~g z_ziYEx>npj;;em`$P^?@X@PW4;RQO-Bl5ptOl*^Eg*`#^wnh^5#2JniYHTE>J5|_F zOF(9jh{w6nt+`gZwHTC6)LnRDaPc3P-VDdlZf1e`usrBNK%S6ZMv8cw@QH#ZPVvH~ z3BoCw`b0&CMm}-d-}prG|G_8D>OQe_2flPkZ^O*>G==>=iBM%@rw~5TL5s<2qs2wH zL3nTdmp&2mV6+yu(Wxcuc4~2xN=R$m205|4u~t+jZpLMAlN+!b`Js^SGMV9z|DZ0p?(o7pmMlSAzKZ5OXvhFN8%y1Sty$<6ejbw2P z!~$1F!!Iypk#fw|GruskDp2uOwNcdSj*7SXc17%bwSei?mjbq1G}{}Nmu!bEYSkd% z`~x`mE3Eb(;RTI!RURxn%L^4CR6+bgiy99VByUX6oY5UM*G8PbLi~7$p8)X_Ab!HJ zep=$Ge(=2h_~f8JuGIT!aTWdGoo;xi8##hoOTHvL6JClZW_UV06Z2N+zoG-P+zaCi zUFojrUX$uyx6HVCMZzlQk7r+gb91toB0hOCC^9W-OnS4HoYz5fu1wTic^#o=ovyr?2CK2@Nb3rbW>u(IDNLI4R4{^c zuogpFYH=+Q;E{O57Y3>c6@i+wvja;P(z-mPbq^xolSt5y1pP=&u1rYjkoF~4Amyt- zye0+6cGFvHPLVC2LZ*BP88iuHSSz8bFsMgP-1Ja3=xaCq4sOcJt49{n&5X~L+%v&Za1=O zvEO!^WU}C?b%--|v(mz-eYFHwk=_Ls{GW+rW5SE6aVrtU*w0tBt*0S0-eeAoU_m-dX0qFXMj9Bwy!JCv zZo6(s6U_EaXj`Cv^1CP)oiLO9@z#&*`AwJ#nxKXz-gnqcn3qA&Kwi4$icZ&JR=Op< z%=Sk1+|tkl=C>QkGpwd-*>ltpgrh{04SfsIw-DM}>CTm%i(57Ad@zKWQyO(HKLk_i zXV>D4-eJMb@MI*q=FC&@8^gTj4Q#_b9TBUJ-qX>hNhS`uUZ40BZ5c1ASH~HwC6=zc z_Z`}Dj?w&}f&6&sjLAO`(y?^R)E0ycWYebIgUX?4)nP38XoJ)!Ny<8g1wZzn)rcvjiyzA-qz|ikJRJW$_xN3;Z>f91{nU1c zft|+6p5!Exx6ve^Y~2Im;HY=>nwZaEOI%EgwTd@Zw>Oj59_ArdEhfN*dF zz6NmBfDbch3}q(@7D6AXdLo@QqI8nyDYfN4BCNEnH}Lu= z%eKsA`c;A6SM4O*CKosKeXpZzGcQHXVD$AS%C_RCN^}2tiduChsu=6`%)Hz1j#=}D zLoFmsooFzfx!(sdS;;5+Qx5?ikh9N+k}dA}COh%WVbLFbPO@#Rt)yi>&5p9&joUlw zW0+4PYc}p0-K$ddepRcGD^d}J>+45XMG8Jxapqcmhh?rJh7kJIl6GaU!p$ng}fjFUGmEr!_7IEJnYr?Ck1C{kS3xK`?KO8;o?-z|GuJTC`>~A>-L+ z`~h;A<*dy!l=UjxwRW`>u&S&y_g`NSL)zUe<+(4!Wwpb0_@AXA>)s;5t8m%3kezt` z{dnD5vi4wY!GZq<9BSy(th*teFIBqoUUu|_NIBAIA3Og-C*fuIX}|&IT(5Hgb-%?H zum7Wd>Mz?6N!#nhODefr-_Ea4{X1HtomIZL-QcpRt=7J@=dapJAK5h8FILkI*EauU z2X-10SA9SCw&(5A_(yOL#okE^ zXE(OB5dNe4n8*y0aQbT@;-e01ez8GLsKCJ?@lUYRtmpQs7CH&@r^aOagay6aeWc#D z`b`J!?)3a=w$PLN(frnadtU(z%Nc&Q&`3<(#ViQSx~30t?x>q$$jD#(1?w(}$8RA5!ONk>U?4H>3)}ZW>|bcNta=-DD@q1`Aa{ zL?UtSR3*+Kh4tBUOqUYBg(?l%JAevA_(q^a%(5FcZ_eiK>np=^mW}P(S5e=|^Tz+^ zRQqN_rf6RQb~I@t!j_aVk?cQe!?GB z%%$57=98AuhU`wsW_Ds})Zs|o7vPK+O8fk~x7l8JG5iuH4k_HkJT;->0L`a6kr{_T zd#;N$O-tBwo$aiNw{=XFA){;Q$(r?)bY}}b(vVVY_-LbCYcmd%<{V#LuZGgIAEP4A z&6YFIr#v)yg* zJduq#vz0vX%-Qy24s)JuAL|D^A{JPwB;|R>BJ8b2daNs8{yaA6Y&@C7mKpzzU`Nlk zAbITM*{OXWby#X4O#P+;8H6G}EG055#6Bjn41IIEK@X$}xG^?Kx_hTE&)0X5$65K; zTIdtZTx&LVW~YVEc{iJXXV<>&?m&Rl682u#7ypmNBo1B7+}}(k)7iFf9@X>~vsWCE z8>ah!fqRG5&;2*ESjM-}ZFIan#mqd>z*CN-g0dQC`JH*b?R&dE%9iUgCxhwzBbjRh z4X)nP(~SCD4WGK*h5j*CaQSVz2;*A9mg~%YuDjLWcfq;NgYb@TU)P3r)$_JJ$o2lf zPMWG&;4v&t@qHo;ZdujU@`>ODr{TCU%?gE-SgLyHux_cJLTYRFbL`r=!B!oA?-u6% zKD0%DL9_p2N#p7!Hv7A_c1dp&@;x^6yKwgEcY!Uk1exlmB$(i|$^Qbjj#gbo46A_@$Ge zj0=-@*(1NaFW)UkSnlN~th%|Z+gQ!z(XwyVyDaHS+xB~aZ>}m76GUF@mUqBGmPs;W zsbtfx7~GarvTb+=FAlSL9XogBjjlT5nQutkta40Nd}AsmRQY$(Rf}JiIxg8R?VSBO zJAT!#q5r=A>sUkhsw0N*$Jn&rI!J}ow|&Sq{FW|xHXml^etSaG-Kpd&F)jSxwDDju zt|#0W?<=lH}60b$L{dRb2b}&B^r( z#hw{tB{7uyEjLl}N5{!RbLNXUNTY_d-)V8Uc*AELD!!ocZXRGvq>^*KB$bRMh73RO zWhT;|4BVYB@fnl9U72RI|IW-C@ZBQ5QR~0?A6VUunMD zV3Micu8(gqVM7w&5Z@YI)DP|+(SL9(VK`wD-yz{cnQ|RA&*0%FJ~4#U@9_DF5OPJ@ zpt_~R^xWOl253JYN@BzBgtwPuRi;jbey!Gv#*}vW62iz}+Fk_Vs?6WTVT0H$Z!f#9S+-Mtt~Kds!{;gpAt5|hBZ0OC6-?AfcX8y- zmMr;Qty+Q~@T4d&wJ_D?2d{1?EaHvD@x{5-in`g1d6g;h6tid-OEPXZsdsZR?K%ZF z{_QMOUqE9^aAaH!*9=uyk5Jr(eXNuU_)<%2Eolqx75D0Rnrn+JWA@S@(a{@M{ks}h z@;i6NknJsm`IF7pwInkpTJi7vL=5TGUaYA*w_Mj=-FqF=oM@X4D`zM^C)a~vac7OmxXv^jMx{_bX zoqSg}Qb0!gQo0*+R?Rfy`^zgg*}N+)m@P%Y&u+qvK4bX0R7f#~pG1mXKU?ckNrlL= zyqT7p`9%oy_;67R=y8+R^d$FSx}@|XBgt4^JBGAxL+kCE7dctxJ9^=IEYJ+FomUtDWxS>l~Ms;XvN192jOU+>Uf&#pe$oPrQ#wIPD~t& zif(E#2XPSasS@z52cBJ3bdx9bC7p!hiQgvq^dL|@olomaWX8Rv>L%X@j61*&{$#~X zZ)^$ps>bgUs>F|oErL&-ulPmaHH&u5I;fOZ?Nv&@27Ha#I1n`t<}qm`TBL`FF*kW` z8jN)xKbl4cgpWh?T{^HbHA&AYzV+#=(V&^Wq&vuagxt?Bx}pBrd{{d9mOSL^*^hi| z(-j_TCOjmUq>G9-tM~>VpGzWJh-6LuB&YFa zpcM(U0XO;4T#`*5<{^X0cKz2C)y0@Lh`U9bmHZG(fOOQVC;5rNWVa?_z?Ld(4Z;*{ z%g0K7hJ}i_fQ$)OX~p>R4w1_}7eS|d2>F~8@O4AU-F_cgGYo3@S|n^$9-c6atOxwi zFfzElEowN~(@~6oHNl}@ow#xHCDshjSe&*|pX^+yIalLbvsl8MYufSFBgn6U0url* zJYpny%Q&i4_{ouEa+`Rl)_U+;W-Yp&ItK3nIhDS1;9>EhrF{G-l9{S^MFy##7@6wu zarf_tc+K$#C9eBo^<3~z z0K-zv_TEX5-st2rUl2<|RDdDC3w+ra(pJP&wYo}QJaPd}l147@ZKf2Pz$lA`YjUyFJWy{*Z5B-C5Fa~*rU;77XYgAt4HFpsw z?=v2u0iwgyukrHne%#{S{Ni}B(SYpZYwsrQBS)k{wMe5YnWYA*#k~ep3`u;v=58|F z|B;ao>|p+sI;>6uVNn_HGl2|mulKfmF3w2}viVhT%O zO_6!~Q0bwT3cg@E$+XHJl`Q86g6RXk?)Q--)vEir^^kAc1LQ68*A%TtLjw$o?w{)^ z4x2?r3vEDx!+hr~QXy$A`j2n!Y*ImuT8*#IL!_9rm?!2}@qg~DOd7MS4{?Svm|imm3(>?SER%68~uZE_*KMDDh4rBc*Xa~LQ+Mubw!xJH~x~z z4Tf3zlKFC-44&re65H~dq3}BSxnfzJv4fc=+pRzFqGA$lRL+a-6n4T!R-+^v?f6?n zIBP4$6)%1hfIs9>C)=}s;wOtqN25bpc~;Qsm#|3N9h zA1E&S_LY#WG_s4-ljnfcPv&i@unv}l&is)jB+g~-jRoa*-+X$7GlX=~RFYr#iMPQJb?4fFL~N>&jg;I!cN0ZxXjJVGa4oMEdiH=g1wA_#y_HEw<;dXYo`aa# zeA_yrpS@z;EatWANI1##U0X-2gk-OI0ee)0%bOO0S> zUqW{4=6yDiStxdHLJaql9JZN+o3n*C@Y$zG3}3Ms(hlMWHe;ii%};J7r6iND*h2DA zySxPp+_sy< z{w)J%cau+Hl>@IsAmCmuC9|TTHmC8$cKJ?xH#kt;Vj}qp_LaID&&%OOWk|;T8arNw z-JZYFZ4U_L@ELnBQ-<=Ld*Et0ymk*3G(SetUTn>>dF5V!viY^Wq(LU0@WwQ9oFW}lF zxgMRvPwd0KESuN7fz-gyP4Iru&E&cJNp}qlAT#=-t9cK0)c6EI!55KDCC}!Y_Cv4% z{Oo>`8k&tz=F~9){5-72-)>F0XxyJOu7Xy{+S~dKmpvPMz-R&*1m&!+u4JdRY z&pkpq_$4zG)-Zd^j_8UydqlGHZ?KcgbN&s#&E*UJO?)7Ok>dEcqa?h+;7Wkn!AA0_ z%_2Q>buM3al-v&$T|25P!2LeauM73qSogl<_=851Y}p4wqrN`>Az#pNecDtx3qQ_ z@ScgjwV#mw6kFaE-DtG$j}znwiM-#q&cRQpjKc)EjNZ>{KWjMb^o{vk#Q9l#;z_7_ zmap<8))U(Txy)Fe^c^@wZZ`vb?HfdcS$xH}dXaEWFUrrsS!eO_-@!X(@owKkkePhq z_gGVAapwmLO%XS>~wXAWg#!G zhnN@gv-Obbg*@kizYn&nGcMHkDdIKt5OWc~Tn{NJ;bVUC_bD#n3w|PZceRKUiRxc* z2|(rV{@w4SHfnQ-71XJp5WnSb_XS-f&6?c-4$*U+qgdojSkQw7mhyuiOQ)!}m4Ao7 zLZNy)6m36K+vnF*+3z_%<`2@gz>ML|Ro5CiZ6MsEFW9z*HV@Sg#dTtyGfmpX0k$0Y zbSm`cFn3=r2e7PQ_(Ob>md7Mv=9LDFA#2fL1vo^e25^y6I&==0&W<{&-xbM5C_Bs zzDh!e2NX0ihjD$_#!o`@)^(%k%5UAI-3-&|?VgAx?ZTuIKU}iu*ID%zUG&+4mZz75 znO7DVY;Dz*rUT1U4WM6V+ZsA5JtVANXRqlx)BCx*Ntj<};@A1mnH;bS{*;X{U|j>V zy9i+7qxSL?gNYsb?{tN`NeS@7yua`uNwAaA=ar^?%B@EG%T3$e7XQF7jI@hR$K~-8 z+9`jdjlp$*l4KCt&dUPncI!3xU%;VVzDYr}m^vnl*=)v7nkws3e+9&9t>ksh>Da#j zR0%+D{$dN-{?E|tLlW9NnBFF%Le^oP5lkQSZ?}EeZf_*@wMngLWOM6p7=6irk9&|T zXHmhXp_aSjX?F>ke3~zaryXSF%4xnco*JR<>(jg@p6-?qP+OePh}wY!+N+*gT|y&j zJv-1?gW4%RsRJEek9ME~?H;dlJ^8fQZ+wdnBF_Yy&+5OL-i%*Q|qI(ja}pSC>eCQ?0t`vOnW>$zWSn{_AtzMn9)mA?iBQ+p%EydUmD5 zb$#Jx@e8r=ydrrj#_qp6?O@zDR~SbFBYX?G)8{Cz5+i!j=g1IWSx*{GG@Y@kQ%KO7 zBY~yfxPeIN?25XzTJh~4m z>aE8X2{YnO=IsWouO5?hSbf|{lQ4_Bp`SnQ6c00CqnNn>fn4wC=^_U-=SpD7P(3Kg z0aFZEy3sL159D&d+YDHy0n2HCxs8xv87QK&eqyHgaT{^WGRVOn97MxNs&DZiicdCw z!MstuXMDMXg-4C|EgnL55OR;N+c5eo8SPgE{_--`G)d`gIeO+8gX?kFVIWD>WA_1r zv(X0ZAJ|kHu=4!|w-dQ%1PzbObBH@?aik~79x%G3@?9h7w`7uU?MV7LX?w3OhZ!Fj zTd;cU(ofPS8*we4uNX~JF%1rlrka=z=kKIGF+Dbor5!159cunT??4eep5BjQ!FW0} zeX1NLYr4*vQ*iALF(kUrfX!g$i~hd})yjZ9V6ZpK7j!q}q|-b`aife|<^07K{qH<5 zd}}54f)ekWdC0LXslP+Jf&ZSzYbMa!$m})ufX(?l<{ml=#j1NKk2T0v&qh~&9`vOg zvg$!es(P+(*hI=Oq(jB2Pop8l=UulB>AQ{qy!6OC9(=DDlDqE}WBMlDOL2fPpRdTL zL(y8BPur9EYbMb)ehy0JH{xKuOr$${lD?w$l{kMr4+Xr~tQA(SQSeV-m1EKm4$ zqS0gxz!l2kM;7whX|$JStU(S-1}0h2Z@z3Wwa8lG2rymu>4=BCyw7xccl&xoAY}om z#8Sbmrt7Id!pZm3eBX3>rJi)zee}0Grs!A~ald^%wI?_U2q<6yrr&)F(Y~->v_l1@ z{&@GQ6^`bn>-bY(*YQK^>vFlyT*A-ak7!~6c}w+jo->19l8bK^a}()C4trdlE8yo zd`UCu60?zB;p|Tw7UG8pI(>Jc9Jl(C0|$u4n2p-RoB^)9QhL(B{aJ4d7S60}G1`7< zXe-}jv|W~S4*h}a>o%88S2aD2nS9;AKt7HHRZnrsr}*1=`NK4{Ny4rpxTpCM^lY#` z>uc!f3wVS+Kn!jF>Ra$A4Hw&-RgYm=))n{lAHK@Rs45x{Jx=d#lL^BWn=25U>!dqm zy=`dp26r!@cab#T+66S0SfOTIVcq1FPtdm-QkSB-R2^W=5vfaee)vh6jBWk3Cux7% zRLN|~G@emFJGE~Z>6(8eht>3(VIpjI3+U*011U95cs%aIEJfE+;mR2KZFuQ#(n|w| z@*od=ui0=G;8uL^3O8Ih-FMPMJ2cJ3B+FBL5ng)I<_O9{>@ofklnGfl9NkWb^P`(- zM7tH6UCLy%-UU#k9}T6zG-dJSPg7S|#1@y*&VU7oc02)Bc=gjXnGV~+uL7s-UDM}I zn=~iyVdukmadvS|o-z4>$us9ZRD{0W_-{|s)IQ~S?TW5R1D#44o=5O3!!rrbAv`DX zY`~K@)0sDCPTr%=SyP-dCeNG-dOi7u?Q|I5ww#8zQntF3e2~e-(-zO1$@$Y~PsdpI zOrMnZz^r*Q=koK6X0%t7e*^P2U`)q@YJL4-yhrlG%jqxa>$bVX|Aa!BVU(ND1%D?~ z*@Y6v?aIBAC(W6afB!vs`T2tKJ+tp`fF*5rDXsXA|D>%Wx(vg61n|Yb1{FE^&{Z^V zf(O960ayyfxlsD+Poo|sdf=bXsd&b~T1EZkvjFdc8PQ&z<5b3EJC%%Etl1} z?q&Yv3fg+$`3xtJ8_4BkHmx55Y4OiLTpz$Q=ggTkM{jLtkILlBU!Y6cD{C>{FaU*6 z;}}*?wm@wM z%0QIUXU@-?F@2KXag;;1z;nkm=ycmSr{W&_XPw536*_&AX1~f`{uiAPyzy0+G61yk zfAmmVijg63XFhl@jUlh{32VUP#Mk(^&0U?xZ}HAN}^tu_+nZJeN1b_-IxKq%UT-O%ull;;H~%o%c?5&U$#}1Hrbgs5C5GxcY1!_Tr|#| zlQ;9BDd;nM&aA0(@*Yr>wV>Uv5$(GS+Wv{oZ(mEJZ2pml@VvD&oaRpBkFBL?blNn& ze=VZJ;Me*0YiaAawNEr?y=Q?_sX=|lKb;^c|G_sC7T z7XO5r$ehZMSz-i5Ik1h7TSt@oIrmB{dmyoYKAX^Q9qK|02^}O+KaGp2t|l~BFn(km zy*KSm&`Abl4@wc7qHt`r3C}b<3-FA>vk%WvJS*^&t!WtVhKxkZyXU1#L3fgzRB9~hG0}ss6b-rppPu>X6s@u=+ z+(>)Ss5klYjkFz|_8EV5BXzY3+3Eye4eCFzm7m^7lhuglocyWvv;*(+BF&|BZ}O!t z($@F=ozlkO>Z&LB7D@|1DU{|$c^=gL{+9sdHm>`PwaVx#j3xRCW4X8S<}cBiwB`VR z@+I0jEcY$fpB!bwR{rWs^v;0Afc1d{GDh~@M74HD(KHH8-SLR&lk~d$A42Iq_LgwV z<@ElydGpN(6lH+jkH6|U5qQtw(eU`|>+voY72pm5u4S%{%V%z;^V9mgBhwhSfrCO1 zxMGZRUttLYZZO_OecfA5{I`jc@wH_SQ@4{&g}*Sz6v^jpq4(H&m%Eg)K+EAP4^am_ zP|1JZLX+G1n@0mAmM-y6mjor0khT>IM~e#n_Evf?T~@(e+o-F>j1QdkIKwQ_ykHY8 z;s4!61L+;_@^7}$XXwdy`D5GR2)Xa^XSdV)5+=SU7rRVQjlz>Led^?g<|cGFj&@8_ z<#UuGXbLqC!v7rWJw9P2ZQX9?X?S|xqqFACZM>+<)jH{nQ1xs+5+>w*cF+LVdi*j{ z#HkoO>3IBgrZ=J7_}(? z1=eW((Qf)6-T7~x^*U`A>pUu%w%bR}&C9>vc`yEhwKjipZ@ZEVm`Eo^8gu0ZYHKlj z?ws2mm^DcT=mAIhhp*G6tv&%_1`vawqP8eMIm&02(s2oW-fxl6kfiUuA??V}vbVk=lfPnVV%83NNa376pmGPlVk222zrwg8p5BdImNa+@T$gl3BY32if_vFX+ zQwPs|g9hDMhk6^}oxxxZl)+u2>y>`3N3_zjbF@<11!Fa8uStzo`XomyyKZS;hxTD9 z(Tb-FfAtO8uGQ?1B+ucXD`Z*r5&!ZHI>-J7+V4bt!$*AFews)Vj`NcJw1<7vahX`4 zUcDb_*Q(>(@+M7;IF5E9yPzZf30fD?CLIBpx{U^W%$L7OTX&AijaG8|Hi+Q9BU(9% zdK8`!qeqUqr(b&iL8C^b_eUgJfUMOiR1wZEzDXnKx{ta203ByO@iF|6llP&b+52e# zU$u{h&~BgbXAdBF6n(kCv$yDov~?I`2=E%yeq?C0Vj3a^Z`^(qw8TGucse?W-}g36Y}FG#c@XYB z9HroYH%*)K{M1J>H>N_Bz131K#<+yyP9)&z$>Tm(ol6 zSM57A!~P2DserHeFHbI~TkJDGb19*ydq3k}mea8M`liqLjdH9Qm7no;71;S59n_T1 zo%mk5C!S@KqLnf{)1aeZ&=G6Zwz2TVyWpqz$hQpbji-6H&-ua%_}IkH`KuMQU&Jf; z&RXbH{1bh}b8<#>L)5VGw6AG%*CF8L0Cw7}C?O~t*9B*XKIe1ZrTv<(T@bB|nF-!z zMT@p~-=*_gtvTsZ?gfr`#N1kQk`H_j;dRoJ{F(PK7g7JOF3$PeEPG8$bRmyo>Fezdjr9B9{2;bMP)? z^Vc83JGOoWN^gwhZ+sGsjXRa09@nVT9=tauvJ~|Jjo?q=U8FsJdZK!w zAt9|#T%!Bh7j7y2Leba=u?X+6c*GXMPi&FVhC;Wpu=Kho`Il8Rxn7GxN@3Zk_o9`# zmC?##Je!R2P?fBUw!eE)029wP^cRny(+B-R{u8a7{Q$5Ucmy6%UNcI(7w8S5@$a6> z_c5(OU=s)l9MgvlxF)mirWuk_4Bv4gHby3OWSD2R{o~WXbO|4GY`|pTz$?Uh@id+6GBYTd8mu2!BL77 zLy$Z|)B5@Qzk~k5r~GyN4^8zGK7U<9UG(?YV^9~a13F8O&~X&yH%G9KLD~G@bbi6- z80P@SK91)G-cR899gq0;1IlmkTs7*oC@+c!xMg_gS&1ibzd-wscxq~0ifXiR#hFjv^=?{e~yLk1v3ae&cg}K-&>p89tmB zcAn4EKgThI?K2u!-}bO*Yh#~1W8Oo~G-pcLIsU?bXj&J4m&ef!u~PBZ-^IJFQT=zk zi^ClBYhFXM>d8JP$lg)l@AfEA8j}fx9F6Nix73^6QlEo*Orv2RMqNncr(cA6t48%H zsDmx79w8SE!h-$|El`&X_|lHiek3XgUr-7P?NAED1xAuC>iD^iC81y<-h?~PM=3-; z5dpl&|NX3Jja?!hKi=X-@BX&`pJnHIBDZ$f@E1g9qm37SgmcdoAJJyK>?7)IHTOs9 zQ~$z_P{j7RKk{!rqKN@zXctKW-<@OWD4orp%k)fhDRpj_GB?XN?l_%bra8ax{r{zj zwj5lPiV(fMkxTj8Ue;ZzrQfCe%{xSMB!Bxqv|WAoS4CTUzU?y_(btdn8psOM`0I9< zN`wc0UHFD@L4VyX>O8N8#_+y1INk$`y+4O5`r$j}xK$@<3rUvm{hW4b@>|8xbo7cA;kZo~a z&{ko7ythD0@SB{HtPH!#hkSw58RhaX5TsGQ`~}iAl&8O-$>z6z6^Hy!pTyRq)0fzK zocNWeeM!@zlCH`0^$;SMh`4VBNN*!}S zKTA|=Kjr~I#552Ps7?vG#*@FIJwobGk3}7+g?{oa>b|;umOW

1*1)-;Xz3dNh9! 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 B3>^Rf delta 113953 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�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 G@BaYb|Jb7d diff --git a/artifacts/program_methods/clock.bin b/artifacts/program_methods/clock.bin index ddbfea9bf81bbe8b47961e4b03320bea96511aef..151a72d7808225aab3451c3510ddc5105472ca08 100644 GIT binary patch delta 8505 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 delta 8524 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 A=>Px# diff --git a/artifacts/program_methods/faucet.bin b/artifacts/program_methods/faucet.bin index 4994d29eec8f58491677869ec76305c23e84e318..1385c2e13dbd6cde423d1ef8ca2bc0c05924a5dd 100644 GIT binary patch delta 8538 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 delta 8548 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 diff --git a/artifacts/program_methods/pinata.bin b/artifacts/program_methods/pinata.bin index 84ea7e23870b7d0427f1a6e146eb379d16214900..7ae7c00507d32676b423271cc4bf0ca92980d72c 100644 GIT binary patch delta 8005 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 delta 8007 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 bzjd{+-i=UO`?b5lTMM+-_Ur|r_g?!yN2?V+ diff --git a/artifacts/program_methods/pinata_token.bin b/artifacts/program_methods/pinata_token.bin index cb240b786f37e86f912766ca1a604b0becd3fa8d..a2581702d6b492c5be4514d24ad18f593786bc23 100644 GIT binary patch delta 8020 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 delta 8017 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 A#Q*>R delta 8765 zcmZ{pe_Rz+7QoNEHz2l@;#yfky?Ib+mVug5S&7-MTeP8)sab-Vnqg|0nVBPnKPnYX z3oJKrqco!xQ+KHFXPRUxXyi{4F;go`Ft*Gr_dD<1c{A?E{g3ZG=bn4+Ip>~x=TWgb zp=x!)?0BusoPrk5tws{>M@iTHe) zyxm8W1#1J+Q}Gq|X>tPnD5Zba8nfNMP&1#zPJ9LP{NZ_Lv9on!K-#Ez&t_^ed2>J( zFweG|g`LBn2jrOIefMk9xG5krl>UVNFzd8Z>--MKUzR9c6yG*LlUTTUn0t%KK%qMz z>)@?h0}`(mxcUJ$>fu*leOo|=s|EiwP?MbP0V!1aD+=nW{P}5@u#b5=1JX*VHKL|h z24s&fypIVFYErW!AZ2P=^Ff-N^0?94TE4@d?>Czf$D+Lf$x?PU_0uGIS3m-4UMl+& zU!ugob{;lkcje{o{+m9eNplb11=qla(w_lug;hLcJ1nguY|1 za2HZR2&RQtWtmPVNC|YIf^F^Vc)d@ zNmks#nzPq`!e_pJuO_MSk^RdFc#nq{_12`gE+938$#&yo;-BPMcjP0Qq$jxZn~b1- zzowqmI^*Cau&(CU!%t#=Fmm!|ovra}QD*;V3BuukB&k_@;ZENKAM=`(+Ll5)_?q1P1eD-o}G_-;6@Kmg4;B>=d9UNnv|V%&*ccX%5Wp`zRf>z zPL;h{cu8X<@}|U%(`5R80+OK={tEB$@N;mRpCc1w6&&-6%Rj)!V5h;gdz#Sy8jw_# zsz>3Trvsq_ZEt8BoB;zSH#9+SNJ&c^e~%p$Kx~w6qYE361X_gZL&YYGd!F; z3Z})5R{E3RGjNh>{FQDF4VSZEUly=) zJP%Gn-b(Q7nQR0+=hv4b3W3UL$!@+LI zZ3h!(YjP=aJC*iE2f;}m{Y7vc8}F~=hhPf_vO>)5kyMa&(!bXHhW<1$9=j?7L+8*? zFEb*iY$Mzi?xr^0=9P2%*`sh{tlQs~!sYnkG}Q0m5|3Zk%_UIRME2#AYAg3Ae>0ys zbSl}r%8&pK+8f*fS0%Z8^E4cVoqqNh+zqx%!`6QtuJ`CiO($a>ejM)UnZFQDb>|l} z``KR?7em^;S!r9K{o)_wi^{VG|Kk56O1sR;{@uSYCZ%TqhwC~P57nV2tKpJ%M&!|Q zK_LgHO=Oocvmhl}Uly0naJ^@^(rRE>GoO8py|*`{hf2a9aP{@>-b?25R%`19^#?c> zc8a6@>n!i#QE(&kou}IOaAvY0r

-#90Uv_i{hsxOR7Nq&cHC%ebx3AhAy7P@AM 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

R_w8Z{>_1go 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 delta 8107 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 EFKI^o0ssI2 delta 8043 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 delta 8055 zcmaKweOOghy1?Ik_Bl$0@)0H$)!qjZGfhDJwh5BTj3zWJQ%ERqG|ecntjukt_GQU* zb)dAgqOMIo58h{FwoR5ap>c1P-bT%yEX>ie29rvQipKlf`>cKTcAnb2GJ?2MU)KYR!eA%#RDdIV#e1T~vCCh!zS-?lF;uJVV+v zkx)pJ>Tg6U@(mfU_|tDiPNE-C`djUnJ`Szbtf60v92m(q@hWPqAChIvKE z*D%jn*Z59keSslI6hC!BWbY4cKA(oH+`agd%}9TA%>dPS-+<})Sfb$)%K4!Bux!B z+S?9_{=ZaUxMu>soO7w5VL9^#2NPf<666Urkzlwq!g53I2dQ4mSq) zeR$?|hK%hI%XWl(EuRu~K~+e?$WX?|iC!CPQQ&ndemxHG^9;H)yge(vav=jDEV z?SPk*`;kaW(qzX?hU`=86~c|v*4L7xpLqk$DDTWPqKTDGa2Id45LaCb6!a2&Ineb>lx(aqu zaqM5@lg~VLgV*5TdYRN-Fv64IxB>MOJ455No%O3aLpv+)Jpx$pFr-SG9}aeKY))u^m1Rd!F>Rw|x^zidgv(Li#&HYL$lz;o4b-TfI(* zw!=#ToZLf`m2mv@!s`OO9^L>u#pulc7T$lWAsZA=>#4~R!De_d1{NT9Qj<4OlXuy`Nu?91T6kYz!#~5T*ziUr{{fzjyuxKYB%|tw{T$kA zEucRwc$jrn2JX8^lbj{~Df2^T2GFBx=dKU)MB2m0GqxCXnuhAM;UZvj6FVYwyl zS4h6J=XZyaLe^4)GgIdsXQBn~SmE=HCWgXZKYI)w3p<&20`eN%5zx=;!{0ayH%*ktMK|i z_^q@HURf3QQSPh1AW3gZ8J$PR3=F?vA7)syX64}d(}onO6m-D58hp>6q0VKKD$q?fq?68fz_L6*TUpS?zka)Rm%XRIzCxSWa;YYpTMVgF0nH{ZIa}~w**_I7c*FO_p)7mk=`D$a<65- z-8@;rQ{(*y}j6^Zcf{2u=)e3%tACklkv&lu~ek`Io_K;7sK7 zo>W=FzySulgl(_ildB(_c*ixog}#ou*OnHFhz+-V=J%RIa1Hx=ThU?LI^Grm*z|agamASH(ZSh-Uq{|Ac=4?uN&!e7p}A9r3TvewXtIWS?}k z&osC;Ab%Nd2*{7XjlSHHp;yq10}Auu-6(8eL8liDyb{N2{Q%zv*T9~m8{x%Y;(#*n zAiVM`pVP2>{XcxZ0^ZVLNTa(xPn|ssR2=o2VbxVE09U95zk|Clu%Gg9_ykQ-Fu*&x z_rO7elde9MU;Y=qq&OfC94UVg267om=!Cc=->8ERN~t$x~�Rz|D9{4yD z2B`_@<)=)LX?ArXoucwyCk{XIUWhFu*As_bUA#9`oc;?=gj<#TIo4SiaHJjH7+~Wj zS`2)Z+PBgkHcnrwSANU*@qpgY=>+U&zO&T2HE>(EAxqRz`4QfIz5hKohKkwG{61>k zh4A`7fLiTgSL$06bN@_>NeG$om*E8Ba6mKT-)k>mN3HJj7xfpE>g_3=C48);nNpzK zo@4i!tnch;-N$kZ(#?3sdJ(<-fo&_Ohws%Ipa8SRF*9mGG`P%arlT&Bt!x z!1Xm{j^gdV<8g4Wryr7@GwA@ZI)G7WV<7nAK7AG&+!K{^RUEFimzL{RLQ1c>6wHOD zB!*)ryUp%1Lthcm?zUf=t+$_(vYdGvCz#Tv;@e`cdRQM4($2THJ*w{v7v5dNJF&rx z=lugX|7kOx_mVrPgL>1wd7RGiBAoVc+)z1e?|D+69!kl+Q6+#@)#O*OU&Gi1K@>$3PuC2d{X-|23r@&NxIq zmHrp@iRbm{5$i41x$w!T;I4aM!ra*dVANc`622(FkHLci`tQME*lWE>_uyARJ_#NY zn7<0X*k?=jF>roh!r2&_>nq5Rg^q55eWgz36U-Z-PB%PJ2+3vVgo8uJq-X$qELl0tz3%iLiGO z^?8Wsz=PF>Q{du&yvy#hNxwZ}b#Ui&2gdg-;l*)YR1D>C=2A^2t%(;LQ2sO=l>ZDb?-_L;mCkzQ8c_*EXbar- z5iQ+u*h0Zc?~>CwWXgbQxa2d_eH}XsY=9HLj@4WWKLdXT7q2s9qtag)hDnigCph{; zPa_mHMm$A>dt*RZ><2AJ{%WevmNRf=I-k@-Vt2j6+u@lFehnn{qiEOq8$JP-P$Q*k zL;V~MNnTX46wiW_$@u`q*%>_A_L{<3at)jdPuXosmx$#K+G-L~xnZv&|IF-n~h#ie`>dtab zr4>_X%;e+0jcZj^^(S!2^ZX>IHYmxWEf8|g<2PaBK|X|3(NXI;^H6@$fH)0o zkPEw?>59j}Wz-A-;Fp$&EQ32?=U+1XI9vf+oaC@(oesXPmz!Kc2PxV7i#kN z7YI2KO5xh=c^Ue2J};tD!l|-yDJGf;ezpGQmm6=L}?InQ}l4^t+7($f0*E>)>wW-Z_2?9&~{zk0||>b1A}XJW?S}xE+J} zj_?eg0&f^>x-Ub=p-16TGb%e`4qNgz16d4s8#vW7h(=PPHYk9P^yMk3LOzQRgy4hY z^m(UVudl!b&zjPzB3jJDse;C{PPO(nIQ)Vs3;7gw@Bh;Ink?Q($a=*>{t3LPg(6f2 z482Pe<1L>bhL;EU%Y~XWe8Gmwz=`)0!LQ7CuTP@JMn1{QEfVVkli_eD1~~hb5|S4f zSo{kH^o$uWcrnL_R_ulFuW(JTsMM(tuYQP6D_ZYJW#H%~G$$gqL3x;GpZG*?IhvN6 zGb(Syu$-JxBZl%(l+3|10_Jkeb{|Wu-OgnpL_=6t5 zDyn~SZ#df?x;K2}j9-^ud@wxY*CnpC?;rd(=F~rMQzXsqJ{Znfs^!{)XGT^p`ajIv B7x4f9 diff --git a/artifacts/test_program_methods/chain_caller.bin b/artifacts/test_program_methods/chain_caller.bin index 39b6cb2ff9f31f005cfe3b3544990227945600f6..4511b51609cb2bc633fb893de263aa9b9ab441b9 100644 GIT binary patch delta 8061 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 delta 8077 zcmZ{pYjhPwwt#n^K7l9!69^JWfbJ&B!vIM@c?d!zLc;3?MFj~GAdZM(K#7{sU?UGf zArcfl8G!|Q8AT1sj6jPEgsag(1i>-0k%-iu7dboA zkOP`XB%;a53nF`F8&aTns%Y{m>l4)ap-$DM`XWCAaGr zk|)?|Sq^7Z}p0xTCH~>RdxstMxmhn!JXcG-YRS0=~e56#oG}3Ma?;dU>6J z;zybX)NQq^!z zXIr{{L^Br>tYIpQm<)ZR2q_`)}3%RcGXWrW;XsPlDss)H)Inlv@833w4aa)lua)cW_}?Qmu!zQ2{7HCceXsv{zPh8?fWg-w(eQl0OB9^xHDlY-!+SIBcMk#VHIKD1gHT z?t{YyK7-SqFyxqWs6!7bsK$`N?9<)AB-nV;kRos1)?@_(MNb)WQVHyX&!E8PZ{X}$ z(3kp?u%qjI1)AIjFF>KczPOKDA;Ee78a_m({EE@D$SholJljCs<$Nu^y2^%>f3XWP~KFA3U2XIq}WDKTgFHPrpP*jDGF-v~{% z9th6n1Mr?dHg8fc#1@U!UrE`^@S)J~NN4ys{T0n_8jkDl8IrGZFdy|t4+dN5ny1M* zf#S8}P|Uo4$$aQczr}rXJ%1g|^t0gl{RU2hQzc%k)@V&mp~o-Q*>J`G2Dif- zaKYz>RH%6V0H0xfALQNQ9y*42KNI-z0K6dJS+bXb`jDd+;Qgn9gp4g9@_~S?hO1bg zuM8Z9yD;x_J2t);_L?aU6vd7g>+`irXTo%SjW+3>v0N@qhE%J7_9ZTfjqG3fUjnE7 zBiMh^c%CP4sX9cJ@UUlt{mgax&d}{h&Px+`ru<^aAr-go6M2SQ2)1!2T=J(tuGTp| zQ{Q*7y`xx@k*!Qwt>lK6P$0>sG$~#LpL;%#+Xt6#4ekYPCTA(cqu}}!Q|gucQn)cB z|2A9)_h6pe0h{ZD^4M89I%$bTFHn&FydvVt$i* z0j`A8<9g*QcRlii6*~!%=gj-P{z}xIJBg7?O-WVpci_}Cv-u4ly`F9klhyd;4Ci+- zn_oQ};A7ZHQ+7Uu%R}?MZ@_M7{!VyHFmKB)2DXM4oP+CGP>VvhJ8zrJ#$N~mdz_D}A4IPCD_Q(AKGsV#Ybn4|3Q7H4C*euH4;QB%1f*BJ>^% z@_yrkwA%NAynhHMy=!_mkJ~vex49bjG&?GDoW2M38IhD18K21b0p;H~XX7D#erxSH zr)|A{B5`KZV)7xDh##-aHL+gv+EZA?okHZr~^M8kL z4#}tC=S>0IGL3;TA%TtX)L?=97_WoRzh}95^qg(AMw8{t`_V0gABO$StcI6`=8wRS1oPKQ`)b-#Xu*x} zK-lk>HE=%MR~h^SE)UH=;LJO%&rh)DSMh7p;XrQ61Iz2XZXa!g z55gAnF86tYw)8i?mlT)5W$#-uMcI8Bu7i&%J_D~iV#ycr^%2Q+rhljJi{#CJh>>DT z%K6JZFBdJLZ`KEnJqhoCyC_B7mTK}9>^~_MI@8bTBQ)(>XX6jL-Ac>a*){r#uHESz z)}xzRYi(om+C(>Li=4Je(S5qz4GRTF4VjF!_GIB%c*|eo9~~~Agrl=8uMN5UlFn^$ z+7N>Txm=m(hS&6d%X4|gMVzV*@l)yY^YGx#mXzSF%OAt%5}MhT4j0otx^i47Pj^8P z+^f4Ko0Y(0@W_ARU{ZX3ejC=ev%KrqUH=?>fb}(M11I4Us<~Xrrzi1aWm^2<>#m;z z7hN#Dmu-8Y=foH&p|afz)Lrl+Tz)v%(JgK1U+)L}Ivk$QXxDQ7L3s5L%X?b7`cA?P zp$Lt*1c%!YQFp^O3zjpmY#2vPInW3f5yC@?`zKS;Tv$bL3cm)I!sGvD$aXc~sXa`J z+?&BQ=)lKj#xHP}M|B{gYvVucxV!>RCMCUCZ@UApGf-9#FIAWCN=3nG)9YX^{{=qx zW&GpE_|dAztM zMe-wen-bU!7k$W2PijY5y=WTjc(UTB;RF2UkqM{p%WVT}?7%@)LrZ$|xD0LJukaR9 zxIxMH?1O`!xIdQK@sPd1KsZF%S8zBJE#XS>9J~)6-(bid?npNRhu{q;@Kdn9KZV8j zsC#+4^Pj;*oFd=hn{z1QQp4Yh+;GH?3})-!OHA{wuD z{1IHvG0Q^0_4umcoa!_Jb#k=9k@$p;FUH{BTUKKNo{{6@LYXb2g6Z+W)=TToYU1$(O~SYp%hM;mnSNROxGXUCX{O1|FPg zdi~g4-)$^K-NrU$i^}O}Fh0j@K1Ox3xR*mY z{2o3Z;@-0{Ku-M>K3z(u%Zk73T>~9{*RoM9gu{)jkH!_1+D`dY#!GY6ybJNgt`1cR5}+%!V9U(C>*8~o`5&QrHXt0 zf$RCkpsMG?#jxAkUHRSc`B06e-%np)zDCX4cQBA~lj;2k?|B3llSBVlc6a~<%=_m! zAI`ejl$AVlsXmBBX9|gXR~r(+!7*I&*wTH#NPe? z5d(|=hmf_6hpc2N?et$1p>kjsYKwiLr;a(kLgx__)=tPQ{L!2|b;O-4hzy{QCU<9?_EY-?r-cou2#K a3u4u`CZsx@vJ!HZYdf66KPRkz@c#jyIS8l# diff --git a/artifacts/test_program_methods/changer_claimer.bin b/artifacts/test_program_methods/changer_claimer.bin index d1f2cb8ad4f7c968b71d5fc43214ba19a100f31d..c657a86da25051430070b9bec59cd6869f89f947 100644 GIT binary patch delta 8053 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 delta 8063 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 diff --git a/artifacts/test_program_methods/claimer.bin b/artifacts/test_program_methods/claimer.bin index 035fdb2391aa49c57be91aeed168fbe665ec770d..47b451ec661f62df1aa6f40bee2294f7467bf9f9 100644 GIT binary patch delta 8062 zcmZ{p3v?CLxq$zf$syQ8ArK@&&^afephif5K#){}gc=Jfk3a)PNF-QZLXgB#MThsr z3c{s<0~LhTVvB7=xCI9k3*LsV=n8@Yf(Q~26eM7@LGXRQnX@M|+@)D7D|~zZd+-0X z|Gj5ZQ`>%LZTn@ZTGfAdO4E+b>A#@AwynQ@;7I>pT@=|rG$QdLqUpN){xgyMEK_PV z5nb2h_0L5Tdzw<9xc7fV4kI5@^6l*r@9XO{YccaI?#DPIHZG-6Bsa&Du4>#Lz7T1= z-IO(qbLO4NJcW0fa#rydmqg0?nzC5QFTX5ujCE4fI>}c=;)X?}kKz$<6aB4YJWN*7 zFdG5YAcx`HJX2ED0>Ai5q$t2I!WHlYwP56H7VK}zDkc9`bk7I6mDL@8WDGDRMTsSR z!?3$d*{;NFxIVD#SJBF2`e)%TxUJVfQ%cmZ<6q*|d{ay{Y)Ev$as5QnY8G8|w<*c0 z*{~}=)c0xOA$V(1VMO9+ccQYTNu+#`DTzw%HG6!$enKy;y}&Xfe50=+3I_xHDp6=) z+%cub0ld06FmJ7)N$tHvNzL0kPLoEMKW>y>wqN*2pB87eZ>LGqeWs)v!j8V<;hnG-jE!*d5WJ@5{Qy2j|E)^?#`a{yC||x5UgWbS8)&EtO!x^r z!55HQh)?n`Q*v9x6fcF#Mn+tJI|^OtsL7BbKe|bsG)ZT^T&2KpcmiCgcqJUq{3R~8 z)n(6(EO0&|z1)U4>1204r|;9Pzh8^xqx`@gg%`t)oRjAX*J-jlz`1Y}yj}J0h37xu z=U3NOn(QC#dtx%Yrr4AtN`5U|@nEy(E!jsy;TThfD1lIGO*RC$AKV1jtNt1A!LdI7 z9o|~vZ`5<}u~JiVRH(WnVfZ-H4XtC)GjJ+wy7O5~PD5@$U`!iL^5IOiU=6$wi|&D) zPz-8&b^jJPxInw)tLL-epocfX%?d=PU(g3=w??;J(D#+Tm!L_}0}&wy+?CoVYBC1K z5|@kMoq_CM4a;ypYmdSk%lwiNA(l0;XUQb{%tgIb$XXV{YT7H5g-780-HF=wc+<-u9 zJin6#N3wtu<6&?*{V9s8?9P|;?z%O#1KW5O3#(J&9K38MmQ&~)%m1CG$>|DHrl|g9 zUGU6winQXl;Nme6xmnGd&{dPcaBIbb;Y9&n0_XZ{$)KCrUWD8mumoN;HX=!Cf_?BJ z*y~Tag}Q-)dGtF9J`1;}-wCB-=zcgoAm8RzO-^F?DAhk4wo#zOWkZ)0(GgelUDiSB zQ^5k}RS`IhoXquiS$2jdE#W+6_-Z&<&yK?Bf%?|*HUfYiUO_E}s{?wig$I{3+oj7u zd&O6JE8RM2vfY<>+ZmxS^(MgE-~!mIXCK3fuv6(BhqQ~Za6o=GJS)KG;N-yg4n#Q4 zA0JKoRzI0EkH%nB{upidojz9UXIFlw{}9r;*p-H{u4UHpEKM?3u(q3q6zCqD8dZKR zErjb!n~jvi(SeD^%SkI~ZVWWvV27?XUe>HVnV7!PlzbI~0;XRNo658=N%Yi*e4qB| zh3T-D8#CeR0PlczGv2##WM^w)t~TY0ntufxh@mcr?d(>@x}>beJIKLX#Z7K?>pRulNC34`)vHCpZOvjv@JKfiw(% zit!$o!KY#GsQ62CL7Fj5d)K~{W-Qf)rs9W1|1@Qpa_Br*Ud4W;|0{6o*L?dQ>dz*D z%hV=%7hWGwXSaQ*vtj93+5qbJJEqhrzg5DE_xonN0oP3R&Cu-yU5yhVYsvkr_bzu< zHSYT1n19Ta2E`*`v)muI3SI*{d&lwbQMfq3sfCpBS@SCzzbL;da0Z7+0ecBq6c@COjj->ZSSMXo}id0zvaQZ1M|*>H^3d0UN!Jp#^YA> z3`qw&JJWbM&Ki)!OEuYUINee!nG4Y1khScn98qKsAaw#c1K(7|sHogWrUA!(IX>7EsMU!2p#ocfe(5 zeJ+P*p7Z%n@ZwKR+2GF4T_@`v9Dd%fhP&Z1xI|5O|F76_EO>+KIbD{+rLebi55Yl& zCl9)s^}$#3>LABqVNZK}Z=;pbzib3G?Sd(dYT<<=Nzn#UU3p?uktSW~pQZR&cmq6G z@$1oTeJPEP5922DsPCX^yYhBptYK{#N=2ICJF*GREAui!mp+Uur{8nz(9zt{8vRRX z6y6Lw8R!J2)dQ#-$f)IT2IH@z-`NR=;NnZB%#O+Tkc-8nM&NwQdJtwnh8j=-2L_03 zFSvtBQTm?ahs#_TViU>#{F*KQB^M6mr)%-UF&3&({a-UrUBHljV-T$H4Vwkerr)bb zuiGQ?jCDroePhulAh#6W`4t~pYTi0{)z_xXS6gKS8B!g%dPd<4# zhpAWv*N2-c)(=dd(cr~3Bs+;~$_@0ZikXc&bLfw4sF0Yrb4qep3e@r+kE6d`Sf(hB zOkl(O)|1y|99#vfJc&s9L^K-i3p@EmS-Oe6o zEDdP~>^&2V6CIPzGH!N3SZbAjQ|)c@jqbYkgneeAu`jOwfpV?_E5glj?>3!lM>O0V z_iFf9RoFdwoCN&=E}P%1sPwllJ!6d3ljc3D$z!zFD*e*!@y{C5;x)@Yw8A*ivUJZ3 z;!zhC@f`MBHp)lg=Ihe`!khPnr9lN^$K!lr1oGf(_{8u1=aha=P~uM#PbELVZnw@D z8?rjh)Z};1L=azmA|g%7Tf6KRs*Qby^)|{Rw~k1oib}$hoEwSUGZc@Wqsgc$ zfAO_&Ivi2To`7G1J?}>5YO)FTj2RDC2l_X{Tm1gJq0|MRVQLbRGUQUOnz_+Od zx58@z{e^b+7Gqk-DwxfUe1$(QYXLWc)QFhMU<>}!>WKUC@6^#Z;4k0^{SF%oal~_c zFDV`fSFMalky`h^;0AcV;y2-)(TIE;lh-A|?ra;o^!^1Ec(6-E_~RDzQ~aZDjj!0$ zO7;`nK}~cSZoAgMQVg~`ziQm6X?6Da*9@zL7P8O0VZ3Z;@%D;6#=3az(`fcyuCycV zLwk*BhV@O8NXi;h3R$iVVX$}|toTFhtHa^f;e)qD+&bj&qA!tu!xWPUIb6i6T=J^0 z`d%HHh5U2`GQJbJ@@ZJss{xbX zoEj8NjP(!t9{Kmf?)mG;&xKc=M*(HPPB@cvu2ADI!x^Vz^~aIV|3SojE9_ov+X%To zgN95}+c`lUf%oA2)xJf&X*(9+mChsqzViS2M{8tYDB|8No%wdc)d3H6)H$#YQ`sGZ zd0~)J8VXyo*OUS^uz4cvUXq;&5)39hA4|O?o`dt?)aOmvtmGTx;BFE3XmI40UPA^w zVm629>FZEnbnIcv>5p&gv*k4WIfYV5jGZIj;m8df6?|SfXOY7b;3;eU1<%1IIZ~+l z$980|WOC#v-UHX;@~(>KrBd<_hGo7A(OYoWcf)c;#BvvSzY{f-2}uQ)=iSI9=F`}O zNj%LyaT7K8HF8At?}jV>7{o zMq+3x3(n9`PS%zyfnW9|i(ia=@;D1L!i)bFdzp85&F%bdukdf z+|oC+~`oV)M+Y72`^Iejqt|KSfpHB zHVuWl_zG`@XWbfhFNn_gGjRG%5vhwAY{^YzOVf@1@mmak+dg*MIRnU%5zb7H$a+=U(<|}Vy0FaRi`YH?H`6d=6E3?p=JLLe z@&82sBng#;OX0=~fv0CPfKu$m{Kh#XVM0WfDHmU!#}^i*H%BSBaz4i^rMFsH_^ciJ zz(~EAoSoCRcUGUQoXnm*diToC>64k0Bhh{5jGuSR>^5b}V~=$ENrC9|Z^p&9{gG~a z$D46)=|9>Nt&2O_;>UWT{oae~VpkuCJDc#M-8=pj_wY~a+M&l!>KgsLO(@x(Ss$0V OKwDzJI6m~;Q~w7g{1#&X delta 8069 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 ITDSE70Xy3hg8%>k delta 8074 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 diff --git a/artifacts/test_program_methods/data_changer.bin b/artifacts/test_program_methods/data_changer.bin index 424295503002866cb49d221bf6fc63ed4a2e093a..4cae9b7779dad4d81ed6d418106810226547534d 100644 GIT binary patch delta 8059 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 diff --git a/artifacts/test_program_methods/faucet_chain_caller.bin b/artifacts/test_program_methods/faucet_chain_caller.bin index b72df852b4375af75433a0fe18b74f6e6f5e3f98..01e32aa15162ca65fdfb3ae17327b0544d2f1a19 100644 GIT binary patch delta 8111 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 delta 8130 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 Z)?MA?TDv+mRQOClf5~pLBJ{gC{}07?46OhF diff --git a/artifacts/test_program_methods/flash_swap_callback.bin b/artifacts/test_program_methods/flash_swap_callback.bin index 2f9020c98057f69c38f2bcfb9612943493b8ba71..028b64dffe74fe37ca15db4dab4d5c456afe10b7 100644 GIT binary patch delta 8048 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 diff --git a/artifacts/test_program_methods/flash_swap_initiator.bin b/artifacts/test_program_methods/flash_swap_initiator.bin index 6ef7044b30a5ef7658398a67d12085d64e2df775..f18afc5fa700c7beff778757bcf44192f9d92c48 100644 GIT binary patch delta 7982 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 Mwd+3!ZF=kQ%*TA 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 delta 8119 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 delta 9363 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 diff --git a/artifacts/test_program_methods/malicious_launderer.bin b/artifacts/test_program_methods/malicious_launderer.bin index 368602cac57dd2e3fc0eef5f1ca272fe04d58210..9686a8f4a6f61e6585b46230767f8d72af805d9f 100644 GIT binary patch delta 8073 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 Tv0p@`uGi+(a#1Vp2{r>HD zzx&<$d^LS~!Jbbqs7lo`9_`m(Tl7HQgL&F3dHNNH@&a&{il>oj{dc8ab<&xq-r!cM{!rlc#q1>cA? zj4@>$dam69?4(_7N}J*jz7xsLF=e%qpZ|l%Ui_peKPO?C9F~!ahjxgZU_LR%zmbIu zR3M-RWE-3?)|6BPT!(#r6iE;8LvTJkM>#wLZ_YQRM#=vvGU%{wXPwJBI<7G#MTxcj zgc`hEiB+E=KLNKNMGhR+zp@O{78++tu~Pf%_oVeYQ%t3n5jlQDKbW)_YlYXF(n}4u zItM<}cWYJ#*{YlpmJs9auB{7ukW{ zeigcVoOJH51t-Ww%#XO&Z{kl7A#}-ZA~4*3CJ7Oz#nA@9m~ZM}aAel(?Co z$%NmU(VV+Ez7sAA@HV&<_QIC)G+7$p32-HxqwGBiZ!0uqv*I&w1M?GNY|HrWnj|2w zNeR3Jo5g;Ww8LEkJfept#gk1bQ}UH?Gn}T!iXtyjlPcuBqFD)_fV(2^=KXEBeTpfE zqxl%7$@xi|Y!3+B+EQ`yL`W0&evos z?AnQL7`z=e6@Lg9%`hcfap(g4PWR`B!FvPxwQ#_`Ee7W#=wLP+bkGc^2OMY@p6wtL z4mx-W9(9K)dsRS9@X|X?8KnyJ+&-G*&NgLYblwISD4SzSt5R4BC(iQu&+x>#eqU;X zPcR=dpvgsSU=;>E{oWQ#z}uC*=ip=Plvgo3!tTz7Wjynmv+T5P#MyNe$()(~ZXJRf zVNd4_I*FxJp|WZB=M=)8&u(cfavna_BCmuGqkp;UgQ|Q0UQy!PYlN$Owk3XmCVK)7 zuZPQg0a*iQF5uize{LBhU&1k&8jhBM>tHcmyKS-G3&&liNe1@ZbL!6j9xj6m6u%Gm zzJ_?V6z0780a4rHo4<6;SEte0%;BCIbJh*yxSdx^% zEpR3589WKs6HqSmZb0(~YtoZ>x1+h4*b18g`LE%R?+D9eH9u^KCNC2}ag+^R?uqQw zj5q8?cA(}D*j0_lL2lwI|6umcWT9}bTKFD?Vs>x;ikuZPUxjc3G8)*F>nFwb&ygxBcR^`9}DQ`(t&CM z`gg-czJBBnamJyf7buJ1uB1kmcQK}E<<5aF#+f)hewg!dg7Hk(tn%R${?j;D2jg>i z*HixC%pRf1{<)p26esdRZ(~c+Vup_ehQD*>oo{T>?2XyPUTaFe+Jtn>oml6u{iBhZ zq}=Hz^#Zz1SJ*3#LU>bv*TRX|^SW~H(Nu7qDW{eFd*Hw(>f$)HDMnpVR`b=A>D~UV zkvtZ|u;=LAe5wQXZkcnOc>@g|T?ejY{ICA~d+Aj;fO}DGZnYM|`Q?7Ku7w+R`qx7{ zT=h3oma2RX$;BS>16B2w!40q%$6w%PpJ&J^2D1GD$<8A~IPkjV3OHk-Z{RKXI19;F z4h$B4FZv$m!>w?%n{vD!iX6`{7HBUyQwJIUsZHu2FMAtJsZt4@>E@+@^{e=wgp1$w z*MIdjnk<4#)G2xiUKa?b-WfB*u=T7%*U|-AOlcx4H*dFGM;(3SFJnF2u-IS5C(iLK z<6xXU?`Hh%<1{d3ZbQRq!#m z{x}Oz6?4%9UYuY0JQ3dYmCwI}_n$CjL)5;lNz#q9pp$+-tcSP3#meB2n|OoZ@Itl1 za(FWA9o<*pV8A#0`fUE>UwGNXz@yD2A><5{<9((4qpt}-#Y zh(`omp?E&r4o^^A8|gQe-gp}&d+c66L93kuV~uHs{pc<3P3Xj0WN}< z!d^?Nb#{(7>WmqKXA)0^pMV8$f>^R&+1(7c!IkQ$3@@RlPw_wLmcVJ~_g3rK4xb1l zNbYc6ztMO-A?s_JOnMiq^CRgYx76Tt<>+Gqtd94&f8>SRjDtxTY}nxxOLEn^H#xOa zjNS3JgSnbitFvbvEFg|{Z)4+Rox8CYGp~APZ}OSRe5_~j*-!p<^s!`|a{tb3O;+`_ zq*Sq9$_vW&nWX>N=p+QM9+c4!jk;b*LPY;*Z!fDyzXeV;H zl6s|Z9lYuv1eg$;PuG!ewW3$BD?bfxL%v2WU@g3Ya$cnL_rMij#2Sz*ZyB8DW-I!< zO%}Jz8CXGSXDWr4;p#enMLk1wuzH^t!om6f`Iq^Taa3ftaP)oYI$R5P1Tu6QZaYA4 zcNc6UaAg;2ygO%21+X42BZWQ8H{pKq{NT62l&xyMxhu>TxtD|MuL!mq=U1}E|R?GteBLj>ri6o*%sJTTw%7q9|uWDD0R{Z@GI z%kEF6c1&T0b#{vW32)oSyF#rfGt8cEGi3+Yr0d{8_%H^%EhxBzBITpjy}#Z0r{FS9 zkr!|xw@mSfSitVQMw?j5DL9S)s6ygEKF(3-Q2b&B5yPIr*Rx0&TfiZR%Fi0glld_d z5?Y-m^Wf+gyJ8#OK+O;@8H$s);88p<+&_u%yYMFFZBL+J7%#fvVVR&-Tm@IRTG5xF z8}V0g&SzHChs&d~$pAHzrsT`vbr;31J$L@LkvuHOh0;M{?Jk)IyTe5++k5fQlx zdB4ISr@*V?4RCPJLRawB@?TbGO-zLs@%GJ8`j5l;pOaF>@4~^pAUV_+Z|6caUkoR1 zvCU|QcLR8vfd(2ynG(2U498?^?5oF}Z-)27Zqd11aV3xX7x~UtTrif-_Ay^Eszy#- zqsir)NI4lw;`SYTE%GgXMssMnJM7_|tx(DtC^h_Jw0yFAG5dSC6;5Rjy)F9$HUoU~ z6oUFG_PTciY$`gtQDsa$yODhW+gn3cG(uNl)9sps0tT;`#xeRX_QSk8e;TeF8oQcY z9$!r7>>rj!RRa_6;8=|ygNk2(E2;WYbu8!3Iy<2EW@+|Wt##0B_OLsBKpB`0H}S0gOSf%4^^TxI`Ifh0`vzI;%RJ+*iPEZ+G>};Z(My zSn(cs1M@YC?eN{KAl-`oEbc1Y0#~5m9m^&-^)gbZ6n=y!z^fEDms1y)vm%w^{DlNO z$Pc(0ZpyNv4@B4g+wh_RVQGpj*p@R4IZ|30A(#7)z|FXcaUlwq#Z3+ED|5@Ws z|9zo-U4C{dGU-t0QfK6$P+Pa3pTDooDDLyiUSn|&{Wk(-DRI4C{W6sKpf=CRS{V2A G{r?Y71*K<_`iBr6R+$w3jwy_^T+v#HcXHp~;FoRQj?$ zeo9jV(;2Po$CRT~+R<{xYUo9U=`-!&WKV1~v4>@o78T|Do^$uT=QN-CgO8u@-fQi> z*4k^Yz0P&d)?O`Jdo9V-`Y-LH4fz{Yz`#F_FU2rj#nR2frq)g{GKF?fd$?efojaF|4+Hj45eq z_%BY@KlGiNr4y|!MG*-x?w-nxUy0O?GbLHcl{@MC^#gj@-JIU6tNqs50_)BdP4-;DDXDea;4V0%=Y(e&z;uE}x&VX6(D;`~aA{nLHDw6%nd_78Re+yJ|BZk}(3TLSzUEK~gaxw9LQo9gG+ zZdj)Jkw{M_GSf_HRqKs|>!!yeZ_8Z_lwNB}krLPlHwO4HEZ4;qr0*G;v;}xF{6>j? zQJ2B(*PD`$n(M%S!{!XrJ6f0X&eUWeYx(?^-D$zybF$blIE=VT<;#XFC+|7W=aj~x*@rrzoHvWFMC~X z;jc8nXBnDQ!?D{t6Rr*L26z$dCZnt032&KY%6i3RT*oHnCq&tn7a2%F;CUsG7UmjH z^NZyacw2xQ;92FSR4e(&0}?UnCQ}aKx2~VB$vg%s z0|KwX9c(y-4cs&Cf{U5YP&~@ndt5(Hw=;Ta(mIcg)hn?KUR{Id6gt=Q=S@wHSDR9) z=I8b&GIJ=>ir2%7uZ_sLYTaXSEu5k_JB!E#xC*ZH*_NTd#RXCzrcebpUl);7wZKd8 z7C1KlHC%#$h0MDKRu9l*9P{o`x{kgK7YF1|z^QCFUCrn5{vCl!JvMZ?vp#%6-)_&R zJ{8}`y6ObBB9}bhzh%A7)g%orRF2;R2kY53xHwSXeuO))BUVsH4bo(Pz%CoEEs6W3 z%K+!HlX`dE{(E1p`$MtotV#B7IE4V$!^Lo{o;AZ6a1su=0r?hg4#>|uhZ76%`>+Ye z^t<2`I4P=M|KYd#!PIh&J$Nd$^>26TGql4_)_3};uy&f0bxL28lv|UnNx@Qdy)@M1 zD7;{aUrR@v$J#fVVG!%BhfU>M zYmO!pP>cn&cP{$}7P=PRAK+DR3;LN#zt=ELhO989Q>}j|95_T>wmOGTH`b))?!JgL zE%&cWS^*2gu`GP|VjP8I*Q=YeIn$u&Ixv!~+2|LZb1B-HaGEmUT6o@UKU-J9wXgV( z%{TCbmrR+b0-AdP`yf9EeK))3!YAOE9k0Nlo8mlEPBKst5EyYGmFi{xMDB-6eFbTP zE#$|l4Z=9SA;6czX~@UkibeH#=NMJmCg+)Rj7PPre6|su3c+Pw*!Y{(d;aCQL0hjy} z2UNzGmr>IX`8)|;aMe5(B=+Ya#wE?~J zry}3sx1o2z+u$6v-B+*~NU54>90dAjGVfjm2d?^(jufr-19Ai0 z$b76Mt#QHy#u}q6rv!Tfa<{|HC;8M;>u!M8ePhZ3byY@Q&(#SupLf9}=%*`xUV{e) z0;D_PLSuV!?g?tlp&$I_a1n9Y1`kyGv|(S-k3MJBpPXPENX_QF)}CnzmCJjlUvLgj zGjh&&apg5Bk5T^yM|~{KSg?a+2k|{e&?i zY@cGCKO={~-i^8R4mvfMWj$U9zZl?Vczr;=+aD-xaI7bv2tON`UjlCo=zj=r@Y$BL zFmz2oVH*6BFCcU7(&Xg;e|I;p4oqA;124KqlcxiGFZ?7Nb7(u<7|_>i-HK(Y65>Rj zGm_ikrOJqPdbyIH+C9!BgUA?5jn0-CE?ihB0cEnlnS7W209d#~y)3_u_%Xb#O>%KgH z;kT~-4W<;cPY=-~mtO|!9*ur6xLgIdog48gkjulqM*gp+m>iAEdZ&oF-12_NbNMjb z`H$#*bb07^B54OLDaB5gOW{2`;%v)G209K|l0jm+0w2MlBbKaH3TfYqjC}(GlcVz| z;f}qQ_wu^(Lw*ohhkS!_U^ZMp9@i-SC*l0IXyI|?zkrAQm*sV}J%qIB+l2x-oud@$ z;Gz}2M{RI>fD3>8`TSFGa6a^t@H1z`Yb)IiXTw_p5qcY5_aQaib=XFr+bNOKP(%uq z0k^?JKDNC6*j->Vy!c2o=TiA8_;YyR6Q(pO`6o2qvOy8=QE=riNFa4?HseQhemB0d z`4OyD$-mUyXWLbnn9eUToU!}ZyW9eg<;%)_g7Y;S`H&gL_g1&OrBL;Fxp@VGym%FnV{ znG{op98vSPz;%yX-p||ahVQ}4{~Z0v$K_LS7mtst@AAmLyxK3AvW?fx<;Cz??0D9HKMVmj zD8V3CVa)j~$gOZ&9haYlgJ+&FoQl5PiXX`gIOkZjb93ca!19TgWS;)JaIjA3c^q+v zZF;5IRhY>@%R195^)9~y*S1;S&v-5m96?q;6aDycc{kkfEUm6GaQ;X-1oUG`I;DWm zybt-9QAu}llqNT>j_^*nM?kN33G((1Kcu5*4(APymqw|92Y$y7CMu-%B$A3Vi=E-i zaB+YS!P5dfxmc6@6Q|o{E#X#lvre~q+;R{pw`U)&~@ieaC zm(d?4-TCj~!hz8@%H=DkBi}nBP0HX&H*hV75JANo;X>*}rMe}z&d}_iS+rvYO=7^p z^GeYSaShc1H^OzNTf+7B&U7XGMhb;Rd6-y6&LmiIkH^3TwBNBKc?d2_q{mVEJ!ew? z>yl_|)dCGOsRO6+I4DlPk$Vo;C|(6mz<}Yg`B@}kH5jZ>5k~IHW>+IcHbc&o}sSc+mjM>lD$qC+u^PNzYSNs?#~ano9cIv4V8h9!ud2fo0R^W{TcP*#Us7|vYYOd7_@$ZpvX;;QC!rQ(tN(OYxR=x38Y)_-RXG>j5MDL^{{fLGBryO0 delta 8110 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 delta 8061 zcmaKwdstOf+Q8qvH%CY@MZvsa?R})QGzCM&#DaoG%L=b~LB&Gzf@y`tOy;%%t0%rs zd&&+aDNSU|q}9{pY$|7TW~{83q|(V8OKh;bkXmVBV>-XR&pPbw_cY&M@LTI$?`^&7 zU2C7J4=$+r;DS}DTI=Jz`)D~2j^G=<785s$(KMN3hO_u6rLn|hT*1ED*60YksR!FS9Z3;bKzl%&pRbD8SWhAadJHa&HjKq z2AAiUlBx`R3)cjA`cER8;knA-Kj5@$OsP`x%OWrA)$NS^#8rB&DczOWmVdJhv3e!8 z;Iv5Igf>59V`Spz`mykyZ$*~on^L5ft@@F)=9yxuWkzdc&KLR@NjIXd@mHoKtMPJY z;y!(cW*MX_bz)fJ7*GRK&* zSNXAmG@1duqvJH`d=uNG^wz^!Fn_#l8thaw>x<&-H7S~8-)u^nlIzt?lWlO5;uql) zlf#k#yZ#=63#Ryf47fm(+5*z1^v;AAGv8my{}xW1>dPO1Q+>9j9~)2`wG@bO~5XRL=4XZw*Hb>2RvcM93b?MNx(r7FTgxbk+>JB4nF*2C2SJ`Qhy z+fHvh#TVd5;BBy5jPCl6;S+OB*`Rnt0ujJtqHIeA17jGdQvyfftm%HYOg~Q(Gr)Jj zHS8>}8&Sgxdug(}jL2zpZsgaeX)<7mDJ5z?nX24& zCtX_cP4ICXyHwd(2{*wp#~b0)nLa07il6?xEjt((b#p-AG7J`lB}pk952wO0g{$Ez z9L!p}mNy#W`%IV$kpm!I3uX2A7<{G#szaOti7 z=1q%S+|hU?sV4=N@rtTQby_3d`9*MpMz8@3exjx@25e6Cpj_!s91F_33?JA1FUm$bf3gq*YffwN}%*Xg3Tn3L; z^Or?trx}a1NzSe`W2H8>CWk!z*_2f(q4DHp)SJYw{J#>O{FWd8S8xejtPatnYuq;G z$CKx5y2P;cjEZaN-yfOMfLXVuPr*AI{V?+L(7VWAx5Alysj)9)ClxUMF^^WY?wRp8 z^0_H3iub^;F80@@PN3P`>37W;a0~OXE?VO<>vyX4O>j+MeR!fKOW{7u(|o!}F#}r} zh;7*V$gV-gv9V)sA}=jr?*`WNkVN3!`}}6J4KBcsSd(jaGkJk~MfGwN*#_1V4R%7Z z)=9}QUWv2cB@f-dB)=;E$@#?7>_6gX!N~{wkA;`v!ms@M^Ax-aJKdF?5!aFT!2Alh zEHJ+v-t5oY()Cxo0s{gQ;T8lopwQj8_M-^=E%|j~>hNvPLN*)gWz=K2O>2Wv>-lpc4&7edBfoy?S1z2YCQi5Y0Dc2d2YpgS7 zea!gIfLvE9AnqqVw3OZgxCt&-N98j(C-C&_HH!qWK1Ib-2tN`?P^~j0-`J9v@f0n_ z6szrNco}iGp7lT29>kAI&1(CAdpC0NIAdQ@<5)U>7fW(f*khcO@y3pLdm8Fib+g(! z)~TY*+cMaaLCtgLLhz^Y+8Wj=0=g?$o5;Q&!u)zXp$qSZ({Beix3dw!E9i z?HmumC(7F#mA9Q;mBvgxDgJIv+Es*QyYjEj$zN$Kir0-Y=Z{YrUnI;LUCM?uSR%2E z-OEP)%W8WsU025Z4oh0pPK>;dZ-+o3EQ1$4=Kr9w1>QTkYFAdm-8=HoQ2fOMnjCu4H*P&h zUBhAJ>}~MK)qZx@!&kvE=MTZzf%yRsX_D*DUn7ec$O{O(2De}!b`zb1Ps5ihgIVQV zrO3zTcRMMs8H+-8!*ULCV0=>rPma{Em?~gng(ica3434vZX?ZyAB4lqyZkU*yM_-Y z#qYssk+4iwb~`-GlLBs3d?P%jDlA_`<#k! zg;kdKbDqn`;LLr|W9jm+pG7)$;3r#<8I1=_juzlMYJ|AcEpVec{N8W^c#B#@D6xam_`c{F1A60T0*Xt@s9 zEXX%_?US+w6+tE3awJ-6N&Eo(7r1z>DX*&e(h$s+xOahTuxooN<_@!MOFHsP)`_Xn zU$Wf!$GV=&eS7e2e|hwZw_Snt3@qn+%)NYEZh>Ea);GAYCk|2*6V&{_dT}<=!`_dS zuKeg!?tlZ)yV2$N-aOWJTEbED^xXt6rUqKo`so+)wSqoM#r6c^FTw#LPD3Dx-(t_g zTi>Ec)Pg*d+mkJ+R$L1=ZjAoU;~M-7u6)^)&0JzG541SU%*QhJ_ddM7lB0*woi9)0 zx%v*bsbNPK{E30N>-a5B8A!jF2R0mwcrBc@oDU$ihk2JE{|QB=B3upE?Tr3>;u`on zJm7ItURV0&^d;qifL?^N-b5evJ&(uHH-g9R)`2KMAW_Y?AH*}L(u6op7)XM>&vV6n z;Ov&@@7Qk5%z+!>sC-Bkz&U~WRyc7`SZvy7afE8{8Pr#W?mS@A|z3^UA zNTR&?ZW)?9**$vAx$|eP;2l8?MUNG0Gl?)wRXOw3Lzzc^q0)Z<-kT7%+p2ifuygmg z4&MDYt8GiPEc)KJ(ckV|gTvtL{eDp`fP;OZ7B1jr>^5LmK5jVo`0q@wp}RZ}u5Y$2 z@3%U4;C%-A{XY7Q<8tYhq#SmO(q(f57keEa^@>}s<{sV6H;XE|$Tgb$t%j77p(JkG zui@s8{ERjgaHVU$13~c>A`s<@BP+iEKH6VHwx%>@W);lcQl*1=x zQDo_4Q1RGXk*6<|s8iDMwsRd?1P2}Z=r;O)b^_;6DF_u)1Ls>pKk-sN0zSN$Wj9nfhZ|6}7 zXT}8J-JPgf718%_W*6UqUOc-CO-oEAe;-^&M%`oU9>ad~=%y)__Zi@3@YH-h3vRIF zRaG-9?FFQ4CIS$J?x*IvEhHeeq)2fYT+Muy z;&(Fy>9{h+}P`Zdtb}IBcO8Mx!NpY1Q!C^Rfy*|oA zY4RFAIFx|_ypPIgJT>ZpQU|BjShAE)VAr9{do-zfnT&OGnf?D00}X$s2$cg}@1=8X z@%eVRHo))k#C`Pu29<*u%gEqCtF6}`LudC&9&Dj#9~iP62ae)^XOLGTT=j1ph{u6E zJnHxW$B6qpw&%ZvAL$U5RVu~zm2*~Uy|K%wX9d?Q8QY*D?BX2wr}4qjl#KM@gNF@C zPai()3jWI&HZ&_^utc6aY+RC>KCqh_H z#_ehMi&K%ucd>NnuDDGdetG^(Q{0^Y$MMM8{c-WXymIXHP_omoKQ6sOOLBgm6I!$E EKj#k@I{*Lx diff --git a/artifacts/test_program_methods/missing_output.bin b/artifacts/test_program_methods/missing_output.bin index 6bac61a9326a13d3815a6aa04a3880118e3f9a38..4a056f6dcdc6932060fc7d4bd32f3631b7e34080 100644 GIT binary patch delta 8062 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 Dlyf8t delta 8073 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 K=bICrd*Hu6>?h{{ diff --git a/artifacts/test_program_methods/modified_transfer.bin b/artifacts/test_program_methods/modified_transfer.bin index 83a6c3b8f2a793fb5b9c510b8bb192697d9873ac..65f77b77321a804676bc9a00dccb979c25942613 100644 GIT binary patch delta 8066 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 a_g5W=7A1vKo=e>qTCAlx7ZryezwbZMt0Fi6 delta 8070 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 X9FFPc4EaZ>=Q3@kGp;md^?m;YB?v8w delta 8090 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 Y;iaF2+BzK%g)$dt)147h!!OMHe{u&WQUCw| diff --git a/artifacts/test_program_methods/noop.bin b/artifacts/test_program_methods/noop.bin index 4c8248e0c973fac43dfa372bbfa9352455464204..7575a2c34097ee0bc1168a82b6e9ea7f3a377117 100644 GIT binary patch delta 8102 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 delta 8121 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�F#iBt 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 CoFb+G diff --git a/artifacts/test_program_methods/pda_spend_proxy.bin b/artifacts/test_program_methods/pda_spend_proxy.bin index 6b6e6a4172199103962f3d39622f36ba23da2003..8f7e8977b41a19be71762a8490762b4da52354c9 100644 GIT binary patch delta 8047 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 delta 8072 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 diff --git a/artifacts/test_program_methods/pinata_cooldown.bin b/artifacts/test_program_methods/pinata_cooldown.bin index d807c71cc633ea77a798bd14e90da1fe5a74ec82..5655e9588d326cb571217a94973bd10f818b2133 100644 GIT binary patch delta 8493 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 diff --git a/artifacts/test_program_methods/private_pda_delegator.bin b/artifacts/test_program_methods/private_pda_delegator.bin index 5fb955196a4f7b17bc904bf41b5cac16c691a891..163135b627fff5f47c70a8ad3e790aa8ddd4b6ac 100644 GIT binary patch delta 8061 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 diff --git a/artifacts/test_program_methods/program_owner_changer.bin b/artifacts/test_program_methods/program_owner_changer.bin index 44ab980872191f79a05789364a3769e9b953f256..185e521e87d88b3f7c9fbb506722c5f3c010b5ea 100644 GIT binary patch delta 8077 zcmZ{odwdnuwSd>moC8sUBoO2kW#$k{)PUg?qoO1{1j|zl3K$_#K-369o+@R6f^sX> z_$zRrP?LL=UapO(EjS>cV53dFDkxY`qX`O{N|0DUK|%Y?oIRPLKMQ}rx7XTxuh(9C z&uOaZ&`{H%JYC!M)Fs`tq$T;w^0h7b`o4qt^S&0@ds9qWiioD`vgNo)UT;%sG!b3b zq~RNpq`syMS6qBTx>;}N`vA{z7;9D+LRSaf9H21wd~VT?KAMSNMu}0u2NhEpG2OL;Bm5>fie`- zfaqs1AkUO^wZROyAjJFOQh0{iaMbrA2lGu?qx4V3-}qR!dru-BnS)K~sMK#4 zwkoyH;QG+E8S#0w`f+OveJQ_|FMFK6DT z`X0@Ch-fV@h)INTH!HO#MM_4PlC1Q;aHiGkb$aoMV

=2Tu1R3;RQSge){LuU47y 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 Rb0BAhw%vJmR`AKi{|9Zt7O(&S diff --git a/artifacts/test_program_methods/simple_balance_transfer.bin b/artifacts/test_program_methods/simple_balance_transfer.bin index 73f85aef885a92926c9f6cf90544fe882ed9efdc..57510322b12eebe07807842497d63214b215481f 100644 GIT binary patch delta 8056 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 NW2k#&S$NH&{|CvK9&-Qy delta 8067 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 WOK;QB{i;`RzzQSPwciY`pZ|Y+UrR** diff --git a/artifacts/test_program_methods/two_pda_claimer.bin b/artifacts/test_program_methods/two_pda_claimer.bin index 15c990c2a7b8d4ed7b16c2cf1b980ef945828d1c..33995cb7241627d32a572b8b4ab97a351549bbb2 100644 GIT binary patch delta 8072 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 VI@#lX3U*thZL=Sr8+u{>{{sauBIf`A delta 8064 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 F{~J7Z8@~Vm diff --git a/artifacts/test_program_methods/validity_window.bin b/artifacts/test_program_methods/validity_window.bin index 65aa598837bbccd619aab6f6ce6f715d247e90ac..88cbf9c3d41075220e15160155506d397878e553 100644 GIT binary patch delta 8058 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 JTN75_|Nl0+2xI^N delta 8091 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 diff --git a/artifacts/test_program_methods/validity_window_chain_caller.bin b/artifacts/test_program_methods/validity_window_chain_caller.bin index c13a3810c536c6da15881a0b829e497d03fa3dd8..a8cb56637f85762c9a59fbf0d071fca6d3a4ff92 100644 GIT binary patch delta 8491 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 AjQ{`u delta 8526 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 bvpW!s9{Xb`XrJF5nyJ*+_Vjl{s~-P92HIm4 diff --git a/integration_tests/tests/bridge.rs b/integration_tests/tests/bridge.rs index 6b9aba96..41781a68 100644 --- a/integration_tests/tests/bridge.rs +++ b/integration_tests/tests/bridge.rs @@ -495,7 +495,7 @@ async fn bedrock_deposit_claim_and_withdraw_round_trip_succeeds() -> anyhow::Res let sender_id = recipient_id; let observer = create_zone_indexer_observer(ctx.bedrock_addr())?; - let observe_fut = wait_for_finalized_withdraw_op(&observer, amount); + let observe_fut = wait_for_finalized_withdraw_op(&observer, amount, bedrock_account_pk); let withdraw_fut = execute_subcommand( ctx.wallet_mut(), @@ -513,6 +513,9 @@ async fn bedrock_deposit_claim_and_withdraw_round_trip_succeeds() -> anyhow::Res observe_result .context("Failed while waiting for finalized withdraw event from zone indexer")?; + // Sleep to observe sequencer log about validated withdraw event + tokio::time::sleep(Duration::from_secs(1)).await; + Ok(()) } @@ -563,11 +566,16 @@ async fn wait_for_finalized_withdraw_op( continue; }; - let amount = withdraw.outputs.amount().context( - "Failed to compute finalized withdraw amount from zone indexer message", - )?; + let mut iter = withdraw.outputs.iter(); + let Some(note) = iter.next() else { + continue; + }; + if iter.next().is_some() { + // Withdraw op should only have one output + continue; + } - if amount == expected_amount { + if note.value == expected_amount && note.pk == expected_receiver_pk { return Ok(()); } } diff --git a/lez/common/src/transaction.rs b/lez/common/src/transaction.rs index c30896a1..7fb32e39 100644 --- a/lez/common/src/transaction.rs +++ b/lez/common/src/transaction.rs @@ -80,11 +80,11 @@ impl LeeTransaction { ) -> Result { let diff = self.compute_state_diff(state, block_id, timestamp)?; - let system_accounts = lee::CLOCK_PROGRAM_ACCOUNT_IDS + let restricted_modification_accounts = lee::CLOCK_PROGRAM_ACCOUNT_IDS .iter() .copied() .chain(std::iter::once(lee::system_faucet_account_id())); - for account_id in system_accounts { + for account_id in restricted_modification_accounts { validate_doesnt_modify_account(state, &diff, account_id)?; } diff --git a/lez/sequencer/core/src/block_publisher.rs b/lez/sequencer/core/src/block_publisher.rs index 2cf2dc5b..ab56945f 100644 --- a/lez/sequencer/core/src/block_publisher.rs +++ b/lez/sequencer/core/src/block_publisher.rs @@ -3,19 +3,21 @@ use std::{pin::Pin, sync::Arc, time::Duration}; use anyhow::{Context as _, Result}; use common::block::Block; use log::{info, warn}; -use logos_blockchain_core::mantle::{Note, ledger::Outputs, ops::channel::inscribe::Inscription}; +use logos_blockchain_core::mantle::ops::channel::inscribe::Inscription; pub use logos_blockchain_key_management_system_service::keys::{Ed25519Key, ZkKey}; pub use logos_blockchain_zone_sdk::sequencer::SequencerCheckpoint; use logos_blockchain_zone_sdk::{ CommonHttpClient, adapter::NodeHttpClient, - sequencer::{Event, SequencerConfig as ZoneSdkSequencerConfig, SequencerHandle, ZoneSequencer}, - state::{DepositInfo, FinalizedOp, InscriptionInfo}, + sequencer::{ + Event, SequencerConfig as ZoneSdkSequencerConfig, SequencerHandle, WithdrawArg, + ZoneSequencer, + }, + state::{DepositInfo, FinalizedOp, InscriptionInfo, WithdrawInfo}, }; -use num_bigint::BigUint; use tokio::task::JoinHandle; -use crate::{BridgeWithdrawData, config::BedrockConfig}; +use crate::config::BedrockConfig; /// Sink for `Event::Published` checkpoints emitted by the drive task. /// Caller is responsible for persistence (e.g. writing to rocksdb). @@ -30,8 +32,16 @@ pub type FinalizedBlockSink = Box; pub type OnDepositEventSink = Box Pin + Send>> + Send + 'static>; +/// Sink for finalized Bedrock withdraw events. +pub type OnWithdrawEventSink = + Box Pin + Send>> + Send + 'static>; + #[expect(async_fn_in_trait, reason = "We don't care about Send/Sync here")] pub trait BlockPublisherTrait: Clone { + #[expect( + clippy::too_many_arguments, + reason = "Looks better than bundling all those callbacks into a struct" + )] async fn new( config: &BedrockConfig, bedrock_signing_key: Ed25519Key, @@ -40,15 +50,12 @@ pub trait BlockPublisherTrait: Clone { on_checkpoint: CheckpointSink, on_finalized_block: FinalizedBlockSink, on_deposit_event: OnDepositEventSink, + on_withdraw_event: OnWithdrawEventSink, ) -> Result; /// Fire-and-forget publish. Zone-sdk drives the actual submission and /// retries internally; this just hands the payload off. - async fn publish_block( - &self, - block: &Block, - bridge_withdrawals: Vec, - ) -> Result<()>; + async fn publish_block(&self, block: &Block, withdrawals: Vec) -> Result<()>; } /// Real block publisher backed by zone-sdk's `ZoneSequencer`. @@ -76,6 +83,7 @@ impl BlockPublisherTrait for ZoneSdkPublisher { on_checkpoint: CheckpointSink, on_finalized_block: FinalizedBlockSink, on_deposit_event: OnDepositEventSink, + on_withdraw_event: OnWithdrawEventSink, ) -> Result { let basic_auth = config.auth.clone().map(Into::into); let node = NodeHttpClient::new(CommonHttpClient::new(basic_auth), config.node_url.clone()); @@ -112,7 +120,9 @@ impl BlockPublisherTrait for ZoneSdkPublisher { FinalizedOp::Deposit(deposit) => { on_deposit_event(deposit).await; } - FinalizedOp::Withdraw(_) => {} + FinalizedOp::Withdraw(withdraw) => { + on_withdraw_event(withdraw).await; + } } } } @@ -132,18 +142,14 @@ impl BlockPublisherTrait for ZoneSdkPublisher { }) } - async fn publish_block( - &self, - block: &Block, - bridge_withdrawals: Vec, - ) -> Result<()> { + async fn publish_block(&self, block: &Block, withdrawals: Vec) -> Result<()> { let data = borsh::to_vec(block).context("Failed to serialize block")?; let data_bounded: Inscription = data .try_into() .context("Block data exceeds maximum allowed size")?; let data_byte_size = data_bounded.len(); - if bridge_withdrawals.is_empty() { + if withdrawals.is_empty() { self.handle .publish_message(data_bounded) .await @@ -154,23 +160,9 @@ impl BlockPublisherTrait for ZoneSdkPublisher { return Ok(()); } - let withdraws: Vec<_> = bridge_withdrawals - .into_iter() - .map(|withdrawal| { - let recipient_pk = - logos_blockchain_key_management_system_service::keys::ZkPublicKey::from( - BigUint::from_bytes_le(&withdrawal.bedrock_account_pk), - ); - - logos_blockchain_zone_sdk::sequencer::WithdrawArg { - outputs: Outputs::new(Note::new(withdrawal.amount, recipient_pk)), - } - }) - .collect(); - - let withdraw_count = withdraws.len(); + let withdraw_count = withdrawals.len(); self.handle - .publish_atomic_withdraw(data_bounded, withdraws) + .publish_atomic_withdraw(data_bounded, withdrawals) .await .context("Failed to publish block with withdrawals")?; diff --git a/lez/sequencer/core/src/block_store.rs b/lez/sequencer/core/src/block_store.rs index 8a2e9265..4e5489ff 100644 --- a/lez/sequencer/core/src/block_store.rs +++ b/lez/sequencer/core/src/block_store.rs @@ -10,7 +10,10 @@ use lee::V03State; use log::info; use logos_blockchain_zone_sdk::sequencer::SequencerCheckpoint; pub use storage::DbResult; -use storage::sequencer::{RocksDBIO, sequencer_cells::PendingDepositEventRecord}; +use storage::sequencer::{ + RocksDBIO, + sequencer_cells::{PendingDepositEventRecord, WithdrawalReconciliationKey}, +}; pub struct SequencerStore { dbio: Arc, @@ -128,9 +131,16 @@ impl SequencerStore { self.dbio.get_all_blocks() } - pub(crate) fn update(&mut self, block: &Block, state: &V03State) -> DbResult<()> { + pub(crate) fn update( + &mut self, + block: &Block, + deposit_event_ids: &[HashType], + withdrawals: Vec, + state: &V03State, + ) -> DbResult<()> { let new_transactions_map = block_to_transactions_map(block); - self.dbio.atomic_update(block, state)?; + self.dbio + .atomic_update(block, deposit_event_ids, withdrawals, state)?; self.tx_hash_to_block_map.extend(new_transactions_map); Ok(()) } @@ -158,23 +168,6 @@ impl SequencerStore { pub fn get_unfulfilled_deposit_events(&self) -> DbResult> { self.dbio.get_pending_deposit_events() } - - pub fn mark_unfulfilled_deposit_events_submitted( - &self, - deposit_op_ids: &[HashType], - submitted_block_id: u64, - ) -> DbResult { - self.dbio - .mark_pending_deposit_events_submitted(deposit_op_ids, submitted_block_id) - } - - pub fn remove_fulfilled_unfulfilled_deposit_events_up_to_block( - &self, - finalized_block_id: u64, - ) -> DbResult { - self.dbio - .remove_fulfilled_pending_deposit_events_up_to_block(finalized_block_id) - } } pub(crate) fn block_to_transactions_map(block: &Block) -> HashMap { @@ -227,7 +220,9 @@ mod tests { assert_eq!(None, retrieved_tx); // Add the block with the transaction let dummy_state = V03State::new_with_genesis_accounts(&[], vec![], 0); - node_store.update(&block, &dummy_state).unwrap(); + node_store + .update(&block, &[], vec![], &dummy_state) + .unwrap(); // Try again let retrieved_tx = node_store.get_transaction_by_hash(tx.hash()); assert_eq!(Some(tx), retrieved_tx); @@ -292,7 +287,9 @@ mod tests { let block_hash = block.header.hash; let dummy_state = V03State::new_with_genesis_accounts(&[], vec![], 0); - node_store.update(&block, &dummy_state).unwrap(); + node_store + .update(&block, &[], vec![], &dummy_state) + .unwrap(); // Verify that the latest block meta now equals the new block's hash let latest_meta = node_store.latest_block_meta().unwrap(); @@ -328,7 +325,9 @@ mod tests { let block_id = block.header.block_id; let dummy_state = V03State::new_with_genesis_accounts(&[], vec![], 0); - node_store.update(&block, &dummy_state).unwrap(); + node_store + .update(&block, &[], vec![], &dummy_state) + .unwrap(); // Verify initial status is Pending let retrieved_block = node_store.get_block_at_id(block_id).unwrap().unwrap(); @@ -377,7 +376,12 @@ mod tests { // Add a new block let block = common::test_utils::produce_dummy_block(1, None, vec![tx.clone()]); node_store - .update(&block, &V03State::new_with_genesis_accounts(&[], vec![], 0)) + .update( + &block, + &[], + vec![], + &V03State::new_with_genesis_accounts(&[], vec![], 0), + ) .unwrap(); } diff --git a/lez/sequencer/core/src/lib.rs b/lez/sequencer/core/src/lib.rs index 60345357..722a081b 100644 --- a/lez/sequencer/core/src/lib.rs +++ b/lez/sequencer/core/src/lib.rs @@ -12,11 +12,16 @@ use lee::{AccountId, PublicTransaction, program::Program, public_transaction::Me use lee_core::GENESIS_BLOCK_ID; use log::{error, info, warn}; use logos_blockchain_key_management_system_service::keys::{ED25519_SECRET_KEY_SIZE, Ed25519Key}; +use logos_blockchain_zone_sdk::sequencer::WithdrawArg; use mempool::{MemPool, MemPoolHandle}; #[cfg(feature = "mock")] pub use mock::SequencerCoreWithMockClients; +use num_bigint::BigUint; pub use storage::error::DbError; -use storage::sequencer::sequencer_cells::PendingDepositEventRecord; +use storage::sequencer::{ + RocksDBIO, + sequencer_cells::{PendingDepositEventRecord, WithdrawalReconciliationKey}, +}; use crate::{ block_publisher::{BlockPublisherTrait, ZoneSdkPublisher}, @@ -126,112 +131,18 @@ impl SequencerCore { .expect("Failed to load zone-sdk checkpoint"); let is_fresh_start = initial_checkpoint.is_none(); - let dbio_for_checkpoint = store.dbio(); - let on_checkpoint: block_publisher::CheckpointSink = Box::new(move |cp| { - let bytes = match serde_json::to_vec(&cp) { - Ok(b) => b, - Err(err) => { - error!("Failed to serialize zone-sdk checkpoint: {err:#}"); - return; - } - }; - if let Err(err) = dbio_for_checkpoint.put_zone_sdk_checkpoint_bytes(&bytes) { - error!("Failed to persist zone-sdk checkpoint: {err:#}"); - } - }); - - let dbio_for_finalized = store.dbio(); - let on_finalized_block: block_publisher::FinalizedBlockSink = Box::new(move |block_id| { - // NOTE: Theoretically Zone SDK may report finalization happening multiple times for the - // same block. In practice this is very unlikely to happen. For that to - // happen Sequencer should crash between receiving Finalized and Checkpoint events while - // these events happen very fast (because Checkpoints are generated by Zone SDK - // locally). - - if let Err(err) = dbio_for_finalized.clean_pending_blocks_up_to(block_id) { - error!("Failed to mark pending blocks finalized up to {block_id}: {err:#}"); - } - - match dbio_for_finalized.remove_fulfilled_pending_deposit_events_up_to_block(block_id) { - Ok(0) => {} - Ok(removed) => { - info!( - "Removed {removed} fulfilled pending deposit events up to finalized block {block_id}" - ); - } - Err(err) => { - error!( - "Failed to remove fulfilled pending deposit events up to block {block_id}: {err:#}" - ); - } - } - }); - let (mempool, mempool_handle) = MemPool::new(config.mempool_max_size); - replay_unfulfilled_deposit_events(&store, mempool_handle.clone()); - let mempool_handle_for_deposit = mempool_handle.clone(); - let dbio_for_deposit = store.dbio(); - let on_deposit_event: block_publisher::OnDepositEventSink = Box::new(move |deposit| { - // NOTE: Theoretically Zone SDK may report multiple identical deposits. In practice this - // is very unlikely to happen. For that to happen Sequencer should crash - // between receiving Deposit and Checkpoint events while these events happen - // very fast (because Checkpoints are generated by Zone SDK locally). - - let dbio_for_deposit = Arc::clone(&dbio_for_deposit); - let mempool_handle_for_deposit = mempool_handle_for_deposit.clone(); - Box::pin(async move { - let id_hex = hex::encode(deposit.op_id); - info!("Observed Bedrock Deposit event with id: {id_hex}"); - - let event_record = pending_deposit_event_record(&deposit); - - match dbio_for_deposit.add_pending_deposit_event(event_record.clone()) { - Ok(true) => {} - Ok(false) => { - info!( - "Deposit event {id_hex} already persisted as unfulfilled, skipping duplicate enqueue", - ); - return; - } - Err(err) => { - error!( - "Failed to persist unfulfilled deposit event {id_hex} before enqueue: {err:#}. Deposit will be lost.", - ); - return; - } - } - - let tx = match build_bridge_deposit_tx_from_event(&event_record) { - Ok(tx) => tx, - Err(err) => { - error!( - "Failed to build transaction from Bedrock deposit event {id_hex}: {err:#}. Deposit will be lost.", - ); - return; - } - }; - - if let Err(err) = mempool_handle_for_deposit - .push((TransactionOrigin::Sequencer, tx)) - .await - { - error!( - "Failed to queue sequencer transaction built from finalized Bedrock event: {err:#}. Deposit will be lost." - ); - } - }) - }); - let block_publisher = BP::new( &config.bedrock_config, bedrock_signing_key, config.retry_pending_blocks_timeout, initial_checkpoint, - on_checkpoint, - on_finalized_block, - on_deposit_event, + Self::on_checkpoint(store.dbio()), + Self::on_finalized_block(store.dbio()), + Self::on_deposit_event(store.dbio(), mempool_handle.clone()), + Self::on_withdraw_event(store.dbio()), ) .await .expect("Failed to initialize Block Publisher"); @@ -259,32 +170,163 @@ impl SequencerCore { (sequencer_core, mempool_handle) } + fn on_checkpoint(dbio: Arc) -> block_publisher::CheckpointSink { + Box::new(move |cp| { + let bytes = match serde_json::to_vec(&cp) { + Ok(b) => b, + Err(err) => { + error!("Failed to serialize zone-sdk checkpoint: {err:#}"); + return; + } + }; + if let Err(err) = dbio.put_zone_sdk_checkpoint_bytes(&bytes) { + error!("Failed to persist zone-sdk checkpoint: {err:#}"); + } + }) + } + + fn on_finalized_block(dbio: Arc) -> block_publisher::FinalizedBlockSink { + Box::new(move |block_id| { + // NOTE: Theoretically Zone SDK may report finalization happening multiple times for the + // same block. In practice this is very unlikely to happen. For that to + // happen Sequencer should crash between receiving Finalized and Checkpoint events while + // these events happen very fast (because Checkpoints are generated by Zone SDK + // locally). + + if let Err(err) = dbio.clean_pending_blocks_up_to(block_id) { + error!("Failed to mark pending blocks finalized up to {block_id}: {err:#}"); + } + + match dbio.remove_fulfilled_pending_deposit_events_up_to_block(block_id) { + Ok(0) => {} + Ok(removed) => { + info!( + "Removed {removed} fulfilled pending deposit events up to finalized block {block_id}" + ); + } + Err(err) => { + error!( + "Failed to remove fulfilled pending deposit events up to block {block_id}: {err:#}" + ); + } + } + }) + } + + fn on_deposit_event( + dbio: Arc, + mempool_handle: MemPoolHandle<(TransactionOrigin, LeeTransaction)>, + ) -> block_publisher::OnDepositEventSink { + Box::new(move |deposit| { + // NOTE: Theoretically Zone SDK may report multiple identical deposits. In practice this + // is very unlikely to happen. For that to happen Sequencer should crash + // between receiving Deposit and Checkpoint events while these events happen + // very fast (because Checkpoints are generated by Zone SDK locally). + + let dbio = Arc::clone(&dbio); + let mempool_handle = mempool_handle.clone(); + + Box::pin(async move { + let id_hex = hex::encode(deposit.op_id); + info!("Observed Bedrock Deposit event with id: {id_hex}"); + + let event_record = pending_deposit_event_record(&deposit); + + match dbio.add_pending_deposit_event(event_record.clone()) { + Ok(true) => {} + Ok(false) => { + info!( + "Deposit event {id_hex} already persisted as unfulfilled, skipping duplicate enqueue", + ); + return; + } + Err(err) => { + error!( + "Failed to persist unfulfilled deposit event {id_hex} before enqueue: {err:#}. Deposit will be lost.", + ); + return; + } + } + + let tx = match build_bridge_deposit_tx_from_event(&event_record) { + Ok(tx) => tx, + Err(err) => { + error!( + "Failed to build transaction from Bedrock deposit event {id_hex}: {err:#}. Deposit will be lost.", + ); + return; + } + }; + + if let Err(err) = mempool_handle + .push((TransactionOrigin::Sequencer, tx)) + .await + { + error!( + "Failed to queue sequencer transaction built from finalized Bedrock event: {err:#}. Deposit will be lost." + ); + } + }) + }) + } + + fn on_withdraw_event(dbio: Arc) -> block_publisher::OnWithdrawEventSink { + Box::new(move |withdraw| { + let dbio = Arc::clone(&dbio); + Box::pin(async move { + let hash_encoded = hex::encode(withdraw.tx_hash.as_ref()); + let withdraw_key = match withdraw_event_reconciliation_key(&withdraw.op.outputs) { + Ok(key) => key, + Err(err) => { + error!( + "Failed to build reconciliation key for Bedrock Withdraw event with tx_hash {hash_encoded}: {err:#}" + ); + return; + } + }; + + match dbio.consume_unseen_withdraw_count(withdraw_key) { + Ok(true) => { + info!("Validated Bedrock Withdraw event with tx_hash: {hash_encoded}"); + } + Ok(false) => warn!( + "Unexpected Bedrock Withdraw event with tx_hash {hash_encoded}: no matching unseen withdraw found" + ), + Err(err) => error!( + "Failed to reconcile Bedrock Withdraw event with tx_hash {hash_encoded}: {err:#}" + ), + } + }) + }) + } + /// Produces a new block from mempool transactions and publishes it via zone-sdk. pub async fn produce_new_block(&mut self) -> Result { let BlockWithMeta { block, deposit_event_ids, - bridge_withdrawals, + withdrawals, } = self .build_block_from_mempool() .context("Failed to build block from mempool transactions")?; + let withdrawal_reconciliation_keys = withdrawals + .iter() + .map(|withdraw| withdraw_event_reconciliation_key(&withdraw.outputs)) + .collect::>() + .context("Failed to build reconciliation keys for block withdrawals")?; + self.block_publisher - .publish_block(&block, bridge_withdrawals) + .publish_block(&block, withdrawals) .await .context("Failed to publish block to Bedrock")?; - self.store.update(&block, &self.state)?; - - let updated_deposits = self - .store - .mark_unfulfilled_deposit_events_submitted(&deposit_event_ids, block.header.block_id)?; - if updated_deposits > 0 { - info!( - "Marked {updated_deposits} pending deposit events as submitted in block {}", - block.header.block_id - ); - } + self.store.update( + &block, + &deposit_event_ids, + withdrawal_reconciliation_keys, + &self.state, + )?; Ok(self.chain_height) } @@ -298,7 +340,7 @@ impl SequencerCore { let mut valid_transactions = Vec::new(); let mut deposit_event_ids = Vec::new(); - let mut bridge_withdrawals = Vec::new(); + let mut withdrawals = Vec::new(); let max_block_size = usize::try_from(self.sequencer_config.max_block_size.as_u64()) .expect("`max_block_size` should fit into usize"); @@ -364,7 +406,7 @@ impl SequencerCore { }; if let Some(withdraw_data) = extract_bridge_withdraw_data(&tx) { - bridge_withdrawals.push(withdraw_data); + withdrawals.push(withdraw_data); } self.state.apply_state_diff(validated_diff); @@ -424,7 +466,7 @@ impl SequencerCore { Ok(BlockWithMeta { block, deposit_event_ids, - bridge_withdrawals, + withdrawals, }) } @@ -484,13 +526,7 @@ impl SequencerCore { struct BlockWithMeta { block: Block, deposit_event_ids: Vec, - bridge_withdrawals: Vec, -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct BridgeWithdrawData { - pub amount: u64, - pub bedrock_account_pk: [u8; 32], + withdrawals: Vec, } /// Checks the database for any pending deposit events that have not yet been marked as submitted in @@ -681,7 +717,7 @@ fn extract_bridge_deposit_id(tx: &LeeTransaction) -> Option { } #[must_use] -fn extract_bridge_withdraw_data(tx: &LeeTransaction) -> Option { +fn extract_bridge_withdraw_data(tx: &LeeTransaction) -> Option { let LeeTransaction::Public(tx) = tx else { return None; }; @@ -699,16 +735,55 @@ fn extract_bridge_withdraw_data(tx: &LeeTransaction) -> Option Some(BridgeWithdrawData { - amount, - bedrock_account_pk, - }), + } => { + let recipient_pk = + logos_blockchain_key_management_system_service::keys::ZkPublicKey::from( + BigUint::from_bytes_le(&bedrock_account_pk), + ); + + Some(WithdrawArg { + outputs: logos_blockchain_core::mantle::ledger::Outputs::new( + logos_blockchain_core::mantle::Note::new(amount, recipient_pk), + ), + }) + } bridge_core::Instruction::Deposit { .. } => unreachable!( "Deposit instructions from users should never pass validation, and thus should never be seen here" ), } } +fn withdraw_event_reconciliation_key( + outputs: &logos_blockchain_core::mantle::ledger::Outputs, +) -> Result { + let [note] = outputs.as_ref().as_slice() else { + return Err(anyhow!( + "Unsupported withdraw output count for reconciliation: {}", + outputs.len() + )); + }; + + // `extract_bridge_withdraw_data` maps [u8;32] LE -> BigUint -> ZkPublicKey. + // Reconcile by reversing that direction here. + let mut bedrock_account_pk = BigUint::from(note.pk.into_inner()).to_bytes_le(); + if bedrock_account_pk.len() > 32 { + return Err(anyhow!( + "Withdraw recipient public key is too large: {} bytes", + bedrock_account_pk.len() + )); + } + bedrock_account_pk.resize(32, 0); + + let bedrock_account_pk: [u8; 32] = bedrock_account_pk + .try_into() + .expect("Public key bytes were padded/truncated to 32 bytes"); + + Ok(WithdrawalReconciliationKey { + amount: note.value, + bedrock_account_pk, + }) +} + /// Load signing key from file or generate a new one if it doesn't exist. fn load_or_create_signing_key(path: &Path) -> Result { if path.exists() { @@ -755,7 +830,7 @@ mod tests { system_bridge_account_id, }; use lee_core::{ - Commitment, InputAccountIdentity, Nullifier, + Commitment, EncryptedAccountData, InputAccountIdentity, Nullifier, account::{AccountWithMetadata, Nonce}, }; use logos_blockchain_core::mantle::ops::channel::ChannelId; @@ -1586,6 +1661,11 @@ mod tests { instruction, vec![ InputAccountIdentity::PrivateAuthorizedUpdate { + epk: EphemeralPublicKey(vec![12_u8; 1088]), + view_tag: EncryptedAccountData::compute_view_tag( + &sender_keys.nullifier_public_key, + &sender_keys.viewing_public_key, + ), ssk: shared_secret, nsk: sender_keys.private_key_holder.nullifier_secret_key, membership_proof: state @@ -1599,17 +1679,8 @@ mod tests { ) .expect("Execution should succeed"); - let message = Message::try_from_circuit_output( - vec![bridge_account_id], - vec![], - vec![( - sender_keys.nullifier_public_key, - sender_keys.viewing_public_key, - EphemeralPublicKey(vec![12_u8; 1088]), - )], - output, - ) - .expect("Message construction should succeed"); + let message = Message::try_from_circuit_output(vec![bridge_account_id], vec![], output) + .expect("Message construction should succeed"); let witness_set = lee::privacy_preserving_transaction::WitnessSet::for_message(&message, proof, &[]); let tx = LeeTransaction::PrivacyPreserving(PrivacyPreservingTransaction::new( diff --git a/lez/sequencer/core/src/mock.rs b/lez/sequencer/core/src/mock.rs index 0b0024ac..5f2ab8cf 100644 --- a/lez/sequencer/core/src/mock.rs +++ b/lez/sequencer/core/src/mock.rs @@ -3,12 +3,12 @@ use std::time::Duration; use anyhow::Result; use common::block::Block; use logos_blockchain_key_management_system_service::keys::Ed25519Key; +use logos_blockchain_zone_sdk::sequencer::WithdrawArg; use crate::{ - BridgeWithdrawData, block_publisher::{ BlockPublisherTrait, CheckpointSink, FinalizedBlockSink, OnDepositEventSink, - SequencerCheckpoint, + OnWithdrawEventSink, SequencerCheckpoint, }, config::BedrockConfig, }; @@ -27,6 +27,7 @@ impl BlockPublisherTrait for MockBlockPublisher { _on_checkpoint: CheckpointSink, _on_finalized_block: FinalizedBlockSink, _on_deposit_event: OnDepositEventSink, + _on_withdraw_event: OnWithdrawEventSink, ) -> Result { Ok(Self) } @@ -34,7 +35,7 @@ impl BlockPublisherTrait for MockBlockPublisher { async fn publish_block( &self, _block: &Block, - _bridge_withdrawals: Vec, + _bridge_withdrawals: Vec, ) -> Result<()> { Ok(()) } diff --git a/lez/storage/src/sequencer/mod.rs b/lez/storage/src/sequencer/mod.rs index 803e6d60..44068517 100644 --- a/lez/storage/src/sequencer/mod.rs +++ b/lez/storage/src/sequencer/mod.rs @@ -11,12 +11,16 @@ use rocksdb::{ use crate::{ CF_BLOCK_NAME, CF_META_NAME, DB_META_FIRST_BLOCK_IN_DB_KEY, DBIO, DbResult, - cells::shared_cells::{BlockCell, FirstBlockCell, FirstBlockSetCell, LastBlockCell}, + cells::{ + SimpleStorableCell, + shared_cells::{BlockCell, FirstBlockCell, FirstBlockSetCell, LastBlockCell}, + }, error::DbError, sequencer::sequencer_cells::{ LEEStateCellOwned, LEEStateCellRef, LastFinalizedBlockIdCell, LatestBlockMetaCellOwned, LatestBlockMetaCellRef, PendingDepositEventRecord, PendingDepositEventsCellOwned, - PendingDepositEventsCellRef, ZoneSdkCheckpointCellOwned, ZoneSdkCheckpointCellRef, + PendingDepositEventsCellRef, UnseenWithdrawCountCell, WithdrawalReconciliationKey, + ZoneSdkCheckpointCellOwned, ZoneSdkCheckpointCellRef, }, }; @@ -31,6 +35,8 @@ pub const DB_META_ZONE_SDK_CHECKPOINT_KEY: &str = "zone_sdk_checkpoint"; /// Key base for storing queued deposit events that were not yet /// fulfilled on L2. pub const DB_META_PENDING_DEPOSIT_EVENTS_KEY: &str = "pending_deposit_events"; +/// Key base for counting unseen L2 withdraw intents. +pub const DB_META_UNSEEN_WITHDRAW_COUNT_KEY: &str = "unseen_withdraw_count"; /// Key base for storing the LEE state. pub const DB_LEE_STATE_KEY: &str = "lee_state"; @@ -250,6 +256,14 @@ impl RocksDBIO { self.put(&PendingDepositEventsCellRef(records), ()) } + fn put_pending_deposit_events_batch( + &self, + records: &[PendingDepositEventRecord], + batch: &mut WriteBatch, + ) -> DbResult<()> { + self.put_batch(&PendingDepositEventsCellRef(records), (), batch) + } + pub fn add_pending_deposit_event(&self, event: PendingDepositEventRecord) -> DbResult { let mut records = self.get_pending_deposit_events()?; if records @@ -263,10 +277,11 @@ impl RocksDBIO { Ok(true) } - pub fn mark_pending_deposit_events_submitted( + fn mark_pending_deposit_events_submitted( &self, deposit_op_ids: &[HashType], submitted_block_id: u64, + batch: &mut WriteBatch, ) -> DbResult { let mut records = self.get_pending_deposit_events()?; let mut updated: usize = 0; @@ -280,7 +295,7 @@ impl RocksDBIO { } if updated > 0 { - self.put_pending_deposit_events(&records)?; + self.put_pending_deposit_events_batch(&records, batch)?; } Ok(updated) @@ -306,6 +321,53 @@ impl RocksDBIO { Ok(removed) } + fn increment_unseen_withdraw_count( + &self, + withdrawal: WithdrawalReconciliationKey, + batch: &mut WriteBatch, + ) -> DbResult { + let current = self + .get_opt::(withdrawal)? + .map_or(0, |cell| cell.0); + + let next = current.checked_add(1).ok_or_else(|| { + DbError::db_interaction_error("Unseen withdraw counter overflow".to_owned()) + })?; + + self.put_batch(&UnseenWithdrawCountCell(next), withdrawal, batch)?; + + Ok(next) + } + + pub fn consume_unseen_withdraw_count( + &self, + withdrawal: WithdrawalReconciliationKey, + ) -> DbResult { + let Some(current) = self + .get_opt::(withdrawal)? + .map(|cell| cell.0) + else { + return Ok(false); + }; + + if let Some(next) = current.checked_sub(1) { + self.put(&UnseenWithdrawCountCell(next), withdrawal)?; + } else { + let cf_meta = self.meta_column(); + let db_key = + ::key_constructor(withdrawal)?; + + self.db.delete_cf(&cf_meta, db_key).map_err(|rerr| { + DbError::rocksdb_cast_message( + rerr, + Some("Failed to delete unseen withdraw count".to_owned()), + ) + })?; + } + + Ok(true) + } + pub fn put_block(&self, block: &Block, first: bool, batch: &mut WriteBatch) -> DbResult<()> { let cf_block = self.block_column(); @@ -439,11 +501,26 @@ impl RocksDBIO { }) } - pub fn atomic_update(&self, block: &Block, state: &V03State) -> DbResult<()> { + pub fn atomic_update( + &self, + block: &Block, + deposit_op_ids: &[HashType], + withdrawals: Vec, + state: &V03State, + ) -> DbResult<()> { let block_id = block.header.block_id; let mut batch = WriteBatch::default(); + self.put_block(block, false, &mut batch)?; + + self.mark_pending_deposit_events_submitted(deposit_op_ids, block_id, &mut batch)?; + + for withdrawal in withdrawals { + self.increment_unseen_withdraw_count(withdrawal, &mut batch)?; + } + self.put_lee_state_in_db_batch(state, &mut batch)?; + self.db.write(batch).map_err(|rerr| { DbError::rocksdb_cast_message( rerr, diff --git a/lez/storage/src/sequencer/sequencer_cells.rs b/lez/storage/src/sequencer/sequencer_cells.rs index 39b6a406..7672e271 100644 --- a/lez/storage/src/sequencer/sequencer_cells.rs +++ b/lez/storage/src/sequencer/sequencer_cells.rs @@ -9,7 +9,7 @@ use crate::{ sequencer::{ CF_LEE_STATE_NAME, DB_LEE_STATE_KEY, DB_META_LAST_FINALIZED_BLOCK_ID, DB_META_LATEST_BLOCK_META_KEY, DB_META_PENDING_DEPOSIT_EVENTS_KEY, - DB_META_ZONE_SDK_CHECKPOINT_KEY, + DB_META_UNSEEN_WITHDRAW_COUNT_KEY, DB_META_ZONE_SDK_CHECKPOINT_KEY, }, }; @@ -175,6 +175,52 @@ impl SimpleWritableCell for PendingDepositEventsCellRef<'_> { } } +#[derive(Debug, Clone, Copy)] +pub struct WithdrawalReconciliationKey { + pub amount: u64, + pub bedrock_account_pk: [u8; 32], +} + +#[derive(Debug, BorshSerialize, BorshDeserialize)] +pub struct UnseenWithdrawCountCell(pub u64); + +impl SimpleStorableCell for UnseenWithdrawCountCell { + type KeyParams = WithdrawalReconciliationKey; + + const CELL_NAME: &'static str = DB_META_UNSEEN_WITHDRAW_COUNT_KEY; + const CF_NAME: &'static str = CF_META_NAME; + + fn key_constructor(key_params: Self::KeyParams) -> DbResult> { + let WithdrawalReconciliationKey { + amount, + bedrock_account_pk, + } = key_params; + + borsh::to_vec(&(Self::CELL_NAME, amount, bedrock_account_pk)).map_err(|err| { + DbError::borsh_cast_message( + err, + Some(format!( + "Failed to serialize {:?} key params", + Self::CELL_NAME + )), + ) + }) + } +} + +impl SimpleReadableCell for UnseenWithdrawCountCell {} + +impl SimpleWritableCell for UnseenWithdrawCountCell { + fn value_constructor(&self) -> DbResult> { + borsh::to_vec(&self).map_err(|err| { + DbError::borsh_cast_message( + err, + Some("Failed to serialize unseen withdraw count".to_owned()), + ) + }) + } +} + #[cfg(test)] mod uniform_tests { use crate::{