diff --git a/crates/algokit_transact/src/lib.rs b/crates/algokit_transact/src/lib.rs index 3aa9b42f2..a44e378b3 100644 --- a/crates/algokit_transact/src/lib.rs +++ b/crates/algokit_transact/src/lib.rs @@ -16,11 +16,11 @@ pub use multisig::*; pub use traits::{AlgorandMsgpack, EstimateTransactionSize, TransactionId, Transactions, Validate}; pub use transactions::{ ApplicationCallTransactionBuilder, ApplicationCallTransactionFields, - AssetConfigTransactionBuilder, AssetConfigTransactionFields, AssetTransferTransactionBuilder, - AssetTransferTransactionFields, BoxReference, FeeParams, KeyRegistrationTransactionBuilder, - KeyRegistrationTransactionFields, OnApplicationComplete, PaymentTransactionBuilder, - PaymentTransactionFields, SignedTransaction, StateSchema, Transaction, TransactionHeader, - TransactionHeaderBuilder, + AssetConfigTransactionBuilder, AssetConfigTransactionFields, AssetFreezeTransactionBuilder, + AssetFreezeTransactionFields, AssetTransferTransactionBuilder, AssetTransferTransactionFields, + BoxReference, FeeParams, KeyRegistrationTransactionBuilder, KeyRegistrationTransactionFields, + OnApplicationComplete, PaymentTransactionBuilder, PaymentTransactionFields, SignedTransaction, + StateSchema, Transaction, TransactionHeader, TransactionHeaderBuilder, }; #[cfg(test)] diff --git a/crates/algokit_transact/src/test_utils/asset_freeze.rs b/crates/algokit_transact/src/test_utils/asset_freeze.rs new file mode 100644 index 000000000..fe07efefc --- /dev/null +++ b/crates/algokit_transact/src/test_utils/asset_freeze.rs @@ -0,0 +1,81 @@ +use crate::{Address, AssetFreezeTransactionBuilder, Byte32, TransactionHeaderBuilder}; +use base64::{prelude::BASE64_STANDARD, Engine}; + +pub struct AssetFreezeTransactionMother {} + +impl AssetFreezeTransactionMother { + pub fn asset_freeze() -> AssetFreezeTransactionBuilder { + // mainnet-2XFGVOHMFYLAWBHOSIOI67PBT5LDRHBTD3VLX5EYBDTFNVKMCJIA + let sender = "E4A6FVIHXSZ3F7QXRCOTYDDILVQYEBFH56HYDIIYX4SVXS2QX5GUTBVZHY" + .parse::
() + .unwrap(); + let freeze_address = "ZJU3X2B2QN3BUBIJ64JZ565V363ANGBUDOLXAJHDXGIIMYK6WV3NSNCBQQ" + .parse::
() + .unwrap(); + let genesis_hash: Byte32 = BASE64_STANDARD + .decode("wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=") + .unwrap() + .try_into() + .unwrap(); + let note = BASE64_STANDARD + .decode("TkZUIGZyZWV6ZWQgYnkgbG9mdHkuYWk=") + .unwrap(); + let group = BASE64_STANDARD + .decode("xERjxVTlNb8jeHa16qmpxDMh4+dcDCokO69QnNESbFk=") + .unwrap() + .try_into() + .unwrap(); + + AssetFreezeTransactionBuilder::default() + .header( + TransactionHeaderBuilder::default() + .sender(sender) + .fee(1000) + .first_valid(37463562) + .last_valid(37464562) + .genesis_hash(genesis_hash) + .genesis_id("mainnet-v1.0".to_string()) + .note(note) + .group(group) + .build() + .unwrap(), + ) + .asset_id(1707148495) + .freeze_target(freeze_address) + .frozen(true) + .to_owned() + } + + pub fn asset_unfreeze() -> AssetFreezeTransactionBuilder { + // testnet-LZ2ODDAT4ATAVJUEQW34DIKMPCMBXCCHOSIYKMWGBPEVNHLSEV2A + let sender = "WLH5LELVSEVQL45LBRQYCLJAX6KQPGWUY5WHJXVRV2NPYZUBQAFPH22Q7A" + .parse::
() + .unwrap(); + let freeze_address = "ZYQX7BZ6LGTD7UCS7J5RVEAKHUJPK3FNJFZV2GPUYS2TFIADVFHDBKTN7I" + .parse::
() + .unwrap(); + let genesis_hash: Byte32 = BASE64_STANDARD + .decode("SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=") + .unwrap() + .try_into() + .unwrap(); + let note = BASE64_STANDARD.decode("th4JDxFROQw=").unwrap(); + + AssetFreezeTransactionBuilder::default() + .header( + TransactionHeaderBuilder::default() + .sender(sender) + .fee(1000) + .first_valid(3277583) + .last_valid(3278583) + .genesis_hash(genesis_hash) + .note(note) + .build() + .unwrap(), + ) + .asset_id(185) + .freeze_target(freeze_address) + .frozen(false) + .to_owned() + } +} diff --git a/crates/algokit_transact/src/test_utils/mod.rs b/crates/algokit_transact/src/test_utils/mod.rs index 830fd1162..9a17d4657 100644 --- a/crates/algokit_transact/src/test_utils/mod.rs +++ b/crates/algokit_transact/src/test_utils/mod.rs @@ -1,5 +1,6 @@ mod application_call; mod asset_config; +mod asset_freeze; mod key_registration; use crate::{ @@ -18,6 +19,7 @@ use std::{fs::File, str::FromStr}; pub use application_call::ApplicationCallTransactionMother; pub use asset_config::AssetConfigTransactionMother; +pub use asset_freeze::AssetFreezeTransactionMother; pub use key_registration::KeyRegistrationTransactionMother; pub struct TransactionHeaderMother {} @@ -451,6 +453,28 @@ impl TestDataMother { TransactionTestData::new(transaction, SIGNING_PRIVATE_KEY) } + pub fn asset_freeze() -> TransactionTestData { + let signing_private_key: Byte32 = [ + 2, 205, 103, 33, 67, 14, 82, 196, 115, 196, 206, 254, 50, 110, 63, 182, 149, 229, 184, + 216, 93, 11, 13, 99, 69, 213, 218, 165, 134, 118, 47, 44, + ]; + let transaction = AssetFreezeTransactionMother::asset_freeze() + .build() + .unwrap(); + TransactionTestData::new(transaction, signing_private_key) + } + + pub fn asset_unfreeze() -> TransactionTestData { + let signing_private_key: Byte32 = [ + 2, 205, 103, 33, 67, 14, 82, 196, 115, 196, 206, 254, 50, 110, 63, 182, 149, 229, 184, + 216, 93, 11, 13, 99, 69, 213, 218, 165, 134, 118, 47, 44, + ]; + let transaction = AssetFreezeTransactionMother::asset_unfreeze() + .build() + .unwrap(); + TransactionTestData::new(transaction, signing_private_key) + } + pub fn export(path: &std::path::Path, transform: Option) where F: Fn(&TransactionTestData) -> T, @@ -473,6 +497,8 @@ impl TestDataMother { "online_key_registration": Self::online_key_registration().as_json(&transform), "offline_key_registration": Self::offline_key_registration().as_json(&transform), "non_participation_key_registration": Self::non_participation_key_registration().as_json(&transform), + "asset_freeze": Self::asset_freeze().as_json(&transform), + "asset_unfreeze": Self::asset_unfreeze().as_json(&transform), })); let file = File::create(path).expect("Failed to create export file"); @@ -658,4 +684,22 @@ mod tests { String::from("ACAP6ZGMGNTLUO3IQ26P22SRKYWTQQO3MF64GX7QO6NICDUFPM5A") ); } + + #[test] + fn test_asset_freeze_snapshot() { + let data = TestDataMother::asset_freeze(); + assert_eq!( + data.id, + String::from("2XFGVOHMFYLAWBHOSIOI67PBT5LDRHBTD3VLX5EYBDTFNVKMCJIA") + ); + } + + #[test] + fn test_asset_unfreeze_snapshot() { + let data = TestDataMother::asset_unfreeze(); + assert_eq!( + data.id, + String::from("LZ2ODDAT4ATAVJUEQW34DIKMPCMBXCCHOSIYKMWGBPEVNHLSEV2A") + ); + } } diff --git a/crates/algokit_transact/src/transactions/asset_freeze.rs b/crates/algokit_transact/src/transactions/asset_freeze.rs new file mode 100644 index 000000000..d07ae4802 --- /dev/null +++ b/crates/algokit_transact/src/transactions/asset_freeze.rs @@ -0,0 +1,58 @@ +//! Asset freeze transaction module for AlgoKit Core. +//! +//! This module provides functionality for creating and managing asset freeze transactions, +//! which are used to freeze or unfreeze asset holdings for specific accounts. + +use crate::address::Address; +use crate::transactions::common::TransactionHeader; +use crate::utils::{is_zero, is_zero_addr}; +use crate::Transaction; +use derive_builder::Builder; +use serde::{Deserialize, Serialize}; +use serde_with::{serde_as, skip_serializing_none}; + +/// Represents an asset freeze transaction that freezes or unfreezes asset holdings. +/// +/// Asset freeze transactions are used by the asset freeze account to control +/// whether a specific account can transfer a particular asset. +#[serde_as] +#[skip_serializing_none] +#[derive(Serialize, Deserialize, Debug, PartialEq, Clone, Builder)] +#[builder( + name = "AssetFreezeTransactionBuilder", + setter(strip_option), + build_fn(name = "build_fields") +)] +pub struct AssetFreezeTransactionFields { + /// Common transaction header fields. + #[serde(flatten)] + pub header: TransactionHeader, + + /// The ID of the asset being frozen/unfrozen. + #[serde(rename = "faid")] + #[serde(skip_serializing_if = "is_zero")] + #[serde(default)] + pub asset_id: u64, + + /// The target account whose asset holdings will be affected. + #[serde(rename = "fadd")] + #[serde(skip_serializing_if = "is_zero_addr")] + #[serde(default)] + pub freeze_target: Address, + + /// The new freeze status. + /// + /// `true` to freeze the asset holdings (prevent transfers), + /// `false` to unfreeze the asset holdings (allow transfers). + #[serde(rename = "afrz")] + #[serde(default)] + #[serde(skip_serializing_if = "std::ops::Not::not")] + #[builder(default)] + pub frozen: bool, +} + +impl AssetFreezeTransactionBuilder { + pub fn build(&self) -> Result { + self.build_fields().map(Transaction::AssetFreeze) + } +} diff --git a/crates/algokit_transact/src/transactions/mod.rs b/crates/algokit_transact/src/transactions/mod.rs index 9238ee407..f31a4b8e1 100644 --- a/crates/algokit_transact/src/transactions/mod.rs +++ b/crates/algokit_transact/src/transactions/mod.rs @@ -6,6 +6,7 @@ mod application_call; mod asset_config; +mod asset_freeze; mod asset_transfer; mod common; mod key_registration; @@ -20,6 +21,7 @@ pub use asset_config::{ asset_config_deserializer, asset_config_serializer, AssetConfigTransactionBuilder, AssetConfigTransactionFields, }; +pub use asset_freeze::{AssetFreezeTransactionBuilder, AssetFreezeTransactionFields}; pub use asset_transfer::{AssetTransferTransactionBuilder, AssetTransferTransactionFields}; pub use common::{TransactionHeader, TransactionHeaderBuilder}; pub use key_registration::{KeyRegistrationTransactionBuilder, KeyRegistrationTransactionFields}; @@ -57,6 +59,9 @@ pub enum Transaction { #[serde(rename = "appl")] ApplicationCall(ApplicationCallTransactionFields), + #[serde(rename = "afrz")] + AssetFreeze(AssetFreezeTransactionFields), + #[serde(rename = "keyreg")] KeyRegistration(KeyRegistrationTransactionFields), } @@ -76,6 +81,7 @@ impl Transaction { Transaction::AssetConfig(a) => &a.header, Transaction::ApplicationCall(a) => &a.header, Transaction::KeyRegistration(k) => &k.header, + Transaction::AssetFreeze(f) => &f.header, } } @@ -86,6 +92,7 @@ impl Transaction { Transaction::AssetConfig(a) => &mut a.header, Transaction::ApplicationCall(a) => &mut a.header, Transaction::KeyRegistration(k) => &mut k.header, + Transaction::AssetFreeze(f) => &mut f.header, } } diff --git a/crates/algokit_transact_ffi/src/lib.rs b/crates/algokit_transact_ffi/src/lib.rs index b5478e13e..841a5680d 100644 --- a/crates/algokit_transact_ffi/src/lib.rs +++ b/crates/algokit_transact_ffi/src/lib.rs @@ -10,6 +10,7 @@ use serde_bytes::ByteBuf; pub use transactions::ApplicationCallTransactionFields; pub use transactions::AssetConfigTransactionFields; +pub use transactions::AssetFreezeTransactionFields; pub use transactions::KeyRegistrationTransactionFields; // thiserror is used to easily create errors than can be propagated to the language bindings @@ -302,6 +303,8 @@ pub struct Transaction { application_call: Option, key_registration: Option, + + asset_freeze: Option, } impl TryFrom for algokit_transact::Transaction { @@ -315,6 +318,7 @@ impl TryFrom for algokit_transact::Transaction { tx.asset_config.is_some(), tx.key_registration.is_some(), tx.application_call.is_some(), + tx.asset_freeze.is_some(), ] .into_iter() .filter(|&x| x) @@ -334,15 +338,17 @@ impl TryFrom for algokit_transact::Transaction { TransactionType::KeyRegistration => Ok(algokit_transact::Transaction::KeyRegistration( tx.try_into()?, )), + TransactionType::AssetConfig => { Ok(algokit_transact::Transaction::AssetConfig(tx.try_into()?)) } + TransactionType::ApplicationCall => Ok(algokit_transact::Transaction::ApplicationCall( tx.try_into()?, )), - _ => Err(Self::Error::DecodingError( - "Transaction type is not implemented".to_string(), - )), + TransactionType::AssetFreeze => { + Ok(algokit_transact::Transaction::AssetFreeze(tx.try_into()?)) + } } } } @@ -464,6 +470,7 @@ impl TryFrom for Transaction { None, None, None, + None, ) } algokit_transact::Transaction::AssetTransfer(asset_transfer) => { @@ -476,6 +483,7 @@ impl TryFrom for Transaction { None, None, None, + None, ) } algokit_transact::Transaction::AssetConfig(asset_config) => { @@ -488,6 +496,7 @@ impl TryFrom for Transaction { Some(asset_config_fields), None, None, + None, ) } algokit_transact::Transaction::ApplicationCall(application_call) => { @@ -500,6 +509,7 @@ impl TryFrom for Transaction { None, Some(application_call_fields), None, + None, ) } algokit_transact::Transaction::KeyRegistration(key_registration) => { @@ -512,6 +522,20 @@ impl TryFrom for Transaction { None, None, Some(key_registration_fields), + None, + ) + } + algokit_transact::Transaction::AssetFreeze(asset_freeze) => { + let asset_freeze_fields = asset_freeze.clone().into(); + build_transaction( + asset_freeze.header, + TransactionType::AssetFreeze, + None, + None, + None, + None, + None, + Some(asset_freeze_fields), ) } } @@ -588,6 +612,7 @@ fn byte32_to_bytebuf(b32: Byte32) -> ByteBuf { ByteBuf::from(b32.to_vec()) } +#[allow(clippy::too_many_arguments)] fn build_transaction( header: algokit_transact::TransactionHeader, transaction_type: TransactionType, @@ -596,6 +621,7 @@ fn build_transaction( asset_config: Option, application_call: Option, key_registration: Option, + asset_freeze: Option, ) -> Result { Ok(Transaction { transaction_type, @@ -614,6 +640,7 @@ fn build_transaction( asset_config, application_call, key_registration, + asset_freeze, }) } @@ -632,6 +659,7 @@ pub fn get_encoded_transaction_type(bytes: &[u8]) -> Result Ok(TransactionType::AssetConfig), algokit_transact::Transaction::ApplicationCall(_) => Ok(TransactionType::ApplicationCall), algokit_transact::Transaction::KeyRegistration(_) => Ok(TransactionType::KeyRegistration), + algokit_transact::Transaction::AssetFreeze(_) => Ok(TransactionType::AssetFreeze), } } diff --git a/crates/algokit_transact_ffi/src/transactions/asset_freeze.rs b/crates/algokit_transact_ffi/src/transactions/asset_freeze.rs new file mode 100644 index 000000000..03da3a083 --- /dev/null +++ b/crates/algokit_transact_ffi/src/transactions/asset_freeze.rs @@ -0,0 +1,52 @@ +use crate::*; + +/// Represents an asset freeze transaction that freezes or unfreezes asset holdings. +/// +/// Asset freeze transactions are used by the asset freeze account to control +/// whether a specific account can transfer a particular asset. +#[ffi_record] +pub struct AssetFreezeTransactionFields { + /// The ID of the asset being frozen/unfrozen. + asset_id: u64, + + /// The target account whose asset holdings will be affected. + freeze_target: Account, + + /// The new freeze status. + /// + /// `true` to freeze the asset holdings (prevent transfers), + /// `false` to unfreeze the asset holdings (allow transfers). + frozen: bool, +} + +impl From for AssetFreezeTransactionFields { + fn from(tx: algokit_transact::AssetFreezeTransactionFields) -> Self { + Self { + asset_id: tx.asset_id, + freeze_target: tx.freeze_target.into(), + frozen: tx.frozen, + } + } +} + +impl TryFrom for algokit_transact::AssetFreezeTransactionFields { + type Error = AlgoKitTransactError; + + fn try_from(tx: Transaction) -> Result { + if tx.transaction_type != TransactionType::AssetFreeze || tx.asset_freeze.is_none() { + return Err(Self::Error::DecodingError( + "Asset Freeze data missing".to_string(), + )); + } + + let data = tx.clone().asset_freeze.unwrap(); + let header: algokit_transact::TransactionHeader = tx.try_into()?; + + Ok(Self { + header, + asset_id: data.asset_id, + freeze_target: data.freeze_target.try_into()?, + frozen: data.frozen, + }) + } +} diff --git a/crates/algokit_transact_ffi/src/transactions/mod.rs b/crates/algokit_transact_ffi/src/transactions/mod.rs index ba9d980e6..cec3122cf 100644 --- a/crates/algokit_transact_ffi/src/transactions/mod.rs +++ b/crates/algokit_transact_ffi/src/transactions/mod.rs @@ -1,8 +1,10 @@ mod application_call; pub mod asset_config; +pub mod asset_freeze; pub use application_call::ApplicationCallTransactionFields; pub use asset_config::AssetConfigTransactionFields; pub mod keyreg; +pub use asset_freeze::AssetFreezeTransactionFields; pub use keyreg::KeyRegistrationTransactionFields; diff --git a/crates/algokit_transact_ffi/test_data.json b/crates/algokit_transact_ffi/test_data.json index 416a39434..543e4fd1a 100644 --- a/crates/algokit_transact_ffi/test_data.json +++ b/crates/algokit_transact_ffi/test_data.json @@ -51074,41 +51074,41 @@ 103 ] }, - "assetReconfigure": { - "id": "GAMRAG3KCG23U2HOELJF32OQAWAISLIFBB5RLDDDYHUSOZNYN7MQ", + "assetFreeze": { + "id": "2XFGVOHMFYLAWBHOSIOI67PBT5LDRHBTD3VLX5EYBDTFNVKMCJIA", "idRaw": [ - 48, - 25, - 16, - 27, + 213, + 202, 106, - 17, - 181, - 186, - 104, + 184, + 236, + 46, + 22, + 11, + 4, 238, - 34, - 210, - 93, - 233, - 208, - 5, - 128, - 137, - 45, - 5, + 146, + 28, + 143, + 125, + 225, + 159, + 86, + 56, + 156, + 51, + 30, + 234, + 187, + 244, + 152, 8, - 123, - 21, - 140, - 99, - 193, - 233, - 39, - 101, - 184, - 111, - 217 + 230, + 86, + 213, + 76, + 18, + 80 ], "multisigAddresses": [ "424ZV7KBBUJ52DUKP2KLQ6I5GBOHKBXOW7Q7UQIOOYNDWYRM4EKOSMVVRI", @@ -51172,70 +51172,70 @@ 115, 196, 64, - 167, - 7, - 238, - 77, - 120, - 250, - 191, + 186, + 172, + 16, + 41, + 122, + 236, + 112, + 9, + 71, + 227, + 42, + 80, + 110, + 63, + 129, + 246, + 181, + 134, + 30, + 201, 255, - 140, - 25, - 61, - 141, - 221, - 193, - 224, - 237, - 34, - 228, - 24, - 179, - 197, - 169, - 100, - 32, - 214, - 238, - 195, - 117, - 135, - 89, - 23, + 233, + 161, + 56, 160, 176, - 164, - 186, - 146, - 89, + 171, + 222, + 102, + 145, + 36, + 16, + 16, + 8, + 136, + 76, + 37, + 61, + 75, + 133, + 176, + 95, + 245, + 132, + 31, + 244, + 74, + 160, + 106, + 229, + 22, + 165, + 209, + 32, + 8, + 248, 49, - 97, - 109, - 157, - 193, - 253, - 112, - 143, + 79, + 175, 104, - 41, - 188, - 214, - 196, - 94, - 14, - 93, - 30, - 238, - 12, - 142, - 121, - 240, - 60, - 69, - 135, - 146, - 5, + 206, + 8, + 40, + 10, 130, 162, 112, @@ -51278,72 +51278,72 @@ 115, 196, 64, - 167, - 7, - 238, - 77, - 120, - 250, - 191, - 255, - 140, - 25, - 61, - 141, - 221, - 193, - 224, - 237, - 34, - 228, - 24, - 179, - 197, - 169, - 100, - 32, - 214, - 238, - 195, - 117, - 135, - 89, - 23, - 160, - 176, - 164, 186, - 146, - 89, - 49, - 97, - 109, - 157, - 193, - 253, - 112, - 143, - 104, + 172, + 16, 41, - 188, - 214, - 196, - 94, - 14, - 93, + 122, + 236, + 112, + 9, + 71, + 227, + 42, + 80, + 110, + 63, + 129, + 246, + 181, + 134, 30, - 238, - 12, - 142, - 121, - 240, - 60, - 69, - 135, - 146, - 5, - 163, - 116, + 201, + 255, + 233, + 161, + 56, + 160, + 176, + 171, + 222, + 102, + 145, + 36, + 16, + 16, + 8, + 136, + 76, + 37, + 61, + 75, + 133, + 176, + 95, + 245, + 132, + 31, + 244, + 74, + 160, + 106, + 229, + 22, + 165, + 209, + 32, + 8, + 248, + 49, + 79, + 175, + 104, + 206, + 8, + 40, + 10, + 163, + 116, 104, 114, 2, @@ -51354,95 +51354,62 @@ 116, 120, 110, - 138, + 140, 164, 97, - 112, - 97, - 114, - 130, - 161, - 109, - 196, - 32, - 33, - 241, - 1, - 96, - 244, - 23, - 132, - 139, - 101, - 97, - 191, 102, - 57, - 174, - 169, - 228, - 165, - 82, - 114, - 49, - 155, - 20, - 81, - 136, - 220, - 207, - 33, - 248, - 74, - 26, - 189, - 145, - 161, 114, + 122, + 195, + 164, + 102, + 97, + 100, + 100, 196, 32, - 123, - 153, - 141, - 254, - 48, - 235, - 240, - 109, - 52, - 234, - 33, - 106, + 202, + 105, + 187, + 232, 58, - 141, - 70, - 182, - 87, + 131, + 118, + 26, + 5, + 9, + 247, + 19, 158, - 52, - 244, + 251, 181, - 45, 223, - 138, - 166, - 205, - 80, - 252, - 138, - 109, - 1, - 73, + 182, + 6, + 152, + 52, + 27, + 151, + 112, + 36, + 227, + 185, + 144, + 134, + 97, + 94, + 181, + 118, 164, - 99, + 102, 97, 105, 100, 206, - 102, - 63, - 208, - 248, + 101, + 193, + 4, + 207, 163, 102, 101, @@ -51455,9 +51422,9 @@ 118, 206, 2, - 60, - 227, - 138, + 59, + 166, + 10, 163, 103, 101, @@ -51512,992 +51479,1455 @@ 36, 138, 223, + 163, + 103, + 114, + 112, + 196, + 32, + 196, + 68, + 99, + 197, + 84, + 229, + 53, + 191, + 35, + 120, + 118, + 181, + 234, + 169, + 169, + 196, + 51, + 33, + 227, + 231, + 92, + 12, + 42, + 36, + 59, + 175, + 80, + 156, + 209, + 18, + 108, + 89, 162, 108, 118, 206, 2, - 60, - 231, - 114, + 59, + 169, + 242, 164, 110, 111, 116, 101, - 197, - 3, - 107, - 123, - 34, - 115, + 196, + 23, + 78, + 70, + 84, + 32, + 102, + 114, + 101, + 101, + 122, + 101, + 100, + 32, + 98, + 121, + 32, + 108, + 111, + 102, 116, + 121, + 46, 97, + 105, + 163, + 115, 110, 100, - 97, - 114, - 100, - 34, - 58, - 34, - 97, - 114, - 99, - 54, - 57, - 34, - 44, - 34, - 100, - 101, - 115, - 99, - 114, - 105, - 112, - 116, - 105, - 111, - 110, - 34, - 58, - 34, - 84, - 104, - 105, - 115, - 32, - 105, - 115, - 32, - 97, - 32, - 118, - 101, - 114, - 105, - 102, - 105, - 97, - 98, - 108, - 121, + 196, 32, + 39, + 1, + 226, + 213, + 7, + 188, + 179, + 178, + 254, + 23, + 136, + 157, + 60, + 12, + 104, + 93, 97, - 117, + 130, + 4, + 167, + 239, + 143, + 129, + 161, + 24, + 191, + 37, + 91, + 203, + 80, + 191, + 77, + 164, 116, - 104, + 121, + 112, 101, + 164, + 97, + 102, + 114, + 122 + ], + "rekeyedSenderAuthAddress": "BKDYDIDVSZCP75JVCB76P3WBJRY6HWAIFDSEOKYHJY5WMNJ2UWJ65MYETU", + "rekeyedSenderSignedBytes": [ + 131, + 164, + 115, + 103, 110, - 116, - 105, - 99, + 114, + 196, 32, - 100, + 10, + 135, + 129, + 160, + 117, + 150, + 68, + 255, + 245, + 53, + 16, + 127, + 231, + 238, + 193, + 76, + 113, + 227, + 216, + 8, + 40, + 228, + 71, + 43, + 7, + 78, + 59, + 102, + 53, + 58, + 165, + 147, + 163, + 115, 105, 103, - 105, - 116, - 97, - 108, + 196, + 64, + 186, + 172, + 16, + 41, + 122, + 236, + 112, + 9, + 71, + 227, + 42, + 80, + 110, + 63, + 129, + 246, + 181, + 134, + 30, + 201, + 255, + 233, + 161, + 56, + 160, + 176, + 171, + 222, + 102, + 145, + 36, + 16, + 16, + 8, + 136, + 76, + 37, + 61, + 75, + 133, + 176, + 95, + 245, + 132, + 31, + 244, + 74, + 160, + 106, + 229, + 22, + 165, + 209, 32, + 8, + 248, + 49, + 79, + 175, 104, - 105, - 115, + 206, + 8, + 40, + 10, + 163, 116, - 111, + 120, + 110, + 140, + 164, + 97, + 102, 114, - 105, - 99, + 122, + 195, + 164, + 102, 97, - 108, + 100, + 100, + 196, 32, - 97, - 114, - 116, + 202, 105, + 187, + 232, + 58, + 131, + 118, + 26, + 5, + 9, + 247, + 19, + 158, + 251, + 181, + 223, + 182, + 6, + 152, + 52, + 27, + 151, + 112, + 36, + 227, + 185, + 144, + 134, + 97, + 94, + 181, + 118, + 164, 102, 97, - 99, - 116, - 32, - 109, 105, - 110, - 116, - 101, 100, - 32, - 98, - 121, - 32, - 84, - 104, - 101, - 32, - 68, - 97, - 116, - 97, - 32, - 72, - 105, - 115, - 116, - 111, - 114, - 121, - 32, - 77, - 117, - 115, + 206, 101, - 117, - 109, - 46, - 32, - 73, - 116, - 32, - 114, + 193, + 4, + 207, + 163, + 102, 101, - 112, - 114, 101, - 115, + 205, + 3, + 232, + 162, + 102, + 118, + 206, + 2, + 59, + 166, + 10, + 163, + 103, 101, 110, - 116, - 115, - 32, - 97, - 32, - 77, + 172, + 109, 97, - 103, - 110, 105, - 116, - 117, - 100, - 101, - 32, - 53, - 46, - 51, - 32, - 101, - 97, - 114, - 116, - 104, - 113, - 117, - 97, - 107, + 110, + 110, 101, - 32, - 119, - 105, 116, - 104, - 32, - 73, - 68, - 32, - 117, - 115, - 55, - 48, - 48, + 45, + 118, + 49, + 46, 48, - 109, - 57, - 55, - 54, - 32, - 119, - 104, - 105, - 99, - 104, - 32, + 162, + 103, 104, - 97, - 115, + 196, 32, + 192, 97, - 110, + 196, + 216, + 252, + 29, + 189, + 222, + 210, + 215, + 96, + 75, + 228, + 86, + 142, + 63, + 109, + 4, + 25, + 135, + 172, + 55, + 189, + 228, + 182, 32, - 101, - 112, - 105, - 99, - 101, - 110, - 116, + 181, + 171, + 57, + 36, + 138, + 223, + 163, + 103, 114, - 101, + 112, + 196, 32, + 196, + 68, + 99, + 197, + 84, + 229, + 53, + 191, + 35, + 120, + 118, + 181, + 234, + 169, + 169, + 196, + 51, + 33, + 227, + 231, + 92, + 12, + 42, + 36, + 59, + 175, + 80, + 156, + 209, + 18, + 108, + 89, + 162, + 108, + 118, + 206, + 2, + 59, + 169, + 242, + 164, 110, 111, - 114, 116, - 104, 101, - 114, - 110, - 32, - 69, - 97, - 115, - 116, + 196, + 23, + 78, + 70, + 84, 32, - 80, - 97, - 99, - 105, 102, - 105, - 99, - 32, - 82, - 105, - 115, - 101, - 32, - 97, - 110, - 100, - 32, - 111, - 99, - 99, - 117, - 114, 114, 101, + 101, + 122, + 101, 100, 32, - 97, - 116, + 98, + 121, 32, - 77, + 108, 111, + 102, + 116, + 121, + 46, + 97, + 105, + 163, + 115, 110, - 44, - 32, - 48, - 49, + 100, + 196, 32, - 65, - 112, - 114, - 32, - 50, - 48, - 50, - 52, - 32, - 49, - 52, - 58, - 52, - 53, - 58, - 49, - 54, - 32, - 71, - 77, - 84, - 46, - 32, - 84, + 39, + 1, + 226, + 213, + 7, + 188, + 179, + 178, + 254, + 23, + 136, + 157, + 60, + 12, 104, + 93, + 97, + 130, + 4, + 167, + 239, + 143, + 129, + 161, + 24, + 191, + 37, + 91, + 203, + 80, + 191, + 77, + 164, + 116, + 121, + 112, 101, - 32, - 118, - 101, - 114, - 105, + 164, + 97, 102, - 105, - 101, - 100, - 32, - 115, - 111, - 117, 114, - 99, - 101, - 32, - 111, + 122 + ], + "signedBytes": [ + 130, + 163, + 115, + 105, + 103, + 196, + 64, + 186, + 172, + 16, + 41, + 122, + 236, + 112, + 9, + 71, + 227, + 42, + 80, + 110, + 63, + 129, + 246, + 181, + 134, + 30, + 201, + 255, + 233, + 161, + 56, + 160, + 176, + 171, + 222, 102, + 145, + 36, + 16, + 16, + 8, + 136, + 76, + 37, + 61, + 75, + 133, + 176, + 95, + 245, + 132, + 31, + 244, + 74, + 160, + 106, + 229, + 22, + 165, + 209, 32, - 116, + 8, + 248, + 49, + 79, + 175, 104, - 105, - 115, - 32, - 100, - 97, + 206, + 8, + 40, + 10, + 163, 116, + 120, + 110, + 140, + 164, 97, - 32, - 97, + 102, 114, - 116, - 105, + 122, + 195, + 164, 102, 97, - 99, - 116, + 100, + 100, + 196, 32, - 119, + 202, + 105, + 187, + 232, + 58, + 131, + 118, + 26, + 5, + 9, + 247, + 19, + 158, + 251, + 181, + 223, + 182, + 6, + 152, + 52, + 27, + 151, + 112, + 36, + 227, + 185, + 144, + 134, + 97, + 94, + 181, + 118, + 164, + 102, 97, - 115, - 32, - 116, - 104, - 101, - 32, - 85, - 110, 105, - 116, - 101, 100, - 32, - 83, - 116, - 97, - 116, + 206, 101, - 115, - 32, - 71, + 193, + 4, + 207, + 163, + 102, 101, - 111, - 108, - 111, - 103, - 105, - 99, - 97, - 108, - 32, - 83, - 117, - 114, + 101, + 205, + 3, + 232, + 162, + 102, 118, + 206, + 2, + 59, + 166, + 10, + 163, + 103, 101, - 121, - 32, - 40, - 85, - 83, - 71, - 83, - 41, - 46, - 32, - 70, - 111, - 114, - 32, - 109, - 111, - 114, - 101, - 32, - 105, 110, - 102, - 111, - 114, + 172, 109, 97, - 116, 105, - 111, 110, - 32, - 118, - 105, - 115, - 105, + 110, + 101, 116, - 32, + 45, + 118, + 49, + 46, + 48, + 162, + 103, 104, - 116, - 116, - 112, - 115, - 58, - 47, - 47, - 100, - 97, - 116, + 196, + 32, + 192, 97, - 104, - 105, - 115, - 116, - 111, - 114, - 121, - 46, - 111, - 114, + 196, + 216, + 252, + 29, + 189, + 222, + 210, + 215, + 96, + 75, + 228, + 86, + 142, + 63, + 109, + 4, + 25, + 135, + 172, + 55, + 189, + 228, + 182, + 32, + 181, + 171, + 57, + 36, + 138, + 223, + 163, 103, - 47, - 46, - 34, - 44, - 34, - 101, - 120, - 116, - 101, 114, - 110, - 97, + 112, + 196, + 32, + 196, + 68, + 99, + 197, + 84, + 229, + 53, + 191, + 35, + 120, + 118, + 181, + 234, + 169, + 169, + 196, + 51, + 33, + 227, + 231, + 92, + 12, + 42, + 36, + 59, + 175, + 80, + 156, + 209, + 18, 108, - 95, - 117, - 114, + 89, + 162, 108, - 34, - 58, - 34, - 104, - 116, + 118, + 206, + 2, + 59, + 169, + 242, + 164, + 110, + 111, 116, - 112, - 115, - 58, - 47, - 47, - 109, - 117, - 115, 101, - 117, - 109, - 46, + 196, + 23, + 78, + 70, + 84, + 32, + 102, + 114, + 101, + 101, + 122, + 101, 100, - 97, + 32, + 98, + 121, + 32, + 108, + 111, + 102, 116, + 121, + 46, 97, - 104, 105, + 163, 115, + 110, + 100, + 196, + 32, + 39, + 1, + 226, + 213, + 7, + 188, + 179, + 178, + 254, + 23, + 136, + 157, + 60, + 12, + 104, + 93, + 97, + 130, + 4, + 167, + 239, + 143, + 129, + 161, + 24, + 191, + 37, + 91, + 203, + 80, + 191, + 77, + 164, 116, - 111, - 114, 121, - 46, - 111, + 112, + 101, + 164, + 97, + 102, 114, + 122 + ], + "signingPrivateKey": [ + 2, + 205, 103, - 47, - 101, - 118, - 101, + 33, + 67, + 14, + 82, + 196, + 115, + 196, + 206, + 254, + 50, 110, - 116, - 47, - 81, - 85, - 65, - 75, + 63, + 182, + 149, + 229, + 184, + 216, + 93, + 11, + 13, + 99, 69, + 213, + 218, + 165, + 134, + 118, 47, - 117, - 115, - 55, - 48, - 48, - 48, - 109, - 57, - 55, - 54, - 34, - 44, - 34, - 112, - 114, - 111, - 112, - 101, + 44 + ], + "transaction": { + "assetFreeze": { + "assetId": 1707148495, + "freezeTarget": { + "address": "ZJU3X2B2QN3BUBIJ64JZ565V363ANGBUDOLXAJHDXGIIMYK6WV3NSNCBQQ", + "pubKey": [ + 202, + 105, + 187, + 232, + 58, + 131, + 118, + 26, + 5, + 9, + 247, + 19, + 158, + 251, + 181, + 223, + 182, + 6, + 152, + 52, + 27, + 151, + 112, + 36, + 227, + 185, + 144, + 134, + 97, + 94, + 181, + 118 + ] + }, + "frozen": true + }, + "fee": 1000, + "firstValid": 37463562, + "genesisHash": [ + 192, + 97, + 196, + 216, + 252, + 29, + 189, + 222, + 210, + 215, + 96, + 75, + 228, + 86, + 142, + 63, + 109, + 4, + 25, + 135, + 172, + 55, + 189, + 228, + 182, + 32, + 181, + 171, + 57, + 36, + 138, + 223 + ], + "genesisId": "mainnet-v1.0", + "group": [ + 196, + 68, + 99, + 197, + 84, + 229, + 53, + 191, + 35, + 120, + 118, + 181, + 234, + 169, + 169, + 196, + 51, + 33, + 227, + 231, + 92, + 12, + 42, + 36, + 59, + 175, + 80, + 156, + 209, + 18, + 108, + 89 + ], + "lastValid": 37464562, + "note": [ + 78, + 70, + 84, + 32, + 102, + 114, + 101, + 101, + 122, + 101, + 100, + 32, + 98, + 121, + 32, + 108, + 111, + 102, + 116, + 121, + 46, + 97, + 105 + ], + "sender": "E4A6FVIHXSZ3F7QXRCOTYDDILVQYEBFH56HYDIIYX4SVXS2QX5GUTBVZHY", + "transactionType": "AssetFreeze" + }, + "unsignedBytes": [ + 84, + 88, + 140, + 164, + 97, + 102, 114, - 116, + 122, + 195, + 164, + 102, + 97, + 100, + 100, + 196, + 32, + 202, 105, - 101, - 115, - 34, + 187, + 232, 58, - 123, - 34, - 109, + 131, + 118, + 26, + 5, + 9, + 247, + 19, + 158, + 251, + 181, + 223, + 182, + 6, + 152, + 52, + 27, + 151, + 112, + 36, + 227, + 185, + 144, + 134, + 97, + 94, + 181, + 118, + 164, + 102, 97, - 103, - 110, 105, - 116, - 117, 100, + 206, 101, - 34, - 58, - 53, - 46, - 51, - 44, - 34, - 99, - 108, + 193, + 4, + 207, + 163, + 102, + 101, + 101, + 205, + 3, + 232, + 162, + 102, + 118, + 206, + 2, + 59, + 166, + 10, + 163, + 103, + 101, + 110, + 172, + 109, 97, - 115, - 115, - 34, - 58, - 34, - 77, - 53, - 34, - 44, - 34, - 100, + 105, + 110, + 110, 101, - 112, 116, - 104, - 34, - 58, + 45, + 118, 49, + 46, 48, - 44, - 34, - 108, + 162, + 103, + 104, + 196, + 32, + 192, 97, - 116, - 105, - 116, - 117, - 100, - 101, - 34, - 58, - 56, - 46, - 50, - 53, - 49, - 44, - 34, - 108, - 111, - 110, + 196, + 216, + 252, + 29, + 189, + 222, + 210, + 215, + 96, + 75, + 228, + 86, + 142, + 63, + 109, + 4, + 25, + 135, + 172, + 55, + 189, + 228, + 182, + 32, + 181, + 171, + 57, + 36, + 138, + 223, + 163, 103, - 105, - 116, - 117, - 100, - 101, - 34, - 58, - 45, - 49, - 48, - 51, - 46, - 50, - 50, - 54, - 44, - 34, + 114, 112, - 108, - 97, + 196, + 32, + 196, + 68, 99, - 101, - 34, - 58, - 34, + 197, + 84, + 229, + 53, + 191, + 35, + 120, + 118, + 181, + 234, + 169, + 169, + 196, + 51, + 33, + 227, + 231, + 92, + 12, + 42, + 36, + 59, + 175, + 80, + 156, + 209, + 18, + 108, + 89, + 162, + 108, + 118, + 206, + 2, + 59, + 169, + 242, + 164, 110, 111, - 114, 116, - 104, 101, + 196, + 23, + 78, + 70, + 84, + 32, + 102, 114, - 110, + 101, + 101, + 122, + 101, + 100, 32, - 69, - 97, - 115, - 116, + 98, + 121, 32, - 80, - 97, - 99, - 105, + 108, + 111, 102, + 116, + 121, + 46, + 97, 105, - 99, - 32, - 82, - 105, - 115, - 101, - 34, - 44, - 34, - 115, - 111, - 117, - 114, - 99, - 101, - 34, - 58, - 34, - 85, - 83, - 71, - 83, - 34, - 44, - 34, + 163, 115, - 117, - 98, - 84, + 110, + 100, + 196, + 32, + 39, + 1, + 226, + 213, + 7, + 188, + 179, + 178, + 254, + 23, + 136, + 157, + 60, + 12, + 104, + 93, + 97, + 130, + 4, + 167, + 239, + 143, + 129, + 161, + 24, + 191, + 37, + 91, + 203, + 80, + 191, + 77, + 164, + 116, 121, 112, 101, - 34, - 58, - 34, - 101, + 164, 97, + 102, 114, - 116, + 122 + ] + }, + "assetReconfigure": { + "id": "GAMRAG3KCG23U2HOELJF32OQAWAISLIFBB5RLDDDYHUSOZNYN7MQ", + "idRaw": [ + 48, + 25, + 16, + 27, + 106, + 17, + 181, + 186, 104, - 113, - 117, - 97, - 107, - 101, - 34, - 44, - 34, - 116, - 105, - 109, - 101, - 34, - 58, + 238, 34, - 50, - 48, - 50, - 52, + 210, + 93, + 233, + 208, + 5, + 128, + 137, 45, - 48, - 52, - 45, - 48, - 49, - 84, - 49, - 52, - 58, - 52, - 53, - 58, - 49, - 54, - 46, - 49, - 48, - 57, - 90, - 34, - 44, - 34, - 116, - 121, - 112, - 101, - 34, - 58, - 34, - 113, - 117, - 97, - 107, - 101, - 34, - 44, - 34, - 117, - 114, - 108, - 34, - 58, - 34, - 104, - 116, - 116, - 112, - 115, - 58, - 47, - 47, - 101, - 97, - 114, - 116, - 104, - 113, - 117, - 97, - 107, + 5, + 8, + 123, + 21, + 140, + 99, + 193, + 233, + 39, 101, - 46, - 117, - 115, - 103, - 115, - 46, - 103, + 184, 111, - 118, - 47, - 101, - 97, - 114, - 116, - 104, - 113, - 117, - 97, - 107, - 101, + 217 + ], + "multisigAddresses": [ + "424ZV7KBBUJ52DUKP2KLQ6I5GBOHKBXOW7Q7UQIOOYNDWYRM4EKOSMVVRI", + "NY6DHEEFW73R2NUWY562U2NNKSKBKVYY5OOQFLD3M2II5RUNKRZDEGUGEA" + ], + "multisigSignedBytes": [ + 130, + 164, + 109, 115, - 47, - 101, - 118, - 101, - 110, - 116, - 112, - 97, + 105, 103, - 101, - 47, + 131, + 166, + 115, 117, + 98, 115, - 55, - 48, - 48, - 48, - 109, - 57, - 55, - 54, - 34, - 125, - 44, - 34, - 109, - 105, - 109, - 101, - 95, - 116, - 121, - 112, - 101, - 34, - 58, - 34, 105, - 109, - 97, 103, - 101, - 47, + 146, + 130, + 162, 112, - 110, - 103, - 34, + 107, + 196, + 32, + 230, + 185, + 154, + 253, + 65, + 13, + 19, + 221, + 14, + 138, + 126, + 148, + 184, + 121, + 29, + 48, + 92, + 117, + 6, + 238, + 183, + 225, + 250, + 65, + 14, + 118, + 26, + 59, + 98, 44, + 225, + 20, + 161, + 115, + 196, + 64, + 167, + 7, + 238, + 77, + 120, + 250, + 191, + 255, + 140, + 25, + 61, + 141, + 221, + 193, + 224, + 237, 34, - 105, + 228, + 24, + 179, + 197, + 169, 100, - 34, - 58, - 34, + 32, + 214, + 238, + 195, 117, - 115, - 55, - 48, - 48, - 48, + 135, + 89, + 23, + 160, + 176, + 164, + 186, + 146, + 89, + 49, + 97, 109, - 57, - 55, - 54, - 34, - 44, - 34, - 116, - 105, - 116, - 108, - 101, - 34, - 58, - 34, - 77, - 32, - 53, - 46, - 51, - 32, - 45, - 32, - 110, - 111, - 114, - 116, - 104, - 101, - 114, - 110, - 32, - 69, - 97, - 115, - 116, - 32, - 80, - 97, - 99, - 105, - 102, - 105, - 99, - 32, - 82, - 105, - 115, - 101, - 34, - 125, - 163, - 115, - 110, - 100, + 157, + 193, + 253, + 112, + 143, + 104, + 41, + 188, + 214, 196, - 32, - 33, - 241, - 1, - 96, - 244, - 23, - 132, - 139, - 101, - 97, - 191, - 102, - 57, - 174, - 169, - 228, - 165, - 82, - 114, - 49, - 155, - 20, - 81, - 136, - 220, - 207, - 33, - 248, - 74, - 26, - 189, - 145, - 164, - 116, + 94, + 14, + 93, + 30, + 238, + 12, + 142, 121, + 240, + 60, + 69, + 135, + 146, + 5, + 130, + 162, 112, - 101, - 164, - 97, - 99, - 102, - 103 - ], - "rekeyedSenderAuthAddress": "BKDYDIDVSZCP75JVCB76P3WBJRY6HWAIFDSEOKYHJY5WMNJ2UWJ65MYETU", - "rekeyedSenderSignedBytes": [ - 131, - 164, - 115, - 103, - 110, - 114, + 107, 196, 32, - 10, - 135, - 129, - 160, - 117, + 110, + 60, + 51, + 144, + 133, + 183, + 247, + 29, + 54, 150, - 68, - 255, - 245, - 53, - 16, - 127, - 231, - 238, - 193, - 76, - 113, - 227, - 216, - 8, - 40, - 228, - 71, - 43, - 7, - 78, - 59, + 199, + 125, + 170, + 105, + 173, + 84, + 148, + 21, + 87, + 24, + 235, + 157, + 2, + 172, + 123, 102, - 53, - 58, - 165, - 147, - 163, + 144, + 142, + 198, + 141, + 84, + 114, + 161, 115, - 105, - 103, 196, 64, 167, @@ -52566,6 +52996,14 @@ 5, 163, 116, + 104, + 114, + 2, + 161, + 118, + 1, + 163, + 116, 120, 110, 138, @@ -53666,8 +54104,48 @@ 102, 103 ], - "signedBytes": [ - 130, + "rekeyedSenderAuthAddress": "BKDYDIDVSZCP75JVCB76P3WBJRY6HWAIFDSEOKYHJY5WMNJ2UWJ65MYETU", + "rekeyedSenderSignedBytes": [ + 131, + 164, + 115, + 103, + 110, + 114, + 196, + 32, + 10, + 135, + 129, + 160, + 117, + 150, + 68, + 255, + 245, + 53, + 16, + 127, + 231, + 238, + 193, + 76, + 113, + 227, + 216, + 8, + 40, + 228, + 71, + 43, + 7, + 78, + 59, + 102, + 53, + 58, + 165, + 147, 163, 115, 105, @@ -54840,41 +55318,1215 @@ 102, 103 ], - "signingPrivateKey": [ - 2, - 205, - 103, - 33, - 67, - 14, - 82, - 196, + "signedBytes": [ + 130, + 163, 115, + 105, + 103, 196, - 206, - 254, - 50, - 110, - 63, - 182, - 149, - 229, - 184, - 216, - 93, - 11, - 13, - 99, - 69, - 213, - 218, - 165, - 134, - 118, - 47, - 44 - ], - "transaction": { + 64, + 167, + 7, + 238, + 77, + 120, + 250, + 191, + 255, + 140, + 25, + 61, + 141, + 221, + 193, + 224, + 237, + 34, + 228, + 24, + 179, + 197, + 169, + 100, + 32, + 214, + 238, + 195, + 117, + 135, + 89, + 23, + 160, + 176, + 164, + 186, + 146, + 89, + 49, + 97, + 109, + 157, + 193, + 253, + 112, + 143, + 104, + 41, + 188, + 214, + 196, + 94, + 14, + 93, + 30, + 238, + 12, + 142, + 121, + 240, + 60, + 69, + 135, + 146, + 5, + 163, + 116, + 120, + 110, + 138, + 164, + 97, + 112, + 97, + 114, + 130, + 161, + 109, + 196, + 32, + 33, + 241, + 1, + 96, + 244, + 23, + 132, + 139, + 101, + 97, + 191, + 102, + 57, + 174, + 169, + 228, + 165, + 82, + 114, + 49, + 155, + 20, + 81, + 136, + 220, + 207, + 33, + 248, + 74, + 26, + 189, + 145, + 161, + 114, + 196, + 32, + 123, + 153, + 141, + 254, + 48, + 235, + 240, + 109, + 52, + 234, + 33, + 106, + 58, + 141, + 70, + 182, + 87, + 158, + 52, + 244, + 181, + 45, + 223, + 138, + 166, + 205, + 80, + 252, + 138, + 109, + 1, + 73, + 164, + 99, + 97, + 105, + 100, + 206, + 102, + 63, + 208, + 248, + 163, + 102, + 101, + 101, + 205, + 3, + 232, + 162, + 102, + 118, + 206, + 2, + 60, + 227, + 138, + 163, + 103, + 101, + 110, + 172, + 109, + 97, + 105, + 110, + 110, + 101, + 116, + 45, + 118, + 49, + 46, + 48, + 162, + 103, + 104, + 196, + 32, + 192, + 97, + 196, + 216, + 252, + 29, + 189, + 222, + 210, + 215, + 96, + 75, + 228, + 86, + 142, + 63, + 109, + 4, + 25, + 135, + 172, + 55, + 189, + 228, + 182, + 32, + 181, + 171, + 57, + 36, + 138, + 223, + 162, + 108, + 118, + 206, + 2, + 60, + 231, + 114, + 164, + 110, + 111, + 116, + 101, + 197, + 3, + 107, + 123, + 34, + 115, + 116, + 97, + 110, + 100, + 97, + 114, + 100, + 34, + 58, + 34, + 97, + 114, + 99, + 54, + 57, + 34, + 44, + 34, + 100, + 101, + 115, + 99, + 114, + 105, + 112, + 116, + 105, + 111, + 110, + 34, + 58, + 34, + 84, + 104, + 105, + 115, + 32, + 105, + 115, + 32, + 97, + 32, + 118, + 101, + 114, + 105, + 102, + 105, + 97, + 98, + 108, + 121, + 32, + 97, + 117, + 116, + 104, + 101, + 110, + 116, + 105, + 99, + 32, + 100, + 105, + 103, + 105, + 116, + 97, + 108, + 32, + 104, + 105, + 115, + 116, + 111, + 114, + 105, + 99, + 97, + 108, + 32, + 97, + 114, + 116, + 105, + 102, + 97, + 99, + 116, + 32, + 109, + 105, + 110, + 116, + 101, + 100, + 32, + 98, + 121, + 32, + 84, + 104, + 101, + 32, + 68, + 97, + 116, + 97, + 32, + 72, + 105, + 115, + 116, + 111, + 114, + 121, + 32, + 77, + 117, + 115, + 101, + 117, + 109, + 46, + 32, + 73, + 116, + 32, + 114, + 101, + 112, + 114, + 101, + 115, + 101, + 110, + 116, + 115, + 32, + 97, + 32, + 77, + 97, + 103, + 110, + 105, + 116, + 117, + 100, + 101, + 32, + 53, + 46, + 51, + 32, + 101, + 97, + 114, + 116, + 104, + 113, + 117, + 97, + 107, + 101, + 32, + 119, + 105, + 116, + 104, + 32, + 73, + 68, + 32, + 117, + 115, + 55, + 48, + 48, + 48, + 109, + 57, + 55, + 54, + 32, + 119, + 104, + 105, + 99, + 104, + 32, + 104, + 97, + 115, + 32, + 97, + 110, + 32, + 101, + 112, + 105, + 99, + 101, + 110, + 116, + 114, + 101, + 32, + 110, + 111, + 114, + 116, + 104, + 101, + 114, + 110, + 32, + 69, + 97, + 115, + 116, + 32, + 80, + 97, + 99, + 105, + 102, + 105, + 99, + 32, + 82, + 105, + 115, + 101, + 32, + 97, + 110, + 100, + 32, + 111, + 99, + 99, + 117, + 114, + 114, + 101, + 100, + 32, + 97, + 116, + 32, + 77, + 111, + 110, + 44, + 32, + 48, + 49, + 32, + 65, + 112, + 114, + 32, + 50, + 48, + 50, + 52, + 32, + 49, + 52, + 58, + 52, + 53, + 58, + 49, + 54, + 32, + 71, + 77, + 84, + 46, + 32, + 84, + 104, + 101, + 32, + 118, + 101, + 114, + 105, + 102, + 105, + 101, + 100, + 32, + 115, + 111, + 117, + 114, + 99, + 101, + 32, + 111, + 102, + 32, + 116, + 104, + 105, + 115, + 32, + 100, + 97, + 116, + 97, + 32, + 97, + 114, + 116, + 105, + 102, + 97, + 99, + 116, + 32, + 119, + 97, + 115, + 32, + 116, + 104, + 101, + 32, + 85, + 110, + 105, + 116, + 101, + 100, + 32, + 83, + 116, + 97, + 116, + 101, + 115, + 32, + 71, + 101, + 111, + 108, + 111, + 103, + 105, + 99, + 97, + 108, + 32, + 83, + 117, + 114, + 118, + 101, + 121, + 32, + 40, + 85, + 83, + 71, + 83, + 41, + 46, + 32, + 70, + 111, + 114, + 32, + 109, + 111, + 114, + 101, + 32, + 105, + 110, + 102, + 111, + 114, + 109, + 97, + 116, + 105, + 111, + 110, + 32, + 118, + 105, + 115, + 105, + 116, + 32, + 104, + 116, + 116, + 112, + 115, + 58, + 47, + 47, + 100, + 97, + 116, + 97, + 104, + 105, + 115, + 116, + 111, + 114, + 121, + 46, + 111, + 114, + 103, + 47, + 46, + 34, + 44, + 34, + 101, + 120, + 116, + 101, + 114, + 110, + 97, + 108, + 95, + 117, + 114, + 108, + 34, + 58, + 34, + 104, + 116, + 116, + 112, + 115, + 58, + 47, + 47, + 109, + 117, + 115, + 101, + 117, + 109, + 46, + 100, + 97, + 116, + 97, + 104, + 105, + 115, + 116, + 111, + 114, + 121, + 46, + 111, + 114, + 103, + 47, + 101, + 118, + 101, + 110, + 116, + 47, + 81, + 85, + 65, + 75, + 69, + 47, + 117, + 115, + 55, + 48, + 48, + 48, + 109, + 57, + 55, + 54, + 34, + 44, + 34, + 112, + 114, + 111, + 112, + 101, + 114, + 116, + 105, + 101, + 115, + 34, + 58, + 123, + 34, + 109, + 97, + 103, + 110, + 105, + 116, + 117, + 100, + 101, + 34, + 58, + 53, + 46, + 51, + 44, + 34, + 99, + 108, + 97, + 115, + 115, + 34, + 58, + 34, + 77, + 53, + 34, + 44, + 34, + 100, + 101, + 112, + 116, + 104, + 34, + 58, + 49, + 48, + 44, + 34, + 108, + 97, + 116, + 105, + 116, + 117, + 100, + 101, + 34, + 58, + 56, + 46, + 50, + 53, + 49, + 44, + 34, + 108, + 111, + 110, + 103, + 105, + 116, + 117, + 100, + 101, + 34, + 58, + 45, + 49, + 48, + 51, + 46, + 50, + 50, + 54, + 44, + 34, + 112, + 108, + 97, + 99, + 101, + 34, + 58, + 34, + 110, + 111, + 114, + 116, + 104, + 101, + 114, + 110, + 32, + 69, + 97, + 115, + 116, + 32, + 80, + 97, + 99, + 105, + 102, + 105, + 99, + 32, + 82, + 105, + 115, + 101, + 34, + 44, + 34, + 115, + 111, + 117, + 114, + 99, + 101, + 34, + 58, + 34, + 85, + 83, + 71, + 83, + 34, + 44, + 34, + 115, + 117, + 98, + 84, + 121, + 112, + 101, + 34, + 58, + 34, + 101, + 97, + 114, + 116, + 104, + 113, + 117, + 97, + 107, + 101, + 34, + 44, + 34, + 116, + 105, + 109, + 101, + 34, + 58, + 34, + 50, + 48, + 50, + 52, + 45, + 48, + 52, + 45, + 48, + 49, + 84, + 49, + 52, + 58, + 52, + 53, + 58, + 49, + 54, + 46, + 49, + 48, + 57, + 90, + 34, + 44, + 34, + 116, + 121, + 112, + 101, + 34, + 58, + 34, + 113, + 117, + 97, + 107, + 101, + 34, + 44, + 34, + 117, + 114, + 108, + 34, + 58, + 34, + 104, + 116, + 116, + 112, + 115, + 58, + 47, + 47, + 101, + 97, + 114, + 116, + 104, + 113, + 117, + 97, + 107, + 101, + 46, + 117, + 115, + 103, + 115, + 46, + 103, + 111, + 118, + 47, + 101, + 97, + 114, + 116, + 104, + 113, + 117, + 97, + 107, + 101, + 115, + 47, + 101, + 118, + 101, + 110, + 116, + 112, + 97, + 103, + 101, + 47, + 117, + 115, + 55, + 48, + 48, + 48, + 109, + 57, + 55, + 54, + 34, + 125, + 44, + 34, + 109, + 105, + 109, + 101, + 95, + 116, + 121, + 112, + 101, + 34, + 58, + 34, + 105, + 109, + 97, + 103, + 101, + 47, + 112, + 110, + 103, + 34, + 44, + 34, + 105, + 100, + 34, + 58, + 34, + 117, + 115, + 55, + 48, + 48, + 48, + 109, + 57, + 55, + 54, + 34, + 44, + 34, + 116, + 105, + 116, + 108, + 101, + 34, + 58, + 34, + 77, + 32, + 53, + 46, + 51, + 32, + 45, + 32, + 110, + 111, + 114, + 116, + 104, + 101, + 114, + 110, + 32, + 69, + 97, + 115, + 116, + 32, + 80, + 97, + 99, + 105, + 102, + 105, + 99, + 32, + 82, + 105, + 115, + 101, + 34, + 125, + 163, + 115, + 110, + 100, + 196, + 32, + 33, + 241, + 1, + 96, + 244, + 23, + 132, + 139, + 101, + 97, + 191, + 102, + 57, + 174, + 169, + 228, + 165, + 82, + 114, + 49, + 155, + 20, + 81, + 136, + 220, + 207, + 33, + 248, + 74, + 26, + 189, + 145, + 164, + 116, + 121, + 112, + 101, + 164, + 97, + 99, + 102, + 103 + ], + "signingPrivateKey": [ + 2, + 205, + 103, + 33, + 67, + 14, + 82, + 196, + 115, + 196, + 206, + 254, + 50, + 110, + 63, + 182, + 149, + 229, + 184, + 216, + 93, + 11, + 13, + 99, + 69, + 213, + 218, + 165, + 134, + 118, + 47, + 44 + ], + "transaction": { "assetConfig": { "assetId": 1715458296, "manager": "EHYQCYHUC6CIWZLBX5TDTLVJ4SSVE4RRTMKFDCG4Z4Q7QSQ2XWIQPMKBPU", @@ -55800,340 +57452,934 @@ }, "unsignedBytes": [ 84, - 88, - 138, - 164, + 88, + 138, + 164, + 97, + 112, + 97, + 114, + 130, + 161, + 109, + 196, + 32, + 33, + 241, + 1, + 96, + 244, + 23, + 132, + 139, + 101, + 97, + 191, + 102, + 57, + 174, + 169, + 228, + 165, + 82, + 114, + 49, + 155, + 20, + 81, + 136, + 220, + 207, + 33, + 248, + 74, + 26, + 189, + 145, + 161, + 114, + 196, + 32, + 123, + 153, + 141, + 254, + 48, + 235, + 240, + 109, + 52, + 234, + 33, + 106, + 58, + 141, + 70, + 182, + 87, + 158, + 52, + 244, + 181, + 45, + 223, + 138, + 166, + 205, + 80, + 252, + 138, + 109, + 1, + 73, + 164, + 99, + 97, + 105, + 100, + 206, + 102, + 63, + 208, + 248, + 163, + 102, + 101, + 101, + 205, + 3, + 232, + 162, + 102, + 118, + 206, + 2, + 60, + 227, + 138, + 163, + 103, + 101, + 110, + 172, + 109, + 97, + 105, + 110, + 110, + 101, + 116, + 45, + 118, + 49, + 46, + 48, + 162, + 103, + 104, + 196, + 32, + 192, + 97, + 196, + 216, + 252, + 29, + 189, + 222, + 210, + 215, + 96, + 75, + 228, + 86, + 142, + 63, + 109, + 4, + 25, + 135, + 172, + 55, + 189, + 228, + 182, + 32, + 181, + 171, + 57, + 36, + 138, + 223, + 162, + 108, + 118, + 206, + 2, + 60, + 231, + 114, + 164, + 110, + 111, + 116, + 101, + 197, + 3, + 107, + 123, + 34, + 115, + 116, + 97, + 110, + 100, + 97, + 114, + 100, + 34, + 58, + 34, + 97, + 114, + 99, + 54, + 57, + 34, + 44, + 34, + 100, + 101, + 115, + 99, + 114, + 105, + 112, + 116, + 105, + 111, + 110, + 34, + 58, + 34, + 84, + 104, + 105, + 115, + 32, + 105, + 115, + 32, + 97, + 32, + 118, + 101, + 114, + 105, + 102, + 105, + 97, + 98, + 108, + 121, + 32, + 97, + 117, + 116, + 104, + 101, + 110, + 116, + 105, + 99, + 32, + 100, + 105, + 103, + 105, + 116, + 97, + 108, + 32, + 104, + 105, + 115, + 116, + 111, + 114, + 105, + 99, + 97, + 108, + 32, + 97, + 114, + 116, + 105, + 102, + 97, + 99, + 116, + 32, + 109, + 105, + 110, + 116, + 101, + 100, + 32, + 98, + 121, + 32, + 84, + 104, + 101, + 32, + 68, + 97, + 116, 97, + 32, + 72, + 105, + 115, + 116, + 111, + 114, + 121, + 32, + 77, + 117, + 115, + 101, + 117, + 109, + 46, + 32, + 73, + 116, + 32, + 114, + 101, 112, + 114, + 101, + 115, + 101, + 110, + 116, + 115, + 32, + 97, + 32, + 77, + 97, + 103, + 110, + 105, + 116, + 117, + 100, + 101, + 32, + 53, + 46, + 51, + 32, + 101, 97, 114, - 130, - 161, + 116, + 104, + 113, + 117, + 97, + 107, + 101, + 32, + 119, + 105, + 116, + 104, + 32, + 73, + 68, + 32, + 117, + 115, + 55, + 48, + 48, + 48, 109, - 196, + 57, + 55, + 54, + 32, + 119, + 104, + 105, + 99, + 104, + 32, + 104, + 97, + 115, + 32, + 97, + 110, 32, - 33, - 241, - 1, - 96, - 244, - 23, - 132, - 139, 101, + 112, + 105, + 99, + 101, + 110, + 116, + 114, + 101, + 32, + 110, + 111, + 114, + 116, + 104, + 101, + 114, + 110, + 32, + 69, 97, - 191, + 115, + 116, + 32, + 80, + 97, + 99, + 105, 102, - 57, - 174, - 169, - 228, - 165, + 105, + 99, + 32, 82, + 105, + 115, + 101, + 32, + 97, + 110, + 100, + 32, + 111, + 99, + 99, + 117, + 114, 114, + 101, + 100, + 32, + 97, + 116, + 32, + 77, + 111, + 110, + 44, + 32, + 48, 49, - 155, - 20, - 81, - 136, - 220, - 207, - 33, - 248, - 74, - 26, - 189, - 145, - 161, + 32, + 65, + 112, 114, - 196, 32, - 123, - 153, - 141, - 254, + 50, 48, - 235, - 240, - 109, + 50, + 52, + 32, + 49, 52, - 234, - 33, - 106, 58, - 141, - 70, - 182, - 87, - 158, 52, - 244, - 181, - 45, - 223, - 138, - 166, - 205, - 80, - 252, - 138, - 109, - 1, - 73, - 164, + 53, + 58, + 49, + 54, + 32, + 71, + 77, + 84, + 46, + 32, + 84, + 104, + 101, + 32, + 118, + 101, + 114, + 105, + 102, + 105, + 101, + 100, + 32, + 115, + 111, + 117, + 114, + 99, + 101, + 32, + 111, + 102, + 32, + 116, + 104, + 105, + 115, + 32, + 100, + 97, + 116, + 97, + 32, + 97, + 114, + 116, + 105, + 102, + 97, 99, + 116, + 32, + 119, 97, + 115, + 32, + 116, + 104, + 101, + 32, + 85, + 110, 105, + 116, + 101, 100, - 206, - 102, - 63, - 208, - 248, - 163, - 102, + 32, + 83, + 116, + 97, + 116, 101, + 115, + 32, + 71, 101, - 205, - 3, - 232, - 162, - 102, - 118, - 206, - 2, - 60, - 227, - 138, - 163, + 111, + 108, + 111, 103, + 105, + 99, + 97, + 108, + 32, + 83, + 117, + 114, + 118, + 101, + 121, + 32, + 40, + 85, + 83, + 71, + 83, + 41, + 46, + 32, + 70, + 111, + 114, + 32, + 109, + 111, + 114, 101, + 32, + 105, 110, - 172, + 102, + 111, + 114, 109, 97, + 116, 105, + 111, 110, - 110, - 101, - 116, - 45, + 32, 118, - 49, + 105, + 115, + 105, + 116, + 32, + 104, + 116, + 116, + 112, + 115, + 58, + 47, + 47, + 100, + 97, + 116, + 97, + 104, + 105, + 115, + 116, + 111, + 114, + 121, 46, - 48, - 162, + 111, + 114, 103, + 47, + 46, + 34, + 44, + 34, + 101, + 120, + 116, + 101, + 114, + 110, + 97, + 108, + 95, + 117, + 114, + 108, + 34, + 58, + 34, 104, - 196, - 32, - 192, + 116, + 116, + 112, + 115, + 58, + 47, + 47, + 109, + 117, + 115, + 101, + 117, + 109, + 46, + 100, 97, - 196, - 216, - 252, - 29, - 189, - 222, - 210, - 215, - 96, + 116, + 97, + 104, + 105, + 115, + 116, + 111, + 114, + 121, + 46, + 111, + 114, + 103, + 47, + 101, + 118, + 101, + 110, + 116, + 47, + 81, + 85, + 65, 75, - 228, - 86, - 142, - 63, - 109, - 4, - 25, - 135, - 172, + 69, + 47, + 117, + 115, 55, - 189, - 228, - 182, - 32, - 181, - 171, + 48, + 48, + 48, + 109, 57, - 36, - 138, - 223, - 162, - 108, - 118, - 206, - 2, - 60, - 231, + 55, + 54, + 34, + 44, + 34, + 112, 114, - 164, - 110, 111, + 112, + 101, + 114, 116, + 105, 101, - 197, - 3, - 107, + 115, + 34, + 58, 123, 34, - 115, - 116, - 97, - 110, - 100, + 109, 97, - 114, + 103, + 110, + 105, + 116, + 117, 100, + 101, 34, 58, + 53, + 46, + 51, + 44, 34, - 97, - 114, 99, - 54, - 57, + 108, + 97, + 115, + 115, + 34, + 58, + 34, + 77, + 53, 34, 44, 34, 100, 101, - 115, - 99, - 114, - 105, 112, 116, + 104, + 34, + 58, + 49, + 48, + 44, + 34, + 108, + 97, + 116, 105, + 116, + 117, + 100, + 101, + 34, + 58, + 56, + 46, + 50, + 53, + 49, + 44, + 34, + 108, 111, 110, + 103, + 105, + 116, + 117, + 100, + 101, 34, 58, + 45, + 49, + 48, + 51, + 46, + 50, + 50, + 54, + 44, 34, - 84, - 104, - 105, - 115, - 32, - 105, - 115, - 32, + 112, + 108, 97, - 32, - 118, + 99, 101, + 34, + 58, + 34, + 110, + 111, 114, - 105, - 102, - 105, - 97, - 98, - 108, - 121, - 32, - 97, - 117, 116, 104, 101, + 114, 110, - 116, - 105, - 99, 32, - 100, - 105, - 103, - 105, - 116, + 69, 97, - 108, - 32, - 104, - 105, 115, 116, - 111, - 114, - 105, - 99, - 97, - 108, 32, + 80, 97, - 114, - 116, + 99, 105, 102, - 97, + 105, 99, - 116, 32, - 109, + 82, 105, - 110, - 116, + 115, 101, - 100, - 32, + 34, + 44, + 34, + 115, + 111, + 117, + 114, + 99, + 101, + 34, + 58, + 34, + 85, + 83, + 71, + 83, + 34, + 44, + 34, + 115, + 117, 98, - 121, - 32, 84, - 104, + 121, + 112, + 101, + 34, + 58, + 34, 101, - 32, - 68, 97, + 114, 116, + 104, + 113, + 117, 97, - 32, - 72, + 107, + 101, + 34, + 44, + 34, + 116, 105, - 115, + 109, + 101, + 34, + 58, + 34, + 50, + 48, + 50, + 52, + 45, + 48, + 52, + 45, + 48, + 49, + 84, + 49, + 52, + 58, + 52, + 53, + 58, + 49, + 54, + 46, + 49, + 48, + 57, + 90, + 34, + 44, + 34, 116, - 111, - 114, 121, - 32, - 77, + 112, + 101, + 34, + 58, + 34, + 113, 117, - 115, + 97, + 107, 101, + 34, + 44, + 34, 117, - 109, - 46, - 32, - 73, - 116, - 32, 114, - 101, + 108, + 34, + 58, + 34, + 104, + 116, + 116, 112, - 114, - 101, 115, + 58, + 47, + 47, 101, - 110, - 116, - 115, - 32, 97, - 32, - 77, - 97, - 103, - 110, - 105, + 114, 116, + 104, + 113, 117, - 100, + 97, + 107, 101, - 32, - 53, 46, - 51, - 32, + 117, + 115, + 103, + 115, + 46, + 103, + 111, + 118, + 47, 101, 97, 114, @@ -56144,15 +58390,18 @@ 97, 107, 101, - 32, - 119, - 105, + 115, + 47, + 101, + 118, + 101, + 110, 116, - 104, - 32, - 73, - 68, - 32, + 112, + 97, + 103, + 101, + 47, 117, 115, 55, @@ -56163,29 +58412,67 @@ 57, 55, 54, - 32, - 119, - 104, + 34, + 125, + 44, + 34, + 109, 105, - 99, - 104, - 32, - 104, - 97, - 115, - 32, - 97, - 110, - 32, + 109, 101, + 95, + 116, + 121, 112, + 101, + 34, + 58, + 34, 105, - 99, + 109, + 97, + 103, 101, + 47, + 112, 110, + 103, + 34, + 44, + 34, + 105, + 100, + 34, + 58, + 34, + 117, + 115, + 55, + 48, + 48, + 48, + 109, + 57, + 55, + 54, + 34, + 44, + 34, 116, - 114, + 105, + 116, + 108, 101, + 34, + 58, + 34, + 77, + 32, + 53, + 46, + 51, + 32, + 45, 32, 110, 111, @@ -56213,681 +58500,1331 @@ 105, 115, 101, - 32, - 97, + 34, + 125, + 163, + 115, 110, 100, + 196, 32, - 111, - 99, - 99, - 117, - 114, - 114, + 33, + 241, + 1, + 96, + 244, + 23, + 132, + 139, 101, - 100, - 32, 97, - 116, - 32, - 77, - 111, - 110, - 44, - 32, - 48, - 49, - 32, - 65, - 112, + 191, + 102, + 57, + 174, + 169, + 228, + 165, + 82, 114, - 32, - 50, - 48, - 50, - 52, - 32, - 49, - 52, - 58, - 52, - 53, - 58, 49, - 54, - 32, - 71, - 77, - 84, - 46, - 32, - 84, - 104, - 101, - 32, - 118, - 101, - 114, - 105, - 102, - 105, + 155, + 20, + 81, + 136, + 220, + 207, + 33, + 248, + 74, + 26, + 189, + 145, + 164, + 116, + 121, + 112, 101, - 100, - 32, - 115, - 111, - 117, - 114, + 164, + 97, 99, - 101, - 32, - 111, 102, - 32, + 103 + ] + }, + "assetUnfreeze": { + "id": "LZ2ODDAT4ATAVJUEQW34DIKMPCMBXCCHOSIYKMWGBPEVNHLSEV2A", + "idRaw": [ + 94, 116, - 104, - 105, - 115, - 32, - 100, - 97, + 225, + 140, + 19, + 224, + 38, + 10, + 166, + 132, + 133, + 183, + 193, + 161, + 76, + 120, + 152, + 27, + 136, + 71, 116, - 97, - 32, - 97, + 145, + 133, + 50, + 198, + 11, + 201, + 86, + 157, 114, - 116, - 105, - 102, - 97, - 99, - 116, - 32, - 119, - 97, + 37, + 116 + ], + "multisigAddresses": [ + "424ZV7KBBUJ52DUKP2KLQ6I5GBOHKBXOW7Q7UQIOOYNDWYRM4EKOSMVVRI", + "NY6DHEEFW73R2NUWY562U2NNKSKBKVYY5OOQFLD3M2II5RUNKRZDEGUGEA" + ], + "multisigSignedBytes": [ + 130, + 164, + 109, 115, - 32, - 116, - 104, - 101, - 32, - 85, - 110, 105, - 116, - 101, - 100, - 32, - 83, - 116, - 97, - 116, - 101, - 115, - 32, - 71, - 101, - 111, - 108, - 111, 103, + 131, + 166, + 115, + 117, + 98, + 115, 105, - 99, - 97, - 108, + 103, + 146, + 130, + 162, + 112, + 107, + 196, 32, - 83, + 230, + 185, + 154, + 253, + 65, + 13, + 19, + 221, + 14, + 138, + 126, + 148, + 184, + 121, + 29, + 48, + 92, 117, - 114, + 6, + 238, + 183, + 225, + 250, + 65, + 14, 118, - 101, - 121, + 26, + 59, + 98, + 44, + 225, + 20, + 161, + 115, + 196, + 64, + 175, + 9, + 1, + 124, + 13, + 49, 32, - 40, - 85, - 83, - 71, - 83, - 41, + 162, + 169, + 7, + 82, + 195, + 84, + 149, + 184, + 204, + 117, + 124, 46, - 32, - 70, - 111, - 114, - 32, - 109, - 111, + 20, + 212, + 5, + 21, + 84, + 156, + 55, + 141, + 161, + 174, + 195, + 198, + 182, + 244, + 221, + 131, + 94, + 148, + 224, + 189, + 92, + 177, + 217, + 119, + 76, + 186, + 85, + 196, + 66, + 174, 114, - 101, + 177, + 238, + 129, + 97, + 196, + 46, + 221, + 15, + 108, + 226, + 227, + 238, + 11, + 4, + 130, + 162, + 112, + 107, + 196, 32, - 105, 110, + 60, + 51, + 144, + 133, + 183, + 247, + 29, + 54, + 150, + 199, + 125, + 170, + 105, + 173, + 84, + 148, + 21, + 87, + 24, + 235, + 157, + 2, + 172, + 123, 102, - 111, + 144, + 142, + 198, + 141, + 84, 114, - 109, - 97, - 116, - 105, - 111, - 110, - 32, - 118, - 105, + 161, 115, - 105, - 116, + 196, + 64, + 175, + 9, + 1, + 124, + 13, + 49, 32, - 104, - 116, - 116, - 112, - 115, - 58, - 47, - 47, - 100, + 162, + 169, + 7, + 82, + 195, + 84, + 149, + 184, + 204, + 117, + 124, + 46, + 20, + 212, + 5, + 21, + 84, + 156, + 55, + 141, + 161, + 174, + 195, + 198, + 182, + 244, + 221, + 131, + 94, + 148, + 224, + 189, + 92, + 177, + 217, + 119, + 76, + 186, + 85, + 196, + 66, + 174, + 114, + 177, + 238, + 129, 97, + 196, + 46, + 221, + 15, + 108, + 226, + 227, + 238, + 11, + 4, + 163, 116, - 97, 104, - 105, - 115, - 116, - 111, - 114, - 121, - 46, - 111, 114, - 103, - 47, - 46, - 34, - 44, - 34, - 101, - 120, + 2, + 161, + 118, + 1, + 163, 116, - 101, - 114, + 120, 110, + 137, + 164, + 102, 97, + 100, + 100, + 196, + 32, + 206, + 33, + 127, + 135, + 62, + 89, + 166, + 63, + 208, + 82, + 250, + 123, + 26, + 144, + 10, + 61, + 18, + 245, 108, - 95, - 117, - 114, - 108, - 34, - 58, - 34, - 104, - 116, - 116, - 112, - 115, - 58, - 47, - 47, - 109, - 117, + 173, + 73, 115, - 101, - 117, - 109, - 46, - 100, - 97, - 116, + 93, + 25, + 244, + 196, + 181, + 50, + 160, + 3, + 169, + 78, + 164, + 102, 97, - 104, 105, - 115, - 116, - 111, - 114, - 121, - 46, - 111, - 114, + 100, + 204, + 185, + 163, + 102, + 101, + 101, + 205, + 3, + 232, + 162, + 102, + 118, + 206, + 0, + 50, + 3, + 15, + 162, 103, + 104, + 196, + 32, + 72, + 99, + 181, + 24, + 164, + 179, + 200, + 78, + 200, + 16, + 242, + 45, + 79, + 16, + 129, + 203, + 15, + 113, + 240, + 89, + 167, + 172, + 32, + 222, + 198, 47, - 101, + 127, + 112, + 229, + 9, + 58, + 34, + 162, + 108, 118, - 101, + 206, + 0, + 50, + 6, + 247, + 164, 110, + 111, 116, - 47, + 101, + 196, + 8, + 182, + 30, + 9, + 15, + 17, 81, - 85, - 65, - 75, - 69, - 47, - 117, - 115, - 55, - 48, - 48, - 48, - 109, 57, - 55, - 54, - 34, - 44, - 34, - 112, - 114, - 111, - 112, - 101, - 114, + 12, + 163, + 115, + 110, + 100, + 196, + 32, + 178, + 207, + 213, + 145, + 117, + 145, + 43, + 5, + 243, + 171, + 12, + 97, + 129, + 45, + 32, + 191, + 149, + 7, + 154, + 212, + 199, + 108, 116, - 105, + 222, + 177, + 174, + 154, + 252, + 102, + 129, + 128, + 10, + 164, + 116, + 121, + 112, 101, - 115, - 34, - 58, - 123, - 34, - 109, + 164, 97, + 102, + 114, + 122 + ], + "rekeyedSenderAuthAddress": "BKDYDIDVSZCP75JVCB76P3WBJRY6HWAIFDSEOKYHJY5WMNJ2UWJ65MYETU", + "rekeyedSenderSignedBytes": [ + 131, + 164, + 115, 103, 110, - 105, - 116, + 114, + 196, + 32, + 10, + 135, + 129, + 160, 117, - 100, - 101, - 34, - 58, + 150, + 68, + 255, + 245, + 53, + 16, + 127, + 231, + 238, + 193, + 76, + 113, + 227, + 216, + 8, + 40, + 228, + 71, + 43, + 7, + 78, + 59, + 102, 53, + 58, + 165, + 147, + 163, + 115, + 105, + 103, + 196, + 64, + 175, + 9, + 1, + 124, + 13, + 49, + 32, + 162, + 169, + 7, + 82, + 195, + 84, + 149, + 184, + 204, + 117, + 124, 46, - 51, - 44, - 34, - 99, + 20, + 212, + 5, + 21, + 84, + 156, + 55, + 141, + 161, + 174, + 195, + 198, + 182, + 244, + 221, + 131, + 94, + 148, + 224, + 189, + 92, + 177, + 217, + 119, + 76, + 186, + 85, + 196, + 66, + 174, + 114, + 177, + 238, + 129, + 97, + 196, + 46, + 221, + 15, 108, + 226, + 227, + 238, + 11, + 4, + 163, + 116, + 120, + 110, + 137, + 164, + 102, 97, - 115, - 115, - 34, - 58, - 34, - 77, - 53, - 34, - 44, - 34, 100, - 101, - 112, - 116, - 104, - 34, - 58, - 49, - 48, - 44, - 34, + 100, + 196, + 32, + 206, + 33, + 127, + 135, + 62, + 89, + 166, + 63, + 208, + 82, + 250, + 123, + 26, + 144, + 10, + 61, + 18, + 245, 108, + 173, + 73, + 115, + 93, + 25, + 244, + 196, + 181, + 50, + 160, + 3, + 169, + 78, + 164, + 102, 97, - 116, 105, - 116, - 117, 100, + 204, + 185, + 163, + 102, 101, - 34, - 58, - 56, - 46, + 101, + 205, + 3, + 232, + 162, + 102, + 118, + 206, + 0, 50, - 53, - 49, - 44, - 34, - 108, - 111, - 110, + 3, + 15, + 162, 103, - 105, - 116, - 117, - 100, - 101, - 34, - 58, + 104, + 196, + 32, + 72, + 99, + 181, + 24, + 164, + 179, + 200, + 78, + 200, + 16, + 242, 45, - 49, - 48, - 51, - 46, - 50, - 50, - 54, - 44, - 34, + 79, + 16, + 129, + 203, + 15, + 113, + 240, + 89, + 167, + 172, + 32, + 222, + 198, + 47, + 127, 112, - 108, - 97, - 99, - 101, - 34, + 229, + 9, 58, 34, + 162, + 108, + 118, + 206, + 0, + 50, + 6, + 247, + 164, 110, 111, - 114, 116, - 104, 101, - 114, + 196, + 8, + 182, + 30, + 9, + 15, + 17, + 81, + 57, + 12, + 163, + 115, 110, + 100, + 196, 32, - 69, + 178, + 207, + 213, + 145, + 117, + 145, + 43, + 5, + 243, + 171, + 12, 97, - 115, - 116, + 129, + 45, 32, - 80, + 191, + 149, + 7, + 154, + 212, + 199, + 108, + 116, + 222, + 177, + 174, + 154, + 252, + 102, + 129, + 128, + 10, + 164, + 116, + 121, + 112, + 101, + 164, 97, - 99, - 105, 102, + 114, + 122 + ], + "signedBytes": [ + 130, + 163, + 115, 105, - 99, + 103, + 196, + 64, + 175, + 9, + 1, + 124, + 13, + 49, 32, + 162, + 169, + 7, 82, - 105, - 115, - 101, - 34, - 44, - 34, - 115, - 111, - 117, - 114, - 99, - 101, - 34, - 58, - 34, - 85, - 83, - 71, - 83, - 34, - 44, - 34, - 115, + 195, + 84, + 149, + 184, + 204, 117, - 98, + 124, + 46, + 20, + 212, + 5, + 21, 84, - 121, - 112, - 101, - 34, - 58, - 34, - 101, - 97, + 156, + 55, + 141, + 161, + 174, + 195, + 198, + 182, + 244, + 221, + 131, + 94, + 148, + 224, + 189, + 92, + 177, + 217, + 119, + 76, + 186, + 85, + 196, + 66, + 174, 114, - 116, - 104, - 113, - 117, + 177, + 238, + 129, 97, - 107, - 101, - 34, - 44, - 34, + 196, + 46, + 221, + 15, + 108, + 226, + 227, + 238, + 11, + 4, + 163, 116, + 120, + 110, + 137, + 164, + 102, + 97, + 100, + 100, + 196, + 32, + 206, + 33, + 127, + 135, + 62, + 89, + 166, + 63, + 208, + 82, + 250, + 123, + 26, + 144, + 10, + 61, + 18, + 245, + 108, + 173, + 73, + 115, + 93, + 25, + 244, + 196, + 181, + 50, + 160, + 3, + 169, + 78, + 164, + 102, + 97, 105, - 109, + 100, + 204, + 185, + 163, + 102, 101, - 34, - 58, - 34, - 50, - 48, + 101, + 205, + 3, + 232, + 162, + 102, + 118, + 206, + 0, 50, - 52, - 45, - 48, - 52, + 3, + 15, + 162, + 103, + 104, + 196, + 32, + 72, + 99, + 181, + 24, + 164, + 179, + 200, + 78, + 200, + 16, + 242, 45, - 48, - 49, - 84, - 49, - 52, - 58, - 52, - 53, + 79, + 16, + 129, + 203, + 15, + 113, + 240, + 89, + 167, + 172, + 32, + 222, + 198, + 47, + 127, + 112, + 229, + 9, 58, - 49, - 54, - 46, - 49, - 48, - 57, - 90, - 34, - 44, 34, + 162, + 108, + 118, + 206, + 0, + 50, + 6, + 247, + 164, + 110, + 111, 116, - 121, - 112, 101, - 34, - 58, - 34, - 113, + 196, + 8, + 182, + 30, + 9, + 15, + 17, + 81, + 57, + 12, + 163, + 115, + 110, + 100, + 196, + 32, + 178, + 207, + 213, + 145, 117, + 145, + 43, + 5, + 243, + 171, + 12, 97, - 107, - 101, - 34, - 44, - 34, - 117, - 114, + 129, + 45, + 32, + 191, + 149, + 7, + 154, + 212, + 199, 108, - 34, - 58, - 34, - 104, 116, + 222, + 177, + 174, + 154, + 252, + 102, + 129, + 128, + 10, + 164, 116, + 121, 112, - 115, - 58, - 47, - 47, 101, + 164, 97, + 102, 114, - 116, - 104, - 113, - 117, - 97, - 107, - 101, - 46, - 117, - 115, + 122 + ], + "signingPrivateKey": [ + 2, + 205, 103, + 33, + 67, + 14, + 82, + 196, 115, - 46, - 103, - 111, + 196, + 206, + 254, + 50, + 110, + 63, + 182, + 149, + 229, + 184, + 216, + 93, + 11, + 13, + 99, + 69, + 213, + 218, + 165, + 134, 118, 47, - 101, - 97, - 114, - 116, - 104, - 113, - 117, - 97, - 107, - 101, - 115, - 47, - 101, - 118, - 101, - 110, - 116, - 112, + 44 + ], + "transaction": { + "assetFreeze": { + "assetId": 185, + "freezeTarget": { + "address": "ZYQX7BZ6LGTD7UCS7J5RVEAKHUJPK3FNJFZV2GPUYS2TFIADVFHDBKTN7I", + "pubKey": [ + 206, + 33, + 127, + 135, + 62, + 89, + 166, + 63, + 208, + 82, + 250, + 123, + 26, + 144, + 10, + 61, + 18, + 245, + 108, + 173, + 73, + 115, + 93, + 25, + 244, + 196, + 181, + 50, + 160, + 3, + 169, + 78 + ] + } + }, + "fee": 1000, + "firstValid": 3277583, + "genesisHash": [ + 72, + 99, + 181, + 24, + 164, + 179, + 200, + 78, + 200, + 16, + 242, + 45, + 79, + 16, + 129, + 203, + 15, + 113, + 240, + 89, + 167, + 172, + 32, + 222, + 198, + 47, + 127, + 112, + 229, + 9, + 58, + 34 + ], + "lastValid": 3278583, + "note": [ + 182, + 30, + 9, + 15, + 17, + 81, + 57, + 12 + ], + "sender": "WLH5LELVSEVQL45LBRQYCLJAX6KQPGWUY5WHJXVRV2NPYZUBQAFPH22Q7A", + "transactionType": "AssetFreeze" + }, + "unsignedBytes": [ + 84, + 88, + 137, + 164, + 102, 97, - 103, - 101, - 47, - 117, + 100, + 100, + 196, + 32, + 206, + 33, + 127, + 135, + 62, + 89, + 166, + 63, + 208, + 82, + 250, + 123, + 26, + 144, + 10, + 61, + 18, + 245, + 108, + 173, + 73, 115, - 55, - 48, - 48, - 48, - 109, - 57, - 55, - 54, - 34, - 125, - 44, - 34, - 109, + 93, + 25, + 244, + 196, + 181, + 50, + 160, + 3, + 169, + 78, + 164, + 102, + 97, 105, - 109, + 100, + 204, + 185, + 163, + 102, 101, - 95, - 116, - 121, - 112, 101, - 34, - 58, - 34, - 105, - 109, - 97, + 205, + 3, + 232, + 162, + 102, + 118, + 206, + 0, + 50, + 3, + 15, + 162, 103, - 101, + 104, + 196, + 32, + 72, + 99, + 181, + 24, + 164, + 179, + 200, + 78, + 200, + 16, + 242, + 45, + 79, + 16, + 129, + 203, + 15, + 113, + 240, + 89, + 167, + 172, + 32, + 222, + 198, 47, + 127, 112, - 110, - 103, - 34, - 44, - 34, - 105, - 100, - 34, + 229, + 9, 58, 34, - 117, - 115, - 55, - 48, - 48, - 48, - 109, - 57, - 55, - 54, - 34, - 44, - 34, - 116, - 105, - 116, + 162, 108, - 101, - 34, - 58, - 34, - 77, - 32, - 53, - 46, - 51, - 32, - 45, - 32, + 118, + 206, + 0, + 50, + 6, + 247, + 164, 110, 111, - 114, - 116, - 104, - 101, - 114, - 110, - 32, - 69, - 97, - 115, 116, - 32, - 80, - 97, - 99, - 105, - 102, - 105, - 99, - 32, - 82, - 105, - 115, 101, - 34, - 125, + 196, + 8, + 182, + 30, + 9, + 15, + 17, + 81, + 57, + 12, 163, 115, 110, 100, 196, 32, - 33, - 241, - 1, - 96, - 244, - 23, - 132, - 139, - 101, + 178, + 207, + 213, + 145, + 117, + 145, + 43, + 5, + 243, + 171, + 12, 97, + 129, + 45, + 32, 191, - 102, - 57, + 149, + 7, + 154, + 212, + 199, + 108, + 116, + 222, + 177, 174, - 169, - 228, - 165, - 82, - 114, - 49, - 155, - 20, - 81, - 136, - 220, - 207, - 33, - 248, - 74, - 26, - 189, - 145, + 154, + 252, + 102, + 129, + 128, + 10, 164, 116, 121, @@ -56895,9 +59832,9 @@ 101, 164, 97, - 99, 102, - 103 + 114, + 122 ] }, "nonParticipationKeyRegistration": { diff --git a/packages/python/algokit_transact/tests/__init__.py b/packages/python/algokit_transact/tests/__init__.py index 4ffa34430..e4ad493c6 100644 --- a/packages/python/algokit_transact/tests/__init__.py +++ b/packages/python/algokit_transact/tests/__init__.py @@ -9,6 +9,7 @@ Transaction, AssetTransferTransactionFields, AssetConfigTransactionFields, + AssetFreezeTransactionFields, ApplicationCallTransactionFields, KeyRegistrationTransactionFields, OnApplicationComplete, @@ -38,6 +39,8 @@ class TestData: asset_create: TransactionTestData asset_destroy: TransactionTestData asset_reconfigure: TransactionTestData + asset_freeze: TransactionTestData + asset_unfreeze: TransactionTestData application_call: TransactionTestData application_create: TransactionTestData application_update: TransactionTestData @@ -133,6 +136,11 @@ def create_transaction_test_data(test_data: dict[str, Any]) -> TransactionTestDa "field_name": "asset_config", "field_class": AssetConfigTransactionFields, }, + "AssetFreeze": { + "type": TransactionType.ASSET_FREEZE, + "field_name": "asset_freeze", + "field_class": AssetFreezeTransactionFields, + }, "ApplicationCall": { "type": TransactionType.APPLICATION_CALL, "field_name": "application_call", @@ -153,6 +161,10 @@ def create_transaction_test_data(test_data: dict[str, Any]) -> TransactionTestDa # Extract the specific transaction field data transaction_field_data = transaction_data.pop(transaction_config["field_name"]) + # Handle assetFreeze objects - ensure frozen field defaults to false if missing + if transaction_type_str == "AssetFreeze" and "frozen" not in transaction_field_data: + transaction_field_data["frozen"] = False + # Build the transaction kwargs transaction_kwargs = { **transaction_data, diff --git a/packages/python/algokit_transact/tests/test_asset_freeze.py b/packages/python/algokit_transact/tests/test_asset_freeze.py new file mode 100644 index 000000000..9731068ac --- /dev/null +++ b/packages/python/algokit_transact/tests/test_asset_freeze.py @@ -0,0 +1,113 @@ +import pytest + +from tests.transaction_asserts import ( + assert_assign_fee, + assert_decode_with_prefix, + assert_decode_without_prefix, + assert_encode, + assert_encode_with_auth_address, + assert_encode_with_signature, + assert_encoded_transaction_type, + assert_example, + assert_transaction_id, +) +from . import TEST_DATA + +txn_test_data = { + "freeze": TEST_DATA.asset_freeze, + "unfreeze": TEST_DATA.asset_unfreeze, +} + +# Polytest Suite: Asset Freeze + +# Polytest Group: Transaction Tests + + +@pytest.mark.group_transaction_tests +@pytest.mark.parametrize( + "test_data", + txn_test_data.values(), + ids=txn_test_data.keys(), +) +def test_example(test_data): + assert_example(test_data) + + +@pytest.mark.group_transaction_tests +@pytest.mark.parametrize( + "test_data", + txn_test_data.values(), + ids=txn_test_data.keys(), +) +def test_get_transaction_id(test_data): + assert_transaction_id(test_data) + + +@pytest.mark.group_transaction_tests +@pytest.mark.parametrize( + "test_data", + txn_test_data.values(), + ids=txn_test_data.keys(), +) +def test_assign_fee(test_data): + assert_assign_fee(test_data) + + +@pytest.mark.group_transaction_tests +@pytest.mark.parametrize( + "test_data", + txn_test_data.values(), + ids=txn_test_data.keys(), +) +def test_get_encoded_transaction_type(test_data): + assert_encoded_transaction_type(test_data) + + +@pytest.mark.group_transaction_tests +@pytest.mark.parametrize( + "test_data", + txn_test_data.values(), + ids=txn_test_data.keys(), +) +def test_decode_without_prefix(test_data): + assert_decode_without_prefix(test_data) + + +@pytest.mark.group_transaction_tests +@pytest.mark.parametrize( + "test_data", + txn_test_data.values(), + ids=txn_test_data.keys(), +) +def test_decode_with_prefix(test_data): + assert_decode_with_prefix(test_data) + + +@pytest.mark.group_transaction_tests +@pytest.mark.parametrize( + "test_data", + txn_test_data.values(), + ids=txn_test_data.keys(), +) +def test_encode_with_auth_address(test_data): + assert_encode_with_auth_address(test_data) + + +@pytest.mark.group_transaction_tests +@pytest.mark.parametrize( + "test_data", + txn_test_data.values(), + ids=txn_test_data.keys(), +) +def test_encode_with_signature(test_data): + assert_encode_with_signature(test_data) + + +@pytest.mark.group_transaction_tests +@pytest.mark.parametrize( + "test_data", + txn_test_data.values(), + ids=txn_test_data.keys(), +) +def test_encode(test_data): + assert_encode(test_data) diff --git a/packages/typescript/algokit_transact/__tests__/asset_freeze.test.ts b/packages/typescript/algokit_transact/__tests__/asset_freeze.test.ts new file mode 100644 index 000000000..0d2aa3934 --- /dev/null +++ b/packages/typescript/algokit_transact/__tests__/asset_freeze.test.ts @@ -0,0 +1,64 @@ +import { test, describe } from "bun:test"; +import { testData } from "./common"; +import { + assertAssignFee, + assertDecodeWithoutPrefix, + assertDecodeWithPrefix, + assertEncode, + assertEncodedTransactionType, + assertEncodeWithAuthAddress, + assertEncodeWithSignature, + assertExample, + assertTransactionId, +} from "./transaction_asserts"; + +const freezeTestData = Object.entries({ + ["freeze"]: testData.assetFreeze, + ["unfreeze"]: testData.assetUnfreeze, +}); + +describe("Asset Freeze", () => { + // Polytest Suite: Asset Freeze + + describe("Transaction Tests", () => { + // Polytest Group: Transaction Tests + + for (const [label, testData] of freezeTestData) { + test("example", async () => { + await assertExample(label, testData); + }); + + test("get transaction id", () => { + assertTransactionId(label, testData); + }); + + test("assign fee", () => { + assertAssignFee(label, testData); + }); + + test("get encoded transaction type", () => { + assertEncodedTransactionType(label, testData); + }); + + test("decode without prefix", () => { + assertDecodeWithoutPrefix(label, testData); + }); + + test("decode with prefix", () => { + assertDecodeWithPrefix(label, testData); + }); + + test("encode with auth address", async () => { + await assertEncodeWithAuthAddress(label, testData); + }); + + test("encode with signature", () => { + assertEncodeWithSignature(label, testData); + }); + + test("encode", () => { + assertEncode(label, testData); + }); + } + }); +}); diff --git a/packages/typescript/algokit_transact/__tests__/common.ts b/packages/typescript/algokit_transact/__tests__/common.ts index f6ead2890..cb1c4641c 100644 --- a/packages/typescript/algokit_transact/__tests__/common.ts +++ b/packages/typescript/algokit_transact/__tests__/common.ts @@ -14,13 +14,38 @@ const defaultReviver = (key: string, value: unknown) => { if ( typeof value === "number" && - ["fee", "amount", "firstValid", "lastValid", "assetId", "total", "appId", "extraProgramPages", "numUints", "numByteSlices", "voteFirst", "voteLast", "voteKeyDilution"].includes( - key, - ) + [ + "fee", + "amount", + "firstValid", + "lastValid", + "assetId", + "total", + "appId", + "extraProgramPages", + "numUints", + "numByteSlices", + "voteFirst", + "voteLast", + "voteKeyDilution", + ].includes(key) ) { return BigInt(value); } + // Handle assetFreeze objects - ensure frozen field defaults to false if missing + // The Rust side uses #[serde(default)] on the frozen field, which means: + // 1. When serializing, false values may be omitted from JSON + // 2. When deserializing, missing values default to false + // The TypeScript WASM bindings expect the field to always be present as a boolean + if (key === "assetFreeze" && typeof value === "object" && value !== null) { + const assetFreeze = value as any; + if (assetFreeze.frozen === undefined) { + assetFreeze.frozen = false; // Match WASM bindings' expectations + } + return assetFreeze; + } + return value; }; @@ -41,20 +66,23 @@ export type TransactionTestData = { multisigSignedBytes: Uint8Array; }; -export const testData = parseJson< - Record< - | "simplePayment" - | "optInAssetTransfer" - | "assetCreate" - | "assetDestroy" - | "assetReconfigure" - | "applicationCall" - | "applicationCreate" - | "applicationUpdate" - | "applicationDelete" - | "onlineKeyRegistration" - | "offlineKeyRegistration" - | "nonParticipationKeyRegistration", - TransactionTestData - > ->(jsonString); +export const testData = + parseJson< + Record< + | "simplePayment" + | "optInAssetTransfer" + | "assetCreate" + | "assetDestroy" + | "assetReconfigure" + | "applicationCall" + | "applicationCreate" + | "applicationUpdate" + | "applicationDelete" + | "onlineKeyRegistration" + | "offlineKeyRegistration" + | "nonParticipationKeyRegistration" + | "assetFreeze" + | "assetUnfreeze", + TransactionTestData + > + >(jsonString);