diff --git a/app/Makefile.version b/app/Makefile.version index aa329cff..f245d307 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -3,4 +3,4 @@ APPVERSION_M=0 # This is the minor version APPVERSION_N=1 # This is the patch version -APPVERSION_P=1 +APPVERSION_P=2 diff --git a/app/rust/src/lib.rs b/app/rust/src/lib.rs index c847e57d..726580fd 100644 --- a/app/rust/src/lib.rs +++ b/app/rust/src/lib.rs @@ -22,8 +22,8 @@ extern crate no_std_compat as std; use arrayref as _; use educe as _; -use poseidon377 as _; use ethnum as _; +use poseidon377 as _; pub(crate) mod address; mod bolos; diff --git a/app/rust/src/parser.rs b/app/rust/src/parser.rs index 77091210..aa5ca691 100644 --- a/app/rust/src/parser.rs +++ b/app/rust/src/parser.rs @@ -30,13 +30,16 @@ pub mod detection; pub mod effect_hash; mod error; pub mod fee; +pub mod fixpoint; pub mod id; +pub mod identity_key; pub mod memo; pub mod memo_plain_text; mod note; mod note_payload; pub mod nullifier; mod parameters; +pub mod penalty; mod plans; pub mod rseed; pub mod swap_ciphertext; @@ -45,9 +48,6 @@ pub mod swap_plaintext; pub mod symmetric; pub mod trading_pair; pub mod value; -pub mod identity_key; -pub mod penalty; -pub mod fixpoint; pub use bytes::BytesC; pub use error::ParserError; diff --git a/app/rust/src/parser/amount.rs b/app/rust/src/parser/amount.rs index 4e40bd9b..3877f235 100644 --- a/app/rust/src/parser/amount.rs +++ b/app/rust/src/parser/amount.rs @@ -15,10 +15,10 @@ ********************************************************************************/ use crate::constants::AMOUNT_LEN_BYTES; +use crate::parser::fixpoint::U128x128; use crate::utils::protobuf::encode_varint; use crate::ParserError; use decaf377::{Fq, Fr}; -use crate::parser::fixpoint::U128x128; #[derive(Copy, Clone)] #[cfg_attr(any(feature = "derive-debug", test), derive(Debug))] diff --git a/app/rust/src/parser/fee.rs b/app/rust/src/parser/fee.rs index 7354cdc0..c745ad76 100644 --- a/app/rust/src/parser/fee.rs +++ b/app/rust/src/parser/fee.rs @@ -2,7 +2,7 @@ use crate::constants::{AMOUNT_LEN_BYTES, ID_LEN_BYTES}; use crate::parser::commitment::Commitment; use crate::parser::id::Id; use crate::parser::value::Sign; -use crate::parser::value::{Value, ValueC, Imbalance, Balance}; +use crate::parser::value::{Balance, Imbalance, Value, ValueC}; use crate::ParserError; use decaf377::Fq; use decaf377::Fr; @@ -32,7 +32,7 @@ impl TryFrom for Fee { // If conversion fails, create a new Value with the amount and staking token asset ID Ok(Fee(Value { amount: value.0.amount.try_into()?, - asset_id: Id(Fq::from_le_bytes_mod_order(&STAKING_TOKEN_ASSET_ID_BYTES)) + asset_id: Id(Fq::from_le_bytes_mod_order(&STAKING_TOKEN_ASSET_ID_BYTES)), })) } } @@ -49,7 +49,7 @@ impl Fee { pub fn commit(&self, blinding: Fr) -> Result { let mut balance = Balance::new(); - balance.add(Imbalance{ + balance.add(Imbalance { value: self.0.clone(), sign: Sign::Required, })?; diff --git a/app/rust/src/parser/fixpoint.rs b/app/rust/src/parser/fixpoint.rs index 383f4858..deb747c7 100644 --- a/app/rust/src/parser/fixpoint.rs +++ b/app/rust/src/parser/fixpoint.rs @@ -1,6 +1,6 @@ -use ethnum::U256; -use crate::parser::ParserError; use crate::parser::amount::Amount; +use crate::parser::ParserError; +use ethnum::U256; use std::ops::Mul; #[derive(Copy, Clone)] @@ -126,4 +126,4 @@ impl Mul for U128x128 { fn mul(self, rhs: U128x128) -> Self::Output { self.checked_mul(&rhs) } -} \ No newline at end of file +} diff --git a/app/rust/src/parser/identity_key.rs b/app/rust/src/parser/identity_key.rs index 09352978..1b41a9bd 100644 --- a/app/rust/src/parser/identity_key.rs +++ b/app/rust/src/parser/identity_key.rs @@ -1,7 +1,6 @@ use crate::parser::bytes::BytesC; use decaf377_rdsa::{SpendAuth, VerificationKeyBytes}; - pub struct IdentityKey(pub VerificationKeyBytes); #[repr(C)] @@ -10,5 +9,3 @@ pub struct IdentityKey(pub VerificationKeyBytes); pub struct IdentityKeyC { pub ik: BytesC, } - - diff --git a/app/rust/src/parser/penalty.rs b/app/rust/src/parser/penalty.rs index c3d3963a..ffd4492e 100644 --- a/app/rust/src/parser/penalty.rs +++ b/app/rust/src/parser/penalty.rs @@ -15,17 +15,16 @@ ********************************************************************************/ use crate::parser::bytes::BytesC; use crate::parser::{ - fixpoint::U128x128, - ParserError, amount::Amount, - value::{Balance, Imbalance, Sign}, + fee::STAKING_TOKEN_ASSET_ID_BYTES, + fixpoint::U128x128, id::Id, value::Value, - fee::STAKING_TOKEN_ASSET_ID_BYTES, + value::{Balance, Imbalance, Sign}, + ParserError, }; use decaf377::Fq; - #[derive(Copy, Clone)] pub struct Penalty(U128x128); @@ -44,21 +43,25 @@ impl Penalty { /// This method takes the `unbonding_id` rather than the `UnbondingToken` so /// that it can be used in mock proof verification, where computation of the /// unbonding token's asset ID happens outside of the circuit. - pub fn balance_for_claim(&self, unbonding_id: Id, unbonding_amount: Amount) -> Result { + pub fn balance_for_claim( + &self, + unbonding_id: Id, + unbonding_amount: Amount, + ) -> Result { // The undelegate claim action subtracts the unbonding amount and adds // the unbonded amount from the transaction's value balance. let mut balance = Balance::new(); - balance.add(Imbalance{ - value: Value{ + balance.add(Imbalance { + value: Value { amount: unbonding_amount, asset_id: unbonding_id, }, sign: Sign::Required, })?; - balance.add(Imbalance{ - value: Value{ + balance.add(Imbalance { + value: Value { amount: self.apply_to_amount(unbonding_amount), - asset_id: Id(Fq::from_le_bytes_mod_order(&STAKING_TOKEN_ASSET_ID_BYTES)) + asset_id: Id(Fq::from_le_bytes_mod_order(&STAKING_TOKEN_ASSET_ID_BYTES)), }, sign: Sign::Provided, })?; @@ -77,7 +80,9 @@ impl<'a> TryFrom<&'a [u8]> for Penalty { type Error = ParserError; fn try_from(value: &'a [u8]) -> Result { - U128x128::try_from(value).map(Self).map_err(|_| ParserError::InvalidLength) + U128x128::try_from(value) + .map(Self) + .map_err(|_| ParserError::InvalidLength) } } diff --git a/app/rust/src/parser/plans.rs b/app/rust/src/parser/plans.rs index 8f4bb4e2..98d54ce3 100644 --- a/app/rust/src/parser/plans.rs +++ b/app/rust/src/parser/plans.rs @@ -19,17 +19,17 @@ use crate::parser::{ }; use crate::constants::EFFECT_HASH_LEN; +use crate::ffi::c_api::c_fvk_bytes; use crate::parser::bytes::BytesC; use crate::parser::effect_hash::EffectHash; use crate::parser::parameters::ParametersHash; -use crate::ffi::c_api::c_fvk_bytes; use crate::ParserError; +pub mod delegator_vote; pub mod output; pub mod spend; pub mod swap; pub mod undelegate_claim; -pub mod delegator_vote; #[repr(C)] #[cfg_attr(any(feature = "derive-debug", test), derive(Debug))] @@ -261,8 +261,6 @@ pub unsafe extern "C" fn rs_delegator_vote_action_hash( crate::zlog("rs_delegator_vote_action_hash\x00"); let output = std::slice::from_raw_parts_mut(output, output_len); - - if output.len() < 64 { return ParserError::Ok as u32; } @@ -348,14 +346,14 @@ mod tests { use crate::parser::detection::DetectionDataPlanC; use crate::parser::fee::FeeC; use crate::parser::id::IdC; + use crate::parser::identity_key::IdentityKeyC; use crate::parser::memo::MemoPlanC; use crate::parser::memo_plain_text::MemoPlaintextC; use crate::parser::note::NoteC; + use crate::parser::penalty::PenaltyC; use crate::parser::swap_plaintext::SwapPlaintextC; use crate::parser::trading_pair::TradingPairC; use crate::parser::value::ValueC; - use crate::parser::penalty::PenaltyC; - use crate::parser::identity_key::IdentityKeyC; #[test] fn test_transaction_plan_hash() { @@ -722,7 +720,6 @@ mod tests { ik: BytesC::from_slice(&ik_bytes), }; - // Create dummy penalty let inner_bytes = hex::decode("00000000000000000000000000000000fecbfb15b573eab367a0f9096bb98c7f") @@ -761,8 +758,10 @@ mod tests { let computed_hash = hex::encode(output_action_hash_bytes.as_array()); assert_eq!(computed_hash, expected_hash); } else { - panic!("output_action_hash is not Ok Error: {:?}", output_action_hash); - + panic!( + "output_action_hash is not Ok Error: {:?}", + output_action_hash + ); } } @@ -848,5 +847,4 @@ mod tests { panic!("spend_action_hash is not Ok"); } } - } diff --git a/app/rust/src/parser/plans/delegator_vote.rs b/app/rust/src/parser/plans/delegator_vote.rs index 7839d1dd..6e40b858 100644 --- a/app/rust/src/parser/plans/delegator_vote.rs +++ b/app/rust/src/parser/plans/delegator_vote.rs @@ -16,17 +16,17 @@ use crate::keys::FullViewingKey; use crate::parser::{ + amount::{Amount, AmountC}, bytes::BytesC, - amount::{AmountC, Amount}, effect_hash::{create_personalized_state, EffectHash}, - note::{NoteC, Note}, + note::{Note, NoteC}, nullifier::Nullifier, value::Value, }; +use crate::utils::protobuf::encode_varint; +use crate::ParserError; use decaf377::Fr; use decaf377_rdsa::{SpendAuth, VerificationKey}; -use crate::ParserError; -use crate::utils::protobuf::encode_varint; pub struct Body { /// The proposal ID the vote is for. @@ -67,7 +67,8 @@ impl DelegatorVotePlanC { pub fn effect_hash(&self, fvk: &FullViewingKey) -> Result { let body = self.delegator_vote_body(fvk)?; - let mut state = create_personalized_state("/penumbra.core.component.governance.v1.DelegatorVoteBody"); + let mut state = + create_personalized_state("/penumbra.core.component.governance.v1.DelegatorVoteBody"); // proposal let mut encoded = [0u8; 10]; @@ -91,7 +92,7 @@ impl DelegatorVotePlanC { len = encode_varint(body.vote as u64, &mut encoded[pos..]); state.update(&encoded[..len + 1]); - // value amount + // value amount state.update(&[0x22]); let (value, value_len) = body.value.to_proto(); state.update(&value[..value_len]); diff --git a/app/rust/src/parser/plans/output.rs b/app/rust/src/parser/plans/output.rs index 67e78e8a..64603718 100644 --- a/app/rust/src/parser/plans/output.rs +++ b/app/rust/src/parser/plans/output.rs @@ -26,7 +26,7 @@ use crate::parser::{ rseed::Rseed, symmetric::PayloadKey, symmetric::{OvkWrappedKey, WrappedMemoKey}, - value::{Sign, Value, ValueC, Balance, Imbalance}, + value::{Balance, Imbalance, Sign, Value, ValueC}, }; use crate::ParserError; use decaf377::Fr; @@ -114,7 +114,7 @@ impl OutputPlanC { pub fn balance(&self) -> Result { let mut balance = Balance::new(); - balance.add(Imbalance{ + balance.add(Imbalance { value: Value::try_from(self.value.clone())?, sign: Sign::Required, })?; diff --git a/app/rust/src/parser/plans/spend.rs b/app/rust/src/parser/plans/spend.rs index 7f73f869..e9206dda 100644 --- a/app/rust/src/parser/plans/spend.rs +++ b/app/rust/src/parser/plans/spend.rs @@ -21,7 +21,7 @@ use crate::parser::{ effect_hash::{create_personalized_state, EffectHash}, note::{Note, NoteC}, nullifier::Nullifier, - value::{Sign, Value, Balance, Imbalance}, + value::{Balance, Imbalance, Sign, Value}, }; use crate::ParserError; use decaf377::Fr; @@ -65,9 +65,7 @@ impl SpendPlanC { pub fn spend_body(&self, fvk: &FullViewingKey) -> Result { Ok(Body { - balance_commitment: self - .balance()? - .commit(self.get_value_blinding_fr()?)?, + balance_commitment: self.balance()?.commit(self.get_value_blinding_fr()?)?, nullifier: self.nullifier(fvk)?, rk: self.rk(fvk)?, }) @@ -75,7 +73,7 @@ impl SpendPlanC { pub fn balance(&self) -> Result { let mut balance = Balance::new(); - balance.add(Imbalance{ + balance.add(Imbalance { value: Value::try_from(self.note.value.clone())?, sign: Sign::Provided, })?; diff --git a/app/rust/src/parser/plans/undelegate_claim.rs b/app/rust/src/parser/plans/undelegate_claim.rs index 30db7853..40bfdb7f 100644 --- a/app/rust/src/parser/plans/undelegate_claim.rs +++ b/app/rust/src/parser/plans/undelegate_claim.rs @@ -14,22 +14,22 @@ * limitations under the License. ********************************************************************************/ +use crate::ffi::bech32::bech32_encode; use crate::parser::{ - bytes::BytesC, - identity_key::IdentityKeyC, amount::AmountC, - penalty::{PenaltyC, Penalty}, - effect_hash::{create_personalized_state, EffectHash}, + bytes::BytesC, commitment::Commitment, - value::Balance, - id::Id, + effect_hash::{create_personalized_state, EffectHash}, id::AssetId, + id::Id, + identity_key::IdentityKeyC, + penalty::{Penalty, PenaltyC}, + value::Balance, }; -use decaf377::{Fr, Fq}; +use crate::utils::protobuf::encode_varint; use crate::ParserError; -use crate::ffi::bech32::bech32_encode; +use decaf377::{Fq, Fr}; use itoa::Buffer; -use crate::utils::protobuf::encode_varint; pub struct Body { /// The identity key of the validator to undelegate from. @@ -63,7 +63,8 @@ impl UndelegateClaimPlanC { pub fn effect_hash(&self) -> Result { let body = self.undelegate_claim_body()?; - let mut state = create_personalized_state("/penumbra.core.component.stake.v1.UndelegateClaimBody"); + let mut state = + create_personalized_state("/penumbra.core.component.stake.v1.UndelegateClaimBody"); state.update(&[0x0a, 0x22, 0x0a, 0x20]); // encode header 0a220a20 validator_identity state.update(&body.validator_identity); @@ -84,8 +85,18 @@ impl UndelegateClaimPlanC { } pub fn undelegate_claim_body(&self) -> Result { - let validator_identity: [u8; 32] = self.validator_identity.ik.get_bytes()?.try_into().map_err(|_| ParserError::InvalidLength)?; - let penalty = self.penalty.inner.get_bytes()?.try_into().map_err(|_| ParserError::InvalidLength)?; + let validator_identity: [u8; 32] = self + .validator_identity + .ik + .get_bytes()? + .try_into() + .map_err(|_| ParserError::InvalidLength)?; + let penalty = self + .penalty + .inner + .get_bytes()? + .try_into() + .map_err(|_| ParserError::InvalidLength)?; let balance_commitment = self.balance()?.commit(self.get_balance_blinding_fr()?)?; let body = Body { @@ -110,27 +121,34 @@ impl UndelegateClaimPlanC { pub fn balance(&self) -> Result { let penalty = Penalty::try_from(self.penalty.clone())?; let unbonding_amount = self.unbonding_amount.clone().try_into()?; - penalty - .balance_for_claim(self.unbonding_id()?, unbonding_amount) + penalty.balance_for_claim(self.unbonding_id()?, unbonding_amount) } pub fn unbonding_id(&self) -> Result { let hrp = "penumbravalid"; let mut validator_identity_bytes = [0u8; 72]; - bech32_encode(hrp, self.validator_identity.ik.get_bytes()?, &mut validator_identity_bytes).unwrap(); - + bech32_encode( + hrp, + self.validator_identity.ik.get_bytes()?, + &mut validator_identity_bytes, + ) + .unwrap(); + let mut result = [0u8; 150]; let prefix = b"uunbonding_start_at_"; - + let mut buffer = Buffer::new(); let unbonding_start_height_str = buffer.format(self.unbonding_start_height).as_bytes(); - let id_len = prefix.len() + unbonding_start_height_str.len() + 1 + validator_identity_bytes.len(); - + let id_len = + prefix.len() + unbonding_start_height_str.len() + 1 + validator_identity_bytes.len(); + result[..prefix.len()].copy_from_slice(prefix); - result[prefix.len()..prefix.len() + unbonding_start_height_str.len()].copy_from_slice(unbonding_start_height_str); + result[prefix.len()..prefix.len() + unbonding_start_height_str.len()] + .copy_from_slice(unbonding_start_height_str); result[prefix.len() + unbonding_start_height_str.len()] = b'_'; - result[prefix.len() + unbonding_start_height_str.len() + 1..id_len].copy_from_slice(&validator_identity_bytes); - + result[prefix.len() + unbonding_start_height_str.len() + 1..id_len] + .copy_from_slice(&validator_identity_bytes); + unsafe { let data_slice = std::slice::from_raw_parts(result.as_ptr(), id_len); if let Ok(asset) = AssetId::new(std::str::from_utf8(data_slice).unwrap()) { diff --git a/app/rust/src/parser/value.rs b/app/rust/src/parser/value.rs index dcbf4766..6d7561b8 100644 --- a/app/rust/src/parser/value.rs +++ b/app/rust/src/parser/value.rs @@ -21,8 +21,8 @@ use crate::parser::{ id::{Id, IdC}, ParserError, }; -use decaf377::Fr; use crate::utils::protobuf::encode_varint; +use decaf377::Fr; #[derive(Clone)] #[cfg_attr(any(feature = "derive-debug", test), derive(Debug))] @@ -76,13 +76,13 @@ impl Balance { if !self.has_valid_imbalance() { return Err(ParserError::InvalidLength); } - + let mut commitment = decaf377::Element::IDENTITY; - + for imbalance in self.imbalances.iter().flatten() { let g_v = imbalance.value.asset_id.value_generator(); let amount_fr: Fr = Into::into(imbalance.value.amount); - + if amount_fr.ne(&Fr::ZERO) { match imbalance.sign { Sign::Required => { @@ -94,10 +94,10 @@ impl Balance { } } } - + let value_blinding_generator = Commitment::value_blinding_generator(); commitment += blinding_factor * value_blinding_generator; - + Ok(commitment.into()) } @@ -128,14 +128,14 @@ impl Value { // Calculate the total length of the value let value_len = 1 + value_amount_len + Id::PROTO_LEN; - + // Encode the length as a varint let mut value_len_encoded = [0u8; 10]; let len = encode_varint(value_len as u64, &mut value_len_encoded); // Initialize the proto buffer let mut proto = [0u8; 62]; - + // Copy the encoded length into the proto buffer proto[..len].copy_from_slice(&value_len_encoded[..len]); diff --git a/app/src/known_assets.c b/app/src/known_assets.c index cc6d973e..79f73ab2 100644 --- a/app/src/known_assets.c +++ b/app/src/known_assets.c @@ -24,240 +24,395 @@ static const asset_info_t supported_assets[] = { // Updated asset symbol for penumbra main asset_id {STAKING_TOKEN_ASSET_ID_BYTES, "penumbra", "Penumbra", 6}, {{0x01, 0xD9, 0x53, 0xEB, 0xBA, 0x54, 0x0F, 0x1D, 0x30, 0xB0, 0x81, 0x41, 0x0B, 0x8A, 0x29, 0x6E, - 0xC9, 0x58, 0x10, 0xE9, 0x3A, 0xF9, 0x00, 0xC8, 0xCD, 0x65, 0x1C, 0x56, 0xD4, 0x25, 0x5E, 0x04}, - "transfer/channel-4/ckBTC", "transfer/channel-4/factory/osmo10c4y9csfs8q7mtvfg4p9gd8d0acx0hpc2mte9xqzthd7rd3348tsfhaesm/sICP-icrc-ckBTC", 8}, + 0xC9, 0x58, 0x10, 0xE9, 0x3A, 0xF9, 0x00, 0xC8, 0xCD, 0x65, 0x1C, 0x56, 0xD4, 0x25, 0x5E, 0x04}, + "transfer/channel-4/ckBTC", + "transfer/channel-4/factory/osmo10c4y9csfs8q7mtvfg4p9gd8d0acx0hpc2mte9xqzthd7rd3348tsfhaesm/sICP-icrc-ckBTC", + 8}, {{0x02, 0xBE, 0x8C, 0x84, 0x57, 0x05, 0x93, 0xD4, 0x16, 0x96, 0xD2, 0x76, 0xA2, 0x64, 0x98, 0xDF, - 0x18, 0x17, 0xA5, 0xEC, 0x6D, 0xB9, 0x75, 0xD3, 0xB1, 0x0B, 0x2E, 0x6E, 0x64, 0xB2, 0xEE, 0x09}, - "transfer/channel-4/sail", "transfer/channel-4/factory/osmo1rckme96ptawr4zwexxj5g5gej9s2dmud8r2t9j0k0prn5mch5g4snzzwjv/sail", 6}, + 0x18, 0x17, 0xA5, 0xEC, 0x6D, 0xB9, 0x75, 0xD3, 0xB1, 0x0B, 0x2E, 0x6E, 0x64, 0xB2, 0xEE, 0x09}, + "transfer/channel-4/sail", + "transfer/channel-4/factory/osmo1rckme96ptawr4zwexxj5g5gej9s2dmud8r2t9j0k0prn5mch5g4snzzwjv/sail", + 6}, {{0x04, 0xAF, 0xC7, 0xCF, 0xCD, 0xBA, 0xB3, 0xDE, 0x2D, 0x2A, 0xFE, 0xC0, 0xC5, 0x23, 0xD3, 0x1A, - 0xAA, 0x23, 0x83, 0x34, 0xE7, 0x65, 0x2B, 0x19, 0x8E, 0x95, 0x13, 0x62, 0xEA, 0x64, 0x67, 0x0B}, - "transfer/channel-4/ton", "transfer/channel-4/factory/osmo12lnwf54yd30p6amzaged2atln8k0l32n7ncxf04ctg7u7ymnsy7qkqgsw4/alloyed/allTON", 9}, + 0xAA, 0x23, 0x83, 0x34, 0xE7, 0x65, 0x2B, 0x19, 0x8E, 0x95, 0x13, 0x62, 0xEA, 0x64, 0x67, 0x0B}, + "transfer/channel-4/ton", + "transfer/channel-4/factory/osmo12lnwf54yd30p6amzaged2atln8k0l32n7ncxf04ctg7u7ymnsy7qkqgsw4/alloyed/allTON", + 9}, {{0x07, 0xEF, 0x66, 0x01, 0x32, 0xA4, 0xC3, 0x23, 0x5F, 0xAB, 0x27, 0x2D, 0x43, 0xD9, 0xB9, 0x75, - 0x2A, 0x83, 0x37, 0xB2, 0xD1, 0x08, 0x59, 0x7A, 0xBF, 0xFA, 0xFF, 0x5F, 0x24, 0x6D, 0x0F, 0x0F}, - "transfer/channel-0/atom", "transfer/channel-0/uatom", 6}, + 0x2A, 0x83, 0x37, 0xB2, 0xD1, 0x08, 0x59, 0x7A, 0xBF, 0xFA, 0xFF, 0x5F, 0x24, 0x6D, 0x0F, 0x0F}, + "transfer/channel-0/atom", + "transfer/channel-0/uatom", + 6}, {{0x10, 0xCB, 0x6D, 0x51, 0x3C, 0xE7, 0x5D, 0xA6, 0x6E, 0xD9, 0xDE, 0xDE, 0x70, 0x74, 0xB9, 0x50, - 0x2D, 0x11, 0xBC, 0x9B, 0x01, 0x87, 0xD1, 0x98, 0x73, 0xBF, 0x5A, 0x6F, 0x29, 0xB6, 0x7B, 0x07}, - "transfer/channel-4/sqbtc", "transfer/channel-4/factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqbtc", 6}, + 0x2D, 0x11, 0xBC, 0x9B, 0x01, 0x87, 0xD1, 0x98, 0x73, 0xBF, 0x5A, 0x6F, 0x29, 0xB6, 0x7B, 0x07}, + "transfer/channel-4/sqbtc", + "transfer/channel-4/factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqbtc", + 6}, {{0x1E, 0x23, 0x1F, 0x6E, 0x12, 0xDB, 0x4D, 0x30, 0x0F, 0xD1, 0xB0, 0xC8, 0xD6, 0xCA, 0x70, 0x9A, - 0x46, 0x54, 0x0C, 0x09, 0x7A, 0xE7, 0xC5, 0xFC, 0xFF, 0xC5, 0xA9, 0xB5, 0xEB, 0x61, 0x4F, 0x0C}, - "transfer/channel-4/stibcx", "transfer/channel-4/factory/osmo1xqw2sl9zk8a6pch0csaw78n4swg5ws8t62wc5qta4gnjxfqg6v2qcs243k/stuibcx", 6}, + 0x46, 0x54, 0x0C, 0x09, 0x7A, 0xE7, 0xC5, 0xFC, 0xFF, 0xC5, 0xA9, 0xB5, 0xEB, 0x61, 0x4F, 0x0C}, + "transfer/channel-4/stibcx", + "transfer/channel-4/factory/osmo1xqw2sl9zk8a6pch0csaw78n4swg5ws8t62wc5qta4gnjxfqg6v2qcs243k/stuibcx", + 6}, {{0x1F, 0x1E, 0xBE, 0x1B, 0xBE, 0xC2, 0x53, 0x6D, 0xB2, 0x7C, 0x4C, 0x5F, 0x0F, 0xB5, 0xFC, 0x4C, - 0xED, 0xF5, 0x42, 0x9A, 0x9C, 0x00, 0x16, 0x00, 0x63, 0x35, 0xD2, 0x71, 0xA7, 0x4B, 0x86, 0x05}, - "transfer/channel-4/fGECK", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fGECK", 9}, + 0xED, 0xF5, 0x42, 0x9A, 0x9C, 0x00, 0x16, 0x00, 0x63, 0x35, 0xD2, 0x71, 0xA7, 0x4B, 0x86, 0x05}, + "transfer/channel-4/fGECK", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fGECK", + 9}, {{0x25, 0xF2, 0x5C, 0xDF, 0x9C, 0x60, 0xB5, 0x43, 0xE6, 0x29, 0xF8, 0x9D, 0x0E, 0x38, 0x07, 0x0E, - 0x72, 0x18, 0x43, 0x69, 0x25, 0x9A, 0xEF, 0x31, 0xE0, 0xDF, 0x25, 0x6C, 0xAA, 0xF2, 0x0F, 0x06}, - "transfer/channel-4/CRAZYHORSE", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/crazyhorse", 6}, + 0x72, 0x18, 0x43, 0x69, 0x25, 0x9A, 0xEF, 0x31, 0xE0, 0xDF, 0x25, 0x6C, 0xAA, 0xF2, 0x0F, 0x06}, + "transfer/channel-4/CRAZYHORSE", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/crazyhorse", + 6}, {{0x27, 0x8C, 0x3D, 0xAE, 0x59, 0x38, 0x1F, 0x1E, 0x95, 0xA5, 0x52, 0xC8, 0xFE, 0x4A, 0xAD, 0xC5, - 0xFF, 0x8A, 0x73, 0x11, 0x30, 0xC8, 0x63, 0x64, 0x4E, 0xDC, 0xF1, 0x61, 0x4A, 0x4A, 0xAB, 0x06}, - "transfer/channel-4/sqatom", "transfer/channel-4/factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqatom", 6}, + 0xFF, 0x8A, 0x73, 0x11, 0x30, 0xC8, 0x63, 0x64, 0x4E, 0xDC, 0xF1, 0x61, 0x4A, 0x4A, 0xAB, 0x06}, + "transfer/channel-4/sqatom", + "transfer/channel-4/factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqatom", + 6}, {{0x29, 0x23, 0xA0, 0xA8, 0x7B, 0x3A, 0x24, 0x21, 0xF1, 0x65, 0xCC, 0x85, 0x3D, 0xBF, 0x73, 0xA9, - 0xBD, 0xAF, 0xB5, 0xDA, 0x0D, 0x94, 0x85, 0x64, 0xB6, 0x05, 0x9C, 0xB0, 0x21, 0x7C, 0x44, 0x07}, - "transfer/channel-4/osmo", "transfer/channel-4/uosmo", 6}, + 0xBD, 0xAF, 0xB5, 0xDA, 0x0D, 0x94, 0x85, 0x64, 0xB6, 0x05, 0x9C, 0xB0, 0x21, 0x7C, 0x44, 0x07}, + "transfer/channel-4/osmo", + "transfer/channel-4/uosmo", + 6}, {{0x29, 0x32, 0x7D, 0x89, 0x9F, 0xDE, 0x34, 0xDE, 0x36, 0x57, 0x68, 0x61, 0xCE, 0xCE, 0x8D, 0x96, - 0x06, 0xFC, 0xCF, 0x37, 0x49, 0x9A, 0x50, 0x59, 0x66, 0xF2, 0x9F, 0x09, 0xCE, 0x06, 0x88, 0x0C}, - "transfer/channel-4/BADKID", "transfer/channel-4/factory/osmo10n8rv8npx870l69248hnp6djy6pll2yuzzn9x8/BADKID", 6}, + 0x06, 0xFC, 0xCF, 0x37, 0x49, 0x9A, 0x50, 0x59, 0x66, 0xF2, 0x9F, 0x09, 0xCE, 0x06, 0x88, 0x0C}, + "transfer/channel-4/BADKID", + "transfer/channel-4/factory/osmo10n8rv8npx870l69248hnp6djy6pll2yuzzn9x8/BADKID", + 6}, {{0x2D, 0xD7, 0xB1, 0x09, 0xC2, 0x12, 0xEE, 0x1E, 0x63, 0x6D, 0x28, 0xE2, 0x78, 0xC5, 0x7E, 0x32, - 0x80, 0xB6, 0x20, 0x1D, 0x57, 0x9A, 0xE2, 0xB1, 0xCC, 0xD3, 0x5E, 0x46, 0x0A, 0xB8, 0x40, 0x04}, - "transfer/channel-4/allSOL", "transfer/channel-4/factory/osmo1n3n75av8awcnw4jl62n3l48e6e4sxqmaf97w5ua6ddu4s475q5qq9udvx4/alloyed/allSOL", 9}, + 0x80, 0xB6, 0x20, 0x1D, 0x57, 0x9A, 0xE2, 0xB1, 0xCC, 0xD3, 0x5E, 0x46, 0x0A, 0xB8, 0x40, 0x04}, + "transfer/channel-4/allSOL", + "transfer/channel-4/factory/osmo1n3n75av8awcnw4jl62n3l48e6e4sxqmaf97w5ua6ddu4s475q5qq9udvx4/alloyed/allSOL", + 9}, {{0x30, 0xC0, 0xDB, 0x0B, 0x88, 0xD0, 0xEC, 0x65, 0x0F, 0xEB, 0x21, 0x14, 0xF9, 0x8A, 0x36, 0xC6, - 0x45, 0xBC, 0xE4, 0xBC, 0x91, 0x28, 0x90, 0x12, 0x24, 0xDE, 0x0C, 0x3C, 0x70, 0x0F, 0x9A, 0x11}, - "transfer/channel-4/lvn", "transfer/channel-4/factory/osmo1mlng7pz4pnyxtpq0akfwall37czyk9lukaucsrn30ameplhhshtqdvfm5c/ulvn", 6}, + 0x45, 0xBC, 0xE4, 0xBC, 0x91, 0x28, 0x90, 0x12, 0x24, 0xDE, 0x0C, 0x3C, 0x70, 0x0F, 0x9A, 0x11}, + "transfer/channel-4/lvn", + "transfer/channel-4/factory/osmo1mlng7pz4pnyxtpq0akfwall37czyk9lukaucsrn30ameplhhshtqdvfm5c/ulvn", + 6}, {{0x31, 0xC0, 0x9A, 0x7E, 0x83, 0x5B, 0xEB, 0x49, 0x41, 0xB4, 0xBD, 0x48, 0xEF, 0xB0, 0x03, 0x87, - 0x1D, 0x06, 0x20, 0x8F, 0x44, 0x1C, 0x7F, 0x22, 0x0A, 0xA9, 0xA9, 0x1A, 0xBA, 0x37, 0x3E, 0x09}, - "transfer/channel-4/pepe", "transfer/channel-4/factory/osmo1nnlxegt0scm9qkzys9c874t0ntapv4epfjy2w49c0xdrp3dr0v4ssmelzx/alloyed/allPEPE", 12}, + 0x1D, 0x06, 0x20, 0x8F, 0x44, 0x1C, 0x7F, 0x22, 0x0A, 0xA9, 0xA9, 0x1A, 0xBA, 0x37, 0x3E, 0x09}, + "transfer/channel-4/pepe", + "transfer/channel-4/factory/osmo1nnlxegt0scm9qkzys9c874t0ntapv4epfjy2w49c0xdrp3dr0v4ssmelzx/alloyed/allPEPE", + 12}, {{0x31, 0xDE, 0xB1, 0x5E, 0xE8, 0xE0, 0x93, 0x48, 0xEF, 0x75, 0x43, 0xE1, 0x95, 0xFF, 0xF4, 0xE7, - 0x0B, 0xD3, 0x79, 0x70, 0xC4, 0x87, 0xC5, 0xFF, 0x6C, 0x3B, 0xAB, 0xAD, 0x52, 0x70, 0xDA, 0x05}, - "transfer/channel-4/BVT0", "transfer/channel-4/factory/osmo1xu0gk9aggv79597xwazyfzaggv2pze9z7cq3p9p72tkkux9a7xaqufa792/BVT", 18}, + 0x0B, 0xD3, 0x79, 0x70, 0xC4, 0x87, 0xC5, 0xFF, 0x6C, 0x3B, 0xAB, 0xAD, 0x52, 0x70, 0xDA, 0x05}, + "transfer/channel-4/BVT0", + "transfer/channel-4/factory/osmo1xu0gk9aggv79597xwazyfzaggv2pze9z7cq3p9p72tkkux9a7xaqufa792/BVT", + 18}, {{0x34, 0xE1, 0x12, 0xA7, 0xB2, 0x5D, 0x7C, 0x50, 0x1B, 0xAA, 0x3B, 0xE3, 0x16, 0xA3, 0x00, 0x93, - 0xF9, 0x70, 0x17, 0xE7, 0x88, 0x8A, 0x2F, 0x95, 0x21, 0x4E, 0x59, 0x8C, 0x28, 0xFA, 0xD9, 0x0A}, - "transfer/channel-4/fMAD", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fMAD", 9}, + 0xF9, 0x70, 0x17, 0xE7, 0x88, 0x8A, 0x2F, 0x95, 0x21, 0x4E, 0x59, 0x8C, 0x28, 0xFA, 0xD9, 0x0A}, + "transfer/channel-4/fMAD", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fMAD", + 9}, {{0x37, 0xA7, 0x23, 0x6C, 0x5F, 0xBD, 0xFF, 0x3B, 0x42, 0x9E, 0x61, 0x1B, 0xD3, 0x7E, 0x57, 0x46, - 0x50, 0xC9, 0x0A, 0x0C, 0x70, 0x9B, 0x84, 0x3E, 0x6A, 0x9B, 0xF9, 0x9B, 0xBD, 0xD9, 0x1A, 0x00}, - "transfer/channel-2/stake", "transfer/channel-2/ustake", 6}, + 0x50, 0xC9, 0x0A, 0x0C, 0x70, 0x9B, 0x84, 0x3E, 0x6A, 0x9B, 0xF9, 0x9B, 0xBD, 0xD9, 0x1A, 0x00}, + "transfer/channel-2/stake", + "transfer/channel-2/ustake", + 6}, {{0x39, 0x47, 0x17, 0x1B, 0xB6, 0x04, 0xC7, 0xC6, 0xB9, 0x36, 0x57, 0x7F, 0xC0, 0x23, 0x0A, 0xD5, - 0xA3, 0x8A, 0x01, 0x19, 0x6F, 0xA0, 0x9B, 0x46, 0xA5, 0x71, 0xE4, 0x8E, 0xEE, 0x0B, 0x56, 0x04}, - "transfer/channel-4/WIHA", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/wiha", 6}, + 0xA3, 0x8A, 0x01, 0x19, 0x6F, 0xA0, 0x9B, 0x46, 0xA5, 0x71, 0xE4, 0x8E, 0xEE, 0x0B, 0x56, 0x04}, + "transfer/channel-4/WIHA", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/wiha", + 6}, {{0x3A, 0xB7, 0x38, 0xF2, 0x58, 0x27, 0xDE, 0x7F, 0x9F, 0x3E, 0x02, 0x99, 0x12, 0xFB, 0x22, 0xA1, - 0xAE, 0x4D, 0xCA, 0x8B, 0x13, 0xF1, 0x71, 0x50, 0x74, 0xEA, 0xF5, 0xA3, 0x57, 0xE2, 0xB0, 0x0D}, - "transfer/channel-4/fATLAS", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fATLAS", 9}, + 0xAE, 0x4D, 0xCA, 0x8B, 0x13, 0xF1, 0x71, 0x50, 0x74, 0xEA, 0xF5, 0xA3, 0x57, 0xE2, 0xB0, 0x0D}, + "transfer/channel-4/fATLAS", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fATLAS", + 9}, {{0x3D, 0x3E, 0xAA, 0x2B, 0x2E, 0x0F, 0x8B, 0xB3, 0x69, 0xCD, 0xCB, 0x37, 0x7B, 0x60, 0x54, 0xB6, - 0x15, 0xA2, 0x7B, 0x5E, 0xFD, 0x0B, 0xFA, 0xE9, 0x42, 0xFB, 0x65, 0xAD, 0xC4, 0x90, 0x87, 0x05}, - "transfer/channel-4/fCRYPTONIUM", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fCRYPTONIUM", 9}, + 0x15, 0xA2, 0x7B, 0x5E, 0xFD, 0x0B, 0xFA, 0xE9, 0x42, 0xFB, 0x65, 0xAD, 0xC4, 0x90, 0x87, 0x05}, + "transfer/channel-4/fCRYPTONIUM", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fCRYPTONIUM", + 9}, {{0x3F, 0x1D, 0x41, 0x8C, 0x61, 0x1E, 0x68, 0xFB, 0xE0, 0x48, 0xF6, 0x57, 0xFF, 0xC8, 0x03, 0xC0, - 0x7C, 0x30, 0x9F, 0x60, 0x56, 0x0F, 0xE7, 0xE3, 0x32, 0xB7, 0x6E, 0xE7, 0xF6, 0x61, 0x2E, 0x12}, - "transfer/channel-4/BERNESE", "transfer/channel-4/factory/osmo1s6ht8qrm8x0eg8xag5x3ckx9mse9g4se248yss/BERNESE", 6}, + 0x7C, 0x30, 0x9F, 0x60, 0x56, 0x0F, 0xE7, 0xE3, 0x32, 0xB7, 0x6E, 0xE7, 0xF6, 0x61, 0x2E, 0x12}, + "transfer/channel-4/BERNESE", + "transfer/channel-4/factory/osmo1s6ht8qrm8x0eg8xag5x3ckx9mse9g4se248yss/BERNESE", + 6}, {{0x40, 0x0A, 0xCC, 0x44, 0x8A, 0x72, 0x88, 0xC4, 0xDA, 0xC0, 0xC9, 0x2D, 0x9B, 0x98, 0xF9, 0xDC, - 0x77, 0xCB, 0x34, 0xCA, 0xC8, 0xF1, 0x32, 0x01, 0x43, 0x6C, 0x2A, 0xC8, 0x27, 0xE0, 0xB5, 0x06}, - "transfer/channel-1/dydx", "transfer/channel-1/adydx", 18}, + 0x77, 0xCB, 0x34, 0xCA, 0xC8, 0xF1, 0x32, 0x01, 0x43, 0x6C, 0x2A, 0xC8, 0x27, 0xE0, 0xB5, 0x06}, + "transfer/channel-1/dydx", + "transfer/channel-1/adydx", + 18}, {{0x41, 0x4E, 0x72, 0x3F, 0x74, 0xBD, 0x98, 0x7C, 0x02, 0xCC, 0xBC, 0x99, 0x75, 0x85, 0xED, 0x52, - 0xB1, 0x96, 0xE2, 0xFF, 0xE7, 0x5B, 0x37, 0x93, 0xAA, 0x68, 0xCC, 0x29, 0x96, 0x62, 0x69, 0x10}, - "transfer/channel-4/allBTC", "transfer/channel-4/factory/osmo1z6r6qdknhgsc0zeracktgpcxf43j6sekq07nw8sxduc9lg0qjjlqfu25e3/alloyed/allBTC", 8}, + 0xB1, 0x96, 0xE2, 0xFF, 0xE7, 0x5B, 0x37, 0x93, 0xAA, 0x68, 0xCC, 0x29, 0x96, 0x62, 0x69, 0x10}, + "transfer/channel-4/allBTC", + "transfer/channel-4/factory/osmo1z6r6qdknhgsc0zeracktgpcxf43j6sekq07nw8sxduc9lg0qjjlqfu25e3/alloyed/allBTC", + 8}, {{0x46, 0xF8, 0x79, 0xE4, 0x52, 0x6B, 0x77, 0xCA, 0xB7, 0x91, 0x3F, 0x31, 0x60, 0x89, 0x79, 0x02, - 0x94, 0xCE, 0x73, 0xD1, 0x2B, 0xC7, 0x22, 0xFC, 0x9B, 0x53, 0x52, 0xE5, 0x10, 0x2B, 0x1F, 0x11}, - "transfer/channel-4/op", "transfer/channel-4/factory/osmo1nufyzqlm8qhu2w7lm0l4rrax0ec8rsk69mga4tel8eare7c7ljaqpk2lyg/alloyed/allOP", 12}, + 0x94, 0xCE, 0x73, 0xD1, 0x2B, 0xC7, 0x22, 0xFC, 0x9B, 0x53, 0x52, 0xE5, 0x10, 0x2B, 0x1F, 0x11}, + "transfer/channel-4/op", + "transfer/channel-4/factory/osmo1nufyzqlm8qhu2w7lm0l4rrax0ec8rsk69mga4tel8eare7c7ljaqpk2lyg/alloyed/allOP", + 12}, {{0x48, 0x16, 0x0D, 0x2C, 0xC5, 0x2C, 0x09, 0x04, 0x09, 0x69, 0x96, 0x58, 0x5D, 0xBA, 0xC3, 0x1C, - 0x3E, 0x6E, 0xFE, 0xAE, 0xAB, 0x76, 0x8E, 0xAC, 0x51, 0x12, 0xB2, 0x06, 0x51, 0x8C, 0xB7, 0x11}, - "transfer/channel-4/dot", "transfer/channel-4/factory/osmo1r53fx9fvcdzncrs7zkn4gw5vfelx5gk8k5wc6wqha2jpkh992rusr5tk02/alloyed/allDOT", 10}, + 0x3E, 0x6E, 0xFE, 0xAE, 0xAB, 0x76, 0x8E, 0xAC, 0x51, 0x12, 0xB2, 0x06, 0x51, 0x8C, 0xB7, 0x11}, + "transfer/channel-4/dot", + "transfer/channel-4/factory/osmo1r53fx9fvcdzncrs7zkn4gw5vfelx5gk8k5wc6wqha2jpkh992rusr5tk02/alloyed/allDOT", + 10}, {{0x48, 0x28, 0x4D, 0x9F, 0x36, 0xBD, 0xA8, 0x34, 0x0C, 0x34, 0x6A, 0xB0, 0x4A, 0x84, 0x0C, 0xCC, - 0x1D, 0xB1, 0xD8, 0xCE, 0x67, 0x98, 0x40, 0x6D, 0x49, 0x3D, 0x44, 0xA1, 0x2C, 0xB6, 0xF6, 0x03}, - "transfer/channel-4/allUNI", "transfer/channel-4/factory/osmo1eqjda4pc6e09jtxzxggf6jl3jye2yn453ja58we5gxwzmf5ah28qvlnaz8/alloyed/allUNI", 12}, + 0x1D, 0xB1, 0xD8, 0xCE, 0x67, 0x98, 0x40, 0x6D, 0x49, 0x3D, 0x44, 0xA1, 0x2C, 0xB6, 0xF6, 0x03}, + "transfer/channel-4/allUNI", + "transfer/channel-4/factory/osmo1eqjda4pc6e09jtxzxggf6jl3jye2yn453ja58we5gxwzmf5ah28qvlnaz8/alloyed/allUNI", + 12}, {{0x4C, 0xD1, 0xF0, 0xFF, 0xEE, 0x4F, 0x3C, 0xDD, 0x01, 0x0B, 0x65, 0x35, 0x43, 0xCD, 0x02, 0x9E, - 0x1A, 0x22, 0x2B, 0x1D, 0xC6, 0x23, 0xC8, 0xAF, 0x99, 0xBD, 0x8E, 0x1B, 0xA9, 0xB9, 0xC8, 0x02}, - "transfer/channel-4/trx", "transfer/channel-4/factory/osmo1myv2g72h8dan7n4hx7stt3mmust6ws03zh6gxc7vz4hpmgp5z3lq9aunm9/TRX.rt", 6}, + 0x1A, 0x22, 0x2B, 0x1D, 0xC6, 0x23, 0xC8, 0xAF, 0x99, 0xBD, 0x8E, 0x1B, 0xA9, 0xB9, 0xC8, 0x02}, + "transfer/channel-4/trx", + "transfer/channel-4/factory/osmo1myv2g72h8dan7n4hx7stt3mmust6ws03zh6gxc7vz4hpmgp5z3lq9aunm9/TRX.rt", + 6}, {{0x51, 0x61, 0x08, 0xD0, 0xD0, 0xBB, 0xA3, 0xF7, 0x6E, 0x1F, 0x98, 0x2D, 0x0A, 0x7C, 0xDE, 0x11, - 0x88, 0x33, 0x30, 0x7B, 0x03, 0xC0, 0xCD, 0x4C, 0xCB, 0x94, 0xE8, 0x82, 0xB5, 0x3C, 0x1F, 0x0F}, - "transfer/channel-4/wbtc", "transfer/channel-4/factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc", 8}, + 0x88, 0x33, 0x30, 0x7B, 0x03, 0xC0, 0xCD, 0x4C, 0xCB, 0x94, 0xE8, 0x82, 0xB5, 0x3C, 0x1F, 0x0F}, + "transfer/channel-4/wbtc", + "transfer/channel-4/factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc", + 8}, {{0x53, 0x14, 0xB3, 0x3E, 0xEC, 0xFD, 0x5C, 0xA2, 0xE9, 0x9C, 0x0B, 0x6D, 0x1E, 0x0C, 0xCA, 0xFE, - 0x3D, 0x2D, 0xD5, 0x81, 0xC9, 0x52, 0xD8, 0x14, 0xFB, 0x64, 0xFD, 0xF5, 0x1F, 0x85, 0xC4, 0x11}, - "transfer/channel-3/tia", "transfer/channel-3/utia", 6}, + 0x3D, 0x2D, 0xD5, 0x81, 0xC9, 0x52, 0xD8, 0x14, 0xFB, 0x64, 0xFD, 0xF5, 0x1F, 0x85, 0xC4, 0x11}, + "transfer/channel-3/tia", + "transfer/channel-3/utia", + 6}, {{0x53, 0x75, 0x34, 0x3F, 0xE7, 0xD5, 0xD9, 0x4E, 0x44, 0xA9, 0x4D, 0x3E, 0x92, 0x0A, 0xBB, 0xA9, - 0xDF, 0xAC, 0x8C, 0x26, 0xD5, 0x84, 0x67, 0x81, 0xE8, 0x5F, 0x22, 0xC7, 0x8D, 0xB5, 0x58, 0x07}, - "transfer/channel-4/factory/osmo13gu58hzw3e9aqpj25h67m7snwcjuccd7v4p55w/brnz", "transfer/channel-4/factory/osmo13gu58hzw3e9aqpj25h67m7snwcjuccd7v4p55w/brnz", 0}, + 0xDF, 0xAC, 0x8C, 0x26, 0xD5, 0x84, 0x67, 0x81, 0xE8, 0x5F, 0x22, 0xC7, 0x8D, 0xB5, 0x58, 0x07}, + "transfer/channel-4/factory/osmo13gu58hzw3e9aqpj25h67m7snwcjuccd7v4p55w/brnz", + "transfer/channel-4/factory/osmo13gu58hzw3e9aqpj25h67m7snwcjuccd7v4p55w/brnz", + 0}, {{0x54, 0x31, 0x18, 0x55, 0x46, 0x7C, 0x64, 0xA9, 0x61, 0xB0, 0x04, 0xF6, 0x9E, 0xBE, 0x8D, 0x81, - 0xD3, 0x5D, 0x8B, 0xB8, 0xD1, 0x12, 0xC2, 0xA6, 0x15, 0x45, 0x74, 0x53, 0x9B, 0x94, 0xC7, 0x05}, - "transfer/channel-4/IBC", "transfer/channel-4/factory/osmo1kqdw6pvn0xww6tyfv2sqvkkencdz0qw406x54r/IBC", 6}, + 0xD3, 0x5D, 0x8B, 0xB8, 0xD1, 0x12, 0xC2, 0xA6, 0x15, 0x45, 0x74, 0x53, 0x9B, 0x94, 0xC7, 0x05}, + "transfer/channel-4/IBC", + "transfer/channel-4/factory/osmo1kqdw6pvn0xww6tyfv2sqvkkencdz0qw406x54r/IBC", + 6}, {{0x57, 0x9E, 0xF6, 0x6D, 0x5F, 0x72, 0x88, 0xAF, 0x67, 0x25, 0x63, 0x0C, 0xF7, 0xF3, 0xF9, 0x9B, - 0x00, 0x9E, 0x88, 0x67, 0xD3, 0xE0, 0x96, 0xCC, 0xCB, 0xA8, 0xF6, 0x45, 0x48, 0xBD, 0xDE, 0x0E}, - "transfer/channel-4/fBAD", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fBAD", 9}, + 0x00, 0x9E, 0x88, 0x67, 0xD3, 0xE0, 0x96, 0xCC, 0xCB, 0xA8, 0xF6, 0x45, 0x48, 0xBD, 0xDE, 0x0E}, + "transfer/channel-4/fBAD", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fBAD", + 9}, {{0x59, 0xD1, 0xDE, 0x1C, 0x39, 0xA4, 0x95, 0x62, 0xB1, 0x15, 0xFD, 0x20, 0xF3, 0xA3, 0x22, 0x63, - 0x2E, 0x8C, 0xB7, 0xA9, 0x54, 0x43, 0x36, 0xB9, 0x83, 0xE3, 0x5F, 0x36, 0xE2, 0xB6, 0xA0, 0x01}, - "transfer/channel-4/cdt", "transfer/channel-4/factory/osmo1s794h9rxggytja3a4pmwul53u98k06zy2qtrdvjnfuxruh7s8yjs6cyxgd/ucdt", 6}, + 0x2E, 0x8C, 0xB7, 0xA9, 0x54, 0x43, 0x36, 0xB9, 0x83, 0xE3, 0x5F, 0x36, 0xE2, 0xB6, 0xA0, 0x01}, + "transfer/channel-4/cdt", + "transfer/channel-4/factory/osmo1s794h9rxggytja3a4pmwul53u98k06zy2qtrdvjnfuxruh7s8yjs6cyxgd/ucdt", + 6}, {{0x64, 0x07, 0xF4, 0xBF, 0x07, 0xD0, 0x74, 0xC8, 0xCB, 0xC8, 0x91, 0xFA, 0x38, 0x84, 0x2B, 0xB7, - 0xAB, 0x76, 0xCB, 0xA5, 0x54, 0xDF, 0xBA, 0xF3, 0x5C, 0x19, 0xBC, 0x5D, 0xE1, 0x7A, 0x75, 0x06}, - "transfer/channel-4/ibcx", "transfer/channel-4/factory/osmo14klwqgkmackvx2tqa0trtg69dmy0nrg4ntq4gjgw2za4734r5seqjqm4gm/uibcx", 6}, + 0xAB, 0x76, 0xCB, 0xA5, 0x54, 0xDF, 0xBA, 0xF3, 0x5C, 0x19, 0xBC, 0x5D, 0xE1, 0x7A, 0x75, 0x06}, + "transfer/channel-4/ibcx", + "transfer/channel-4/factory/osmo14klwqgkmackvx2tqa0trtg69dmy0nrg4ntq4gjgw2za4734r5seqjqm4gm/uibcx", + 6}, {{0x64, 0xCB, 0xF3, 0x35, 0xED, 0x28, 0x6A, 0x84, 0x63, 0x84, 0x12, 0x0F, 0x7F, 0x42, 0xA0, 0x50, - 0x61, 0xF4, 0x11, 0x56, 0x84, 0xE9, 0xD7, 0xAB, 0xE4, 0x56, 0xAF, 0x44, 0xD7, 0xCC, 0x6E, 0x04}, - "transfer/channel-4/fNUT", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fNUT", 9}, + 0x61, 0xF4, 0x11, 0x56, 0x84, 0xE9, 0xD7, 0xAB, 0xE4, 0x56, 0xAF, 0x44, 0xD7, 0xCC, 0x6E, 0x04}, + "transfer/channel-4/fNUT", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fNUT", + 9}, {{0x66, 0x92, 0x1B, 0xC4, 0x5C, 0x2F, 0x95, 0x4E, 0x2E, 0x76, 0x1F, 0x66, 0xBA, 0xD1, 0xBF, 0xDA, - 0x12, 0xC1, 0x22, 0x97, 0x4D, 0x5E, 0x16, 0xAD, 0xDD, 0x30, 0x91, 0x6E, 0xCD, 0x64, 0x6E, 0x02}, - "transfer/channel-4/rbtc", "transfer/channel-4/factory/osmo1myv2g72h8dan7n4hx7stt3mmust6ws03zh6gxc7vz4hpmgp5z3lq9aunm9/BTC.rt", 18}, + 0x12, 0xC1, 0x22, 0x97, 0x4D, 0x5E, 0x16, 0xAD, 0xDD, 0x30, 0x91, 0x6E, 0xCD, 0x64, 0x6E, 0x02}, + "transfer/channel-4/rbtc", + "transfer/channel-4/factory/osmo1myv2g72h8dan7n4hx7stt3mmust6ws03zh6gxc7vz4hpmgp5z3lq9aunm9/BTC.rt", + 18}, {{0x76, 0xB3, 0xE4, 0xB1, 0x06, 0x81, 0x35, 0x8C, 0x12, 0x3B, 0x38, 0x1F, 0x90, 0x63, 0x84, 0x76, - 0xB7, 0x78, 0x90, 0x40, 0xE4, 0x78, 0x02, 0xDE, 0x87, 0x9F, 0x0F, 0xB3, 0xEE, 0xDC, 0x8D, 0x0B}, - "transfer/channel-2/usdc", "transfer/channel-2/uusdc", 6}, + 0xB7, 0x78, 0x90, 0x40, 0xE4, 0x78, 0x02, 0xDE, 0x87, 0x9F, 0x0F, 0xB3, 0xEE, 0xDC, 0x8D, 0x0B}, + "transfer/channel-2/usdc", + "transfer/channel-2/uusdc", + 6}, {{0x77, 0x6F, 0xF2, 0x05, 0xD8, 0xE4, 0xCF, 0xFF, 0xE1, 0xB6, 0xB4, 0x30, 0x1D, 0x85, 0xD5, 0xC7, - 0x75, 0xCD, 0xD9, 0x02, 0x0B, 0x75, 0x9A, 0x12, 0xE6, 0x27, 0x24, 0x0C, 0x07, 0x11, 0x5A, 0x0B}, - "transfer/channel-4/bwh", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/bwh", 6}, + 0x75, 0xCD, 0xD9, 0x02, 0x0B, 0x75, 0x9A, 0x12, 0xE6, 0x27, 0x24, 0x0C, 0x07, 0x11, 0x5A, 0x0B}, + "transfer/channel-4/bwh", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/bwh", + 6}, {{0x7D, 0xE5, 0x4F, 0xEE, 0x9B, 0x2D, 0xEE, 0xF8, 0x0F, 0x86, 0x8C, 0x4B, 0x2E, 0x26, 0x2D, 0x34, - 0x71, 0x70, 0x52, 0x9A, 0xEC, 0xB0, 0xB4, 0x7C, 0x35, 0xF9, 0xFB, 0xC1, 0x45, 0x36, 0x5B, 0x00}, - "transfer/channel-4/sqtia", "transfer/channel-4/factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqtia", 6}, + 0x71, 0x70, 0x52, 0x9A, 0xEC, 0xB0, 0xB4, 0x7C, 0x35, 0xF9, 0xFB, 0xC1, 0x45, 0x36, 0x5B, 0x00}, + "transfer/channel-4/sqtia", + "transfer/channel-4/factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/sqtia", + 6}, {{0x7F, 0xF2, 0x00, 0x37, 0x4E, 0xB9, 0x3A, 0xEE, 0x97, 0xC1, 0x87, 0x56, 0x7B, 0x79, 0xB7, 0x4A, - 0x08, 0x8B, 0x14, 0x36, 0x0E, 0x01, 0x8E, 0x3B, 0xBE, 0x98, 0x6B, 0xF7, 0x2F, 0x9B, 0xA3, 0x04}, - "transfer/channel-4/fWIZ", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fWIZ", 9}, + 0x08, 0x8B, 0x14, 0x36, 0x0E, 0x01, 0x8E, 0x3B, 0xBE, 0x98, 0x6B, 0xF7, 0x2F, 0x9B, 0xA3, 0x04}, + "transfer/channel-4/fWIZ", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fWIZ", + 9}, {{0x80, 0xEE, 0x2A, 0x47, 0xB9, 0x98, 0x6A, 0xB0, 0xB8, 0x00, 0x03, 0xC2, 0x72, 0x4E, 0xD7, 0x1E, - 0x1B, 0xA3, 0x34, 0x15, 0x16, 0x1A, 0xC6, 0xB1, 0x45, 0x6E, 0x94, 0xDC, 0x99, 0x2B, 0x4A, 0x03}, - "transfer/channel-4/RAPTR", "transfer/channel-4/factory/osmo1279xudevmf5cw83vkhglct7jededp86k90k2le/RAPTR", 6}, + 0x1B, 0xA3, 0x34, 0x15, 0x16, 0x1A, 0xC6, 0xB1, 0x45, 0x6E, 0x94, 0xDC, 0x99, 0x2B, 0x4A, 0x03}, + "transfer/channel-4/RAPTR", + "transfer/channel-4/factory/osmo1279xudevmf5cw83vkhglct7jededp86k90k2le/RAPTR", + 6}, {{0x83, 0x89, 0xA8, 0xA7, 0xCE, 0x12, 0x05, 0xE2, 0xCE, 0x7E, 0x38, 0x87, 0x34, 0x4A, 0x67, 0x30, - 0xA5, 0x29, 0x3F, 0x64, 0x98, 0xEC, 0x10, 0x28, 0x09, 0x77, 0xC2, 0xC5, 0x8E, 0xF0, 0xB2, 0x02}, - "transfer/channel-2/eure", "transfer/channel-2/ueure", 6}, + 0xA5, 0x29, 0x3F, 0x64, 0x98, 0xEC, 0x10, 0x28, 0x09, 0x77, 0xC2, 0xC5, 0x8E, 0xF0, 0xB2, 0x02}, + "transfer/channel-2/eure", + "transfer/channel-2/ueure", + 6}, {{0x84, 0xE9, 0xCC, 0xA9, 0x06, 0xE9, 0x7B, 0x90, 0x1B, 0x7B, 0xBB, 0xEF, 0x7C, 0x76, 0x1D, 0x6B, - 0xBE, 0xDF, 0x83, 0x76, 0x62, 0xB7, 0xCF, 0x1F, 0x6A, 0xDA, 0x83, 0x7C, 0xF3, 0xB5, 0x6E, 0x04}, - "transfer/channel-4/shib", "transfer/channel-4/factory/osmo1f588gk9dazpsueevdl2w6wfkmfmhg5gdvg2uerdlzl0atkasqhsq59qc6a/alloyed/allSHIB", 12}, + 0xBE, 0xDF, 0x83, 0x76, 0x62, 0xB7, 0xCF, 0x1F, 0x6A, 0xDA, 0x83, 0x7C, 0xF3, 0xB5, 0x6E, 0x04}, + "transfer/channel-4/shib", + "transfer/channel-4/factory/osmo1f588gk9dazpsueevdl2w6wfkmfmhg5gdvg2uerdlzl0atkasqhsq59qc6a/alloyed/allSHIB", + 12}, {{0x87, 0x87, 0x3E, 0x38, 0x01, 0xA8, 0x9C, 0x65, 0x51, 0x10, 0x2F, 0x59, 0x69, 0x8C, 0xCB, 0x6E, - 0xBA, 0x67, 0x4A, 0x45, 0x29, 0x97, 0x42, 0x61, 0x1E, 0xA1, 0xF0, 0x06, 0x88, 0x1E, 0x5F, 0x0D}, - "transfer/channel-4/link", "transfer/channel-4/factory/osmo18zdw5yvs6gfp95rp74qqwug9yduw2fyr8kplk2xgs726s9axc5usa2vpgw/alloyed/allLINK", 12}, + 0xBA, 0x67, 0x4A, 0x45, 0x29, 0x97, 0x42, 0x61, 0x1E, 0xA1, 0xF0, 0x06, 0x88, 0x1E, 0x5F, 0x0D}, + "transfer/channel-4/link", + "transfer/channel-4/factory/osmo18zdw5yvs6gfp95rp74qqwug9yduw2fyr8kplk2xgs726s9axc5usa2vpgw/alloyed/allLINK", + 12}, {{0x88, 0x8F, 0x35, 0x3B, 0x9F, 0x36, 0xD6, 0x3A, 0x81, 0x22, 0xEE, 0x05, 0xD5, 0x2D, 0x84, 0xE3, - 0xEF, 0x94, 0x97, 0x37, 0x2F, 0x2B, 0xEC, 0x88, 0xF1, 0xC2, 0xC4, 0x29, 0x92, 0x02, 0x80, 0x0B}, - "transfer/channel-4/ampOSMO", "transfer/channel-4/factory/osmo1dv8wz09tckslr2wy5z86r46dxvegylhpt97r9yd6qc3kyc6tv42qa89dr9/ampOSMO", 6}, + 0xEF, 0x94, 0x97, 0x37, 0x2F, 0x2B, 0xEC, 0x88, 0xF1, 0xC2, 0xC4, 0x29, 0x92, 0x02, 0x80, 0x0B}, + "transfer/channel-4/ampOSMO", + "transfer/channel-4/factory/osmo1dv8wz09tckslr2wy5z86r46dxvegylhpt97r9yd6qc3kyc6tv42qa89dr9/ampOSMO", + 6}, {{0x8A, 0x71, 0x32, 0xE5, 0x73, 0x50, 0x04, 0xFE, 0x6E, 0xEE, 0x8C, 0xFB, 0x79, 0x47, 0x11, 0x2E, - 0x1B, 0xAE, 0x05, 0x68, 0x82, 0xD4, 0x54, 0xE7, 0x24, 0x47, 0xC1, 0x85, 0x72, 0x17, 0xEC, 0x0F}, - "transfer/channel-4/bOSMO", "transfer/channel-4/factory/osmo1s3l0lcqc7tu0vpj6wdjz9wqpxv8nk6eraevje4fuwkyjnwuy82qsx3lduv/boneOsmo", 6}, + 0x1B, 0xAE, 0x05, 0x68, 0x82, 0xD4, 0x54, 0xE7, 0x24, 0x47, 0xC1, 0x85, 0x72, 0x17, 0xEC, 0x0F}, + "transfer/channel-4/bOSMO", + "transfer/channel-4/factory/osmo1s3l0lcqc7tu0vpj6wdjz9wqpxv8nk6eraevje4fuwkyjnwuy82qsx3lduv/boneOsmo", + 6}, {{0x93, 0x67, 0xE5, 0x46, 0xE2, 0x30, 0x8B, 0xC2, 0x00, 0xBF, 0x20, 0xDA, 0xB0, 0x02, 0xFF, 0xF5, - 0xF8, 0xE5, 0xF2, 0x61, 0xA9, 0x3C, 0x23, 0xC2, 0x32, 0x16, 0x26, 0xB2, 0x1F, 0x00, 0x95, 0x04}, - "transfer/channel-4/CosmoUSD", "transfer/channel-4/factory/osmo104jtrwcljnxfljhml8mxrw7qetcsdmqvy3sprw/ucosmousd", 6}, + 0xF8, 0xE5, 0xF2, 0x61, 0xA9, 0x3C, 0x23, 0xC2, 0x32, 0x16, 0x26, 0xB2, 0x1F, 0x00, 0x95, 0x04}, + "transfer/channel-4/CosmoUSD", + "transfer/channel-4/factory/osmo104jtrwcljnxfljhml8mxrw7qetcsdmqvy3sprw/ucosmousd", + 6}, {{0x95, 0xA4, 0xEA, 0x9A, 0xA5, 0x74, 0xAF, 0x73, 0xC4, 0x44, 0x71, 0x11, 0x90, 0xF4, 0xB2, 0x36, - 0xEE, 0xDD, 0xEB, 0xDE, 0xC5, 0xE0, 0x2F, 0x26, 0xBA, 0x92, 0xB2, 0x7E, 0xC2, 0xA7, 0x8C, 0x0A}, - "transfer/channel-4/AVAIL", "transfer/channel-4/factory/osmo1myv2g72h8dan7n4hx7stt3mmust6ws03zh6gxc7vz4hpmgp5z3lq9aunm9/AVAIL.rt", 18}, + 0xEE, 0xDD, 0xEB, 0xDE, 0xC5, 0xE0, 0x2F, 0x26, 0xBA, 0x92, 0xB2, 0x7E, 0xC2, 0xA7, 0x8C, 0x0A}, + "transfer/channel-4/AVAIL", + "transfer/channel-4/factory/osmo1myv2g72h8dan7n4hx7stt3mmust6ws03zh6gxc7vz4hpmgp5z3lq9aunm9/AVAIL.rt", + 18}, {{0x9F, 0x76, 0xDA, 0x75, 0x91, 0x99, 0xFF, 0x2E, 0x6C, 0x03, 0x28, 0xB7, 0xB6, 0x76, 0x18, 0x56, - 0xE2, 0x57, 0xFA, 0xCA, 0xAE, 0xCE, 0x27, 0x36, 0x18, 0xE5, 0x55, 0xF4, 0x5A, 0xF5, 0x6C, 0x10}, - "transfer/channel-4/fBULLS", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fBULLS", 9}, + 0xE2, 0x57, 0xFA, 0xCA, 0xAE, 0xCE, 0x27, 0x36, 0x18, 0xE5, 0x55, 0xF4, 0x5A, 0xF5, 0x6C, 0x10}, + "transfer/channel-4/fBULLS", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fBULLS", + 9}, {{0xA5, 0xF8, 0x6E, 0x48, 0x0A, 0xDF, 0xC1, 0x80, 0x91, 0xA5, 0x12, 0x3E, 0x3D, 0x8D, 0xDB, 0x33, - 0x7C, 0x16, 0xA6, 0x62, 0x9D, 0x82, 0xA6, 0x65, 0x9B, 0x1A, 0xEA, 0x08, 0xF8, 0x6B, 0x5E, 0x10}, - "transfer/channel-2/frienzies", "transfer/channel-2/ufrienzies", 6}, + 0x7C, 0x16, 0xA6, 0x62, 0x9D, 0x82, 0xA6, 0x65, 0x9B, 0x1A, 0xEA, 0x08, 0xF8, 0x6B, 0x5E, 0x10}, + "transfer/channel-2/frienzies", + "transfer/channel-2/ufrienzies", + 6}, {{0xA7, 0xA3, 0x39, 0xF4, 0x2E, 0x67, 0x1B, 0x2D, 0xB1, 0xDE, 0x22, 0x6D, 0x44, 0x83, 0xD3, 0xE6, - 0x30, 0x36, 0x66, 0x1C, 0xAD, 0x15, 0x54, 0xD7, 0x5F, 0x5F, 0x76, 0xFE, 0x04, 0xEC, 0x1E, 0x00}, - "transfer/channel-4/SHITMOS", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/shitmos", 6}, + 0x30, 0x36, 0x66, 0x1C, 0xAD, 0x15, 0x54, 0xD7, 0x5F, 0x5F, 0x76, 0xFE, 0x04, 0xEC, 0x1E, 0x00}, + "transfer/channel-4/SHITMOS", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/shitmos", + 6}, {{0xA9, 0x36, 0x9D, 0xA3, 0x22, 0xFA, 0x30, 0x94, 0x3D, 0xF6, 0xD9, 0x57, 0x8E, 0x6C, 0x23, 0x71, - 0xCB, 0xB2, 0xB5, 0x2C, 0x52, 0x34, 0x1C, 0x8C, 0x2E, 0x95, 0x73, 0x66, 0xD5, 0x5A, 0xAD, 0x0C}, - "transfer/channel-4/mbrn", "transfer/channel-4/factory/osmo1s794h9rxggytja3a4pmwul53u98k06zy2qtrdvjnfuxruh7s8yjs6cyxgd/umbrn", 6}, + 0xCB, 0xB2, 0xB5, 0x2C, 0x52, 0x34, 0x1C, 0x8C, 0x2E, 0x95, 0x73, 0x66, 0xD5, 0x5A, 0xAD, 0x0C}, + "transfer/channel-4/mbrn", + "transfer/channel-4/factory/osmo1s794h9rxggytja3a4pmwul53u98k06zy2qtrdvjnfuxruh7s8yjs6cyxgd/umbrn", + 6}, {{0xAB, 0xE4, 0x1D, 0xB0, 0x1D, 0x23, 0xE8, 0x66, 0x39, 0x65, 0xC8, 0x32, 0xB1, 0x82, 0x58, 0x59, - 0xF8, 0x0E, 0x7C, 0x4C, 0xD4, 0x27, 0x69, 0x49, 0x5D, 0x77, 0xFB, 0x80, 0x38, 0xB0, 0xD0, 0x00}, - "transfer/channel-4/fWITCH", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fWITCH", 9}, + 0xF8, 0x0E, 0x7C, 0x4C, 0xD4, 0x27, 0x69, 0x49, 0x5D, 0x77, 0xFB, 0x80, 0x38, 0xB0, 0xD0, 0x00}, + "transfer/channel-4/fWITCH", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fWITCH", + 9}, {{0xAC, 0xD3, 0x6C, 0xBC, 0x48, 0xF5, 0x2C, 0x18, 0x5E, 0x04, 0x9D, 0xD1, 0xE2, 0xB2, 0x60, 0xFA, - 0x09, 0x86, 0xE9, 0x85, 0xD5, 0x18, 0x0E, 0xB1, 0x98, 0x70, 0x85, 0x57, 0x2D, 0x02, 0x3E, 0x03}, - "transfer/channel-4/loopedUSDCmars", "transfer/channel-4/factory/osmo1vf6e300hv2qe7r5rln8deft45ewgyytjnwfrdfcv5rgzrfy0s6cswjqf9r/mars-usdc-looped", 6}, + 0x09, 0x86, 0xE9, 0x85, 0xD5, 0x18, 0x0E, 0xB1, 0x98, 0x70, 0x85, 0x57, 0x2D, 0x02, 0x3E, 0x03}, + "transfer/channel-4/loopedUSDCmars", + "transfer/channel-4/factory/osmo1vf6e300hv2qe7r5rln8deft45ewgyytjnwfrdfcv5rgzrfy0s6cswjqf9r/mars-usdc-looped", + 6}, {{0xAE, 0xF3, 0xF2, 0xE5, 0xAC, 0xC6, 0xAE, 0xFC, 0x53, 0x2B, 0x47, 0x73, 0x9A, 0x22, 0xD6, 0x01, - 0xFC, 0xEC, 0x1A, 0xB9, 0x6A, 0x57, 0xD5, 0x8C, 0xEF, 0x07, 0xC7, 0x42, 0x13, 0xC9, 0x89, 0x01}, - "transfer/channel-4/TURD", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/turd", 6}, + 0xFC, 0xEC, 0x1A, 0xB9, 0x6A, 0x57, 0xD5, 0x8C, 0xEF, 0x07, 0xC7, 0x42, 0x13, 0xC9, 0x89, 0x01}, + "transfer/channel-4/TURD", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/turd", + 6}, {{0xB5, 0xAB, 0xC9, 0xFD, 0x30, 0x0A, 0xC2, 0xCD, 0x0C, 0xFC, 0xC8, 0x2E, 0x79, 0xFF, 0x30, 0xC7, - 0x1D, 0x2B, 0xA9, 0x94, 0x2D, 0x2A, 0x30, 0x05, 0x4C, 0x0F, 0x2F, 0x33, 0x8D, 0x7E, 0x4A, 0x07}, - "transfer/channel-4/toro", "transfer/channel-4/factory/osmo1nr8zfakf6jauye3uqa9lrmr5xumee5n42lv92z/toro", 6}, + 0x1D, 0x2B, 0xA9, 0x94, 0x2D, 0x2A, 0x30, 0x05, 0x4C, 0x0F, 0x2F, 0x33, 0x8D, 0x7E, 0x4A, 0x07}, + "transfer/channel-4/toro", + "transfer/channel-4/factory/osmo1nr8zfakf6jauye3uqa9lrmr5xumee5n42lv92z/toro", + 6}, {{0xB5, 0xC8, 0xC5, 0x78, 0x7B, 0x74, 0x87, 0xDD, 0xDD, 0xC7, 0x98, 0x84, 0xAA, 0xAD, 0xA2, 0x47, - 0xE5, 0x8A, 0xBB, 0x1B, 0x67, 0xEE, 0x7C, 0x54, 0xA4, 0x01, 0x0E, 0xAC, 0xF9, 0xBE, 0xDB, 0x06}, - "transfer/channel-4/ashLAB", "transfer/channel-4/factory/osmo1svj5kd8kzj7xxtrd6ftjk0856ffpyj4egz7f9pd9dge5wr4kwansmefq07/lab.ash", 6}, + 0xE5, 0x8A, 0xBB, 0x1B, 0x67, 0xEE, 0x7C, 0x54, 0xA4, 0x01, 0x0E, 0xAC, 0xF9, 0xBE, 0xDB, 0x06}, + "transfer/channel-4/ashLAB", + "transfer/channel-4/factory/osmo1svj5kd8kzj7xxtrd6ftjk0856ffpyj4egz7f9pd9dge5wr4kwansmefq07/lab.ash", + 6}, {{0xB6, 0x2A, 0xA3, 0xA1, 0xE8, 0x8A, 0xC2, 0x09, 0x59, 0xC8, 0x56, 0xEF, 0x8A, 0x76, 0x21, 0x08, - 0xDA, 0x48, 0xF2, 0x5A, 0x54, 0x42, 0x6C, 0x4D, 0x96, 0xBB, 0x27, 0xED, 0x0D, 0xE6, 0xDA, 0x0C}, - "transfer/channel-4/sqosmo", "transfer/channel-4/factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/squosmo", 6}, + 0xDA, 0x48, 0xF2, 0x5A, 0x54, 0x42, 0x6C, 0x4D, 0x96, 0xBB, 0x27, 0xED, 0x0D, 0xE6, 0xDA, 0x0C}, + "transfer/channel-4/sqosmo", + "transfer/channel-4/factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/squosmo", + 6}, {{0xBD, 0x20, 0x95, 0x9A, 0xD9, 0xDD, 0xCF, 0x0D, 0x82, 0xD9, 0x16, 0x2E, 0x07, 0x6B, 0xDC, 0x29, - 0x67, 0xE4, 0x3D, 0x56, 0x51, 0x08, 0xFF, 0x46, 0x34, 0xDF, 0x0C, 0xC0, 0x1E, 0x90, 0x50, 0x05}, - "transfer/channel-4/COCA", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/coca", 6}, + 0x67, 0xE4, 0x3D, 0x56, 0x51, 0x08, 0xFF, 0x46, 0x34, 0xDF, 0x0C, 0xC0, 0x1E, 0x90, 0x50, 0x05}, + "transfer/channel-4/COCA", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/coca", + 6}, {{0xBF, 0x8B, 0x03, 0x5D, 0xDA, 0x33, 0x9B, 0x6C, 0xDA, 0x8F, 0x22, 0x1E, 0x79, 0x77, 0x3B, 0x0F, - 0xD8, 0x71, 0xF2, 0x7A, 0x47, 0x29, 0x20, 0xF8, 0x4C, 0x4A, 0xA2, 0xB4, 0xF9, 0x8A, 0x70, 0x0D}, - "transfer/channel-4/allUSDT", "transfer/channel-4/factory/osmo1em6xs47hd82806f5cxgyufguxrrc7l0aqx7nzzptjuqgswczk8csavdxek/alloyed/allUSDT", 6}, + 0xD8, 0x71, 0xF2, 0x7A, 0x47, 0x29, 0x20, 0xF8, 0x4C, 0x4A, 0xA2, 0xB4, 0xF9, 0x8A, 0x70, 0x0D}, + "transfer/channel-4/allUSDT", + "transfer/channel-4/factory/osmo1em6xs47hd82806f5cxgyufguxrrc7l0aqx7nzzptjuqgswczk8csavdxek/alloyed/allUSDT", + 6}, {{0xC0, 0xAD, 0xEA, 0xAA, 0xB5, 0xD6, 0xE2, 0xDB, 0xF9, 0x56, 0xF3, 0xB6, 0x7F, 0x28, 0x69, 0xBB, - 0x38, 0x4A, 0x47, 0x68, 0xB5, 0x13, 0xD5, 0xFB, 0x74, 0x51, 0x66, 0xD6, 0xA9, 0x57, 0x33, 0x06}, - "transfer/channel-4/XTRUMP", "transfer/channel-4/factory/osmo1hg0zf0c9can4tvtulh5gmmxe4jpflre3yewxjl/XTRUMP", 6}, + 0x38, 0x4A, 0x47, 0x68, 0xB5, 0x13, 0xD5, 0xFB, 0x74, 0x51, 0x66, 0xD6, 0xA9, 0x57, 0x33, 0x06}, + "transfer/channel-4/XTRUMP", + "transfer/channel-4/factory/osmo1hg0zf0c9can4tvtulh5gmmxe4jpflre3yewxjl/XTRUMP", + 6}, {{0xC2, 0xF7, 0x61, 0x65, 0x68, 0x0D, 0x6A, 0xB2, 0x87, 0x00, 0x98, 0xAD, 0xD6, 0x29, 0x2E, 0x05, - 0xE4, 0x7B, 0x9D, 0x00, 0x7B, 0xC7, 0xCD, 0xEB, 0x81, 0xFE, 0xAF, 0x61, 0x80, 0x47, 0x76, 0x0E}, - "transfer/channel-4/allETH", "transfer/channel-4/factory/osmo1k6c8jln7ejuqwtqmay3yvzrg3kueaczl96pk067ldg8u835w0yhsw27twm/alloyed/allETH", 18}, + 0xE4, 0x7B, 0x9D, 0x00, 0x7B, 0xC7, 0xCD, 0xEB, 0x81, 0xFE, 0xAF, 0x61, 0x80, 0x47, 0x76, 0x0E}, + "transfer/channel-4/allETH", + "transfer/channel-4/factory/osmo1k6c8jln7ejuqwtqmay3yvzrg3kueaczl96pk067ldg8u835w0yhsw27twm/alloyed/allETH", + 18}, {{0xC3, 0x9E, 0xBC, 0xD5, 0xC9, 0x2D, 0x07, 0x8F, 0xB8, 0x78, 0x67, 0x9F, 0xF0, 0x00, 0xED, 0x67, - 0xC7, 0xD0, 0x4A, 0x5B, 0x77, 0x22, 0xE2, 0xC8, 0xEC, 0x1B, 0x6E, 0x79, 0x4C, 0x15, 0x3A, 0x0D}, - "transfer/channel-4/usdt", "transfer/channel-4/factory/osmo1myv2g72h8dan7n4hx7stt3mmust6ws03zh6gxc7vz4hpmgp5z3lq9aunm9/USDT.rt", 6}, + 0xC7, 0xD0, 0x4A, 0x5B, 0x77, 0x22, 0xE2, 0xC8, 0xEC, 0x1B, 0x6E, 0x79, 0x4C, 0x15, 0x3A, 0x0D}, + "transfer/channel-4/usdt", + "transfer/channel-4/factory/osmo1myv2g72h8dan7n4hx7stt3mmust6ws03zh6gxc7vz4hpmgp5z3lq9aunm9/USDT.rt", + 6}, {{0xC4, 0xD7, 0x60, 0xFC, 0xF7, 0x36, 0x0A, 0xFA, 0xED, 0x6B, 0x05, 0x17, 0xE3, 0x51, 0x01, 0x2D, - 0x39, 0x60, 0x8F, 0xCD, 0xD1, 0x4D, 0xE9, 0xD1, 0x25, 0xA0, 0x45, 0x5F, 0x1B, 0x12, 0x4F, 0x09}, - "transfer/channel-4/ion", "transfer/channel-4/uion", 6}, + 0x39, 0x60, 0x8F, 0xCD, 0xD1, 0x4D, 0xE9, 0xD1, 0x25, 0xA0, 0x45, 0x5F, 0x1B, 0x12, 0x4F, 0x09}, + "transfer/channel-4/ion", + "transfer/channel-4/uion", + 6}, {{0xCC, 0x0D, 0x3C, 0x9E, 0xEF, 0x0C, 0x7F, 0xF4, 0xE2, 0x25, 0xEC, 0xA8, 0x5A, 0x30, 0x94, 0x60, - 0x36, 0x91, 0xD2, 0x89, 0xAE, 0xAF, 0x42, 0x8A, 0xB0, 0xD8, 0x73, 0x19, 0xAD, 0x93, 0xA3, 0x02}, - "transfer/channel-2/usdy", "transfer/channel-2/ausdy", 18}, + 0x36, 0x91, 0xD2, 0x89, 0xAE, 0xAF, 0x42, 0x8A, 0xB0, 0xD8, 0x73, 0x19, 0xAD, 0x93, 0xA3, 0x02}, + "transfer/channel-2/usdy", + "transfer/channel-2/ausdy", + 18}, {{0xCD, 0xAF, 0xCE, 0x9B, 0x1B, 0x46, 0x54, 0x0C, 0x2F, 0x5D, 0x68, 0xA2, 0xCC, 0x94, 0x87, 0x22, - 0x34, 0xFF, 0x3C, 0x1C, 0xD0, 0xE9, 0x78, 0x76, 0x95, 0x7B, 0x41, 0x6C, 0xCB, 0xFC, 0x53, 0x11}, - "transfer/channel-4/BVT1", "transfer/channel-4/factory/osmo16nxtnrnl7lctvnhhpcxqmmpv63n93zgg0ukaveyc0jl4dtad79cs53c3an/BVT", 18}, + 0x34, 0xFF, 0x3C, 0x1C, 0xD0, 0xE9, 0x78, 0x76, 0x95, 0x7B, 0x41, 0x6C, 0xCB, 0xFC, 0x53, 0x11}, + "transfer/channel-4/BVT1", + "transfer/channel-4/factory/osmo16nxtnrnl7lctvnhhpcxqmmpv63n93zgg0ukaveyc0jl4dtad79cs53c3an/BVT", + 18}, {{0xD4, 0xA9, 0xE7, 0x5B, 0x68, 0x59, 0x6B, 0x95, 0x4E, 0x19, 0x19, 0x57, 0x48, 0x38, 0x1E, 0xC4, - 0x36, 0x3B, 0xD9, 0x03, 0xA3, 0xB9, 0x66, 0xB6, 0x89, 0xFE, 0x37, 0x8A, 0xCE, 0xE5, 0x77, 0x01}, - "transfer/channel-4/fSLOTH", "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fSLOTH", 9}, + 0x36, 0x3B, 0xD9, 0x03, 0xA3, 0xB9, 0x66, 0xB6, 0x89, 0xFE, 0x37, 0x8A, 0xCE, 0xE5, 0x77, 0x01}, + "transfer/channel-4/fSLOTH", + "transfer/channel-4/factory/osmo1dywfmhyc8y0wga7qpzej0x0mgwqg25fj4eccp494w8yafzdpgamsx9ryyv/fSLOTH", + 9}, {{0xD5, 0xBD, 0x78, 0xF3, 0xD3, 0xE2, 0x47, 0x4E, 0xA4, 0x18, 0x06, 0x12, 0xE3, 0x2E, 0x3E, 0x27, - 0x46, 0xDA, 0xA9, 0x51, 0x1D, 0x61, 0x8A, 0x8B, 0x0E, 0x5C, 0x64, 0x1C, 0xBC, 0xB9, 0x0B, 0x00}, - "transfer/channel-4/ymos", "transfer/channel-4/factory/osmo1vdvnznwg597qngrq9mnfcfk0am9jdc9y446jewhcqdreqz4r75xq5j5zvy/ymos", 6}, + 0x46, 0xDA, 0xA9, 0x51, 0x1D, 0x61, 0x8A, 0x8B, 0x0E, 0x5C, 0x64, 0x1C, 0xBC, 0xB9, 0x0B, 0x00}, + "transfer/channel-4/ymos", + "transfer/channel-4/factory/osmo1vdvnznwg597qngrq9mnfcfk0am9jdc9y446jewhcqdreqz4r75xq5j5zvy/ymos", + 6}, {{0xD7, 0x5B, 0xA5, 0x87, 0xEC, 0xCE, 0xDA, 0xFD, 0xB4, 0xE8, 0x40, 0xED, 0x6F, 0xA2, 0xF6, 0x49, - 0xD0, 0x74, 0xF6, 0xAE, 0x02, 0x86, 0xB1, 0xDC, 0x73, 0xEA, 0x75, 0xCC, 0x7B, 0x9B, 0xCE, 0x05}, - "transfer/channel-4/COOK", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/COOK", 6}, + 0xD0, 0x74, 0xF6, 0xAE, 0x02, 0x86, 0xB1, 0xDC, 0x73, 0xEA, 0x75, 0xCC, 0x7B, 0x9B, 0xCE, 0x05}, + "transfer/channel-4/COOK", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/COOK", + 6}, {{0xD8, 0x41, 0xBA, 0xBC, 0xEA, 0xBF, 0xD9, 0x85, 0xC2, 0x62, 0x58, 0x73, 0x79, 0x24, 0x04, 0xC1, - 0x72, 0x08, 0x56, 0xFA, 0x2B, 0xA1, 0x5B, 0xCC, 0xB1, 0xED, 0x1E, 0xDC, 0x77, 0x38, 0x3C, 0x01}, - "transfer/channel-4/WOSMO", "transfer/channel-4/factory/osmo1pfyxruwvtwk00y8z06dh2lqjdj82ldvy74wzm3/WOSMO", 6}, + 0x72, 0x08, 0x56, 0xFA, 0x2B, 0xA1, 0x5B, 0xCC, 0xB1, 0xED, 0x1E, 0xDC, 0x77, 0x38, 0x3C, 0x01}, + "transfer/channel-4/WOSMO", + "transfer/channel-4/factory/osmo1pfyxruwvtwk00y8z06dh2lqjdj82ldvy74wzm3/WOSMO", + 6}, {{0xE2, 0x8C, 0xA3, 0xB2, 0xB2, 0x1F, 0xB5, 0xEC, 0xD7, 0x32, 0x6E, 0x71, 0x05, 0x53, 0x1E, 0x7F, - 0x63, 0xE7, 0xF9, 0xD8, 0x64, 0x13, 0x1D, 0x46, 0x17, 0x02, 0x0E, 0x9E, 0x28, 0x8F, 0x9D, 0x0C}, - "transfer/channel-4/wLIBRA", "transfer/channel-4/factory/osmo19hdqma2mj0vnmgcxag6ytswjnr8a3y07q7e70p/wLIBRA", 6}, + 0x63, 0xE7, 0xF9, 0xD8, 0x64, 0x13, 0x1D, 0x46, 0x17, 0x02, 0x0E, 0x9E, 0x28, 0x8F, 0x9D, 0x0C}, + "transfer/channel-4/wLIBRA", + "transfer/channel-4/factory/osmo19hdqma2mj0vnmgcxag6ytswjnr8a3y07q7e70p/wLIBRA", + 6}, {{0xE2, 0xB0, 0x51, 0x0F, 0x51, 0xDE, 0xF5, 0x13, 0x57, 0x73, 0xEE, 0xBE, 0x28, 0xEC, 0x35, 0xBC, - 0x22, 0x86, 0xED, 0x9B, 0x0B, 0x5A, 0xA3, 0x95, 0x2F, 0x83, 0x51, 0x59, 0xD6, 0xCA, 0x0D, 0x07}, - "transfer/channel-4/trx", "transfer/channel-4/factory/osmo14mafhhp337yjj2aujplawz0tks6jd2lel4hkwz4agyzhvvztzaqsqzjq8x/alloyed/allTRX", 6}, + 0x22, 0x86, 0xED, 0x9B, 0x0B, 0x5A, 0xA3, 0x95, 0x2F, 0x83, 0x51, 0x59, 0xD6, 0xCA, 0x0D, 0x07}, + "transfer/channel-4/trx", + "transfer/channel-4/factory/osmo14mafhhp337yjj2aujplawz0tks6jd2lel4hkwz4agyzhvvztzaqsqzjq8x/alloyed/allTRX", + 6}, {{0xE4, 0x1D, 0x23, 0xC5, 0x63, 0xFD, 0x2D, 0x7F, 0x94, 0xE2, 0xE0, 0xFB, 0x69, 0x4F, 0x4E, 0x56, - 0xC2, 0x24, 0xD1, 0x4D, 0xFC, 0xE6, 0xE0, 0xF6, 0xAB, 0xE6, 0xB6, 0x78, 0x47, 0xAB, 0x1E, 0x0D}, - "transfer/channel-4/CAC", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/cac", 6}, + 0xC2, 0x24, 0xD1, 0x4D, 0xFC, 0xE6, 0xE0, 0xF6, 0xAB, 0xE6, 0xB6, 0x78, 0x47, 0xAB, 0x1E, 0x0D}, + "transfer/channel-4/CAC", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/cac", + 6}, {{0xE5, 0x08, 0xC2, 0xDB, 0x91, 0x98, 0x2B, 0xD2, 0xCE, 0x53, 0x7F, 0x64, 0x8C, 0x71, 0x98, 0x4D, - 0x2F, 0x6D, 0x25, 0x20, 0x22, 0x3C, 0xDB, 0x83, 0x97, 0xF4, 0x43, 0x9C, 0xD2, 0xF1, 0x68, 0x11}, - "transfer/channel-4/PBB", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/pbb", 6}, + 0x2F, 0x6D, 0x25, 0x20, 0x22, 0x3C, 0xDB, 0x83, 0x97, 0xF4, 0x43, 0x9C, 0xD2, 0xF1, 0x68, 0x11}, + "transfer/channel-4/PBB", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/pbb", + 6}, {{0xEB, 0x31, 0x26, 0xD5, 0xC4, 0xC7, 0x37, 0x53, 0xEC, 0xB9, 0xE8, 0xA6, 0xB8, 0xDC, 0x42, 0xFB, - 0xA4, 0xBF, 0xB7, 0xAB, 0x83, 0x61, 0x17, 0x61, 0x6E, 0x2B, 0x60, 0x91, 0x45, 0x7D, 0x23, 0x11}, - "transfer/channel-4/milkTIA", "transfer/channel-4/factory/osmo1f5vfcph2dvfeqcqkhetwv75fda69z7e5c2dldm3kvgj23crkv6wqcn47a0/umilkTIA", 6}, + 0xA4, 0xBF, 0xB7, 0xAB, 0x83, 0x61, 0x17, 0x61, 0x6E, 0x2B, 0x60, 0x91, 0x45, 0x7D, 0x23, 0x11}, + "transfer/channel-4/milkTIA", + "transfer/channel-4/factory/osmo1f5vfcph2dvfeqcqkhetwv75fda69z7e5c2dldm3kvgj23crkv6wqcn47a0/umilkTIA", + 6}, {{0xF4, 0xAD, 0x27, 0x86, 0xC1, 0xC6, 0xE6, 0x99, 0xFF, 0x32, 0x99, 0xB1, 0x60, 0x39, 0x06, 0xC8, - 0x81, 0xDB, 0x55, 0x78, 0x76, 0x69, 0x99, 0xB7, 0x7A, 0x49, 0xC2, 0x63, 0x2F, 0x5A, 0xBB, 0x0B}, - "transfer/channel-4/BAG", "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/bag", 6}, + 0x81, 0xDB, 0x55, 0x78, 0x76, 0x69, 0x99, 0xB7, 0x7A, 0x49, 0xC2, 0x63, 0x2F, 0x5A, 0xBB, 0x0B}, + "transfer/channel-4/BAG", + "transfer/channel-4/factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/bag", + 6}, {{0xF5, 0x9D, 0x87, 0xFC, 0x7E, 0x0C, 0x0A, 0x76, 0x07, 0xF1, 0xEB, 0xED, 0xD9, 0x0E, 0xA4, 0x30, - 0x24, 0xC5, 0x49, 0x87, 0xBC, 0xF0, 0x4B, 0x56, 0x9F, 0xBD, 0x77, 0xD6, 0xB9, 0xB0, 0x80, 0x00}, - "transfer/channel-4/LAB", "transfer/channel-4/factory/osmo17fel472lgzs87ekt9dvk0zqyh5gl80sqp4sk4n/LAB", 6}, + 0x24, 0xC5, 0x49, 0x87, 0xBC, 0xF0, 0x4B, 0x56, 0x9F, 0xBD, 0x77, 0xD6, 0xB9, 0xB0, 0x80, 0x00}, + "transfer/channel-4/LAB", + "transfer/channel-4/factory/osmo17fel472lgzs87ekt9dvk0zqyh5gl80sqp4sk4n/LAB", + 6}, {{0xF6, 0xC2, 0x83, 0x49, 0x53, 0x3D, 0xA9, 0x4D, 0x06, 0xDC, 0x04, 0xA9, 0x66, 0xD7, 0x9D, 0xF3, - 0x02, 0x41, 0xF1, 0xF8, 0x5D, 0x69, 0xD0, 0x2D, 0xCF, 0x16, 0x71, 0x13, 0x9B, 0x49, 0x33, 0x12}, - "transfer/channel-4/arb", "transfer/channel-4/factory/osmo1p7x454ex08s4f9ztmm7wfv7lvtgdkfztj2u7v7fezfcauy85q35qmqrdpk/alloyed/allARB", 12} -}; + 0x02, 0x41, 0xF1, 0xF8, 0x5D, 0x69, 0xD0, 0x2D, 0xCF, 0x16, 0x71, 0x13, 0x9B, 0x49, 0x33, 0x12}, + "transfer/channel-4/arb", + "transfer/channel-4/factory/osmo1p7x454ex08s4f9ztmm7wfv7lvtgdkfztj2u7v7fezfcauy85q35qmqrdpk/alloyed/allARB", + 12}}; const asset_info_t *asset_info_from_table(const uint8_t asset_id[ASSET_ID_LEN]) { unsigned int i; diff --git a/app/src/parser.c b/app/src/parser.c index 08068792..44bb24c4 100644 --- a/app/src/parser.c +++ b/app/src/parser.c @@ -23,6 +23,8 @@ #include "coin.h" #include "crypto.h" +#include "delegate.h" +#include "delegator_vote.h" #include "ics20_withdrawal.h" #include "memo.h" #include "output.h" @@ -31,11 +33,9 @@ #include "parser_impl.h" #include "spend.h" #include "swap.h" -#include "delegate.h" -#include "delegator_vote.h" +#include "tx_metadata.h" #include "undelegate.h" #include "undelegate_claim.h" -#include "tx_metadata.h" static uint8_t action_idx = 0; @@ -204,15 +204,16 @@ parser_error_t parser_getItem(const parser_context_t *ctx, uint8_t displayIdx, c break; case penumbra_core_transaction_v1_ActionPlan_undelegate_tag: CHECK_ERROR(undelegate_getItem(ctx, &ctx->tx_obj->actions_plan[action_idx].action.undelegate, action_idx + 1, - outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount)) + outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount)) break; case penumbra_core_transaction_v1_ActionPlan_undelegate_claim_tag: - CHECK_ERROR(undelegate_claim_getItem(ctx, &ctx->tx_obj->actions_plan[action_idx].action.undelegate_claim, action_idx + 1, - outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount)) + CHECK_ERROR(undelegate_claim_getItem(ctx, &ctx->tx_obj->actions_plan[action_idx].action.undelegate_claim, + action_idx + 1, outKey, outKeyLen, outVal, outValLen, pageIdx, + pageCount)) break; case penumbra_core_transaction_v1_ActionPlan_delegator_vote_tag: - CHECK_ERROR(delegator_vote_getItem(ctx, &ctx->tx_obj->actions_plan[action_idx].action.delegator_vote, action_idx + 1, - outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount)) + CHECK_ERROR(delegator_vote_getItem(ctx, &ctx->tx_obj->actions_plan[action_idx].action.delegator_vote, + action_idx + 1, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount)) break; default: return parser_unexpected_error; diff --git a/app/src/parser_impl.c b/app/src/parser_impl.c index 67582db1..9d388fa3 100644 --- a/app/src/parser_impl.c +++ b/app/src/parser_impl.c @@ -17,6 +17,7 @@ #include "parser_impl.h" #include "delegate.h" +#include "delegator_vote.h" #include "ics20_withdrawal.h" #include "output.h" #include "parameters.h" @@ -29,7 +30,6 @@ #include "swap.h" #include "undelegate.h" #include "undelegate_claim.h" -#include "delegator_vote.h" #include "zxformat.h" static bool decode_action(pb_istream_t *stream, const pb_field_t *field, void **arg); @@ -102,7 +102,8 @@ bool decode_action(pb_istream_t *stream, const pb_field_t *field, void **arg) { break; case penumbra_core_transaction_v1_ActionPlan_undelegate_claim_tag: decode_arg[actions_qty].action_data = action_data_4; - CHECK_ACTION_ERROR(decode_undelegate_claim_plan(&action_data_4, &decode_arg[actions_qty].action.undelegate_claim)); + CHECK_ACTION_ERROR( + decode_undelegate_claim_plan(&action_data_4, &decode_arg[actions_qty].action.undelegate_claim)); break; case penumbra_core_transaction_v1_ActionPlan_delegator_vote_tag: decode_arg[actions_qty].action_data = action_data_4; diff --git a/app/src/parser_txdef.h b/app/src/parser_txdef.h index 0b21c635..d94addb5 100644 --- a/app/src/parser_txdef.h +++ b/app/src/parser_txdef.h @@ -41,12 +41,7 @@ extern "C" { #define MAX_SYMBOL_LEN 80 #define MAX_ASSET_NAME_LEN 120 -typedef enum { - VOTE_UNSPECIFIED = 0, - VOTE_ABSTAIN = 1, - VOTE_YES = 2, - VOTE_NO = 3 -} governance_vote_e; +typedef enum { VOTE_UNSPECIFIED = 0, VOTE_ABSTAIN = 1, VOTE_YES = 2, VOTE_NO = 3 } governance_vote_e; typedef struct { const uint8_t *ptr; diff --git a/app/src/plan/delegate.c b/app/src/plan/delegate.c index b1bb0307..4b6017b1 100644 --- a/app/src/plan/delegate.c +++ b/app/src/plan/delegate.c @@ -57,8 +57,9 @@ parser_error_t delegate_getNumItems(const parser_context_t *ctx, uint8_t *num_it return parser_ok; } -parser_error_t delegate_getItem(const parser_context_t *ctx, const delegate_plan_t *delegate, uint8_t actionIdx, char *outKey, - uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { +parser_error_t delegate_getItem(const parser_context_t *ctx, const delegate_plan_t *delegate, uint8_t actionIdx, + char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, + uint8_t *pageCount) { parser_error_t err = parser_no_data; if (delegate == NULL || outKey == NULL || outVal == NULL || outKeyLen == 0 || outValLen == 0) { return err; @@ -90,7 +91,8 @@ parser_error_t delegate_printValue(const parser_context_t *ctx, const delegate_p uint16_t written_value = strlen(outVal); // add validator identity - CHECK_ERROR(encodeIdentityKey(delegate->validator_identity.ik.ptr, delegate->validator_identity.ik.len, outVal + written_value, outValLen - written_value)); + CHECK_ERROR(encodeIdentityKey(delegate->validator_identity.ik.ptr, delegate->validator_identity.ik.len, + outVal + written_value, outValLen - written_value)); written_value = strlen(outVal); // add "Input" @@ -106,7 +108,8 @@ parser_error_t delegate_printValue(const parser_context_t *ctx, const delegate_p local_value.asset_id.inner.len = ASSET_ID_LEN; local_value.has_amount = true; local_value.has_asset_id = true; - CHECK_ERROR(printValue(ctx, &local_value, &ctx->tx_obj->parameters_plan.chain_id, outVal + written_value, outValLen - written_value)); + CHECK_ERROR(printValue(ctx, &local_value, &ctx->tx_obj->parameters_plan.chain_id, outVal + written_value, + outValLen - written_value)); return parser_ok; } \ No newline at end of file diff --git a/app/src/plan/delegate.h b/app/src/plan/delegate.h index c9022b22..27c00931 100644 --- a/app/src/plan/delegate.h +++ b/app/src/plan/delegate.h @@ -25,8 +25,9 @@ extern "C" { parser_error_t decode_delegate_plan(const bytes_t *data, delegate_plan_t *delegate); parser_error_t delegate_getNumItems(const parser_context_t *ctx, uint8_t *num_items); -parser_error_t delegate_getItem(const parser_context_t *ctx, const delegate_plan_t *delegate, uint8_t actionIdx, char *outKey, - uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); +parser_error_t delegate_getItem(const parser_context_t *ctx, const delegate_plan_t *delegate, uint8_t actionIdx, + char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, + uint8_t *pageCount); parser_error_t delegate_printValue(const parser_context_t *ctx, const delegate_plan_t *delegate, char *outVal, uint16_t outValLen); diff --git a/app/src/plan/delegator_vote.c b/app/src/plan/delegator_vote.c index 6e135bad..8197c8ec 100644 --- a/app/src/plan/delegator_vote.c +++ b/app/src/plan/delegator_vote.c @@ -40,7 +40,8 @@ static void vote_to_string(const uint8_t vote, char *outVal, uint16_t outValLen) } parser_error_t decode_delegator_vote_plan(const bytes_t *data, delegator_vote_plan_t *delegator_vote) { - penumbra_core_component_governance_v1_DelegatorVotePlan delegator_vote_plan = penumbra_core_component_governance_v1_DelegatorVotePlan_init_default; + penumbra_core_component_governance_v1_DelegatorVotePlan delegator_vote_plan = + penumbra_core_component_governance_v1_DelegatorVotePlan_init_default; pb_istream_t spend_stream = pb_istream_from_buffer(data->ptr, data->len); CHECK_APP_CANARY() @@ -48,14 +49,19 @@ parser_error_t decode_delegator_vote_plan(const bytes_t *data, delegator_vote_pl // Set up fixed size fields fixed_size_field_t randomizer_arg, proof_blinding_r_arg, proof_blinding_s_arg; setup_decode_fixed_field(&delegator_vote_plan.randomizer, &randomizer_arg, &delegator_vote->randomizer, 32); - setup_decode_fixed_field(&delegator_vote_plan.proof_blinding_r, &proof_blinding_r_arg, &delegator_vote->proof_blinding_r, 32); - setup_decode_fixed_field(&delegator_vote_plan.proof_blinding_s, &proof_blinding_s_arg, &delegator_vote->proof_blinding_s, 32); + setup_decode_fixed_field(&delegator_vote_plan.proof_blinding_r, &proof_blinding_r_arg, &delegator_vote->proof_blinding_r, + 32); + setup_decode_fixed_field(&delegator_vote_plan.proof_blinding_s, &proof_blinding_s_arg, &delegator_vote->proof_blinding_s, + 32); // staked_note fixed_size_field_t address_inner_arg, asset_id_arg, rseed_arg; - setup_decode_fixed_field(&delegator_vote_plan.staked_note.address.inner, &address_inner_arg, &delegator_vote->staked_note.address.inner, 80); - setup_decode_fixed_field(&delegator_vote_plan.staked_note.value.asset_id.inner, &asset_id_arg, &delegator_vote->staked_note.value.asset_id.inner, ASSET_ID_LEN); - setup_decode_fixed_field(&delegator_vote_plan.staked_note.rseed, &rseed_arg, &delegator_vote->staked_note.rseed, RSEED_LEN); + setup_decode_fixed_field(&delegator_vote_plan.staked_note.address.inner, &address_inner_arg, + &delegator_vote->staked_note.address.inner, 80); + setup_decode_fixed_field(&delegator_vote_plan.staked_note.value.asset_id.inner, &asset_id_arg, + &delegator_vote->staked_note.value.asset_id.inner, ASSET_ID_LEN); + setup_decode_fixed_field(&delegator_vote_plan.staked_note.rseed, &rseed_arg, &delegator_vote->staked_note.rseed, + RSEED_LEN); if (!pb_decode(&spend_stream, penumbra_core_component_governance_v1_DelegatorVotePlan_fields, &delegator_vote_plan)) { return parser_delegate_plan_error; @@ -101,8 +107,9 @@ parser_error_t delegator_vote_getNumItems(const parser_context_t *ctx, uint8_t * return parser_ok; } -parser_error_t delegator_vote_getItem(const parser_context_t *ctx, const delegator_vote_plan_t *delegator_vote, uint8_t actionIdx, char *outKey, - uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { +parser_error_t delegator_vote_getItem(const parser_context_t *ctx, const delegator_vote_plan_t *delegator_vote, + uint8_t actionIdx, char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { parser_error_t err = parser_no_data; if (delegator_vote == NULL || outKey == NULL || outVal == NULL || outKeyLen == 0 || outValLen == 0) { return err; @@ -117,8 +124,8 @@ parser_error_t delegator_vote_getItem(const parser_context_t *ctx, const delegat return parser_ok; } -parser_error_t delegator_vote_printValue(const parser_context_t *ctx, const delegator_vote_plan_t *delegator_vote, char *outVal, - uint16_t outValLen) { +parser_error_t delegator_vote_printValue(const parser_context_t *ctx, const delegator_vote_plan_t *delegator_vote, + char *outVal, uint16_t outValLen) { if (ctx == NULL || delegator_vote == NULL || outVal == NULL) { return parser_no_data; } @@ -149,15 +156,14 @@ parser_error_t delegator_vote_printValue(const parser_context_t *ctx, const dele // add unbonded amount static const uint8_t default_asset_id[ASSET_ID_LEN] = STAKING_TOKEN_ASSET_ID_BYTES; - value_t local_value = { - .amount.hi = delegator_vote->unbonded_amount.hi, - .amount.lo = delegator_vote->unbonded_amount.lo, - .asset_id.inner.ptr = default_asset_id, - .asset_id.inner.len = ASSET_ID_LEN, - .has_amount = true, - .has_asset_id = true - }; - CHECK_ERROR(printValue(ctx, &local_value, &ctx->tx_obj->parameters_plan.chain_id, outVal + written_value, outValLen - written_value)); + value_t local_value = {.amount.hi = delegator_vote->unbonded_amount.hi, + .amount.lo = delegator_vote->unbonded_amount.lo, + .asset_id.inner.ptr = default_asset_id, + .asset_id.inner.len = ASSET_ID_LEN, + .has_amount = true, + .has_asset_id = true}; + CHECK_ERROR(printValue(ctx, &local_value, &ctx->tx_obj->parameters_plan.chain_id, outVal + written_value, + outValLen - written_value)); return parser_ok; } \ No newline at end of file diff --git a/app/src/plan/delegator_vote.h b/app/src/plan/delegator_vote.h index 1a4d7169..cb399cc2 100644 --- a/app/src/plan/delegator_vote.h +++ b/app/src/plan/delegator_vote.h @@ -25,10 +25,11 @@ extern "C" { parser_error_t decode_delegator_vote_plan(const bytes_t *data, delegator_vote_plan_t *delegator_vote); parser_error_t delegator_vote_getNumItems(const parser_context_t *ctx, uint8_t *num_items); -parser_error_t delegator_vote_getItem(const parser_context_t *ctx, const delegator_vote_plan_t *delegator_vote, uint8_t actionIdx, char *outKey, - uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); -parser_error_t delegator_vote_printValue(const parser_context_t *ctx, const delegator_vote_plan_t *delegator_vote, char *outVal, - uint16_t outValLen); +parser_error_t delegator_vote_getItem(const parser_context_t *ctx, const delegator_vote_plan_t *delegator_vote, + uint8_t actionIdx, char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount); +parser_error_t delegator_vote_printValue(const parser_context_t *ctx, const delegator_vote_plan_t *delegator_vote, + char *outVal, uint16_t outValLen); #ifdef __cplusplus } diff --git a/app/src/plan/undelegate_claim.c b/app/src/plan/undelegate_claim.c index 3e078d93..d7b7ba6c 100644 --- a/app/src/plan/undelegate_claim.c +++ b/app/src/plan/undelegate_claim.c @@ -62,9 +62,9 @@ parser_error_t undelegate_claim_getNumItems(const parser_context_t *ctx, uint8_t return parser_ok; } -parser_error_t undelegate_claim_getItem(const parser_context_t *ctx, const undelegate_claim_plan_t *undelegate, uint8_t actionIdx, - char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, - uint8_t *pageCount) { +parser_error_t undelegate_claim_getItem(const parser_context_t *ctx, const undelegate_claim_plan_t *undelegate, + uint8_t actionIdx, char *outKey, uint16_t outKeyLen, char *outVal, + uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { parser_error_t err = parser_no_data; if (undelegate == NULL || outKey == NULL || outVal == NULL || outKeyLen == 0 || outValLen == 0) { return err; @@ -79,8 +79,8 @@ parser_error_t undelegate_claim_getItem(const parser_context_t *ctx, const undel return parser_ok; } -parser_error_t undelegate_claim_printValue(const parser_context_t *ctx, const undelegate_claim_plan_t *undelegate, char *outVal, - uint16_t outValLen) { +parser_error_t undelegate_claim_printValue(const parser_context_t *ctx, const undelegate_claim_plan_t *undelegate, + char *outVal, uint16_t outValLen) { if (ctx == NULL || undelegate == NULL || outVal == NULL) { return parser_no_data; } @@ -108,7 +108,8 @@ parser_error_t undelegate_claim_printValue(const parser_context_t *ctx, const un rs_get_asset_id_from_metadata(&metadata, asset_id_bytes, ASSET_ID_LEN); // add unbonded amount - snprintf((char *)metadata_buffer, sizeof(metadata_buffer), "uunbonding_start_at_%llu_%s", undelegate->unbonding_start_height, validator_identity_bytes); + snprintf((char *)metadata_buffer, sizeof(metadata_buffer), "uunbonding_start_at_%llu_%s", + undelegate->unbonding_start_height, validator_identity_bytes); metadata.len = strlen((char *)metadata_buffer); rs_get_asset_id_from_metadata(&metadata, asset_id_bytes, ASSET_ID_LEN); diff --git a/app/src/plan/undelegate_claim.h b/app/src/plan/undelegate_claim.h index 3c3c7ed8..3f96c173 100644 --- a/app/src/plan/undelegate_claim.h +++ b/app/src/plan/undelegate_claim.h @@ -25,11 +25,11 @@ extern "C" { parser_error_t decode_undelegate_claim_plan(const bytes_t *data, undelegate_claim_plan_t *undelegate); parser_error_t undelegate_claim_getNumItems(const parser_context_t *ctx, uint8_t *num_items); -parser_error_t undelegate_claim_getItem(const parser_context_t *ctx, const undelegate_claim_plan_t *undelegate, uint8_t actionIdx, - char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, - uint8_t *pageCount); -parser_error_t undelegate_claim_printValue(const parser_context_t *ctx, const undelegate_claim_plan_t *undelegate, char *outVal, - uint16_t outValLen); +parser_error_t undelegate_claim_getItem(const parser_context_t *ctx, const undelegate_claim_plan_t *undelegate, + uint8_t actionIdx, char *outKey, uint16_t outKeyLen, char *outVal, + uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); +parser_error_t undelegate_claim_printValue(const parser_context_t *ctx, const undelegate_claim_plan_t *undelegate, + char *outVal, uint16_t outValLen); #ifdef __cplusplus } diff --git a/app/src/ui_utils.c b/app/src/ui_utils.c index 9786df2c..aaec4279 100644 --- a/app/src/ui_utils.c +++ b/app/src/ui_utils.c @@ -128,13 +128,13 @@ parser_error_t printAssetId(const uint8_t *asset, uint16_t asset_len, char *out, return printBech32Encoded(ASSET_BECH32_PREFIX, sizeof(ASSET_BECH32_PREFIX) - 1, asset, asset_len, out, out_len); } - parser_error_t encodeIdentityKey(const uint8_t *identity_key, uint16_t identity_key_len, char *out, uint16_t out_len) { // Validate input length if (identity_key_len != IDENTITY_KEY_LEN) { return parser_invalid_address; } - return printBech32Encoded(IDENTITY_KEY_BECH32_PREFIX, sizeof(IDENTITY_KEY_BECH32_PREFIX) - 1, identity_key, identity_key_len, out, out_len); + return printBech32Encoded(IDENTITY_KEY_BECH32_PREFIX, sizeof(IDENTITY_KEY_BECH32_PREFIX) - 1, identity_key, + identity_key_len, out, out_len); } parser_error_t uint128_to_str(char *data, int dataLen, uint64_t high, uint64_t low) { diff --git a/tests/parser_impl.cpp b/tests/parser_impl.cpp index cead5872..6c51d51d 100644 --- a/tests/parser_impl.cpp +++ b/tests/parser_impl.cpp @@ -38,7 +38,17 @@ TEST(SCALE, ReadBytes) { uint8_t buffer[6000]; auto bufferLen = parseHexString( buffer, sizeof(buffer), - "0aae02aa01aa0208bc96b47f10141a02080122a8010a300a0a08c2aac09d8fc0d09d0c12220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012207c14e7434fde0abeccbc2579e58eeb65045e538b14cad708c988075b9fc0df661a520a507616f6c402371db1fa79eca16f1892132bbc1ea65e133fa67388049719f62f45c36fe666cc95ecc4444f6561a36d30fa6aad47a89032c8966f05a7cb098f9fd9ee392d0d337f3c35a33284ed4317f392281e320a08b5b081c9afa9b6c4033a208ee3fae74bc73f0107e4f6fbb6a58be4326a0d6991af104f825b8ee4387a6b0142203ad8f590111f2259243cc440cd5aebcce1f96c719095b6d68f6111ceb1f1ae054a20f59b1272a4d5ba8bea095233e51b392fe32ec7b97667aa44bf9f89321810ec10121a120a70656e756d6272612d311a0c0a0a08f9a195a2e1bee7a70b2a9f020afa010a520a5049620e19635ebc01f681246b4afffd1b09c951f932913e58422365d9716308721b9155943ca17e212004b1c4c887618effef4a3a356c819fbd3a51a29fe306aecf0d182f1a1e63a95710764220b00ef012a3015152206220497862756b20466b7420774c374e20677176205820585074725720672043206b3843506138536871554273204136696574353774372032625543393459382020554c20472062363264365246366f34583152512078436173653638556c203935684e587637353750375a77426f375663205265654341456139344156206d3459617531322020346220697572706d754d4e2074453375397349365642394f12208580fdd3426c1e8c2a98c9d28e00dce9d8801773b77a38547e2e944968ec5bda"); + "0aae02aa01aa0208bc96b47f10141a02080122a8010a300a0a08c2aac09d8fc0d09d0c12220a2029ea9c2f3371f6a487e7e95c247041f4a356f" + "983eb064e5d2b3bcf322ca96a1012207c14e7434fde0abeccbc2579e58eeb65045e538b14cad708c988075b9fc0df661a520a507616f6c40237" + "1db1fa79eca16f1892132bbc1ea65e133fa67388049719f62f45c36fe666cc95ecc4444f6561a36d30fa6aad47a89032c8966f05a7cb098f9fd" + "9ee392d0d337f3c35a33284ed4317f392281e320a08b5b081c9afa9b6c4033a208ee3fae74bc73f0107e4f6fbb6a58be4326a0d6991af104f82" + "5b8ee4387a6b0142203ad8f590111f2259243cc440cd5aebcce1f96c719095b6d68f6111ceb1f1ae054a20f59b1272a4d5ba8bea095233e51b3" + "92fe32ec7b97667aa44bf9f89321810ec10121a120a70656e756d6272612d311a0c0a0a08f9a195a2e1bee7a70b2a9f020afa010a520a504962" + "0e19635ebc01f681246b4afffd1b09c951f932913e58422365d9716308721b9155943ca17e212004b1c4c887618effef4a3a356c819fbd3a51a" + "29fe306aecf0d182f1a1e63a95710764220b00ef012a3015152206220497862756b20466b7420774c374e206771762058205850747257206720" + "43206b3843506138536871554273204136696574353774372032625543393459382020554c20472062363264365246366f34583152512078436" + "173653638556c203935684e587637353750375a77426f375663205265654341456139344156206d3459617531322020346220697572706d754d" + "4e2074453375397349365642394f12208580fdd3426c1e8c2a98c9d28e00dce9d8801773b77a38547e2e944968ec5bda"); err = parser_parse(&ctx, buffer, bufferLen, &tx_obj); ASSERT_EQ(err, parser_ok) << parser_getErrorDescription(err); @@ -58,7 +68,8 @@ TEST(SCALE, ReadBytes) { ASSERT_EQ(zxerr, zxerr_ok); std::string expected = - "be610c7e26f4bddaf1ea52d70e2b7f75d66fc3110fddcd424a24b48433b4ee5a7d9706dbcceb8bdb9999715f14c01d3bc1e16b6a741fcd737752dedf3ffe805a"; + "be610c7e26f4bddaf1ea52d70e2b7f75d66fc3110fddcd424a24b48433b4ee5a7d9706dbcceb8bdb9999715f14c01d3bc1e16b6a741fcd73775" + "2dedf3ffe805a"; char actual[129]; array_to_hexstr(actual, sizeof(actual), tx_obj.effect_hash, sizeof(tx_obj.effect_hash)); diff --git a/tests_zemu/.eslintrc.js b/tests_zemu/.eslintrc.js deleted file mode 100644 index caf98057..00000000 --- a/tests_zemu/.eslintrc.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint', 'jest'], - extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:jest/recommended', 'prettier'], - env: { - browser: true, - es6: true, - node: true, - }, - settings: {}, - globals: { - Atomics: 'readonly', - SharedArrayBuffer: 'readonly', - }, - parserOptions: {}, - rules: { - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-var-requires': 0, - '@typescript-eslint/ban-ts-comment': 'off', - }, -} diff --git a/tests_zemu/eslint.config.js b/tests_zemu/eslint.config.js new file mode 100644 index 00000000..d1f4c53f --- /dev/null +++ b/tests_zemu/eslint.config.js @@ -0,0 +1,36 @@ +module.exports = { + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + globals: { + window: 'readonly', + document: 'readonly', + process: 'readonly', + require: 'readonly', + }, + parserOptions: { + project: 'tsconfig.json', + }, + }, + ignores: ['dist/*', 'node_modules/*'], + plugins: { + 'unused-imports': require('eslint-plugin-unused-imports'), + '@typescript-eslint': require('@typescript-eslint/eslint-plugin'), + 'eslint-plugin-tsdoc': require('eslint-plugin-tsdoc'), + }, + rules: { + curly: 'warn', + 'prefer-const': 'warn', + 'no-else-return': 'warn', + complexity: ['warn', 1000], + 'no-unneeded-ternary': 'warn', + 'no-alert': 'warn', + 'no-empty': 'warn', + 'no-useless-catch': 'error', + 'require-await': 'warn', + 'no-continue': 'warn', + 'no-console': 'off', + 'unused-imports/no-unused-imports': 'warn', + 'no-magic-numbers': 'off', + }, +} diff --git a/tests_zemu/globalsetup.js b/tests_zemu/globalsetup.js index a7875ea2..5837308b 100644 --- a/tests_zemu/globalsetup.js +++ b/tests_zemu/globalsetup.js @@ -1,16 +1,21 @@ -import Zemu from '@zondax/zemu' +const Zemu = require('@zondax/zemu') -const catchExit = async () => { - process.on('SIGINT', () => { - Zemu.stopAllEmuContainers(function () { - process.exit() - }) +/** + * Sets up a handler to stop all emulator containers when a SIGINT is received. + */ +const catchExit = () => { + process.on('SIGINT', async () => { + await Zemu.default.stopAllEmuContainers() + process.exit() }) } +/** + * Initializes the emulator environment by setting up exit handlers, + * pulling the latest emulator image, and stopping any running emulator containers. + */ module.exports = async () => { - await catchExit() - await Zemu.checkAndPullImage() - await Zemu.stopAllEmuContainers() + catchExit() + await Zemu.default.checkAndPullImage() + await Zemu.default.stopAllEmuContainers() } -// diff --git a/tests_zemu/jest.config.js b/tests_zemu/jest.config.js index c4a20eb0..0f3cac0a 100644 --- a/tests_zemu/jest.config.js +++ b/tests_zemu/jest.config.js @@ -2,4 +2,6 @@ module.exports = { preset: 'ts-jest', testEnvironment: 'node', transformIgnorePatterns: ['^.+\\.js$'], + reporters: ['default', ['summary', { summaryThreshold: 1 }]], + globalSetup: './globalsetup.js', } diff --git a/tests_zemu/package.json b/tests_zemu/package.json index 6445a34a..d8b86557 100644 --- a/tests_zemu/package.json +++ b/tests_zemu/package.json @@ -1,20 +1,24 @@ { "name": "integration-tests", - "author": "Zondax AG", - "license": "Apache-2.0", "version": "1.0.0", "description": "", - "types": "./dist/index.d.ts", - "repository": { - "type": "git", - "url": "git+https://github.com/Zondax/ledger-penumbra" - }, "keywords": [ "Zondax", "Ledger" ], + "repository": { + "type": "git", + "url": "git+https://github.com/Zondax/ledger-penumbra" + }, + "license": "Apache-2.0", + "author": "Zondax AG", + "types": "./dist/index.d.ts", "scripts": { "clean": "ts-node tests/pullImageKillOld.ts", + "format": "FORCE_COLOR=1 prettier --write . && sort-package-json", + "format:check": "FORCE_COLOR=1 prettier --check .", + "lint": "eslint .", + "lint:fix": "eslint --fix .", "test": "yarn clean && jest --maxConcurrency 3", "test_dev": "jest", "try": "node try.mjs" @@ -28,21 +32,24 @@ "@matteoh2o1999/github-actions-jest-reporter": "^3.0.0", "@types/jest": "^29.5.14", "@types/ledgerhq__hw-transport": "^4.21.8", - "@typescript-eslint/eslint-plugin": "^8.18.2", - "@typescript-eslint/parser": "^8.18.2", + "@typescript-eslint/eslint-plugin": "^8.20.0", + "@typescript-eslint/parser": "^8.20.0", "blakejs": "^1.2.1", "crypto-js": "4.2.0", "ed25519-supercop": "^2.0.1", - "eslint": "^9.17.0", - "eslint-config-prettier": "^9.1.0", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.10.0", - "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-jest": "^28.11.0", + "eslint-plugin-prettier": "^5.2.2", + "eslint-plugin-tsdoc": "^0.4.0", + "eslint-plugin-unused-imports": "^4.1.4", "jest": "29.7.0", "jssha": "^3.3.1", "prettier": "^3.4.2", + "sort-package-json": "^2.14.0", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/tests_zemu/snapshots/fl-mainmenu/00004.png b/tests_zemu/snapshots/fl-mainmenu/00004.png index f54024db..f9399012 100644 Binary files a/tests_zemu/snapshots/fl-mainmenu/00004.png and b/tests_zemu/snapshots/fl-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png b/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png deleted file mode 100644 index 9bfa8f5b..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png b/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png deleted file mode 100644 index 508b4b7f..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png b/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png deleted file mode 100644 index 357f762e..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png b/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png deleted file mode 100644 index d9b089af..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png b/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png deleted file mode 100644 index a7f61ac7..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png b/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png deleted file mode 100644 index f407fe70..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png b/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png deleted file mode 100644 index ecc058cb..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Swap/00000.png b/tests_zemu/snapshots/fl-sign_Swap/00000.png deleted file mode 100644 index 1f540585..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Swap/00000.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Swap/00001.png b/tests_zemu/snapshots/fl-sign_Swap/00001.png deleted file mode 100644 index acabed27..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Swap/00001.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Swap/00002.png b/tests_zemu/snapshots/fl-sign_Swap/00002.png deleted file mode 100644 index 3bf66c2b..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Swap/00002.png and /dev/null differ diff --git a/tests_zemu/snapshots/fl-sign_Swap/00003.png b/tests_zemu/snapshots/fl-sign_Swap/00003.png deleted file mode 100644 index ecc058cb..00000000 Binary files a/tests_zemu/snapshots/fl-sign_Swap/00003.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00004.png b/tests_zemu/snapshots/sp-mainmenu/00004.png index 279c6f7b..75c72886 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00004.png and b/tests_zemu/snapshots/sp-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00010.png b/tests_zemu/snapshots/sp-mainmenu/00010.png index 279c6f7b..75c72886 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00010.png and b/tests_zemu/snapshots/sp-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png deleted file mode 100644 index 1179c04d..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png deleted file mode 100644 index 142eea4d..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png deleted file mode 100644 index 0933a9c8..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png deleted file mode 100644 index f678834c..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png deleted file mode 100644 index 8a57af88..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png deleted file mode 100644 index 6e862760..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png deleted file mode 100644 index 437331e5..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00007.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00007.png deleted file mode 100644 index fd8425f7..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00007.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00008.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00008.png deleted file mode 100644 index c3e9b79d..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00008.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00009.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00009.png deleted file mode 100644 index 525af915..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00009.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00010.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00010.png deleted file mode 100644 index 76d05568..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00010.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00011.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00011.png deleted file mode 100644 index d71ca24d..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00011.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00012.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00012.png deleted file mode 100644 index 062156ab..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00012.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00013.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00013.png deleted file mode 100644 index b0056473..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00013.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00014.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00014.png deleted file mode 100644 index e303254e..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00014.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00015.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00015.png deleted file mode 100644 index 67b9b6b2..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00015.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00016.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00016.png deleted file mode 100644 index 1e4be699..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00016.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00017.png b/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00017.png deleted file mode 100644 index e9d56e17..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Ics20_Withdrawal_Output_Output_Swap/00017.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Swap/00000.png b/tests_zemu/snapshots/sp-sign_Swap/00000.png deleted file mode 100644 index 1179c04d..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Swap/00000.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Swap/00001.png b/tests_zemu/snapshots/sp-sign_Swap/00001.png deleted file mode 100644 index 142eea4d..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Swap/00001.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Swap/00002.png b/tests_zemu/snapshots/sp-sign_Swap/00002.png deleted file mode 100644 index 1785c635..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Swap/00002.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Swap/00003.png b/tests_zemu/snapshots/sp-sign_Swap/00003.png deleted file mode 100644 index 2efbd2ee..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Swap/00003.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Swap/00004.png b/tests_zemu/snapshots/sp-sign_Swap/00004.png deleted file mode 100644 index ef50405b..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Swap/00004.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Swap/00005.png b/tests_zemu/snapshots/sp-sign_Swap/00005.png deleted file mode 100644 index 1e4be699..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Swap/00005.png and /dev/null differ diff --git a/tests_zemu/snapshots/sp-sign_Swap/00006.png b/tests_zemu/snapshots/sp-sign_Swap/00006.png deleted file mode 100644 index e9d56e17..00000000 Binary files a/tests_zemu/snapshots/sp-sign_Swap/00006.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-mainmenu/00004.png b/tests_zemu/snapshots/st-mainmenu/00004.png index 346e3104..7d62a138 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00004.png and b/tests_zemu/snapshots/st-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png b/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png deleted file mode 100644 index ae74355b..00000000 Binary files a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png b/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png deleted file mode 100644 index 7a5ff6c1..00000000 Binary files a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png b/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png deleted file mode 100644 index d600cb9e..00000000 Binary files a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png b/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png deleted file mode 100644 index 38f51d44..00000000 Binary files a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png b/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png deleted file mode 100644 index 4d08d2b9..00000000 Binary files a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png b/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png deleted file mode 100644 index fe029d88..00000000 Binary files a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png b/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png deleted file mode 100644 index 89fee545..00000000 Binary files a/tests_zemu/snapshots/st-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Swap/00000.png b/tests_zemu/snapshots/st-sign_Swap/00000.png deleted file mode 100644 index 654bc2f1..00000000 Binary files a/tests_zemu/snapshots/st-sign_Swap/00000.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Swap/00001.png b/tests_zemu/snapshots/st-sign_Swap/00001.png deleted file mode 100644 index a1aa809b..00000000 Binary files a/tests_zemu/snapshots/st-sign_Swap/00001.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Swap/00002.png b/tests_zemu/snapshots/st-sign_Swap/00002.png deleted file mode 100644 index 5bd7f33a..00000000 Binary files a/tests_zemu/snapshots/st-sign_Swap/00002.png and /dev/null differ diff --git a/tests_zemu/snapshots/st-sign_Swap/00003.png b/tests_zemu/snapshots/st-sign_Swap/00003.png deleted file mode 100644 index 89fee545..00000000 Binary files a/tests_zemu/snapshots/st-sign_Swap/00003.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-mainmenu/00004.png b/tests_zemu/snapshots/x-mainmenu/00004.png index 279c6f7b..75c72886 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00004.png and b/tests_zemu/snapshots/x-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00010.png b/tests_zemu/snapshots/x-mainmenu/00010.png index 279c6f7b..75c72886 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00010.png and b/tests_zemu/snapshots/x-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png deleted file mode 100644 index 1179c04d..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00000.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png deleted file mode 100644 index 142eea4d..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00001.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png deleted file mode 100644 index 0933a9c8..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00002.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png deleted file mode 100644 index f678834c..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00003.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png deleted file mode 100644 index 8a57af88..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00004.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png deleted file mode 100644 index 6e862760..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00005.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png deleted file mode 100644 index 437331e5..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00006.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00007.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00007.png deleted file mode 100644 index fd8425f7..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00007.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00008.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00008.png deleted file mode 100644 index c3e9b79d..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00008.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00009.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00009.png deleted file mode 100644 index 525af915..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00009.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00010.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00010.png deleted file mode 100644 index 76d05568..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00010.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00011.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00011.png deleted file mode 100644 index d71ca24d..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00011.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00012.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00012.png deleted file mode 100644 index 062156ab..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00012.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00013.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00013.png deleted file mode 100644 index b0056473..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00013.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00014.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00014.png deleted file mode 100644 index e303254e..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00014.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00015.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00015.png deleted file mode 100644 index 67b9b6b2..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00015.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00016.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00016.png deleted file mode 100644 index 1e4be699..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00016.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00017.png b/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00017.png deleted file mode 100644 index e9d56e17..00000000 Binary files a/tests_zemu/snapshots/x-sign_Ics20_Withdrawal_Output_Output_Swap/00017.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Swap/00000.png b/tests_zemu/snapshots/x-sign_Swap/00000.png deleted file mode 100644 index 1179c04d..00000000 Binary files a/tests_zemu/snapshots/x-sign_Swap/00000.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Swap/00001.png b/tests_zemu/snapshots/x-sign_Swap/00001.png deleted file mode 100644 index 142eea4d..00000000 Binary files a/tests_zemu/snapshots/x-sign_Swap/00001.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Swap/00002.png b/tests_zemu/snapshots/x-sign_Swap/00002.png deleted file mode 100644 index 1785c635..00000000 Binary files a/tests_zemu/snapshots/x-sign_Swap/00002.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Swap/00003.png b/tests_zemu/snapshots/x-sign_Swap/00003.png deleted file mode 100644 index 2efbd2ee..00000000 Binary files a/tests_zemu/snapshots/x-sign_Swap/00003.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Swap/00004.png b/tests_zemu/snapshots/x-sign_Swap/00004.png deleted file mode 100644 index ef50405b..00000000 Binary files a/tests_zemu/snapshots/x-sign_Swap/00004.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Swap/00005.png b/tests_zemu/snapshots/x-sign_Swap/00005.png deleted file mode 100644 index 1e4be699..00000000 Binary files a/tests_zemu/snapshots/x-sign_Swap/00005.png and /dev/null differ diff --git a/tests_zemu/snapshots/x-sign_Swap/00006.png b/tests_zemu/snapshots/x-sign_Swap/00006.png deleted file mode 100644 index e9d56e17..00000000 Binary files a/tests_zemu/snapshots/x-sign_Swap/00006.png and /dev/null differ diff --git a/tests_zemu/tests/common.ts b/tests_zemu/tests/common.ts index 2ad80693..d16f0c26 100644 --- a/tests_zemu/tests/common.ts +++ b/tests_zemu/tests/common.ts @@ -32,4 +32,3 @@ export const defaultOptions = { export const txBlobExample = '0abe020abb020aa8010a300a0a08c8daccb4a6f185e40612220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a10122085197c5d60cf28b5ec756a657957b310072396577956fd5cd421ca62b4a6bc091a520a50890bc98e3698aa4578e419b028da5672e627c280d8b06166f4c42d5366bccf1fcf3b296cd61e8d744a21f75f2fb697183e18595d8a79008539d8fb138b405db09db65cc42d54c0e772e5d42d5f20b52f10f1a9e496d5f01d1a20732b53ee807140dd5672768ec1a38be09c531a0c6fc185d5f51c18f5f2261d012220f2e2f45f0ea734d7c11321cbf20427b379cfed6f71874ff97e8bcbbfce2d3d012a2073ec22fcaeccfadc720dd0350cf6af7ec274a74be832e8334613638edfd2fb10322093043bfea2094b0398f0e14bccc66a9ec335bbfd1f8e8b4c2c21428947f5e50d121c08cec08d8e1e1206757673762d361a0c0a0a08d6fab2e5c4f992aa0b' - diff --git a/tests_zemu/tests/effect_hash.test.ts b/tests_zemu/tests/effect_hash.test.ts index 074f43ae..c3dbd849 100644 --- a/tests_zemu/tests/effect_hash.test.ts +++ b/tests_zemu/tests/effect_hash.test.ts @@ -32,51 +32,49 @@ describe('Standard', function () { }) describe.each(ACTIONS_TESTCASES)('Wallet transactions', function (data) { - test.concurrent.each(models)('sign', async function (m) { - const sim = new Zemu(m.path) - try { - await sim.start({ ...defaultOptions, model: m.name }) - const app = new PenumbraApp(sim.getTransport()) + test.concurrent.each(models)('sign', async function (m) { + const sim = new Zemu(m.path) + try { + await sim.start({ ...defaultOptions, model: m.name }) + const app = new PenumbraApp(sim.getTransport()) - const messageToSign = Buffer.from(data.blob, 'hex') + const messageToSign = Buffer.from(data.blob, 'hex') - const addressIndex: AddressIndex = { - account: ACCOUNT_ID, - randomizer: undefined, - } - // do not wait here... we need to navigate - const signatureRequest = app.sign(PENUMBRA_PATH, messageToSign) + const addressIndex: AddressIndex = { + account: ACCOUNT_ID, + randomizer: undefined, + } + // do not wait here... we need to navigate + const signatureRequest = app.sign(PENUMBRA_PATH, messageToSign) - // Wait until we are not in the main menu - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()) - await sim.compareSnapshotsAndApprove('.', `${m.prefix.toLowerCase()}-sign_${data.name}`) + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()) + await sim.compareSnapshotsAndApprove('.', `${m.prefix.toLowerCase()}-sign_${data.name}`) - - const signatureResponse = await signatureRequest - console.log("Effect hash:", signatureResponse.effectHash.toString('hex')) + const signatureResponse = await signatureRequest + console.log('Effect hash:', signatureResponse.effectHash.toString('hex')) - if (signatureResponse.spendAuthSignatures.length > 0) { - signatureResponse.spendAuthSignatures.forEach((signature, index) => { - console.log(`Spend Auth Signature ${index + 1}: ${signature.toString('hex')}`); - }) - } else { - console.log("No spend auth signatures available."); - } + if (signatureResponse.spendAuthSignatures.length > 0) { + signatureResponse.spendAuthSignatures.forEach((signature, index) => { + console.log(`Spend Auth Signature ${index + 1}: ${signature.toString('hex')}`) + }) + } else { + console.log('No spend auth signatures available.') + } - if (signatureResponse.delegatorVoteSignatures.length > 0) { - signatureResponse.delegatorVoteSignatures.forEach((signature, index) => { - console.log(`Delegator Vote Signature ${index + 1}: ${signature.toString('hex')}`); - }); - } else { - console.log("No delegator vote signatures available."); - } + if (signatureResponse.delegatorVoteSignatures.length > 0) { + signatureResponse.delegatorVoteSignatures.forEach((signature, index) => { + console.log(`Delegator Vote Signature ${index + 1}: ${signature.toString('hex')}`) + }) + } else { + console.log('No delegator vote signatures available.') + } - // Now verify effect hash - expect(signatureResponse.effectHash.toString('hex')).toEqual(data.expected_effect_hash) - - } finally { - await sim.close() - } + // Now verify effect hash + expect(signatureResponse.effectHash.toString('hex')).toEqual(data.expected_effect_hash) + } finally { + await sim.close() + } }) }) }) diff --git a/tests_zemu/tests/testscases/actions.ts b/tests_zemu/tests/testscases/actions.ts index a93582bc..9abc67b5 100644 --- a/tests_zemu/tests/testscases/actions.ts +++ b/tests_zemu/tests/testscases/actions.ts @@ -1,34 +1,37 @@ -import { TestCase } from "./types" +import { TestCase } from './types' export const ACTIONS_TESTCASES: TestCase[] = [ - { - idx: 0, - name: "Spend", - blob: "0abe020abb020aa8010a300a0a08cff4aebf94dbb8fa0512220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a10122040239669cfbb58184c7b5928c1436c398b5cf95aa6a55c91e7bdec9128192d101a520a50890bc98e3698aa4578e419b028da5672e627c280d8b06166f4c42d5366bccf1fcf3b296cd61e8d744a21f75f2fb697183e18595d8a79008539d8fb138b405db09db65cc42d54c0e772e5d42d5f20b52f10b793fcecca8f1e1a20724a23f90c0cb8565c769c6d668b92217c1f079b0e5eb8f3e4117040e48183022220d04282bbadf3761d779b2281bc1aae0ca9a0f4af36ce4a3990c4054993d948042a20bbde21969c9070f2bbd7a9751d392a6d70ade2e7f95766b7687491cd7d78c4103220b1c88672abc9aea6ee9f0929f50bee154e45d1bc8c0c08fe3f6fa61dddb87111121a120a70656e756d6272612d311a0c0a0a08a8cb84b2f1cd979f022acb030aa6030a520a50c80865d9789f0e689712ad1b899358377556145e1d4d1297dcb94fa9bea93086254f8081a23e5e6ff88fdf45bf9bd469d40e07c20f26d3dc73e72be32002b8097e6764b16de3f8481c66120cf0c6912612cf02304c524a20394e77567820314464754d346a66206671203630753333346833726465594220756520382078784920627120207a577a204e61554647696b484c37736561745949204f4b382048307220435631795330204c207961596920334935205a74757362207236204e516e6b775339434939767249343346377332305a587762392047206220724b48204b304230764b49674d4b365043636d54353820325776596e6c4b542042205a35574a654f49204f3132432069206d4b7220516c3131464f67464f44476e6a7420205a20726c66204a41203670467a5736764f206a6f6f363458596620344173676c6933487442564a705620536b413935204a424e42703920643838384620356e4949594d57516978203956555543462055203345374e43726d7938202034546f412050334270312075763036312030612056496e4442474e35336c43203163204c4230122082bbb52a115d88526f91ea6d6c3ce4a9bd0d700c81722704fd06d104423c563e", - expected_effect_hash: "209e162852d8d5aee3412e65cd61c83665014cca40779f740181362097dbe318a19449127557e7298f42c41891edf0262edefed3d0a7af4bc44bdff1f27c44ee" - }, - { - idx: 1, - name: "Output", - blob: "0a9102128e020a300a0a0897e4ffc783b1a6ec0c12220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012520a50bfbb4c92e67eb7e6af13f633a477c3d325bee50d044e441512e6bf7fcdd9650934f9d8ead350816317dad39308f0d91dcaa155f9bf4aa7e2f8378df85008aef46766d1fe5c2b097f71ac1489154ddea91a20cb302f60ae37fb29c3cfc6e58c8b3f3a633ed723542d29145343fc8516f5268922208f05c39e61fa49c5b3b00707835362a7f280bf57a3c49f4f256f5b72746926032a20ddef66f55bdde614f8a26292a463cedce66b4c3a44f67a593f4e0baa22dd720b3220e870b617cb404e0167291fb08fa02df2df4c9180a4d18c63e17f7017ce1b8301121b120b612d3230393139353532361a0c0a0a08f5dcb0cbcedfe69a05", - expected_effect_hash: "0ac386aecba110d78e238465f0b7e39e49f7f9839eb7e36ae4113c58fef9cf9c72a3ae99c34b1f48ef82497171613a3aea4a7fae6f6b3991771130a805a5e3d3" - }, - // { - // idx: 2, - // name: "Swap", - // blob: "0abe021abb020ad2010a480a220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012001a0a089cafa1c7c7acf8810222020a002a520a501e4aebd4bce2cacf963e429753cb1ec313316b9b8734ad9e283e4c68b283731ee430988d512315805e384a1a53c64c5cbd2fd28e8f6a346af49643780f86bae30424fc0114f0391fb220cedf31d29d01322098e7a833a3078477140079b2a1f0ef131a2999f71d14285afbd5c1e2d7a695421220751ed3a0014209512df12f8a8f40b9440aa5da9fa54b9222665f72cd0e8152001a20fdfcf28112019695c35eb5c077f6ed1d6a4036151f4609a466aa4c615711aa1222208f5be55a5b7b36815a8ed4d3fc976aa39c4189c13cada6a8c6ead96d95168b0e121a120a70656e756d6272612d311a0c0a0a08b7b2afc2b586b5d80d", - // expected_effect_hash: "282a8a4c9e071da2fb2e700e4a7b6cfd2c05616df8c76166f04e0b293f5848e62e092c4d9a1dcdd924916da3aff07158470446df1f236ecf3a4840f14e440c5a" - // }, - { - idx: 3, - name: "Ics20_Withdrawal", - blob: "0aa802c20ca4020a0a089ac1a69ed6899eb20a12170a156555696136517031326662333046327071304e67411a8f0170656e756d62726131357a376c717a30667578716c3363746168717a6a687365726d6b74756c327a376e716b3074673364787876656b793076327574706130373474377174766e6a3036796d33756c6771766a6c356b6a7271686c32636464736866306a337a79666e30746c733974397736677975616e363263376e61613239747a3238353430323970716563776d22520a507d1ae84746eeca2356ab7d18a7597b3b0e3a91fdb701b3003df15e90d2f6b2775d41893e37ccd1afd4d8cd170838f2f3ff69a99baa1384cca876c0ed7ff7771956f46197af3fc6f9b10aa671ff53e46e2a0c08f6baf1db0310fe97bafb013a096368616e6e656c2d30123808e188091224796469667779697573666f6b737777627166656e6b2d33323234363639343633383737331a0c0a0a08fae384879bc48c890a2a91030aec020a520a50738391f16c9d87ecf88aaa28f6dc7cc4eb413594adfb83ae85fb2fd5dd6c9709c3899b3a15f6a5a4dd8fdd5c10d0ea84dccaa02f20bb5476e1646b18fd54f657a8b1906f67995f40834f9c44440f22e01295025820452032386a31547520204868303147652033554c52375a532020383575782079492072202063597165202020206168346631583079306e6c3255453737313020544774506b5a514766766e4f4678314f2020346920393768207056204f203120544c6f697659706e794630774a506b3733556f3573336e205a76652078623774613136642064207738734d436a2053207730314a6b37204962452078616d2020654a392042205455203066566a634e204437554d684e4b4d71717a2036656d492046376c457431546e376578674f4f71546667387050386c204e203352333139764774706b4820455520344320754b30306f4170332020204d6f35204634353820383774356f58396562204f4520644f5553201220dd9b6fc0592cbdc2d6680301d529a5448f72b0ba63451979351d7d2ada963950", - expected_effect_hash: "462717be27e0ecf1a4d9d52537fb3729d4328f1867a97fa7c374a6c02a44ee58ca0acb2f2702693946e5d4dfbd6c014238231b27556938bb2f0c2ffd2b3e3d0b" - }, - // { - // idx: 4, - // name: "Ics20_Withdrawal_Output_Output_Swap", - // blob: "0ab202c20cae020a0908a3f7bf85dee4834112220a20383434336737366e68464b50415330655a4158325357325a3279686e37466d681a8f0170656e756d627261317634357632707737736334366d786c717964306472757832716a347834306b64376e6e30397475667875687835766c6e643261786b347970327a64746a713472736b34686679356135343933346e397673656c716a736a33796635366d68373966323372307839366b3078657036326c7774716a61366561723673637333646330667167647922520a50e36d2527859acb08cf24cfd2d0a33ab885a1f620ffabd8e04b55a8ec318296cc353086b43ae2464e41b1ca82e07d49e65d37a3942df18ef1e82fb82b0e1e33e27066c17c57dcb3b27d8cb8fc88674aca2a0c08eb86ef870310f4d7faa4033a096368616e6e656c2d300a9102128e020a300a0a08999ed385d8b9dbe20812220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012520a50fc48056bc3fa38105dec3bbf85360034324a68f5f9ad7b1b5b6796f97d8279ae15308df6d619d93aab071c2ea360d09dd0f3fa4d3a8a49b9f9b208ee42e491efff1162c3525990477dfc81a681b7d7c11a20e6c8f1315f134443f8b2fbcf8eb261133e630baabc514d8d97527ea7fc5c4698222052e3247b8af144014822c6a1640d65a80d9285c22bea5fef5e5dd220ce6a76012a20b0dcd8596fa908795337c88329cc1599ac327069b48b79f64d089db5a9642d10322041ee25a60f43df71b28c8677fc19bc1e0fd41433132ffee0b9bde222cde616120a9102128e020a300a0a08d9bacf9082a1d2a80612220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012520a500fa1c90b7b5a37c415800fffe133ff58900ddf87f2bb554f2738c51f0f1591e1b88f33afcaec891632dee4a24400335c453618299673c680b467043c271cdd71bbeb9eebc86f98e5896de26658df64181a20ade0c63b41986930e31b4944cbe0a246eabae9ac2dab3f2ce21daefa03b408f722206da3f56a8ff35a1167c9a5447974588fbce628bb0e428ca2cfcb4fcaf75d61032a20fc8e31cf4ed1ae3821db366157a27106af1bf1e93525b717caf5204dc11aec0132206348b4e143b548762d272f38ea6f6ef868e9234e987607a058e4e66238d51d060abe021abb020ad2010a480a220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012001a0a08cab2f7869ceecc8e0d22020a002a520a50695c4366531a04c83a71e70d31ad399b6f8df14e4f581aa936c920048236096eb6ee116e1d16f71a92773093c031be6646653ea5a6d46c85f23d61ee577e2d3aad2ab3dc6f9661250457c809f8753c313220b4dbd903a787e8c3ee9e81f1dce34585f4f3e73e367fb5a20795ab1d9e85607612200cc3557010bf5d416661d60f6f101c59fb8a11e56523f1c991e90240c4b944031a20c0ca8df9502ba597ea371f4ee2b558bacc61c6e4670f2a31bd0625310d280a072220467109e81b74d93152a4f06e9e852eb008f0a01fb530e72979837f659810a400121e08b4ff38120a70656e756d6272612d311a0c0a0a08d6c6ecba9d88dda304", - // expected_effect_hash: "33e570e3d3f30d17aee23e51cc25de5d95c3a22d54861ebca7039d3480b157e9edc255f79476dfd40f68ec778d7365d2e56b11b557d7f86f40700b68f8b39996" - // }, -] \ No newline at end of file + { + idx: 0, + name: 'Spend', + blob: '0abe020abb020aa8010a300a0a08cff4aebf94dbb8fa0512220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a10122040239669cfbb58184c7b5928c1436c398b5cf95aa6a55c91e7bdec9128192d101a520a50890bc98e3698aa4578e419b028da5672e627c280d8b06166f4c42d5366bccf1fcf3b296cd61e8d744a21f75f2fb697183e18595d8a79008539d8fb138b405db09db65cc42d54c0e772e5d42d5f20b52f10b793fcecca8f1e1a20724a23f90c0cb8565c769c6d668b92217c1f079b0e5eb8f3e4117040e48183022220d04282bbadf3761d779b2281bc1aae0ca9a0f4af36ce4a3990c4054993d948042a20bbde21969c9070f2bbd7a9751d392a6d70ade2e7f95766b7687491cd7d78c4103220b1c88672abc9aea6ee9f0929f50bee154e45d1bc8c0c08fe3f6fa61dddb87111121a120a70656e756d6272612d311a0c0a0a08a8cb84b2f1cd979f022acb030aa6030a520a50c80865d9789f0e689712ad1b899358377556145e1d4d1297dcb94fa9bea93086254f8081a23e5e6ff88fdf45bf9bd469d40e07c20f26d3dc73e72be32002b8097e6764b16de3f8481c66120cf0c6912612cf02304c524a20394e77567820314464754d346a66206671203630753333346833726465594220756520382078784920627120207a577a204e61554647696b484c37736561745949204f4b382048307220435631795330204c207961596920334935205a74757362207236204e516e6b775339434939767249343346377332305a587762392047206220724b48204b304230764b49674d4b365043636d54353820325776596e6c4b542042205a35574a654f49204f3132432069206d4b7220516c3131464f67464f44476e6a7420205a20726c66204a41203670467a5736764f206a6f6f363458596620344173676c6933487442564a705620536b413935204a424e42703920643838384620356e4949594d57516978203956555543462055203345374e43726d7938202034546f412050334270312075763036312030612056496e4442474e35336c43203163204c4230122082bbb52a115d88526f91ea6d6c3ce4a9bd0d700c81722704fd06d104423c563e', + expected_effect_hash: + '209e162852d8d5aee3412e65cd61c83665014cca40779f740181362097dbe318a19449127557e7298f42c41891edf0262edefed3d0a7af4bc44bdff1f27c44ee', + }, + { + idx: 1, + name: 'Output', + blob: '0a9102128e020a300a0a0897e4ffc783b1a6ec0c12220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012520a50bfbb4c92e67eb7e6af13f633a477c3d325bee50d044e441512e6bf7fcdd9650934f9d8ead350816317dad39308f0d91dcaa155f9bf4aa7e2f8378df85008aef46766d1fe5c2b097f71ac1489154ddea91a20cb302f60ae37fb29c3cfc6e58c8b3f3a633ed723542d29145343fc8516f5268922208f05c39e61fa49c5b3b00707835362a7f280bf57a3c49f4f256f5b72746926032a20ddef66f55bdde614f8a26292a463cedce66b4c3a44f67a593f4e0baa22dd720b3220e870b617cb404e0167291fb08fa02df2df4c9180a4d18c63e17f7017ce1b8301121b120b612d3230393139353532361a0c0a0a08f5dcb0cbcedfe69a05', + expected_effect_hash: + '0ac386aecba110d78e238465f0b7e39e49f7f9839eb7e36ae4113c58fef9cf9c72a3ae99c34b1f48ef82497171613a3aea4a7fae6f6b3991771130a805a5e3d3', + }, + // { + // idx: 2, + // name: "Swap", + // blob: "0abe021abb020ad2010a480a220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012001a0a089cafa1c7c7acf8810222020a002a520a501e4aebd4bce2cacf963e429753cb1ec313316b9b8734ad9e283e4c68b283731ee430988d512315805e384a1a53c64c5cbd2fd28e8f6a346af49643780f86bae30424fc0114f0391fb220cedf31d29d01322098e7a833a3078477140079b2a1f0ef131a2999f71d14285afbd5c1e2d7a695421220751ed3a0014209512df12f8a8f40b9440aa5da9fa54b9222665f72cd0e8152001a20fdfcf28112019695c35eb5c077f6ed1d6a4036151f4609a466aa4c615711aa1222208f5be55a5b7b36815a8ed4d3fc976aa39c4189c13cada6a8c6ead96d95168b0e121a120a70656e756d6272612d311a0c0a0a08b7b2afc2b586b5d80d", + // expected_effect_hash: "282a8a4c9e071da2fb2e700e4a7b6cfd2c05616df8c76166f04e0b293f5848e62e092c4d9a1dcdd924916da3aff07158470446df1f236ecf3a4840f14e440c5a" + // }, + { + idx: 3, + name: 'Ics20_Withdrawal', + blob: '0aa802c20ca4020a0a089ac1a69ed6899eb20a12170a156555696136517031326662333046327071304e67411a8f0170656e756d62726131357a376c717a30667578716c3363746168717a6a687365726d6b74756c327a376e716b3074673364787876656b793076327574706130373474377174766e6a3036796d33756c6771766a6c356b6a7271686c32636464736866306a337a79666e30746c733974397736677975616e363263376e61613239747a3238353430323970716563776d22520a507d1ae84746eeca2356ab7d18a7597b3b0e3a91fdb701b3003df15e90d2f6b2775d41893e37ccd1afd4d8cd170838f2f3ff69a99baa1384cca876c0ed7ff7771956f46197af3fc6f9b10aa671ff53e46e2a0c08f6baf1db0310fe97bafb013a096368616e6e656c2d30123808e188091224796469667779697573666f6b737777627166656e6b2d33323234363639343633383737331a0c0a0a08fae384879bc48c890a2a91030aec020a520a50738391f16c9d87ecf88aaa28f6dc7cc4eb413594adfb83ae85fb2fd5dd6c9709c3899b3a15f6a5a4dd8fdd5c10d0ea84dccaa02f20bb5476e1646b18fd54f657a8b1906f67995f40834f9c44440f22e01295025820452032386a31547520204868303147652033554c52375a532020383575782079492072202063597165202020206168346631583079306e6c3255453737313020544774506b5a514766766e4f4678314f2020346920393768207056204f203120544c6f697659706e794630774a506b3733556f3573336e205a76652078623774613136642064207738734d436a2053207730314a6b37204962452078616d2020654a392042205455203066566a634e204437554d684e4b4d71717a2036656d492046376c457431546e376578674f4f71546667387050386c204e203352333139764774706b4820455520344320754b30306f4170332020204d6f35204634353820383774356f58396562204f4520644f5553201220dd9b6fc0592cbdc2d6680301d529a5448f72b0ba63451979351d7d2ada963950', + expected_effect_hash: + '462717be27e0ecf1a4d9d52537fb3729d4328f1867a97fa7c374a6c02a44ee58ca0acb2f2702693946e5d4dfbd6c014238231b27556938bb2f0c2ffd2b3e3d0b', + }, + // { + // idx: 4, + // name: "Ics20_Withdrawal_Output_Output_Swap", + // blob: "0ab202c20cae020a0908a3f7bf85dee4834112220a20383434336737366e68464b50415330655a4158325357325a3279686e37466d681a8f0170656e756d627261317634357632707737736334366d786c717964306472757832716a347834306b64376e6e30397475667875687835766c6e643261786b347970327a64746a713472736b34686679356135343933346e397673656c716a736a33796635366d68373966323372307839366b3078657036326c7774716a61366561723673637333646330667167647922520a50e36d2527859acb08cf24cfd2d0a33ab885a1f620ffabd8e04b55a8ec318296cc353086b43ae2464e41b1ca82e07d49e65d37a3942df18ef1e82fb82b0e1e33e27066c17c57dcb3b27d8cb8fc88674aca2a0c08eb86ef870310f4d7faa4033a096368616e6e656c2d300a9102128e020a300a0a08999ed385d8b9dbe20812220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012520a50fc48056bc3fa38105dec3bbf85360034324a68f5f9ad7b1b5b6796f97d8279ae15308df6d619d93aab071c2ea360d09dd0f3fa4d3a8a49b9f9b208ee42e491efff1162c3525990477dfc81a681b7d7c11a20e6c8f1315f134443f8b2fbcf8eb261133e630baabc514d8d97527ea7fc5c4698222052e3247b8af144014822c6a1640d65a80d9285c22bea5fef5e5dd220ce6a76012a20b0dcd8596fa908795337c88329cc1599ac327069b48b79f64d089db5a9642d10322041ee25a60f43df71b28c8677fc19bc1e0fd41433132ffee0b9bde222cde616120a9102128e020a300a0a08d9bacf9082a1d2a80612220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012520a500fa1c90b7b5a37c415800fffe133ff58900ddf87f2bb554f2738c51f0f1591e1b88f33afcaec891632dee4a24400335c453618299673c680b467043c271cdd71bbeb9eebc86f98e5896de26658df64181a20ade0c63b41986930e31b4944cbe0a246eabae9ac2dab3f2ce21daefa03b408f722206da3f56a8ff35a1167c9a5447974588fbce628bb0e428ca2cfcb4fcaf75d61032a20fc8e31cf4ed1ae3821db366157a27106af1bf1e93525b717caf5204dc11aec0132206348b4e143b548762d272f38ea6f6ef868e9234e987607a058e4e66238d51d060abe021abb020ad2010a480a220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012001a0a08cab2f7869ceecc8e0d22020a002a520a50695c4366531a04c83a71e70d31ad399b6f8df14e4f581aa936c920048236096eb6ee116e1d16f71a92773093c031be6646653ea5a6d46c85f23d61ee577e2d3aad2ab3dc6f9661250457c809f8753c313220b4dbd903a787e8c3ee9e81f1dce34585f4f3e73e367fb5a20795ab1d9e85607612200cc3557010bf5d416661d60f6f101c59fb8a11e56523f1c991e90240c4b944031a20c0ca8df9502ba597ea371f4ee2b558bacc61c6e4670f2a31bd0625310d280a072220467109e81b74d93152a4f06e9e852eb008f0a01fb530e72979837f659810a400121e08b4ff38120a70656e756d6272612d311a0c0a0a08d6c6ecba9d88dda304", + // expected_effect_hash: "33e570e3d3f30d17aee23e51cc25de5d95c3a22d54861ebca7039d3480b157e9edc255f79476dfd40f68ec778d7365d2e56b11b557d7f86f40700b68f8b39996" + // }, +] diff --git a/tests_zemu/tests/testscases/types.ts b/tests_zemu/tests/testscases/types.ts index de3849e0..0d817dfd 100644 --- a/tests_zemu/tests/testscases/types.ts +++ b/tests_zemu/tests/testscases/types.ts @@ -1,6 +1,6 @@ export interface TestCase { - idx: number - name: string - blob: string - expected_effect_hash: string -} \ No newline at end of file + idx: number + name: string + blob: string + expected_effect_hash: string +} diff --git a/tests_zemu/try.mjs b/tests_zemu/try.mjs index 5fd8f70d..c7aa2bba 100644 --- a/tests_zemu/try.mjs +++ b/tests_zemu/try.mjs @@ -1,7 +1,6 @@ import TransportNodeHid from '@ledgerhq/hw-transport-node-hid' import { PenumbraApp } from '@zondax/ledger-penumbra' - async function main() { const transport = await TransportNodeHid.default.open() @@ -10,9 +9,9 @@ async function main() { const PEN_PATH = "m/44'/6532'/0'" const ACCOUNT_ID = 1 const RANDOMIZER = '770187941264c925f8ba8776' - const PLAN = '0abe020abb020aa8010a300a0a08f4979edff8bbd1990712220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a10122014b6628b360cca59dad6c87bc2b082b694ce0db47bcda0cfaf6d49ca187ed80e1a520a50890bc98e3698aa4578e419b028da5672e627c280d8b06166f4c42d5366bccf1fcf3b296cd61e8d744a21f75f2fb697183e18595d8a79008539d8fb138b405db09db65cc42d54c0e772e5d42d5f20b52f10f4f9b09cfad4251a20acbb274bf255bbd32da0f5c380299b3bfa97a533cc2ca46e99e913a6b7c28a0422204cc69a01753e22bfa0b4fb75902843396ab34e30d542abe32a022c00d65708042a2082b07699836e60da166a1d61247e22182059a0aefa9c6237796a0080ad6c05123220c87020807fef96d1be9611d5b667a4440149c88570402e69953ed3cc1b5b2b010abe020abb020aa8010a300a0a08fc859aaaa08b91a20212220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012206dfb50a0cf56ab7031b3033585625b5258bab62322c95628210c221d190c2db91a520a50890bc98e3698aa4578e419b028da5672e627c280d8b06166f4c42d5366bccf1fcf3b296cd61e8d744a21f75f2fb697183e18595d8a79008539d8fb138b405db09db65cc42d54c0e772e5d42d5f20b52f1099baa080b4f9241a204749c0e0361387ba82a4c19bc67e0b5c06c8c1774cec1c40704410f555a07c01222007199b871976c500d0fd9c7d84080928b08d1cada04c8d1dcc0312ff9c8c09022a20347b2de85bb5b0e239698c25d3d48c518948329fb68b5191ae001557094063033220b80b022226dfe8cc2147b9c84611b3e176be6ed96923be009e3b55cb926a9c10121e0885d61c120a70656e756d6272612d311a0c0a0a08b0f1a2f1f4a7a6c3042a9a030af5020a520a50e3e26ee0d15a394b72006b8225947579987352a906d2c40e3dff8cc09d6073f1c16c201752ce1af319be3e8cd42f87e1566e0f02a7dea4dae9ca561a792b9c669f5d2f73baf62ecc5d3e90951d333292129e0252387a663820753635756c384320564849797561207361376c615335393630206f695931207920303020643220306e6253203548206c5831417270326d20206f7220304951642071384e724b204557564d59483574746b376d20202058365a6e7762344a3332204e674f58387a4f6920774c33684d4e7a6820416e6e204537206e6e576d437120332020204b343834653455624a3254394655516459324d662053652053202043206d30787a204641324d205875206c68454d5a68314348456b206c33376d4c4b6f56586820326b35577a504932204537207241647120554b3620393520335820473320386536524c734a20206b5731322033204d3656334a537034205036205573635456624539573230207931347971207a6633764378122023f300f488b9ece996037c9e2b1ede7fe3cf1260bd3a02820a36c4e6bda74af2' + const PLAN = + '0abe020abb020aa8010a300a0a08f4979edff8bbd1990712220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a10122014b6628b360cca59dad6c87bc2b082b694ce0db47bcda0cfaf6d49ca187ed80e1a520a50890bc98e3698aa4578e419b028da5672e627c280d8b06166f4c42d5366bccf1fcf3b296cd61e8d744a21f75f2fb697183e18595d8a79008539d8fb138b405db09db65cc42d54c0e772e5d42d5f20b52f10f4f9b09cfad4251a20acbb274bf255bbd32da0f5c380299b3bfa97a533cc2ca46e99e913a6b7c28a0422204cc69a01753e22bfa0b4fb75902843396ab34e30d542abe32a022c00d65708042a2082b07699836e60da166a1d61247e22182059a0aefa9c6237796a0080ad6c05123220c87020807fef96d1be9611d5b667a4440149c88570402e69953ed3cc1b5b2b010abe020abb020aa8010a300a0a08fc859aaaa08b91a20212220a2029ea9c2f3371f6a487e7e95c247041f4a356f983eb064e5d2b3bcf322ca96a1012206dfb50a0cf56ab7031b3033585625b5258bab62322c95628210c221d190c2db91a520a50890bc98e3698aa4578e419b028da5672e627c280d8b06166f4c42d5366bccf1fcf3b296cd61e8d744a21f75f2fb697183e18595d8a79008539d8fb138b405db09db65cc42d54c0e772e5d42d5f20b52f1099baa080b4f9241a204749c0e0361387ba82a4c19bc67e0b5c06c8c1774cec1c40704410f555a07c01222007199b871976c500d0fd9c7d84080928b08d1cada04c8d1dcc0312ff9c8c09022a20347b2de85bb5b0e239698c25d3d48c518948329fb68b5191ae001557094063033220b80b022226dfe8cc2147b9c84611b3e176be6ed96923be009e3b55cb926a9c10121e0885d61c120a70656e756d6272612d311a0c0a0a08b0f1a2f1f4a7a6c3042a9a030af5020a520a50e3e26ee0d15a394b72006b8225947579987352a906d2c40e3dff8cc09d6073f1c16c201752ce1af319be3e8cd42f87e1566e0f02a7dea4dae9ca561a792b9c669f5d2f73baf62ecc5d3e90951d333292129e0252387a663820753635756c384320564849797561207361376c615335393630206f695931207920303020643220306e6253203548206c5831417270326d20206f7220304951642071384e724b204557564d59483574746b376d20202058365a6e7762344a3332204e674f58387a4f6920774c33684d4e7a6820416e6e204537206e6e576d437120332020204b343834653455624a3254394655516459324d662053652053202043206d30787a204641324d205875206c68454d5a68314348456b206c33376d4c4b6f56586820326b35577a504932204537207241647120554b3620393520335820473320386536524c734a20206b5731322033204d3656334a537034205036205573635456624539573230207931347971207a6633764378122023f300f488b9ece996037c9e2b1ede7fe3cf1260bd3a02820a36c4e6bda74af2' - let resp = await app.deviceInfo() console.log('Device Info', resp) resp = await app.getVersion() @@ -27,29 +26,26 @@ async function main() { try { const signatureRequest = app.sign(PEN_PATH, messageToSign) const signatureResponse = await signatureRequest - console.log("Effect hash:", signatureResponse.effectHash.toString('hex')) + console.log('Effect hash:', signatureResponse.effectHash.toString('hex')) if (signatureResponse.spendAuthSignatures.length > 0) { signatureResponse.spendAuthSignatures.forEach((signature, index) => { - console.log(`Spend Auth Signature ${index + 1}: ${signature.toString('hex')}`); - }); + console.log(`Spend Auth Signature ${index + 1}: ${signature.toString('hex')}`) + }) } else { - console.log("No spend auth signatures available."); + console.log('No spend auth signatures available.') } if (signatureResponse.delegatorVoteSignatures.length > 0) { signatureResponse.delegatorVoteSignatures.forEach((signature, index) => { - console.log(`Delegator Vote Signature ${index + 1}: ${signature.toString('hex')}`); - }); + console.log(`Delegator Vote Signature ${index + 1}: ${signature.toString('hex')}`) + }) } else { - console.log("No delegator vote signatures available."); + console.log('No delegator vote signatures available.') } - } catch (e) { console.log(e) } - - } ;(async () => { diff --git a/tests_zemu/tsconfig.json b/tests_zemu/tsconfig.json index 3435f95c..014ae6be 100644 --- a/tests_zemu/tsconfig.json +++ b/tests_zemu/tsconfig.json @@ -8,8 +8,5 @@ "skipLibCheck": true, "outDir": "./dist" }, - "exclude": [ - "node_modules", - "./dist/**" - ] + "exclude": ["node_modules", "./dist/**"] }