From 5ac8c7177985024be30f5182d40c6ad23c0e5074 Mon Sep 17 00:00:00 2001 From: cryptoAtwill Date: Fri, 6 Dec 2024 14:55:59 +0800 Subject: [PATCH 1/4] configurable chain id --- fendermint/app/src/cmd/genesis.rs | 7 ++++--- .../testing/contract-test/tests/gas_market.rs | 1 + .../testing/contract-test/tests/run_upgrades.rs | 1 + fendermint/testing/materializer/src/docker/mod.rs | 1 + fendermint/vm/genesis/src/lib.rs | 14 +++++++++++++- fendermint/vm/interpreter/src/genesis.rs | 4 ++-- 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/fendermint/app/src/cmd/genesis.rs b/fendermint/app/src/cmd/genesis.rs index 134c9ad4df..39b84abe7c 100644 --- a/fendermint/app/src/cmd/genesis.rs +++ b/fendermint/app/src/cmd/genesis.rs @@ -9,7 +9,7 @@ use ipc_provider::IpcProvider; use std::path::PathBuf; use fendermint_vm_actor_interface::eam::EthAddress; -use fendermint_vm_core::{chainid, Timestamp}; +use fendermint_vm_core::Timestamp; use fendermint_vm_genesis::{ ipc, Account, Actor, ActorMeta, Collateral, Genesis, Multisig, PermissionMode, SignerAddr, Validator, ValidatorKey, @@ -42,6 +42,7 @@ cmd! { let genesis = Genesis { timestamp: Timestamp(self.timestamp), chain_name: self.chain_name.clone(), + chain_id: None, network_version: self.network_version, base_fee: self.base_fee.clone(), power_scale: self.power_scale, @@ -223,8 +224,7 @@ fn into_tendermint(genesis_file: &PathBuf, args: &GenesisIntoTendermintArgs) -> _ => None, }; - let chain_id: u64 = chainid::from_str_hashed(&genesis.chain_name)?.into(); - let chain_id = chain_id.to_string(); + let chain_id = u64::from(genesis.chain_id()?).to_string(); let tmg = tendermint::Genesis { genesis_time: tendermint::time::Time::from_unix_timestamp(genesis.timestamp.as_secs(), 0)?, @@ -352,6 +352,7 @@ async fn new_genesis_from_parent( accounts: Vec::new(), eam_permission_mode: PermissionMode::Unrestricted, ipc: Some(ipc_params), + chain_id: None, }; for v in genesis_info.validators { diff --git a/fendermint/testing/contract-test/tests/gas_market.rs b/fendermint/testing/contract-test/tests/gas_market.rs index 7440521a4f..bf7beb6e43 100644 --- a/fendermint/testing/contract-test/tests/gas_market.rs +++ b/fendermint/testing/contract-test/tests/gas_market.rs @@ -57,6 +57,7 @@ async fn tester_with_upgrader( let genesis = Genesis { chain_name: CHAIN_NAME.to_string(), + chain_id: None, timestamp: Timestamp(0), network_version: NetworkVersion::V21, base_fee: TokenAmount::zero(), diff --git a/fendermint/testing/contract-test/tests/run_upgrades.rs b/fendermint/testing/contract-test/tests/run_upgrades.rs index 2885037f61..0d339946e4 100644 --- a/fendermint/testing/contract-test/tests/run_upgrades.rs +++ b/fendermint/testing/contract-test/tests/run_upgrades.rs @@ -199,6 +199,7 @@ async fn test_applying_upgrades() { let genesis = Genesis { chain_name: CHAIN_NAME.to_string(), + chain_id: None, timestamp: Timestamp(0), network_version: NetworkVersion::V21, base_fee: TokenAmount::zero(), diff --git a/fendermint/testing/materializer/src/docker/mod.rs b/fendermint/testing/materializer/src/docker/mod.rs index f31cd0675d..e85e220e3c 100644 --- a/fendermint/testing/materializer/src/docker/mod.rs +++ b/fendermint/testing/materializer/src/docker/mod.rs @@ -666,6 +666,7 @@ impl Materializer for DockerMaterializer { // TODO: Some of these hardcoded values can go into the manifest. let genesis = Genesis { chain_name, + chain_id: None, timestamp: Timestamp::current(), network_version: NetworkVersion::V21, base_fee: TokenAmount::zero(), diff --git a/fendermint/vm/genesis/src/lib.rs b/fendermint/vm/genesis/src/lib.rs index ae87b4a1db..6e04c0a592 100644 --- a/fendermint/vm/genesis/src/lib.rs +++ b/fendermint/vm/genesis/src/lib.rs @@ -9,11 +9,12 @@ use serde::{Deserialize, Serialize}; use serde_with::serde_as; use fendermint_actor_eam::PermissionModeParams; +use fvm_shared::chainid::ChainID; use fvm_shared::version::NetworkVersion; use fvm_shared::{address::Address, econ::TokenAmount}; use fendermint_crypto::{normalize_public_key, PublicKey}; -use fendermint_vm_core::Timestamp; +use fendermint_vm_core::{chainid, Timestamp}; use fendermint_vm_encoding::IsHumanReadable; #[cfg(feature = "arb")] @@ -31,6 +32,7 @@ pub struct Genesis { /// It will be used to derive a chain ID as well as being /// the network name in the `InitActor`. pub chain_name: String, + pub chain_id: Option, pub timestamp: Timestamp, pub network_version: NetworkVersion, #[serde_as(as = "IsHumanReadable")] @@ -49,6 +51,16 @@ pub struct Genesis { pub ipc: Option, } +impl Genesis { + pub fn chain_id(&self) -> anyhow::Result { + let id = match self.chain_id { + None => chainid::from_str_hashed(&self.chain_name)?.into(), + Some(v) => v, + }; + Ok(id.into()) + } +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(tag = "mode", rename_all = "lowercase")] pub enum PermissionMode { diff --git a/fendermint/vm/interpreter/src/genesis.rs b/fendermint/vm/interpreter/src/genesis.rs index ce610e0bf0..156f45d037 100644 --- a/fendermint/vm/interpreter/src/genesis.rs +++ b/fendermint/vm/interpreter/src/genesis.rs @@ -22,7 +22,7 @@ use fendermint_vm_actor_interface::{ account, activity, burntfunds, chainmetadata, cron, eam, gas_market, init, ipc, reward, system, EMPTY_ARR, }; -use fendermint_vm_core::{chainid, Timestamp}; +use fendermint_vm_core::Timestamp; use fendermint_vm_genesis::{ActorMeta, Collateral, Genesis, Power, PowerScale, Validator}; use futures_util::io::Cursor; use fvm::engine::MultiEngine; @@ -278,7 +278,7 @@ impl GenesisBuilder { // and rejecting genesis if it doesn't match the expectation, // but the Tendermint genesis file also has this field, and // presumably Tendermint checks that its peers have the same. - let chain_id = chainid::from_str_hashed(&genesis.chain_name)?; + let chain_id = genesis.chain_id()?; // Convert validators to CometBFT power scale. let validators = genesis From b19b278547cd2a742221147835383e4ca2a1a6ca Mon Sep 17 00:00:00 2001 From: cryptoAtwill Date: Fri, 6 Dec 2024 15:07:02 +0800 Subject: [PATCH 2/4] add command to set chain id --- fendermint/app/options/src/genesis.rs | 9 +++++++++ fendermint/app/src/cmd/genesis.rs | 13 +++++++++++++ 2 files changed, 22 insertions(+) diff --git a/fendermint/app/options/src/genesis.rs b/fendermint/app/options/src/genesis.rs index 740384758c..04cf9b0700 100644 --- a/fendermint/app/options/src/genesis.rs +++ b/fendermint/app/options/src/genesis.rs @@ -29,6 +29,8 @@ pub enum GenesisCommands { AddMultisig(GenesisAddMultisigArgs), /// Add a validator to the genesis file. AddValidator(GenesisAddValidatorArgs), + /// Set the chain id explicitly + SetChainId(GenesisSetChainIdArgs), /// Set the EAM actor permission mode. SetEamPermissions(GenesisSetEAMPermissionsArgs), /// IPC commands. @@ -131,6 +133,13 @@ pub struct GenesisAddValidatorArgs { pub power: TokenAmount, } +#[derive(Args, Debug)] +pub struct GenesisSetChainIdArgs { + /// The chain id of the blockchain + #[arg(long, short)] + pub chain_id: u64, +} + #[derive(Args, Debug)] pub struct GenesisIntoTendermintArgs { /// The initial app bytes path for cometbft diff --git a/fendermint/app/src/cmd/genesis.rs b/fendermint/app/src/cmd/genesis.rs index 39b84abe7c..02ff25dcef 100644 --- a/fendermint/app/src/cmd/genesis.rs +++ b/fendermint/app/src/cmd/genesis.rs @@ -30,6 +30,7 @@ cmd! { GenesisCommands::AddAccount(args) => args.exec(genesis_file).await, GenesisCommands::AddMultisig(args) => args.exec(genesis_file).await, GenesisCommands::AddValidator(args) => args.exec(genesis_file).await, + GenesisCommands::SetChainId(args) => args.exec(genesis_file).await, GenesisCommands::IntoTendermint(args) => args.exec(genesis_file).await, GenesisCommands::SetEamPermissions(args) => args.exec(genesis_file).await, GenesisCommands::Ipc { command } => command.exec(genesis_file).await, @@ -76,6 +77,11 @@ cmd! { add_validator(&genesis_file, self) } } +cmd! { + GenesisSetChainIdArgs(self, genesis_file: PathBuf) { + set_chain_id(&genesis_file, self) + } +} cmd! { GenesisIntoTendermintArgs(self, genesis_file: PathBuf) { @@ -102,6 +108,13 @@ cmd! { } } +fn set_chain_id(genesis_file: &PathBuf, args: &GenesisSetChainIdArgs) -> anyhow::Result<()> { + update_genesis(genesis_file, |mut genesis| { + genesis.chain_id = Some(args.chain_id); + Ok(genesis) + }) +} + fn add_account(genesis_file: &PathBuf, args: &GenesisAddAccountArgs) -> anyhow::Result<()> { update_genesis(genesis_file, |mut genesis| { let pk = read_public_key(&args.public_key)?; From 6826febe8c83d14633a6ca3a3a451c9f5539164d Mon Sep 17 00:00:00 2001 From: cryptoAtwill Date: Fri, 6 Dec 2024 15:20:04 +0800 Subject: [PATCH 3/4] clippy --- fendermint/app/src/cmd/genesis.rs | 2 +- fendermint/testing/contract-test/tests/staking/state.rs | 2 ++ fendermint/vm/genesis/src/arb.rs | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fendermint/app/src/cmd/genesis.rs b/fendermint/app/src/cmd/genesis.rs index 02ff25dcef..65de4d2d5f 100644 --- a/fendermint/app/src/cmd/genesis.rs +++ b/fendermint/app/src/cmd/genesis.rs @@ -43,7 +43,7 @@ cmd! { let genesis = Genesis { timestamp: Timestamp(self.timestamp), chain_name: self.chain_name.clone(), - chain_id: None, + chain_id: None, network_version: self.network_version, base_fee: self.base_fee.clone(), power_scale: self.power_scale, diff --git a/fendermint/testing/contract-test/tests/staking/state.rs b/fendermint/testing/contract-test/tests/staking/state.rs index f1af4eaeec..4c0160f918 100644 --- a/fendermint/testing/contract-test/tests/staking/state.rs +++ b/fendermint/testing/contract-test/tests/staking/state.rs @@ -578,6 +578,7 @@ impl arbitrary::Arbitrary<'_> for StakingState { let parent_genesis = Genesis { chain_name: String::arbitrary(u)?, + chain_id: None, timestamp: Timestamp(u64::arbitrary(u)?), network_version: NetworkVersion::V21, base_fee: ArbTokenAmount::arbitrary(u)?.0, @@ -599,6 +600,7 @@ impl arbitrary::Arbitrary<'_> for StakingState { let child_genesis = Genesis { chain_name: String::arbitrary(u)?, + chain_id: None, timestamp: Timestamp(u64::arbitrary(u)?), network_version: NetworkVersion::V21, base_fee: ArbTokenAmount::arbitrary(u)?.0, diff --git a/fendermint/vm/genesis/src/arb.rs b/fendermint/vm/genesis/src/arb.rs index 99128cd0de..71862b15fd 100644 --- a/fendermint/vm/genesis/src/arb.rs +++ b/fendermint/vm/genesis/src/arb.rs @@ -103,6 +103,7 @@ impl Arbitrary for Genesis { Self { timestamp: Timestamp(u64::arbitrary(g)), chain_name: String::arbitrary(g), + chain_id: None, network_version: NetworkVersion::new(*g.choose(&[21]).unwrap()), base_fee: ArbTokenAmount::arbitrary(g).0, power_scale: *g.choose(&[-1, 0, 3]).unwrap(), From d77722923204b8ed064271abb1178d833e84ae28 Mon Sep 17 00:00:00 2001 From: cryptoAtwill Date: Fri, 6 Dec 2024 17:50:08 +0800 Subject: [PATCH 4/4] fix tests --- .../genesis/golden/genesis/cbor/genesis.cbor | 2 +- .../genesis/golden/genesis/cbor/genesis.txt | 2 +- .../genesis/golden/genesis/json/genesis.json | 90 ++++++++++--------- .../genesis/golden/genesis/json/genesis.txt | 2 +- 4 files changed, 52 insertions(+), 44 deletions(-) diff --git a/fendermint/vm/genesis/golden/genesis/cbor/genesis.cbor b/fendermint/vm/genesis/golden/genesis/cbor/genesis.cbor index ed0daf6782..a187635208 100644 --- a/fendermint/vm/genesis/golden/genesis/cbor/genesis.cbor +++ b/fendermint/vm/genesis/golden/genesis/cbor/genesis.cbor @@ -1 +1 @@ -a96a636861696e5f6e616d65650276c286206974696d657374616d701bf9db547b18720bf36f6e6574776f726b5f76657273696f6e1568626173655f6665655100d967904a4e524614e9104329bd3fecd46b706f7765725f7363616c65206a76616c696461746f727384a26a7075626c69635f6b6579584104b1b8def38aade0a7f6206e1f153cc2c69166ed0b544e6d4fa4b01373421c6a169f234fef7e43d16760d4fbbf8756aa807c564e2422700e882737121a3dd7741c65706f77657240a26a7075626c69635f6b6579584104e674ae8fccffa25e4803b9df4b1389418dc5b484b2117c1f26f4fe48e47e012f2b54da23f9760f44fc41a459396502ef7c581003f6fda65cfeb00325f616017c65706f77657251006c9eec63e458608283bfe77a0055e9fea26a7075626c69635f6b657958410400c6bbd6ae8887d1ea5b5cb026708e117863d5754c3fe24ca061bb79e29977209292f56d621c07a9c84c166c33c77be8d934c710529a29891ea639bcea0c65cb65706f776572510095fbc354d7299e24e4e0baabc15c1704a26a7075626c69635f6b65795841044e392cee6f6e834e47c0267bacd13f8ec946d246597b9710502ab8326e6c82c854a588573629ed80cc191b1856530ec6a3794e160564a106a3acf7f4c6fe417465706f77657251000fda8290957a31d30368472a828ac9db686163636f756e747384a2646d657461a1674163636f756e74a1656f776e657255019f377c179cb5fa17d06f062083f2936de5819fbd6762616c616e63655100bd07b3aef354948578c473b98374e130a2646d657461a1674163636f756e74a1656f776e65725501ff3c79ae8c9b302b5592869ef4c02fd0000bff226762616c616e63655100ffffffffffffffff0086db9c18c4d18fa2646d657461a1674163636f756e74a1656f776e657255011ec252b4d088c10c8d18decd8e259ded6178adb66762616c616e6365510096892c6d5730e0b0af06ba4508504aa7a2646d657461a1674163636f756e74a1656f776e657256040ab9f385d65e2507dbf872d5b18e2724d4567806346762616c616e6365510042662ed939482ec79b3a659f335b2add7365616d5f7065726d697373696f6e5f6d6f6465a1646d6f64656c756e7265737472696374656463697063a16767617465776179a4697375626e65745f6964821b6549ea85c5442b9c8256040a01c46872a9f6a041ac1fe7bfe3cb8734001124274b00f8f8b7c4dba5d28bc80176626f74746f6d5f75705f636865636b5f706572696f641b36652e94d8f39a6c736d616a6f726974795f70657263656e746167651856776163746976655f76616c696461746f72735f6c696d697401 \ No newline at end of file +a96a636861696e5f6e616d6564743ac28168636861696e5f6964f66974696d657374616d701bbd4bf11f3a3849796f6e6574776f726b5f76657273696f6e1568626173655f66656550008612376b9da7aa551de3a65744c0ae6b706f7765725f7363616c65036a76616c696461746f727389a26a7075626c69635f6b657958410476372d7d4864b6a0d2b3b06ed50085fac2fe88802bb2e8c48d8f704b4d50f4a38f4031db16cba18c6e204650ad35bcb1901c5519c1df352b3d104db7dea6d13c65706f77657251006ba0ad059ab57fdbe575ca38d14f9de4a26a7075626c69635f6b657958410489ad9f13e241927676b2b3595bbd20ae37d93d6a43a985fa8e4b33b4b6459ea828c88aedc6a7b4cfb5150a4d3f39c56e8b6177dfcef3f94884e1ae63df27ea0665706f776572510015ec278d30b626b6e356eaac0be2b75fa26a7075626c69635f6b657958410418c8c5ae11fe99f85a69c76faad1a6759a2005ae6f0e2b7753f7fca0f4a9925044a6b53e9827d9981044ef4be57b15b266b32a39c4db75d96a582b56c2b25e8765706f7765725100ffffffffffffffffc418bd7481cc8d3aa26a7075626c69635f6b6579584104097ac456e37bec3b04ef0e9c9c4a9c98ae35e15f206ed317a44a4a82cabd18ae84e1469138403fd43c702d2cb52d4f2d21c5433f6ec3c7e1ea7c2a91ec63cb0e65706f776572510097cf49b1e4a816a7ca4870ca065150e3a26a7075626c69635f6b65795841040d4f5f56ab9859812a8a266928d72d78096d24b5590ade87e7c205a63bf872818d5f09d75edd110563147553f12c4b82e04cc9a11c60625dd22e9c364c808f5065706f7765725100ffffffffffffffffa5a36f9384821167a26a7075626c69635f6b657958410400aabb0b996e884ff6938d3a0997b174a291b816167367b251493e2650e3338cb555b52ae2f55ba43766ad9f48c56481113df7a8f550465d947dbe4d722918a065706f7765725100b4c6f3f24970c4cb5cd589383abd7c02a26a7075626c69635f6b6579584104ae8021891450d9f66fd2b1d21ceb93f22da3868fd31c42614aeeb1cc711b7dbe19ab2622beff2c936eee912adf600758d2655900ed643c60b0034ef7c1c2cc1f65706f776572510052fa3b310687ee1410acd82d6b8ebd19a26a7075626c69635f6b6579584104a1154af685e5e18f06c1fb417276180df7cb3fecd7e3469e792ce8c699d92cece31b9be7e68ea9975d61376431e4fe613508338afafafcbc9742c79dda42ed2665706f77657251006cfe34ae14adcb58c38f05b2a7cd3e84a26a7075626c69635f6b657958410495cc1694695283392a2cf6156be519e23ec1486361c49f6178e2e3b85f27ddfefb47dda57afb214b9027691c52711b52703e48d7b224c7fc20ea20d52c50e76365706f7765725100b7ade10bdf911763aa16b9da80d5f1e4686163636f756e747385a2646d657461a1674163636f756e74a1656f776e65725501dd383babbd0e2a05f3df7b5010a0742e21829c496762616c616e636551005bcb33ef2629fe92b3d72173d710e2c4a2646d657461a1684d756c7469736967a4677369676e657273825501b75d73950b1663ac6e426e53fc2eef0637b3e5b65501cd0c1c0ed741b0eff1e308f743d39dda72798e29697468726573686f6c64027076657374696e675f6475726174696f6e1be902433266fdaa1e6d76657374696e675f7374617274016762616c616e636551007488e745df44d72010bb870899d580b5a2646d657461a1684d756c7469736967a4677369676e6572738555016bd5fb99a9550ff40f9c942017e556b35fca6b7d550143f40b43c969cd7f6f9caec35684b6d75a832e68550129b3e5a959ab03dbaa9308f32df4d33c8baa969d55011c9742abbeae1eaa0c68f52b1bbeda2e378a0c9f55016af8e18a9426b158c339e29de27bda0a57480e77697468726573686f6c64017076657374696e675f6475726174696f6e1b22b25ee9b9b8630c6d76657374696e675f73746172741b80c5a416503ebb8f6762616c616e636551001cd59e5c05e2a335bb80b9f7ce277b97a2646d657461a1674163636f756e74a1656f776e657256040aa08feb38ec798210bfaa877dcf1367d2570249956762616c616e636551007a7e060487bf1f66d0fd96ad11b372f5a2646d657461a1684d756c7469736967a4677369676e6572738255013b30b7082d3ec93cf8729441d37d06ed61b9292a5501d5dd00369f6308acd1e966d3a5330386517abc82697468726573686f6c64027076657374696e675f6475726174696f6e1bbe76e9869c0e9d4b6d76657374696e675f73746172741ba541e3a797e5cdbc6762616c616e636551009a31b914015bef53473dc9a3d140a7e27365616d5f7065726d697373696f6e5f6d6f6465a1646d6f64656c756e72657374726963746564 \ No newline at end of file diff --git a/fendermint/vm/genesis/golden/genesis/cbor/genesis.txt b/fendermint/vm/genesis/golden/genesis/cbor/genesis.txt index c1520bbed2..d9cf25df42 100644 --- a/fendermint/vm/genesis/golden/genesis/cbor/genesis.txt +++ b/fendermint/vm/genesis/golden/genesis/cbor/genesis.txt @@ -1 +1 @@ -Genesis { chain_name: "\u{2}v\u{86} ", timestamp: Timestamp(18004076823011527667), network_version: NetworkVersion(21), base_fee: TokenAmount(288980208215862077196.62279768840915682), power_scale: -1, validators: [Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [35416598, 318672, 47512139, 2969913, 43083501, 21967025, 34005489, 58892248, 49515181, 2911799], magnitude: 1, normalized: true }, y: Field { n: [30897180, 29656719, 15237747, 9472448, 8148558, 30780064, 22002680, 54893955, 66027075, 2607315], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(0.0)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [8257839, 20943417, 63042159, 34785349, 26068404, 46457424, 3907060, 42563872, 42978559, 3775787], magnitude: 1, normalized: true }, y: Field { n: [34996604, 51581, 40226795, 1039350, 58480656, 39403707, 1721747, 4002801, 35912054, 709942], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(144381801011343391211.45386339795297331)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [43611936, 7265912, 35965446, 30748927, 24667093, 27009924, 28691202, 35604393, 64401032, 12718], magnitude: 1, normalized: true }, y: Field { n: [34366923, 26111802, 43553258, 4278888, 14234823, 15851258, 12674755, 2008865, 23945756, 2401469], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(199362199675072659956.03829084385365786)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [40665800, 44960923, 24184066, 18441710, 46745298, 53759971, 157626, 34421023, 15626094, 1281611], magnitude: 1, normalized: true }, y: Field { n: [50217332, 54394161, 34630202, 5772690, 44267854, 26526641, 26325381, 62260016, 5715497, 1386850], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(21072988820299197989.636065309204597211)) }], accounts: [Actor { meta: Account(Account { owner: SignerAddr(Address("f1t43xyf44wx5bpudpayqih4utnxsydh556ydceiy")) }), balance: TokenAmount(251264081693685283431.012990384174588208) }, Actor { meta: Account(Account { owner: SignerAddr(Address("f1746htlumtmycwvmsq2ppjqbp2aaax7zcuieqlqa")) }), balance: TokenAmount(340282366920938463444.965822468414820751) }, Actor { meta: Account(Account { owner: SignerAddr(Address("f1d3bffngqrdaqzdiy33gy4jm55vqxrlnwxqibvry")) }), balance: TokenAmount(200096445126233212412.120803979505453735) }, Actor { meta: Account(Account { owner: SignerAddr(Address("f410fxhzylvs6eud5x6ds2wyy4jze2rlhqbruaxgtf5y")) }), balance: TokenAmount(88259612202455942731.736705225415404253) }], eam_permission_mode: Unrestricted, ipc: Some(IpcParams { gateway: GatewayParams { subnet_id: SubnetID { root: 7298622531391728540, children: [Address("f410fahcgq4vj62qedla74676hs4hgqabcjbh3qr5lrq"), Address("f014418073192768601208")] }, bottom_up_check_period: 3919590267525765740, majority_percentage: 86, active_validators_limit: 1 } }) } \ No newline at end of file +Genesis { chain_name: "t:\u{81}", chain_id: None, timestamp: Timestamp(13640261012844726649), network_version: NetworkVersion(21), base_fee: TokenAmount(696137253270960098.675144670027497646), power_scale: 3, validators: [Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [22082723, 64754387, 42748120, 33599179, 46333576, 20980094, 54200045, 47874890, 24987748, 1936843], magnitude: 1, normalized: true }, y: Field { n: [44486972, 1273335, 55751633, 6752124, 26221653, 55406380, 33842442, 42348984, 31135435, 2347020], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(143061672347233926014.329274708775640548)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [38117032, 46984493, 6269156, 27856550, 37214525, 49236011, 53163413, 38394330, 51634753, 2255719], magnitude: 1, normalized: true }, y: Field { n: [52947462, 7051511, 60065870, 58670031, 42688887, 63861083, 22062291, 47398612, 49137319, 668194], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(29139972170318397371.941015021584299871)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [11113040, 33499197, 45577535, 45726776, 26877957, 45377949, 43808506, 40362345, 28185086, 406065], magnitude: 1, normalized: true }, y: Field { n: [45244039, 34264496, 56465061, 15143789, 40284970, 22988140, 5174462, 57040961, 20879399, 1124781], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(340282366920938463459.058115497025113402)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [45947054, 43163826, 20019780, 24936891, 11417057, 51554086, 49342921, 61926419, 5694331, 155313], magnitude: 1, normalized: true }, y: Field { n: [6540046, 51029115, 8265383, 16628495, 18990403, 21713867, 50516683, 16732401, 43071552, 2177105], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(201789727523290626488.516222068370526435)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [66613889, 8481166, 32013948, 47539243, 617764, 37079902, 10643090, 23463082, 56011672, 218071], magnitude: 1, normalized: true }, y: Field { n: [8425296, 61279635, 36035874, 42234241, 48254153, 4920032, 21452095, 4461964, 30891741, 2316226], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(340282366920938463456.863369474894598503)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [14889868, 38766996, 41624852, 5790157, 10654136, 40234077, 20501408, 35733466, 51091822, 10926], magnitude: 1, normalized: true }, y: Field { n: [36247712, 57643868, 6674759, 44291393, 17907191, 36788512, 40557044, 24023261, 19587829, 2970989], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(240294061840752503544.981147537448467458)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [18578878, 61633308, 2495662, 37702769, 36545414, 54191356, 19602721, 57137599, 25760848, 2859016], magnitude: 1, normalized: true }, y: Field { n: [29543455, 13876720, 63310592, 243088, 13788505, 64487894, 48829101, 11685307, 35831551, 420553], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(110295970415364626470.687780687649357081)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [31010028, 54145446, 6940562, 62087053, 33016639, 10323459, 2077719, 59128859, 49710565, 2639186], magnitude: 1, normalized: true }, y: Field { n: [37940518, 11659126, 63687028, 36432875, 20252723, 7946136, 34829891, 44457333, 65529486, 3720934], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(144876535424238232501.135916381695196804)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [52944382, 12119575, 32905102, 26052370, 37667144, 49890936, 47145302, 34399400, 43280722, 2454277], magnitude: 1, normalized: true }, y: Field { n: [5302115, 42480971, 8372750, 56543379, 40910408, 10241748, 41324997, 8728128, 27622139, 4116983], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(244151555068027301090.802598195875934692)) }], accounts: [Actor { meta: Account(Account { owner: SignerAddr(Address("f13u4dxk55byval467pnibbidufyqyfhcjwhibkbq")) }), balance: TokenAmount(122014837228941740106.291898700541256388) }, Actor { meta: Multisig(Multisig { signers: [SignerAddr(Address("f1w5oxhfilczr2y3scnzj7ylxpay33hznwdjgzuki")), SignerAddr(Address("f1zugbydwxigyo74pdbd3uhu453jzhtdrj4ht52vq"))], threshold: 2, vesting_duration: 16790056244545956382, vesting_start: 1 }), balance: TokenAmount(154901290656271014880.618070501068472501) }, Actor { meta: Multisig(Multisig { signers: [SignerAddr(Address("f1npk7xgnjkuh7id44sqqbpzkwwnp4u235tf6jkjy")), SignerAddr(Address("f1ip2awq6jnhgx6344v3bvnbfw25nigltin7gzyfq")), SignerAddr(Address("f1fgz6lkkzvmb5xkutbdzs35gthsf2vfu5jewyjaa")), SignerAddr(Address("f1dslufk56vypkuddi6uvrxpw2fy3yude7646ro3a")), SignerAddr(Address("f1nl4odcuue2yvrqzz4ko6e662bjluqdtxi2v3rxi"))], threshold: 1, vesting_duration: 2500165101080306444, vesting_start: 9279003023009299343 }), balance: TokenAmount(38327555024375304023.694414229681961879) }, Actor { meta: Account(Account { owner: SignerAddr(Address("f410fuch6wohmpgbbbp5kq5646e3h2jlqesmvj2xc7ci")) }), balance: TokenAmount(162820166943316926189.955399276024787701) }, Actor { meta: Multisig(Multisig { signers: [SignerAddr(Address("f1hmylocbnh3etz6dssra5g7ig5vq3skjkhnwmr2a")), SignerAddr(Address("f12xoqanu7mmekzupjm3j2kmydqzixvpece7twysi"))], threshold: 2, vesting_duration: 13724413678811258187, vesting_start: 11908049198691765692 }), balance: TokenAmount(204959287727705804266.508384858093430754) }], eam_permission_mode: Unrestricted, ipc: None } \ No newline at end of file diff --git a/fendermint/vm/genesis/golden/genesis/json/genesis.json b/fendermint/vm/genesis/golden/genesis/json/genesis.json index 64d675d116..2e424de946 100644 --- a/fendermint/vm/genesis/golden/genesis/json/genesis.json +++ b/fendermint/vm/genesis/golden/genesis/json/genesis.json @@ -1,78 +1,86 @@ { - "chain_name": "l", - "timestamp": 13118654904661894111, + "chain_name": "⁒碡2=", + "chain_id": null, + "timestamp": 15070499951099019132, "network_version": 21, - "base_fee": "295189338358586741336982727392336216534", - "power_scale": 3, + "base_fee": "45327517016852997829006956550248900065", + "power_scale": -1, "validators": [ { - "public_key": "BOP8FwdrVEtocz7b+y2JSOEOYquvPuRIteCKc8Q0G3ItTjWAqaLF9AgUD2s9W5Rq1s4T20ERXa14cuW3mj4zg+c=", - "power": "0" - }, - { - "public_key": "BGOjwayV6ssNhntesMO9XWt/tZgAM0pKxTNvRsKBJkzU51rXKYGzVxwlQkobeh/TzvQjmyGLa7+QK+dbBUmIUqc=", - "power": "121424091727633819445218385660754547609" + "public_key": "BAsm4p6meLDry06Q0JpGHfodotF+H6XTU4AAOkjdjLEp90LuqvLu1OYY6uHPMSIqCTkXj7flq+CgOXpJbn3UHUc=", + "power": "119932301033360917036139185837392841648" }, { - "public_key": "BL0Z6GO6E+8GPiBy2KUKuF48g6MLVluTHZieuUelKbmovhMNtk7gWBCLo9VBZQNb8KW8Fa11BwTkufjw+l/Ixh0=", - "power": "285429473877131149044079432187083328783" + "public_key": "BApT7qlaEBNj3W0IqhBxx7RqALrCC6VpHYMkKiytqcycPOhr2le2i23vBLrJ0FpwEAurqu8WuRLkViu0yZ7ER7c=", + "power": "72593553696002689676640677648187486284" }, { - "public_key": "BOBvTIFqdn7uNiKnHS4hLPrzgu1c633MEf4L7GUhuZhjhFWOauk/t/hdS7Q2B0oQp6MPzczjhh58cZndaPpgjzg=", + "public_key": "BD7/rKPqFZrEGozKHx0zBmaAUwD5ZyL2BVyj9p3zu3TrMHNAD2uARqbt3Z5CU4ahimeRpOL0LKlYOk51tGWseZM=", "power": "0" }, { - "public_key": "BLeTu6fEJFswXKzduGWB9WQn4RqYBZBFqubx4GdfmWxuJWh8v+4joSdKXc5y7gADC77KRmLisOeyjhrbGhsHP4U=", - "power": "339337827636181644342454498417936158561" - }, - { - "public_key": "BGle2JsGARHUVHF8gx7fVFRuyqE05rAUMBzMfHsoc3pBXULL+2+AMOJAIKTyzQxMfEzSMaSN5FRCCBoyLLcvbR4=", - "power": "256505448522349814107772652896010939828" + "public_key": "BBe7myFBVMyv5gh9okRHl7LHoh6q/yrVf2zZIKEt9tfLWx/RVSuHsGuadbJ2BAnozywsaxIPb+PgXb+XFnNrD7E=", + "power": "291298186293627038193169772522045288181" }, { - "public_key": "BM4dT/WzYy2k8wWptbqHMdOaK/CgBqEQ1CyggkQH5et7FfeIw4l3AyOMA33OKB+p6Y9nch5rv5GS9nDnqbNzyMk=", - "power": "101013808659692168748072416428578512636" + "public_key": "BDeXXVFyD5maX90GhWPtaIfcJP3oky+VIkh4E8M9uesXU7vBRZCxMOXtN7QNaK816HrvV+Au9fAz3h6iR7lAnDE=", + "power": "312990816317530192653619759474913414195" }, { - "public_key": "BF/HDTBg6m+NtdH8SBGyyFknwGJtZgd5QbpakEhsqHvyXS5TYMDFG/KxqgZ8hGFO6sey0DYETn4ulmwtEFsKwfk=", - "power": "135629522709847208245707155164557673753" + "public_key": "BFzTVpAej7dT+d5rGJxl7tqY/v/MpLtoHny7Nnb0TxBo/JqhyDZFSe2cn2Wh8m7KjSuBgberyqNj+/W9YPiL/iU=", + "power": "216200538251617499823984352458920501334" }, { - "public_key": "BE0rSStCZ2zN6BaL0ZRMBvS+eLSlYM5M8D//xyiWA34s+pn9sn/IH+5xWAenqGKwUzjgOM+tVeS10VdbpgNb4ss=", - "power": "8638661263217171226" + "public_key": "BPfXBzOHxpN7shnzpNSudAVgCfNwQqJFIDIBWWgqXD91uCWc255dcUGm2FsKrBGvfgwkTJItzn1albT3KYNIvuI=", + "power": "61780370563742407388258385981369913062" }, { - "public_key": "BN7om6Rtn9AW58a582MIXV1wV3rUOHMJwAmSv7rqLOnoaJ9D6/y8M9GwO8InGZFxeq1fHYqS+GVnoxw1B9SUThc=", - "power": "75758188350819344134361527670772146683" + "public_key": "BDY4/7Ktq8CTHrNfLKApg2HWBn7qvVTiJVBw135UJXmMfX4j6jViO3fnvuBfa+cO9Zu9T4MuSgJ5hVGBGWlIyiw=", + "power": "152127681444453192943339393462254471700" } ], - "eam_permission_mode": { - "mode": "allowlist", - "addresses": ["f1rai3wqribaieprywdv55jh5psggh2vmvoyg2a2a", "f14mqisvkx7rpkcwlwjidldtbp57c7zyp6ds2bkuq"] - }, "accounts": [ { "meta": { "Multisig": { "signers": [ - "f1rai3wqribaieprywdv55jh5psggh2vmvoyg2a2a", - "f14mqisvkx7rpkcwlwjidldtbp57c7zyp6ds2bkuq", - "f12g37ph43dox3k2dxv3bmsnstj3hvhksvgpc67fa" + "f1eq6utq3fp6epznsvu7c2mif2a5jifyy6whazzfa", + "f1xabgogtsmbw56nzhnb5r5iym5vlc3tzmofp47vi", + "f1uihr3xrga4i7ykikfcnzr3s7mdty7kf3e4u5k4q" ], - "threshold": 3, - "vesting_duration": 1543697760962329766, - "vesting_start": 515254189863871537 + "threshold": 2, + "vesting_duration": 3495632352518707446, + "vesting_start": 10372155242618305478 } }, - "balance": "282192802992080846557556722789958589427" + "balance": "201356947978363187783371861624989162142" }, { "meta": { "Account": { - "owner": "f1eg363r3r5cluzx6qbgjcwaw73wwir2jzxopxhqy" + "owner": "f1zql734kpcygvjte47p5g4csrwtcs6aw6r37zwfq" } }, - "balance": "11228563589977199064736433241216043389" + "balance": "76119326758870701061379835780588612371" + }, + { + "meta": { + "Account": { + "owner": "f410fqseygnxs5zjpl2mpzu7b6dyiwruflrxzmgpo6ta" + } + }, + "balance": "67576603576789648632088173503575234123" + } + ], + "eam_permission_mode": { + "mode": "unrestricted" + }, + "ipc": { + "gateway": { + "subnet_id": "/r3980185958940539696/f099052610984297310/f410fiuaw7d6a7uauybcwnpl6n42yod75vdhtvohmwky/f410fyvhxoaabzdhxylgve5a3o2paab5t4crb5oxgw6a", + "bottom_up_check_period": 6342568685766025214, + "majority_percentage": 97, + "active_validators_limit": 36 } - ] + } } \ No newline at end of file diff --git a/fendermint/vm/genesis/golden/genesis/json/genesis.txt b/fendermint/vm/genesis/golden/genesis/json/genesis.txt index ab36964862..1a65ceed81 100644 --- a/fendermint/vm/genesis/golden/genesis/json/genesis.txt +++ b/fendermint/vm/genesis/golden/genesis/json/genesis.txt @@ -1 +1 @@ -Genesis { chain_name: "l", timestamp: Timestamp(13118654904661894111), network_version: NetworkVersion(21), base_fee: TokenAmount(295189338358586741336.982727392336216534), power_scale: 3, validators: [Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [1798701, 43839757, 9133576, 45939601, 17719979, 56775224, 65912754, 19767756, 50817876, 3735301], magnitude: 1, normalized: true }, y: Field { n: [36930535, 23979663, 47679278, 17057142, 47059931, 48569013, 16167893, 63971408, 11117253, 1281376], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(0.0)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [19287252, 64073888, 11293494, 52521, 58701208, 15685466, 62253836, 53229081, 28087786, 1632496], magnitude: 1, normalized: true }, y: Field { n: [25711271, 30851410, 66650814, 8793518, 49554331, 42464499, 2400695, 22835349, 53051827, 3790517], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(121424091727633819445.218385660754547609)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [19511720, 61755881, 20044169, 2972014, 37520291, 21147159, 34024842, 62658808, 6535699, 3098234], magnitude: 1, normalized: true }, y: Field { n: [63489565, 37502615, 5131167, 45470748, 10861589, 21026556, 37573654, 23085614, 28724960, 3114179], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(285429473877131149044.079432187083328783)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [28940387, 50010440, 12656608, 24358391, 49513197, 59263806, 36336082, 33274072, 8481398, 3677139], magnitude: 1, normalized: true }, y: Field { n: [39882552, 41376318, 31967001, 53710360, 61018061, 30573609, 12272480, 48226677, 40560959, 2168163], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(0.0)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [60386414, 7870935, 5942895, 39851585, 2613530, 23100761, 47045510, 23904626, 61326372, 3007726], magnitude: 1, normalized: true }, y: Field { n: [50806661, 45532806, 41625825, 25922243, 62835270, 58720450, 31254318, 42245417, 12578339, 612895], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(339337827636181644342.454498417936158561)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [7567937, 52371146, 21168588, 13867712, 7260833, 62379285, 51890225, 4673873, 10159617, 1726390], magnitude: 1, normalized: true }, y: Field { n: [53439774, 42765101, 21241985, 43136913, 5034545, 54727455, 34230060, 12814592, 66809728, 1527986], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(256505448522349814107.772652896010939828)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [65399675, 2134273, 17646282, 41949828, 60435440, 44158068, 5938011, 11965388, 66433891, 3376979], magnitude: 1, normalized: true }, y: Field { n: [57919689, 3795564, 18427751, 7974654, 26175346, 34073210, 3661026, 822832, 12814711, 359906], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(101013808659692168748.072416428578512636)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [11041778, 44306971, 60038053, 28678173, 19382370, 7123478, 18859137, 29243095, 19947754, 1569219], magnitude: 1, normalized: true }, y: Field { n: [51036665, 51069974, 65202534, 14160185, 46641872, 18371514, 44066760, 7326406, 56672453, 1526676], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(135629522709847208245.707155164557673753)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [33783340, 66177573, 13566975, 43352889, 12482740, 18022845, 23641369, 28522400, 19612263, 1264338], magnitude: 1, normalized: true }, y: Field { n: [56353483, 30861696, 38493461, 54441303, 54059064, 35171348, 25197178, 8370629, 28475336, 4105855], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(8.638661263217171226)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [36497896, 11529914, 10223769, 55632332, 24139642, 12719959, 7053110, 54549407, 61107615, 3652134], magnitude: 1, normalized: true }, y: Field { n: [9719319, 51200501, 39221809, 36326369, 44916509, 40131678, 62661233, 13584064, 65797308, 1714128], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(75758188350819344134.361527670772146683)) }], accounts: [Actor { meta: Multisig(Multisig { signers: [SignerAddr(Address("f1rai3wqribaieprywdv55jh5psggh2vmvoyg2a2a")), SignerAddr(Address("f14mqisvkx7rpkcwlwjidldtbp57c7zyp6ds2bkuq")), SignerAddr(Address("f12g37ph43dox3k2dxv3bmsnstj3hvhksvgpc67fa"))], threshold: 3, vesting_duration: 1543697760962329766, vesting_start: 515254189863871537 }), balance: TokenAmount(282192802992080846557.556722789958589427) }, Actor { meta: Account(Account { owner: SignerAddr(Address("f1eg363r3r5cluzx6qbgjcwaw73wwir2jzxopxhqy")) }), balance: TokenAmount(11228563589977199064.736433241216043389) }], eam_permission_mode: AllowList { addresses: [SignerAddr(Address("f1rai3wqribaieprywdv55jh5psggh2vmvoyg2a2a")), SignerAddr(Address("f14mqisvkx7rpkcwlwjidldtbp57c7zyp6ds2bkuq"))] }, ipc: None } \ No newline at end of file +Genesis { chain_name: "⁒碡2=", chain_id: None, timestamp: Timestamp(15070499951099019132), network_version: NetworkVersion(21), base_fee: TokenAmount(45327517016852997829.006956550248900065), power_scale: -1, validators: [Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [25997609, 954935, 20264960, 33062551, 35496657, 43091838, 15273225, 46378797, 43951736, 182712], magnitude: 1, normalized: true }, y: Field { n: [30678343, 43146143, 34210711, 48207535, 20518799, 4754050, 44965107, 55810147, 44757742, 4051131], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(119932301033360917036.139185837392841648)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [27905180, 17468203, 43112498, 50867861, 6947002, 1864173, 47221409, 5082997, 44653072, 169211], magnitude: 1, normalized: true }, y: Field { n: [46417847, 49099367, 19809634, 62675684, 764842, 1481732, 4959389, 36550588, 64640950, 997914], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(72593553696002689676.640677648187486284)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [62616811, 16623484, 56645066, 65379467, 41964288, 55361945, 13410801, 40570986, 10742293, 1032171], magnitude: 1, normalized: true }, y: Field { n: [28080531, 60648729, 43352996, 59494578, 40341924, 14788706, 31056933, 18521015, 1010560, 793808], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(0.0)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [32954315, 38283339, 22542029, 44825771, 46637598, 17950188, 8903204, 53657496, 52511060, 388838], magnitude: 1, normalized: true }, y: Field { n: [57348017, 65389980, 37619163, 4734399, 53226603, 16939571, 56305504, 46247529, 22358919, 1492980], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(291298186293627038193.169772522045288181)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [28961559, 33878223, 22160519, 60968126, 64759037, 16472609, 30435414, 40266111, 22114831, 910807], magnitude: 1, normalized: true }, y: Field { n: [21011505, 61379054, 50544097, 58768343, 8056663, 36425082, 58409174, 12818356, 21336241, 1371888], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(312990816317530192653.619759474913414195)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [5181544, 47029693, 42067915, 53646061, 43581183, 52001718, 31895945, 48058343, 42999439, 1520853], magnitude: 1, normalized: true }, y: Field { n: [9174565, 24074302, 37109695, 48148266, 19628417, 10203811, 32922143, 19379826, 29898309, 4138664], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(216200538251617499823.984352458920501334)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [39599989, 5659146, 5374752, 29428361, 23071219, 19635457, 27212365, 38661832, 53708742, 4060609], magnitude: 1, normalized: true }, y: Field { n: [55099106, 20826720, 64334171, 38319929, 34350156, 50621407, 25538730, 29689499, 14392925, 3017063], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(61780370563742407388.258385981369913062)) }, Validator { public_key: ValidatorKey(PublicKey(Affine { x: Field { n: [2455948, 3530645, 35804423, 61535571, 30803582, 680152, 53867210, 50482298, 62041515, 888383], magnitude: 1, normalized: true }, y: Field { n: [21547564, 6309466, 2594901, 34388264, 26983759, 49923005, 65930742, 15589278, 65680738, 2056072], magnitude: 1, normalized: true }, infinity: false })), power: Collateral(TokenAmount(152127681444453192943.3393934622544717)) }], accounts: [Actor { meta: Multisig(Multisig { signers: [SignerAddr(Address("f1eq6utq3fp6epznsvu7c2mif2a5jifyy6whazzfa")), SignerAddr(Address("f1xabgogtsmbw56nzhnb5r5iym5vlc3tzmofp47vi")), SignerAddr(Address("f1uihr3xrga4i7ykikfcnzr3s7mdty7kf3e4u5k4q"))], threshold: 2, vesting_duration: 3495632352518707446, vesting_start: 10372155242618305478 }), balance: TokenAmount(201356947978363187783.371861624989162142) }, Actor { meta: Account(Account { owner: SignerAddr(Address("f1zql734kpcygvjte47p5g4csrwtcs6aw6r37zwfq")) }), balance: TokenAmount(76119326758870701061.379835780588612371) }, Actor { meta: Account(Account { owner: SignerAddr(Address("f410fqseygnxs5zjpl2mpzu7b6dyiwruflrxzmgpo6ta")) }), balance: TokenAmount(67576603576789648632.088173503575234123) }], eam_permission_mode: Unrestricted, ipc: Some(IpcParams { gateway: GatewayParams { subnet_id: SubnetID { root: 3980185958940539696, children: [Address("f099052610984297310"), Address("f410fiuaw7d6a7uauybcwnpl6n42yod75vdhtvohmwky"), Address("f410fyvhxoaabzdhxylgve5a3o2paab5t4crb5oxgw6a")] }, bottom_up_check_period: 6342568685766025214, majority_percentage: 97, active_validators_limit: 36 } }) } \ No newline at end of file