diff --git a/apps/api/src/chain/client.rs b/apps/api/src/chain/client.rs index ab063e9448..0ff0d8e78b 100644 --- a/apps/api/src/chain/client.rs +++ b/apps/api/src/chain/client.rs @@ -1,6 +1,6 @@ use std::error::Error; -use primitives::{Asset, AssetBalance, Chain, ChainAddress, Transaction}; +use primitives::{Asset, AssetBalance, Chain, ChainAddress, Transaction, TransactionUpdate}; use settings_chain::{ChainProviders, TransactionsRequest}; pub struct ChainClient { @@ -51,6 +51,10 @@ impl ChainClient { self.providers.get_transaction_by_hash(chain, hash).await } + pub async fn get_transaction_status(&self, chain: Chain, hash: String) -> Result> { + self.providers.get_transaction_status(chain, hash).await + } + pub async fn get_block_transactions(&self, chain: Chain, block_number: i64, transaction_type: Option<&str>) -> Result, Box> { let transactions = self.providers.get_block_transactions(chain, block_number as u64).await?; Ok(self.filter_transactions(transactions, transaction_type)) diff --git a/apps/api/src/chain/transaction.rs b/apps/api/src/chain/transaction.rs index f1be898ea4..4dc77dbcf6 100644 --- a/apps/api/src/chain/transaction.rs +++ b/apps/api/src/chain/transaction.rs @@ -2,7 +2,7 @@ use rocket::{State, get, tokio::sync::Mutex}; use crate::params::ChainParam; use crate::responders::{ApiError, ApiResponse}; -use primitives::Transaction; +use primitives::{Transaction, TransactionUpdate}; use super::ChainClient; @@ -10,3 +10,8 @@ use super::ChainClient; pub async fn get_transaction(chain: ChainParam, hash: &str, client: &State>) -> Result>, ApiError> { Ok(client.lock().await.get_transaction_by_hash(chain.0, hash.to_string()).await?.into()) } + +#[get("/chain/transactions///status")] +pub async fn get_transaction_status(chain: ChainParam, hash: &str, client: &State>) -> Result, ApiError> { + Ok(client.lock().await.get_transaction_status(chain.0, hash.to_string()).await?.into()) +} diff --git a/apps/api/src/main.rs b/apps/api/src/main.rs index d382f5f021..4e9c2e028f 100644 --- a/apps/api/src/main.rs +++ b/apps/api/src/main.rs @@ -95,6 +95,7 @@ fn mount_routes(rocket: Rocket, admin_enabled: bool) -> Rocket { chain::nft::get_nft_asset, chain::nft::get_nft_collection, chain::transaction::get_transaction, + chain::transaction::get_transaction_status, referral::get_rewards_leaderboard, swap::post_near_intents_quote, swap::okx::post_okx_quote, diff --git a/crates/gem_ton/src/address.rs b/crates/gem_ton/src/address.rs index 7dfbc2ebb3..ab16afb5c9 100644 --- a/crates/gem_ton/src/address.rs +++ b/crates/gem_ton/src/address.rs @@ -9,7 +9,8 @@ type Workchain = i32; type HashPart = [u8; 32]; type RawBytes = [u8; 33]; -const USER_FRIENDLY_FLAG: u8 = 0x11; +const TAG_BOUNCEABLE_MAINNET: u8 = 0x11; +const TAG_NON_BOUNCEABLE_MAINNET: u8 = TAG_BOUNCEABLE_MAINNET | 0x40; const RAW_ADDRESS_LEN: usize = 33; const USER_FRIENDLY_ADDRESS_LEN: usize = 36; @@ -72,10 +73,10 @@ impl Address { Ok(()) } - fn encode_user_friendly(&self) -> String { + fn encode_user_friendly(&self, flag: u8) -> String { let mut buffer = [0u8; USER_FRIENDLY_ADDRESS_LEN]; - buffer[0] = USER_FRIENDLY_FLAG; + buffer[0] = flag; buffer[1..RAW_ADDRESS_LEN + 1].copy_from_slice(&self.bytes); let crc = crc16(&buffer[..RAW_ADDRESS_LEN + 1]); @@ -84,6 +85,14 @@ impl Address { encode_base64_url(&buffer) } + + pub fn encode_bounceable(&self) -> String { + self.encode_user_friendly(TAG_BOUNCEABLE_MAINNET) + } + + pub fn encode_non_bounceable(&self) -> String { + self.encode_user_friendly(TAG_NON_BOUNCEABLE_MAINNET) + } } impl FromStr for Address { @@ -119,7 +128,7 @@ impl AddressTrait for Address { } fn encode(&self) -> String { - self.encode_user_friendly() + self.encode_bounceable() } } diff --git a/crates/gem_ton/src/models/transaction.rs b/crates/gem_ton/src/models/transaction.rs index d370314adb..3738737236 100644 --- a/crates/gem_ton/src/models/transaction.rs +++ b/crates/gem_ton/src/models/transaction.rs @@ -1,12 +1,10 @@ +use std::collections::HashMap; + use num_bigint::BigUint; +use primitives::TransactionState; use serde::{Deserialize, Serialize}; use serde_serializers::deserialize_biguint_from_str; -pub trait HasMemo { - fn comment(&self) -> &Option; - fn decoded_body(&self) -> &Option; -} - #[derive(Debug, Clone, Serialize, Deserialize)] pub struct DecodedBody { #[serde(rename = "type")] @@ -20,6 +18,111 @@ pub struct MessageTransactions { pub transactions: Vec, } +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct TraceResponse { + pub traces: Vec, +} + +impl TraceResponse { + pub fn root_transaction(&self) -> Option<&TransactionMessage> { + self.traces.first()?.root_transaction() + } + + pub fn action_state(&self) -> Option { + self.traces.first().map(Trace::action_state) + } + + pub fn has_actions(&self) -> bool { + self.traces.first().is_some_and(Trace::has_actions) + } +} + +#[derive(Debug, Serialize)] +pub struct TraceByMessageQuery { + pub msg_hash: String, + pub include_actions: bool, +} + +#[derive(Debug, Serialize)] +pub struct TraceByTransactionQuery { + pub tx_hash: String, + pub include_actions: bool, +} + +#[derive(Debug, Serialize)] +pub struct TraceByBlockQuery { + pub mc_seqno: u64, + pub include_actions: bool, + pub limit: usize, + pub offset: usize, + pub sort: &'static str, +} + +#[derive(Debug, Serialize)] +pub struct TraceByAddressQuery { + pub account: String, + pub include_actions: bool, + pub limit: usize, + pub offset: usize, + pub sort: &'static str, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Trace { + pub is_incomplete: bool, + pub actions: Vec, + pub transactions_order: Vec, + pub transactions: HashMap, +} + +impl Trace { + pub fn root_transaction(&self) -> Option<&TransactionMessage> { + let transaction_id = self.transactions_order.first()?; + self.transactions.get(transaction_id) + } + + pub fn has_actions(&self) -> bool { + !self.actions.is_empty() + } + + pub fn action_state(&self) -> TransactionState { + if self.is_incomplete { + return TransactionState::Pending; + } + for action in &self.actions { + if action.success == Some(false) { + return TransactionState::Reverted; + } + } + TransactionState::Confirmed + } +} + +pub const TRACE_ACTION_JETTON_SWAP: &str = "jetton_swap"; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct TraceAction { + pub success: Option, + #[serde(rename = "type")] + pub action_type: Option, + pub details: Option, +} + +#[derive(Debug, Clone, Deserialize)] +pub struct JettonSwapDetails { + pub dex: Option, + pub sender: String, + pub asset_in: Option, + pub asset_out: Option, + pub dex_incoming_transfer: SwapTransfer, + pub dex_outgoing_transfer: SwapTransfer, +} + +#[derive(Debug, Clone, Deserialize)] +pub struct SwapTransfer { + pub amount: String, +} + #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TransactionMessage { pub hash: String, @@ -37,53 +140,16 @@ pub struct OutMessage { pub destination: Option, pub value: Option, pub op_code: Option, - pub decoded_op_name: Option, - pub body: Option, - pub comment: Option, - pub decoded_body: Option, -} - -impl HasMemo for OutMessage { - fn comment(&self) -> &Option { - &self.comment - } - - fn decoded_body(&self) -> &Option { - &self.decoded_body - } -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct InMessage { - pub hash: String, - pub msg_type: Option, - pub value: Option, - pub source: Option, - pub destination: Option, - pub body: Option, pub comment: Option, pub decoded_body: Option, } -impl HasMemo for InMessage { - fn comment(&self) -> &Option { - &self.comment - } - - fn decoded_body(&self) -> &Option { - &self.decoded_body - } -} - #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TransactionInMessage { - pub hash: String, pub source: Option, pub destination: String, pub value: Option, pub opcode: Option, - pub bounce: Option, - pub bounced: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/crates/gem_ton/src/provider/testkit.rs b/crates/gem_ton/src/provider/testkit.rs index 1c3b559535..07a4891dbe 100644 --- a/crates/gem_ton/src/provider/testkit.rs +++ b/crates/gem_ton/src/provider/testkit.rs @@ -1,3 +1,8 @@ +#[cfg(test)] +use std::collections::HashMap; + +#[cfg(test)] +use crate::models::{Trace, TraceAction, TraceResponse, TransactionMessage}; #[cfg(all(test, feature = "chain_integration_tests"))] use crate::rpc::client::TonClient; #[cfg(all(test, feature = "chain_integration_tests"))] @@ -9,6 +14,50 @@ use settings::testkit::get_test_settings; pub const TEST_ADDRESS: &str = "UQAzoUpalAaXnVm5MoiYWRZguLFzY0KxFjLv3MkRq5BXz3VV"; #[cfg(test)] pub const TEST_TRANSACTION_ID: &str = "gyjq/7IJ5KpSvZlnwixaS3RjI2xk1+5pup0k++S/yXY="; +#[cfg(test)] +pub const TEST_TRANSACTION_HEX_HASH: &str = "8328eaffb209e4aa52bd9967c22c5a4b7463236c64d7ee69ba9d24fbe4bfc976"; +#[cfg(test)] +pub const FAILED_SWAP_MESSAGE_HASH: &str = "cf2fc2efd8d6f6b018f949b8f07e7e4b898a34a8bd422fcffb76bdc6e947b7e7"; +#[cfg(test)] +pub const FAILED_SWAP_ROOT_TRANSACTION_HASH: &str = "L5Egpf9I3suIl6CdddcmMS44geWLFKgHi3EbBDz7qy8="; +#[cfg(test)] +pub const FAILED_SWAP_ROOT_TRANSACTION_HEX_HASH: &str = "2f9120a5ff48decb8897a09d75d726312e3881e58b14a8078b711b043cfbab2f"; +#[cfg(test)] +pub const SUCCESS_SWAP_MESSAGE_HASH: &str = "e993d4c13053978b6265157561c454ef731274d836e3139ed64fdf58b6635bf7"; +#[cfg(test)] +pub const SUCCESS_SWAP_ROOT_TRANSACTION_HASH: &str = "6ZPUwTBTl4tiZRV1YcRU73MSdNg24xOe1k/fWLZjW/c="; +#[cfg(test)] +pub const SUCCESS_SWAP_ROOT_TRANSACTION_HEX_HASH: &str = "e993d4c13053978b6265157561c454ef731274d836e3139ed64fdf58b6635bf7"; + +#[cfg(test)] +impl TraceResponse { + pub fn mock(transaction: TransactionMessage, is_incomplete: bool, actions: Vec) -> Self { + Self { + traces: vec![Trace { + is_incomplete, + actions, + transactions_order: vec![transaction.hash.clone()], + transactions: HashMap::from([(transaction.hash.clone(), transaction)]), + }], + } + } + + pub fn mock_block_traces() -> Self { + serde_json::from_str(include_str!("../../testdata/block_traces.json")).unwrap() + } + + pub fn mock_block_trace(index: usize) -> Self { + let traces = Self::mock_block_traces(); + + TraceResponse { + traces: vec![traces.traces[index].clone()], + } + } + + pub fn mock_jetton_swap() -> Self { + serde_json::from_str(include_str!("../../testdata/jetton_swap_trace.json")).unwrap() + } +} #[cfg(all(test, feature = "chain_integration_tests"))] pub fn create_ton_test_client() -> TonClient { diff --git a/crates/gem_ton/src/provider/transaction_state.rs b/crates/gem_ton/src/provider/transaction_state.rs index 622a6de665..2025a229d9 100644 --- a/crates/gem_ton/src/provider/transaction_state.rs +++ b/crates/gem_ton/src/provider/transaction_state.rs @@ -10,8 +10,8 @@ use crate::{provider::transaction_state_mapper::map_transaction_status, rpc::cli #[async_trait] impl ChainTransactionState for TonClient { async fn get_transaction_status(&self, request: TransactionStateRequest) -> Result> { - let transactions = self.get_transaction(request.id.clone()).await?; - map_transaction_status(request, transactions) + let traces = self.get_traces_by_hash(request.id.clone()).await?; + map_transaction_status(request, traces) } } @@ -21,6 +21,18 @@ mod chain_integration_tests { use chain_traits::ChainTransactionState; use primitives::{TransactionState, TransactionStateRequest}; + #[tokio::test] + async fn test_get_traces_by_message() -> Result<(), Box> { + let client = create_ton_test_client(); + let traces = client.get_traces_by_message(FAILED_SWAP_MESSAGE_HASH.to_string()).await?; + let transaction = traces.root_transaction().ok_or("missing root transaction")?; + + assert!(traces.has_actions()); + assert_eq!(transaction.hash.as_str(), FAILED_SWAP_ROOT_TRANSACTION_HASH); + + Ok(()) + } + #[tokio::test] async fn test_ton_transaction_status_confirmed() -> Result<(), Box> { let client = create_ton_test_client(); diff --git a/crates/gem_ton/src/provider/transaction_state_mapper.rs b/crates/gem_ton/src/provider/transaction_state_mapper.rs index 90f5f26fda..1c54007fac 100644 --- a/crates/gem_ton/src/provider/transaction_state_mapper.rs +++ b/crates/gem_ton/src/provider/transaction_state_mapper.rs @@ -2,12 +2,16 @@ use std::error::Error; use primitives::{TransactionChange, TransactionStateRequest, TransactionUpdate}; -use crate::models::MessageTransactions; +use crate::models::TraceResponse; use crate::provider::transactions_mapper::map_transaction_state; -pub fn map_transaction_status(_request: TransactionStateRequest, transactions: MessageTransactions) -> Result> { - let transaction = transactions.transactions.first().ok_or("Transaction not found")?; - let state = map_transaction_state(transaction); +pub fn map_transaction_status(_request: TransactionStateRequest, traces: TraceResponse) -> Result> { + let transaction = traces.root_transaction().ok_or("Transaction not found")?; + let state = if traces.has_actions() { + traces.action_state().ok_or("Trace not found")? + } else { + map_transaction_state(transaction) + }; let fee = transaction.total_fees.clone(); @@ -17,14 +21,17 @@ pub fn map_transaction_status(_request: TransactionStateRequest, transactions: M #[cfg(test)] mod tests { use super::*; + use crate::models::{MessageTransactions, TraceAction}; + use crate::provider::testkit::{FAILED_SWAP_MESSAGE_HASH, SUCCESS_SWAP_MESSAGE_HASH}; use primitives::TransactionState; #[test] fn test_map_transaction_status_confirmed() { let request = TransactionStateRequest::new_id("hash".to_string()); let transactions: MessageTransactions = serde_json::from_str(include_str!("../../testdata/transaction_transfer_state_success.json")).unwrap(); + let traces = TraceResponse::mock(transactions.transactions.first().unwrap().clone(), false, vec![]); - let update = map_transaction_status(request, transactions).unwrap(); + let update = map_transaction_status(request, traces).unwrap(); assert_eq!(update.state, TransactionState::Confirmed); assert!(!update.changes.is_empty()); } @@ -33,9 +40,53 @@ mod tests { fn test_ton_transaction_jetton_transfer_reverted() { let request = TransactionStateRequest::new_id("hash".to_string()); let transactions: MessageTransactions = serde_json::from_str(include_str!("../../testdata/transaction_transfer_jetton_error_2.json")).unwrap(); + let traces = TraceResponse::mock(transactions.transactions.first().unwrap().clone(), false, vec![]); - let update = map_transaction_status(request, transactions).unwrap(); + let update = map_transaction_status(request, traces).unwrap(); assert_eq!(update.state, TransactionState::Reverted); assert!(!update.changes.is_empty()); } + + #[test] + fn test_map_transaction_status_success_trace_action() { + let request = TransactionStateRequest::new_id(SUCCESS_SWAP_MESSAGE_HASH.to_string()); + let traces = TraceResponse::mock_block_trace(0); + + let update = map_transaction_status(request, traces).unwrap(); + assert_eq!(update.state, TransactionState::Confirmed); + assert!(!update.changes.is_empty()); + } + + #[test] + fn test_map_transaction_status_failed_trace_action() { + let request = TransactionStateRequest::new_id(FAILED_SWAP_MESSAGE_HASH.to_string()); + let traces = TraceResponse::mock_block_trace(1); + let transaction = traces.root_transaction().unwrap().clone(); + + let root_update = map_transaction_status(request.clone(), TraceResponse::mock(transaction, false, vec![])).unwrap(); + assert_eq!(root_update.state, TransactionState::Confirmed); + + let update = map_transaction_status(request, traces).unwrap(); + assert_eq!(update.state, TransactionState::Reverted); + assert!(!update.changes.is_empty()); + } + + #[test] + fn test_map_transaction_status_incomplete_trace() { + let request = TransactionStateRequest::new_id("hash".to_string()); + let transactions: MessageTransactions = serde_json::from_str(include_str!("../../testdata/transaction_transfer_state_success.json")).unwrap(); + let traces = TraceResponse::mock( + transactions.transactions.first().unwrap().clone(), + true, + vec![TraceAction { + success: Some(true), + action_type: None, + details: None, + }], + ); + + let update = map_transaction_status(request, traces).unwrap(); + assert_eq!(update.state, TransactionState::Pending); + assert!(!update.changes.is_empty()); + } } diff --git a/crates/gem_ton/src/provider/transactions.rs b/crates/gem_ton/src/provider/transactions.rs index 03fcb3cd9e..359c0080c4 100644 --- a/crates/gem_ton/src/provider/transactions.rs +++ b/crates/gem_ton/src/provider/transactions.rs @@ -5,31 +5,32 @@ use std::error::Error; use gem_client::Client; use primitives::Transaction; -use crate::{provider::transactions_mapper::map_transactions, rpc::client::TonClient}; +use crate::{provider::transactions_mapper::map_trace_transactions, rpc::client::TonClient}; #[async_trait] impl ChainTransactions for TonClient { async fn get_transactions_by_block(&self, block: u64) -> Result, Box> { - let transactions = self.get_transactions_by_masterchain_block(block.to_string()).await?; - Ok(map_transactions(transactions.transactions)) + let traces = self.get_traces_by_masterchain_block(block).await?; + Ok(map_trace_transactions(traces.traces)) } async fn get_transaction_by_hash(&self, hash: String) -> Result, Box> { - Ok(map_transactions(self.get_transaction(hash).await?.transactions).into_iter().next()) + let traces = self.get_traces_by_hash(hash).await?; + Ok(map_trace_transactions(traces.traces).into_iter().next()) } async fn get_transactions_by_address(&self, request: TransactionsRequest) -> Result, Box> { let TransactionsRequest { address, limit, .. } = request; let limit = limit.unwrap_or(100); - let transactions = self.get_transactions_by_address(address, limit).await?; - Ok(map_transactions(transactions.transactions)) + let traces = self.get_traces_by_address(address, limit).await?; + Ok(map_trace_transactions(traces.traces)) } } #[cfg(all(test, feature = "chain_integration_tests"))] mod chain_integration_tests { use super::*; - use crate::provider::testkit::{TEST_ADDRESS, TEST_TRANSACTION_ID, create_ton_test_client}; + use crate::provider::testkit::{TEST_ADDRESS, TEST_TRANSACTION_HEX_HASH, TEST_TRANSACTION_ID, create_ton_test_client}; use chain_traits::ChainState; #[tokio::test] @@ -58,7 +59,7 @@ mod chain_integration_tests { let client = create_ton_test_client(); let transaction = ChainTransactions::get_transaction_by_hash(&client, TEST_TRANSACTION_ID.to_string()).await?.unwrap(); - assert_eq!(transaction.hash, TEST_TRANSACTION_ID); + assert_eq!(transaction.hash, TEST_TRANSACTION_HEX_HASH); Ok(()) } } diff --git a/crates/gem_ton/src/provider/transactions_mapper.rs b/crates/gem_ton/src/provider/transactions_mapper.rs index fec4927567..577c6cb0c5 100644 --- a/crates/gem_ton/src/provider/transactions_mapper.rs +++ b/crates/gem_ton/src/provider/transactions_mapper.rs @@ -1,9 +1,10 @@ use crate::address::Address; +use crate::address::hex_to_base64_address; use crate::constants::FAILED_OPERATION_OPCODES; -use crate::models::{BroadcastTransaction, HasMemo, TransactionMessage}; +use crate::models::{BroadcastTransaction, JettonSwapDetails, OutMessage, TRACE_ACTION_JETTON_SWAP, Trace, TraceAction, TransactionMessage}; use chrono::DateTime; use gem_encoding::decode_base64; -use primitives::{Address as AddressTrait, Transaction, TransactionState, TransactionType, chain::Chain}; +use primitives::{AssetId, Transaction, TransactionState, TransactionSwapMetadata, TransactionType, chain::Chain}; use std::error::Error; pub fn map_transaction_broadcast(broadcast_result: BroadcastTransaction) -> Result> { @@ -17,7 +18,6 @@ pub(crate) fn map_transaction_state(transaction: &TransactionMessage) -> Transac return TransactionState::Failed; } if let Some(compute_phase) = &description.compute_ph { - // If success is None or false, or if exit_code indicates failure if !compute_phase.success.unwrap_or(false) { return TransactionState::Failed; } @@ -39,11 +39,6 @@ pub(crate) fn map_transaction_state(transaction: &TransactionMessage) -> Transac return TransactionState::Failed; } - // TODO: Check for bounce/bounced fields when available in OutMessage struct - // if transaction.out_msgs.iter().any(|msg| msg.bounce && msg.bounced) { - // return TransactionState::Failed; - // } - if let Some(in_msg) = &transaction.in_msg && let Some(opcode) = &in_msg.opcode && FAILED_OPERATION_OPCODES.contains(&opcode.as_str()) @@ -54,17 +49,65 @@ pub(crate) fn map_transaction_state(transaction: &TransactionMessage) -> Transac TransactionState::Confirmed } -pub fn map_transactions(transactions: Vec) -> Vec { - transactions.into_iter().filter_map(map_transaction_message).collect() +pub(crate) fn base64_hash_to_hex(base64_hash: &str) -> Option { + decode_base64(base64_hash).ok().map(hex::encode) +} + +pub fn map_trace_transactions(traces: Vec) -> Vec { + traces.into_iter().filter_map(map_root_trace_transaction).collect() +} + +fn map_root_trace_transaction(trace: Trace) -> Option { + let state = if trace.is_incomplete || trace.has_actions() { + Some(trace.action_state()) + } else { + None + }; + let swap = jetton_swap(&trace.actions); + let mut transactions = trace.transactions; + let root_hash = trace.transactions_order.into_iter().next()?; + let root = transactions.remove(&root_hash)?; + let mut transaction = map_transaction_message_with_state(root, state)?; + if let Some((sender, metadata)) = swap + && let Ok(value) = serde_json::to_value(metadata) + { + transaction.transaction_type = TransactionType::Swap; + transaction.from = sender.clone(); + transaction.to = sender; + transaction.metadata = Some(value); + } + Some(transaction) } -fn map_transaction_message(transaction: TransactionMessage) -> Option { +fn jetton_swap(actions: &[TraceAction]) -> Option<(String, TransactionSwapMetadata)> { + let action = actions + .iter() + .find(|action| action.action_type.as_deref() == Some(TRACE_ACTION_JETTON_SWAP) && action.success == Some(true))?; + let details: JettonSwapDetails = serde_json::from_value(action.details.clone()?).ok()?; + let sender = parse_address(&details.sender)?; + let metadata = TransactionSwapMetadata { + from_asset: ton_asset_id(details.asset_in.as_deref())?, + from_value: details.dex_incoming_transfer.amount, + to_asset: ton_asset_id(details.asset_out.as_deref())?, + to_value: details.dex_outgoing_transfer.amount, + provider: details.dex, + }; + Some((sender, metadata)) +} + +fn ton_asset_id(raw_address: Option<&str>) -> Option { + match raw_address { + None => Some(AssetId::from_chain(Chain::Ton)), + Some(hex_address) => hex_to_base64_address(hex_address).map(|token_id| AssetId::from_token(Chain::Ton, &token_id)), + } +} + +fn map_transaction_message_with_state(transaction: TransactionMessage, state: Option) -> Option { let asset_id = Chain::Ton.as_asset_id(); - let state = map_transaction_state(&transaction); + let state = state.unwrap_or_else(|| map_transaction_state(&transaction)); let created_at = DateTime::from_timestamp(transaction.now, 0)?; - let hash = transaction.hash.clone(); + let hash = base64_hash_to_hex(&transaction.hash)?; - // Handle outgoing transfers (with out messages) if transaction.out_msgs.len() == 1 && is_simple_transfer(transaction.out_msgs.first()?) { let out_message = transaction.out_msgs.first()?; let from = parse_address(&out_message.source)?; @@ -92,7 +135,6 @@ fn map_transaction_message(transaction: TransactionMessage) -> Option Option Option Option { - Address::try_parse_hex(address).map(|a| a.encode()) + Address::try_parse_hex(address).map(|a| a.encode_non_bounceable()) } fn is_simple_transfer(out_message: &crate::models::OutMessage) -> bool { @@ -133,14 +175,14 @@ fn is_simple_transfer(out_message: &crate::models::OutMessage) -> bool { } } -fn extract_memo(message: &T) -> Option { - if let Some(comment) = message.comment() +fn extract_memo(message: &OutMessage) -> Option { + if let Some(comment) = &message.comment && !comment.is_empty() { return Some(comment.clone()); } - if let Some(decoded_body) = message.decoded_body() { + if let Some(decoded_body) = &message.decoded_body { if let Some(text) = &decoded_body.text && !text.is_empty() { @@ -159,8 +201,8 @@ fn extract_memo(message: &T) -> Option { #[cfg(test)] mod tests { use super::*; - use crate::models::MessageTransactions; - use crate::provider::testkit::TEST_TRANSACTION_ID; + use crate::models::{MessageTransactions, TraceResponse}; + use crate::provider::testkit::{FAILED_SWAP_ROOT_TRANSACTION_HEX_HASH, SUCCESS_SWAP_ROOT_TRANSACTION_HEX_HASH, TEST_TRANSACTION_ID}; #[test] fn test_transaction_transfer_state_success() { @@ -184,17 +226,6 @@ mod tests { assert_eq!(state, TransactionState::Confirmed); } - #[test] - fn test_map_transaction_by_hash() { - let transactions: MessageTransactions = serde_json::from_str(include_str!("../../testdata/transaction_status_response.json")).unwrap(); - let transaction = map_transactions(transactions.transactions).into_iter().next().unwrap(); - - assert_eq!(transaction.hash, TEST_TRANSACTION_ID); - assert_eq!(transaction.transaction_type, TransactionType::Transfer); - assert_eq!(transaction.state, TransactionState::Confirmed); - assert_eq!(transaction.created_at.timestamp(), 1755574728); - } - #[test] fn test_jetton_transfer_failed() { let transactions: MessageTransactions = serde_json::from_str(include_str!("../../testdata/transaction_transfer_jetton_error.json")).unwrap(); @@ -269,20 +300,38 @@ mod tests { } #[test] - fn test_map_get_transactions_by_block() { - let block_transactions: MessageTransactions = serde_json::from_str(include_str!("../../testdata/block_transactions.json")).unwrap(); + fn test_map_trace_transactions_jetton_swap() { + let traces = TraceResponse::mock_jetton_swap(); + let transactions = map_trace_transactions(traces.traces); + + assert_eq!(transactions.len(), 1); + let transaction = &transactions[0]; + assert_eq!(transaction.transaction_type, TransactionType::Swap); + assert_eq!(transaction.state, TransactionState::Confirmed); + assert_eq!(transaction.from, "UQAzoUpalAaXnVm5MoiYWRZguLFzY0KxFjLv3MkRq5BXz3VV"); + assert_eq!(transaction.from, transaction.to); + + let metadata = transaction.metadata.as_ref().expect("swap metadata"); + let swap: TransactionSwapMetadata = serde_json::from_value(metadata.clone()).unwrap(); + assert_eq!(swap.from_asset, AssetId::from_chain(Chain::Ton)); + assert_eq!(swap.from_value, "1000000000"); + assert_eq!(swap.to_asset.chain, Chain::Ton); + assert!(swap.to_asset.token_id.is_some()); + assert_eq!(swap.to_value, "2436222"); + assert_eq!(swap.provider.as_deref(), Some("stonfi_v2")); + } - assert_eq!(block_transactions.transactions.len(), 18); + #[test] + fn test_map_trace_transactions_by_block() { + let traces = TraceResponse::mock_block_traces(); - let transactions = map_transactions(block_transactions.transactions); + assert_eq!(traces.traces.len(), 2); - assert!(!transactions.is_empty()); - assert!(transactions.len() < 18); + let transactions = map_trace_transactions(traces.traces); + let hashes = transactions.iter().map(|transaction| transaction.hash.as_str()).collect::>(); - for transaction in &transactions { - assert!(!transaction.id.hash.is_empty()); - assert!(!transaction.from.is_empty()); - assert!(!transaction.to.is_empty()); - } + assert_eq!(hashes, vec![SUCCESS_SWAP_ROOT_TRANSACTION_HEX_HASH, FAILED_SWAP_ROOT_TRANSACTION_HEX_HASH]); + assert_eq!(transactions[0].state, TransactionState::Confirmed); + assert_eq!(transactions[1].state, TransactionState::Reverted); } } diff --git a/crates/gem_ton/src/rpc/client.rs b/crates/gem_ton/src/rpc/client.rs index 4c502d92c9..df6f833c35 100644 --- a/crates/gem_ton/src/rpc/client.rs +++ b/crates/gem_ton/src/rpc/client.rs @@ -1,16 +1,21 @@ use std::error::Error; use primitives::{Asset, AssetId, AssetType, chain::Chain}; +use serde::Serialize; use serde_json; use chain_traits::{ChainAccount, ChainAddressStatus, ChainPerpetual, ChainStaking, ChainTraits}; -use gem_client::{Client, ClientExt}; +use gem_client::{Client, ClientExt, build_path_with_query}; use crate::models::{ - ApiResult, BroadcastTransaction, Chainhead, JettonInfo, JettonOffchainMetadata, JettonWalletsResponse, MessageTransactions, NftCollectionsResponse, NftItemsResponse, - SimpleJettonBalance, WalletInfo, + ApiResult, BroadcastTransaction, Chainhead, JettonInfo, JettonOffchainMetadata, JettonWalletsResponse, NftCollectionsResponse, NftItemsResponse, SimpleJettonBalance, + TraceByAddressQuery, TraceByBlockQuery, TraceByMessageQuery, TraceByTransactionQuery, TraceResponse, WalletInfo, }; +const TONCENTER_V3_BLOCK_LIMIT: usize = 100; +const TONCENTER_SORT_DESC: &str = "desc"; +const TONCENTER_SORT_ASC: &str = "asc"; + #[derive(Debug)] pub struct TonClient { pub client: C, @@ -25,17 +30,6 @@ impl TonClient { Ok(self.client.get("/api/v3/masterchainInfo").await?) } - pub async fn get_transactions_by_masterchain_block(&self, block_id: String) -> Result> { - Ok(self - .client - .get(&format!("/api/v3/transactionsByMasterchainBlock?seqno={}&limit=100&offset=0", block_id)) - .await?) - } - - pub async fn get_transactions_by_address(&self, address: String, limit: usize) -> Result> { - Ok(self.client.get(&format!("/api/v3/transactions?account={}&limit={}", address, limit)).await?) - } - pub async fn get_token_info(&self, token_id: String) -> Result, Box> { Ok(self.client.get(&format!("/api/v2/getTokenData?address={}", token_id)).await?) } @@ -63,8 +57,56 @@ impl TonClient { Ok(self.client.post("/api/v2/sendBocReturnHash", &body).await?) } - pub async fn get_transaction(&self, hash: String) -> Result> { - Ok(self.client.get(&format!("/api/v3/transactionsByMessage?msg_hash={}", hash)).await?) + pub async fn get_traces_by_message(&self, hash: String) -> Result> { + let query = TraceByMessageQuery { + msg_hash: hash, + include_actions: true, + }; + self.get_traces(query).await + } + + pub async fn get_traces_by_transaction(&self, hash: String) -> Result> { + let query = TraceByTransactionQuery { + tx_hash: hash, + include_actions: true, + }; + self.get_traces(query).await + } + + pub async fn get_traces_by_hash(&self, hash: String) -> Result> { + let traces = self.get_traces_by_message(hash.clone()).await?; + if traces.traces.is_empty() { + self.get_traces_by_transaction(hash).await + } else { + Ok(traces) + } + } + + pub async fn get_traces_by_masterchain_block(&self, block: u64) -> Result> { + let query = TraceByBlockQuery { + mc_seqno: block, + include_actions: true, + limit: TONCENTER_V3_BLOCK_LIMIT, + offset: 0, + sort: TONCENTER_SORT_ASC, + }; + self.get_traces(query).await + } + + pub async fn get_traces_by_address(&self, address: String, limit: usize) -> Result> { + let query = TraceByAddressQuery { + account: address, + include_actions: true, + limit, + offset: 0, + sort: TONCENTER_SORT_DESC, + }; + self.get_traces(query).await + } + + async fn get_traces(&self, query: T) -> Result> { + let path = build_path_with_query("/api/v3/traces", &query)?; + Ok(self.client.get(&path).await?) } pub async fn get_jetton_wallets(&self, address: String) -> Result> { diff --git a/crates/gem_ton/testdata/balance.json b/crates/gem_ton/testdata/balance.json deleted file mode 100644 index ec2d0ca9ee..0000000000 --- a/crates/gem_ton/testdata/balance.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "ok": true, - "result": "62709394797" -} \ No newline at end of file diff --git a/crates/gem_ton/testdata/block_traces.json b/crates/gem_ton/testdata/block_traces.json new file mode 100644 index 0000000000..0f08693bde --- /dev/null +++ b/crates/gem_ton/testdata/block_traces.json @@ -0,0 +1,86 @@ +{ + "traces": [ + { + "is_incomplete": false, + "actions": [ + { + "success": true + } + ], + "transactions_order": [ + "6ZPUwTBTl4tiZRV1YcRU73MSdNg24xOe1k/fWLZjW/c=" + ], + "transactions": { + "6ZPUwTBTl4tiZRV1YcRU73MSdNg24xOe1k/fWLZjW/c=": { + "hash": "6ZPUwTBTl4tiZRV1YcRU73MSdNg24xOe1k/fWLZjW/c=", + "now": 1755568380, + "total_fees": "2402737", + "description": { + "aborted": false, + "compute_ph": { + "success": true, + "exit_code": 0 + }, + "action": { + "success": true + } + }, + "out_msgs": [ + { + "source": "0:33A14A5A9406979D59B9328898591660B8B1736342B11632EFDCC911AB9057CF", + "destination": "0:D291966E797465D25524E216A02DAF0AAC9CD96E6B5313F44F6704C3488C37D9", + "value": "10000000", + "op_code": "0x0", + "decoded_op_name": null, + "body": null, + "comment": null, + "decoded_body": null + } + ], + "in_msg": null + } + } + }, + { + "is_incomplete": false, + "actions": [ + { + "success": false + } + ], + "transactions_order": [ + "L5Egpf9I3suIl6CdddcmMS44geWLFKgHi3EbBDz7qy8=" + ], + "transactions": { + "L5Egpf9I3suIl6CdddcmMS44geWLFKgHi3EbBDz7qy8=": { + "hash": "L5Egpf9I3suIl6CdddcmMS44geWLFKgHi3EbBDz7qy8=", + "now": 1755568390, + "total_fees": "2760123", + "description": { + "aborted": false, + "compute_ph": { + "success": true, + "exit_code": 0 + }, + "action": { + "success": true + } + }, + "out_msgs": [ + { + "source": "0:B77DFEB2A1D8C25DC6F4FDB280454275F6A81DC3CD6884EF0E4FA64A768D1042", + "destination": "0:017CE17C998BAC2342AD12554D94CC3559B2B56958F843BD9F0101208761A5CD", + "value": "25000000", + "op_code": "0x0", + "decoded_op_name": null, + "body": null, + "comment": null, + "decoded_body": null + } + ], + "in_msg": null + } + } + } + ] +} diff --git a/crates/gem_ton/testdata/block_transactions.json b/crates/gem_ton/testdata/block_transactions.json deleted file mode 100644 index e1fb4a3ab3..0000000000 --- a/crates/gem_ton/testdata/block_transactions.json +++ /dev/null @@ -1,2131 +0,0 @@ -{ - "transactions": [ - { - "account": "-1:5555555555555555555555555555555555555555555555555555555555555555", - "hash": "M9UH0SvkPIEdlqfkqMk0wznsF/lXTgLDuWt9fyUJ20M=", - "lt": "60883060000003", - "now": 1756245539, - "mc_block_seqno": 51319006, - "trace_id": "M9UH0SvkPIEdlqfkqMk0wznsF/lXTgLDuWt9fyUJ20M=", - "prev_trans_hash": "AJtcO5Bsibstd9fsQPvP5y/1KSF+yYF++7xNwB99Co0=", - "prev_trans_lt": "60883059000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "0", - "total_fees_extra_currencies": {}, - "description": { - "type": "tick_tock", - "aborted": false, - "destroyed": false, - "is_tock": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "2487", - "gas_used": "0", - "gas_limit": "70000000", - "mode": 0, - "exit_code": 0, - "vm_steps": 46, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "result_code": 0, - "tot_actions": 0, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": -1, - "shard": "8000000000000000", - "seqno": 51319006 - }, - "in_msg": null, - "out_msgs": [], - "account_state_before": { - "hash": "LwiyaVPoeEiomwWHOQzG+GgQWJmd6ZQxPUnwHNdPhIA=", - "balance": "1803714437157", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "8OEMMmHoQYP107PzpFhgTc0GhPjVMu9XSMpZJYztyBs=", - "code_hash": "ZKQ5cPIAeh2m1vyBdzzAldHMJw6BNZ5HHzsDRpq+t7U=" - }, - "account_state_after": { - "hash": "1FGkEk9VQ0lFolowrlq2kPj2HwaOck7J39mGaq5IVnI=", - "balance": "1803714437157", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "8OEMMmHoQYP107PzpFhgTc0GhPjVMu9XSMpZJYztyBs=", - "code_hash": "ZKQ5cPIAeh2m1vyBdzzAldHMJw6BNZ5HHzsDRpq+t7U=" - }, - "emulated": false - }, - { - "account": "-1:3333333333333333333333333333333333333333333333333333333333333333", - "hash": "wWwZFddOoSN/bvN8DVfLq5C9GrU0tsxWgdhbPOzXeyQ=", - "lt": "60883060000002", - "now": 1756245539, - "mc_block_seqno": 51319006, - "trace_id": "wWwZFddOoSN/bvN8DVfLq5C9GrU0tsxWgdhbPOzXeyQ=", - "prev_trans_hash": "0mVsbHJiOLk44vbb79Y9gBieHsVM4ZrO8iu/TjWaCqw=", - "prev_trans_lt": "60883060000001", - "orig_status": "active", - "end_status": "active", - "total_fees": "0", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": false, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "2717296595" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "4874", - "gas_used": "0", - "gas_limit": "70000000", - "mode": 0, - "exit_code": 0, - "vm_steps": 100, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "result_code": 0, - "tot_actions": 0, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": -1, - "shard": "8000000000000000", - "seqno": 51319006 - }, - "in_msg": { - "hash": "YdrxS2tANPN5KbY+XzaMj/jxuUkiyJNhmppnZeeO9Tk=", - "source": "-1:0000000000000000000000000000000000000000000000000000000000000000", - "destination": "-1:3333333333333333333333333333333333333333333333333333333333333333", - "value": "2717296595", - "value_extra_currencies": {}, - "fwd_fee": "0", - "ihr_fee": "0", - "created_lt": "60883060000000", - "created_at": "1756245539", - "opcode": null, - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "body": "te6cckEBAQEAAgAAAEysuc0=", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "1c5RMMDkjFP3+mw3m5xVfIG2E5wxMZKWA5YgxG68SOo=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "lpCDMFmFA3ZJRhb9w6gNs4HHmguEMOGJVzm4iRtClhk=", - "balance": "717001671083126615", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "ZatlRTNchLfnUp8y3oHWolFjNfJ/R/pg4kCAdraN9SI=", - "code_hash": "Yhf4csmfr8uHDywRo2L1kzm+lQlfcNALnP8vbc1p090=" - }, - "emulated": false - }, - { - "account": "-1:3333333333333333333333333333333333333333333333333333333333333333", - "hash": "0mVsbHJiOLk44vbb79Y9gBieHsVM4ZrO8iu/TjWaCqw=", - "lt": "60883060000001", - "now": 1756245539, - "mc_block_seqno": 51319006, - "trace_id": "0mVsbHJiOLk44vbb79Y9gBieHsVM4ZrO8iu/TjWaCqw=", - "prev_trans_hash": "PDwadRJv5eR4zFddexY7pBVMdOp4igdLWU+Fwxw3sXw=", - "prev_trans_lt": "60883059000002", - "orig_status": "active", - "end_status": "active", - "total_fees": "0", - "total_fees_extra_currencies": {}, - "description": { - "type": "tick_tock", - "aborted": false, - "destroyed": false, - "is_tock": false, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "6464", - "gas_used": "0", - "gas_limit": "70000000", - "mode": 0, - "exit_code": 0, - "vm_steps": 150, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "result_code": 0, - "tot_actions": 0, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": -1, - "shard": "8000000000000000", - "seqno": 51319006 - }, - "in_msg": null, - "out_msgs": [], - "account_state_before": { - "hash": "owOqusfhz6d0n49y6DSaM4A8KRsJXUkL3ba3DD6mt/g=", - "balance": "717001668365830020", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "gqZdlyMLsOTME81bCu+p6yDjxgfAsinwak5bsPzwz+o=", - "code_hash": "Yhf4csmfr8uHDywRo2L1kzm+lQlfcNALnP8vbc1p090=" - }, - "account_state_after": { - "hash": "1c5RMMDkjFP3+mw3m5xVfIG2E5wxMZKWA5YgxG68SOo=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:DFBD5BE8497FDC0C9FCBDFC676864840DDF8AD6423D6D5657D9B0E8270D6C8AC", - "hash": "53u3782PYwLlLMUQDiLevK0CooSnR0oIruoqLj1MDAA=", - "lt": "60883058000010", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "dXBzADVDI5lHCIwnsWeacJfMHBplOv3FyDWpat0NcVI=", - "prev_trans_hash": "6EHq1Fj6b9ZjYRTMXSnSY4fLpWoysFS1/yntU3fsQwU=", - "prev_trans_lt": "60883051000010", - "orig_status": "active", - "end_status": "active", - "total_fees": "163603", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "3", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "40067695" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "163600", - "gas_used": "409", - "gas_limit": "100169", - "mode": 0, - "exit_code": 0, - "vm_steps": 5, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "result_code": 0, - "tot_actions": 0, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "sg+AGRc0YtAmEjNu+SY4awGuBT5l3YPqB9tZRKGCgNQ=", - "source": "0:0916D896BDDAF08DADAD628B3CE4BEB3E60A60FEC94654FEA59ED3EE7B6B00D5", - "destination": "0:DFBD5BE8497FDC0C9FCBDFC676864840DDF8AD6423D6D5657D9B0E8270D6C8AC", - "value": "40067695", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "60883058000009", - "created_at": "1756245536", - "opcode": "0xd53276db", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "la37uGspaEdb70INRgaUtfLiBGlqXsrLMlKwhwvngQY=", - "body": "te6cckEBAQEADgAAGNUydtsAAAAAAAAAAPfBmNw=", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "YDK6orhHXS9TciMD+oC9HGUE4RvvS9pA4fgQg7XGJjM=", - "balance": "6617461601881", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "k8zym4hVRD67YAJpUyxQPqaRq4S10j5f6UUp3xCn7XQ=", - "code_hash": "ID3U81ittJmTEpqpJcrDmRa2ig5PeNJujywraer6Vnk=" - }, - "account_state_after": { - "hash": "J6gm3AmUmUXY/wHiwqeY090m6K4b5IV2l2dlarMmD0Q=", - "balance": "6617501505973", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "k8zym4hVRD67YAJpUyxQPqaRq4S10j5f6UUp3xCn7XQ=", - "code_hash": "ID3U81ittJmTEpqpJcrDmRa2ig5PeNJujywraer6Vnk=" - }, - "emulated": false - }, - { - "account": "0:3B105F243CD0E8FE8CAADC4984411A7D713BBC1B71830783F03E24AEA844176D", - "hash": "R7qyQauT5dBJKPzJuco9gYX08DpOJauU+FedBoFRae0=", - "lt": "60883058000009", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "dXBzADVDI5lHCIwnsWeacJfMHBplOv3FyDWpat0NcVI=", - "prev_trans_hash": "keizU96aG/tTeDQ8RTp8iDSEGKhyxnG+qRwHdhVcCWs=", - "prev_trans_lt": "60883051000009", - "orig_status": "active", - "end_status": "active", - "total_fees": "5", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "5", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "1" - }, - "compute_ph": { - "skipped": true, - "reason": "no_gas" - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "DFtQlUZpB4GGQst9DKo3IbVbi7XwyJl3NE3wVptaoX8=", - "source": "0:0916D896BDDAF08DADAD628B3CE4BEB3E60A60FEC94654FEA59ED3EE7B6B00D5", - "destination": "0:3B105F243CD0E8FE8CAADC4984411A7D713BBC1B71830783F03E24AEA844176D", - "value": "1", - "value_extra_currencies": {}, - "fwd_fee": "454404", - "ihr_fee": "0", - "created_lt": "60883058000008", - "created_at": "1756245536", - "opcode": "0x7362d09c", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "DmJ/0j5SYCBeNH45mIey7Wjxn22c/wahibXd3HKEoV8=", - "body": "te6cckEBAgEARAABZnNi0JwAAAAAAAAAAFBrqTAQCAFGR5I4Vgxh3r91yriuN7WAziJbPlQxap8olrFZAPZ1FQEAGAAAAAA3ODQ1MDk3OewgI0M=", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "EfCKObEOwxj47aIjDRWsFdJTy99Iks2C9RzI0f713w8=", - "balance": "22243703392", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "XOfWotNYXMU1ETLE3XpiqUIWJTQuCE56zUfuA1j4VgM=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "account_state_after": { - "hash": "njZhsebql7fIBgveecHgcvOZZy4/2covnuJ3Y3Tp+mg=", - "balance": "22243703388", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "XOfWotNYXMU1ETLE3XpiqUIWJTQuCE56zUfuA1j4VgM=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "emulated": false - }, - { - "account": "0:2DB133F2AD27BE6231FEFA2E9258DE79D8DF8FF1B32C6620B81564144A6061C8", - "hash": "VDsXpngqQLcNq0mUTHGElEfnf2yR0cVTHqNpo/16SHw=", - "lt": "60883058000008", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "OGOwtzSKjFmnTY+pmlnRU4uJe6RX/Zj2j3g4avZCCME=", - "prev_trans_hash": "OGOwtzSKjFmnTY+pmlnRU4uJe6RX/Zj2j3g4avZCCME=", - "prev_trans_lt": "60883058000001", - "orig_status": "active", - "end_status": "active", - "total_fees": "396400", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "47043938" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "396400", - "gas_used": "991", - "gas_limit": "117609", - "mode": 0, - "exit_code": 0, - "vm_steps": 29, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "result_code": 0, - "tot_actions": 0, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "JYU1svEKkMLmBK8SK0aSayEZYfXZ2Ak7NhkpcrT9Vl0=", - "source": "0:A64CD248FE88C6B50AA8064DF2400DC5A958FD7B656434E8A606FFC76F48C1F9", - "destination": "0:2DB133F2AD27BE6231FEFA2E9258DE79D8DF8FF1B32C6620B81564144A6061C8", - "value": "47043938", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "60883058000007", - "created_at": "1756245536", - "opcode": "0xd53276db", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "la37uGspaEdb70INRgaUtfLiBGlqXsrLMlKwhwvngQY=", - "body": "te6cckEBAQEADgAAGNUydtsAAAAAAAAAAPfBmNw=", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "ipPzvb0321ynbzq9OegS2WkkM/pTDSGEJtFz93ev+6w=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "NEyJUQcogTqTNdRlzUuzcSObcHJ9bqn6Kv2MHiac9mI=", - "balance": "2927193974", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "tk46JlG70XX2Qsiv6abAGxlZZDZMDkdSMoJ0r/o9I3k=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "emulated": false - }, - { - "account": "0:0916D896BDDAF08DADAD628B3CE4BEB3E60A60FEC94654FEA59ED3EE7B6B00D5", - "hash": "1xjQlaPHrNDklsdATmy0AY3JjE8I/kt9I8ZaO7RZ7I8=", - "lt": "60883058000007", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "dXBzADVDI5lHCIwnsWeacJfMHBplOv3FyDWpat0NcVI=", - "prev_trans_hash": "wm8Rb+MqIH11Hr+aiWE+FmKTBlmCFvLio7KYzG/pMSk=", - "prev_trans_lt": "60883051000007", - "orig_status": "active", - "end_status": "active", - "total_fees": "4370132", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": false, - "storage_ph": { - "storage_fees_collected": "5", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "54625729" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "4009600", - "gas_used": "10024", - "gas_limit": "136564", - "mode": 0, - "exit_code": 0, - "vm_steps": 190, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "1081600", - "total_action_fees": "360527", - "result_code": 0, - "tot_actions": 2, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 2, - "action_list_hash": "sdAGSJpcDBBrGOnUb5xP6Ugr0X18PYvsjrrKotT9JF4=", - "tot_msg_size": { - "cells": "4", - "bits": "1986" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "Bnx+W3eAr6K4zQyrhjPPBwHCf8kjpnbuzuHZMgW+Jcc=", - "source": "0:2A2EE83A00F1C65AB197E73CF3E3B8A74AF1510B58E8AC29EDD2B131EC79ABA0", - "destination": "0:0916D896BDDAF08DADAD628B3CE4BEB3E60A60FEC94654FEA59ED3EE7B6B00D5", - "value": "54625729", - "value_extra_currencies": {}, - "fwd_fee": "2772022", - "ihr_fee": "0", - "created_lt": "60883058000006", - "created_at": "1756245536", - "opcode": "0x178d4519", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "fwhfw+RVmEhQPiVM+pgy1bYRhMvStF83Oc/XNaCx9xU=", - "body": "te6cckEBAgEAZwABqxeNRRkAAAAAAAAAAFBrqTAQCAFGR5I4Vgxh3r91yriuN7WAziJbPlQxap8olrFZAPZ1FQA371b6El/3Ayfy9/GdoZIQN34rWQj1tVlfZsOgnDWyKwQHAQAYAAAAADc4NDUwOTc57r7SCQ==", - "decoded": null - }, - "init_state": { - "hash": "CRbYlr3a8I2trWKLPOS+s+YKYP7JRlT+pZ7T7ntrANU=", - "body": "te6cckECEwEAA28AAgE0AgEBhwgAdiC+SHmh0f0ZVbiTCII0+uJ3eDbjBg8H4HxJXVCILtsANz+eubmg5UJVAzwZEnmr+GvWOCk1COwaQgYT67O23brgAgEU/wD0pBP0vPLICwMCAWIEBQICzAYHABug9gXaiaH0AfSB9IGoYQIB1AgJAgEgCgsAwwgxwCSXwTgAdDTAwFxsJUTXwPwDOD6QPpAMfoAMXHXIfoAMfoAMHOptAAC0x+CEA+KfqVSILqVMTRZ8AngghAXjUUZUiC6ljFERAPwCuA1ghBZXwe8upNZ8AvgXwSED/LwgABE+kQwcLry4U2ACASAMDQCD1AEGuQ9qJofQB9IH0gahgCaY/BCAvGooypEF1BCD3uy+8J3QlY+XFi6Z+Y/QAYCdAoEeQoAn0BLGeLAOeLZmT2qkAfFQPTP/oA+kAh8AHtRND6APpA+kDUMFE2oVIqxwXy4sEowv/y4sJUNEJwVCATVBQDyFAE+gJYzxYBzxbMySLIywES9AD0AMsAySD5AHB0yMsCygfL/8nQBPpA9AQx+gAg10nCAPLixHeAGMjLBVAIzxZw+gIXy2sTzIDgIBIA8QAJ6CEBeNRRnIyx8Zyz9QB/oCIs8WUAbPFiX6AlADzxbJUAXMI5FykXHiUAioE6CCCcnDgKAUvPLixQTJgED7ABAjyFAE+gJYzxYBzxbMye1UAvc7UTQ+gD6QPpA1DAI0z/6AFFRoAX6QPpAU1vHBVRzbXBUIBNUFAPIUAT6AljPFgHPFszJIsjLARL0APQAywDJ+QBwdMjLAsoHy//J0FANxwUcsfLiwwr6AFGooYIImJaAZrYIoYIImJaAoBihJ5cQSRA4N18E4w0l1wsBgERIA1ztRND6APpA+kDUMAfTP/oA+kAwUVGhUknHBfLiwSfC//LiwgWCCTEtAKAWvPLiw4IQe92X3sjLHxXLP1AD+gIizxYBzxbJcYAYyMsFJM8WcPoCy2rMyYBA+wBAE8hQBPoCWM8WAc8WzMntVIABwUnmgGKGCEHNi0JzIyx9SMMs/WPoCUAfPFlAHzxbJcYAQyMsFJM8WUAb6AhXLahTMyXH7ABAkECMAfMMAI8IAsI4hghDVMnbbcIAQyMsFUAjPFlAE+gIWy2oSyx8Syz/JcvsAkzVsIeIDyFAE+gJYzxYBzxbMye1Uvdgx+w==", - "decoded": null - } - }, - "out_msgs": [ - { - "hash": "DFtQlUZpB4GGQst9DKo3IbVbi7XwyJl3NE3wVptaoX8=", - "source": "0:0916D896BDDAF08DADAD628B3CE4BEB3E60A60FEC94654FEA59ED3EE7B6B00D5", - "destination": "0:3B105F243CD0E8FE8CAADC4984411A7D713BBC1B71830783F03E24AEA844176D", - "value": "1", - "value_extra_currencies": {}, - "fwd_fee": "454404", - "ihr_fee": "0", - "created_lt": "60883058000008", - "created_at": "1756245536", - "opcode": "0x7362d09c", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "DmJ/0j5SYCBeNH45mIey7Wjxn22c/wahibXd3HKEoV8=", - "body": "te6cckEBAgEARAABZnNi0JwAAAAAAAAAAFBrqTAQCAFGR5I4Vgxh3r91yriuN7WAziJbPlQxap8olrFZAPZ1FQEAGAAAAAA3ODQ1MDk3OewgI0M=", - "decoded": null - }, - "init_state": null - }, - { - "hash": "sg+AGRc0YtAmEjNu+SY4awGuBT5l3YPqB9tZRKGCgNQ=", - "source": "0:0916D896BDDAF08DADAD628B3CE4BEB3E60A60FEC94654FEA59ED3EE7B6B00D5", - "destination": "0:DFBD5BE8497FDC0C9FCBDFC676864840DDF8AD6423D6D5657D9B0E8270D6C8AC", - "value": "40067695", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "60883058000009", - "created_at": "1756245536", - "opcode": "0xd53276db", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "la37uGspaEdb70INRgaUtfLiBGlqXsrLMlKwhwvngQY=", - "body": "te6cckEBAQEADgAAGNUydtsAAAAAAAAAAPfBmNw=", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "9oOSRU4GmIkn+9D5mSLtFQdBEaehsxtjN2fJaqZCvxA=", - "balance": "578898501951", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "+Y9GbODSQIK1Jk+mRvgsoFtCQyJEj0InmIlVFYw6o7E=", - "code_hash": "vrBoPr64kn/p/I7AoYvH3ReJlomCWhIeq0bFo6hg0M4=" - }, - "account_state_after": { - "hash": "jmshQaUbT90xe+c2KY1AOM++o/hA277Pxc3s3T+4Cps=", - "balance": "578907968779", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "Iq2+T/YkWarGQyO9CjxqNgpsFV7Z5pnFBhPH11/a0Qs=", - "code_hash": "vrBoPr64kn/p/I7AoYvH3ReJlomCWhIeq0bFo6hg0M4=" - }, - "emulated": false - }, - { - "account": "0:8AF29064CE232F1C3B62FC6C556FAE269871DF40AB53DD76340C85CD236963B2", - "hash": "7dQu/ZG1gpx/QoirHxOij5Ge2J9CtHeChlwsDta5vLs=", - "lt": "60883058000007", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "OGOwtzSKjFmnTY+pmlnRU4uJe6RX/Zj2j3g4avZCCME=", - "prev_trans_hash": "mPlSFdJCQUZoHaBuplhjn62FEctHuLtBWiqk//4UNKQ=", - "prev_trans_lt": "60882980000008", - "orig_status": "active", - "end_status": "active", - "total_fees": "52", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "52", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "1" - }, - "compute_ph": { - "skipped": true, - "reason": "no_gas" - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "U7wdNViCS9GrAsTKSAcdX8PkcTmNP0WIYlQdejbidFo=", - "source": "0:A64CD248FE88C6B50AA8064DF2400DC5A958FD7B656434E8A606FFC76F48C1F9", - "destination": "0:8AF29064CE232F1C3B62FC6C556FAE269871DF40AB53DD76340C85CD236963B2", - "value": "1", - "value_extra_currencies": {}, - "fwd_fee": "400004", - "ihr_fee": "0", - "created_lt": "60883058000006", - "created_at": "1756245536", - "opcode": "0x7362d09c", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "Zchln8dqBaYH1Gnm6Zy+LzzZaLdlp+DYgmgSq/pjQ8w=", - "body": "te6cckEBAQEANAAAZHNi0JwAAAAAAAAAAEHc1lAIAFtiZ+VaT3zEY/30XSSxvPOxvx/jZljMQXAqyCiUwMOQLrDyMQ==", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "bHCEQPamhBdgPtvzGMhbYaw5ldDwwyjSWkNvYopVsHw=", - "balance": "2823712199", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "sFeaT3Pj1vJkrFSLmoGiHMgP2mYERCj17RjJBENUdn4=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "account_state_after": { - "hash": "loWe0S2ZKd6FXdMFhLaBTX5rjy+Xsv/5NNuB/F5lZPA=", - "balance": "2823712148", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "sFeaT3Pj1vJkrFSLmoGiHMgP2mYERCj17RjJBENUdn4=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "emulated": false - }, - { - "account": "0:2A2EE83A00F1C65AB197E73CF3E3B8A74AF1510B58E8AC29EDD2B131EC79ABA0", - "hash": "KEadD4bOeRAqeR8+SrTmkJ37VF+xGbqxhrBbiO34KYg=", - "lt": "60883058000005", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "dXBzADVDI5lHCIwnsWeacJfMHBplOv3FyDWpat0NcVI=", - "prev_trans_hash": "XFjiV0RywX8GtrgHUsSdWbxkjdKosWwaeFAHiXJVsoE=", - "prev_trans_lt": "60882909000005", - "orig_status": "active", - "end_status": "active", - "total_fees": "4868473", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": false, - "storage_ph": { - "storage_fees_collected": "95", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "62266129" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "3482400", - "gas_used": "8706", - "gas_limit": "155665", - "mode": 0, - "exit_code": 0, - "vm_steps": 175, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "4158000", - "total_action_fees": "1385978", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "c7RFRPukP8pX0Fx20Qy9ET/az59+1wDk651EW5OVz2U=", - "tot_msg_size": { - "cells": "22", - "bits": "8001" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "HjpO0zY4gH4MjayE1ovGBh+wbKgXDZJw8jmtcDStYBY=", - "source": "0:A323C91C2B0630EF5FBAE55C571BDAC067112D9F2A18B54F944B58AC807B3A8A", - "destination": "0:2A2EE83A00F1C65AB197E73CF3E3B8A74AF1510B58E8AC29EDD2B131EC79ABA0", - "value": "62266129", - "value_extra_currencies": {}, - "fwd_fee": "529071", - "ihr_fee": "0", - "created_lt": "60883058000004", - "created_at": "1756245536", - "opcode": "0x0f8a7ea5", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "NSMpToshmJuXIz+Hkl9/cSeByFgNtzW7XDL2ZT2GgKA=", - "body": "te6cckEBAgEAZwABrA+KfqUAAAAAAAAAAFBrqTAQCAB2IL5IeaHR/RlVuJMIgjT64nd4NuMGDwfgfEldUIgu2wA371b6El/3Ayfy9/GdoZIQN34rWQj1tVlfZsOgnDWyKwIDAQAYAAAAADc4NDUwOTc5hylLDA==", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [ - { - "hash": "Bnx+W3eAr6K4zQyrhjPPBwHCf8kjpnbuzuHZMgW+Jcc=", - "source": "0:2A2EE83A00F1C65AB197E73CF3E3B8A74AF1510B58E8AC29EDD2B131EC79ABA0", - "destination": "0:0916D896BDDAF08DADAD628B3CE4BEB3E60A60FEC94654FEA59ED3EE7B6B00D5", - "value": "54625729", - "value_extra_currencies": {}, - "fwd_fee": "2772022", - "ihr_fee": "0", - "created_lt": "60883058000006", - "created_at": "1756245536", - "opcode": "0x178d4519", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "fwhfw+RVmEhQPiVM+pgy1bYRhMvStF83Oc/XNaCx9xU=", - "body": "te6cckEBAgEAZwABqxeNRRkAAAAAAAAAAFBrqTAQCAFGR5I4Vgxh3r91yriuN7WAziJbPlQxap8olrFZAPZ1FQA371b6El/3Ayfy9/GdoZIQN34rWQj1tVlfZsOgnDWyKwQHAQAYAAAAADc4NDUwOTc57r7SCQ==", - "decoded": null - }, - "init_state": { - "hash": "CRbYlr3a8I2trWKLPOS+s+YKYP7JRlT+pZ7T7ntrANU=", - "body": "te6cckECEwEAA28AAgE0AgEBhwgAdiC+SHmh0f0ZVbiTCII0+uJ3eDbjBg8H4HxJXVCILtsANz+eubmg5UJVAzwZEnmr+GvWOCk1COwaQgYT67O23brgAgEU/wD0pBP0vPLICwMCAWIEBQICzAYHABug9gXaiaH0AfSB9IGoYQIB1AgJAgEgCgsAwwgxwCSXwTgAdDTAwFxsJUTXwPwDOD6QPpAMfoAMXHXIfoAMfoAMHOptAAC0x+CEA+KfqVSILqVMTRZ8AngghAXjUUZUiC6ljFERAPwCuA1ghBZXwe8upNZ8AvgXwSED/LwgABE+kQwcLry4U2ACASAMDQCD1AEGuQ9qJofQB9IH0gahgCaY/BCAvGooypEF1BCD3uy+8J3QlY+XFi6Z+Y/QAYCdAoEeQoAn0BLGeLAOeLZmT2qkAfFQPTP/oA+kAh8AHtRND6APpA+kDUMFE2oVIqxwXy4sEowv/y4sJUNEJwVCATVBQDyFAE+gJYzxYBzxbMySLIywES9AD0AMsAySD5AHB0yMsCygfL/8nQBPpA9AQx+gAg10nCAPLixHeAGMjLBVAIzxZw+gIXy2sTzIDgIBIA8QAJ6CEBeNRRnIyx8Zyz9QB/oCIs8WUAbPFiX6AlADzxbJUAXMI5FykXHiUAioE6CCCcnDgKAUvPLixQTJgED7ABAjyFAE+gJYzxYBzxbMye1UAvc7UTQ+gD6QPpA1DAI0z/6AFFRoAX6QPpAU1vHBVRzbXBUIBNUFAPIUAT6AljPFgHPFszJIsjLARL0APQAywDJ+QBwdMjLAsoHy//J0FANxwUcsfLiwwr6AFGooYIImJaAZrYIoYIImJaAoBihJ5cQSRA4N18E4w0l1wsBgERIA1ztRND6APpA+kDUMAfTP/oA+kAwUVGhUknHBfLiwSfC//LiwgWCCTEtAKAWvPLiw4IQe92X3sjLHxXLP1AD+gIizxYBzxbJcYAYyMsFJM8WcPoCy2rMyYBA+wBAE8hQBPoCWM8WAc8WzMntVIABwUnmgGKGCEHNi0JzIyx9SMMs/WPoCUAfPFlAHzxbJcYAQyMsFJM8WUAb6AhXLahTMyXH7ABAkECMAfMMAI8IAsI4hghDVMnbbcIAQyMsFUAjPFlAE+gIWy2oSyx8Syz/JcvsAkzVsIeIDyFAE+gJYzxYBzxbMye1Uvdgx+w==", - "decoded": null - } - } - ], - "account_state_before": { - "hash": "AV4gOWJctrZhJe5rhWs0GQiLJjetkDfhcxUq8kmlDjw=", - "balance": "965969343", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "c2PwECl9eES7xPK0+66sl0FDWaS+RVPbpqLegyjBx9U=", - "code_hash": "vrBoPr64kn/p/I7AoYvH3ReJlomCWhIeq0bFo6hg0M4=" - }, - "account_state_after": { - "hash": "3mANp9Ph2nKWy5gFnjH0Kmbrmwmc+aLVryG8TkHmtNE=", - "balance": "965969248", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "ubW5R47te6yjmp0U4gQNFHi0pMv2fvMHAkCeqrSaO1c=", - "code_hash": "vrBoPr64kn/p/I7AoYvH3ReJlomCWhIeq0bFo6hg0M4=" - }, - "emulated": false - }, - { - "account": "0:A64CD248FE88C6B50AA8064DF2400DC5A958FD7B656434E8A606FFC76F48C1F9", - "hash": "ZH64gLH2wbsLZw/WMeZEJVfG7MUlFsyTyL31d3haQ7U=", - "lt": "60883058000005", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "OGOwtzSKjFmnTY+pmlnRU4uJe6RX/Zj2j3g4avZCCME=", - "prev_trans_hash": "Mni3z/23BOy1al7JMS98UgdqpcFazhxHqja0EkzMACY=", - "prev_trans_lt": "60882980000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "733335", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": false, - "storage_ph": { - "storage_fees_collected": "8", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "48444000" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "400000", - "gas_used": "1000", - "gas_limit": "121110", - "mode": 0, - "exit_code": 0, - "vm_steps": 0, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "1000000", - "total_action_fees": "333327", - "result_code": 0, - "tot_actions": 3, - "spec_actions": 1, - "skipped_actions": 0, - "msgs_created": 2, - "action_list_hash": "q/gR5lZIpaxQKybA8g2c4qyNoZJn+cKgB0zUYztry7I=", - "tot_msg_size": { - "cells": "3", - "bits": "1882" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "yeno/rkzyKPi/XHjpV+hfTj6w9oKcMiPRg+KIVbFxWU=", - "source": "0:695092B1B9D1F90824C4D609C58959300495B51B4986EC4A5089A2D24074FA2C", - "destination": "0:A64CD248FE88C6B50AA8064DF2400DC5A958FD7B656434E8A606FFC76F48C1F9", - "value": "48444000", - "value_extra_currencies": {}, - "fwd_fee": "770673", - "ihr_fee": "0", - "created_lt": "60883058000004", - "created_at": "1756245536", - "opcode": "0x178d4519", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "aX7u8rDY1cZdttaL50vLOVwzPFKNqUj+9Bzm99WjADM=", - "body": "te6cckEBAQEAVwAAqReNRRkAAAAAAAAAAEHc1lAIAFtiZ+VaT3zEY/30XSSxvPOxvx/jZljMQXAqyCiUwMORAAtsTPyrSe+YjH++i6SWN552N+P8bMsZiC4FWQUSmBhyBAUK5cdx", - "decoded": null - }, - "init_state": { - "hash": "pkzSSP6IxrUKqAZN8kANxalY/XtlZDTopgb/x29Iwfk=", - "body": "te6cckEBAwEAbgACATQBAghCAo9FLXpN/XQGa2gjZRdyWe0Fc0Q1vna1/UvV2K8rfD1oAIcAgBFeUgyZxGXjh2xfjYqt9cTTDjvoFWp7rsaBkLmkbSx2UALETqZS1AkoWcZ9pE5Mo63WVlsOKJfWQKLFG/s3DYh3+q1agdY=", - "decoded": null - } - }, - "out_msgs": [ - { - "hash": "U7wdNViCS9GrAsTKSAcdX8PkcTmNP0WIYlQdejbidFo=", - "source": "0:A64CD248FE88C6B50AA8064DF2400DC5A958FD7B656434E8A606FFC76F48C1F9", - "destination": "0:8AF29064CE232F1C3B62FC6C556FAE269871DF40AB53DD76340C85CD236963B2", - "value": "1", - "value_extra_currencies": {}, - "fwd_fee": "400004", - "ihr_fee": "0", - "created_lt": "60883058000006", - "created_at": "1756245536", - "opcode": "0x7362d09c", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "Zchln8dqBaYH1Gnm6Zy+LzzZaLdlp+DYgmgSq/pjQ8w=", - "body": "te6cckEBAQEANAAAZHNi0JwAAAAAAAAAAEHc1lAIAFtiZ+VaT3zEY/30XSSxvPOxvx/jZljMQXAqyCiUwMOQLrDyMQ==", - "decoded": null - }, - "init_state": null - }, - { - "hash": "JYU1svEKkMLmBK8SK0aSayEZYfXZ2Ak7NhkpcrT9Vl0=", - "source": "0:A64CD248FE88C6B50AA8064DF2400DC5A958FD7B656434E8A606FFC76F48C1F9", - "destination": "0:2DB133F2AD27BE6231FEFA2E9258DE79D8DF8FF1B32C6620B81564144A6061C8", - "value": "47043938", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "60883058000007", - "created_at": "1756245536", - "opcode": "0xd53276db", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "la37uGspaEdb70INRgaUtfLiBGlqXsrLMlKwhwvngQY=", - "body": "te6cckEBAQEADgAAGNUydtsAAAAAAAAAAPfBmNw=", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "N/Do1n9eVMb2jvLflmo6vK4xG0m+4sB5+jVDCVDxHSs=", - "balance": "6094360", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "8ePK6vxUutPbaZ3XjMhFcViSccBilFMeEGg+U8djh/s=", - "code_hash": "iUaPAseOVwgC45l5yFFvw43wfqdqSDV+BTbyuns+43s=" - }, - "account_state_after": { - "hash": "aKossG1q5v4yibx4HC/09kGNwWcGeSqpw+QwnqTHEMs=", - "balance": "6094413", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "UoPCwidMqQsxwst3a/y1qLjAsF8q705NikWaZXUAJTk=", - "code_hash": "iUaPAseOVwgC45l5yFFvw43wfqdqSDV+BTbyuns+43s=" - }, - "emulated": false - }, - { - "account": "0:04F3C1C795AC8905E31734362B149875AB9522AE5383AB7ABB2E10DA5DA8BA82", - "hash": "i39bgWzp6AStaaGHO8QKlHR5W40D82sZPKHeOOYWDaA=", - "lt": "60883058000003", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "1Y9dDLRhLrnFZGNxHCjta9mi8WRCq7eBAllfSMh9GBY=", - "prev_trans_hash": "E0hicVh/b8CB4K8zBI0wznepNRQhQ57Y18sNOwP4pFo=", - "prev_trans_lt": "60883057000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "311201", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "1", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "2000000000" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "311200", - "gas_used": "778", - "gas_limit": "1000000", - "mode": 0, - "exit_code": 0, - "vm_steps": 23, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "result_code": 0, - "tot_actions": 0, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "5P9vgw46l+yrRdWmpBy1p2g4s76AgWmp2jSOZ9UVaUo=", - "source": "0:98516322A2EF3C63212452B2F88A2D91FC5B52B88540DD8F383B13DE8CF91870", - "destination": "0:04F3C1C795AC8905E31734362B149875AB9522AE5383AB7ABB2E10DA5DA8BA82", - "value": "2000000000", - "value_extra_currencies": {}, - "fwd_fee": "378670", - "ihr_fee": "0", - "created_lt": "60883058000002", - "created_at": "1756245536", - "opcode": "0x00000000", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "HKvFnj0Y80d1b5MFPYEaA9fIExf2RAnz2b1G7aKzo0k=", - "body": "te6cckEBAQEAKgAAUAAAAABkODFjNTU0NC0xYjE3LTQxOWMtYTYzOC00NTI0MzI0ODZlZDUWFxUE", - "decoded": { - "type": "text_comment", - "comment": "d81c5544-1b17-419c-a638-452432486ed5" - } - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "ASFe8tUr5422HY4vjuaOKLrxV7ir8xpjGCC9+cixaas=", - "balance": "640260503632452", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "EhkIhtylDXhF/+c7vHqkfDoHjJwso87LcuqYTQ4NkGg=", - "code_hash": "IINLe3KxEhR+Gy+0V7hOdNGjDwT3N9T2KmaOlVLSty8=" - }, - "account_state_after": { - "hash": "v3w+m5+pEb/HMohfHYTL/mc9iR1UpT+7zl5wNg2GuWM=", - "balance": "640262503321251", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "EhkIhtylDXhF/+c7vHqkfDoHjJwso87LcuqYTQ4NkGg=", - "code_hash": "IINLe3KxEhR+Gy+0V7hOdNGjDwT3N9T2KmaOlVLSty8=" - }, - "emulated": false - }, - { - "account": "0:695092B1B9D1F90824C4D609C58959300495B51B4986EC4A5089A2D24074FA2C", - "hash": "IGHT0TEBR2WfXXDS75+dVczIJ/yxQr9yQqHG5v6othg=", - "lt": "60883058000003", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "OGOwtzSKjFmnTY+pmlnRU4uJe6RX/Zj2j3g4avZCCME=", - "prev_trans_hash": "Z+9oILmK1zJ6lQxwtF0GaS1ST3he+yGPSRp4CODY0Qs=", - "prev_trans_lt": "60882980000005", - "orig_status": "active", - "end_status": "active", - "total_fees": "785335", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "8", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "50000000" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "400000", - "gas_used": "1000", - "gas_limit": "125000", - "mode": 0, - "exit_code": 0, - "vm_steps": 0, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "1156000", - "total_action_fees": "385327", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "fXmfLPl18iM7G/a+UjtfFCknIFWozPvlR5+Fv3/Z0Zc=", - "tot_msg_size": { - "cells": "5", - "bits": "2196" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "aCNf9leSfBUdsHly/CZouGWaLnUa2ouWQpSskwY7c/k=", - "source": "0:2DB133F2AD27BE6231FEFA2E9258DE79D8DF8FF1B32C6620B81564144A6061C8", - "destination": "0:695092B1B9D1F90824C4D609C58959300495B51B4986EC4A5089A2D24074FA2C", - "value": "50000000", - "value_extra_currencies": {}, - "fwd_fee": "474671", - "ihr_fee": "0", - "created_lt": "60883058000002", - "created_at": "1756245536", - "opcode": "0x0f8a7ea5", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "BAm1/dt5/fdI4v67LUGJc9DrD7vVOkyOmkRtgBvE6OY=", - "body": "te6cckEBAQEAVwAAqg+KfqUAAAAAAAAAAEHc1lAIARXlIMmcRl44dsX42KrfXE0w476BVqe67GgZC5pG0sdlAAtsTPyrSe+YjH++i6SWN552N+P8bMsZiC4FWQUSmBhyAgIvo5vl", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [ - { - "hash": "yeno/rkzyKPi/XHjpV+hfTj6w9oKcMiPRg+KIVbFxWU=", - "source": "0:695092B1B9D1F90824C4D609C58959300495B51B4986EC4A5089A2D24074FA2C", - "destination": "0:A64CD248FE88C6B50AA8064DF2400DC5A958FD7B656434E8A606FFC76F48C1F9", - "value": "48444000", - "value_extra_currencies": {}, - "fwd_fee": "770673", - "ihr_fee": "0", - "created_lt": "60883058000004", - "created_at": "1756245536", - "opcode": "0x178d4519", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "aX7u8rDY1cZdttaL50vLOVwzPFKNqUj+9Bzm99WjADM=", - "body": "te6cckEBAQEAVwAAqReNRRkAAAAAAAAAAEHc1lAIAFtiZ+VaT3zEY/30XSSxvPOxvx/jZljMQXAqyCiUwMORAAtsTPyrSe+YjH++i6SWN552N+P8bMsZiC4FWQUSmBhyBAUK5cdx", - "decoded": null - }, - "init_state": { - "hash": "pkzSSP6IxrUKqAZN8kANxalY/XtlZDTopgb/x29Iwfk=", - "body": "te6cckEBAwEAbgACATQBAghCAo9FLXpN/XQGa2gjZRdyWe0Fc0Q1vna1/UvV2K8rfD1oAIcAgBFeUgyZxGXjh2xfjYqt9cTTDjvoFWp7rsaBkLmkbSx2UALETqZS1AkoWcZ9pE5Mo63WVlsOKJfWQKLFG/s3DYh3+q1agdY=", - "decoded": null - } - } - ], - "account_state_before": { - "hash": "iduZTc96+96JTNWIy6KvZfdUG9qNYVGeO0XE9ZAr9nw=", - "balance": "6094413", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "CP7tCX0Hv0NVxLDlgNQartyafBF1sDm57NDt5UL4o28=", - "code_hash": "iUaPAseOVwgC45l5yFFvw43wfqdqSDV+BTbyuns+43s=" - }, - "account_state_after": { - "hash": "sSryNQZwAIGdzfA9zH2JFft/zgFW62WbQq+XJW5GIWI=", - "balance": "6094405", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "/aD7EE4/hkwV4tgE74W5v/+cxACCmeydizlN4TooYHs=", - "code_hash": "iUaPAseOVwgC45l5yFFvw43wfqdqSDV+BTbyuns+43s=" - }, - "emulated": false - }, - { - "account": "0:8B35810E79C3B3FB34E80158C37061A598CF6CA26779218D782B62DBD96BF8B8", - "hash": "hMCQ9yMCBW5DgV0L0Uebz3xIBJfDp4nIvzTlRaIFwpY=", - "lt": "60883058000003", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "annoWoDbo8nzFhsaJewCfu6B8b+1ty7BRScqBv2S4vc=", - "prev_trans_hash": "ebWh6VE70n6AjuZc/sL6eYI/peDU/SRp90ovxYOJV3Y=", - "prev_trans_lt": "60883039000004", - "orig_status": "active", - "end_status": "active", - "total_fees": "40003", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "3", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "243000000000" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "40000", - "gas_used": "62", - "gas_limit": "1000000", - "mode": 0, - "exit_code": 0, - "vm_steps": 3, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "result_code": 0, - "tot_actions": 0, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "dBpY/Bh8bc+UMcNoqTUi9RgObdW465bAliR9xUJj53s=", - "source": "0:52CB34A2AEA7D8C76734F067E5C3B8B67D1D71220A595EC0FA6FB91C6F9CB33C", - "destination": "0:8B35810E79C3B3FB34E80158C37061A598CF6CA26779218D782B62DBD96BF8B8", - "value": "243000000000", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "60883058000002", - "created_at": "1756245536", - "opcode": null, - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "body": "te6cckEBAQEAAgAAAEysuc0=", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "nKjf2UNfnhiudx9Br8+eLhRx6dtZZJQ+qAf8JTHLlx8=", - "balance": "394955355616", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "lWKyI1eFPWa5ypSfNaZnkT9V0PlAPm7Q0jJ6I5gRFsA=", - "code_hash": "hNr6RJ+Ypph3ibojI1gHK8D3bcRSQAKl0JGLmnXS1Zk=" - }, - "account_state_after": { - "hash": "7Abu0y/WU1qjEL2I7uwM2+9NKO/bDCJCC2HrLNcSWJs=", - "balance": "637955315613", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "lWKyI1eFPWa5ypSfNaZnkT9V0PlAPm7Q0jJ6I5gRFsA=", - "code_hash": "hNr6RJ+Ypph3ibojI1gHK8D3bcRSQAKl0JGLmnXS1Zk=" - }, - "emulated": false - }, - { - "account": "0:A323C91C2B0630EF5FBAE55C571BDAC067112D9F2A18B54F944B58AC807B3A8A", - "hash": "+C5pLe2rdQJfjLMULkaLNIC0kwERmAu04ZR1FeC1XI0=", - "lt": "60883058000003", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "dXBzADVDI5lHCIwnsWeacJfMHBplOv3FyDWpat0NcVI=", - "prev_trans_hash": "eOT4SpSbZvET5xTs+Y0hlJ/MrD1fhICaYZV/0ysuCGs=", - "prev_trans_lt": "60879609000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "2401049", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": false, - "storage_ph": { - "storage_fees_collected": "2120", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "65296263" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "2134400", - "gas_used": "5336", - "gas_limit": "163240", - "mode": 0, - "exit_code": 0, - "vm_steps": 162, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "793600", - "total_action_fees": "264529", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "U6HZy7uvE53MH+auumDwao1wpiTXWd2mD4WCqx9KwkQ=", - "tot_msg_size": { - "cells": "3", - "bits": "1489" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "/hNbljKpzFmzjnWmdC0QcV5rYA5v9lxVZeDlQxwLr9Q=", - "source": "0:A1809E9A6F64ADDE7F0F485742968433A621A4F3B5E1C5920A7077D7B63C3411", - "destination": "0:A323C91C2B0630EF5FBAE55C571BDAC067112D9F2A18B54F944B58AC807B3A8A", - "value": "65296263", - "value_extra_currencies": {}, - "fwd_fee": "928541", - "ihr_fee": "0", - "created_lt": "60883058000002", - "created_at": "1756245536", - "opcode": "0x73696e74", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "/PCP4u/lyCz6GaBc+Y4AKefOONXNAeojlpXg5MxCo0Q=", - "body": "te6cckEBBgEA/QABoXNpbnR///8RaK4vIgAAAFutv40z83/z2drDRhHrcf63yTwnbn+jvi8Ren4hhOpqAO8NQUiA4YKuHpqwOzw3kjSdMssNo8pIZY32UPJZDIUDoAECCg7DyG0DAgMAAAFoYgAVF3QdAHjjLVjL85558dxTpXiohax0VhT26ViY9jzV0CAdsNiIAAAAAAAAAAAAAAAAAQQBrA+KfqUAAAAAAAAAAFBrqTAQCAB2IL5IeaHR/RlVuJMIgjT64nd4NuMGDwfgfEldUIgu2wA371b6El/3Ayfy9/GdoZIQN34rWQj1tVlfZsOgnDWyKwIDBQAYAAAAADc4NDUwOTc5YtqkIg==", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [ - { - "hash": "HjpO0zY4gH4MjayE1ovGBh+wbKgXDZJw8jmtcDStYBY=", - "source": "0:A323C91C2B0630EF5FBAE55C571BDAC067112D9F2A18B54F944B58AC807B3A8A", - "destination": "0:2A2EE83A00F1C65AB197E73CF3E3B8A74AF1510B58E8AC29EDD2B131EC79ABA0", - "value": "62266129", - "value_extra_currencies": {}, - "fwd_fee": "529071", - "ihr_fee": "0", - "created_lt": "60883058000004", - "created_at": "1756245536", - "opcode": "0x0f8a7ea5", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "NSMpToshmJuXIz+Hkl9/cSeByFgNtzW7XDL2ZT2GgKA=", - "body": "te6cckEBAgEAZwABrA+KfqUAAAAAAAAAAFBrqTAQCAB2IL5IeaHR/RlVuJMIgjT64nd4NuMGDwfgfEldUIgu2wA371b6El/3Ayfy9/GdoZIQN34rWQj1tVlfZsOgnDWyKwIDAQAYAAAAADc4NDUwOTc5hylLDA==", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "ODUr2R72G0w+keYW/veI9fxG8KY4xcsczA/iSnTRpJg=", - "balance": "4683477", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "2GQ0g0x16eLDbG+23ECFTOQ/escJEXAydhxg8TZHzW8=", - "code_hash": "IINLe3KxEhR+Gy+0V7hOdNGjDwT3N9T2KmaOlVLSty8=" - }, - "account_state_after": { - "hash": "KuEaVps2ET6yND5+dTL/JV4ldeDn5OvpKj+suJBX9UM=", - "balance": "4783491", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "qa/X+wwpHXgVKBlscKxstg4+FFL6GEOgcQUsQ9Jv4Ys=", - "code_hash": "IINLe3KxEhR+Gy+0V7hOdNGjDwT3N9T2KmaOlVLSty8=" - }, - "emulated": false - }, - { - "account": "0:2DB133F2AD27BE6231FEFA2E9258DE79D8DF8FF1B32C6620B81564144A6061C8", - "hash": "OGOwtzSKjFmnTY+pmlnRU4uJe6RX/Zj2j3g4avZCCME=", - "lt": "60883058000001", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "OGOwtzSKjFmnTY+pmlnRU4uJe6RX/Zj2j3g4avZCCME=", - "prev_trans_hash": "FUxC6PkGP1K1QNmrbEs8zSvsjkBNllZ2GnsU6shixWE=", - "prev_trans_lt": "60882980000007", - "orig_status": "active", - "end_status": "active", - "total_fees": "2768581", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "52", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "712000", - "total_action_fees": "237329", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "rk7ISk4cwrRw8CfoQbmkGM9aymtq9ieEODuVKqRlCws=", - "tot_msg_size": { - "cells": "2", - "bits": "1385" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "TLZhHHZ7ey5Y7+YxqPuUQnD/qh6mJFY5RNwBbCvd7jI=", - "source": null, - "destination": "0:2DB133F2AD27BE6231FEFA2E9258DE79D8DF8FF1B32C6620B81564144A6061C8", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0x32fed04a", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "ZwtktlCg8GfTkFniihmd9ne+YN3c/Pm5Nitf1z+ic9g=", - "body": "te6cckEBAwEA3wABnDL+0Eo21BcnLf3qhXfZkSLv/mM7FZiHmKSEowWF+7ZxVeWcf5tieyepyIeNmxDwKQzz7DEwFWW+1ILRLyiTdg8pqaMXaK4uVAAAAAUAAwEBaEIANKhJWNzo/IQSYmsE4sSsmAJK2o2kw3YlKETRaSA6fRYgF9eEAAAAAAAAAAAAAAAAAAECAKoPin6lAAAAAAAAAABB3NZQCAEV5SDJnEZeOHbF+Niq31xNMOO+gVanuuxoGQuaRtLHZQALbEz8q0nvmIx/voukljeedjfj/GzLGYguBVkFEpgYcgICzcS8ag==", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [ - { - "hash": "aCNf9leSfBUdsHly/CZouGWaLnUa2ouWQpSskwY7c/k=", - "source": "0:2DB133F2AD27BE6231FEFA2E9258DE79D8DF8FF1B32C6620B81564144A6061C8", - "destination": "0:695092B1B9D1F90824C4D609C58959300495B51B4986EC4A5089A2D24074FA2C", - "value": "50000000", - "value_extra_currencies": {}, - "fwd_fee": "474671", - "ihr_fee": "0", - "created_lt": "60883058000002", - "created_at": "1756245536", - "opcode": "0x0f8a7ea5", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "BAm1/dt5/fdI4v67LUGJc9DrD7vVOkyOmkRtgBvE6OY=", - "body": "te6cckEBAQEAVwAAqg+KfqUAAAAAAAAAAEHc1lAIARXlIMmcRl44dsX42KrfXE0w476BVqe67GgZC5pG0sdlAAtsTPyrSe+YjH++i6SWN552N+P8bMsZiC4FWQUSmBhyAgIvo5vl", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "P6wFnAYkMC9ytOgLphXa8ddpes2spQHRwnMqYZPGM7k=", - "balance": "2933789688", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "jUU7byzYthtVfyUlJRjgw0fDyRZOtmwefrQN+WcHETg=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "account_state_after": { - "hash": "ipPzvb0321ynbzq9OegS2WkkM/pTDSGEJtFz93ev+6w=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:52CB34A2AEA7D8C76734F067E5C3B8B67D1D71220A595EC0FA6FB91C6F9CB33C", - "hash": "annoWoDbo8nzFhsaJewCfu6B8b+1ty7BRScqBv2S4vc=", - "lt": "60883058000001", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "annoWoDbo8nzFhsaJewCfu6B8b+1ty7BRScqBv2S4vc=", - "prev_trans_hash": "JbvXM8j4RFyJms7SY3vP7MYg/7vU3GMElse5ELoJ0ko=", - "prev_trans_lt": "60883047000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "2066138", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "7", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "400000", - "total_action_fees": "133331", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "t9mArCvOl6Fc3UyeEzRVkElXTCvHofVUIhdTWdqFey0=", - "tot_msg_size": { - "cells": "1", - "bits": "713" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "MuSSKB9xE3wEA8AQXf0fNggQsdL92rqe5Fudko9u/NA=", - "source": null, - "destination": "0:52CB34A2AEA7D8C76734F067E5C3B8B67D1D71220A595EC0FA6FB91C6F9CB33C", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xdcd4231f", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "UsQj/mM0HiVMinylfAzaY/9WbN3WZHalRMj+x9zOo/M=", - "body": "te6cckEBAgEAiAABnNzUIx/Jd4fHSHPrFDzgLFLyKW0UercAwO0kO5T55zhWbdwbdNPZSGYKGC5H+TqjlsjpTc4M9TE+Wkw0bOitCQgpqaMXaK4u0QAAAGcAAwEAakIARZrAhzzh2f2adACsYbgw0sxntlEzvJDGvBWxbey1/FwpxJ9t8AAAAAAAAAAAAAAAAAAAwq7sHw==", - "decoded": null - }, - "init_state": null, - "hash_norm": "vlh63PQtJATuRY5+HoxKJvuQpg80Ugno3Tp9vQ+xOxk=" - }, - "out_msgs": [ - { - "hash": "dBpY/Bh8bc+UMcNoqTUi9RgObdW465bAliR9xUJj53s=", - "source": "0:52CB34A2AEA7D8C76734F067E5C3B8B67D1D71220A595EC0FA6FB91C6F9CB33C", - "destination": "0:8B35810E79C3B3FB34E80158C37061A598CF6CA26779218D782B62DBD96BF8B8", - "value": "243000000000", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "60883058000002", - "created_at": "1756245536", - "opcode": null, - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "body": "te6cckEBAQEAAgAAAEysuc0=", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "ieI5fsXR/TPnKE928yi05ClANIiyEOy0/x4/bbApWu4=", - "balance": "243998326278", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "2KU7MfywU1z5jdaXZIzTXfBZvstV/Xd2nw1q9aAu6kk=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "account_state_after": { - "hash": "zj/cLOMezAc5EvmR9M9z5J111hOjxRHgfliRraKQzk4=", - "balance": "995993471", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "rfBRECTPSm+EFxnFlBaAus2E3lnAZYI4aZANbqoSaPk=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "emulated": false - }, - { - "account": "0:98516322A2EF3C63212452B2F88A2D91FC5B52B88540DD8F383B13DE8CF91870", - "hash": "1Y9dDLRhLrnFZGNxHCjta9mi8WRCq7eBAllfSMh9GBY=", - "lt": "60883058000001", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "1Y9dDLRhLrnFZGNxHCjta9mi8WRCq7eBAllfSMh9GBY=", - "prev_trans_hash": "maIU9jxXaROJdR+v0IgAofwo7nrMIrfyyY9C2CjT/rk=", - "prev_trans_lt": "60883016000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "2995358", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "28", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1975600", - "gas_used": "4939", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 143, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "568000", - "total_action_fees": "189330", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "TxpnwV1KtfRWydgEVAnKVzp1Fvm2L4yVQn8hVyeRNco=", - "tot_msg_size": { - "cells": "2", - "bits": "1025" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "rWAQWp5wOH+ab04QE4x7YH8Fi2v0bQ5UF8HAzP4p1SM=", - "source": null, - "destination": "0:98516322A2EF3C63212452B2F88A2D91FC5B52B88540DD8F383B13DE8CF91870", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0x7369676e", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "sT2lSj5Mw0Jnsy46BBLMF7rTW2MJ4ZVeODirb2qOMlU=", - "body": "te6cckEBBAEAvQABoXNpZ25///8RaK4vSgAAAAezCJ67JPxhQhFrdxRH5/eyfaMvebxKpJe6TFyiItHwQY6Ymq4Bev5ScIdo8rCHkiAMMwq3qf7w2wdhTkUcG52CoAECCg7DyG0DAgMAAAC4QgACeeDjytZEgvGLmhsVikw61cqRVynB1b1dlwhtLtRdQSO5rKAAAAAAAAAAAAAAAAAAAAAAAABkODFjNTU0NC0xYjE3LTQxOWMtYTYzOC00NTI0MzI0ODZlZDUQ47Tb", - "decoded": null - }, - "init_state": null, - "hash_norm": "xnpTqYMbj5pVbFDLJCjDKCG9BocUHda1CpZE6krqwcQ=" - }, - "out_msgs": [ - { - "hash": "5P9vgw46l+yrRdWmpBy1p2g4s76AgWmp2jSOZ9UVaUo=", - "source": "0:98516322A2EF3C63212452B2F88A2D91FC5B52B88540DD8F383B13DE8CF91870", - "destination": "0:04F3C1C795AC8905E31734362B149875AB9522AE5383AB7ABB2E10DA5DA8BA82", - "value": "2000000000", - "value_extra_currencies": {}, - "fwd_fee": "378670", - "ihr_fee": "0", - "created_lt": "60883058000002", - "created_at": "1756245536", - "opcode": "0x00000000", - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "HKvFnj0Y80d1b5MFPYEaA9fIExf2RAnz2b1G7aKzo0k=", - "body": "te6cckEBAQEAKgAAUAAAAABkODFjNTU0NC0xYjE3LTQxOWMtYTYzOC00NTI0MzI0ODZlZDUWFxUE", - "decoded": { - "type": "text_comment", - "comment": "d81c5544-1b17-419c-a638-452432486ed5" - } - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "rjyvv6ypwGzPbNmT0+WeBgdU/IbV93PyLSnBYeF5ttc=", - "balance": "2010506495", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "UY32Iu9llUyIqKmDwCrc07lE/fDUdjBLVxTmyDgYB8Q=", - "code_hash": "IINLe3KxEhR+Gy+0V7hOdNGjDwT3N9T2KmaOlVLSty8=" - }, - "account_state_after": { - "hash": "r5ZR+B6M1XK1Ujq1PxIA6DcbbnQ8mNKD/VghS0kke0Y=", - "balance": "7132467", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "oMjdPmNoX8QSyfrJtmyIGXeZCx7nMXJhZOk55gfejO8=", - "code_hash": "IINLe3KxEhR+Gy+0V7hOdNGjDwT3N9T2KmaOlVLSty8=" - }, - "emulated": false - }, - { - "account": "0:A1809E9A6F64ADDE7F0F485742968433A621A4F3B5E1C5920A7077D7B63C3411", - "hash": "dXBzADVDI5lHCIwnsWeacJfMHBplOv3FyDWpat0NcVI=", - "lt": "60883058000001", - "now": 1756245536, - "mc_block_seqno": 51319006, - "trace_id": "dXBzADVDI5lHCIwnsWeacJfMHBplOv3FyDWpat0NcVI=", - "prev_trans_hash": "EdMe9bldv93tP2/mzs37ZlzWleEioN2RypJfgWtOi5w=", - "prev_trans_lt": "60883050000001", - "orig_status": "active", - "end_status": "active", - "total_fees": "5185462", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "3", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "2786000", - "gas_used": "6965", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 116, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "1392800", - "total_action_fees": "464259", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "750KVckWfp5oWYPlvK3N5qIED3ofBXY1PmN/T/wEcJM=", - "tot_msg_size": { - "cells": "7", - "bits": "2587" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 56416535 - }, - "in_msg": { - "hash": "uMaF16nd+I83XfdNNGXmh7ShRIFNsp82A4xydSiVwAw=", - "source": null, - "destination": "0:A1809E9A6F64ADDE7F0F485742968433A621A4F3B5E1C5920A7077D7B63C3411", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xccc62e12", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "OQH+5EC8ofoEyfoQx0TeSu06/ByBaaKst4MkQwR5S3Y=", - "body": "te6cckECCQEAAYsAAZnMxi4SPCo/dglpu6GICCKp8B4fnOrlMaw/icPuX8KwUkDmaOaHzgrdI+XLTw73AQOXzcQz+9S2F4r44Tq/MvUGAAAAEGiuLltI32i4wAEBB6AAACECAWhiAFGR5I4Vgxh3r91yriuN7WAziJbPlQxap8olrFZAPZ1FIB/MwTgAAAAAAAAAAAAAAAABAwGhc2ludH///xFori8iAAAAW62/jTPzf/PZ2sNGEetx/rfJPCduf6O+LxF6fiGE6moA7w1BSIDhgq4emrA7PDeSNJ0yyw2jykhljfZQ8lkMhQOgBAIKDsPIbQMFBgAAAWhiABUXdB0AeOMtWMvznnnx3FOleKiFrHRWFPbpWJj2PNXQIB2w2IgAAAAAAAAAAAAAAAABBwGsD4p+pQAAAAAAAAAAUGupMBAIAHYgvkh5odH9GVW4kwiCNPrid3g24wYPB+B8SV1QiC7bADfvVvoSX/cDJ/L38Z2hkhA3fitZCPW1WV9mw6CcNbIrAgMIABgAAAAANzg0NTA5NzksHd0Z", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [ - { - "hash": "/hNbljKpzFmzjnWmdC0QcV5rYA5v9lxVZeDlQxwLr9Q=", - "source": "0:A1809E9A6F64ADDE7F0F485742968433A621A4F3B5E1C5920A7077D7B63C3411", - "destination": "0:A323C91C2B0630EF5FBAE55C571BDAC067112D9F2A18B54F944B58AC807B3A8A", - "value": "65296263", - "value_extra_currencies": {}, - "fwd_fee": "928541", - "ihr_fee": "0", - "created_lt": "60883058000002", - "created_at": "1756245536", - "opcode": "0x73696e74", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "/PCP4u/lyCz6GaBc+Y4AKefOONXNAeojlpXg5MxCo0Q=", - "body": "te6cckEBBgEA/QABoXNpbnR///8RaK4vIgAAAFutv40z83/z2drDRhHrcf63yTwnbn+jvi8Ren4hhOpqAO8NQUiA4YKuHpqwOzw3kjSdMssNo8pIZY32UPJZDIUDoAECCg7DyG0DAgMAAAFoYgAVF3QdAHjjLVjL85558dxTpXiohax0VhT26ViY9jzV0CAdsNiIAAAAAAAAAAAAAAAAAQQBrA+KfqUAAAAAAAAAAFBrqTAQCAB2IL5IeaHR/RlVuJMIgjT64nd4NuMGDwfgfEldUIgu2wA371b6El/3Ayfy9/GdoZIQN34rWQj1tVlfZsOgnDWyKwIDBQAYAAAAADc4NDUwOTc5YtqkIg==", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "jjfjehXSig8VpnSLWy0RHD9CevsWatdWZMy6MJKufss=", - "balance": "182063734667", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "vEehByam91NCcWpI82TwT/4t7IxklX0hyV4w97hkvD8=", - "code_hash": "ID3U81ittJmTEpqpJcrDmRa2ig5PeNJujywraer6Vnk=" - }, - "account_state_after": { - "hash": "vSu7S2/3ExzJM7WxSF4Xs9tkpJtEJM7zAPIIaynMGPw=", - "balance": "181992324401", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "tCGCZCeEwlAaBaeVrQZsA8aVGrn2fITDD5iTAE1aMBA=", - "code_hash": "ID3U81ittJmTEpqpJcrDmRa2ig5PeNJujywraer6Vnk=" - }, - "emulated": false - } - ], - "address_book": { - "-1:0000000000000000000000000000000000000000000000000000000000000000": { - "user_friendly": "Ef8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAU", - "domain": null - }, - "-1:3333333333333333333333333333333333333333333333333333333333333333": { - "user_friendly": "Ef8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM0vF", - "domain": null - }, - "-1:5555555555555555555555555555555555555555555555555555555555555555": { - "user_friendly": "Ef9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVbxn", - "domain": null - }, - "0:04F3C1C795AC8905E31734362B149875AB9522AE5383AB7ABB2E10DA5DA8BA82": { - "user_friendly": "UQAE88HHlayJBeMXNDYrFJh1q5UirlODq3q7LhDaXai6gtwi", - "domain": null - }, - "0:0916D896BDDAF08DADAD628B3CE4BEB3E60A60FEC94654FEA59ED3EE7B6B00D5": { - "user_friendly": "EQAJFtiWvdrwja2tYos85L6z5gpg_slGVP6lntPue2sA1UXJ", - "domain": null - }, - "0:2A2EE83A00F1C65AB197E73CF3E3B8A74AF1510B58E8AC29EDD2B131EC79ABA0": { - "user_friendly": "EQAqLug6APHGWrGX5zzz47inSvFRC1jorCnt0rEx7HmroPgD", - "domain": null - }, - "0:2DB133F2AD27BE6231FEFA2E9258DE79D8DF8FF1B32C6620B81564144A6061C8": { - "user_friendly": "UQAtsTPyrSe-YjH--i6SWN552N-P8bMsZiC4FWQUSmBhyKq7", - "domain": null - }, - "0:3B105F243CD0E8FE8CAADC4984411A7D713BBC1B71830783F03E24AEA844176D": { - "user_friendly": "UQA7EF8kPNDo_oyq3EmEQRp9cTu8G3GDB4PwPiSuqEQXbYtl", - "domain": null - }, - "0:52CB34A2AEA7D8C76734F067E5C3B8B67D1D71220A595EC0FA6FB91C6F9CB33C": { - "user_friendly": "UQBSyzSirqfYx2c08Gflw7i2fR1xIgpZXsD6b7kcb5yzPEBE", - "domain": null - }, - "0:695092B1B9D1F90824C4D609C58959300495B51B4986EC4A5089A2D24074FA2C": { - "user_friendly": "EQBpUJKxudH5CCTE1gnFiVkwBJW1G0mG7EpQiaLSQHT6LFOs", - "domain": null - }, - "0:8AF29064CE232F1C3B62FC6C556FAE269871DF40AB53DD76340C85CD236963B2": { - "user_friendly": "UQCK8pBkziMvHDti_GxVb64mmHHfQKtT3XY0DIXNI2ljsgQD", - "domain": null - }, - "0:8B35810E79C3B3FB34E80158C37061A598CF6CA26779218D782B62DBD96BF8B8": { - "user_friendly": "UQCLNYEOecOz-zToAVjDcGGlmM9somd5IY14K2Lb2Wv4uOIM", - "domain": null - }, - "0:98516322A2EF3C63212452B2F88A2D91FC5B52B88540DD8F383B13DE8CF91870": { - "user_friendly": "UQCYUWMiou88YyEkUrL4ii2R_FtSuIVA3Y84OxPejPkYcONQ", - "domain": null - }, - "0:A1809E9A6F64ADDE7F0F485742968433A621A4F3B5E1C5920A7077D7B63C3411": { - "user_friendly": "EQChgJ6ab2St3n8PSFdCloQzpiGk87XhxZIKcHfXtjw0ESn_", - "domain": null - }, - "0:A323C91C2B0630EF5FBAE55C571BDAC067112D9F2A18B54F944B58AC807B3A8A": { - "user_friendly": "UQCjI8kcKwYw71-65VxXG9rAZxEtnyoYtU-US1isgHs6iilb", - "domain": null - }, - "0:A64CD248FE88C6B50AA8064DF2400DC5A958FD7B656434E8A606FFC76F48C1F9": { - "user_friendly": "EQCmTNJI_ojGtQqoBk3yQA3FqVj9e2VkNOimBv_Hb0jB-ZN6", - "domain": null - }, - "0:DFBD5BE8497FDC0C9FCBDFC676864840DDF8AD6423D6D5657D9B0E8270D6C8AC": { - "user_friendly": "EQDfvVvoSX_cDJ_L38Z2hkhA3fitZCPW1WV9mw6CcNbIrH-Q", - "domain": null - } - } -} \ No newline at end of file diff --git a/crates/gem_ton/testdata/jetton_swap_trace.json b/crates/gem_ton/testdata/jetton_swap_trace.json new file mode 100644 index 0000000000..b2b478593e --- /dev/null +++ b/crates/gem_ton/testdata/jetton_swap_trace.json @@ -0,0 +1,55 @@ +{ + "traces": [ + { + "is_incomplete": false, + "actions": [ + { + "success": true, + "type": "jetton_swap", + "details": { + "dex": "stonfi_v2", + "sender": "0:33A14A5A9406979D59B9328898591660B8B1736342B11632EFDCC911AB9057CF", + "asset_in": null, + "asset_out": "0:B113A994B5024A16719F69139328EB759596C38A25F59028B146FECDC3621DFE", + "dex_incoming_transfer": { + "asset": null, + "amount": "1000000000" + }, + "dex_outgoing_transfer": { + "asset": "0:B113A994B5024A16719F69139328EB759596C38A25F59028B146FECDC3621DFE", + "amount": "2436222" + } + } + } + ], + "transactions_order": [ + "Jy/yVxsw+JLlTyRAM/dcrGXGzmM32RPFJg++f9VOgq0=" + ], + "transactions": { + "Jy/yVxsw+JLlTyRAM/dcrGXGzmM32RPFJg++f9VOgq0=": { + "hash": "Jy/yVxsw+JLlTyRAM/dcrGXGzmM32RPFJg++f9VOgq0=", + "now": 1778565402, + "total_fees": "586312", + "description": { + "aborted": false, + "compute_ph": { "success": true, "exit_code": 0 }, + "action": { "success": true } + }, + "out_msgs": [ + { + "source": "0:33A14A5A9406979D59B9328898591660B8B1736342B11632EFDCC911AB9057CF", + "destination": "0:92E1411AE546892F33B2C8A89EA90390D8FF4CFBB917A643B91E73F706FDB9D1", + "value": "1310000000", + "op_code": "0x0", + "decoded_op_name": null, + "body": null, + "comment": null, + "decoded_body": null + } + ], + "in_msg": null + } + } + } + ] +} diff --git a/crates/gem_ton/testdata/masterchain_info.json b/crates/gem_ton/testdata/masterchain_info.json deleted file mode 100644 index 9a602ab71c..0000000000 --- a/crates/gem_ton/testdata/masterchain_info.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "last": { - "workchain": -1, - "shard": "8000000000000000", - "seqno": 51317643, - "root_hash": "lagS/xKs/SVA9kWndpgrJ7yigXt7up67iHy0gVtxiLQ=", - "file_hash": "Xrj8YIpwNPxAFFo3dAvCA6ZOl++DBrPwkYrPhj0LaBg=", - "global_id": -239, - "version": 0, - "after_merge": false, - "before_split": false, - "after_split": false, - "want_merge": true, - "want_split": false, - "key_block": false, - "vert_seqno_incr": false, - "flags": 1, - "gen_utime": "1756242080", - "start_lt": "60881689000000", - "end_lt": "60881689000004", - "validator_list_hash_short": -2119799769, - "gen_catchain_seqno": 727374, - "min_ref_mc_seqno": 51317640, - "prev_key_block_seqno": 51296396, - "vert_seqno": 1, - "master_ref_seqno": 0, - "rand_seed": "z0ec4U0f0Y49L7vxhP+c1als71Q4BqfxVgwFFDvsflI=", - "created_by": "DeXB2WFzZO21gznNcBCHm1GS4/iXNT+iulN04SoWOSo=", - "tx_count": 3, - "masterchain_block_ref": { - "workchain": -1, - "shard": "8000000000000000", - "seqno": 51317643 - }, - "prev_blocks": [ - { - "workchain": -1, - "shard": "8000000000000000", - "seqno": 51317642 - } - ] - }, - "first": { - "workchain": -1, - "shard": "8000000000000000", - "seqno": 1, - "root_hash": "8GYhhrigd8CwZGrRT59iulLDcgiTYuvOAzFJxugc0Ts=", - "file_hash": "V+XzykEwun4yePZhAEPZk77RbMfMOgS/S4GiJkSKY6s=", - "global_id": -239, - "version": 0, - "after_merge": false, - "before_split": false, - "after_split": false, - "want_merge": false, - "want_split": false, - "key_block": false, - "vert_seqno_incr": false, - "flags": 0, - "gen_utime": "1573822385", - "start_lt": "1000000", - "end_lt": "1000012", - "validator_list_hash_short": -1447544682, - "gen_catchain_seqno": 0, - "min_ref_mc_seqno": 1, - "prev_key_block_seqno": 0, - "vert_seqno": 0, - "master_ref_seqno": 0, - "rand_seed": "e1ZHQiC/ZPGzzR9IHm3u7FZ2ZwzzdUXMYRJf7DCQdQg=", - "created_by": "6MC3PyuC80JUx8L+cNE4TnXEZ1i3TeCKxYFV5ZP9eKw=", - "tx_count": 9, - "masterchain_block_ref": { - "workchain": -1, - "shard": "8000000000000000", - "seqno": 1 - }, - "prev_blocks": [ - { - "workchain": -1, - "shard": "8000000000000000", - "seqno": 0 - } - ] - } -} \ No newline at end of file diff --git a/crates/gem_ton/testdata/ton_transfer.json b/crates/gem_ton/testdata/ton_transfer.json deleted file mode 100644 index 2f527a5e45..0000000000 --- a/crates/gem_ton/testdata/ton_transfer.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "hash": "6fc90afef2393eae1b265d3d4f11eb59ce45b4adcb8e40eb0de00ee27551334f", - "lt": 59933374000001, - "account": { - "address": "0:ca3bc9c2b159350d76d809cd9ec787ca198877005db319e03799376a48ad9be0", - "is_scam": false, - "is_wallet": true - }, - "success": true, - "utime": 1753846990, - "orig_status": "active", - "end_status": "active", - "total_fees": 1910058, - "end_balance": 25862560073235, - "transaction_type": "TransOrd", - "state_update_old": "26865d7ac1856ec5a7c1badc714e5a18d0061694798f8c031aa3d0dd5d66c943", - "state_update_new": "08e81925f868ffc8a06148177b7f0555b4afb05d0ba38782cd8f2358fc91494d", - "in_msg": { - "msg_type": "ext_in_msg", - "created_lt": 0, - "ihr_disabled": false, - "bounce": false, - "bounced": false, - "value": 0, - "fwd_fee": 0, - "ihr_fee": 0, - "destination": { - "address": "0:ca3bc9c2b159350d76d809cd9ec787ca198877005db319e03799376a48ad9be0", - "is_scam": false, - "is_wallet": true - }, - "import_fee": 0, - "created_at": 0, - "hash": "2f2ee478862b2bfdc5373b465f6f95d1292ca031ebe879ff970fb916496ae422", - "raw_body": "b5ee9c7201010201008700019aea29f7142f6e18180e9bab5bdffb7b58f5eafd002892a89bb8924d9b6d8d75ce909dd507c94594dc06b8a9094e66939d028b5020d85536f91f650485b63ecb0629a9a3176889950800001ffc0301006a420034cb02af5a5a8e8276b99f7841c3e5b5ab9a3f2279c35056b621a5abe529afaba83250fd11a000000000000000000000000000", - "decoded_op_name": "wallet_signed_v3", - "decoded_body": { - "signature": "ea29f7142f6e18180e9bab5bdffb7b58f5eafd002892a89bb8924d9b6d8d75ce909dd507c94594dc06b8a9094e66939d028b5020d85536f91f650485b63ecb06", - "subwallet_id": 698983191, - "valid_until": 1753847048, - "seqno": 8188, - "payload": [ - { - "mode": 3, - "message": { - "sum_type": "MessageInternal", - "message_internal": { - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "src": "", - "dest": "0:6996055eb4b51d04ed733ef08387cb6b57347e44f386a0ad6c434b57ca535f57", - "value": { - "grams": "27013390900", - "other": {} - }, - "ihr_fee": "0", - "fwd_fee": "0", - "created_lt": 0, - "created_at": 0, - "init": null, - "body": { - "is_right": false, - "value": {} - } - } - } - } - ] - } - }, - "out_msgs": [ - { - "msg_type": "int_msg", - "created_lt": 59933374000002, - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "value": 27013390900, - "fwd_fee": 266669, - "ihr_fee": 0, - "destination": { - "address": "0:6996055eb4b51d04ed733ef08387cb6b57347e44f386a0ad6c434b57ca535f57", - "is_scam": false, - "is_wallet": true - }, - "source": { - "address": "0:ca3bc9c2b159350d76d809cd9ec787ca198877005db319e03799376a48ad9be0", - "is_scam": false, - "is_wallet": true - }, - "import_fee": 0, - "created_at": 1753846990, - "hash": "cd0163d819dc5a0f0b98133bfebe321b45a6f93e7ab8c7bb8bd68afded95d41d" - } - ], - "block": "(0,8000000000000000,55559979)", - "prev_trans_hash": "13191cf8ff1ffe9557dc6087aabcff6c500fa68ac4afdafb3562ffbd9f8fa8b5", - "prev_trans_lt": 59930179000007, - "compute_phase": { - "skipped": false, - "success": true, - "gas_fees": 1166800, - "gas_used": 2917, - "vm_steps": 62, - "exit_code": 0, - "exit_code_description": "Ok" - }, - "storage_phase": { - "fees_collected": 327, - "status_change": "acst_unchanged" - }, - "action_phase": { - "success": true, - "result_code": 0, - "total_actions": 1, - "skipped_actions": 0, - "fwd_fees": 400000, - "total_fees": 133331 - }, - "aborted": false, - "destroyed": false, - "raw": "b5ee9c7201020a0100024a0003b57ca3bc9c2b159350d76d809cd9ec787ca198877005db319e03799376a48ad9be0000036825377ab8113191cf8ff1ffe9557dc6087aabcff6c500fa68ac4afdafb3562ffbd9f8fa8b5000036819507d6c7688994ce0003463a4a5480102030201e0040500827226865d7ac1856ec5a7c1badc714e5a18d0061694798f8c031aa3d0dd5d66c94308e81925f868ffc8a06148177b7f0555b4afb05d0ba38782cd8f2358fc91494d02110c8051c6188e6e8440080901df88019477938562b26a1aedb0139b3d8f0f943310ee00bb6633c06f326ed4915b37c007514fb8a17b70c0c074dd5adeffdbdac7af57e801449544ddc4926cdb6c6bae7484eea83e4a2ca6e035c5484a73349ce8145a8106c2a9b7c8fb28242db1f658314d4d18bb444ca8400000ffe01c060101df07006a420034cb02af5a5a8e8276b99f7841c3e5b5ab9a3f2279c35056b621a5abe529afaba83250fd11a00000000000000000000000000000b348019477938562b26a1aedb0139b3d8f0f943310ee00bb6633c06f326ed4915b37c1001a658157ad2d47413b5ccfbc20e1f2dad5cd1f913ce1a82b5b10d2d5f294d7d5d419287e88d00608235a00006d04a6ef5704d113299c40009d416ca3138800000000000000000f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020006fc9830d404c08234c000000000002000000000003594dc354a7bfac73233f36652bf41771e5e2b78ee5d565c5cd23d5a71bdd80524050164c" - } \ No newline at end of file diff --git a/crates/gem_ton/testdata/ton_transfer2.json b/crates/gem_ton/testdata/ton_transfer2.json deleted file mode 100644 index 4f49b1835d..0000000000 --- a/crates/gem_ton/testdata/ton_transfer2.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "hash": "447067aff9c723bde449aafd83de46f6518c61f853196a66fc1bb58cf0fc17f0", - "lt": 59933351000001, - "account": { - "address": "0:cc71f2336097857d9cf518b0b90d711dba1554ab07ba8719d041ba9903bc0ac4", - "is_scam": false, - "is_wallet": true - }, - "success": true, - "utime": 1753846934, - "orig_status": "active", - "end_status": "active", - "total_fees": 5003160, - "end_balance": 4703504, - "transaction_type": "TransOrd", - "state_update_old": "ab094dbb597b1bc8b34a1e2e857b3d23be9353104a529ba79a9ed5107eed0cda", - "state_update_new": "7a1b0a9322207e49ca62469f503e67b6f64dbb62de61ea46543de0a1aff67a0a", - "in_msg": { - "msg_type": "ext_in_msg", - "created_lt": 0, - "ihr_disabled": false, - "bounce": false, - "bounced": false, - "value": 0, - "fwd_fee": 0, - "ihr_fee": 0, - "destination": { - "address": "0:cc71f2336097857d9cf518b0b90d711dba1554ab07ba8719d041ba9903bc0ac4", - "is_scam": false, - "is_wallet": true - }, - "import_fee": 0, - "created_at": 0, - "hash": "ef47930717f0f50417ebcaeb47177ca7094a40f703df151849d514c5f45e9959", - "raw_body": "b5ee9c7201010301008a00019c1fd1e5f564617ee5e6e36bd176ee9a557f6fa88b5410b270d74505e8389398554c8ea2669ca41a17be5d18fe42b234c99e9dc19795b9e819f6359bb3d8b2330529a9a317688996ed000000110003010168420034cb02af5a5a8e8276b99f7841c3e5b5ab9a3f2279c35056b621a5abe529afaba3c82c67d800000000000000000000000001020000", - "decoded_op_name": "wallet_signed_v4", - "decoded_body": { - "signature": "1fd1e5f564617ee5e6e36bd176ee9a557f6fa88b5410b270d74505e8389398554c8ea2669ca41a17be5d18fe42b234c99e9dc19795b9e819f6359bb3d8b23305", - "subwallet_id": 698983191, - "valid_until": 1753847533, - "seqno": 17, - "op": 0, - "payload": [ - { - "mode": 3, - "message": { - "sum_type": "MessageInternal", - "message_internal": { - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "src": "", - "dest": "0:6996055eb4b51d04ed733ef08387cb6b57347e44f386a0ad6c434b57ca535f57", - "value": { - "grams": "2030406907", - "other": {} - }, - "ihr_fee": "0", - "fwd_fee": "0", - "created_lt": 0, - "created_at": 0, - "init": null, - "body": { - "is_right": true, - "value": {} - } - } - } - } - ] - } - }, - "out_msgs": [ - { - "msg_type": "int_msg", - "created_lt": 59933351000002, - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "value": 2030406907, - "fwd_fee": 293336, - "ihr_fee": 0, - "destination": { - "address": "0:6996055eb4b51d04ed733ef08387cb6b57347e44f386a0ad6c434b57ca535f57", - "is_scam": false, - "is_wallet": true - }, - "source": { - "address": "0:cc71f2336097857d9cf518b0b90d711dba1554ab07ba8719d041ba9903bc0ac4", - "is_scam": false, - "is_wallet": true - }, - "import_fee": 0, - "created_at": 1753846934, - "hash": "c6a02de4750ab7da4cc93d005c14d6ecd134c3312b2685be315c27c403a8dce2" - } - ], - "block": "(0,8000000000000000,55559956)", - "prev_trans_hash": "f39698e483dda9e003b46fb9ed11c10ab8d9f1256fe2a41ccc5e713dbbe08af2", - "prev_trans_lt": 55655701000001, - "compute_phase": { - "skipped": false, - "success": true, - "gas_fees": 1323200, - "gas_used": 3308, - "vm_steps": 68, - "exit_code": 0, - "exit_code_description": "Ok" - }, - "storage_phase": { - "fees_collected": 2597296, - "status_change": "acst_unchanged" - }, - "action_phase": { - "success": true, - "result_code": 0, - "total_actions": 1, - "skipped_actions": 0, - "fwd_fees": 440000, - "total_fees": 146664 - }, - "aborted": false, - "destroyed": false, - "raw": "b5ee9c7201020c010002510003b57cc71f2336097857d9cf518b0b90d711dba1554ab07ba8719d041ba9903bc0ac4000036825218b7c1f39698e483dda9e003b46fb9ed11c10ab8d9f1256fe2a41ccc5e713dbbe08af20000329e5a49af416889949600034698af3080102030201e00405008272ab094dbb597b1bc8b34a1e2e857b3d23be9353104a529ba79a9ed5107eed0cda7a1b0a9322207e49ca62469f503e67b6f64dbb62de61ea46543de0a1aff67a0a02130cc9e86c0618a18604400a0b0145880198e3e466c12f0afb39ea3161721ae23b742aa9560f750e33a0837532077815880c060101df08019c1fd1e5f564617ee5e6e36bd176ee9a557f6fa88b5410b270d74505e8389398554c8ea2669ca41a17be5d18fe42b234c99e9dc19795b9e819f6359bb3d8b2330529a9a317688996ed000000110003070168420034cb02af5a5a8e8276b99f7841c3e5b5ab9a3f2279c35056b621a5abe529afaba3c82c67d8000000000000000000000000010901b1480198e3e466c12f0afb39ea3161721ae23b742aa9560f750e33a083753207781589001a658157ad2d47413b5ccfbc20e1f2dad5cd1f913ce1a82b5b10d2d5f294d7d5d1e41633ec0608f3b000006d04a4316f84d113292cc0090000009d419d8313880000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020006fc9835b604c08f3a0000000000002000000000003cdcc9e1baf748b675befc660f4135962c2cf8d1b124e92afdeacf8000819fb7e4090160c" - } \ No newline at end of file diff --git a/crates/gem_ton/testdata/transaction_aborted.json b/crates/gem_ton/testdata/transaction_aborted.json deleted file mode 100644 index e2a526e7d4..0000000000 --- a/crates/gem_ton/testdata/transaction_aborted.json +++ /dev/null @@ -1,220 +0,0 @@ -{ - "transactions": [ - { - "account": "0:E49681F811BD14CBCB4B8D312FF3F6D24EFDFCD18D7CA566074045E242B008A3", - "hash": "58XzoVYsNWq/lGjJXxUm8ITToa9z23/SVooMs/iljs4=", - "lt": "46918456000001", - "now": 1717620783, - "mc_block_seqno": 38216277, - "trace_id": "bm21RHxL4euqyWZsT6XS4bYgSx/gd2Z1pS+zW8Mn3rQ=", - "prev_trans_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "prev_trans_lt": "0", - "orig_status": "nonexist", - "end_status": "uninit", - "total_fees": "0", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "3000000000" - }, - "compute_ph": { - "skipped": true, - "reason": "no_state" - } - }, - "block_ref": { - "workchain": 0, - "shard": "E000000000000000", - "seqno": 43884519 - }, - "in_msg": { - "hash": "t7W3ONyRyuIgMWyUJ1NZkfgdXy9yeY+ZNSBeZ10i+BE=", - "source": "0:FD72417897DEF74C2F7EF344790FFA1A39CD0B55ECE8B7D8B2BF5A7FFC2679DC", - "destination": "0:E49681F811BD14CBCB4B8D312FF3F6D24EFDFCD18D7CA566074045E242B008A3", - "value": "3000000000", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "46918449000003", - "created_at": "1717620738", - "opcode": null, - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "body": "te6cckEBAQEAAgAAAEysuc0=", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "kK7Illr6uxbrw8ubQI665xthjXh4i8gNCYQ1k8rJjaQ=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "aYNfB5q5mkiEbppej0vMGjOYqatbfDYQ9AQykmTwgGA=", - "balance": "3000000000", - "extra_currencies": {}, - "account_status": "uninit", - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:FD72417897DEF74C2F7EF344790FFA1A39CD0B55ECE8B7D8B2BF5A7FFC2679DC", - "hash": "bm21RHxL4euqyWZsT6XS4bYgSx/gd2Z1pS+zW8Mn3rQ=", - "lt": "46918449000002", - "now": 1717620738, - "mc_block_seqno": 38216272, - "trace_id": "bm21RHxL4euqyWZsT6XS4bYgSx/gd2Z1pS+zW8Mn3rQ=", - "prev_trans_hash": "gKgq0kHRacho15PMzY5dtW+4hVw8gTEHzy/Io9+FuYQ=", - "prev_trans_lt": "46918449000001", - "orig_status": "active", - "end_status": "active", - "total_fees": "3462931", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "credit_ph": {}, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "2623600", - "gas_used": "6559", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 150, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "400000", - "total_action_fees": "133331", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "cMUNvExNV5tgEjV+mBei/NDE/tiDTeoxWmS7lCjwlzQ=", - "tot_msg_size": { - "cells": "1", - "bits": "705" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "E000000000000000", - "seqno": 43884516 - }, - "in_msg": { - "hash": "FsJf+wOn3pU++e7oVcWdGe+6KSoX01hbnl6Umb5NRTU=", - "source": null, - "destination": "0:FD72417897DEF74C2F7EF344790FFA1A39CD0B55ECE8B7D8B2BF5A7FFC2679DC", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0x7d2ea79c", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "SWjc4XlMQXGmfpqkTeOkekxnXeNOGvqLPDhbCu6eC4o=", - "body": "te6cckEBAwEAjwABgH0up5xM2II32rNjH+DRc3mZqUKamO99ckdaY/XoX5o5wkBebAJ8jXpBUGcYBNC1H+nIwumINJSsrTZisBgsYQYBASUAAAABAwLWNAAAAADMwZ6QAqMEAgBoQgByS0D8CN6KZeWlxpiX+ftpJ37+aMa+UrMDoCLxIVgEUaWWgvAAAAAAAAAAAAAAAAAAAEUMgMQ=", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [ - { - "hash": "t7W3ONyRyuIgMWyUJ1NZkfgdXy9yeY+ZNSBeZ10i+BE=", - "source": "0:FD72417897DEF74C2F7EF344790FFA1A39CD0B55ECE8B7D8B2BF5A7FFC2679DC", - "destination": "0:E49681F811BD14CBCB4B8D312FF3F6D24EFDFCD18D7CA566074045E242B008A3", - "value": "3000000000", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "46918449000003", - "created_at": "1717620738", - "opcode": null, - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "lqKW0iTyhcZ77pPDD4owkVfw2qNdxbh+QQt4YwoJz8c=", - "body": "te6cckEBAQEAAgAAAEysuc0=", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "eOG2HnPkOi3BgolKf+L6rWQwSMFxjgzC4Dp8shAQPiw=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "PfkKte6qi5SDDCpL6AzeyohD5Me/6nTy+loFJOnej9s=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - } - ], - "address_book": { - "0:E49681F811BD14CBCB4B8D312FF3F6D24EFDFCD18D7CA566074045E242B008A3": { - "user_friendly": "UQDkloH4Eb0Uy8tLjTEv8_bSTv380Y18pWYHQEXiQrAIozMW", - "domain": null - }, - "0:FD72417897DEF74C2F7EF344790FFA1A39CD0B55ECE8B7D8B2BF5A7FFC2679DC": { - "user_friendly": "EQD9ckF4l973TC9-80R5D_oaOc0LVezot9iyv1p__CZ53MFg", - "domain": null - } - } -} diff --git a/crates/gem_ton/testdata/transaction_bounced.json b/crates/gem_ton/testdata/transaction_bounced.json deleted file mode 100644 index 970c14562e..0000000000 --- a/crates/gem_ton/testdata/transaction_bounced.json +++ /dev/null @@ -1,267 +0,0 @@ -{ - "transactions": [ - { - "account": "0:35D5F38CF7BF64062C021CC779250A29E4987290A6722A07685B5472B28CF89F", - "hash": "ybApDpIZEhG8KlvOW5iSfv2qn6bSHPvxSt7bVF/h7Tc=", - "lt": "59950377000003", - "now": 1753890772, - "mc_block_seqno": 50399445, - "trace_id": "K67fQo3HRQLPHMD5x5QXfbyaG3FMJ4o7dQAG6+ou0IQ=", - "prev_trans_hash": "h4nCWdf6ZJrDfp/cPj2BYs7JoHlRKj3YqvhstZfGLtE=", - "prev_trans_lt": "59950341000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "1880469", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": false, - "storage_ph": { - "storage_fees_collected": "1138", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "100000000" - }, - "compute_ph": { - "skipped": false, - "success": false, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1746000", - "gas_used": "4365", - "gas_limit": "250000", - "mode": 0, - "exit_code": 132, - "vm_steps": 97, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "bounce": { - "type": "ok", - "msg_size": { - "cells": "0", - "bits": "0" - }, - "msg_fees": "133331", - "fwd_fees": "266669" - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55575419 - }, - "in_msg": { - "hash": "1bIRgdbD/3laAcAwAXiqbeU8Lwed6rwhsOMjFNFANJs=", - "source": "0:5A78B3C4CF147040FDB34768D4ABE734A47CCD0C9E0E065A4C7D9C62978D1F2F", - "destination": "0:35D5F38CF7BF64062C021CC779250A29E4987290A6722A07685B5472B28CF89F", - "value": "100000000", - "value_extra_currencies": {}, - "fwd_fee": "312536", - "ihr_fee": "0", - "created_lt": "59950377000002", - "created_at": "1753890772", - "opcode": "0x00000000", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "U11EUUVUruA2wJo5Bj/oeMowpQy5tfj28ewk8T4xaek=", - "body": "te6cckEBAQEACwAAEgAAAABjbGFpbVz+4mA=", - "decoded": { - "type": "text_comment", - "comment": "claim" - } - }, - "init_state": null - }, - "out_msgs": [ - { - "hash": "q5GGaiqbtR4glKW4gsvm4J9VjsnnfLERReyf9lT+jW8=", - "source": "0:35D5F38CF7BF64062C021CC779250A29E4987290A6722A07685B5472B28CF89F", - "destination": "0:5A78B3C4CF147040FDB34768D4ABE734A47CCD0C9E0E065A4C7D9C62978D1F2F", - "value": "97854000", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "59950377000004", - "created_at": "1753890772", - "opcode": "0xffffffff", - "ihr_disabled": true, - "bounce": false, - "bounced": true, - "import_fee": null, - "message_content": { - "hash": "BcNnTCMWdBHpn6XB5htKSqn4kfyfZuNVpOvSmVV+eco=", - "body": "te6cckEBAQEADwAAGv////8AAAAAY2xhaW1Lv1aW", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "PaXPx8JKvAP96Qjja0e3oFU6ye1Zyt0J6sMjMCDQCiY=", - "balance": "699378912682", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "S68d2ufAKKtVNB/vWSzD+aFJ3uT3/zC3JkZHysO/SJ0=", - "code_hash": "uq+Vu5tJa4EPy3EszhZ+qcYKDvOYxgeWT3qem2WNnQ8=" - }, - "account_state_after": { - "hash": "kHKEGQKtcfHpo9T6Nv5m7bZlVR8z4KOWP+nNvSwV890=", - "balance": "699378911544", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "S68d2ufAKKtVNB/vWSzD+aFJ3uT3/zC3JkZHysO/SJ0=", - "code_hash": "uq+Vu5tJa4EPy3EszhZ+qcYKDvOYxgeWT3qem2WNnQ8=" - }, - "emulated": false - }, - { - "account": "0:5A78B3C4CF147040FDB34768D4ABE734A47CCD0C9E0E065A4C7D9C62978D1F2F", - "hash": "K67fQo3HRQLPHMD5x5QXfbyaG3FMJ4o7dQAG6+ou0IQ=", - "lt": "59950377000001", - "now": 1753890772, - "mc_block_seqno": 50399445, - "trace_id": "K67fQo3HRQLPHMD5x5QXfbyaG3FMJ4o7dQAG6+ou0IQ=", - "prev_trans_hash": "GaIdIVty6YTgLMBwI3Fm1YWTWsJpijrlEbOSq4rU4YE=", - "prev_trans_lt": "59950329000005", - "orig_status": "active", - "end_status": "active", - "total_fees": "3199896", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "32", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1975600", - "gas_used": "4939", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 143, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "468800", - "total_action_fees": "156264", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "q+Cvns51XOsa3zXlM/bTxyZoFOGvF56grSA4iey4WH4=", - "tot_msg_size": { - "cells": "2", - "bits": "777" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55575419 - }, - "in_msg": { - "hash": "QNvp0qkTgGxdQwrOf2XOi2bwy2xTq6s2ZjQ51cDDpY0=", - "source": null, - "destination": "0:5A78B3C4CF147040FDB34768D4ABE734A47CCD0C9E0E065A4C7D9C62978D1F2F", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0x7369676e", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "u2j+Ywe0nIv7KDqRoRe3/xpVoOSPGG6uC3buk9tFdvI=", - "body": "te6cckEBBQEAoQABoXNpZ25///8RaIpBIgAAAEaTUvPPE2FqQM1qYkrDkT8JWZl8I/VlLZyfLkKZhcXdCFrOEWdPJQEKAB+nfygfv83KYUZPrcrLBO+oCd07fHRDYAECCg7DyG0DAgMAAAFoYgAa6vnGe9+yAxYBDmO8koUU8kw5SFM5FQO0Lao5WUZ8T6AvrwgAAAAAAAAAAAAAAAAAAQQAEgAAAABjbGFpbQPBSuk=", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [ - { - "hash": "1bIRgdbD/3laAcAwAXiqbeU8Lwed6rwhsOMjFNFANJs=", - "source": "0:5A78B3C4CF147040FDB34768D4ABE734A47CCD0C9E0E065A4C7D9C62978D1F2F", - "destination": "0:35D5F38CF7BF64062C021CC779250A29E4987290A6722A07685B5472B28CF89F", - "value": "100000000", - "value_extra_currencies": {}, - "fwd_fee": "312536", - "ihr_fee": "0", - "created_lt": "59950377000002", - "created_at": "1753890772", - "opcode": "0x00000000", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "U11EUUVUruA2wJo5Bj/oeMowpQy5tfj28ewk8T4xaek=", - "body": "te6cckEBAQEACwAAEgAAAABjbGFpbVz+4mA=", - "decoded": { - "type": "text_comment", - "comment": "claim" - } - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "XalWUiMtgSx8Q7C5vB5FZoCEsiEtqtJ1XY8JSFykmqA=", - "balance": "40471055054", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "vdCR09r8er0dsGWKSx3sdTJZrAX6Lwc0cNdf7O5T4U8=", - "code_hash": "IINLe3KxEhR+Gy+0V7hOdNGjDwT3N9T2KmaOlVLSty8=" - }, - "account_state_after": { - "hash": "jtio62oNZ3yjAKkuSJlTtpkDK3jMlo20jDZDUVssjE4=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - } - ], - "address_book": { - "0:35D5F38CF7BF64062C021CC779250A29E4987290A6722A07685B5472B28CF89F": { - "user_friendly": "EQA11fOM979kBiwCHMd5JQop5JhykKZyKgdoW1Rysoz4nxG3", - "domain": null - }, - "0:5A78B3C4CF147040FDB34768D4ABE734A47CCD0C9E0E065A4C7D9C62978D1F2F": { - "user_friendly": "UQBaeLPEzxRwQP2zR2jUq-c0pHzNDJ4OBlpMfZxil40fL55X", - "domain": null - } - } -} diff --git a/crates/gem_ton/testdata/transaction_broadcast_error.json b/crates/gem_ton/testdata/transaction_broadcast_error.json deleted file mode 100644 index 4b989c15de..0000000000 --- a/crates/gem_ton/testdata/transaction_broadcast_error.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "ok": false, - "error": "LITE_SERVER_UNKNOWN: cannot apply external message to current state : External message was not accepted\nCannot run message on account: inbound external message rejected by transaction 33A14A5A9406979D59B9328898591660B8B1736342B11632EFDCC911AB9057CF:\nexitcode=33, steps=23, gas_used=0\nVM Log (truncated):\n...te NOW\nexecute LEQ\nexecute THROWIF 36\nexecute PUSH c4\nexecute CTOS\nexecute LDU 32\nexecute LDU 32\nexecute LDU 256\nexecute LDDICT\nexecute ENDS\nexecute XCPU s4,s3\nexecute EQUAL\nexecute THROWIFNOT 33\ndefault exception handler, terminating vm with exit code 33\n", - "code": 500 -} \ No newline at end of file diff --git a/crates/gem_ton/testdata/transaction_broadcast_success.json b/crates/gem_ton/testdata/transaction_broadcast_success.json deleted file mode 100644 index eaeca6ad81..0000000000 --- a/crates/gem_ton/testdata/transaction_broadcast_success.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "result": { - "@type": "raw.extMessageInfo", - "hash": "was+4A6Fh+mSUroZFGdd8hOEdfZ7k3XEJs5XN78GfN0=", - "hash_norm": "was+4A6Fh+mSUroZFGdd8hOEdfZ7k3XEJs5XN78GfN0=", - "@extra": "1755568105.139694:8:0.5579205409869136" - } - } \ No newline at end of file diff --git a/crates/gem_ton/testdata/transaction_confirmed.json b/crates/gem_ton/testdata/transaction_confirmed.json deleted file mode 100644 index 9b441134a6..0000000000 --- a/crates/gem_ton/testdata/transaction_confirmed.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "transactions": [ - { - "account": "0:5763E0F7F11C3944C41C8E981664CFAAC9F50305085CA8AF7D93EFB585BCDE0F", - "hash": "Ucxd3KlNqn/i1619GzvD3f8sqT4PVPlScV0RFSdJuvQ=", - "lt": "59981051000001", - "now": 1753968698, - "mc_block_seqno": 50429627, - "trace_id": "Ucxd3KlNqn/i1619GzvD3f8sqT4PVPlScV0RFSdJuvQ=", - "prev_trans_hash": "MEHrbfWq0jDchinm8XNT9iCr7lBniRGOqU5fkAZ8nwU=", - "prev_trans_lt": "59981011000008", - "orig_status": "active", - "end_status": "active", - "total_fees": "2114160", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "29", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "400000", - "total_action_fees": "133331", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "Ss2dciri7rk0OH52vIDrlgjGJl9qnYbTKfzL1+7WpcY=", - "tot_msg_size": { - "cells": "1", - "bits": "833" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55603317 - }, - "in_msg": { - "hash": "XWgOAkV3gzWhj6vDx5UJcWKQ/FGN47Mo/0UeHXWRGSI=", - "source": null, - "destination": "0:5763E0F7F11C3944C41C8E981664CFAAC9F50305085CA8AF7D93EFB585BCDE0F", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0x1ddc7586", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "GpYt37WXuPgW4zpcQWCwy6wlucTgF/XKV8F9p+Xuh8o=", - "body": "te6cckEBAgEAlwABnB3cdYbQ6Unf8eaQASGGkJAs4wWfqoy8ItFKktywcpDYiazSFR468n74CmdIIVGww4TK47EXPr8ZNc5j9LhPtgMpqaMXaItxYwAAAAUAAwEAiGIALNmr20PIWE2KGMwBJYxtQh7iHsSm4IQcehqWbeCcQzWoOb3zsAAAAAAAAAAAAAAAAAAAAAAAAHI3dzUydDdpcXNqpV3uwA==", - "decoded": null - }, - "init_state": null, - "hash_norm": "UKhWFkZX2M/HdtDKOugm+qjkPhxa/2Nov06RFo2tXAg=" - }, - "out_msgs": [ - { - "hash": "rVJKXj/sfjd1ui3qXZ6scJTovqwgHPe9YvhcvvR1Nr8=", - "source": "0:5763E0F7F11C3944C41C8E981664CFAAC9F50305085CA8AF7D93EFB585BCDE0F", - "destination": "0:59B357B68790B09B143198024B18DA843DC43D894DC10838F4352CDBC138866B", - "value": "31000000000", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "59981051000002", - "created_at": "1753968698", - "opcode": "0x00000000", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "k2JCPv1j4SFSvnAO6aRS4YZg88+QHOzmOT3iqy9AjEw=", - "body": "te6cckEBAQEAEQAAHgAAAAByN3c1MnQ3aXFzah6hS78=", - "decoded": { - "type": "text_comment", - "comment": "r7w52t7iqsj" - } - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "cnq88LL/InE2u1YvmIKtiUt6W7CcqfnHlJhuxVzKnss=", - "balance": "31651604164", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "5LREfCFriLq/VWLg5jwrgZMszgU2ne3Lx74oRrVU0GM=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "account_state_after": { - "hash": "h0GduurPbnphIBRfYSRdNo+2ewwShZo/7t/Mh66jwh0=", - "balance": "649223335", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "C/OWh/vYeRCvyWjiXuaPNy+Oby/URVSJBZIuqVlAnKA=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "emulated": false - } - ], - "address_book": { - "0:5763E0F7F11C3944C41C8E981664CFAAC9F50305085CA8AF7D93EFB585BCDE0F": { - "user_friendly": "UQBXY-D38Rw5RMQcjpgWZM-qyfUDBQhcqK99k--1hbzeDxHQ", - "domain": null - }, - "0:59B357B68790B09B143198024B18DA843DC43D894DC10838F4352CDBC138866B": { - "user_friendly": "UQBZs1e2h5CwmxQxmAJLGNqEPcQ9iU3BCDj0NSzbwTiGa3hR", - "domain": "giftrelayer.ton" - } - } -} diff --git a/crates/gem_ton/testdata/transaction_exitcodefailed.json b/crates/gem_ton/testdata/transaction_exitcodefailed.json deleted file mode 100644 index 3851eac5ef..0000000000 --- a/crates/gem_ton/testdata/transaction_exitcodefailed.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "transactions": [ - { - "account": "0:C08DEC90DBB451877C936A3988DEAF75BD6DE165278D6F3B33E7E2FCC42EC5F8", - "hash": "JmWhATml03C5IsBpQ9pXd3vXqwfZnTQ1iM1ZxYWS4BE=", - "lt": "59896984000003", - "now": 1753754362, - "mc_block_seqno": 50347284, - "trace_id": "yoDKyUKGNzV/SRBmQoyH1Dzx/HBVew3gRyPrxpgT7vs=", - "prev_trans_hash": "0I/cqVtcIkVj/I0/+g/nddFOAePlml9nqBuSr3xFFmg=", - "prev_trans_lt": "59896981000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "3371738", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": false, - "storage_ph": { - "storage_fees_collected": "7", - "status_change": "unchanged" - }, - "credit_ph": { - "credit": "500000000" - }, - "compute_ph": { - "skipped": false, - "success": false, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "3238400", - "gas_used": "8096", - "gas_limit": "1000000", - "mode": 0, - "exit_code": 65535, - "vm_steps": 251, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "bounce": { - "type": "ok", - "msg_size": { - "cells": "0", - "bits": "0" - }, - "msg_fees": "133331", - "fwd_fees": "266669" - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55526142 - }, - "in_msg": { - "hash": "qaGDpnvx+ckdkXUNiQWSMBep0TYsojtysT77Qy1hzGo=", - "source": "0:E2EB9195D23ABB7010AAD33BD0C3E9818C4D2772F893DC5C4F30AC0D87A13426", - "destination": "0:C08DEC90DBB451877C936A3988DEAF75BD6DE165278D6F3B33E7E2FCC42EC5F8", - "value": "500000000", - "value_extra_currencies": {}, - "fwd_fee": "5718711", - "ihr_fee": "0", - "created_lt": "59896984000002", - "created_at": "1753754362", - "opcode": "0x00000001", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "QN/KKyiFsY1DE9fQ55Ih+ir135ZWS59Pax7T+c9wpF4=", - "body": "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", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [ - { - "hash": "OzGQ/oBpXcm7g2VsWv57qAL0m+xXgA1zwCZMoGHbeUE=", - "source": "0:C08DEC90DBB451877C936A3988DEAF75BD6DE165278D6F3B33E7E2FCC42EC5F8", - "destination": "0:E2EB9195D23ABB7010AAD33BD0C3E9818C4D2772F893DC5C4F30AC0D87A13426", - "value": "496361600", - "value_extra_currencies": {}, - "fwd_fee": "266669", - "ihr_fee": "0", - "created_lt": "59896984000004", - "created_at": "1753754362", - "opcode": "0xffffffff", - "ihr_disabled": true, - "bounce": false, - "bounced": true, - "import_fee": null, - "message_content": { - "hash": "Ke9qFhnV8N4mtW9HTiHaaH4a8Gmlz0z+4xW2HYD1exE=", - "body": "te6cckEBAQEAJgAASP////8AAAABAAABmFPnU6UAAAAADMKG3YAS6+clpeLNw4RuIL+35E0=", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "ZTkW5iz9A84/ioJtTaLlDypELEgPPAEDXc3xLz/qLDg=", - "balance": "99996698", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "UkxYKwNH7vHe597k36LXunvOU1Jaav3iRgTGUWSk2Ek=", - "code_hash": "z6iCi7k+o8+I/qRJqEGhc8OPHvvx5Tg4paIS1Cj0pxQ=" - }, - "account_state_after": { - "hash": "4h52rMyVmgAeeVoWsa+cRaE2kJTmjk4POLwtEDtpzOA=", - "balance": "99996691", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "UkxYKwNH7vHe597k36LXunvOU1Jaav3iRgTGUWSk2Ek=", - "code_hash": "z6iCi7k+o8+I/qRJqEGhc8OPHvvx5Tg4paIS1Cj0pxQ=" - }, - "emulated": false - }, - { - "account": "0:E2EB9195D23ABB7010AAD33BD0C3E9818C4D2772F893DC5C4F30AC0D87A13426", - "hash": "yoDKyUKGNzV/SRBmQoyH1Dzx/HBVew3gRyPrxpgT7vs=", - "lt": "59896984000001", - "now": 1753754362, - "mc_block_seqno": 50347284, - "trace_id": "yoDKyUKGNzV/SRBmQoyH1Dzx/HBVew3gRyPrxpgT7vs=", - "prev_trans_hash": "/vVBELmy335bRQ+nI55UNe6EeQyI0TcRb+6wtZFMkOQ=", - "prev_trans_lt": "59896981000005", - "orig_status": "active", - "end_status": "active", - "total_fees": "14906891", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": false, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "2", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "3250800", - "gas_used": "8127", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 112, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": true, - "valid": true, - "no_funds": false, - "status_change": "unchanged", - "total_fwd_fees": "8578000", - "total_action_fees": "2859289", - "result_code": 0, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 1, - "action_list_hash": "rt++2xwI7/b+ITxCYNhsMJKBPtAMZfoSMfdsSDs+g3c=", - "tot_msg_size": { - "cells": "76", - "bits": "13650" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55526142 - }, - "in_msg": { - "hash": "3r3vtb7HGgqsIr5rXL5p6FR3DCjYgiNe9U/61eA6K7s=", - "source": null, - "destination": "0:E2EB9195D23ABB7010AAD33BD0C3E9818C4D2772F893DC5C4F30AC0D87A13426", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0x77d0fee6", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "vEJYsIXicv3344nrNe7blq53cDiiWMqDGFjS2bGi8TQ=", - "body": "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", - "decoded": null - }, - "init_state": null, - "hash_norm": "PZwzWbq5J///Nhfvk0FTWeWbQKJjy92vhyJahKx1smY=" - }, - "out_msgs": [ - { - "hash": "qaGDpnvx+ckdkXUNiQWSMBep0TYsojtysT77Qy1hzGo=", - "source": "0:E2EB9195D23ABB7010AAD33BD0C3E9818C4D2772F893DC5C4F30AC0D87A13426", - "destination": "0:C08DEC90DBB451877C936A3988DEAF75BD6DE165278D6F3B33E7E2FCC42EC5F8", - "value": "500000000", - "value_extra_currencies": {}, - "fwd_fee": "5718711", - "ihr_fee": "0", - "created_lt": "59896984000002", - "created_at": "1753754362", - "opcode": "0x00000001", - "ihr_disabled": true, - "bounce": true, - "bounced": false, - "import_fee": null, - "message_content": { - "hash": "QN/KKyiFsY1DE9fQ55Ih+ir135ZWS59Pax7T+c9wpF4=", - "body": "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", - "decoded": null - }, - "init_state": null - } - ], - "account_state_before": { - "hash": "af0JqeNQ3tfRAmvLrqRjL7H19eBr3b8V4l1tlIbd9wM=", - "balance": "1610726265", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "8EMBpxhsbSYGkfjujhRj62APKShwn8veHqeT+OiP4D0=", - "code_hash": "lJTRzI7fEvBWcaGpugmSEJbrUIEeGSTsZcPGKfu4CBI=" - }, - "account_state_after": { - "hash": "4KAjrXdhQsmpWuRpFEEwsD6kcRthv+ph71NO0OsCcLs=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - } - ], - "address_book": { - "0:C08DEC90DBB451877C936A3988DEAF75BD6DE165278D6F3B33E7E2FCC42EC5F8": { - "user_friendly": "EQDAjeyQ27RRh3yTajmI3q91vW3hZSeNbzsz5-L8xC7F-HmR", - "domain": null - }, - "0:E2EB9195D23ABB7010AAD33BD0C3E9818C4D2772F893DC5C4F30AC0D87A13426": { - "user_friendly": "EQDi65GV0jq7cBCq0zvQw-mBjE0ncviT3FxPMKwNh6E0Jh4L", - "domain": null - } - } -} diff --git a/crates/gem_ton/testdata/transaction_failed.json b/crates/gem_ton/testdata/transaction_failed.json deleted file mode 100644 index 489b4557f3..0000000000 --- a/crates/gem_ton/testdata/transaction_failed.json +++ /dev/null @@ -1,1040 +0,0 @@ -{ - "transactions": [ - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "Cu5QfM0WxP1V/3usjRb2LuVtP/IVmBrerQt2wNhif/I=", - "lt": "59945772000006", - "now": 1753878825, - "mc_block_seqno": 50394890, - "trace_id": "Cu5QfM0WxP1V/3usjRb2LuVtP/IVmBrerQt2wNhif/I=", - "prev_trans_hash": "GRFxfjZoijhPFioaaH9WuNWZt5TrUdGCQq8qZzk9O7o=", - "prev_trans_lt": "59945772000005", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307600", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571439 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "xb6hT5Z2ZxmzVzG1BIpmOATGfbwfjbxVvJQK8CkehV0=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "/pv/S6JE4AoyYGYhBq6RLfKxhGyT+VmIxDA9BEJ0BL0=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "HOoBq9ml5UBh/mV9qA+YEC6XGpuWjd3Mim2EJGZn1p4=", - "lt": "59945770000009", - "now": 1753878821, - "mc_block_seqno": 50394889, - "trace_id": "HOoBq9ml5UBh/mV9qA+YEC6XGpuWjd3Mim2EJGZn1p4=", - "prev_trans_hash": "WvxWHTMuBsKUuExBzsjbBZNOdRE8Dt1lI5N1rtpA4bQ=", - "prev_trans_lt": "59945770000008", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307600", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571438 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "tzMybPdUVR5r8xKHXbG0FXvbNb0fFxcr41J8cTGuHhA=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "MyfMvS/TNUVXLMxNQ8XyCdK4/qlKqm9tCJWPD1Nku5w=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "cVBL3UXuI4x2u6+NLsQH4Nyp0/5SuCcHyxQlkOTGCp0=", - "lt": "59945769000004", - "now": 1753878818, - "mc_block_seqno": 50394887, - "trace_id": "cVBL3UXuI4x2u6+NLsQH4Nyp0/5SuCcHyxQlkOTGCp0=", - "prev_trans_hash": "pgdZ0w/UMXA76CRsRpsDtdXxXGIBn/EboFT3Cdh8Sp8=", - "prev_trans_lt": "59945769000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307600", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571437 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "bOeFOay2f6TgDLCnIlnT5rSKIrD/he5ExvLZsboIIcc=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "/UBOuAEkSh4aLv4mQE4HDg1O/2RQeEnWmLCJppNlmwI=", - "balance": "61594711", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "0/Odj5xpyD8CgU/KI9uIA2TKdyTTDB7gUehOa+m/tAA=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "emulated": false - }, - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "XbYg2Fb/p6UGq8I5jfP/Vp2au5YP4M9p921X+IAEtXY=", - "lt": "59945669000004", - "now": 1753878562, - "mc_block_seqno": 50394787, - "trace_id": "XbYg2Fb/p6UGq8I5jfP/Vp2au5YP4M9p921X+IAEtXY=", - "prev_trans_hash": "3AfjPUi0zICtnKTCTBHtl/5tZygtXU1pnz1YdexoPA4=", - "prev_trans_lt": "59945669000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307600", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571355 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "jXgu5WOfG71VqnxpH3tqXu1p0BZ7ryIZLOnfAAjToik=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "z4K5Xy6liMto2ahpahqGovIUd9Vx6GVepmWcQwyivKs=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "HSDZ0uEmnHNTAOnXJJw8xd8rY6/JRyd8TJlE4TbWxb0=", - "lt": "59945667000009", - "now": 1753878557, - "mc_block_seqno": 50394786, - "trace_id": "HSDZ0uEmnHNTAOnXJJw8xd8rY6/JRyd8TJlE4TbWxb0=", - "prev_trans_hash": "2Nz1PCELemFZ683umlEtXx+PB9r4KP+fJtGmjyvk33o=", - "prev_trans_lt": "59945667000008", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307600", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571354 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "K+3I+CT/gZF119v2aYubffMX0G7n+UK6BmxblLTuhwQ=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "CbBHyzpBRw7CU8ELbx3jQEn5bjedPwJmNGqXJWdTyUY=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "KqNBpoVVr/VlJ1xEHV+P6tYEIrZuCu0+twSm1Ht6VyM=", - "lt": "59945661000002", - "now": 1753878542, - "mc_block_seqno": 50394779, - "trace_id": "KqNBpoVVr/VlJ1xEHV+P6tYEIrZuCu0+twSm1Ht6VyM=", - "prev_trans_hash": "qTvj3v9b25yJ6u/2p4HeKRnhGwgJKeMPpYj+2cnAzqU=", - "prev_trans_lt": "59945661000001", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307600", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571349 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "x9EAnF9irJ58soM8MnlOs0NrQer/vOLmGyt/vpqFMPY=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "OEOm2JSRZQCAYmWn8OwuMlsYgRrWsTjQU7kZmMzXb80=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "EAHfrOURydZ4rQSio4OoCkN4nMT6Mokj38Sj8XF9pys=", - "lt": "59945660000001", - "now": 1753878538, - "mc_block_seqno": 50394778, - "trace_id": "EAHfrOURydZ4rQSio4OoCkN4nMT6Mokj38Sj8XF9pys=", - "prev_trans_hash": "NvxBxkhlvy4kY5v0G+olypb4OzHo7pBLOaPxXb0A8eg=", - "prev_trans_lt": "59945659000007", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307601", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "1", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571348 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "q8VvCW9kmvd8ZL2jbTm3h6om+yUvpqv7weex+8cJ9QE=", - "balance": "39926402", - "extra_currencies": {}, - "account_status": "active", - "frozen_hash": null, - "data_hash": "0/Odj5xpyD8CgU/KI9uIA2TKdyTTDB7gUehOa+m/tAA=", - "code_hash": "/rX/aCDi/w2Ug+fg1iyBfYRniftK5YDIeIZtlZ2r1cA=" - }, - "account_state_after": { - "hash": "qFoqr5W0F2AxgBdAb0riu/bE7wgYJLALCigAqfZotlc=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "fyEPa/QsYZ2NzVdg0tlRBz5Xi3aa0uPzRSAhoaBQ13A=", - "lt": "59945659000005", - "now": 1753878535, - "mc_block_seqno": 50394776, - "trace_id": "fyEPa/QsYZ2NzVdg0tlRBz5Xi3aa0uPzRSAhoaBQ13A=", - "prev_trans_hash": "bvQKafNABUc6/W1mH0ybxf70Y7Z7+BUaH6wZlut5JLM=", - "prev_trans_lt": "59945659000004", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307600", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571347 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "/sVXGenBD0m7G4uv4xrQA6YvmZ4/+Ug2znzOfIhOp9k=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "mcK2F/FanILdyyiG20wbHwZviVdw5ul7Oosa7UuG+to=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "BeG4BFB0TzEg4D+23RLxHSnwOhaPUrGYaxi0QUIWJIw=", - "lt": "59945657000004", - "now": 1753878529, - "mc_block_seqno": 50394775, - "trace_id": "BeG4BFB0TzEg4D+23RLxHSnwOhaPUrGYaxi0QUIWJIw=", - "prev_trans_hash": "5Yj3R4Uc8MsQgxEzL/TYLYtx5m8Ik3gy1EF7ouwkzPQ=", - "prev_trans_lt": "59945657000003", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307600", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571345 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "vXQn8t8hPuEApVy9r+KSXQ9IrewMZQnw37UvnwooygA=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "Jb2BWJ3G4ocuQDFccui9xawaUInftCCgQli/f1jYe0A=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - }, - { - "account": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "hash": "dCznf7m8h9EsPW0VeUEwwvx1l8EnLsL0hbETCeJjVGk=", - "lt": "59945656000006", - "now": 1753878525, - "mc_block_seqno": 50394773, - "trace_id": "dCznf7m8h9EsPW0VeUEwwvx1l8EnLsL0hbETCeJjVGk=", - "prev_trans_hash": "X2pySHkbdUuikUZKS1zJxMhXFfLObFgTbN005Njflk8=", - "prev_trans_lt": "59945656000005", - "orig_status": "active", - "end_status": "active", - "total_fees": "2307600", - "total_fees_extra_currencies": {}, - "description": { - "type": "ord", - "aborted": true, - "destroyed": false, - "credit_first": true, - "storage_ph": { - "storage_fees_collected": "0", - "status_change": "unchanged" - }, - "compute_ph": { - "skipped": false, - "success": true, - "msg_state_used": false, - "account_activated": false, - "gas_fees": "1323200", - "gas_used": "3308", - "gas_limit": "0", - "gas_credit": "10000", - "mode": 0, - "exit_code": 0, - "vm_steps": 68, - "vm_init_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "vm_final_state_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" - }, - "action": { - "success": false, - "valid": true, - "no_funds": true, - "status_change": "unchanged", - "total_action_fees": "10000", - "result_code": 37, - "tot_actions": 1, - "spec_actions": 0, - "skipped_actions": 0, - "msgs_created": 0, - "action_list_hash": "NzhXOcMb4bkfB+R8/9UtjhlFUiRM1w3Djkk6UTRfaYc=", - "tot_msg_size": { - "cells": "0", - "bits": "0" - } - } - }, - "block_ref": { - "workchain": 0, - "shard": "8000000000000000", - "seqno": 55571344 - }, - "in_msg": { - "hash": "TGHsuzeYT554C0I0r0Y6W9yP39LtC69tS5W2x4vxzao=", - "source": null, - "destination": "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D", - "value": null, - "value_extra_currencies": null, - "fwd_fee": null, - "ihr_fee": null, - "created_lt": null, - "created_at": null, - "opcode": "0xd6182fce", - "ihr_disabled": null, - "bounce": null, - "bounced": null, - "import_fee": "0", - "message_content": { - "hash": "1ra1Xz4Vgf7ly6/meox+z+SkEdeH92mmWk5J65z+1vo=", - "body": "te6cckEBAwEAlgABnNYYL8771PYPpVHGIM2+cuPNp0S/52gsPdtgMKbo9QhKzoDW9Sx6c/G0s84vjaP6n/8ajRJlK2DgpVL1pqRJvwspqaMXaIoTfgAAAUsAAAEBaEIAOJroYlgqEPmNKPR2T2mLJUP8mVG1gz9asNo0cnjzpNCgOThwAAAAAAAAAAAAAAAAAAECABg1S830AAAAAAAAAAFYeZrR", - "decoded": null - }, - "init_state": null - }, - "out_msgs": [], - "account_state_before": { - "hash": "RdGTb8cvmyBpmMHZdozhldGdm1i4bzdKqCifZNtIMRs=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "account_state_after": { - "hash": "NbwgpguCAWHXIxHl8xwvQd5PP3Hew2hJJQxJuuX+t1I=", - "balance": null, - "extra_currencies": null, - "account_status": null, - "frozen_hash": null, - "data_hash": null, - "code_hash": null - }, - "emulated": false - } - ], - "address_book": { - "0:F4684B10A661EAA395F87D4A660E6DFC3BEC187A8B24F6F362C0C6B1D20F1B5D": { - "user_friendly": "UQD0aEsQpmHqo5X4fUpmDm38O-wYeosk9vNiwMax0g8bXR9N", - "domain": null - } - } -} diff --git a/crates/gem_ton/testdata/tx_with_memo.json b/crates/gem_ton/testdata/tx_with_memo.json deleted file mode 100644 index df78ad9be2..0000000000 --- a/crates/gem_ton/testdata/tx_with_memo.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "hash": "420e601674a29c06e7d474e7811526e7aff2bc9cc647cc1fe7754efca5b1f679", - "lt": 60306004000001, - "account": { - "address": "0:02fbd051676c0e6db2d57108e85edbff78e926e91e000d23ce1e949d975f7323", - "is_scam": false, - "is_wallet": true - }, - "success": true, - "utime": 1754790147, - "orig_status": "active", - "end_status": "active", - "total_fees": 3674058, - "end_balance": 2093535902, - "transaction_type": "TransOrd", - "state_update_old": "158c5c20a494e8d57c3870c518eb88b9570dbc6a45a6f64760a4efbe2698eb50", - "state_update_new": "6fab6cb0b6736174df909700de6e48e0bc2a638053f0d8287855dd5d1a43f3d3", - "in_msg": { - "msg_type": "ext_in_msg", - "created_lt": 0, - "ihr_disabled": false, - "bounce": false, - "bounced": false, - "value": 0, - "fwd_fee": 0, - "ihr_fee": 0, - "destination": { - "address": "0:02fbd051676c0e6db2d57108e85edbff78e926e91e000d23ce1e949d975f7323", - "is_scam": false, - "is_wallet": true - }, - "import_fee": 0, - "created_at": 0, - "hash": "43a32ce6bbb60c1f93886a5d3b27ce29489f565cdf3b3f5f22153ba18b88fc90", - "raw_body": "b5ee9c7201010301009700019c76662ba7895bc347e86748c060a189714b552e56166fef7ad0abb26c0d9429851378ab6f00223995fb23a882404a7dc2e7ff1f8d91fa27b78b86462680e4150129a9a3176897fb59000000100003010168420000e082a6866faf3bf22b5a35e426dbba7eb737023574c70dee5641bb12328e1221dcd650000000000000000000000000000102001a0000000068656c6c6f2d313233", - "decoded_op_name": "wallet_signed_v4", - "decoded_body": { - "signature": "76662ba7895bc347e86748c060a189714b552e56166fef7ad0abb26c0d9429851378ab6f00223995fb23a882404a7dc2e7ff1f8d91fa27b78b86462680e41501", - "subwallet_id": 698983191, - "valid_until": 1754790745, - "seqno": 16, - "op": 0, - "payload": [ - { - "mode": 3, - "message": { - "sum_type": "MessageInternal", - "message_internal": { - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "src": "", - "dest": "0:01c1054d0cdf5e77e456b46bc84db774fd6e6e046ae98e1bdcac837624651c24", - "value": { - "grams": "1000000000", - "other": {} - }, - "ihr_fee": "0", - "fwd_fee": "0", - "created_lt": 0, - "created_at": 0, - "init": null, - "body": { - "is_right": true, - "value": { - "sum_type": "TextComment", - "op_code": 0, - "value": { - "text": "hello-123" - } - } - } - } - } - } - ] - } - }, - "out_msgs": [ - { - "msg_type": "int_msg", - "created_lt": 60306004000002, - "ihr_disabled": true, - "bounce": false, - "bounced": false, - "value": 1000000000, - "fwd_fee": 321070, - "ihr_fee": 0, - "destination": { - "address": "0:01c1054d0cdf5e77e456b46bc84db774fd6e6e046ae98e1bdcac837624651c24", - "is_scam": false, - "is_wallet": true - }, - "source": { - "address": "0:02fbd051676c0e6db2d57108e85edbff78e926e91e000d23ce1e949d975f7323", - "is_scam": false, - "is_wallet": true - }, - "import_fee": 0, - "created_at": 1754790147, - "op_code": "0x00000000", - "hash": "5bdf54bf1e256ff17b470aaafc40ec76894fe1c4781db05c8551a2a9f8b60430", - "raw_body": "b5ee9c7201010101000f00001a0000000068656c6c6f2d313233", - "decoded_op_name": "text_comment", - "decoded_body": { - "text": "hello-123" - } - } - ], - "block": "(0,8000000000000000,55901276)", - "prev_trans_hash": "bafe4333064b7a03f3850e595e705862bb8c4f6f33af0f13a2544fef79794a62", - "prev_trans_lt": 58355313000001, - "compute_phase": { - "skipped": false, - "success": true, - "gas_fees": 1323200, - "gas_used": 3308, - "vm_steps": 68, - "exit_code": 0, - "exit_code_description": "Ok" - }, - "storage_phase": { - "fees_collected": 1212728, - "status_change": "acst_unchanged" - }, - "action_phase": { - "success": true, - "result_code": 0, - "total_actions": 1, - "skipped_actions": 0, - "fwd_fees": 481600, - "total_fees": 160530 - }, - "aborted": false, - "destroyed": false, - "raw": "b5ee9c7201020c0100025e0003b5702fbd051676c0e6db2d57108e85edbff78e926e91e000d23ce1e949d975f7323000036d915f23d01bafe4333064b7a03f3850e595e705862bb8c4f6f33af0f13a2544fef79794a6200003512e7b3be416897f903000346701f9480102030201e00405008272158c5c20a494e8d57c3870c518eb88b9570dbc6a45a6f64760a4efbe2698eb506fab6cb0b6736174df909700de6e48e0bc2a638053f0d8287855dd5d1a43f3d302130cc4a04e0618a18604400a0b0145880005f7a0a2ced81cdb65aae211d0bdb7fef1d24dd23c001a479c3d293b2ebee6460c060101df08019c76662ba7895bc347e86748c060a189714b552e56166fef7ad0abb26c0d9429851378ab6f00223995fb23a882404a7dc2e7ff1f8d91fa27b78b86462680e4150129a9a3176897fb59000000100003070168420000e082a6866faf3bf22b5a35e426dbba7eb737023574c70dee5641bb12328e1221dcd65000000000000000000000000000010901b1480005f7a0a2ced81cdb65aae211d0bdb7fef1d24dd23c001a479c3d293b2ebee64700007041534337d79df915ad1af2136ddd3f5b9b811aba6386f72b20dd8919470910ee6b28000609cc5c00006db22be47a04d12ff206c009001a0000000068656c6c6f2d313233009d419d8313880000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020006fc983aca04c09cc4800000000000200000000000313e31645ad8acc6e37543855798337b224c6e04a0a245028b338f25dd7fb459c4090194c" - } \ No newline at end of file diff --git a/crates/gem_ton/testdata/wallet_information.json b/crates/gem_ton/testdata/wallet_information.json deleted file mode 100644 index 947f0e72d0..0000000000 --- a/crates/gem_ton/testdata/wallet_information.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "ok": true, - "result": { - "wallet": true, - "balance": "62709394797", - "account_state": "active", - "wallet_type": "wallet v4 r2", - "seqno": 140, - "last_transaction_id": { - "@type": "internal.transactionId", - "lt": "60233295000003", - "hash": "RrUB81kFK2ZtnBaoY+U8ZhLJ29rBtJsCgoVLfCPW+Iw=" - }, - "wallet_id": 698983191 - } - } \ No newline at end of file diff --git a/crates/settings_chain/src/chain_providers.rs b/crates/settings_chain/src/chain_providers.rs index 7789f7af97..4bcab480be 100644 --- a/crates/settings_chain/src/chain_providers.rs +++ b/crates/settings_chain/src/chain_providers.rs @@ -1,7 +1,7 @@ use std::error::Error; use chain_traits::{ChainTraits, TransactionsRequest}; -use primitives::{AddressStatus, Asset, AssetBalance, Chain, DelegationBase, PerpetualPositionsSummary, StakeValidator, Transaction}; +use primitives::{AddressStatus, Asset, AssetBalance, Chain, DelegationBase, PerpetualPositionsSummary, StakeValidator, Transaction, TransactionStateRequest, TransactionUpdate}; use settings::Settings; use crate::ProviderFactory; @@ -79,6 +79,10 @@ impl ChainProviders { self.get_provider(chain)?.get_transaction_by_hash(hash).await } + pub async fn get_transaction_status(&self, chain: Chain, hash: String) -> Result> { + self.get_provider(chain)?.get_transaction_status(TransactionStateRequest::new_id(hash)).await + } + pub async fn get_block_transactions(&self, chain: Chain, block_number: u64) -> Result, Box> { self.get_provider(chain)?.get_transactions_by_block(block_number).await } diff --git a/gemstone/src/transaction_state/status_provider.rs b/gemstone/src/transaction_state/status_provider.rs index a940817c59..bf52f0a3aa 100644 --- a/gemstone/src/transaction_state/status_provider.rs +++ b/gemstone/src/transaction_state/status_provider.rs @@ -21,8 +21,8 @@ impl StatusProvider { pub async fn get(&self, chain: Chain, request: GemTransactionStateRequest) -> Result { let created_at = request.created_at; let result = match request.swap_provider { - Some(provider) => self.get_swap_status(chain, provider, &request.id).await, - None => self.get_chain_status(chain, request).await, + Some(provider) if provider.is_cross_chain() => self.get_swap_status(chain, provider, &request.id).await, + _ => self.get_chain_status(chain, request).await, }; get_transaction_update(chain, created_at, result) }