diff --git a/app-derive/src/lib.rs b/app-derive/src/lib.rs index 6cfa3d097..8539260a5 100644 --- a/app-derive/src/lib.rs +++ b/app-derive/src/lib.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app-derive/src/unroll.rs b/app-derive/src/unroll.rs index 52e2d1d38..4410fab26 100644 --- a/app-derive/src/unroll.rs +++ b/app-derive/src/unroll.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app-derive/src/version.rs b/app-derive/src/version.rs index c51e62fe7..2a378aa2f 100644 --- a/app-derive/src/version.rs +++ b/app-derive/src/version.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app-derive/tests/version.rs b/app-derive/tests/version.rs index b313f561b..bdeef3acd 100644 --- a/app-derive/tests/version.rs +++ b/app-derive/tests/version.rs @@ -1,5 +1,5 @@ /******************************************************************************* - * (c) 2021 Zondax GmbH + * (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/Makefile.version b/app/Makefile.version index db7bca405..ab75f36cb 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -1,6 +1,6 @@ # Major APPVERSION_M=1 # Minor -APPVERSION_N=0 +APPVERSION_N=1 # Patch -APPVERSION_P=0 \ No newline at end of file +APPVERSION_P=0 diff --git a/app/rust/src/constants.rs b/app/rust/src/constants.rs index fda4a9ec1..d1d88dc10 100644 --- a/app/rust/src/constants.rs +++ b/app/rust/src/constants.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/crypto.rs b/app/rust/src/crypto.rs index 7077efa7e..9e1abc38c 100644 --- a/app/rust/src/crypto.rs +++ b/app/rust/src/crypto.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/dispatcher.rs b/app/rust/src/dispatcher.rs index 3075c6a2f..677a09e91 100644 --- a/app/rust/src/dispatcher.rs +++ b/app/rust/src/dispatcher.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers.rs b/app/rust/src/handlers.rs index af4c6de42..3b446c277 100644 --- a/app/rust/src/handlers.rs +++ b/app/rust/src/handlers.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/avax.rs b/app/rust/src/handlers/avax.rs index a805e6b1b..a19bbb9a0 100644 --- a/app/rust/src/handlers/avax.rs +++ b/app/rust/src/handlers/avax.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/avax/message.rs b/app/rust/src/handlers/avax/message.rs index 23c9c03f9..7adf4138c 100644 --- a/app/rust/src/handlers/avax/message.rs +++ b/app/rust/src/handlers/avax/message.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/avax/sign_hash.rs b/app/rust/src/handlers/avax/sign_hash.rs index d2d52da94..b17657905 100644 --- a/app/rust/src/handlers/avax/sign_hash.rs +++ b/app/rust/src/handlers/avax/sign_hash.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/avax/signing.rs b/app/rust/src/handlers/avax/signing.rs index d64e6e8ae..747bf1190 100644 --- a/app/rust/src/handlers/avax/signing.rs +++ b/app/rust/src/handlers/avax/signing.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/dev.rs b/app/rust/src/handlers/dev.rs index 9b5b49ce2..499911a31 100644 --- a/app/rust/src/handlers/dev.rs +++ b/app/rust/src/handlers/dev.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/dev/debug.rs b/app/rust/src/handlers/dev/debug.rs index 9093676a5..a132597f5 100644 --- a/app/rust/src/handlers/dev/debug.rs +++ b/app/rust/src/handlers/dev/debug.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/eth.rs b/app/rust/src/handlers/eth.rs index 161515ad9..5087e0e86 100644 --- a/app/rust/src/handlers/eth.rs +++ b/app/rust/src/handlers/eth.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/eth/personal_msg.rs b/app/rust/src/handlers/eth/personal_msg.rs index be1e632da..15a7dc35e 100644 --- a/app/rust/src/handlers/eth/personal_msg.rs +++ b/app/rust/src/handlers/eth/personal_msg.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/eth/provide_erc20.rs b/app/rust/src/handlers/eth/provide_erc20.rs index 294fc0268..6f2e4852d 100644 --- a/app/rust/src/handlers/eth/provide_erc20.rs +++ b/app/rust/src/handlers/eth/provide_erc20.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/eth/provide_nft_info.rs b/app/rust/src/handlers/eth/provide_nft_info.rs index 9637b6749..0df2c6e36 100644 --- a/app/rust/src/handlers/eth/provide_nft_info.rs +++ b/app/rust/src/handlers/eth/provide_nft_info.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/eth/public_key.rs b/app/rust/src/handlers/eth/public_key.rs index 6575c4f89..ec9ce045d 100644 --- a/app/rust/src/handlers/eth/public_key.rs +++ b/app/rust/src/handlers/eth/public_key.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/eth/public_key/ui.rs b/app/rust/src/handlers/eth/public_key/ui.rs index 8592985ba..474d48e33 100644 --- a/app/rust/src/handlers/eth/public_key/ui.rs +++ b/app/rust/src/handlers/eth/public_key/ui.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/eth/set_plugin.rs b/app/rust/src/handlers/eth/set_plugin.rs index 83ce067ea..e58f2c79f 100644 --- a/app/rust/src/handlers/eth/set_plugin.rs +++ b/app/rust/src/handlers/eth/set_plugin.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/eth/signing.rs b/app/rust/src/handlers/eth/signing.rs index 2d651120f..105808417 100644 --- a/app/rust/src/handlers/eth/signing.rs +++ b/app/rust/src/handlers/eth/signing.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/lock.rs b/app/rust/src/handlers/lock.rs index fc36b1c6b..35b839869 100644 --- a/app/rust/src/handlers/lock.rs +++ b/app/rust/src/handlers/lock.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/public_key.rs b/app/rust/src/handlers/public_key.rs index 8cccdaae7..971d2ca88 100644 --- a/app/rust/src/handlers/public_key.rs +++ b/app/rust/src/handlers/public_key.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/public_key/ui.rs b/app/rust/src/handlers/public_key/ui.rs index 1870806b9..e67427ca1 100644 --- a/app/rust/src/handlers/public_key/ui.rs +++ b/app/rust/src/handlers/public_key/ui.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/public_key/xpub.rs b/app/rust/src/handlers/public_key/xpub.rs index e68137e7b..5f47b63d7 100644 --- a/app/rust/src/handlers/public_key/xpub.rs +++ b/app/rust/src/handlers/public_key/xpub.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/utils.rs b/app/rust/src/handlers/utils.rs index 932c8c12c..f43bf7e03 100644 --- a/app/rust/src/handlers/utils.rs +++ b/app/rust/src/handlers/utils.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/version.rs b/app/rust/src/handlers/version.rs index a37f285cf..4ede9322c 100644 --- a/app/rust/src/handlers/version.rs +++ b/app/rust/src/handlers/version.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/handlers/wallet_id.rs b/app/rust/src/handlers/wallet_id.rs index 2d3e2efc0..12f6797a6 100644 --- a/app/rust/src/handlers/wallet_id.rs +++ b/app/rust/src/handlers/wallet_id.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/lib.rs b/app/rust/src/lib.rs index 8ac4ff018..b0b0c57b6 100644 --- a/app/rust/src/lib.rs +++ b/app/rust/src/lib.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser.rs b/app/rust/src/parser.rs index e3da1bd3e..e6b8698e8 100644 --- a/app/rust/src/parser.rs +++ b/app/rust/src/parser.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,18 +20,21 @@ use zemu_sys::ViewError; mod address; mod asset_id; mod avm_output; +mod chain_id; mod constants; mod coreth; mod defer; mod error; mod initial_state; mod inputs; +mod l1_validator; mod message; mod network_info; mod node_id; mod object_list; mod operations; mod outputs; +mod pchain_owner; mod pvm_output; mod subnet_auth; mod subnet_id; diff --git a/app/rust/src/parser/address.rs b/app/rust/src/parser/address.rs index c25533ad4..997f404bb 100644 --- a/app/rust/src/parser/address.rs +++ b/app/rust/src/parser/address.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/asset_id.rs b/app/rust/src/parser/asset_id.rs index 4edf67b70..3812473e0 100644 --- a/app/rust/src/parser/asset_id.rs +++ b/app/rust/src/parser/asset_id.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/avm_output.rs b/app/rust/src/parser/avm_output.rs index 77e2387e3..9aaf17e6b 100644 --- a/app/rust/src/parser/avm_output.rs +++ b/app/rust/src/parser/avm_output.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/chain_id.rs b/app/rust/src/parser/chain_id.rs new file mode 100644 index 000000000..fdd75b3d2 --- /dev/null +++ b/app/rust/src/parser/chain_id.rs @@ -0,0 +1,89 @@ +/******************************************************************************* +* (c) 2018-2024 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +use crate::handlers::handle_ui_message; +use crate::sys::ViewError; +use core::{mem::MaybeUninit, ptr::addr_of_mut}; +use nom::bytes::complete::take; + +use crate::parser::{DisplayableItem, FromBytes, ParserError}; +use crate::utils::hex_encode; + +pub const CHAIN_ID_LEN: usize = 32; + +#[derive(Clone, Copy, PartialEq, Eq)] +#[cfg_attr(test, derive(Debug))] +pub struct ChainId<'b>(&'b [u8; CHAIN_ID_LEN]); + +impl<'b> ChainId<'b> { + pub fn new(id: &'b [u8; CHAIN_ID_LEN]) -> Self { + Self(id) + } +} + +impl<'b> FromBytes<'b> for ChainId<'b> { + #[inline(never)] + fn from_bytes_into( + input: &'b [u8], + out: &mut MaybeUninit, + ) -> Result<&'b [u8], nom::Err> { + crate::sys::zemu_log_stack("ChainId::from_bytes_into\x00"); + + let (rem, chain_id) = take(CHAIN_ID_LEN)(input)?; + // This would not fail as previous line ensures we take + // the right amount of bytes, also the alignemnt is correct + let chain_id = arrayref::array_ref!(chain_id, 0, CHAIN_ID_LEN); + + //good ptr and no uninit reads + let out = out.as_mut_ptr(); + unsafe { + addr_of_mut!((*out).0).write(&chain_id); + } + + Ok(rem) + } +} + +impl<'b> DisplayableItem for ChainId<'b> { + fn num_items(&self) -> Result { + Ok(1) + } + + fn render_item( + &self, + item_n: u8, + title: &mut [u8], + message: &mut [u8], + page: u8, + ) -> Result { + use bolos::{pic_str, PIC}; + + if item_n != 0 { + return Err(ViewError::NoData); + } + let prefix = pic_str!(b"0x"!); + let label = pic_str!(b"Chain ID"); + title[..label.len()].copy_from_slice(label); + + // prefix + let mut out = [0; CHAIN_ID_LEN * 2 + 2]; + let mut sz = prefix.len(); + out[..prefix.len()].copy_from_slice(&prefix[..]); + + sz += hex_encode(self.0, &mut out[prefix.len()..]).map_err(|_| ViewError::Unknown)?; + + handle_ui_message(&out[..sz], message, page) + } +} diff --git a/app/rust/src/parser/constants.rs b/app/rust/src/parser/constants.rs index 4e609088c..792002aa5 100644 --- a/app/rust/src/parser/constants.rs +++ b/app/rust/src/parser/constants.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ pub const NETWORK_ID_MAINNET: u32 = 1; pub const NETWORK_ID_FUJI: u32 = 5; pub const NETWORK_ID_LOCAL: u32 = 12345; pub const NETWORK_ID_CUSTOM: u32 = 1337; +pub const NETWORK_ID_DEVNET: u32 = 76; pub const ETH_MAINNET_ID: u64 = 1; // hrp @@ -26,7 +27,7 @@ pub const HRP_MAINNET: &str = "avax"; pub const HRP_TESTNET: &str = "fuji"; pub const HRP_LOCAL: &str = "local"; pub const HRP_CUSTOM: &str = "custom"; - +pub const HRP_DEVNET: &str = "custom"; pub const TRANSFER_TX: u32 = 0; // pvm transaction types @@ -41,6 +42,13 @@ pub const PVM_REMOVE_SUBNET_VALIDATOR: u32 = 0x00000017; pub const PVM_TRANSFORM_SUBNET: u32 = 0x00000018; pub const PVM_ADD_PERMISSIONLESS_VALIDATOR: u32 = 0x00000019; pub const PVM_ADD_PERMISSIONLESS_DELEGATOR: u32 = 0x0000001A; + +pub const PVM_CONVERT_SUBNET_L1: u32 = 0x00000023; +pub const PVM_REGISTER_L1_VALIDATOR: u32 = 0x00000024; +pub const PVM_SET_L1_VALIDATOR_WEIGHT: u32 = 0x00000025; +pub const PVM_DISABLE_L1_VALIDATOR: u32 = 0x00000027; +pub const PVM_INCREASE_L1_VALIDATOR_BALANCE: u32 = 0x00000026; + // base tx for p-chain which collides with evm import tx. // we should check chain-id pub const PVM_BASE_TX: u32 = 0x00000000; diff --git a/app/rust/src/parser/coreth/nft_info.rs b/app/rust/src/parser/coreth/nft_info.rs index 6d593e542..d50087eb4 100644 --- a/app/rust/src/parser/coreth/nft_info.rs +++ b/app/rust/src/parser/coreth/nft_info.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/initial_state.rs b/app/rust/src/parser/initial_state.rs index 061f2883e..8e71483c6 100644 --- a/app/rust/src/parser/initial_state.rs +++ b/app/rust/src/parser/initial_state.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/inputs.rs b/app/rust/src/parser/inputs.rs index 9d31003ac..28baa2fee 100644 --- a/app/rust/src/parser/inputs.rs +++ b/app/rust/src/parser/inputs.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/inputs/secp_transfer_input.rs b/app/rust/src/parser/inputs/secp_transfer_input.rs index 063826e39..7f04b2a4e 100644 --- a/app/rust/src/parser/inputs/secp_transfer_input.rs +++ b/app/rust/src/parser/inputs/secp_transfer_input.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/l1_validator.rs b/app/rust/src/parser/l1_validator.rs new file mode 100644 index 000000000..8d912d357 --- /dev/null +++ b/app/rust/src/parser/l1_validator.rs @@ -0,0 +1,67 @@ +/******************************************************************************* +* (c) 2018-2024 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +use super::{pchain_owner::PchainOwner, proof_of_possession::ProofOfPossession, NodeId}; +use crate::parser::{FromBytes, ParserError}; +use core::{mem::MaybeUninit, ptr::addr_of_mut}; +use nom::{bytes::complete::take, number::complete::be_u64}; + +#[derive(Clone, Copy, PartialEq, Eq)] +#[repr(C)] +#[cfg_attr(test, derive(Debug))] +pub struct L1Validator<'b> { + pub node_id: NodeId<'b>, + pub weight: u64, + pub balance: u64, + pub signer: ProofOfPossession<'b>, + pub remaining_balance_owner: PchainOwner<'b>, + pub deactivation_owner: PchainOwner<'b>, +} + +impl<'b> FromBytes<'b> for L1Validator<'b> { + #[inline(never)] + fn from_bytes_into( + input: &'b [u8], + out: &mut MaybeUninit, + ) -> Result<&'b [u8], nom::Err> { + crate::sys::zemu_log_stack("L1Validator::from_bytes_into\x00"); + + let (rem, _unused_value) = take(4usize)(input)?; + + let out = out.as_mut_ptr(); + let node_id = unsafe { &mut *addr_of_mut!((*out).node_id).cast() }; + let rem = NodeId::from_bytes_into(rem, node_id)?; + + let (rem, weight) = be_u64(rem)?; + let (rem, balance) = be_u64(rem)?; + + let signer = unsafe { &mut *addr_of_mut!((*out).signer).cast() }; + let rem = ProofOfPossession::from_bytes_into(rem, signer)?; + + let remaining_balance_owner = + unsafe { &mut *addr_of_mut!((*out).remaining_balance_owner).cast() }; + let rem = PchainOwner::from_bytes_into(rem, remaining_balance_owner)?; + + let deactivation_owner = unsafe { &mut *addr_of_mut!((*out).deactivation_owner).cast() }; + let rem = PchainOwner::from_bytes_into(rem, deactivation_owner)?; + + unsafe { + addr_of_mut!((*out).weight).write(weight); + addr_of_mut!((*out).balance).write(balance); + } + + Ok(rem) + } +} diff --git a/app/rust/src/parser/message.rs b/app/rust/src/parser/message.rs index 1922b3e4c..3cdbb266a 100644 --- a/app/rust/src/parser/message.rs +++ b/app/rust/src/parser/message.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/network_info.rs b/app/rust/src/parser/network_info.rs index 8f0466b3e..229e6a6ef 100644 --- a/app/rust/src/parser/network_info.rs +++ b/app/rust/src/parser/network_info.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ pub enum NetworkId { Fuji, Local, Custom, + Devnet, } impl NetworkId { @@ -40,6 +41,7 @@ impl NetworkId { Self::Fuji => PIC::new(HRP_TESTNET).into_inner(), Self::Local => PIC::new(HRP_LOCAL).into_inner(), Self::Custom => PIC::new(HRP_CUSTOM).into_inner(), + Self::Devnet => PIC::new(HRP_DEVNET).into_inner(), } } } @@ -53,6 +55,7 @@ impl TryFrom for NetworkId { NETWORK_ID_FUJI => Ok(Self::Fuji), NETWORK_ID_LOCAL => Ok(Self::Local), NETWORK_ID_CUSTOM => Ok(Self::Custom), + NETWORK_ID_DEVNET => Ok(Self::Devnet), _ => Err(ParserError::InvalidNetworkId), } } diff --git a/app/rust/src/parser/object_list.rs b/app/rust/src/parser/object_list.rs index e4eb9b7bb..951eda657 100644 --- a/app/rust/src/parser/object_list.rs +++ b/app/rust/src/parser/object_list.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -231,6 +231,26 @@ where pub unsafe fn set_data_index(&mut self, read: usize) { self.read = read; } + + pub fn get(&self, index: usize) -> Option { + let mut out = MaybeUninit::uninit(); + let mut this = *self; + + // Reset the internal cursor to the beginning + unsafe { + this.set_data_index(0); + } + + for _ in 0..index { + // Attempt to parse the next object + if this.parse_next(&mut out).is_none() { + return None; // Return None if the index is out of bounds + } + } + + // Return the object at the specified index + Some(unsafe { out.assume_init() }) + } } impl<'b, Obj> ObjectList<'b, Obj> diff --git a/app/rust/src/parser/outputs.rs b/app/rust/src/parser/outputs.rs index 6e3713d05..9782d4f8d 100644 --- a/app/rust/src/parser/outputs.rs +++ b/app/rust/src/parser/outputs.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/outputs/nft_mint_output.rs b/app/rust/src/parser/outputs/nft_mint_output.rs index a4e71b60c..007bf7c18 100644 --- a/app/rust/src/parser/outputs/nft_mint_output.rs +++ b/app/rust/src/parser/outputs/nft_mint_output.rs @@ -1,5 +1,5 @@ /******************************************************************************* - * (c) 2021 Zondax GmbH + * (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/outputs/nft_transfer_output.rs b/app/rust/src/parser/outputs/nft_transfer_output.rs index 9a1d3ae2d..eac7b6a63 100644 --- a/app/rust/src/parser/outputs/nft_transfer_output.rs +++ b/app/rust/src/parser/outputs/nft_transfer_output.rs @@ -1,5 +1,5 @@ /******************************************************************************* - * (c) 2021 Zondax GmbH + * (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/outputs/secp_mint_output.rs b/app/rust/src/parser/outputs/secp_mint_output.rs index fbe2d1013..bb4b69c73 100644 --- a/app/rust/src/parser/outputs/secp_mint_output.rs +++ b/app/rust/src/parser/outputs/secp_mint_output.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/outputs/secp_output_owners.rs b/app/rust/src/parser/outputs/secp_output_owners.rs index 78e321306..6f4875c23 100644 --- a/app/rust/src/parser/outputs/secp_output_owners.rs +++ b/app/rust/src/parser/outputs/secp_output_owners.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/outputs/secp_transfer_output.rs b/app/rust/src/parser/outputs/secp_transfer_output.rs index fa65f949a..8d7a35d51 100644 --- a/app/rust/src/parser/outputs/secp_transfer_output.rs +++ b/app/rust/src/parser/outputs/secp_transfer_output.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/pchain_owner.rs b/app/rust/src/parser/pchain_owner.rs new file mode 100644 index 000000000..5b714ddd7 --- /dev/null +++ b/app/rust/src/parser/pchain_owner.rs @@ -0,0 +1,54 @@ +/******************************************************************************* +* (c) 2018-2024 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +use core::{mem::MaybeUninit, ptr::addr_of_mut}; +use nom::{bytes::complete::take, number::complete::be_u32, sequence::tuple}; + +use crate::parser::{FromBytes, ParserError, ADDRESS_LEN}; + +#[derive(Clone, Copy, PartialEq, Eq)] +#[repr(C)] +#[cfg_attr(test, derive(Debug))] +pub struct PchainOwner<'b> { + pub threshold: u32, + pub addresses: &'b [[u8; ADDRESS_LEN]], +} + +impl<'b> FromBytes<'b> for PchainOwner<'b> { + fn from_bytes_into( + input: &'b [u8], + out: &mut MaybeUninit, + ) -> Result<&'b [u8], nom::Err> { + let (rem, (threshold, addr_len)) = tuple((be_u32, be_u32))(input)?; + + let (rem, addresses) = take(addr_len as usize * ADDRESS_LEN)(rem)?; + // Check for invariants + let addresses = + bytemuck::try_cast_slice(addresses).map_err(|_| ParserError::InvalidAddressLength)?; + + if threshold as usize > addresses.len() { + return Err(ParserError::InvalidThreshold.into()); + } + + //good ptr and no uninit reads + let out = out.as_mut_ptr(); + unsafe { + addr_of_mut!((*out).threshold).write(threshold); + addr_of_mut!((*out).addresses).write(addresses); + } + + Ok(rem) + } +} diff --git a/app/rust/src/parser/pvm_output.rs b/app/rust/src/parser/pvm_output.rs index f6ecf0a74..4f339a396 100644 --- a/app/rust/src/parser/pvm_output.rs +++ b/app/rust/src/parser/pvm_output.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/subnet_auth.rs b/app/rust/src/parser/subnet_auth.rs index 6f8367def..22bab30f6 100644 --- a/app/rust/src/parser/subnet_auth.rs +++ b/app/rust/src/parser/subnet_auth.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/subnet_id.rs b/app/rust/src/parser/subnet_id.rs index 80346b066..d27ef39c5 100644 --- a/app/rust/src/parser/subnet_id.rs +++ b/app/rust/src/parser/subnet_id.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions.rs b/app/rust/src/parser/transactions.rs index bd466a118..4ff1666bc 100644 --- a/app/rust/src/parser/transactions.rs +++ b/app/rust/src/parser/transactions.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -69,6 +69,14 @@ cfg_if! { TransformSubnetTx, AddPermissionlessValidatorTx, AddPermissionlessDelegatorTx, + + // ACP-77 + ConvertSubnetToL1Tx, + RegisterL1ValidatorTx, + SetL1ValidatorWeightTx, + DisableL1ValidatorTx, + IncreaseL1ValidatorBalanceTx + }; } } @@ -101,7 +109,8 @@ use super::PVM_ADD_DELEGATOR; cfg_if! { if #[cfg(feature = "banff")] { use super::{ - PVM_ADD_PERMISSIONLESS_DELEGATOR, PVM_ADD_PERMISSIONLESS_VALIDATOR, PVM_TRANSFORM_SUBNET, PVM_REMOVE_SUBNET_VALIDATOR + PVM_ADD_PERMISSIONLESS_DELEGATOR, PVM_ADD_PERMISSIONLESS_VALIDATOR, PVM_TRANSFORM_SUBNET, PVM_REMOVE_SUBNET_VALIDATOR, + PVM_CONVERT_SUBNET_L1, PVM_INCREASE_L1_VALIDATOR_BALANCE, PVM_DISABLE_L1_VALIDATOR, PVM_SET_L1_VALIDATOR_WEIGHT, PVM_REGISTER_L1_VALIDATOR }; } } @@ -150,6 +159,16 @@ impl TryFrom<(u32, NetworkInfo)> for Transaction__Type { PVM_ADD_PERMISSIONLESS_VALIDATOR => Transaction__Type::PermissionlessValidator, #[cfg(feature = "banff")] PVM_ADD_PERMISSIONLESS_DELEGATOR => Transaction__Type::PermissionlessDelegator, + #[cfg(feature = "banff")] + PVM_CONVERT_SUBNET_L1 => Transaction__Type::ConvertSubnetToL1, + #[cfg(feature = "banff")] + PVM_REGISTER_L1_VALIDATOR => Transaction__Type::RegisterL1Validator, + #[cfg(feature = "banff")] + PVM_SET_L1_VALIDATOR_WEIGHT => Transaction__Type::SetL1ValidatorWeight, + #[cfg(feature = "banff")] + PVM_DISABLE_L1_VALIDATOR => Transaction__Type::DisableL1Validator, + #[cfg(feature = "banff")] + PVM_INCREASE_L1_VALIDATOR_BALANCE => Transaction__Type::IncreaseL1ValidatorBalance, _ => return Err(ParserError::InvalidTransactionType), }; @@ -190,6 +209,16 @@ pub enum Transaction<'b> { PermissionlessValidator(AddPermissionlessValidatorTx<'b>), #[cfg(feature = "banff")] PermissionlessDelegator(AddPermissionlessDelegatorTx<'b>), + #[cfg(feature = "banff")] + ConvertSubnetToL1(ConvertSubnetToL1Tx<'b>), + #[cfg(feature = "banff")] + RegisterL1Validator(RegisterL1ValidatorTx<'b>), + #[cfg(feature = "banff")] + SetL1ValidatorWeight(SetL1ValidatorWeightTx<'b>), + #[cfg(feature = "banff")] + DisableL1Validator(DisableL1ValidatorTx<'b>), + #[cfg(feature = "banff")] + IncreaseL1ValidatorBalance(IncreaseL1ValidatorBalanceTx<'b>), } impl<'b> Transaction<'b> { @@ -325,6 +354,33 @@ impl<'b> Transaction<'b> { |out| AddPermissionlessDelegatorTx::from_bytes_into(input, out), out, ), + #[cfg(feature = "banff")] + Transaction__Type::ConvertSubnetToL1 => Self::init_as_convert_subnet_to_l_1( + |out| ConvertSubnetToL1Tx::from_bytes_into(input, out), + out, + ), + #[cfg(feature = "banff")] + Transaction__Type::RegisterL1Validator => Self::init_as_register_l_1_validator( + |out| RegisterL1ValidatorTx::from_bytes_into(input, out), + out, + ), + #[cfg(feature = "banff")] + Transaction__Type::SetL1ValidatorWeight => Self::init_as_set_l_1_validator_weight( + |out| SetL1ValidatorWeightTx::from_bytes_into(input, out), + out, + ), + #[cfg(feature = "banff")] + Transaction__Type::DisableL1Validator => Self::init_as_disable_l_1_validator( + |out| DisableL1ValidatorTx::from_bytes_into(input, out), + out, + ), + #[cfg(feature = "banff")] + Transaction__Type::IncreaseL1ValidatorBalance => { + Self::init_as_increase_l_1_validator_balance( + |out| IncreaseL1ValidatorBalanceTx::from_bytes_into(input, out), + out, + ) + } } } @@ -366,6 +422,16 @@ impl<'b> DisplayableItem for Transaction<'b> { Self::PermissionlessValidator(tx) => tx.num_items(), #[cfg(feature = "banff")] Self::PermissionlessDelegator(tx) => tx.num_items(), + #[cfg(feature = "banff")] + Self::ConvertSubnetToL1(tx) => tx.num_items(), + #[cfg(feature = "banff")] + Self::IncreaseL1ValidatorBalance(tx) => tx.num_items(), + #[cfg(feature = "banff")] + Self::DisableL1Validator(tx) => tx.num_items(), + #[cfg(feature = "banff")] + Self::SetL1ValidatorWeight(tx) => tx.num_items(), + #[cfg(feature = "banff")] + Self::RegisterL1Validator(tx) => tx.num_items(), } } @@ -406,6 +472,16 @@ impl<'b> DisplayableItem for Transaction<'b> { Self::PermissionlessValidator(tx) => tx.render_item(item_n, title, message, page), #[cfg(feature = "banff")] Self::PermissionlessDelegator(tx) => tx.render_item(item_n, title, message, page), + #[cfg(feature = "banff")] + Self::ConvertSubnetToL1(tx) => tx.render_item(item_n, title, message, page), + #[cfg(feature = "banff")] + Self::IncreaseL1ValidatorBalance(tx) => tx.render_item(item_n, title, message, page), + #[cfg(feature = "banff")] + Self::DisableL1Validator(tx) => tx.render_item(item_n, title, message, page), + #[cfg(feature = "banff")] + Self::SetL1ValidatorWeight(tx) => tx.render_item(item_n, title, message, page), + #[cfg(feature = "banff")] + Self::RegisterL1Validator(tx) => tx.render_item(item_n, title, message, page), } } } diff --git a/app/rust/src/parser/transactions/avm/create_asset.rs b/app/rust/src/parser/transactions/avm/create_asset.rs index bc4eac09a..9df178e77 100644 --- a/app/rust/src/parser/transactions/avm/create_asset.rs +++ b/app/rust/src/parser/transactions/avm/create_asset.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/avm/export_tx.rs b/app/rust/src/parser/transactions/avm/export_tx.rs index 0144f2c62..0a56802d0 100644 --- a/app/rust/src/parser/transactions/avm/export_tx.rs +++ b/app/rust/src/parser/transactions/avm/export_tx.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/avm/import_tx.rs b/app/rust/src/parser/transactions/avm/import_tx.rs index 33abc18c7..0a5d36558 100644 --- a/app/rust/src/parser/transactions/avm/import_tx.rs +++ b/app/rust/src/parser/transactions/avm/import_tx.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/avm/operation_tx.rs b/app/rust/src/parser/transactions/avm/operation_tx.rs index b9fc45ef4..b5173fca4 100644 --- a/app/rust/src/parser/transactions/avm/operation_tx.rs +++ b/app/rust/src/parser/transactions/avm/operation_tx.rs @@ -1,6 +1,6 @@ use crate::checked_add; /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/base_export.rs b/app/rust/src/parser/transactions/base_export.rs index f7896e060..70250842d 100644 --- a/app/rust/src/parser/transactions/base_export.rs +++ b/app/rust/src/parser/transactions/base_export.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG AG AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/base_import.rs b/app/rust/src/parser/transactions/base_import.rs index 705ceba27..ad8270462 100644 --- a/app/rust/src/parser/transactions/base_import.rs +++ b/app/rust/src/parser/transactions/base_import.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/base_tx_fields.rs b/app/rust/src/parser/transactions/base_tx_fields.rs index 2b72c9aa2..6aa115329 100644 --- a/app/rust/src/parser/transactions/base_tx_fields.rs +++ b/app/rust/src/parser/transactions/base_tx_fields.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/pvm/add_delegator.rs b/app/rust/src/parser/transactions/pvm/add_delegator.rs index 74219e03e..e7ec9f75e 100644 --- a/app/rust/src/parser/transactions/pvm/add_delegator.rs +++ b/app/rust/src/parser/transactions/pvm/add_delegator.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/pvm/add_subnet_validator.rs b/app/rust/src/parser/transactions/pvm/add_subnet_validator.rs index 10c652c7f..8f432e9b6 100644 --- a/app/rust/src/parser/transactions/pvm/add_subnet_validator.rs +++ b/app/rust/src/parser/transactions/pvm/add_subnet_validator.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/pvm/add_validator.rs b/app/rust/src/parser/transactions/pvm/add_validator.rs index f556a6a47..3409163b5 100644 --- a/app/rust/src/parser/transactions/pvm/add_validator.rs +++ b/app/rust/src/parser/transactions/pvm/add_validator.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/pvm/banff.rs b/app/rust/src/parser/transactions/pvm/banff.rs index 815b53fb5..b3d4b6585 100644 --- a/app/rust/src/parser/transactions/pvm/banff.rs +++ b/app/rust/src/parser/transactions/pvm/banff.rs @@ -24,3 +24,18 @@ pub use add_permissionless_validator::*; mod add_permissionless_delegator; pub use add_permissionless_delegator::*; + +mod convert_subnet_to_l1; +pub use convert_subnet_to_l1::*; + +mod increase_l1_validator_balance; +pub use increase_l1_validator_balance::*; + +mod disable_l1_validator; +pub use disable_l1_validator::*; + +mod set_l1_validator_weight; +pub use set_l1_validator_weight::*; + +mod register_l1_validator; +pub use register_l1_validator::*; diff --git a/app/rust/src/parser/transactions/pvm/banff/convert_subnet_to_l1.rs b/app/rust/src/parser/transactions/pvm/banff/convert_subnet_to_l1.rs new file mode 100644 index 000000000..3e063376f --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/convert_subnet_to_l1.rs @@ -0,0 +1,262 @@ +/******************************************************************************* +* (c) 2023 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +use bolos::{hex_encode, PIC}; +use core::{mem::MaybeUninit, ptr::addr_of_mut}; +use nom::bytes::complete::{tag, take}; +use nom::number::complete::be_u32; +use zemu_sys::ViewError; + +use crate::parser::chain_id::ChainId; +use crate::{ + constants::CHAIN_ID_LEN, + handlers::handle_ui_message, + parser::{ + l1_validator::L1Validator, nano_avax_to_fp_str, BaseTxFields, DisplayableItem, FromBytes, + Header, ObjectList, ParserError, PvmOutput, SubnetAuth, SubnetId, PVM_CONVERT_SUBNET_L1, + }, +}; + +#[derive(Clone, Copy, PartialEq, Eq)] +#[repr(C)] +#[cfg_attr(test, derive(Debug))] +pub struct ConvertSubnetToL1Tx<'b> { + pub tx_header: Header<'b>, + pub base_tx: BaseTxFields<'b, PvmOutput<'b>>, + pub subnet_id: SubnetId<'b>, + pub chain_id: ChainId<'b>, + pub address: &'b [u8], + pub address_len: u32, + pub validators: ObjectList<'b, L1Validator<'b>>, + pub subnet_auth: SubnetAuth<'b>, +} + +impl<'b> ConvertSubnetToL1Tx<'b> { + /// Sums the balances of all L1 validators in the list. + fn sum_validators_balances(&self) -> Result { + let mut total_balance = 0u64; + + for validator in self.validators.iter() { + total_balance = total_balance + .checked_add(validator.balance) + .ok_or(ParserError::OperationOverflows)?; + } + + Ok(total_balance) + } + + // Info at https://github.com/ava-labs/avalanchejs/blob/master/src/utils/getBurnedAmountByTx.ts + fn fee(&'b self) -> Result { + let sum_inputs = self.base_tx.sum_inputs_amount()?; + + let base_outputs = self.base_tx.sum_outputs_amount()?; + + let mut fee = sum_inputs + .checked_sub(base_outputs) + .ok_or(ParserError::OperationOverflows)?; + + fee = fee + .checked_sub(self.sum_validators_balances()?) + .ok_or(ParserError::OperationOverflows)?; + + Ok(fee) + } + + /// Returns the number of validators in the list. + fn num_validators(&self) -> usize { + self.validators.iter().count() + } +} + +impl<'b> FromBytes<'b> for ConvertSubnetToL1Tx<'b> { + #[inline(never)] + fn from_bytes_into( + input: &'b [u8], + out: &mut MaybeUninit, + ) -> Result<&'b [u8], nom::Err> { + crate::sys::zemu_log_stack("ConvertSubnetToL1Tx::from_bytes_into\x00"); + + let (rem, _) = tag(PVM_CONVERT_SUBNET_L1.to_be_bytes())(input)?; + + let out = out.as_mut_ptr(); + + // tx header + let tx_header = unsafe { &mut *addr_of_mut!((*out).tx_header).cast() }; + let rem = Header::from_bytes_into(rem, tx_header)?; + + // base_tx + let base_tx = unsafe { &mut *addr_of_mut!((*out).base_tx).cast() }; + let rem = BaseTxFields::::from_bytes_into(rem, base_tx)?; + + // subnet_id + let subnet_id = unsafe { &mut *addr_of_mut!((*out).subnet_id).cast() }; + let rem = SubnetId::from_bytes_into(rem, subnet_id)?; + let subnet_id_ref = unsafe { subnet_id.assume_init_ref() }; // Get a reference to the initialized value + + if subnet_id_ref.is_primary_network() { + return Err(ParserError::UnexpectedField.into()); + } + + // chain_id + let chain_id = unsafe { &mut *addr_of_mut!((*out).chain_id).cast() }; + let rem = ChainId::from_bytes_into(rem, chain_id)?; + + // address + let (rem, address_len) = be_u32(rem)?; + let (rem, address) = take(address_len as usize)(rem)?; + + // validators + let validators = unsafe { &mut *addr_of_mut!((*out).validators).cast() }; + let rem = ObjectList::::new_into(rem, validators)?; + + // subnetAuth + let subnet_auth = unsafe { &mut *addr_of_mut!((*out).subnet_auth).cast() }; + let rem = SubnetAuth::from_bytes_into(rem, subnet_auth)?; + + unsafe { + addr_of_mut!((*out).address).write(address); + } + + Ok(rem) + } +} + +impl<'b> DisplayableItem for ConvertSubnetToL1Tx<'b> { + fn num_items(&self) -> Result { + // tx description, chain_id, address, fee, validators + let num_validators = 4u8 + self.num_validators() as u8; + Ok(num_validators) + } + + fn render_item( + &self, + item_n: u8, + title: &mut [u8], + message: &mut [u8], + page: u8, + ) -> Result { + use bolos::pic_str; + use lexical_core::Number; + let mut buffer = [0; u64::FORMATTED_SIZE_DECIMAL + 2]; + let prefix = pic_str!(b"0x"!); + match item_n { + 0 => { + let label = pic_str!(b"ConvertSubnetToL1"); + title[..label.len()].copy_from_slice(label); + let content = pic_str!(b"Transaction"); + handle_ui_message(content, message, page) + } + 1 => self.chain_id.render_item(0, title, message, page), + 2 => { + let label = pic_str!(b"Validator"); + title[..label.len()].copy_from_slice(label); + + // prefix + let mut out = [0; CHAIN_ID_LEN * 2 + 2]; + let mut sz = prefix.len(); + out[..prefix.len()].copy_from_slice(&prefix[..]); + + sz += hex_encode(self.address, &mut out[prefix.len()..]) + .map_err(|_| ViewError::Unknown)?; + + handle_ui_message(&out[..sz], message, page) + } + 3 => { + let label = pic_str!(b"Fee(AVAX)"); + title[..label.len()].copy_from_slice(label); + + let fee = self.fee().map_err(|_| ViewError::Unknown)?; + let fee_buff = + nano_avax_to_fp_str(fee, &mut buffer[..]).map_err(|_| ViewError::Unknown)?; + + handle_ui_message(fee_buff, message, page) + } + x @ 4.. => { + let validator_n = x - 4; + let validator = self.validators.get((validator_n + 1).into()).unwrap(); + // Print the chain ID for the validator + validator.node_id.render_item(0, title, message, page) + } + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::prelude::v1::*; + + use crate::parser::snapshots_common::ReducedPage; + use zuit::Page; + + const DATA: &[u8] = &[]; + + include!("testvectors/convert_subnet_to_l1.rs"); + #[test] + fn parse_convert_subnet() { + let subnet_id = SubnetId::new(&[ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, + 0x35, 0x36, 0x37, 0x38, + ]); + let manager_chain_id = ChainId::new(&[ + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x01, 0x02, 0x03, 0x04, + 0x05, 0x06, 0x07, 0x08, + ]); + + let manager_address = &[ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xde, 0xad, + ]; + + let (_, tx) = ConvertSubnetToL1Tx::from_bytes(SIMPLE_CONVERT_SUBNET).unwrap(); + assert_eq!(tx.subnet_id, subnet_id); + assert_eq!(tx.chain_id, manager_chain_id); + assert_eq!(tx.address, manager_address); + + let (_, tx) = ConvertSubnetToL1Tx::from_bytes(COMPLEX_CONVERT_SUBNET).unwrap(); + assert_eq!(tx.subnet_id, subnet_id); + assert_eq!(tx.chain_id, manager_chain_id); + assert_eq!(tx.address, manager_address); + } + + #[test] + #[cfg_attr(miri, ignore)] + fn ui_convert_subnet_to_l1() { + for (i, data) in [SIMPLE_CONVERT_SUBNET, COMPLEX_CONVERT_SUBNET] + .iter() + .enumerate() + { + println!("-------------------- Convert Subnet to L1 TX #{i} ------------------------"); + let (_, tx) = ConvertSubnetToL1Tx::from_bytes(data).unwrap(); + + let items = tx.num_items().expect("Overflow?"); + + let mut pages = Vec::>::with_capacity(items as usize); + for i in 0..items { + let mut page = Page::default(); + + tx.render_item(i as _, &mut page.title, &mut page.message, 0) + .unwrap(); + + pages.push(page); + } + + let reduced = pages.iter().map(ReducedPage::from).collect::>(); + insta::assert_debug_snapshot!(reduced); + } + } +} diff --git a/app/rust/src/parser/transactions/pvm/banff/disable_l1_validator.rs b/app/rust/src/parser/transactions/pvm/banff/disable_l1_validator.rs new file mode 100644 index 000000000..99f9093da --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/disable_l1_validator.rs @@ -0,0 +1,189 @@ +/******************************************************************************* +* (c) 2023 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +use crate::utils::hex_encode; +use core::{mem::MaybeUninit, ptr::addr_of_mut}; +use nom::bytes::complete::{tag, take}; + +use zemu_sys::ViewError; + +use crate::{ + handlers::handle_ui_message, + parser::{ + nano_avax_to_fp_str, BaseTxFields, DisplayableItem, FromBytes, Header, ParserError, + PvmOutput, SubnetAuth, PVM_DISABLE_L1_VALIDATOR, + }, +}; + +pub const VALIDATION_ID_LEN: usize = 32; + +#[derive(Clone, Copy, PartialEq, Eq)] +#[repr(C)] +#[cfg_attr(test, derive(Debug))] +pub struct DisableL1ValidatorTx<'b> { + pub tx_header: Header<'b>, + pub base_tx: BaseTxFields<'b, PvmOutput<'b>>, + pub validation_id: &'b [u8; VALIDATION_ID_LEN], + pub disable_auth: SubnetAuth<'b>, +} + +impl<'b> DisableL1ValidatorTx<'b> { + fn fee(&'b self) -> Result { + let sum_inputs = self.base_tx.sum_inputs_amount()?; + + let base_outputs = self.base_tx.sum_outputs_amount()?; + + let fee = sum_inputs + .checked_sub(base_outputs) + .ok_or(ParserError::OperationOverflows)?; + Ok(fee) + } +} + +impl<'b> FromBytes<'b> for DisableL1ValidatorTx<'b> { + fn from_bytes_into( + input: &'b [u8], + out: &mut MaybeUninit, + ) -> Result<&'b [u8], nom::Err> { + let (rem, _) = tag(PVM_DISABLE_L1_VALIDATOR.to_be_bytes())(input)?; + + let out = out.as_mut_ptr(); + + // tx header + let tx_header = unsafe { &mut *addr_of_mut!((*out).tx_header).cast() }; + let rem = Header::from_bytes_into(rem, tx_header)?; + + // base_tx + let base_tx = unsafe { &mut *addr_of_mut!((*out).base_tx).cast() }; + let rem = BaseTxFields::::from_bytes_into(rem, base_tx)?; + + // validator_id + let (rem, validation_id) = take(VALIDATION_ID_LEN)(rem)?; + let validation_id = arrayref::array_ref!(validation_id, 0, 32); + + // disable_auth + let disable_auth = unsafe { &mut *addr_of_mut!((*out).disable_auth).cast() }; + let rem = SubnetAuth::from_bytes_into(rem, disable_auth)?; + + unsafe { + (*out).validation_id = validation_id; + } + + Ok(rem) + } +} + +impl<'b> DisplayableItem for DisableL1ValidatorTx<'b> { + fn num_items(&self) -> Result { + // tx description, validator id, fee + Ok(3) + } + + fn render_item( + &self, + item_n: u8, + title: &mut [u8], + message: &mut [u8], + page: u8, + ) -> Result { + use bolos::{pic_str, PIC}; + use lexical_core::Number; + let mut buffer = [0; u64::FORMATTED_SIZE_DECIMAL + 2]; + + match item_n { + 0 => { + let label = pic_str!(b"DisableL1Val"); + title[..label.len()].copy_from_slice(label); + let content = pic_str!(b"transaction"); + handle_ui_message(content, message, page) + } + 1 => { + let prefix = pic_str!(b"0x"!); + let label = pic_str!(b"Validator"); + title[..label.len()].copy_from_slice(label); + + // prefix + let mut out = [0; VALIDATION_ID_LEN * 2 + 2]; + let mut sz = prefix.len(); + out[..prefix.len()].copy_from_slice(&prefix[..]); + + sz += hex_encode(self.validation_id, &mut out[prefix.len()..]) + .map_err(|_| ViewError::Unknown)?; + + handle_ui_message(&out[..sz], message, page) + } + 2 => { + let label = pic_str!(b"Fee(AVAX)"); + title[..label.len()].copy_from_slice(label); + + let fee = self.fee().map_err(|_| ViewError::Unknown)?; + let fee_buff = + nano_avax_to_fp_str(fee, &mut buffer[..]).map_err(|_| ViewError::Unknown)?; + + handle_ui_message(fee_buff, message, page) + } + _ => Err(ViewError::NoData), + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::prelude::v1::*; + + use crate::parser::snapshots_common::ReducedPage; + use zuit::Page; + + const DATA: &[u8] = &[]; + + include!("testvectors/disable_l1_validator.rs"); + #[test] + fn parse_disable_l1_validator() { + let validation_id = &[ + 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, + 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, + 0x89, 0xab, 0xcd, 0xef, + ]; + + let (_, tx) = DisableL1ValidatorTx::from_bytes(DISABLE_L1_VALIDATOR_DATA).unwrap(); + assert_eq!(tx.validation_id, validation_id); + assert_eq!(tx.disable_auth.sig_indices.len(), 1); + assert_eq!(tx.disable_auth.sig_indices[0][3], 9); + } + + #[test] + #[cfg_attr(miri, ignore)] + fn ui_disable_l1_validator() { + println!("-------------------- Disable L1 Validator TX ------------------------"); + let (_, tx) = DisableL1ValidatorTx::from_bytes(DISABLE_L1_VALIDATOR_DATA).unwrap(); + + let items = tx.num_items().expect("Overflow?"); + + let mut pages = Vec::>::with_capacity(items as usize); + for i in 0..items { + let mut page = Page::default(); + + tx.render_item(i as _, &mut page.title, &mut page.message, 0) + .unwrap(); + + pages.push(page); + } + + let reduced = pages.iter().map(ReducedPage::from).collect::>(); + insta::assert_debug_snapshot!(reduced); + } +} diff --git a/app/rust/src/parser/transactions/pvm/banff/increase_l1_validator_balance.rs b/app/rust/src/parser/transactions/pvm/banff/increase_l1_validator_balance.rs new file mode 100644 index 000000000..34cb45402 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/increase_l1_validator_balance.rs @@ -0,0 +1,206 @@ +/******************************************************************************* +* (c) 2023 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +use crate::utils::hex_encode; +use crate::{ + handlers::handle_ui_message, + parser::{ + nano_avax_to_fp_str, BaseTxFields, DisplayableItem, FromBytes, Header, ParserError, + PvmOutput, PVM_INCREASE_L1_VALIDATOR_BALANCE, + }, +}; +use bolos::PIC; +use core::{mem::MaybeUninit, ptr::addr_of_mut}; +use nom::bytes::complete::{tag, take}; +use nom::number::complete::be_u64; +use zemu_sys::ViewError; + +pub const VALIDATION_ID_LEN: usize = 32; + +#[derive(Clone, Copy, PartialEq, Eq)] +#[repr(C)] +#[cfg_attr(test, derive(Debug))] +pub struct IncreaseL1ValidatorBalanceTx<'b> { + pub tx_header: Header<'b>, + pub base_tx: BaseTxFields<'b, PvmOutput<'b>>, + pub validation_id: &'b [u8; VALIDATION_ID_LEN], + pub balance: u64, +} + +// Info at https://github.com/ava-labs/avalanchejs/blob/master/src/utils/getBurnedAmountByTx.ts +impl<'b> IncreaseL1ValidatorBalanceTx<'b> { + fn fee(&'b self) -> Result { + let sum_inputs = self.base_tx.sum_inputs_amount()?; + + let base_outputs = self.base_tx.sum_outputs_amount()?; + + let mut fee = sum_inputs + .checked_sub(base_outputs) + .ok_or(ParserError::OperationOverflows)?; + + fee = fee + .checked_sub(self.balance) + .ok_or(ParserError::OperationOverflows)?; + Ok(fee) + } +} + +impl<'b> FromBytes<'b> for IncreaseL1ValidatorBalanceTx<'b> { + fn from_bytes_into( + input: &'b [u8], + out: &mut MaybeUninit, + ) -> Result<&'b [u8], nom::Err> { + crate::sys::zemu_log_stack("IncreaseL1ValidatorBalanceTx::from_bytes_into\x00"); + + let (rem, _) = tag(PVM_INCREASE_L1_VALIDATOR_BALANCE.to_be_bytes())(input)?; + + let out = out.as_mut_ptr(); + + // tx header + let tx_header = unsafe { &mut *addr_of_mut!((*out).tx_header).cast() }; + let rem = Header::from_bytes_into(rem, tx_header)?; + + // base_tx + let base_tx = unsafe { &mut *addr_of_mut!((*out).base_tx).cast() }; + let rem = BaseTxFields::::from_bytes_into(rem, base_tx)?; + + // validation_id + let (rem, validation_id) = take(32usize)(rem)?; // Read 32 bytes + let validation_id = arrayref::array_ref!(validation_id, 0, 32); + + // balance + let (rem, balance) = be_u64(rem)?; + + unsafe { + addr_of_mut!((*out).validation_id).write(validation_id); + addr_of_mut!((*out).balance).write(balance); + } + + Ok(rem) + } +} + +impl<'b> DisplayableItem for IncreaseL1ValidatorBalanceTx<'b> { + fn num_items(&self) -> Result { + // tx_info, validation_id, amount, fee + Ok(4u8) + } + + fn render_item( + &self, + item_n: u8, + title: &mut [u8], + message: &mut [u8], + page: u8, + ) -> Result { + use bolos::pic_str; + use lexical_core::Number; + + let mut buffer = [0; u64::FORMATTED_SIZE_DECIMAL + 2]; + + match item_n { + 0 => { + let label = pic_str!(b"IncreaseL1ValBal"); + title[..label.len()].copy_from_slice(label); + let content = pic_str!(b"Transaction"); + handle_ui_message(content, message, page) + } + 1 => { + let prefix = pic_str!(b"0x"!); + let label = pic_str!(b"Validator"); + title[..label.len()].copy_from_slice(label); + + // prefix + let mut out = [0; VALIDATION_ID_LEN * 2 + 2]; + let mut sz = prefix.len(); + out[..prefix.len()].copy_from_slice(&prefix[..]); + + sz += hex_encode(self.validation_id, &mut out[prefix.len()..]) + .map_err(|_| ViewError::Unknown)?; + + handle_ui_message(&out[..sz], message, page) + } + 2 => { + let label = pic_str!(b"Amount(AVAX)"); + title[..label.len()].copy_from_slice(label); + + let balance_buff = nano_avax_to_fp_str(self.balance, &mut buffer[..]) + .map_err(|_| ViewError::Unknown)?; + + handle_ui_message(balance_buff, message, page) + } + 3 => { + let label = pic_str!(b"Fee(AVAX)"); + title[..label.len()].copy_from_slice(label); + + let fee = self.fee().map_err(|_| ViewError::Unknown)?; + let fee_buff = + nano_avax_to_fp_str(fee, &mut buffer[..]).map_err(|_| ViewError::Unknown)?; + + handle_ui_message(fee_buff, message, page) + } + _ => Err(ViewError::NoData), + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::prelude::v1::*; + + use crate::parser::snapshots_common::ReducedPage; + use zuit::Page; + + const DATA: &[u8] = &[]; + + include!("testvectors/increase_l1_validator_balance.rs"); + #[test] + fn parse_increase_l1_validator_balance() { + let validation_id = &[ + 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, + 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, + 0x89, 0xab, 0xcd, 0xef, + ]; + + let (_, tx) = + IncreaseL1ValidatorBalanceTx::from_bytes(INCREASE_L1_VALIDATOR_BALANCE_DATA).unwrap(); + assert_eq!(tx.validation_id, validation_id); + assert_eq!(tx.balance, 1000000000); + } + + #[test] + #[cfg_attr(miri, ignore)] + fn ui_increase_l1_validator_balance() { + println!("-------------------- Increase L1 Validator Balance TX ------------------------"); + let (_, tx) = + IncreaseL1ValidatorBalanceTx::from_bytes(INCREASE_L1_VALIDATOR_BALANCE_DATA).unwrap(); + + let items = tx.num_items().expect("Overflow?"); + + let mut pages = Vec::>::with_capacity(items as usize); + for i in 0..items { + let mut page = Page::default(); + + tx.render_item(i as _, &mut page.title, &mut page.message, 0) + .unwrap(); + + pages.push(page); + } + + let reduced = pages.iter().map(ReducedPage::from).collect::>(); + insta::assert_debug_snapshot!(reduced); + } +} diff --git a/app/rust/src/parser/transactions/pvm/banff/register_l1_validator.rs b/app/rust/src/parser/transactions/pvm/banff/register_l1_validator.rs new file mode 100644 index 000000000..86bf96dc3 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/register_l1_validator.rs @@ -0,0 +1,285 @@ +use crate::parser::{nano_avax_to_fp_str, ADDRESS_LEN}; +use crate::utils::hex_encode; +use crate::{ + handlers::handle_ui_message, + parser::{ + pchain_owner::PchainOwner, proof_of_possession::BLS_SIGNATURE_LEN, BaseTxFields, + DisplayableItem, FromBytes, Header, NodeId, ParserError, PvmOutput, SubnetId, + PVM_REGISTER_L1_VALIDATOR, + }, +}; +use bolos::PIC; +use core::{mem::MaybeUninit, ptr::addr_of_mut}; +use nom::{ + bytes::complete::{tag, take}, + number::complete::{be_u16, be_u32, be_u64}, +}; +use zemu_sys::ViewError; + +#[derive(Clone, Copy, PartialEq, Eq)] +#[repr(C)] +#[cfg_attr(test, derive(Debug))] +pub struct RegisterL1ValidatorTx<'b> { + pub tx_header: Header<'b>, + pub base_tx: BaseTxFields<'b, PvmOutput<'b>>, + pub balance: u64, + pub signer: &'b [u8; BLS_SIGNATURE_LEN], + // RegisterL1ValidatorMessage payload + pub codec_id: u16, + pub type_id: u32, + pub subnet_id: SubnetId<'b>, + pub node_id: NodeId<'b>, + pub bls_pubkey: &'b [u8; 48], + pub expiry: u64, + pub remaining_balance_owner: PchainOwner<'b>, + pub disable_owner: PchainOwner<'b>, + pub weight: u64, +} + +impl<'b> FromBytes<'b> for RegisterL1ValidatorTx<'b> { + fn from_bytes_into( + input: &'b [u8], + out: &mut MaybeUninit, + ) -> Result<&'b [u8], nom::Err> { + crate::sys::zemu_log_stack("RegisterL1ValidatorTx::from_bytes_into\x00"); + + let (rem, _) = tag(PVM_REGISTER_L1_VALIDATOR.to_be_bytes())(input)?; + + let out = out.as_mut_ptr(); + + // tx header + let tx_header = unsafe { &mut *addr_of_mut!((*out).tx_header).cast() }; + let rem = Header::from_bytes_into(rem, tx_header)?; + + // base_tx + let base_tx = unsafe { &mut *addr_of_mut!((*out).base_tx).cast() }; + let rem = BaseTxFields::::from_bytes_into(rem, base_tx)?; + + // balance + let (rem, balance) = be_u64(rem)?; + + // signer + let (rem, signer) = take(BLS_SIGNATURE_LEN)(rem)?; + let signer = arrayref::array_ref!(signer, 0, BLS_SIGNATURE_LEN); + + // codec_id + let (rem, codec_id) = be_u16(rem)?; + + // type_id + let (rem, type_id) = be_u32(rem)?; + if type_id != 1 { + return Err(nom::Err::Error(ParserError::InvalidTypeId)); + } + + // subnet_id + let subnet_id = unsafe { &mut *addr_of_mut!((*out).subnet_id).cast() }; + let rem = SubnetId::from_bytes_into(rem, subnet_id)?; + + // Node id size, not used + let (rem, _unused_value) = take(4usize)(rem)?; + + // node_id + let node_id = unsafe { &mut *addr_of_mut!((*out).node_id).cast() }; + let rem = NodeId::from_bytes_into(rem, node_id)?; + + // bls_pubkey + let (rem, bls_pubkey) = take(48usize)(rem)?; + let bls_pubkey = arrayref::array_ref!(bls_pubkey, 0, 48); + + // expiration + let (rem, expiry) = be_u64(rem)?; + + // remaining_balance_owner + let remaining_balance_owner = + unsafe { &mut *addr_of_mut!((*out).remaining_balance_owner).cast() }; + let rem = PchainOwner::from_bytes_into(rem, remaining_balance_owner)?; + + // disable_owner + let disable_owner = unsafe { &mut *addr_of_mut!((*out).disable_owner).cast() }; + let rem = PchainOwner::from_bytes_into(rem, disable_owner)?; + + // weight + let (rem, weight) = be_u64(rem)?; + + unsafe { + addr_of_mut!((*out).codec_id).write(codec_id); + addr_of_mut!((*out).weight).write(weight); + addr_of_mut!((*out).balance).write(balance); + addr_of_mut!((*out).bls_pubkey).write(bls_pubkey); + addr_of_mut!((*out).expiry).write(expiry); + addr_of_mut!((*out).signer).write(signer); + } + + Ok(rem) + } +} + +impl<'b> RegisterL1ValidatorTx<'b> { + // Info at https://github.com/ava-labs/avalanchejs/blob/master/src/utils/getBurnedAmountByTx.ts + fn fee(&'b self) -> Result { + let sum_inputs = self.base_tx.sum_inputs_amount()?; + + let base_outputs = self.base_tx.sum_outputs_amount()?; + + let mut fee = sum_inputs + .checked_sub(base_outputs) + .ok_or(ParserError::OperationOverflows)?; + + fee = fee + .checked_sub(self.balance) + .ok_or(ParserError::OperationOverflows)?; + + Ok(fee) + } +} + +impl<'b> DisplayableItem for RegisterL1ValidatorTx<'b> { + fn num_items(&self) -> Result { + // tx_info, node_id, weight, balance, fee, remaining_balance_owner, disable_owner + let n_addresses = + self.remaining_balance_owner.addresses.len() + self.disable_owner.addresses.len(); + Ok(5u8 + n_addresses as u8) + } + + fn render_item( + &self, + item_n: u8, + title: &mut [u8], + message: &mut [u8], + page: u8, + ) -> Result { + use bolos::pic_str; + use lexical_core::{write as itoa, Number}; + let mut buffer = [0; u64::FORMATTED_SIZE + 2]; + + let n_remain_addresses = self.remaining_balance_owner.addresses.len(); + let n_disable_addresses = self.disable_owner.addresses.len(); + let prefix = pic_str!(b"0x"!); + match item_n { + 0 => { + let label = pic_str!(b"RegisterL1Val"); + title[..label.len()].copy_from_slice(label); + let content = pic_str!(b"Transaction"); + handle_ui_message(content, message, page) + } + 1 => self.node_id.render_item(0, title, message, page), + 2 => { + let label = pic_str!(b"Weight"); + title[..label.len()].copy_from_slice(label); + let buffer = itoa(self.weight, &mut buffer); + handle_ui_message(buffer, message, page) + } + 3 => { + let label = pic_str!(b"Balance (AVAX)"); + title[..label.len()].copy_from_slice(label); + + let balance_buff = nano_avax_to_fp_str(self.balance, &mut buffer[..]) + .map_err(|_| ViewError::Unknown)?; + + handle_ui_message(balance_buff, message, page) + } + 4 => { + let label = pic_str!(b"Fee(AVAX)"); + title[..label.len()].copy_from_slice(label); + + let fee = self.fee().map_err(|_| ViewError::Unknown)?; + let fee_buff = + nano_avax_to_fp_str(fee, &mut buffer[..]).map_err(|_| ViewError::Unknown)?; + + handle_ui_message(fee_buff, message, page) + } + x if x >= 5 && x < (5 + n_remain_addresses as u8) => { + let label = pic_str!(b"Rem Addr"); + title[..label.len()].copy_from_slice(label); + + let mut out = [0; ADDRESS_LEN * 2 + 2]; + let mut sz = prefix.len(); + out[..prefix.len()].copy_from_slice(&prefix[..]); + + sz += hex_encode( + self.remaining_balance_owner.addresses[x as usize - 5], + &mut out[prefix.len()..], + ) + .map_err(|_| ViewError::Unknown)?; + + handle_ui_message(&out[..sz], message, page) + } + x if x >= (5 + n_remain_addresses as u8) + && x < (5 + n_remain_addresses as u8 + n_disable_addresses as u8) => + { + let label = pic_str!(b"Disabler"); + title[..label.len()].copy_from_slice(label); + + let mut out = [0; ADDRESS_LEN * 2 + 2]; + let mut sz = prefix.len(); + out[..prefix.len()].copy_from_slice(&prefix[..]); + + sz += hex_encode( + self.disable_owner.addresses[x as usize - 5 - n_remain_addresses as usize], + &mut out[prefix.len()..], + ) + .map_err(|_| ViewError::Unknown)?; + + handle_ui_message(&out[..sz], message, page) + } + _ => Err(ViewError::NoData), + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::prelude::v1::*; + + use crate::parser::snapshots_common::ReducedPage; + use zuit::Page; + + const DATA: &[u8] = &[]; + + include!("testvectors/register_l1_validator.rs"); + #[test] + fn parse_register_l1_validator() { + let remaining_balance_owner_address = [ + 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, + 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, + ]; + + let disable_owner_address = [ + 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, + 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, + ]; + let (_, tx) = RegisterL1ValidatorTx::from_bytes(REGISTER_L1_VALIDATOR_DATA).unwrap(); + + assert_eq!( + tx.remaining_balance_owner.addresses[0], + remaining_balance_owner_address + ); + assert_eq!(tx.disable_owner.addresses[0], disable_owner_address); + assert_eq!(tx.weight, 11357690822530343844); + } + + #[test] + #[cfg_attr(miri, ignore)] + fn ui_register_l1_validator() { + for (i, data) in [REGISTER_L1_VALIDATOR_DATA].iter().enumerate() { + println!("-------------------- Register L1 Validator TX #{i} ------------------------"); + let (_, tx) = RegisterL1ValidatorTx::from_bytes(data).unwrap(); + + let items = tx.num_items().expect("Overflow?"); + + let mut pages = Vec::>::with_capacity(items as usize); + for i in 0..items { + let mut page = Page::default(); + + tx.render_item(i as _, &mut page.title, &mut page.message, 0) + .unwrap(); + + pages.push(page); + } + + let reduced = pages.iter().map(ReducedPage::from).collect::>(); + insta::assert_debug_snapshot!(reduced); + } + } +} diff --git a/app/rust/src/parser/transactions/pvm/banff/set_l1_validator_weight.rs b/app/rust/src/parser/transactions/pvm/banff/set_l1_validator_weight.rs new file mode 100644 index 000000000..21c84d716 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/set_l1_validator_weight.rs @@ -0,0 +1,206 @@ +use crate::utils::hex_encode; +use crate::{ + handlers::handle_ui_message, + parser::{ + nano_avax_to_fp_str, BaseTxFields, DisplayableItem, FromBytes, Header, ParserError, + PvmOutput, PVM_SET_L1_VALIDATOR_WEIGHT, + }, +}; +use bolos::PIC; +use core::{mem::MaybeUninit, ptr::addr_of_mut}; +use nom::{ + bytes::complete::{tag, take}, + number::complete::{be_u16, be_u32, be_u64}, +}; +use zemu_sys::ViewError; +pub const VALIDATION_ID_LEN: usize = 32; + +#[derive(Clone, Copy, PartialEq, Eq)] +#[repr(C)] +#[cfg_attr(test, derive(Debug))] +pub struct SetL1ValidatorWeightTx<'b> { + pub tx_header: Header<'b>, + pub base_tx: BaseTxFields<'b, PvmOutput<'b>>, + // Addressed Call + pub codec_id: u16, + pub type_id: u32, + pub validation_id: &'b [u8; 32], + pub nonce: u64, + pub weight: u64, +} + +impl<'b> FromBytes<'b> for SetL1ValidatorWeightTx<'b> { + fn from_bytes_into( + input: &'b [u8], + out: &mut MaybeUninit, + ) -> Result<&'b [u8], nom::Err> { + crate::sys::zemu_log_stack("SetL1ValidatorWeightTx::from_bytes_into\x00"); + + let (rem, _) = tag(PVM_SET_L1_VALIDATOR_WEIGHT.to_be_bytes())(input)?; + + let out = out.as_mut_ptr(); + + // tx header + let tx_header = unsafe { &mut *addr_of_mut!((*out).tx_header).cast() }; + let rem = Header::from_bytes_into(rem, tx_header)?; + + // base_tx + let base_tx = unsafe { &mut *addr_of_mut!((*out).base_tx).cast() }; + let rem = BaseTxFields::::from_bytes_into(rem, base_tx)?; + + // codec_id + let (rem, codec_id) = be_u16(rem)?; + + // type_id + let (rem, type_id) = be_u32(rem)?; + if type_id != 3 { + return Err(nom::Err::Error(ParserError::InvalidTypeId)); + } + + // validation_id + let (rem, validation_id) = take(32usize)(rem)?; + let validation_id = arrayref::array_ref!(validation_id, 0, 32); + + // nonce + let (rem, nonce) = be_u64(rem)?; + + // weight + let (rem, weight) = be_u64(rem)?; + + unsafe { + addr_of_mut!((*out).codec_id).write(codec_id); + addr_of_mut!((*out).validation_id).write(validation_id); + addr_of_mut!((*out).nonce).write(nonce); + addr_of_mut!((*out).weight).write(weight); + } + + Ok(rem) + } +} + +impl<'b> SetL1ValidatorWeightTx<'b> { + fn fee(&'b self) -> Result { + let sum_inputs = self.base_tx.sum_inputs_amount()?; + + let base_outputs = self.base_tx.sum_outputs_amount()?; + + let fee = sum_inputs + .checked_sub(base_outputs) + .ok_or(ParserError::OperationOverflows)?; + Ok(fee) + } +} + +impl<'b> DisplayableItem for SetL1ValidatorWeightTx<'b> { + fn num_items(&self) -> Result { + // tx_info, validation_id, nonce, weight + Ok(4u8) + } + + fn render_item( + &self, + item_n: u8, + title: &mut [u8], + message: &mut [u8], + page: u8, + ) -> Result { + use bolos::pic_str; + use lexical_core::{write as itoa, Number}; + let mut buffer = [0; u64::FORMATTED_SIZE + 2]; + + match item_n { + 0 => { + let label = pic_str!(b"SetL1ValWeight"); + title[..label.len()].copy_from_slice(label); + let content = pic_str!(b"Transaction"); + handle_ui_message(content, message, page) + } + 1 => { + let prefix = pic_str!(b"0x"!); + let label = pic_str!(b"Validator"); + title[..label.len()].copy_from_slice(label); + + // prefix + let mut out = [0; VALIDATION_ID_LEN * 2 + 2]; + let mut sz = prefix.len(); + out[..prefix.len()].copy_from_slice(&prefix[..]); + + sz += hex_encode(self.validation_id, &mut out[prefix.len()..]) + .map_err(|_| ViewError::Unknown)?; + + handle_ui_message(&out[..sz], message, page) + } + 2 => { + let label = pic_str!(b"Nonce"); + title[..label.len()].copy_from_slice(label); + let buffer = itoa(self.nonce, &mut buffer); + handle_ui_message(buffer, message, page) + } + 3 => { + let label = pic_str!(b"Weight"); + title[..label.len()].copy_from_slice(label); + let buffer = itoa(self.weight, &mut buffer); + handle_ui_message(buffer, message, page) + } + 4 => { + let label = pic_str!(b"Fee(AVAX)"); + title[..label.len()].copy_from_slice(label); + + let fee = self.fee().map_err(|_| ViewError::Unknown)?; + let fee_buff = + nano_avax_to_fp_str(fee, &mut buffer[..]).map_err(|_| ViewError::Unknown)?; + + handle_ui_message(fee_buff, message, page) + } + _ => Err(ViewError::NoData), + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::prelude::v1::*; + + use crate::parser::snapshots_common::ReducedPage; + use zuit::Page; + + const DATA: &[u8] = &[]; + + include!("testvectors/set_l1_validator_weight.rs"); + #[test] + fn parse_set_l1_validator_weight() { + let validation_id = &[ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, + 0x1d, 0x1e, 0x1f, 0x20, + ]; + + let (_, tx) = SetL1ValidatorWeightTx::from_bytes(SET_L1_VALIDATOR_WEIGHT_DATA).unwrap(); + assert_eq!(tx.validation_id, validation_id); + assert_eq!(tx.nonce, 0x2122232425262728); + assert_eq!(tx.weight, 0x292a2b2c2d2e2f30); + } + + #[test] + #[cfg_attr(miri, ignore)] + fn ui_set_l1_validator_weight() { + println!("-------------------- Set L1 Validator Weight TX ------------------------"); + let (_, tx) = SetL1ValidatorWeightTx::from_bytes(SET_L1_VALIDATOR_WEIGHT_DATA).unwrap(); + + let items = tx.num_items().expect("Overflow?"); + + let mut pages = Vec::>::with_capacity(items as usize); + for i in 0..items { + let mut page = Page::default(); + + tx.render_item(i as _, &mut page.title, &mut page.message, 0) + .unwrap(); + + pages.push(page); + } + + let reduced = pages.iter().map(ReducedPage::from).collect::>(); + insta::assert_debug_snapshot!(reduced); + } +} diff --git a/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__convert_subnet_to_l1__tests__ui_convert_subnet_to_l1-2.snap b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__convert_subnet_to_l1__tests__ui_convert_subnet_to_l1-2.snap new file mode 100644 index 000000000..7af0b10c0 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__convert_subnet_to_l1__tests__ui_convert_subnet_to_l1-2.snap @@ -0,0 +1,12 @@ +--- +source: src/parser/transactions/pvm/banff/convert_subnet_to_l1.rs +assertion_line: 259 +expression: reduced +--- +[ + "ConvertSubnetToL1": "Transaction", + "Chain ID": "0x3132333435363738212223242526272811121314151617180102030405060708", + "Validator": "0x000000000000000000000000000000000000dead", + "Fee(AVAX)": "1152921504.606846975", + "Validator": "NodeID-2ZbTY9GatRTrfinAoYiYLcf6CvrPAUYgo", +] diff --git a/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__convert_subnet_to_l1__tests__ui_convert_subnet_to_l1.snap b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__convert_subnet_to_l1__tests__ui_convert_subnet_to_l1.snap new file mode 100644 index 000000000..de8a41bbf --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__convert_subnet_to_l1__tests__ui_convert_subnet_to_l1.snap @@ -0,0 +1,11 @@ +--- +source: src/parser/transactions/pvm/banff/convert_subnet_to_l1.rs +assertion_line: 259 +expression: reduced +--- +[ + "ConvertSubnetToL1": "Transaction", + "Chain ID": "0x3132333435363738212223242526272811121314151617180102030405060708", + "Validator": "0x000000000000000000000000000000000000dead", + "Fee(AVAX)": "0.001", +] diff --git a/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__disable_l1_validator__tests__ui_disable_l1_validator.snap b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__disable_l1_validator__tests__ui_disable_l1_validator.snap new file mode 100644 index 000000000..d16a817a1 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__disable_l1_validator__tests__ui_disable_l1_validator.snap @@ -0,0 +1,10 @@ +--- +source: src/parser/transactions/pvm/banff/disable_l1_validator.rs +assertion_line: 187 +expression: reduced +--- +[ + "DisableL1Val": "transaction", + "Validator": "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", + "Fee(AVAX)": "1152921506.606846974", +] diff --git a/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__increase_l1_validator_balance__tests__ui_increase_l1_validator_balance.snap b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__increase_l1_validator_balance__tests__ui_increase_l1_validator_balance.snap new file mode 100644 index 000000000..ab41d18eb --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__increase_l1_validator_balance__tests__ui_increase_l1_validator_balance.snap @@ -0,0 +1,11 @@ +--- +source: src/parser/transactions/pvm/banff/increase_l1_validator_balance.rs +assertion_line: 204 +expression: reduced +--- +[ + "IncreaseL1ValBal": "Transaction", + "Validator": "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", + "Amount(AVAX)": "1", + "Fee(AVAX)": "1152921505.606846974", +] diff --git a/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__register_l1_validator__tests__ui_register_l1_validator.snap b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__register_l1_validator__tests__ui_register_l1_validator.snap new file mode 100644 index 000000000..334cbccea --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__register_l1_validator__tests__ui_register_l1_validator.snap @@ -0,0 +1,15 @@ +--- +source: src/parser/transactions/pvm/banff/register_l1_validator.rs +assertion_line: 282 +expression: reduced +--- +[ + "RegisterL1Val": "Transaction", + "Validator": "NodeID-42CCEK87FaF7gXXffmcB67hvQ3prvtbf2", + "Weight": "11357690822530343844", + "Balance (AVAX)": "1", + "Fee(AVAX)": "1152921505.606846974", + "Rem Addr": "0x7172737475767778797a7b7c7d7e7f8081828384", + "Disabler": "0x898a8b8c8d8e8f909192939495969798999a9b9c", + "Disabler": "0x898a8b8c8d8e8f909192939495969798aaaaaaaa", +] diff --git a/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__set_l1_validator_weight__tests__ui_set_l1_validator_weight.snap b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__set_l1_validator_weight__tests__ui_set_l1_validator_weight.snap new file mode 100644 index 000000000..e1998034a --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/snapshots/rslib__parser__transactions__pvm__banff__set_l1_validator_weight__tests__ui_set_l1_validator_weight.snap @@ -0,0 +1,11 @@ +--- +source: src/parser/transactions/pvm/banff/set_l1_validator_weight.rs +assertion_line: 204 +expression: reduced +--- +[ + "SetL1ValWeight": "Transaction", + "Validator": "0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20", + "Nonce": "2387509390608836392", + "Weight": "2966230773313449776", +] diff --git a/app/rust/src/parser/transactions/pvm/banff/testvectors/convert_subnet_to_l1.rs b/app/rust/src/parser/transactions/pvm/banff/testvectors/convert_subnet_to_l1.rs new file mode 100644 index 000000000..228101503 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/testvectors/convert_subnet_to_l1.rs @@ -0,0 +1,77 @@ +// some of the fee amounts were change to be able to run the test refenrece tests had values like 0xffffffffffffffff +// that would case an overflow on the sum of inputs and outputs +pub const SIMPLE_CONVERT_SUBNET: &[u8] = &[ + 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, + 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, + 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, + 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x22, 0x23, 0x24, + 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, + 0x35, 0x36, 0x37, 0x38, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xde, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x03, +]; + +pub const COMPLEX_CONVERT_SUBNET: &[u8] = &[ + 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0xe6, 0x73, 0x17, + 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, + 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, + 0x00, 0x00, 0x00, 0x03, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, + 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, + 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0x00, 0x00, 0x00, 0x02, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x03, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x9f, 0x98, 0x85, + 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23, 0x45, 0x21, + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xad, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, + 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, + 0x11, 0x22, 0x33, 0x44, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0x9a, 0xca, 0x00, 0xaf, 0xf4, 0xac, 0xb4, 0xc5, 0x43, 0x9b, 0x5d, 0x42, 0x6c, 0xad, 0xf9, + 0xe9, 0x46, 0xd3, 0xa4, 0x52, 0xf7, 0xde, 0x34, 0x14, 0xd1, 0xad, 0x27, 0x33, 0x61, 0x33, 0x21, + 0x1d, 0x8b, 0x90, 0xcf, 0x49, 0xfb, 0x97, 0xee, 0xbc, 0xde, 0xee, 0xf7, 0x14, 0xdc, 0x20, 0xf5, + 0x4e, 0xd0, 0xd4, 0xd1, 0x8c, 0xfd, 0x79, 0x09, 0xd1, 0x53, 0xb9, 0x60, 0x4b, 0x62, 0xb1, 0x43, + 0xba, 0x36, 0x20, 0x7b, 0xb7, 0xe6, 0x48, 0x67, 0x42, 0x44, 0x80, 0x20, 0x2a, 0x67, 0xdc, 0x68, + 0x76, 0x83, 0x46, 0xd9, 0x5c, 0x90, 0x98, 0x3c, 0x2d, 0x27, 0x9c, 0x64, 0xc4, 0x3c, 0x51, 0x13, + 0x6b, 0x2a, 0x05, 0xe0, 0x16, 0x02, 0xd5, 0x2a, 0xa6, 0x37, 0x6f, 0xda, 0x17, 0xfa, 0x6e, 0x2a, + 0x18, 0xa0, 0x83, 0xe4, 0x9d, 0x9c, 0x45, 0x0e, 0xab, 0x7b, 0x89, 0xb1, 0xd5, 0x55, 0x5d, 0xa5, + 0xc4, 0x89, 0x87, 0x2e, 0x02, 0xb7, 0xe5, 0x22, 0x7b, 0x77, 0x55, 0x0a, 0xf1, 0x33, 0x0e, 0x5a, + 0x71, 0xf8, 0xc3, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, + 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x00, 0x00, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x00, +]; diff --git a/app/rust/src/parser/transactions/pvm/banff/testvectors/disable_l1_validator.rs b/app/rust/src/parser/transactions/pvm/banff/testvectors/disable_l1_validator.rs new file mode 100644 index 000000000..a43c36891 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/testvectors/disable_l1_validator.rs @@ -0,0 +1,39 @@ +// some of the fee amounts were change to be able to run the test refenrece tests had values like 0xffffffffffffffff +// that would case an overflow on the sum of inputs and outputs +pub const DISABLE_L1_VALIDATOR_DATA: &[u8] = &[ + 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0xe6, 0x73, 0x17, + 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, + 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, + 0x00, 0x00, 0x00, 0x03, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, + 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, + 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0x00, 0x00, 0x00, 0x02, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x03, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x9f, 0x98, 0x85, + 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23, 0x45, 0x21, + 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, +]; diff --git a/app/rust/src/parser/transactions/pvm/banff/testvectors/increase_l1_validator_balance.rs b/app/rust/src/parser/transactions/pvm/banff/testvectors/increase_l1_validator_balance.rs new file mode 100644 index 000000000..ba10020f8 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/testvectors/increase_l1_validator_balance.rs @@ -0,0 +1,39 @@ +// some of the fee amounts were change to be able to run the test refenrece tests had values like 0xffffffffffffffff +// that would case an overflow on the sum of inputs and outputs +pub const INCREASE_L1_VALIDATOR_BALANCE_DATA: &[u8] = &[ + 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0xe6, 0x73, 0x17, + 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, + 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, + 0x00, 0x00, 0x00, 0x03, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, + 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, + 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0x00, 0x00, 0x00, 0x02, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x03, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x9f, 0x98, 0x85, + 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23, 0x45, 0x21, + 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, +]; diff --git a/app/rust/src/parser/transactions/pvm/banff/testvectors/register_l1_validator.rs b/app/rust/src/parser/transactions/pvm/banff/testvectors/register_l1_validator.rs new file mode 100644 index 000000000..80a1e9003 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/testvectors/register_l1_validator.rs @@ -0,0 +1,55 @@ +//payload from https://github.com/ava-labs/avalanchego/blob/master/vms/platformvm/warp/message/payload_test.go +pub const REGISTER_L1_VALIDATOR_DATA: &[u8] = &[ + 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0xe6, 0x73, 0x17, + 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, + 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, + 0x00, 0x00, 0x00, 0x03, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, + 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, + 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0x00, 0x00, 0x00, 0x02, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x03, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x9f, 0x98, 0x85, + 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23, 0x45, 0x21, + 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x8c, 0xfd, 0x79, 0x09, 0xd1, 0x53, 0xb9, 0x60, + 0x4b, 0x62, 0xb1, 0x43, 0xba, 0x36, 0x20, 0x7b, 0xb7, 0xe6, 0x48, 0x67, 0x42, 0x44, 0x80, 0x20, + 0x2a, 0x67, 0xdc, 0x68, 0x76, 0x83, 0x46, 0xd9, 0x5c, 0x90, 0x98, 0x3c, 0x2d, 0x27, 0x9c, 0x64, + 0xc4, 0x3c, 0x51, 0x13, 0x6b, 0x2a, 0x05, 0xe0, 0x16, 0x02, 0xd5, 0x2a, 0xa6, 0x37, 0x6f, 0xda, + 0x17, 0xfa, 0x6e, 0x2a, 0x18, 0xa0, 0x83, 0xe4, 0x9d, 0x9c, 0x45, 0x0e, 0xab, 0x7b, 0x89, 0xb1, + 0xd5, 0x55, 0x5d, 0xa5, 0xc4, 0x89, 0x87, 0x2e, 0x02, 0xb7, 0xe5, 0x22, 0x7b, 0x77, 0x55, 0x0a, + 0xf1, 0x33, 0x0e, 0x5a, 0x71, 0xf8, 0xc3, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, + 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, + 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x00, 0x00, + 0x00, 0x14, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, + 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, + 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, + 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, + 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, + 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x02, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, + 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, + 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xaa, 0xaa, 0xaa, 0xaa, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, + 0xa3, 0xa4, +]; diff --git a/app/rust/src/parser/transactions/pvm/banff/testvectors/set_l1_validator_weight.rs b/app/rust/src/parser/transactions/pvm/banff/testvectors/set_l1_validator_weight.rs new file mode 100644 index 000000000..4b40e5256 --- /dev/null +++ b/app/rust/src/parser/transactions/pvm/banff/testvectors/set_l1_validator_weight.rs @@ -0,0 +1,39 @@ +//payload from https://github.com/ava-labs/avalanchego/blob/master/vms/platformvm/warp/message/payload_test.go +pub const SET_L1_VALIDATOR_WEIGHT_DATA: &[u8] = &[ + 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x21, 0xe6, 0x73, 0x17, + 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, + 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, + 0x00, 0x00, 0x00, 0x03, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, + 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, + 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0x00, 0x00, 0x00, 0x02, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, + 0x00, 0x00, 0x00, 0x05, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, + 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x03, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, + 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x9f, 0x98, 0x85, + 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, 0x73, 0x01, 0x23, 0x45, 0x21, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, + 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, +]; diff --git a/app/rust/src/parser/transactions/pvm/create_chain_tx.rs b/app/rust/src/parser/transactions/pvm/create_chain_tx.rs index e65d623c3..9eebed5ca 100644 --- a/app/rust/src/parser/transactions/pvm/create_chain_tx.rs +++ b/app/rust/src/parser/transactions/pvm/create_chain_tx.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/pvm/create_subnet_tx.rs b/app/rust/src/parser/transactions/pvm/create_subnet_tx.rs index cb0240cdb..dcac1c2e8 100644 --- a/app/rust/src/parser/transactions/pvm/create_subnet_tx.rs +++ b/app/rust/src/parser/transactions/pvm/create_subnet_tx.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/pvm/export_tx.rs b/app/rust/src/parser/transactions/pvm/export_tx.rs index 9d14ce89a..77030ff3b 100644 --- a/app/rust/src/parser/transactions/pvm/export_tx.rs +++ b/app/rust/src/parser/transactions/pvm/export_tx.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/pvm/import_tx.rs b/app/rust/src/parser/transactions/pvm/import_tx.rs index 77ea08483..a4ff58dc6 100644 --- a/app/rust/src/parser/transactions/pvm/import_tx.rs +++ b/app/rust/src/parser/transactions/pvm/import_tx.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/transfer.rs b/app/rust/src/parser/transactions/transfer.rs index 269ba1afb..268eac4df 100644 --- a/app/rust/src/parser/transactions/transfer.rs +++ b/app/rust/src/parser/transactions/transfer.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/transactions/tx_header.rs b/app/rust/src/parser/transactions/tx_header.rs index 4b2b54760..d47f2879a 100644 --- a/app/rust/src/parser/transactions/tx_header.rs +++ b/app/rust/src/parser/transactions/tx_header.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/utils.rs b/app/rust/src/parser/utils.rs index b6ee68732..7da3a789d 100644 --- a/app/rust/src/parser/utils.rs +++ b/app/rust/src/parser/utils.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/utils/path_wrapper.rs b/app/rust/src/parser/utils/path_wrapper.rs index 6e2e04f35..c9d09f47c 100644 --- a/app/rust/src/parser/utils/path_wrapper.rs +++ b/app/rust/src/parser/utils/path_wrapper.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/utils/time.rs b/app/rust/src/parser/utils/time.rs index 7aa1eab52..cd4ce043b 100644 --- a/app/rust/src/parser/utils/time.rs +++ b/app/rust/src/parser/utils/time.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/utxo_id.rs b/app/rust/src/parser/utxo_id.rs index 7897acbbe..3e153a175 100644 --- a/app/rust/src/parser/utxo_id.rs +++ b/app/rust/src/parser/utxo_id.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/parser/validator.rs b/app/rust/src/parser/validator.rs index 6c93e5aa9..9249e7fd7 100644 --- a/app/rust/src/parser/validator.rs +++ b/app/rust/src/parser/validator.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/sys.rs b/app/rust/src/sys.rs index 08217a048..88bd7a191 100644 --- a/app/rust/src/sys.rs +++ b/app/rust/src/sys.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/utils.rs b/app/rust/src/utils.rs index 0985fd4c4..770de1bdb 100644 --- a/app/rust/src/utils.rs +++ b/app/rust/src/utils.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -220,7 +220,7 @@ macro_rules! show_ui { Ok(()) } Ok((size, err)) => { - use ::core::convert::TryInto; + use core::convert::TryInto; *$tx = size as _; match err.try_into() { @@ -235,7 +235,7 @@ macro_rules! show_ui { match unsafe { $show } { Ok((size, err)) if err == $crate::constants::ApduError::Success as u16 => Ok(size as _), Ok((_, err)) => { - use ::core::convert::TryInto; + use core::convert::TryInto; match err.try_into() { Ok(err) => Err(err), diff --git a/app/rust/src/utils/apdu_unwrap.rs b/app/rust/src/utils/apdu_unwrap.rs index 1f02745e3..1d7204ced 100644 --- a/app/rust/src/utils/apdu_unwrap.rs +++ b/app/rust/src/utils/apdu_unwrap.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/utils/app_mode.rs b/app/rust/src/utils/app_mode.rs index df80468bf..3745d94a1 100644 --- a/app/rust/src/utils/app_mode.rs +++ b/app/rust/src/utils/app_mode.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/utils/blind_sign_toggle.rs b/app/rust/src/utils/blind_sign_toggle.rs index b5e96c7f6..9d4254dd9 100644 --- a/app/rust/src/utils/blind_sign_toggle.rs +++ b/app/rust/src/utils/blind_sign_toggle.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/utils/buffer_upload.rs b/app/rust/src/utils/buffer_upload.rs index becc1c679..bd5be86a5 100644 --- a/app/rust/src/utils/buffer_upload.rs +++ b/app/rust/src/utils/buffer_upload.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2021 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/rust/src/utils/convert_to_rs.rs b/app/rust/src/utils/convert_to_rs.rs index 3da639228..8d7089454 100644 --- a/app/rust/src/utils/convert_to_rs.rs +++ b/app/rust/src/utils/convert_to_rs.rs @@ -1,5 +1,5 @@ /******************************************************************************* -* (c) 2022 Zondax GmbH +* (c) 2018-2024 Zondax AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib index 33f5c38d8..eebf9d533 160000 --- a/deps/ledger-zxlib +++ b/deps/ledger-zxlib @@ -1 +1 @@ -Subproject commit 33f5c38d8153534cf572d1ca7a7e09be7d55058b +Subproject commit eebf9d533a497f01e60f7a6f8bd5465b1379882c diff --git a/tests_zemu/package.json b/tests_zemu/package.json index 9148368b8..90958bef0 100644 --- a/tests_zemu/package.json +++ b/tests_zemu/package.json @@ -17,43 +17,43 @@ }, "dependencies": { "@ethersproject/wallet": "^5.7.0", - "@types/node": "^22.7.4", + "@types/node": "^22.10.0", "@zondax/ledger-avalanche-app": "link:../js", - "@zondax/zemu": "0.50.3", - "ethers": "^6.13.3" + "@zondax/zemu": "0.52.0", + "ethers": "^6.13.4" }, "devDependencies": { "@ethereumjs/common": "^4.4.0", "@ethereumjs/rlp": "^5.0.2", "@ethereumjs/tx": "^5.4.0", "@ethereumjs/util": "^9.1.0", - "@ledgerhq/hw-app-eth": "6.38.2", + "@ledgerhq/hw-app-eth": "6.41.1", "@ledgerhq/hw-transport-node-hid": "^6.29.5", "@ledgerhq/logs": "^6.12.0", "@matteoh2o1999/github-actions-jest-reporter": "^3.0.0", "@types/bs58": "^4.0.4", "@types/elliptic": "^6.4.18", - "@types/jest": "^29.5.13", + "@types/jest": "^29.5.14", "@types/ledgerhq__hw-transport": "^4.21.8", - "@typescript-eslint/eslint-plugin": "^8.8.0", - "@typescript-eslint/parser": "^8.8.0", + "@typescript-eslint/eslint-plugin": "^8.16.0", + "@typescript-eslint/parser": "^8.16.0", "bn.js": "^5.2.1", "bs58": "^6.0.0", "crypto-js": "4.2.0", - "elliptic": "^6.5.7", - "eslint": "^9.11.1", + "elliptic": "^6.6.1", + "eslint": "^9.15.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import": "^2.30.0", - "eslint-plugin-jest": "^28.8.3", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jest": "^28.9.0", "eslint-plugin-prettier": "^5.2.1", "jest": "^29.7.0", "jest-serial-runner": "^1.2.1", "js-sha256": "0.11.0", "jssha": "^3.3.1", - "prettier": "^3.3.3", - "secp256k1": "^5.0.0", + "prettier": "^3.4.0", + "secp256k1": "^5.0.1", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", - "typescript": "^5.6.2" + "typescript": "^5.7.2" } } diff --git a/tests_zemu/snapshots/fl-eth-sign-asset_deposit/00000.png b/tests_zemu/snapshots/fl-eth-sign-asset_deposit/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-asset_deposit/00000.png and b/tests_zemu/snapshots/fl-eth-sign-asset_deposit/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-asset_deposit/00001.png b/tests_zemu/snapshots/fl-eth-sign-asset_deposit/00001.png index a16d63f29..99ac5e0d8 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-asset_deposit/00001.png and b/tests_zemu/snapshots/fl-eth-sign-asset_deposit/00001.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-asset_transfer/00000.png b/tests_zemu/snapshots/fl-eth-sign-asset_transfer/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-asset_transfer/00000.png and b/tests_zemu/snapshots/fl-eth-sign-asset_transfer/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-asset_transfer/00001.png b/tests_zemu/snapshots/fl-eth-sign-asset_transfer/00001.png index a16d63f29..99ac5e0d8 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-asset_transfer/00001.png and b/tests_zemu/snapshots/fl-eth-sign-asset_transfer/00001.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-basic_transfer/00000.png b/tests_zemu/snapshots/fl-eth-sign-basic_transfer/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-basic_transfer/00000.png and b/tests_zemu/snapshots/fl-eth-sign-basic_transfer/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-basic_transfer/00001.png b/tests_zemu/snapshots/fl-eth-sign-basic_transfer/00001.png index 8ff9361df..31ea0b021 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-basic_transfer/00001.png and b/tests_zemu/snapshots/fl-eth-sign-basic_transfer/00001.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-basic_transfer_no_eip155/00000.png b/tests_zemu/snapshots/fl-eth-sign-basic_transfer_no_eip155/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-basic_transfer_no_eip155/00000.png and b/tests_zemu/snapshots/fl-eth-sign-basic_transfer_no_eip155/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-basic_transfer_no_eip155/00001.png b/tests_zemu/snapshots/fl-eth-sign-basic_transfer_no_eip155/00001.png index b1a736ccf..776d8e901 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-basic_transfer_no_eip155/00001.png and b/tests_zemu/snapshots/fl-eth-sign-basic_transfer_no_eip155/00001.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-contract_deploy_no_eip155/00000.png b/tests_zemu/snapshots/fl-eth-sign-contract_deploy_no_eip155/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-contract_deploy_no_eip155/00000.png and b/tests_zemu/snapshots/fl-eth-sign-contract_deploy_no_eip155/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-contract_deploy_no_eip155/00001.png b/tests_zemu/snapshots/fl-eth-sign-contract_deploy_no_eip155/00001.png index 6bb2be73d..b85c1c7e1 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-contract_deploy_no_eip155/00001.png and b/tests_zemu/snapshots/fl-eth-sign-contract_deploy_no_eip155/00001.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-eip712_hashed_message/00000.png b/tests_zemu/snapshots/fl-eth-sign-eip712_hashed_message/00000.png index 73a0ebd5e..16e934fb9 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-eip712_hashed_message/00000.png and b/tests_zemu/snapshots/fl-eth-sign-eip712_hashed_message/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-eip712_hashed_message/00001.png b/tests_zemu/snapshots/fl-eth-sign-eip712_hashed_message/00001.png index 243188e83..913d41dca 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-eip712_hashed_message/00001.png and b/tests_zemu/snapshots/fl-eth-sign-eip712_hashed_message/00001.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-erc721_approve_for_all/00002.png b/tests_zemu/snapshots/fl-eth-sign-erc721_approve_for_all/00002.png index ee82c4a6a..03adeed06 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-erc721_approve_for_all/00002.png and b/tests_zemu/snapshots/fl-eth-sign-erc721_approve_for_all/00002.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-erc721_approve_for_all/00003.png b/tests_zemu/snapshots/fl-eth-sign-erc721_approve_for_all/00003.png index 85681af24..835c16e55 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-erc721_approve_for_all/00003.png and b/tests_zemu/snapshots/fl-eth-sign-erc721_approve_for_all/00003.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-erc721_safe_transfer_from/00002.png b/tests_zemu/snapshots/fl-eth-sign-erc721_safe_transfer_from/00002.png index 9d2262b6a..c74d60ca5 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-erc721_safe_transfer_from/00002.png and b/tests_zemu/snapshots/fl-eth-sign-erc721_safe_transfer_from/00002.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-erc721_safe_transfer_from/00003.png b/tests_zemu/snapshots/fl-eth-sign-erc721_safe_transfer_from/00003.png index f1e9eb853..9bc60315a 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-erc721_safe_transfer_from/00003.png and b/tests_zemu/snapshots/fl-eth-sign-erc721_safe_transfer_from/00003.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-legacy_contract_call/00002.png b/tests_zemu/snapshots/fl-eth-sign-legacy_contract_call/00002.png index f5868bd4e..48f5d7180 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-legacy_contract_call/00002.png and b/tests_zemu/snapshots/fl-eth-sign-legacy_contract_call/00002.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-legacy_contract_call/00003.png b/tests_zemu/snapshots/fl-eth-sign-legacy_contract_call/00003.png index 2691bbcdb..f646237c0 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-legacy_contract_call/00003.png and b/tests_zemu/snapshots/fl-eth-sign-legacy_contract_call/00003.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-legacy_contract_deploy/00000.png b/tests_zemu/snapshots/fl-eth-sign-legacy_contract_deploy/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-legacy_contract_deploy/00000.png and b/tests_zemu/snapshots/fl-eth-sign-legacy_contract_deploy/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-legacy_contract_deploy/00001.png b/tests_zemu/snapshots/fl-eth-sign-legacy_contract_deploy/00001.png index 249902fb2..047de3398 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-legacy_contract_deploy/00001.png and b/tests_zemu/snapshots/fl-eth-sign-legacy_contract_deploy/00001.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-legacy_transfer/00000.png b/tests_zemu/snapshots/fl-eth-sign-legacy_transfer/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-legacy_transfer/00000.png and b/tests_zemu/snapshots/fl-eth-sign-legacy_transfer/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-legacy_transfer/00001.png b/tests_zemu/snapshots/fl-eth-sign-legacy_transfer/00001.png index 5c6d8d584..bccf36471 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-legacy_transfer/00001.png and b/tests_zemu/snapshots/fl-eth-sign-legacy_transfer/00001.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-message/00000.png b/tests_zemu/snapshots/fl-eth-sign-message/00000.png index 30226aa1e..15bc44c70 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-message/00000.png and b/tests_zemu/snapshots/fl-eth-sign-message/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-message/00001.png b/tests_zemu/snapshots/fl-eth-sign-message/00001.png index 8259c8888..9157a59f8 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-message/00001.png and b/tests_zemu/snapshots/fl-eth-sign-message/00001.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-transfer/00000.png b/tests_zemu/snapshots/fl-eth-sign-transfer/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-transfer/00000.png and b/tests_zemu/snapshots/fl-eth-sign-transfer/00000.png differ diff --git a/tests_zemu/snapshots/fl-eth-sign-transfer/00001.png b/tests_zemu/snapshots/fl-eth-sign-transfer/00001.png index 66b645170..353637ca7 100644 Binary files a/tests_zemu/snapshots/fl-eth-sign-transfer/00001.png and b/tests_zemu/snapshots/fl-eth-sign-transfer/00001.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00001.png b/tests_zemu/snapshots/fl-mainmenu/00001.png index 7c5324477..ae186c83e 100644 Binary files a/tests_zemu/snapshots/fl-mainmenu/00001.png and b/tests_zemu/snapshots/fl-mainmenu/00001.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00002.png b/tests_zemu/snapshots/fl-mainmenu/00002.png index f2ddfb020..087096b90 100644 Binary files a/tests_zemu/snapshots/fl-mainmenu/00002.png and b/tests_zemu/snapshots/fl-mainmenu/00002.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00003.png b/tests_zemu/snapshots/fl-mainmenu/00003.png index 7c5324477..ae186c83e 100644 Binary files a/tests_zemu/snapshots/fl-mainmenu/00003.png and b/tests_zemu/snapshots/fl-mainmenu/00003.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00004.png b/tests_zemu/snapshots/fl-mainmenu/00004.png index 22d41c5b2..91153beb1 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-add_delegator/00002.png b/tests_zemu/snapshots/fl-sign-add_delegator/00002.png index 498405261..3f4c81611 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_delegator/00002.png and b/tests_zemu/snapshots/fl-sign-add_delegator/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_delegator/00003.png b/tests_zemu/snapshots/fl-sign-add_delegator/00003.png index 0e6db23c9..71ba239eb 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_delegator/00003.png and b/tests_zemu/snapshots/fl-sign-add_delegator/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_permissionless_delegator/00002.png b/tests_zemu/snapshots/fl-sign-add_permissionless_delegator/00002.png index 4cf29e9ff..955eed224 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_permissionless_delegator/00002.png and b/tests_zemu/snapshots/fl-sign-add_permissionless_delegator/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_permissionless_delegator/00003.png b/tests_zemu/snapshots/fl-sign-add_permissionless_delegator/00003.png index 09ca0624a..397e68c0b 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_permissionless_delegator/00003.png and b/tests_zemu/snapshots/fl-sign-add_permissionless_delegator/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00000.png b/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00000.png index 057557336..e15a5c107 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00000.png and b/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00001.png b/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00001.png index ac78af43d..e8c784cb9 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00001.png and b/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00004.png b/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00004.png index 6f0efc9a4..53446fcfa 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00004.png and b/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00004.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00005.png b/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00005.png index 4b9e9572c..8e216db37 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00005.png and b/tests_zemu/snapshots/fl-sign-add_permissionless_validator/00005.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_delegator/00002.png b/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_delegator/00002.png index 24c513201..d0117dcee 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_delegator/00002.png and b/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_delegator/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_delegator/00003.png b/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_delegator/00003.png index e42163729..83e066156 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_delegator/00003.png and b/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_delegator/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_validator/00002.png b/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_validator/00002.png index 24c513201..d0117dcee 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_validator/00002.png and b/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_validator/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_validator/00003.png b/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_validator/00003.png index 445f9969e..7f3d43417 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_validator/00003.png and b/tests_zemu/snapshots/fl-sign-add_subnet_permissionless_validator/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_subnet_validator/00002.png b/tests_zemu/snapshots/fl-sign-add_subnet_validator/00002.png index 909491136..8ed993c8d 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_subnet_validator/00002.png and b/tests_zemu/snapshots/fl-sign-add_subnet_validator/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_subnet_validator/00003.png b/tests_zemu/snapshots/fl-sign-add_subnet_validator/00003.png index fab7912d9..065f8e2cb 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_subnet_validator/00003.png and b/tests_zemu/snapshots/fl-sign-add_subnet_validator/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_validator/00000.png b/tests_zemu/snapshots/fl-sign-add_validator/00000.png index 057557336..e15a5c107 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_validator/00000.png and b/tests_zemu/snapshots/fl-sign-add_validator/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_validator/00001.png b/tests_zemu/snapshots/fl-sign-add_validator/00001.png index 42b7852d5..4db78c01e 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_validator/00001.png and b/tests_zemu/snapshots/fl-sign-add_validator/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_validator/00004.png b/tests_zemu/snapshots/fl-sign-add_validator/00004.png index a42e5c4e7..30d41e03b 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_validator/00004.png and b/tests_zemu/snapshots/fl-sign-add_validator/00004.png differ diff --git a/tests_zemu/snapshots/fl-sign-add_validator/00005.png b/tests_zemu/snapshots/fl-sign-add_validator/00005.png index 170b3ae8a..4cb768ead 100644 Binary files a/tests_zemu/snapshots/fl-sign-add_validator/00005.png and b/tests_zemu/snapshots/fl-sign-add_validator/00005.png differ diff --git a/tests_zemu/snapshots/fl-sign-c_export_to_x/00000.png b/tests_zemu/snapshots/fl-sign-c_export_to_x/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-c_export_to_x/00000.png and b/tests_zemu/snapshots/fl-sign-c_export_to_x/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-c_export_to_x/00001.png b/tests_zemu/snapshots/fl-sign-c_export_to_x/00001.png index 75521a5b3..eb87e27b8 100644 Binary files a/tests_zemu/snapshots/fl-sign-c_export_to_x/00001.png and b/tests_zemu/snapshots/fl-sign-c_export_to_x/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-c_import_from_x/00000.png b/tests_zemu/snapshots/fl-sign-c_import_from_x/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-c_import_from_x/00000.png and b/tests_zemu/snapshots/fl-sign-c_import_from_x/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-c_import_from_x/00001.png b/tests_zemu/snapshots/fl-sign-c_import_from_x/00001.png index 507ed672f..10684134b 100644 Binary files a/tests_zemu/snapshots/fl-sign-c_import_from_x/00001.png and b/tests_zemu/snapshots/fl-sign-c_import_from_x/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00000.png b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00000.png new file mode 100644 index 000000000..cf6c0808f Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00001.png b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00001.png new file mode 100644 index 000000000..ded03f2b4 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00002.png b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00002.png new file mode 100644 index 000000000..d0a6e9baf Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00003.png b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00003.png new file mode 100644 index 000000000..eb88ba49c Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00004.png b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00004.png new file mode 100644 index 000000000..08ef23c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-convert_subnet_to_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/fl-sign-create_chain/00002.png b/tests_zemu/snapshots/fl-sign-create_chain/00002.png index 58bf8101a..4431b314f 100644 Binary files a/tests_zemu/snapshots/fl-sign-create_chain/00002.png and b/tests_zemu/snapshots/fl-sign-create_chain/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-create_chain/00003.png b/tests_zemu/snapshots/fl-sign-create_chain/00003.png index fab7912d9..065f8e2cb 100644 Binary files a/tests_zemu/snapshots/fl-sign-create_chain/00003.png and b/tests_zemu/snapshots/fl-sign-create_chain/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-create_subnet/00000.png b/tests_zemu/snapshots/fl-sign-create_subnet/00000.png index 30226aa1e..15bc44c70 100644 Binary files a/tests_zemu/snapshots/fl-sign-create_subnet/00000.png and b/tests_zemu/snapshots/fl-sign-create_subnet/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-create_subnet/00001.png b/tests_zemu/snapshots/fl-sign-create_subnet/00001.png index 9d3bbf13a..a6c73d706 100644 Binary files a/tests_zemu/snapshots/fl-sign-create_subnet/00001.png and b/tests_zemu/snapshots/fl-sign-create_subnet/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-disable_l1_validator/00000.png b/tests_zemu/snapshots/fl-sign-disable_l1_validator/00000.png new file mode 100644 index 000000000..15bc44c70 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-disable_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-disable_l1_validator/00001.png b/tests_zemu/snapshots/fl-sign-disable_l1_validator/00001.png new file mode 100644 index 000000000..2544c5bfd Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-disable_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-disable_l1_validator/00002.png b/tests_zemu/snapshots/fl-sign-disable_l1_validator/00002.png new file mode 100644 index 000000000..a02b67b4f Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-disable_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-disable_l1_validator/00003.png b/tests_zemu/snapshots/fl-sign-disable_l1_validator/00003.png new file mode 100644 index 000000000..08ef23c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-disable_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-hash/00000.png b/tests_zemu/snapshots/fl-sign-hash/00000.png index 30226aa1e..15bc44c70 100644 Binary files a/tests_zemu/snapshots/fl-sign-hash/00000.png and b/tests_zemu/snapshots/fl-sign-hash/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-hash/00001.png b/tests_zemu/snapshots/fl-sign-hash/00001.png index a3e18305d..bc11084de 100644 Binary files a/tests_zemu/snapshots/fl-sign-hash/00001.png and b/tests_zemu/snapshots/fl-sign-hash/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00000.png b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00000.png new file mode 100644 index 000000000..cf6c0808f Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00001.png b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00001.png new file mode 100644 index 000000000..99f3a3276 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00002.png b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00002.png new file mode 100644 index 000000000..fea34c68f Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00003.png b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00003.png new file mode 100644 index 000000000..eb88ba49c Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00004.png b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00004.png new file mode 100644 index 000000000..08ef23c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-increase_l1_validator_balance/00004.png differ diff --git a/tests_zemu/snapshots/fl-sign-msg/00000.png b/tests_zemu/snapshots/fl-sign-msg/00000.png index 30226aa1e..15bc44c70 100644 Binary files a/tests_zemu/snapshots/fl-sign-msg/00000.png and b/tests_zemu/snapshots/fl-sign-msg/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-msg/00001.png b/tests_zemu/snapshots/fl-sign-msg/00001.png index 2f6633d67..e6f473848 100644 Binary files a/tests_zemu/snapshots/fl-sign-msg/00001.png and b/tests_zemu/snapshots/fl-sign-msg/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-p_export_to_x/00000.png b/tests_zemu/snapshots/fl-sign-p_export_to_x/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-p_export_to_x/00000.png and b/tests_zemu/snapshots/fl-sign-p_export_to_x/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-p_export_to_x/00001.png b/tests_zemu/snapshots/fl-sign-p_export_to_x/00001.png index 926dbb490..560bb25be 100644 Binary files a/tests_zemu/snapshots/fl-sign-p_export_to_x/00001.png and b/tests_zemu/snapshots/fl-sign-p_export_to_x/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-p_import_from_x/00000.png b/tests_zemu/snapshots/fl-sign-p_import_from_x/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-p_import_from_x/00000.png and b/tests_zemu/snapshots/fl-sign-p_import_from_x/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-p_import_from_x/00001.png b/tests_zemu/snapshots/fl-sign-p_import_from_x/00001.png index 4ed7b5caa..b11175fd3 100644 Binary files a/tests_zemu/snapshots/fl-sign-p_import_from_x/00001.png and b/tests_zemu/snapshots/fl-sign-p_import_from_x/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-register_l1_validator/00000.png b/tests_zemu/snapshots/fl-sign-register_l1_validator/00000.png new file mode 100644 index 000000000..565d3797f Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-register_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-register_l1_validator/00001.png b/tests_zemu/snapshots/fl-sign-register_l1_validator/00001.png new file mode 100644 index 000000000..dad2f23bc Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-register_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-register_l1_validator/00002.png b/tests_zemu/snapshots/fl-sign-register_l1_validator/00002.png new file mode 100644 index 000000000..2c137f51d Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-register_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-register_l1_validator/00003.png b/tests_zemu/snapshots/fl-sign-register_l1_validator/00003.png new file mode 100644 index 000000000..a842ed6d1 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-register_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-register_l1_validator/00004.png b/tests_zemu/snapshots/fl-sign-register_l1_validator/00004.png new file mode 100644 index 000000000..ba950fedb Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-register_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/fl-sign-register_l1_validator/00005.png b/tests_zemu/snapshots/fl-sign-register_l1_validator/00005.png new file mode 100644 index 000000000..08ef23c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-register_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/fl-sign-remove_subnet_validator/00000.png b/tests_zemu/snapshots/fl-sign-remove_subnet_validator/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-remove_subnet_validator/00000.png and b/tests_zemu/snapshots/fl-sign-remove_subnet_validator/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-remove_subnet_validator/00001.png b/tests_zemu/snapshots/fl-sign-remove_subnet_validator/00001.png index 10531e256..5ccdf4f7e 100644 Binary files a/tests_zemu/snapshots/fl-sign-remove_subnet_validator/00001.png and b/tests_zemu/snapshots/fl-sign-remove_subnet_validator/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00000.png b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00000.png new file mode 100644 index 000000000..cf6c0808f Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00001.png b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00001.png new file mode 100644 index 000000000..86efb1489 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00002.png b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00002.png new file mode 100644 index 000000000..aea40e2ea Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00003.png b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00003.png new file mode 100644 index 000000000..eb88ba49c Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00003.png differ diff --git a/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00004.png b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00004.png new file mode 100644 index 000000000..08ef23c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-sign-set_l1_validator_weight/00004.png differ diff --git a/tests_zemu/snapshots/fl-sign-simple_transfer/00000.png b/tests_zemu/snapshots/fl-sign-simple_transfer/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-simple_transfer/00000.png and b/tests_zemu/snapshots/fl-sign-simple_transfer/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-simple_transfer/00001.png b/tests_zemu/snapshots/fl-sign-simple_transfer/00001.png index 561f4e7e4..8badc86a3 100644 Binary files a/tests_zemu/snapshots/fl-sign-simple_transfer/00001.png and b/tests_zemu/snapshots/fl-sign-simple_transfer/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-transform_subnet/00000.png b/tests_zemu/snapshots/fl-sign-transform_subnet/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-transform_subnet/00000.png and b/tests_zemu/snapshots/fl-sign-transform_subnet/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-transform_subnet/00001.png b/tests_zemu/snapshots/fl-sign-transform_subnet/00001.png index 18412c807..cc73fb152 100644 Binary files a/tests_zemu/snapshots/fl-sign-transform_subnet/00001.png and b/tests_zemu/snapshots/fl-sign-transform_subnet/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-x_create_asset/00000.png b/tests_zemu/snapshots/fl-sign-x_create_asset/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-x_create_asset/00000.png and b/tests_zemu/snapshots/fl-sign-x_create_asset/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-x_create_asset/00001.png b/tests_zemu/snapshots/fl-sign-x_create_asset/00001.png index f096ce8c6..106758a25 100644 Binary files a/tests_zemu/snapshots/fl-sign-x_create_asset/00001.png and b/tests_zemu/snapshots/fl-sign-x_create_asset/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-x_export_to_c/00000.png b/tests_zemu/snapshots/fl-sign-x_export_to_c/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-x_export_to_c/00000.png and b/tests_zemu/snapshots/fl-sign-x_export_to_c/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-x_export_to_c/00001.png b/tests_zemu/snapshots/fl-sign-x_export_to_c/00001.png index efae4d2a5..8a0bd1af5 100644 Binary files a/tests_zemu/snapshots/fl-sign-x_export_to_c/00001.png and b/tests_zemu/snapshots/fl-sign-x_export_to_c/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-x_import_from_p/00000.png b/tests_zemu/snapshots/fl-sign-x_import_from_p/00000.png index b49a63bb8..cf6c0808f 100644 Binary files a/tests_zemu/snapshots/fl-sign-x_import_from_p/00000.png and b/tests_zemu/snapshots/fl-sign-x_import_from_p/00000.png differ diff --git a/tests_zemu/snapshots/fl-sign-x_import_from_p/00001.png b/tests_zemu/snapshots/fl-sign-x_import_from_p/00001.png index 347749bf6..d8a9ea6cf 100644 Binary files a/tests_zemu/snapshots/fl-sign-x_import_from_p/00001.png and b/tests_zemu/snapshots/fl-sign-x_import_from_p/00001.png differ diff --git a/tests_zemu/snapshots/fl-sign-x_operation/00002.png b/tests_zemu/snapshots/fl-sign-x_operation/00002.png index c1fe02897..9d941634e 100644 Binary files a/tests_zemu/snapshots/fl-sign-x_operation/00002.png and b/tests_zemu/snapshots/fl-sign-x_operation/00002.png differ diff --git a/tests_zemu/snapshots/fl-sign-x_operation/00003.png b/tests_zemu/snapshots/fl-sign-x_operation/00003.png index 49cd89c84..845ae358a 100644 Binary files a/tests_zemu/snapshots/fl-sign-x_operation/00003.png and b/tests_zemu/snapshots/fl-sign-x_operation/00003.png differ diff --git a/tests_zemu/snapshots/fl-xpub/00000.png b/tests_zemu/snapshots/fl-xpub/00000.png index 2ee857d6e..f8e6a0cb4 100644 Binary files a/tests_zemu/snapshots/fl-xpub/00000.png and b/tests_zemu/snapshots/fl-xpub/00000.png differ diff --git a/tests_zemu/snapshots/fl-xpub/00001.png b/tests_zemu/snapshots/fl-xpub/00001.png index 962fe6aba..40ac50668 100644 Binary files a/tests_zemu/snapshots/fl-xpub/00001.png and b/tests_zemu/snapshots/fl-xpub/00001.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00004.png b/tests_zemu/snapshots/s-mainmenu/00004.png index ff0d83082..48e5a9dba 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00004.png and b/tests_zemu/snapshots/s-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00010.png b/tests_zemu/snapshots/s-mainmenu/00010.png index ff0d83082..48e5a9dba 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00010.png and b/tests_zemu/snapshots/s-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00000.png b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00000.png new file mode 100644 index 000000000..ebaa51f51 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00001.png b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00001.png new file mode 100644 index 000000000..340011e55 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00002.png b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00002.png new file mode 100644 index 000000000..3f692e2cc Binary files /dev/null and b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00003.png b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00003.png new file mode 100644 index 000000000..c5c09f608 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00004.png b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00004.png new file mode 100644 index 000000000..fafb2d8aa Binary files /dev/null and b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00005.png b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00005.png new file mode 100644 index 000000000..563e5a17d Binary files /dev/null and b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00006.png b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00006.png new file mode 100644 index 000000000..006c26aba Binary files /dev/null and b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00007.png b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00007.png new file mode 100644 index 000000000..972c11ed1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-convert_subnet_to_l1_validator/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-disable_l1_validator/00000.png b/tests_zemu/snapshots/s-sign-disable_l1_validator/00000.png new file mode 100644 index 000000000..82a34a201 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-disable_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-disable_l1_validator/00001.png b/tests_zemu/snapshots/s-sign-disable_l1_validator/00001.png new file mode 100644 index 000000000..6e028563f Binary files /dev/null and b/tests_zemu/snapshots/s-sign-disable_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-disable_l1_validator/00002.png b/tests_zemu/snapshots/s-sign-disable_l1_validator/00002.png new file mode 100644 index 000000000..07fd48c78 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-disable_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-disable_l1_validator/00003.png b/tests_zemu/snapshots/s-sign-disable_l1_validator/00003.png new file mode 100644 index 000000000..67a9f2a96 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-disable_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-disable_l1_validator/00004.png b/tests_zemu/snapshots/s-sign-disable_l1_validator/00004.png new file mode 100644 index 000000000..006c26aba Binary files /dev/null and b/tests_zemu/snapshots/s-sign-disable_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-disable_l1_validator/00005.png b/tests_zemu/snapshots/s-sign-disable_l1_validator/00005.png new file mode 100644 index 000000000..972c11ed1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-disable_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00000.png b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00000.png new file mode 100644 index 000000000..285d22fc6 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00001.png b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00001.png new file mode 100644 index 000000000..6e028563f Binary files /dev/null and b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00002.png b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00002.png new file mode 100644 index 000000000..07fd48c78 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00003.png b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00003.png new file mode 100644 index 000000000..bb64ca57f Binary files /dev/null and b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00004.png b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00004.png new file mode 100644 index 000000000..ec2eec9cc Binary files /dev/null and b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00005.png b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00005.png new file mode 100644 index 000000000..006c26aba Binary files /dev/null and b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00006.png b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00006.png new file mode 100644 index 000000000..972c11ed1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-increase_l1_validator_balance/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00000.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00000.png new file mode 100644 index 000000000..8371966df Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00001.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00001.png new file mode 100644 index 000000000..9f4619978 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00002.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00002.png new file mode 100644 index 000000000..d0cafead0 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00003.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00003.png new file mode 100644 index 000000000..7c0a49c54 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00004.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00004.png new file mode 100644 index 000000000..88f8a67aa Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00005.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00005.png new file mode 100644 index 000000000..ec2eec9cc Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00006.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00006.png new file mode 100644 index 000000000..5c1d59e6b Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00007.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00007.png new file mode 100644 index 000000000..35ddc78d9 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00008.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00008.png new file mode 100644 index 000000000..12196baf9 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00009.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00009.png new file mode 100644 index 000000000..f77ca016a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00010.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00010.png new file mode 100644 index 000000000..12196baf9 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00011.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00011.png new file mode 100644 index 000000000..626516942 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00011.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00012.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00012.png new file mode 100644 index 000000000..006c26aba Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00012.png differ diff --git a/tests_zemu/snapshots/s-sign-register_l1_validator/00013.png b/tests_zemu/snapshots/s-sign-register_l1_validator/00013.png new file mode 100644 index 000000000..972c11ed1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-register_l1_validator/00013.png differ diff --git a/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00000.png b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00000.png new file mode 100644 index 000000000..b6bd9437f Binary files /dev/null and b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00001.png b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00001.png new file mode 100644 index 000000000..9492e2e4c Binary files /dev/null and b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00002.png b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00002.png new file mode 100644 index 000000000..8b87e405e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00003.png b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00003.png new file mode 100644 index 000000000..618e50d03 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00004.png b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00004.png new file mode 100644 index 000000000..7145f6d33 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00005.png b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00005.png new file mode 100644 index 000000000..006c26aba Binary files /dev/null and b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00006.png b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00006.png new file mode 100644 index 000000000..972c11ed1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-set_l1_validator_weight/00006.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00004.png b/tests_zemu/snapshots/sp-mainmenu/00004.png index 9e068badc..38fa9fe14 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 9e068badc..38fa9fe14 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-convert_subnet_to_l1_validator/00000.png b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00001.png b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00001.png new file mode 100644 index 000000000..7a48f1134 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00002.png b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00002.png new file mode 100644 index 000000000..282fb4319 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00003.png b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00003.png new file mode 100644 index 000000000..6f9a64c99 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00004.png b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00004.png new file mode 100644 index 000000000..ca1561fa8 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00005.png b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00005.png new file mode 100644 index 000000000..aee8a248a Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00006.png b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00006.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00007.png b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00007.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-convert_subnet_to_l1_validator/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-disable_l1_validator/00000.png b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-disable_l1_validator/00001.png b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00001.png new file mode 100644 index 000000000..7ed255538 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-disable_l1_validator/00002.png b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00002.png new file mode 100644 index 000000000..50e07ab3b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-disable_l1_validator/00003.png b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00003.png new file mode 100644 index 000000000..b38607f5a Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-disable_l1_validator/00004.png b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00004.png new file mode 100644 index 000000000..325e720fa Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-disable_l1_validator/00005.png b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00005.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-disable_l1_validator/00006.png b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00006.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-disable_l1_validator/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00000.png b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00001.png b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00001.png new file mode 100644 index 000000000..70d5f1de4 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00002.png b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00002.png new file mode 100644 index 000000000..50e07ab3b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00003.png b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00003.png new file mode 100644 index 000000000..b38607f5a Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00004.png b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00004.png new file mode 100644 index 000000000..8edd29db7 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00005.png b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00005.png new file mode 100644 index 000000000..f0e4f6846 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00006.png b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00006.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00007.png b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00007.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-increase_l1_validator_balance/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00000.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00001.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00001.png new file mode 100644 index 000000000..8bf2b1880 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00002.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00002.png new file mode 100644 index 000000000..f69ead21b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00003.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00003.png new file mode 100644 index 000000000..069454416 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00004.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00004.png new file mode 100644 index 000000000..afaa832fe Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00005.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00005.png new file mode 100644 index 000000000..f0e4f6846 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00006.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00006.png new file mode 100644 index 000000000..bbd3fee02 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00007.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00007.png new file mode 100644 index 000000000..3c99ff9b2 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00008.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00008.png new file mode 100644 index 000000000..a0e2e8a99 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00009.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00009.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00009.png differ diff --git a/tests_zemu/snapshots/sp-sign-register_l1_validator/00010.png b/tests_zemu/snapshots/sp-sign-register_l1_validator/00010.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-register_l1_validator/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00000.png b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00001.png b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00001.png new file mode 100644 index 000000000..1950b27cf Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00002.png b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00002.png new file mode 100644 index 000000000..e9447ce5b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00003.png b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00003.png new file mode 100644 index 000000000..2cd9af1e3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00004.png b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00004.png new file mode 100644 index 000000000..b6d34c850 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00005.png b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00005.png new file mode 100644 index 000000000..8a3711ea6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00006.png b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00006.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00007.png b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00007.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-set_l1_validator_weight/00007.png differ diff --git a/tests_zemu/snapshots/st-addr/00001.png b/tests_zemu/snapshots/st-addr/00001.png index 7f76eac2f..fd6c5fa48 100644 Binary files a/tests_zemu/snapshots/st-addr/00001.png and b/tests_zemu/snapshots/st-addr/00001.png differ diff --git a/tests_zemu/snapshots/st-eth-addr/00001.png b/tests_zemu/snapshots/st-eth-addr/00001.png index ea731a966..b4c483213 100644 Binary files a/tests_zemu/snapshots/st-eth-addr/00001.png and b/tests_zemu/snapshots/st-eth-addr/00001.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00001.png b/tests_zemu/snapshots/st-mainmenu/00001.png index 217c4c075..673172004 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00001.png and b/tests_zemu/snapshots/st-mainmenu/00001.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00002.png b/tests_zemu/snapshots/st-mainmenu/00002.png index bed6d679b..b7fd143a2 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00002.png and b/tests_zemu/snapshots/st-mainmenu/00002.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00003.png b/tests_zemu/snapshots/st-mainmenu/00003.png index 217c4c075..673172004 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00003.png and b/tests_zemu/snapshots/st-mainmenu/00003.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00004.png b/tests_zemu/snapshots/st-mainmenu/00004.png index 29438be14..c5f3265ea 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-convert_subnet_to_l1_validator/00000.png b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00000.png new file mode 100644 index 000000000..6e673bf44 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00001.png b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00001.png new file mode 100644 index 000000000..3cc4f100c Binary files /dev/null and b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00002.png b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00002.png new file mode 100644 index 000000000..bd3f53098 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00003.png b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00003.png new file mode 100644 index 000000000..88d34e2ba Binary files /dev/null and b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00004.png b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00004.png new file mode 100644 index 000000000..2f7d9905b Binary files /dev/null and b/tests_zemu/snapshots/st-sign-convert_subnet_to_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-disable_l1_validator/00000.png b/tests_zemu/snapshots/st-sign-disable_l1_validator/00000.png new file mode 100644 index 000000000..04d009adb Binary files /dev/null and b/tests_zemu/snapshots/st-sign-disable_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-disable_l1_validator/00001.png b/tests_zemu/snapshots/st-sign-disable_l1_validator/00001.png new file mode 100644 index 000000000..4e53a9ffc Binary files /dev/null and b/tests_zemu/snapshots/st-sign-disable_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-disable_l1_validator/00002.png b/tests_zemu/snapshots/st-sign-disable_l1_validator/00002.png new file mode 100644 index 000000000..fd29375a3 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-disable_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-disable_l1_validator/00003.png b/tests_zemu/snapshots/st-sign-disable_l1_validator/00003.png new file mode 100644 index 000000000..2f7d9905b Binary files /dev/null and b/tests_zemu/snapshots/st-sign-disable_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00000.png b/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00000.png new file mode 100644 index 000000000..04d009adb Binary files /dev/null and b/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00001.png b/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00001.png new file mode 100644 index 000000000..409c5370d Binary files /dev/null and b/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00002.png b/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00002.png new file mode 100644 index 000000000..fd29375a3 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00003.png b/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00003.png new file mode 100644 index 000000000..2f7d9905b Binary files /dev/null and b/tests_zemu/snapshots/st-sign-increase_l1_validator_balance/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-register_l1_validator/00000.png b/tests_zemu/snapshots/st-sign-register_l1_validator/00000.png new file mode 100644 index 000000000..b7b3923b8 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-register_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-register_l1_validator/00001.png b/tests_zemu/snapshots/st-sign-register_l1_validator/00001.png new file mode 100644 index 000000000..80d2aabe3 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-register_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-register_l1_validator/00002.png b/tests_zemu/snapshots/st-sign-register_l1_validator/00002.png new file mode 100644 index 000000000..d562b1a95 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-register_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-register_l1_validator/00003.png b/tests_zemu/snapshots/st-sign-register_l1_validator/00003.png new file mode 100644 index 000000000..d602db64c Binary files /dev/null and b/tests_zemu/snapshots/st-sign-register_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-register_l1_validator/00004.png b/tests_zemu/snapshots/st-sign-register_l1_validator/00004.png new file mode 100644 index 000000000..600a9d62b Binary files /dev/null and b/tests_zemu/snapshots/st-sign-register_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-register_l1_validator/00005.png b/tests_zemu/snapshots/st-sign-register_l1_validator/00005.png new file mode 100644 index 000000000..2f7d9905b Binary files /dev/null and b/tests_zemu/snapshots/st-sign-register_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00000.png b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00000.png new file mode 100644 index 000000000..6e673bf44 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00001.png b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00001.png new file mode 100644 index 000000000..432e53dca Binary files /dev/null and b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00002.png b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00002.png new file mode 100644 index 000000000..2f54bc7bc Binary files /dev/null and b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00003.png b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00003.png new file mode 100644 index 000000000..88d34e2ba Binary files /dev/null and b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00004.png b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00004.png new file mode 100644 index 000000000..2f7d9905b Binary files /dev/null and b/tests_zemu/snapshots/st-sign-set_l1_validator_weight/00004.png differ diff --git a/tests_zemu/snapshots/st-wallet-id/00001.png b/tests_zemu/snapshots/st-wallet-id/00001.png index 0eb228328..16d4b8e72 100644 Binary files a/tests_zemu/snapshots/st-wallet-id/00001.png and b/tests_zemu/snapshots/st-wallet-id/00001.png differ diff --git a/tests_zemu/snapshots/st-zemu-addr/00001.png b/tests_zemu/snapshots/st-zemu-addr/00001.png index 812a4a858..45c05298f 100644 Binary files a/tests_zemu/snapshots/st-zemu-addr/00001.png and b/tests_zemu/snapshots/st-zemu-addr/00001.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00004.png b/tests_zemu/snapshots/x-mainmenu/00004.png index 9e068badc..38fa9fe14 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 9e068badc..38fa9fe14 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-convert_subnet_to_l1_validator/00000.png b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00001.png b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00001.png new file mode 100644 index 000000000..7a48f1134 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00002.png b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00002.png new file mode 100644 index 000000000..282fb4319 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00003.png b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00003.png new file mode 100644 index 000000000..6f9a64c99 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00004.png b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00004.png new file mode 100644 index 000000000..ca1561fa8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00005.png b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00005.png new file mode 100644 index 000000000..aee8a248a Binary files /dev/null and b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00006.png b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00006.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00007.png b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00007.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-convert_subnet_to_l1_validator/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-disable_l1_validator/00000.png b/tests_zemu/snapshots/x-sign-disable_l1_validator/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-disable_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-disable_l1_validator/00001.png b/tests_zemu/snapshots/x-sign-disable_l1_validator/00001.png new file mode 100644 index 000000000..7ed255538 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-disable_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-disable_l1_validator/00002.png b/tests_zemu/snapshots/x-sign-disable_l1_validator/00002.png new file mode 100644 index 000000000..50e07ab3b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-disable_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-disable_l1_validator/00003.png b/tests_zemu/snapshots/x-sign-disable_l1_validator/00003.png new file mode 100644 index 000000000..b38607f5a Binary files /dev/null and b/tests_zemu/snapshots/x-sign-disable_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-disable_l1_validator/00004.png b/tests_zemu/snapshots/x-sign-disable_l1_validator/00004.png new file mode 100644 index 000000000..325e720fa Binary files /dev/null and b/tests_zemu/snapshots/x-sign-disable_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-disable_l1_validator/00005.png b/tests_zemu/snapshots/x-sign-disable_l1_validator/00005.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-disable_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-disable_l1_validator/00006.png b/tests_zemu/snapshots/x-sign-disable_l1_validator/00006.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-disable_l1_validator/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00000.png b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00001.png b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00001.png new file mode 100644 index 000000000..70d5f1de4 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00002.png b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00002.png new file mode 100644 index 000000000..50e07ab3b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00003.png b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00003.png new file mode 100644 index 000000000..b38607f5a Binary files /dev/null and b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00004.png b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00004.png new file mode 100644 index 000000000..8edd29db7 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00005.png b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00005.png new file mode 100644 index 000000000..f0e4f6846 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00006.png b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00006.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00007.png b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00007.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-increase_l1_validator_balance/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00000.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00001.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00001.png new file mode 100644 index 000000000..8bf2b1880 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00002.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00002.png new file mode 100644 index 000000000..f69ead21b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00003.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00003.png new file mode 100644 index 000000000..069454416 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00004.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00004.png new file mode 100644 index 000000000..afaa832fe Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00005.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00005.png new file mode 100644 index 000000000..f0e4f6846 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00006.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00006.png new file mode 100644 index 000000000..bbd3fee02 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00007.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00007.png new file mode 100644 index 000000000..3c99ff9b2 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00008.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00008.png new file mode 100644 index 000000000..a0e2e8a99 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00009.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00009.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00009.png differ diff --git a/tests_zemu/snapshots/x-sign-register_l1_validator/00010.png b/tests_zemu/snapshots/x-sign-register_l1_validator/00010.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-register_l1_validator/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00000.png b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00000.png new file mode 100644 index 000000000..d76795b5f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00001.png b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00001.png new file mode 100644 index 000000000..1950b27cf Binary files /dev/null and b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00002.png b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00002.png new file mode 100644 index 000000000..e9447ce5b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00003.png b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00003.png new file mode 100644 index 000000000..2cd9af1e3 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00004.png b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00004.png new file mode 100644 index 000000000..b6d34c850 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00005.png b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00005.png new file mode 100644 index 000000000..8a3711ea6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00006.png b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00006.png new file mode 100644 index 000000000..1e4be6993 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00007.png b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00007.png new file mode 100644 index 000000000..3beb1b1a3 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-set_l1_validator_weight/00007.png differ diff --git a/tests_zemu/tests/p_chain_vectors.ts b/tests_zemu/tests/p_chain_vectors.ts index ac27796b7..e15a8fcf7 100644 --- a/tests_zemu/tests/p_chain_vectors.ts +++ b/tests_zemu/tests/p_chain_vectors.ts @@ -254,3 +254,140 @@ export const ADD_SUBNET_PERMISSIONLESS_VALIDATOR = Buffer.from([ 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x00, 0x0f, 0x42, 0x40, ]) + +export const CONVERT_SUBNET_TO_L1_VALIDATOR = Buffer.from([ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, + 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, + 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, + 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x21, 0x22, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xad, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, +]) + +export const REGISTER_L1_VALIDATOR = Buffer.from([ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, + 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, + 0xea, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, + 0x55, 0x66, 0x77, 0x00, 0x00, 0x00, 0x03, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, + 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, + 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x02, 0x99, 0x77, 0x55, + 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, + 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, + 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x27, 0x73, 0x01, 0x23, 0x45, 0x21, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x8c, 0xfd, 0x79, 0x09, 0xd1, 0x53, 0xb9, + 0x60, 0x4b, 0x62, 0xb1, 0x43, 0xba, 0x36, 0x20, 0x7b, 0xb7, 0xe6, 0x48, 0x67, 0x42, 0x44, 0x80, 0x20, 0x2a, 0x67, 0xdc, 0x68, 0x76, 0x83, + 0x46, 0xd9, 0x5c, 0x90, 0x98, 0x3c, 0x2d, 0x27, 0x9c, 0x64, 0xc4, 0x3c, 0x51, 0x13, 0x6b, 0x2a, 0x05, 0xe0, 0x16, 0x02, 0xd5, 0x2a, 0xa6, + 0x37, 0x6f, 0xda, 0x17, 0xfa, 0x6e, 0x2a, 0x18, 0xa0, 0x83, 0xe4, 0x9d, 0x9c, 0x45, 0x0e, 0xab, 0x7b, 0x89, 0xb1, 0xd5, 0x55, 0x5d, 0xa5, + 0xc4, 0x89, 0x87, 0x2e, 0x02, 0xb7, 0xe5, 0x22, 0x7b, 0x77, 0x55, 0x0a, 0xf1, 0x33, 0x0e, 0x5a, 0x71, 0xf8, 0xc3, 0x68, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x00, 0x00, 0x00, 0x14, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, + 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, + 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x97, 0x98, 0xaa, 0xaa, 0xaa, 0xaa, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, +]) + +export const DISABLE_L1_VALIDATOR = Buffer.from([ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, + 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, + 0xea, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, + 0x55, 0x66, 0x77, 0x00, 0x00, 0x00, 0x03, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, + 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, + 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x02, 0x99, 0x77, 0x55, + 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, + 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, + 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x27, 0x73, 0x01, 0x23, 0x45, 0x21, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, + 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, +]) + +export const INCREASE_L1_VALIDATOR_BALANCE = Buffer.from([ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, + 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, + 0xea, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, + 0x55, 0x66, 0x77, 0x00, 0x00, 0x00, 0x03, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, + 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, + 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x02, 0x99, 0x77, 0x55, + 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, + 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, + 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x27, 0x73, 0x01, 0x23, 0x45, 0x21, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, + 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, + 0xca, 0x00, +]) + +export const SET_L1_VALIDATOR_WEIGHT = Buffer.from([ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x21, 0xe6, 0x73, 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, + 0xdf, 0x25, 0x91, 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x05, 0x39, 0x7f, 0xb1, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, + 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, + 0xea, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0x44, + 0x55, 0x66, 0x77, 0x00, 0x00, 0x00, 0x03, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x01, 0x21, 0xe6, 0x73, + 0x17, 0xcb, 0xc4, 0xbe, 0x2a, 0xeb, 0x00, 0x67, 0x7a, 0xd6, 0x46, 0x27, 0x78, 0xa8, 0xf5, 0x22, 0x74, 0xb9, 0xd6, 0x05, 0xdf, 0x25, 0x91, + 0xb2, 0x30, 0x27, 0xa8, 0x7d, 0xff, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x9a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x00, 0x02, 0x99, 0x77, 0x55, + 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, + 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x34, 0x3e, 0xfc, 0xea, 0x00, 0x00, 0x00, 0x05, 0xef, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, + 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, + 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x99, 0x77, 0x55, 0x77, 0x11, 0x33, 0x55, 0x31, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x9f, 0x98, 0x85, 0x0a, 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x27, 0x73, 0x01, 0x23, 0x45, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, +]) diff --git a/tests_zemu/tests/p_sign.test.ts b/tests_zemu/tests/p_sign.test.ts index aa3c0c897..a865fe0db 100644 --- a/tests_zemu/tests/p_sign.test.ts +++ b/tests_zemu/tests/p_sign.test.ts @@ -31,6 +31,11 @@ import { ADD_SUBNET_PERMISSIONLESS_VALIDATOR, TRANSFORM_SUBNET, REMOVE_SUBNET_VALIDATOR, + CONVERT_SUBNET_TO_L1_VALIDATOR, + REGISTER_L1_VALIDATOR, + DISABLE_L1_VALIDATOR, + SET_L1_VALIDATOR_WEIGHT, + INCREASE_L1_VALIDATOR_BALANCE, } from './p_chain_vectors' // @ts-ignore @@ -96,6 +101,26 @@ const FULL_SIGN_TEST_DATA = [ name: 'remove_subnet_validator', op: REMOVE_SUBNET_VALIDATOR, }, + { + name: 'convert_subnet_to_l1_validator', + op: CONVERT_SUBNET_TO_L1_VALIDATOR, + }, + { + name: 'register_l1_validator', + op: REGISTER_L1_VALIDATOR, + }, + { + name: 'disable_l1_validator', + op: DISABLE_L1_VALIDATOR, + }, + { + name: 'set_l1_validator_weight', + op: SET_L1_VALIDATOR_WEIGHT, + }, + { + name: 'increase_l1_validator_balance', + op: INCREASE_L1_VALIDATOR_BALANCE, + }, ] describe.each(models)('P_Sign[$name]; sign', function (m) { diff --git a/tests_zemu/yarn.lock b/tests_zemu/yarn.lock index b9a99866d..afb6d934d 100644 --- a/tests_zemu/yarn.lock +++ b/tests_zemu/yarn.lock @@ -331,29 +331,34 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0": +"@eslint-community/regexpp@^4.10.0": version "4.11.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== -"@eslint/config-array@^0.18.0": - version "0.18.0" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d" - integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw== +"@eslint-community/regexpp@^4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/config-array@^0.19.0": + version "0.19.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.0.tgz#3251a528998de914d59bb21ba4c11767cf1b3519" + integrity sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ== dependencies: "@eslint/object-schema" "^2.1.4" debug "^4.3.1" minimatch "^3.1.2" -"@eslint/core@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.6.0.tgz#9930b5ba24c406d67a1760e94cdbac616a6eb674" - integrity sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg== +"@eslint/core@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.0.tgz#168ee076f94b152c01ca416c3e5cf82290ab4fcd" + integrity sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg== -"@eslint/eslintrc@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" - integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== +"@eslint/eslintrc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" + integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -365,20 +370,20 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.11.1": - version "9.11.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.11.1.tgz#8bcb37436f9854b3d9a561440daf916acd940986" - integrity sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA== +"@eslint/js@9.15.0": + version "9.15.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.15.0.tgz#df0e24fe869143b59731942128c19938fdbadfb5" + integrity sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg== "@eslint/object-schema@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== -"@eslint/plugin-kit@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz#8712dccae365d24e9eeecb7b346f85e750ba343d" - integrity sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig== +"@eslint/plugin-kit@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz#812980a6a41ecf3a8341719f92a6d1e784a2e0e8" + integrity sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA== dependencies: levn "^0.4.1" @@ -777,6 +782,19 @@ protobufjs "^7.2.5" yargs "^17.7.2" +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" + "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" @@ -787,6 +805,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1040,6 +1063,14 @@ resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== +"@ledgerhq/cryptoassets-evm-signatures@^13.5.2": + version "13.5.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets-evm-signatures/-/cryptoassets-evm-signatures-13.5.2.tgz#1c31cb1d0b5f95e0c7a7d47af0b8f78bb9efbc7f" + integrity sha512-OjjzuiMMEIYEbXeueJB6mXwlvYhru28b43buAVOeggZ2XmdlT0kBvt7Cjn4bDPqff/glWR7vQdytIr7b77m2EQ== + dependencies: + "@ledgerhq/live-env" "^2.4.1" + axios "1.7.7" + "@ledgerhq/cryptoassets@^13.5.0": version "13.5.0" resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-13.5.0.tgz#ddd09bec1df2ca7325002b94595f1553aca27821" @@ -1070,6 +1101,19 @@ rxjs "^7.8.1" semver "^7.3.5" +"@ledgerhq/domain-service@^1.2.12": + version "1.2.12" + resolved "https://registry.yarnpkg.com/@ledgerhq/domain-service/-/domain-service-1.2.12.tgz#2a092df38d0501bbc9599ead885fd54222e2e847" + integrity sha512-w33g7EqBtquzNPnvD2tmQq049eL4d8qYZH5vCwJ9Rfe6Vc/bYQvwlHFZ4N/cQPLmWQdsIMWDu+4fYo61p+Ub5A== + dependencies: + "@ledgerhq/errors" "^6.19.1" + "@ledgerhq/logs" "^6.12.0" + "@ledgerhq/types-live" "^6.53.1" + axios "1.7.7" + eip55 "^2.1.1" + react "^18.2.0" + react-dom "^18.2.0" + "@ledgerhq/domain-service@^1.2.5": version "1.2.5" resolved "https://registry.yarnpkg.com/@ledgerhq/domain-service/-/domain-service-1.2.5.tgz#fbbf4e12c591496da3bba6f3f84de88b37991bdf" @@ -1104,6 +1148,18 @@ crypto-js "4.2.0" ethers "5.7.2" +"@ledgerhq/evm-tools@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/evm-tools/-/evm-tools-1.3.0.tgz#1dcbe67abb28c2c5f6f04cfa5c38853427505a7e" + integrity sha512-NeMhQlcEJRkgM4Yaap+Xngm2wIib3wUoXJTvIbBt8L/yJu5A0fN8v84pprh50JC7e1X0sL4r8do8XqdxXb9Gpg== + dependencies: + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ledgerhq/cryptoassets-evm-signatures" "^13.5.2" + "@ledgerhq/live-env" "^2.4.1" + axios "1.7.7" + crypto-js "4.2.0" + "@ledgerhq/hw-app-eth@6.38.2": version "6.38.2" resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-6.38.2.tgz#01efc4ae7b2719321db6dcdab28d0c7b83caf64c" @@ -1123,6 +1179,26 @@ bignumber.js "^9.1.2" semver "^7.3.5" +"@ledgerhq/hw-app-eth@6.41.1": + version "6.41.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-6.41.1.tgz#2b58cf4037165ec74ef76aa2b6181a9d0b049e1b" + integrity sha512-JMt0ULJHsSZKNqKiuCpcV5lx+mm7R/p5CZY9dJmK/Db9UgmmHWV9UqPsECK3pmDtLTistJz0qUBl9gha0BpEzw== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ledgerhq/cryptoassets-evm-signatures" "^13.5.2" + "@ledgerhq/domain-service" "^1.2.12" + "@ledgerhq/errors" "^6.19.1" + "@ledgerhq/evm-tools" "^1.3.0" + "@ledgerhq/hw-transport" "^6.31.4" + "@ledgerhq/hw-transport-mocker" "^6.29.4" + "@ledgerhq/logs" "^6.12.0" + "@ledgerhq/types-live" "^6.53.1" + axios "1.7.7" + bignumber.js "^9.1.2" + semver "^7.3.5" + "@ledgerhq/hw-transport-http@^6.30.1": version "6.30.3" resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-http/-/hw-transport-http-6.30.3.tgz#350a8c59f8a820f5beb82cde63fb62512067b42c" @@ -1196,6 +1272,14 @@ rxjs "^7.8.1" utility-types "^3.10.0" +"@ledgerhq/live-env@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/live-env/-/live-env-2.4.1.tgz#37022d8eb20f08f1d98961f83d8f33084b537160" + integrity sha512-ZiVUfN1F5rnj6g3IUqOsHvitiKd7rtGy7FY7VBOXbG9qN7XLeLfmJhnzh/5yjX14dXhVOeAlPd1UzmmpxkRU6A== + dependencies: + rxjs "^7.8.1" + utility-types "^3.10.0" + "@ledgerhq/logs@^6.12.0": version "6.12.0" resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.12.0.tgz#ad903528bf3687a44da435d7b2479d724d374f5d" @@ -1209,6 +1293,14 @@ bignumber.js "^9.1.2" rxjs "^7.8.1" +"@ledgerhq/types-live@^6.53.1": + version "6.53.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/types-live/-/types-live-6.53.1.tgz#f1bc30a4322e2662e75061f0185e66042599a816" + integrity sha512-ukaDDyxg7quBQ0vdoQQjj3ICqiG13gO/rGIO0Jm2nRh/icbLWgxfsI2wX0u0ugJQJ+q/muiX+wJrMJn9EKhEaQ== + dependencies: + bignumber.js "^9.1.2" + rxjs "^7.8.1" + "@matteoh2o1999/github-actions-jest-reporter@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@matteoh2o1999/github-actions-jest-reporter/-/github-actions-jest-reporter-3.0.0.tgz#a706bbcfd343f37cbd8292b5728063b9d66b7029" @@ -1256,7 +1348,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -1474,10 +1566,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.13": - version "29.5.13" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.13.tgz#8bc571659f401e6a719a7bf0dbcb8b78c71a8adc" - integrity sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg== +"@types/jest@^29.5.14": + version "29.5.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -1506,18 +1598,20 @@ dependencies: undici-types "~6.19.2" -"@types/node@18.15.13": - version "18.15.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" - integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== - -"@types/node@^22.7.4": - version "22.7.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.4.tgz#e35d6f48dca3255ce44256ddc05dee1c23353fcc" - integrity sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg== +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== dependencies: undici-types "~6.19.2" +"@types/node@^22.10.0": + version "22.10.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.0.tgz#89bfc9e82496b9c7edea3382583fa94f75896e81" + integrity sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA== + dependencies: + undici-types "~6.20.0" + "@types/stack-utils@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" @@ -1540,32 +1634,40 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz#b2b02a5447cdc885950eb256b3b8a97b92031bd3" - integrity sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A== +"@typescript-eslint/eslint-plugin@^8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz#ac56825bcdf3b392fc76a94b1315d4a162f201a6" + integrity sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.8.0" - "@typescript-eslint/type-utils" "8.8.0" - "@typescript-eslint/utils" "8.8.0" - "@typescript-eslint/visitor-keys" "8.8.0" + "@typescript-eslint/scope-manager" "8.16.0" + "@typescript-eslint/type-utils" "8.16.0" + "@typescript-eslint/utils" "8.16.0" + "@typescript-eslint/visitor-keys" "8.16.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.8.0.tgz#ee4397c70230c4eee030456924c0fba480072f5e" - integrity sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg== +"@typescript-eslint/parser@^8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.16.0.tgz#ee5b2d6241c1ab3e2e53f03fd5a32d8e266d8e06" + integrity sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w== dependencies: - "@typescript-eslint/scope-manager" "8.8.0" - "@typescript-eslint/types" "8.8.0" - "@typescript-eslint/typescript-estree" "8.8.0" - "@typescript-eslint/visitor-keys" "8.8.0" + "@typescript-eslint/scope-manager" "8.16.0" + "@typescript-eslint/types" "8.16.0" + "@typescript-eslint/typescript-estree" "8.16.0" + "@typescript-eslint/visitor-keys" "8.16.0" debug "^4.3.4" +"@typescript-eslint/scope-manager@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz#ebc9a3b399a69a6052f3d88174456dd399ef5905" + integrity sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg== + dependencies: + "@typescript-eslint/types" "8.16.0" + "@typescript-eslint/visitor-keys" "8.16.0" + "@typescript-eslint/scope-manager@8.7.0": version "8.7.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz#90ee7bf9bc982b9260b93347c01a8bc2b595e0b8" @@ -1574,41 +1676,33 @@ "@typescript-eslint/types" "8.7.0" "@typescript-eslint/visitor-keys" "8.7.0" -"@typescript-eslint/scope-manager@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz#30b23a6ae5708bd7882e40675ef2f1b2beac741f" - integrity sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg== +"@typescript-eslint/type-utils@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz#585388735f7ac390f07c885845c3d185d1b64740" + integrity sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg== dependencies: - "@typescript-eslint/types" "8.8.0" - "@typescript-eslint/visitor-keys" "8.8.0" - -"@typescript-eslint/type-utils@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz#a0ca1c8a90d94b101176a169d7a0958187408d33" - integrity sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q== - dependencies: - "@typescript-eslint/typescript-estree" "8.8.0" - "@typescript-eslint/utils" "8.8.0" + "@typescript-eslint/typescript-estree" "8.16.0" + "@typescript-eslint/utils" "8.16.0" debug "^4.3.4" ts-api-utils "^1.3.0" +"@typescript-eslint/types@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.16.0.tgz#49c92ae1b57942458ab83d9ec7ccab3005e64737" + integrity sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ== + "@typescript-eslint/types@8.7.0": version "8.7.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.7.0.tgz#21d987201c07b69ce7ddc03451d7196e5445ad19" integrity sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w== -"@typescript-eslint/types@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.8.0.tgz#08ea5df6c01984d456056434641491fbf7a1bf43" - integrity sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw== - -"@typescript-eslint/typescript-estree@8.7.0": - version "8.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz#6c7db6baa4380b937fa81466c546d052f362d0e8" - integrity sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg== +"@typescript-eslint/typescript-estree@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz#9d741e56e5b13469b5190e763432ce5551a9300c" + integrity sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw== dependencies: - "@typescript-eslint/types" "8.7.0" - "@typescript-eslint/visitor-keys" "8.7.0" + "@typescript-eslint/types" "8.16.0" + "@typescript-eslint/visitor-keys" "8.16.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -1616,13 +1710,13 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/typescript-estree@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz#072eaab97fdb63513fabfe1cf271812affe779e3" - integrity sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw== +"@typescript-eslint/typescript-estree@8.7.0": + version "8.7.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz#6c7db6baa4380b937fa81466c546d052f362d0e8" + integrity sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg== dependencies: - "@typescript-eslint/types" "8.8.0" - "@typescript-eslint/visitor-keys" "8.8.0" + "@typescript-eslint/types" "8.7.0" + "@typescript-eslint/visitor-keys" "8.7.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -1630,15 +1724,15 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.8.0.tgz#bd8607e3a68c461b69169c7a5824637dc9e8b3f1" - integrity sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg== +"@typescript-eslint/utils@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.16.0.tgz#c71264c437157feaa97842809836254a6fc833c3" + integrity sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.8.0" - "@typescript-eslint/types" "8.8.0" - "@typescript-eslint/typescript-estree" "8.8.0" + "@typescript-eslint/scope-manager" "8.16.0" + "@typescript-eslint/types" "8.16.0" + "@typescript-eslint/typescript-estree" "8.16.0" "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": version "8.7.0" @@ -1650,6 +1744,14 @@ "@typescript-eslint/types" "8.7.0" "@typescript-eslint/typescript-estree" "8.7.0" +"@typescript-eslint/visitor-keys@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz#d5086afc060b01ff7a4ecab8d49d13d5a7b07705" + integrity sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ== + dependencies: + "@typescript-eslint/types" "8.16.0" + eslint-visitor-keys "^4.2.0" + "@typescript-eslint/visitor-keys@8.7.0": version "8.7.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz#5e46f1777f9d69360a883c1a56ac3c511c9659a8" @@ -1658,22 +1760,14 @@ "@typescript-eslint/types" "8.7.0" eslint-visitor-keys "^3.4.3" -"@typescript-eslint/visitor-keys@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz#f93965abd38c82a1a1f5574290a50d02daf1cd2e" - integrity sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g== - dependencies: - "@typescript-eslint/types" "8.8.0" - eslint-visitor-keys "^3.4.3" - "@zondax/ledger-avalanche-app@link:../js": version "0.0.0" uid "" -"@zondax/zemu@0.50.3": - version "0.50.3" - resolved "https://registry.yarnpkg.com/@zondax/zemu/-/zemu-0.50.3.tgz#93d4c0b54024b411b780920644fd040d7e9514d7" - integrity sha512-/z5WGeZhYd/zXQ8vTAocLvl1VOi2ekkyDsDWvagc1pBNshG9HJwi06Um2o+UO7EBV73cPLWAbO1QGnutMnuZlg== +"@zondax/zemu@0.52.0": + version "0.52.0" + resolved "https://registry.yarnpkg.com/@zondax/zemu/-/zemu-0.52.0.tgz#1f4b0705bd4975a5fdd0dc72db3da7872c292f29" + integrity sha512-Ti8hlngvMG2tj2a3aYbDLRI/0WHE1DnwJuiL61s0SuFsYP6gbdUpbTTea3jFiA5PNkB8G116cYWTE1ZGscmx+Q== dependencies: "@grpc/grpc-js" "^1.11.1" "@grpc/proto-loader" "^0.7.13" @@ -1704,6 +1798,11 @@ acorn@^8.11.0, acorn@^8.12.0, acorn@^8.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== +acorn@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -2296,7 +2395,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2305,6 +2404,15 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.5: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-js@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" @@ -2486,7 +2594,7 @@ elliptic@6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -elliptic@^6.5.4, elliptic@^6.5.7: +elliptic@^6.5.7: version "6.5.7" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b" integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q== @@ -2499,6 +2607,19 @@ elliptic@^6.5.4, elliptic@^6.5.7: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +elliptic@^6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -2658,17 +2779,17 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.9.0: - version "2.11.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.11.1.tgz#6d5a05f09af98f4d238a819ae4c23626a75fa65b" - integrity sha512-EwcbfLOhwVMAfatfqLecR2yv3dE5+kQ8kx+Rrt0DvDXEVwW86KQ/xbMDQhtp5l42VXukD5SOF8mQQHbaNtO0CQ== +eslint-module-utils@^2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.30.0: - version "2.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449" - integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw== +eslint-plugin-import@^2.31.0: + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== dependencies: "@rtsao/scc" "^1.1.0" array-includes "^3.1.8" @@ -2678,7 +2799,7 @@ eslint-plugin-import@^2.30.0: debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.9.0" + eslint-module-utils "^2.12.0" hasown "^2.0.2" is-core-module "^2.15.1" is-glob "^4.0.3" @@ -2687,12 +2808,13 @@ eslint-plugin-import@^2.30.0: object.groupby "^1.0.3" object.values "^1.2.0" semver "^6.3.1" + string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" -eslint-plugin-jest@^28.8.3: - version "28.8.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.8.3.tgz#c5699bba0ad06090ad613535e4f1572f4c2567c0" - integrity sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ== +eslint-plugin-jest@^28.9.0: + version "28.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.9.0.tgz#19168dfaed124339cd2252c4c4d1ac3688aeb243" + integrity sha512-rLu1s1Wf96TgUUxSw6loVIkNtUjq1Re7A9QdCCHSohnvXEBAjuL420h0T/fMmkQlNsQP2GhQzEUpYHPfxBkvYQ== dependencies: "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -2704,10 +2826,10 @@ eslint-plugin-prettier@^5.2.1: prettier-linter-helpers "^1.0.0" synckit "^0.9.1" -eslint-scope@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94" - integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -2722,31 +2844,36 @@ eslint-visitor-keys@^4.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== -eslint@^9.11.1: - version "9.11.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.11.1.tgz#701e5fc528990153f9cef696d8427003b5206567" - integrity sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +eslint@^9.15.0: + version "9.15.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.15.0.tgz#77c684a4e980e82135ebff8ee8f0a9106ce6b8a6" + integrity sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.11.0" - "@eslint/config-array" "^0.18.0" - "@eslint/core" "^0.6.0" - "@eslint/eslintrc" "^3.1.0" - "@eslint/js" "9.11.1" - "@eslint/plugin-kit" "^0.2.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.9.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.15.0" + "@eslint/plugin-kit" "^0.2.3" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.3.0" - "@nodelib/fs.walk" "^1.2.8" + "@humanwhocodes/retry" "^0.4.1" "@types/estree" "^1.0.6" "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.5" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.0.2" - eslint-visitor-keys "^4.0.0" - espree "^10.1.0" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -2756,16 +2883,13 @@ eslint@^9.11.1: ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" json-stable-stringify-without-jsonify "^1.0.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" -espree@^10.0.1, espree@^10.1.0: +espree@^10.0.1: version "10.1.0" resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== @@ -2774,6 +2898,15 @@ espree@^10.0.1, espree@^10.1.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.0.0" +espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== + dependencies: + acorn "^8.14.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.0" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -2849,17 +2982,17 @@ ethers@5.7.2: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -ethers@^6.13.3: - version "6.13.3" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.3.tgz#b87afdadb91cc8df5f56b9c59c96e5b206f4a600" - integrity sha512-/DzbZOLVtoO4fKvvQwpEucHAQgIwBGWuRvBdwE/lMXgXvvHHTSkn7XqAQ2b+gjJzZDJjWA9OD05bVceVOsBHbg== +ethers@^6.13.4: + version "6.13.4" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.4.tgz#bd3e1c3dc1e7dc8ce10f9ffb4ee40967a651b53c" + integrity sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA== dependencies: "@adraffy/ens-normalize" "1.10.1" "@noble/curves" "1.2.0" "@noble/hashes" "1.3.2" - "@types/node" "18.15.13" + "@types/node" "22.7.5" aes-js "4.0.0-beta.5" - tslib "2.4.0" + tslib "2.7.0" ws "8.17.1" events@^3.3.0: @@ -3419,11 +3552,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -4484,10 +4612,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== +prettier@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.0.tgz#9dcd5e617cf103db8e4bd00924baecfd32bf9971" + integrity sha512-/OXNZcLyWkfo13ofOW5M7SLh+k5pnIs07owXK2teFpnfaOEcycnSy7HQxldaVX1ZP/7Q8oO1eDuQJNwbomQq5Q== pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" @@ -4717,12 +4845,12 @@ scrypt-js@3.0.1: resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -secp256k1@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.0.tgz#be6f0c8c7722e2481e9773336d351de8cddd12f7" - integrity sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA== +secp256k1@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.1.tgz#dc2c86187d48ff2da756f0f7e96417ee03c414b1" + integrity sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA== dependencies: - elliptic "^6.5.4" + elliptic "^6.5.7" node-addon-api "^5.0.0" node-gyp-build "^4.2.0" @@ -5023,11 +5151,6 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -5094,12 +5217,7 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -tslib@^2.1.0, tslib@^2.6.2: +tslib@2.7.0, tslib@^2.1.0, tslib@^2.6.2: version "2.7.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== @@ -5182,10 +5300,10 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript@^5.6.2: - version "5.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" - integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== +typescript@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== unbox-primitive@^1.0.2: version "1.0.2" @@ -5202,6 +5320,11 @@ undici-types@~6.19.2: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + undici@^5.25.4: version "5.28.4" resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068"