From 15080e05268da3a7909c4ca9eb5dab940d79abb9 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Mon, 25 Aug 2025 19:57:42 +0530 Subject: [PATCH 01/18] create seperate module for state and params for actor in lotus json --- src/lotus_json/actors/mod.rs | 6 ++++++ .../params}/account_authenticate_params.rs | 0 .../methods => actors/params}/account_constructor_params.rs | 0 .../methods => actors/params}/cron_actor_params.rs | 0 .../methods => actors/params}/datacap_actor_params.rs | 0 .../{actor_states/methods => actors/params}/eam_params.rs | 0 .../methods => actors/params}/evm_actor_params.rs | 0 .../methods => actors/params}/init_constructor_params.rs | 0 .../methods => actors/params}/init_exec4_params.rs | 0 .../methods => actors/params}/init_exec_params.rs | 0 .../methods => actors/params}/miner_actor_params.rs | 0 src/lotus_json/actors/params/miner_change_worker_params.rs | 0 src/lotus_json/actors/params/miner_constructor_params.rs | 0 .../{actor_states/methods => actors/params}/mod.rs | 0 .../methods => actors/params}/multisig_actor.rs | 0 .../{actor_states/methods => actors/params}/paych_params.rs | 0 .../{actor_states/methods => actors/params}/power_actor.rs | 0 .../methods => actors/params}/reward_methods.rs | 0 .../methods => actors/params}/verified_reg_actor.rs | 0 .../{actor_states => actors/states}/account_state.rs | 0 .../{actor_states => actors/states}/cron_state.rs | 0 .../{actor_states => actors/states}/datacap_state.rs | 0 src/lotus_json/{actor_states => actors/states}/evm_state.rs | 0 .../{actor_states => actors/states}/init_state.rs | 0 .../{actor_states => actors/states}/market_state.rs | 0 .../{actor_states => actors/states}/miner_state.rs | 0 src/lotus_json/{actor_states => actors/states}/mod.rs | 2 +- .../{actor_states => actors/states}/multisig_state.rs | 0 .../states}/payment_channel_state.rs | 0 .../{actor_states => actors/states}/power_states.rs | 0 .../{actor_states => actors/states}/reward_state.rs | 0 .../{actor_states => actors/states}/system_state.rs | 0 .../{actor_states => actors/states}/verified_reg_state.rs | 0 .../{actor_states => actors/states}/vesting_funds.rs | 0 src/lotus_json/mod.rs | 2 +- 35 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 src/lotus_json/actors/mod.rs rename src/lotus_json/{actor_states/methods => actors/params}/account_authenticate_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/account_constructor_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/cron_actor_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/datacap_actor_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/eam_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/evm_actor_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/init_constructor_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/init_exec4_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/init_exec_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/miner_actor_params.rs (100%) create mode 100644 src/lotus_json/actors/params/miner_change_worker_params.rs create mode 100644 src/lotus_json/actors/params/miner_constructor_params.rs rename src/lotus_json/{actor_states/methods => actors/params}/mod.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/multisig_actor.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/paych_params.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/power_actor.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/reward_methods.rs (100%) rename src/lotus_json/{actor_states/methods => actors/params}/verified_reg_actor.rs (100%) rename src/lotus_json/{actor_states => actors/states}/account_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/cron_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/datacap_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/evm_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/init_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/market_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/miner_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/mod.rs (96%) rename src/lotus_json/{actor_states => actors/states}/multisig_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/payment_channel_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/power_states.rs (100%) rename src/lotus_json/{actor_states => actors/states}/reward_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/system_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/verified_reg_state.rs (100%) rename src/lotus_json/{actor_states => actors/states}/vesting_funds.rs (100%) diff --git a/src/lotus_json/actors/mod.rs b/src/lotus_json/actors/mod.rs new file mode 100644 index 000000000000..77e47808441d --- /dev/null +++ b/src/lotus_json/actors/mod.rs @@ -0,0 +1,6 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; +mod params; +mod states; diff --git a/src/lotus_json/actor_states/methods/account_authenticate_params.rs b/src/lotus_json/actors/params/account_authenticate_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/account_authenticate_params.rs rename to src/lotus_json/actors/params/account_authenticate_params.rs diff --git a/src/lotus_json/actor_states/methods/account_constructor_params.rs b/src/lotus_json/actors/params/account_constructor_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/account_constructor_params.rs rename to src/lotus_json/actors/params/account_constructor_params.rs diff --git a/src/lotus_json/actor_states/methods/cron_actor_params.rs b/src/lotus_json/actors/params/cron_actor_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/cron_actor_params.rs rename to src/lotus_json/actors/params/cron_actor_params.rs diff --git a/src/lotus_json/actor_states/methods/datacap_actor_params.rs b/src/lotus_json/actors/params/datacap_actor_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/datacap_actor_params.rs rename to src/lotus_json/actors/params/datacap_actor_params.rs diff --git a/src/lotus_json/actor_states/methods/eam_params.rs b/src/lotus_json/actors/params/eam_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/eam_params.rs rename to src/lotus_json/actors/params/eam_params.rs diff --git a/src/lotus_json/actor_states/methods/evm_actor_params.rs b/src/lotus_json/actors/params/evm_actor_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/evm_actor_params.rs rename to src/lotus_json/actors/params/evm_actor_params.rs diff --git a/src/lotus_json/actor_states/methods/init_constructor_params.rs b/src/lotus_json/actors/params/init_constructor_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/init_constructor_params.rs rename to src/lotus_json/actors/params/init_constructor_params.rs diff --git a/src/lotus_json/actor_states/methods/init_exec4_params.rs b/src/lotus_json/actors/params/init_exec4_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/init_exec4_params.rs rename to src/lotus_json/actors/params/init_exec4_params.rs diff --git a/src/lotus_json/actor_states/methods/init_exec_params.rs b/src/lotus_json/actors/params/init_exec_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/init_exec_params.rs rename to src/lotus_json/actors/params/init_exec_params.rs diff --git a/src/lotus_json/actor_states/methods/miner_actor_params.rs b/src/lotus_json/actors/params/miner_actor_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/miner_actor_params.rs rename to src/lotus_json/actors/params/miner_actor_params.rs diff --git a/src/lotus_json/actors/params/miner_change_worker_params.rs b/src/lotus_json/actors/params/miner_change_worker_params.rs new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/src/lotus_json/actors/params/miner_constructor_params.rs b/src/lotus_json/actors/params/miner_constructor_params.rs new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/src/lotus_json/actor_states/methods/mod.rs b/src/lotus_json/actors/params/mod.rs similarity index 100% rename from src/lotus_json/actor_states/methods/mod.rs rename to src/lotus_json/actors/params/mod.rs diff --git a/src/lotus_json/actor_states/methods/multisig_actor.rs b/src/lotus_json/actors/params/multisig_actor.rs similarity index 100% rename from src/lotus_json/actor_states/methods/multisig_actor.rs rename to src/lotus_json/actors/params/multisig_actor.rs diff --git a/src/lotus_json/actor_states/methods/paych_params.rs b/src/lotus_json/actors/params/paych_params.rs similarity index 100% rename from src/lotus_json/actor_states/methods/paych_params.rs rename to src/lotus_json/actors/params/paych_params.rs diff --git a/src/lotus_json/actor_states/methods/power_actor.rs b/src/lotus_json/actors/params/power_actor.rs similarity index 100% rename from src/lotus_json/actor_states/methods/power_actor.rs rename to src/lotus_json/actors/params/power_actor.rs diff --git a/src/lotus_json/actor_states/methods/reward_methods.rs b/src/lotus_json/actors/params/reward_methods.rs similarity index 100% rename from src/lotus_json/actor_states/methods/reward_methods.rs rename to src/lotus_json/actors/params/reward_methods.rs diff --git a/src/lotus_json/actor_states/methods/verified_reg_actor.rs b/src/lotus_json/actors/params/verified_reg_actor.rs similarity index 100% rename from src/lotus_json/actor_states/methods/verified_reg_actor.rs rename to src/lotus_json/actors/params/verified_reg_actor.rs diff --git a/src/lotus_json/actor_states/account_state.rs b/src/lotus_json/actors/states/account_state.rs similarity index 100% rename from src/lotus_json/actor_states/account_state.rs rename to src/lotus_json/actors/states/account_state.rs diff --git a/src/lotus_json/actor_states/cron_state.rs b/src/lotus_json/actors/states/cron_state.rs similarity index 100% rename from src/lotus_json/actor_states/cron_state.rs rename to src/lotus_json/actors/states/cron_state.rs diff --git a/src/lotus_json/actor_states/datacap_state.rs b/src/lotus_json/actors/states/datacap_state.rs similarity index 100% rename from src/lotus_json/actor_states/datacap_state.rs rename to src/lotus_json/actors/states/datacap_state.rs diff --git a/src/lotus_json/actor_states/evm_state.rs b/src/lotus_json/actors/states/evm_state.rs similarity index 100% rename from src/lotus_json/actor_states/evm_state.rs rename to src/lotus_json/actors/states/evm_state.rs diff --git a/src/lotus_json/actor_states/init_state.rs b/src/lotus_json/actors/states/init_state.rs similarity index 100% rename from src/lotus_json/actor_states/init_state.rs rename to src/lotus_json/actors/states/init_state.rs diff --git a/src/lotus_json/actor_states/market_state.rs b/src/lotus_json/actors/states/market_state.rs similarity index 100% rename from src/lotus_json/actor_states/market_state.rs rename to src/lotus_json/actors/states/market_state.rs diff --git a/src/lotus_json/actor_states/miner_state.rs b/src/lotus_json/actors/states/miner_state.rs similarity index 100% rename from src/lotus_json/actor_states/miner_state.rs rename to src/lotus_json/actors/states/miner_state.rs diff --git a/src/lotus_json/actor_states/mod.rs b/src/lotus_json/actors/states/mod.rs similarity index 96% rename from src/lotus_json/actor_states/mod.rs rename to src/lotus_json/actors/states/mod.rs index bcc7fa747475..296bc47b4cf3 100644 --- a/src/lotus_json/actor_states/mod.rs +++ b/src/lotus_json/actors/states/mod.rs @@ -1,5 +1,6 @@ // Copyright 2019-2025 ChainSafe Systems // SPDX-License-Identifier: Apache-2.0, MIT + use super::*; mod account_state; mod cron_state; @@ -7,7 +8,6 @@ mod datacap_state; mod evm_state; mod init_state; mod market_state; -mod methods; mod miner_state; mod multisig_state; mod payment_channel_state; diff --git a/src/lotus_json/actor_states/multisig_state.rs b/src/lotus_json/actors/states/multisig_state.rs similarity index 100% rename from src/lotus_json/actor_states/multisig_state.rs rename to src/lotus_json/actors/states/multisig_state.rs diff --git a/src/lotus_json/actor_states/payment_channel_state.rs b/src/lotus_json/actors/states/payment_channel_state.rs similarity index 100% rename from src/lotus_json/actor_states/payment_channel_state.rs rename to src/lotus_json/actors/states/payment_channel_state.rs diff --git a/src/lotus_json/actor_states/power_states.rs b/src/lotus_json/actors/states/power_states.rs similarity index 100% rename from src/lotus_json/actor_states/power_states.rs rename to src/lotus_json/actors/states/power_states.rs diff --git a/src/lotus_json/actor_states/reward_state.rs b/src/lotus_json/actors/states/reward_state.rs similarity index 100% rename from src/lotus_json/actor_states/reward_state.rs rename to src/lotus_json/actors/states/reward_state.rs diff --git a/src/lotus_json/actor_states/system_state.rs b/src/lotus_json/actors/states/system_state.rs similarity index 100% rename from src/lotus_json/actor_states/system_state.rs rename to src/lotus_json/actors/states/system_state.rs diff --git a/src/lotus_json/actor_states/verified_reg_state.rs b/src/lotus_json/actors/states/verified_reg_state.rs similarity index 100% rename from src/lotus_json/actor_states/verified_reg_state.rs rename to src/lotus_json/actors/states/verified_reg_state.rs diff --git a/src/lotus_json/actor_states/vesting_funds.rs b/src/lotus_json/actors/states/vesting_funds.rs similarity index 100% rename from src/lotus_json/actor_states/vesting_funds.rs rename to src/lotus_json/actors/states/vesting_funds.rs diff --git a/src/lotus_json/mod.rs b/src/lotus_json/mod.rs index 5d1c971ddaa6..e3db73b2dd83 100644 --- a/src/lotus_json/mod.rs +++ b/src/lotus_json/mod.rs @@ -218,7 +218,7 @@ decl_and_test!( // If a module cannot be tested normally above, you MAY declare it separately here // but you MUST document any tech debt - the reason WHY it cannot be tested above. -mod actor_states; +mod actors; mod allocation; mod beneficiary_term; // fil_actor_miner_state::v12::BeneficiaryTerm: !quickcheck::Arbitrary mod bit_field; // fil_actors_shared::fvm_ipld_bitfield::BitField: !quickcheck::Arbitrary From aec0ebeeede97f8a20c27870ed0528824d16dfb7 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 3 Sep 2025 08:06:34 +0530 Subject: [PATCH 02/18] refactor all actor method and params filename into format --- .../params/account_constructor_params.rs | 51 ----- ...thenticate_params.rs => account_params.rs} | 47 +++++ .../{cron_actor_params.rs => cron_params.rs} | 0 ...acap_actor_params.rs => datacap_params.rs} | 0 .../{evm_actor_params.rs => evm_params.rs} | 0 .../actors/params/init_constructor_params.rs | 55 ------ .../actors/params/init_exec4_params.rs | 78 -------- .../actors/params/init_exec_params.rs | 70 ------- src/lotus_json/actors/params/init_params.rs | 181 ++++++++++++++++++ .../params/miner_change_worker_params.rs | 0 .../actors/params/miner_constructor_params.rs | 0 ...{miner_actor_params.rs => miner_params.rs} | 0 src/lotus_json/actors/params/mod.rs | 24 +-- .../{multisig_actor.rs => multisig_params.rs} | 0 .../{power_actor.rs => power_params.rs} | 0 .../{reward_methods.rs => reward_params.rs} | 0 ...ed_reg_actor.rs => verified_reg_params.rs} | 0 17 files changed, 238 insertions(+), 268 deletions(-) delete mode 100644 src/lotus_json/actors/params/account_constructor_params.rs rename src/lotus_json/actors/params/{account_authenticate_params.rs => account_params.rs} (58%) rename src/lotus_json/actors/params/{cron_actor_params.rs => cron_params.rs} (100%) rename src/lotus_json/actors/params/{datacap_actor_params.rs => datacap_params.rs} (100%) rename src/lotus_json/actors/params/{evm_actor_params.rs => evm_params.rs} (100%) delete mode 100644 src/lotus_json/actors/params/init_constructor_params.rs delete mode 100644 src/lotus_json/actors/params/init_exec4_params.rs delete mode 100644 src/lotus_json/actors/params/init_exec_params.rs create mode 100644 src/lotus_json/actors/params/init_params.rs delete mode 100644 src/lotus_json/actors/params/miner_change_worker_params.rs delete mode 100644 src/lotus_json/actors/params/miner_constructor_params.rs rename src/lotus_json/actors/params/{miner_actor_params.rs => miner_params.rs} (100%) rename src/lotus_json/actors/params/{multisig_actor.rs => multisig_params.rs} (100%) rename src/lotus_json/actors/params/{power_actor.rs => power_params.rs} (100%) rename src/lotus_json/actors/params/{reward_methods.rs => reward_params.rs} (100%) rename src/lotus_json/actors/params/{verified_reg_actor.rs => verified_reg_params.rs} (100%) diff --git a/src/lotus_json/actors/params/account_constructor_params.rs b/src/lotus_json/actors/params/account_constructor_params.rs deleted file mode 100644 index 1bd244dad4dc..000000000000 --- a/src/lotus_json/actors/params/account_constructor_params.rs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2019-2025 ChainSafe Systems -// SPDX-License-Identifier: Apache-2.0, MIT -use super::*; -use crate::shim::address::Address; -use paste::paste; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)] -#[serde(transparent)] -pub struct AccountConstructorParamsLotusJson { - #[schemars(with = "LotusJson
")] - #[serde(with = "crate::lotus_json")] - pub address: Address, -} - -macro_rules! impl_account_constructor_params { - ($type_suffix:path: $($version:literal),+) => { - $( - paste! { - impl HasLotusJson for fil_actor_account_state::[]::$type_suffix { - type LotusJson = AccountConstructorParamsLotusJson; - - #[cfg(test)] - fn snapshots() -> Vec<(serde_json::Value, Self)> { - vec![ - ( - json!("f01234"), - Self { - address: Address::new_id(1234).into(), - }, - ), - ] - } - - fn into_lotus_json(self) -> Self::LotusJson { - AccountConstructorParamsLotusJson { address: self.address.into() } - } - - fn from_lotus_json(lotus_json: Self::LotusJson) -> Self { - Self { address: lotus_json.address.into() } - } - } - } - )+ - }; -} - -// not added other versions because `fil_actor_account_state::types` -// is private for all of them -impl_account_constructor_params!(types::ConstructorParams: 15, 16); -impl_account_constructor_params!(ConstructorParams: 11, 12, 13, 14); diff --git a/src/lotus_json/actors/params/account_authenticate_params.rs b/src/lotus_json/actors/params/account_params.rs similarity index 58% rename from src/lotus_json/actors/params/account_authenticate_params.rs rename to src/lotus_json/actors/params/account_params.rs index e34accd2b63c..e72c9a1625fa 100644 --- a/src/lotus_json/actors/params/account_authenticate_params.rs +++ b/src/lotus_json/actors/params/account_params.rs @@ -1,11 +1,21 @@ // Copyright 2019-2025 ChainSafe Systems // SPDX-License-Identifier: Apache-2.0, MIT + use super::*; +use crate::shim::address::Address; use jsonrpsee::core::Serialize; use paste::paste; use schemars::JsonSchema; use serde::Deserialize; +#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)] +#[serde(transparent)] +pub struct AccountConstructorParamsLotusJson { + #[schemars(with = "LotusJson
")] + #[serde(with = "crate::lotus_json")] + pub address: Address, +} + #[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)] #[serde(rename_all = "PascalCase")] pub struct AuthenticateParamsLotusJson { @@ -59,6 +69,43 @@ macro_rules! impl_account_authenticate_params { }; } +macro_rules! impl_account_constructor_params { + ($type_suffix:path: $($version:literal),+) => { + $( + paste! { + impl HasLotusJson for fil_actor_account_state::[]::$type_suffix { + type LotusJson = AccountConstructorParamsLotusJson; + + #[cfg(test)] + fn snapshots() -> Vec<(serde_json::Value, Self)> { + vec![ + ( + json!("f01234"), + Self { + address: Address::new_id(1234).into(), + }, + ), + ] + } + + fn into_lotus_json(self) -> Self::LotusJson { + AccountConstructorParamsLotusJson { address: self.address.into() } + } + + fn from_lotus_json(lotus_json: Self::LotusJson) -> Self { + Self { address: lotus_json.address.into() } + } + } + } + )+ + }; +} + +// not added other versions because `fil_actor_account_state::types` +// is private for all of them +impl_account_constructor_params!(types::ConstructorParams: 15, 16); +impl_account_constructor_params!(ConstructorParams: 11, 12, 13, 14); + // not added other versions because AuthenticateMessageParams is private for the rest of them impl_account_authenticate_params!(types::AuthenticateMessageParams: 15, 16); impl_account_authenticate_params!(AuthenticateMessageParams: 11, 12, 13, 14); diff --git a/src/lotus_json/actors/params/cron_actor_params.rs b/src/lotus_json/actors/params/cron_params.rs similarity index 100% rename from src/lotus_json/actors/params/cron_actor_params.rs rename to src/lotus_json/actors/params/cron_params.rs diff --git a/src/lotus_json/actors/params/datacap_actor_params.rs b/src/lotus_json/actors/params/datacap_params.rs similarity index 100% rename from src/lotus_json/actors/params/datacap_actor_params.rs rename to src/lotus_json/actors/params/datacap_params.rs diff --git a/src/lotus_json/actors/params/evm_actor_params.rs b/src/lotus_json/actors/params/evm_params.rs similarity index 100% rename from src/lotus_json/actors/params/evm_actor_params.rs rename to src/lotus_json/actors/params/evm_params.rs diff --git a/src/lotus_json/actors/params/init_constructor_params.rs b/src/lotus_json/actors/params/init_constructor_params.rs deleted file mode 100644 index fae5c3c05c73..000000000000 --- a/src/lotus_json/actors/params/init_constructor_params.rs +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2019-2025 ChainSafe Systems -// SPDX-License-Identifier: Apache-2.0, MIT - -use super::*; -use jsonrpsee::core::Serialize; -use paste::paste; -use schemars::JsonSchema; -use serde::Deserialize; -use std::fmt::Debug; - -#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)] -#[serde(rename_all = "PascalCase")] -pub struct InitConstructorParamsLotusJson { - pub network_name: String, -} - -macro_rules! impl_lotus_json_for_init_constructor_params { - ($($version:literal),+) => { - $( - paste! { - impl HasLotusJson for fil_actor_init_state::[]::ConstructorParams { - type LotusJson = InitConstructorParamsLotusJson; - - #[cfg(test)] - fn snapshots() -> Vec<(serde_json::Value, Self)> { - vec![ - ( - json!({ - "NetworkName": "calibnet", - }), - Self { - network_name: "calibnet".to_string(), - }, - ), - ] - } - - fn into_lotus_json(self) -> Self::LotusJson { - Self::LotusJson { - network_name: self.network_name, - } - } - - fn from_lotus_json(json: Self::LotusJson) -> Self { - Self { - network_name: json.network_name, - } - } - } - } - )+ - } -} - -impl_lotus_json_for_init_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); diff --git a/src/lotus_json/actors/params/init_exec4_params.rs b/src/lotus_json/actors/params/init_exec4_params.rs deleted file mode 100644 index 0b9bffca8010..000000000000 --- a/src/lotus_json/actors/params/init_exec4_params.rs +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2019-2025 ChainSafe Systems -// SPDX-License-Identifier: Apache-2.0, MIT - -use super::*; -use ::cid::Cid; -use fvm_ipld_encoding::RawBytes; -use jsonrpsee::core::Serialize; -use paste::paste; -use schemars::JsonSchema; -use serde::Deserialize; -use std::fmt::Debug; - -#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)] -#[serde(rename_all = "PascalCase")] -pub struct InitExec4ParamsLotusJson { - #[schemars(with = "LotusJson")] - #[serde(with = "crate::lotus_json")] - #[serde(rename = "CodeCID")] - pub code_cid: Cid, - - #[schemars(with = "LotusJson")] - #[serde(with = "crate::lotus_json")] - pub constructor_params: RawBytes, - - #[schemars(with = "LotusJson")] - #[serde(with = "crate::lotus_json")] - pub sub_address: RawBytes, -} - -macro_rules! impl_lotus_json_for_init_exec4_params { - ($($version:literal),+) => { - $( - paste! { - impl HasLotusJson for fil_actor_init_state::[]::Exec4Params { - type LotusJson = InitExec4ParamsLotusJson; - - #[cfg(test)] - fn snapshots() -> Vec<(serde_json::Value, Self)> { - vec![ - ( - json!({ - "CodeCid": { - "/": "baeaaaaa" - }, - "ConstructorParams": "ESIzRFU=", - "Subaddress": "ESIzRFU=", - }), - Self { - code_cid: Cid::default(), - constructor_params: RawBytes::new(hex::decode("1122334455").unwrap()), - subaddress: RawBytes::new(hex::decode("1122334455").unwrap()), - }, - ), - ] - } - - fn into_lotus_json(self) -> Self::LotusJson { - Self::LotusJson { - code_cid: self.code_cid, - constructor_params: self.constructor_params, - sub_address: self.subaddress, - } - } - - fn from_lotus_json(json: Self::LotusJson) -> Self { - Self { - code_cid: json.code_cid, - constructor_params: json.constructor_params, - subaddress: json.sub_address, - } - } - } - } - )+ - }; -} - -impl_lotus_json_for_init_exec4_params!(10, 11, 12, 13, 14, 15, 16); diff --git a/src/lotus_json/actors/params/init_exec_params.rs b/src/lotus_json/actors/params/init_exec_params.rs deleted file mode 100644 index 6820a72ec4d0..000000000000 --- a/src/lotus_json/actors/params/init_exec_params.rs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2019-2025 ChainSafe Systems -// SPDX-License-Identifier: Apache-2.0, MIT - -use super::*; -use ::cid::Cid; -use fvm_ipld_encoding::RawBytes; -use jsonrpsee::core::Serialize; -use paste::paste; -use schemars::JsonSchema; -use serde::Deserialize; -use std::fmt::Debug; - -#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)] -#[serde(rename_all = "PascalCase")] -pub struct InitExecParamsLotusJson { - #[schemars(with = "LotusJson")] - #[serde(with = "crate::lotus_json")] - #[serde(rename = "CodeCID")] - pub code_cid: Cid, - - #[schemars(with = "LotusJson")] - #[serde(with = "crate::lotus_json")] - pub constructor_params: RawBytes, -} - -macro_rules! impl_lotus_json_for_init_exec_params { - ($($version:literal),+) => { - $( - paste! { - impl HasLotusJson for fil_actor_init_state::[]::ExecParams { - type LotusJson = InitExecParamsLotusJson; - - #[cfg(test)] - fn snapshots() -> Vec<(serde_json::Value, Self)> { - vec![ - ( - json!({ - "CodeCid": { - "/": "baeaaaaa" - }, - "ConstructorParams": "ESIzRFU=", - }), - Self { - code_cid: Cid::default(), - constructor_params: RawBytes::new(hex::decode("1122334455").unwrap()), - }, - ), - ] - } - - fn into_lotus_json(self) -> Self::LotusJson { - Self::LotusJson { - code_cid: self.code_cid, - constructor_params: self.constructor_params, - } - } - - fn from_lotus_json(json: Self::LotusJson) -> Self { - Self { - code_cid: json.code_cid, - constructor_params: json.constructor_params, - } - } - } - } - )+ - }; -} - -impl_lotus_json_for_init_exec_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); diff --git a/src/lotus_json/actors/params/init_params.rs b/src/lotus_json/actors/params/init_params.rs new file mode 100644 index 000000000000..b317bc4f49ac --- /dev/null +++ b/src/lotus_json/actors/params/init_params.rs @@ -0,0 +1,181 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; +use ::cid::Cid; +use fvm_ipld_encoding::RawBytes; +use jsonrpsee::core::Serialize; +use paste::paste; +use schemars::JsonSchema; +use serde::Deserialize; +use std::fmt::Debug; + +#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)] +#[serde(rename_all = "PascalCase")] +pub struct InitConstructorParamsLotusJson { + pub network_name: String, +} + +#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)] +#[serde(rename_all = "PascalCase")] +pub struct InitExecParamsLotusJson { + #[schemars(with = "LotusJson")] + #[serde(with = "crate::lotus_json")] + #[serde(rename = "CodeCID")] + pub code_cid: Cid, + + #[schemars(with = "LotusJson")] + #[serde(with = "crate::lotus_json")] + pub constructor_params: RawBytes, +} + +#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone, PartialEq)] +#[serde(rename_all = "PascalCase")] +pub struct InitExec4ParamsLotusJson { + #[schemars(with = "LotusJson")] + #[serde(with = "crate::lotus_json")] + #[serde(rename = "CodeCID")] + pub code_cid: Cid, + + #[schemars(with = "LotusJson")] + #[serde(with = "crate::lotus_json")] + pub constructor_params: RawBytes, + + #[schemars(with = "LotusJson")] + #[serde(with = "crate::lotus_json")] + pub sub_address: RawBytes, +} + +macro_rules! impl_lotus_json_for_init_constructor_params { + ($($version:literal),+) => { + $( + paste! { + impl HasLotusJson for fil_actor_init_state::[]::ConstructorParams { + type LotusJson = InitConstructorParamsLotusJson; + + #[cfg(test)] + fn snapshots() -> Vec<(serde_json::Value, Self)> { + vec![ + ( + json!({ + "NetworkName": "calibnet", + }), + Self { + network_name: "calibnet".to_string(), + }, + ), + ] + } + + fn into_lotus_json(self) -> Self::LotusJson { + Self::LotusJson { + network_name: self.network_name, + } + } + + fn from_lotus_json(json: Self::LotusJson) -> Self { + Self { + network_name: json.network_name, + } + } + } + } + )+ + } +} + +macro_rules! impl_lotus_json_for_init_exec_params { + ($($version:literal),+) => { + $( + paste! { + impl HasLotusJson for fil_actor_init_state::[]::ExecParams { + type LotusJson = InitExecParamsLotusJson; + + #[cfg(test)] + fn snapshots() -> Vec<(serde_json::Value, Self)> { + vec![ + ( + json!({ + "CodeCid": { + "/": "baeaaaaa" + }, + "ConstructorParams": "ESIzRFU=", + }), + Self { + code_cid: Cid::default(), + constructor_params: RawBytes::new(hex::decode("1122334455").unwrap()), + }, + ), + ] + } + + fn into_lotus_json(self) -> Self::LotusJson { + Self::LotusJson { + code_cid: self.code_cid, + constructor_params: self.constructor_params, + } + } + + fn from_lotus_json(json: Self::LotusJson) -> Self { + Self { + code_cid: json.code_cid, + constructor_params: json.constructor_params, + } + } + } + } + )+ + }; +} + +macro_rules! impl_lotus_json_for_init_exec4_params { + ($($version:literal),+) => { + $( + paste! { + impl HasLotusJson for fil_actor_init_state::[]::Exec4Params { + type LotusJson = InitExec4ParamsLotusJson; + + #[cfg(test)] + fn snapshots() -> Vec<(serde_json::Value, Self)> { + vec![ + ( + json!({ + "CodeCid": { + "/": "baeaaaaa" + }, + "ConstructorParams": "ESIzRFU=", + "Subaddress": "ESIzRFU=", + }), + Self { + code_cid: Cid::default(), + constructor_params: RawBytes::new(hex::decode("1122334455").unwrap()), + subaddress: RawBytes::new(hex::decode("1122334455").unwrap()), + }, + ), + ] + } + + fn into_lotus_json(self) -> Self::LotusJson { + Self::LotusJson { + code_cid: self.code_cid, + constructor_params: self.constructor_params, + sub_address: self.subaddress, + } + } + + fn from_lotus_json(json: Self::LotusJson) -> Self { + Self { + code_cid: json.code_cid, + constructor_params: json.constructor_params, + subaddress: json.sub_address, + } + } + } + } + )+ + }; +} + +impl_lotus_json_for_init_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); +impl_lotus_json_for_init_exec_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); +impl_lotus_json_for_init_exec4_params!(10, 11, 12, 13, 14, 15, 16); diff --git a/src/lotus_json/actors/params/miner_change_worker_params.rs b/src/lotus_json/actors/params/miner_change_worker_params.rs deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/src/lotus_json/actors/params/miner_constructor_params.rs b/src/lotus_json/actors/params/miner_constructor_params.rs deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/src/lotus_json/actors/params/miner_actor_params.rs b/src/lotus_json/actors/params/miner_params.rs similarity index 100% rename from src/lotus_json/actors/params/miner_actor_params.rs rename to src/lotus_json/actors/params/miner_params.rs diff --git a/src/lotus_json/actors/params/mod.rs b/src/lotus_json/actors/params/mod.rs index 9ebd49368541..788594b20573 100644 --- a/src/lotus_json/actors/params/mod.rs +++ b/src/lotus_json/actors/params/mod.rs @@ -2,18 +2,14 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; -mod account_authenticate_params; -mod account_constructor_params; -mod cron_actor_params; -mod datacap_actor_params; -mod eam_params; -mod evm_actor_params; -mod init_constructor_params; -mod init_exec4_params; -mod init_exec_params; -mod miner_actor_params; -mod multisig_actor; +mod account_params; +mod cron_params; +mod datacap_params; +mod evm_params; +mod init_params; +mod miner_params; +mod multisig_params; mod paych_params; -mod power_actor; -mod reward_methods; -pub mod verified_reg_actor; +mod power_params; +mod reward_params; +pub mod verified_reg_params; diff --git a/src/lotus_json/actors/params/multisig_actor.rs b/src/lotus_json/actors/params/multisig_params.rs similarity index 100% rename from src/lotus_json/actors/params/multisig_actor.rs rename to src/lotus_json/actors/params/multisig_params.rs diff --git a/src/lotus_json/actors/params/power_actor.rs b/src/lotus_json/actors/params/power_params.rs similarity index 100% rename from src/lotus_json/actors/params/power_actor.rs rename to src/lotus_json/actors/params/power_params.rs diff --git a/src/lotus_json/actors/params/reward_methods.rs b/src/lotus_json/actors/params/reward_params.rs similarity index 100% rename from src/lotus_json/actors/params/reward_methods.rs rename to src/lotus_json/actors/params/reward_params.rs diff --git a/src/lotus_json/actors/params/verified_reg_actor.rs b/src/lotus_json/actors/params/verified_reg_params.rs similarity index 100% rename from src/lotus_json/actors/params/verified_reg_actor.rs rename to src/lotus_json/actors/params/verified_reg_params.rs From 80228b2e7fb1aad8f83ba0f19a0bfdae8af47759 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 3 Sep 2025 08:34:17 +0530 Subject: [PATCH 03/18] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9032eb6d7230..8b22a418ac41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ ### Added - [#6057](https://github.com/ChainSafe/forest/issues/6057) Added `--no-progress-timeout` to `forest-cli f3 ready` subcommand to exit when F3 is stuck for the given timeout. +- [#6000](https://github.com/ChainSafe/forest/pull/6000) Add support for the `Filecoin.StateDecodeParams` API methods to enable decoding actors method params. ### Changed From 0415b4ea67ecf55c29f6e16fbc14c906a2d4f016 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 3 Sep 2025 19:26:35 +0530 Subject: [PATCH 04/18] use actor version enum [skip ci] --- Cargo.lock | 58 +++++++++++++++++----- src/rpc/registry/actors/account.rs | 19 ++++--- src/rpc/registry/actors/cron.rs | 26 ++++++---- src/rpc/registry/actors/datacap.rs | 21 ++++---- src/rpc/registry/actors/eth_account.rs | 37 ++++++++++---- src/rpc/registry/actors/evm.rs | 23 +++++---- src/rpc/registry/actors/init.rs | 44 ++++++++++++---- src/rpc/registry/actors/miner.rs | 26 ++++++---- src/rpc/registry/actors/multisig.rs | 40 +++++++++++---- src/rpc/registry/actors/payment_channel.rs | 54 ++++++++++++++------ src/rpc/registry/actors/power.rs | 42 ++++++++++++---- src/rpc/registry/actors/reward.rs | 38 ++++++++++---- src/rpc/registry/actors/system.rs | 26 ++++++---- src/rpc/registry/actors/verified_reg.rs | 36 ++++++++++---- src/rpc/registry/actors_reg.rs | 15 +++--- src/rpc/registry/methods_reg.rs | 15 +++--- 16 files changed, 354 insertions(+), 166 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3458cf4d4e95..4a318320eaee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2646,7 +2646,7 @@ version = "24.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf7c439d60a7b9979199bb50479b3e42021b2ccf6979bee9a8617e61a67c568f" dependencies = [ - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "frc42_dispatch", "frc42_macros", "frc46_token", @@ -2697,7 +2697,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5cd2fd5ff6c1491267c046b9088ae5877e9a05957bd8665d88dbc44e48c5d47" dependencies = [ "cid", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "frc42_dispatch", "frc42_macros", "fvm_ipld_encoding", @@ -2719,7 +2719,7 @@ checksum = "e2715e2049987c00fdec6ed087deb3332afb766c0b988ad25fe62f0b8e1ce2a7" dependencies = [ "anyhow", "cid", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "fvm_ipld_blockstore", "fvm_ipld_encoding", "fvm_ipld_hamt", @@ -2740,7 +2740,7 @@ dependencies = [ "anyhow", "cid", "fil_actor_verifreg_state", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "frc42_dispatch", "frc42_macros", "fvm_ipld_bitfield", @@ -2769,7 +2769,7 @@ dependencies = [ "bitflags 2.9.4", "cid", "fil_actor_verifreg_state", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "frc42_dispatch", "frc42_macros", "fvm_ipld_amt", @@ -2798,7 +2798,7 @@ checksum = "308cea7b8cdde90b8f683e4fee3b4b5067295cca63bd66d52a8ad4957e7267e2" dependencies = [ "anyhow", "cid", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "frc42_dispatch", "frc42_macros", "fvm_ipld_blockstore", @@ -2821,7 +2821,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf3ea5272da3f671db18ace120712eac7bf88e1d4e3183ddb6c1fc3da75cf573" dependencies = [ "cid", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "frc42_dispatch", "frc42_macros", "fvm_ipld_encoding", @@ -2841,7 +2841,7 @@ checksum = "73ea4fb569085e1bbe5c20de364c2e4b6478084d842d62b0937ac08d4c5cf2ee" dependencies = [ "anyhow", "cid", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "frc42_dispatch", "frc42_macros", "fvm_ipld_blockstore", @@ -2863,7 +2863,7 @@ version = "24.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6a1142fc9b74f5f107361c1dd6142b2500c5872138f8aa66a523e1af783cb67" dependencies = [ - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "fvm_ipld_encoding", "fvm_shared 2.11.2", "fvm_shared 3.13.2", @@ -2881,7 +2881,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c7798a173573473e45a6ca8ac2b309222638b8ddea2e2c4c6ee93b9dc577daf" dependencies = [ "cid", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "fvm_ipld_blockstore", "fvm_ipld_encoding", "fvm_shared 2.11.2", @@ -2900,7 +2900,7 @@ checksum = "554578f23efb1e9753bffa9c84803e5b3175847ad7cb3d604fa02a30c6e7dfd9" dependencies = [ "anyhow", "cid", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "frc42_dispatch", "frc42_macros", "fvm_ipld_blockstore", @@ -2949,6 +2949,40 @@ dependencies = [ "unsigned-varint 0.8.0", ] +[[package]] +name = "fil_actors_shared" +version = "23.0.1" +source = "git+https://github.com/ChainSafe/fil-actor-states?rev=6802167351826fdfe429cf8dc93d26c81c1b0385#6802167351826fdfe429cf8dc93d26c81c1b0385" +dependencies = [ + "anyhow", + "cid", + "filecoin-proofs-api", + "frc46_token", + "fvm_ipld_amt", + "fvm_ipld_bitfield", + "fvm_ipld_blockstore", + "fvm_ipld_encoding", + "fvm_ipld_hamt", + "fvm_shared 2.11.2", + "fvm_shared 3.13.2", + "fvm_shared 4.7.3", + "integer-encoding", + "itertools 0.14.0", + "lazy_static", + "multihash-codetable", + "num", + "num-bigint", + "num-derive", + "num-traits", + "pastey", + "regex", + "serde", + "serde_repr", + "strum", + "thiserror 2.0.16", + "unsigned-varint 0.8.0", +] + [[package]] name = "filecoin-hashers" version = "14.0.0" @@ -3180,7 +3214,7 @@ dependencies = [ "fil_actor_reward_state", "fil_actor_system_state", "fil_actor_verifreg_state", - "fil_actors_shared", + "fil_actors_shared 23.0.1 (git+https://github.com/ChainSafe/fil-actor-states?rev=6802167351826fdfe429cf8dc93d26c81c1b0385)", "flate2", "flume 0.11.1", "fs_extra", diff --git a/src/rpc/registry/actors/account.rs b/src/rpc/registry/actors/account.rs index dce848fa62a4..3e9b717403f7 100644 --- a/src/rpc/registry/actors/account.rs +++ b/src/rpc/registry/actors/account.rs @@ -4,6 +4,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; /// Macro to generate account method registration for different versions macro_rules! register_account_version { @@ -46,15 +47,19 @@ macro_rules! register_account_version { pub(crate) fn register_account_actor_methods( registry: &mut MethodRegistry, cid: Cid, - version: u64, + version: ActorVersion, ) { match version { - 11 => register_account_version!(registry, cid, fil_actor_account_state::v11), - 12 => register_account_version!(registry, cid, fil_actor_account_state::v12), - 13 => register_account_version!(registry, cid, fil_actor_account_state::v13), - 14 => register_account_version!(registry, cid, fil_actor_account_state::v14), - 15 => register_account_version!(registry, cid, fil_actor_account_state::v15, with_types), - 16 => register_account_version!(registry, cid, fil_actor_account_state::v16, with_types), + ActorVersion::V11 => register_account_version!(registry, cid, fil_actor_account_state::v11), + ActorVersion::V12 => register_account_version!(registry, cid, fil_actor_account_state::v12), + ActorVersion::V13 => register_account_version!(registry, cid, fil_actor_account_state::v13), + ActorVersion::V14 => register_account_version!(registry, cid, fil_actor_account_state::v14), + ActorVersion::V15 => { + register_account_version!(registry, cid, fil_actor_account_state::v15, with_types) + } + ActorVersion::V16 => { + register_account_version!(registry, cid, fil_actor_account_state::v16, with_types) + } _ => {} } } diff --git a/src/rpc/registry/actors/cron.rs b/src/rpc/registry/actors/cron.rs index 56117b2afbaf..d9c74f856945 100644 --- a/src/rpc/registry/actors/cron.rs +++ b/src/rpc/registry/actors/cron.rs @@ -4,6 +4,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; macro_rules! register_cron_version { ($registry:expr, $code_cid:expr, $state_version:path) => {{ @@ -20,17 +21,20 @@ macro_rules! register_cron_version { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 8 => register_cron_version!(registry, cid, fil_actor_cron_state::v8), - 9 => register_cron_version!(registry, cid, fil_actor_cron_state::v9), - 10 => register_cron_version!(registry, cid, fil_actor_cron_state::v10), - 11 => register_cron_version!(registry, cid, fil_actor_cron_state::v11), - 12 => register_cron_version!(registry, cid, fil_actor_cron_state::v12), - 13 => register_cron_version!(registry, cid, fil_actor_cron_state::v13), - 14 => register_cron_version!(registry, cid, fil_actor_cron_state::v14), - 15 => register_cron_version!(registry, cid, fil_actor_cron_state::v15), - 16 => register_cron_version!(registry, cid, fil_actor_cron_state::v16), - _ => {} + ActorVersion::V8 => register_cron_version!(registry, cid, fil_actor_cron_state::v8), + ActorVersion::V9 => register_cron_version!(registry, cid, fil_actor_cron_state::v9), + ActorVersion::V10 => register_cron_version!(registry, cid, fil_actor_cron_state::v10), + ActorVersion::V11 => register_cron_version!(registry, cid, fil_actor_cron_state::v11), + ActorVersion::V12 => register_cron_version!(registry, cid, fil_actor_cron_state::v12), + ActorVersion::V13 => register_cron_version!(registry, cid, fil_actor_cron_state::v13), + ActorVersion::V14 => register_cron_version!(registry, cid, fil_actor_cron_state::v14), + ActorVersion::V15 => register_cron_version!(registry, cid, fil_actor_cron_state::v15), + ActorVersion::V16 => register_cron_version!(registry, cid, fil_actor_cron_state::v16), } } diff --git a/src/rpc/registry/actors/datacap.rs b/src/rpc/registry/actors/datacap.rs index d21bd4b22bed..c345a30f3a34 100644 --- a/src/rpc/registry/actors/datacap.rs +++ b/src/rpc/registry/actors/datacap.rs @@ -5,6 +5,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::address::Address; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; macro_rules! register_datacap_v9 { ($registry:expr, $code_cid:expr) => {{ @@ -125,17 +126,17 @@ macro_rules! register_datacap_version { pub(crate) fn register_datacap_actor_methods( registry: &mut MethodRegistry, cid: Cid, - version: u64, + version: ActorVersion, ) { match version { - 9 => register_datacap_v9!(registry, cid), - 10 => register_datacap_v10!(registry, cid), - 11 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v11), - 12 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v12), - 13 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v13), - 14 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v14), - 15 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v15), - 16 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v16), - _ => {} + ActorVersion::V8 => {} + ActorVersion::V9 => register_datacap_v9!(registry, cid), + ActorVersion::V10 => register_datacap_v10!(registry, cid), + ActorVersion::V11 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v11), + ActorVersion::V12 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v12), + ActorVersion::V13 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v13), + ActorVersion::V14 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v14), + ActorVersion::V15 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v15), + ActorVersion::V16 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v16), } } diff --git a/src/rpc/registry/actors/eth_account.rs b/src/rpc/registry/actors/eth_account.rs index 86749e8c5acb..bac33e5969a7 100644 --- a/src/rpc/registry/actors/eth_account.rs +++ b/src/rpc/registry/actors/eth_account.rs @@ -4,6 +4,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; macro_rules! register_eth_account_reg_version { ($registry:expr, $code_cid:expr, $state_version:path) => {{ @@ -14,15 +15,33 @@ macro_rules! register_eth_account_reg_version { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 10 => register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v10), - 11 => register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v11), - 12 => register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v12), - 13 => register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v13), - 14 => register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v14), - 15 => register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v15), - 16 => register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v16), - _ => {} + ActorVersion::V8 | ActorVersion::V9 => {} + ActorVersion::V10 => { + register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v10) + } + ActorVersion::V11 => { + register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v11) + } + ActorVersion::V12 => { + register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v12) + } + ActorVersion::V13 => { + register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v13) + } + ActorVersion::V14 => { + register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v14) + } + ActorVersion::V15 => { + register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v15) + } + ActorVersion::V16 => { + register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v16) + } } } diff --git a/src/rpc/registry/actors/evm.rs b/src/rpc/registry/actors/evm.rs index d2536d18fc38..2b3494f86a7e 100644 --- a/src/rpc/registry/actors/evm.rs +++ b/src/rpc/registry/actors/evm.rs @@ -5,6 +5,7 @@ use crate::rpc::eth::types::GetStorageAtParams; use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; use fvm_ipld_encoding::RawBytes; macro_rules! register_evm_version { @@ -39,15 +40,19 @@ macro_rules! register_evm_version { }}; } -pub(crate) fn register_evm_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_evm_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 10 => register_evm_version!(registry, cid, fil_actor_evm_state::v10), - 11 => register_evm_version!(registry, cid, fil_actor_evm_state::v11), - 12 => register_evm_version!(registry, cid, fil_actor_evm_state::v12), - 13 => register_evm_version!(registry, cid, fil_actor_evm_state::v13), - 14 => register_evm_version!(registry, cid, fil_actor_evm_state::v14), - 15 => register_evm_version!(registry, cid, fil_actor_evm_state::v15), - 16 => register_evm_version!(registry, cid, fil_actor_evm_state::v16), - _ => {} + ActorVersion::V8 | ActorVersion::V9 => {} + ActorVersion::V10 => register_evm_version!(registry, cid, fil_actor_evm_state::v10), + ActorVersion::V11 => register_evm_version!(registry, cid, fil_actor_evm_state::v11), + ActorVersion::V12 => register_evm_version!(registry, cid, fil_actor_evm_state::v12), + ActorVersion::V13 => register_evm_version!(registry, cid, fil_actor_evm_state::v13), + ActorVersion::V14 => register_evm_version!(registry, cid, fil_actor_evm_state::v14), + ActorVersion::V15 => register_evm_version!(registry, cid, fil_actor_evm_state::v15), + ActorVersion::V16 => register_evm_version!(registry, cid, fil_actor_evm_state::v16), } } diff --git a/src/rpc/registry/actors/init.rs b/src/rpc/registry/actors/init.rs index af06ef04c449..802ca18e4d39 100644 --- a/src/rpc/registry/actors/init.rs +++ b/src/rpc/registry/actors/init.rs @@ -4,6 +4,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; // Macro for versions 8-10 that only have Exec method macro_rules! register_init_versions_8_to_10 { @@ -38,17 +39,38 @@ macro_rules! register_init_versions_11_to_16 { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 8 => register_init_versions_8_to_10!(registry, cid, fil_actor_init_state::v8), - 9 => register_init_versions_8_to_10!(registry, cid, fil_actor_init_state::v9), - 10 => register_init_versions_8_to_10!(registry, cid, fil_actor_init_state::v10), - 11 => register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v11), - 12 => register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v12), - 13 => register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v13), - 14 => register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v14), - 15 => register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v15), - 16 => register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v16), - _ => {} + ActorVersion::V8 => { + register_init_versions_8_to_10!(registry, cid, fil_actor_init_state::v8) + } + ActorVersion::V9 => { + register_init_versions_8_to_10!(registry, cid, fil_actor_init_state::v9) + } + ActorVersion::V10 => { + register_init_versions_8_to_10!(registry, cid, fil_actor_init_state::v10) + } + ActorVersion::V11 => { + register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v11) + } + ActorVersion::V12 => { + register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v12) + } + ActorVersion::V13 => { + register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v13) + } + ActorVersion::V14 => { + register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v14) + } + ActorVersion::V15 => { + register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v15) + } + ActorVersion::V16 => { + register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v16) + } } } diff --git a/src/rpc/registry/actors/miner.rs b/src/rpc/registry/actors/miner.rs index 89ee822f4830..5db35546beb4 100644 --- a/src/rpc/registry/actors/miner.rs +++ b/src/rpc/registry/actors/miner.rs @@ -5,6 +5,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::address::Address; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; macro_rules! register_miner_basic_methods { ($registry:expr, $code_cid:expr, $state_version:path) => {{ @@ -319,17 +320,20 @@ fn register_miner_version_16(registry: &mut MethodRegistry, cid: Cid) { register_actor_methods!(registry, cid, [(Method::InitialPledgeExported, empty)]); } -pub(crate) fn register_miner_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_miner_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 8 => register_miner_version_8(registry, cid), - 9 => register_miner_version_9(registry, cid), - 10 => register_miner_version_10(registry, cid), - 11 => register_miner_version_11(registry, cid), - 12 => register_miner_version_12(registry, cid), - 13 => register_miner_version_13(registry, cid), - 14 => register_miner_versions_14(registry, cid), - 15 => register_miner_version_15(registry, cid), - 16 => register_miner_version_16(registry, cid), - _ => {} + ActorVersion::V8 => register_miner_version_8(registry, cid), + ActorVersion::V9 => register_miner_version_9(registry, cid), + ActorVersion::V10 => register_miner_version_10(registry, cid), + ActorVersion::V11 => register_miner_version_11(registry, cid), + ActorVersion::V12 => register_miner_version_12(registry, cid), + ActorVersion::V13 => register_miner_version_13(registry, cid), + ActorVersion::V14 => register_miner_versions_14(registry, cid), + ActorVersion::V15 => register_miner_version_15(registry, cid), + ActorVersion::V16 => register_miner_version_16(registry, cid), } } diff --git a/src/rpc/registry/actors/multisig.rs b/src/rpc/registry/actors/multisig.rs index b7b6c689ce6a..cac6cc0b1d06 100644 --- a/src/rpc/registry/actors/multisig.rs +++ b/src/rpc/registry/actors/multisig.rs @@ -4,6 +4,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; // Macro for version 8 that doesn't have UniversalReceiverHook macro_rules! register_multisig_v8 { @@ -72,17 +73,34 @@ macro_rules! register_multisig_v9_plus { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 8 => register_multisig_v8!(registry, cid, fil_actor_multisig_state::v8), - 9 => register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v9), - 10 => register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v10), - 11 => register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v11), - 12 => register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v12), - 13 => register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v13), - 14 => register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v14), - 15 => register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v15), - 16 => register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v16), - _ => {} + ActorVersion::V8 => register_multisig_v8!(registry, cid, fil_actor_multisig_state::v8), + ActorVersion::V9 => register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v9), + ActorVersion::V10 => { + register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v10) + } + ActorVersion::V11 => { + register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v11) + } + ActorVersion::V12 => { + register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v12) + } + ActorVersion::V13 => { + register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v13) + } + ActorVersion::V14 => { + register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v14) + } + ActorVersion::V15 => { + register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v15) + } + ActorVersion::V16 => { + register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v16) + } } } diff --git a/src/rpc/registry/actors/payment_channel.rs b/src/rpc/registry/actors/payment_channel.rs index 7176c4484d60..afed7c8e2249 100644 --- a/src/rpc/registry/actors/payment_channel.rs +++ b/src/rpc/registry/actors/payment_channel.rs @@ -4,12 +4,12 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; -macro_rules! register_payment_channel_reg_versions { - ($registry:expr, $code_cid:expr, $version:literal) => {{ - paste::paste!{ - use fil_actor_paych_state::[]::{ConstructorParams, Method, UpdateChannelStateParams}; - } +// Payment channel methods are consistent across all versions V8-V16 +macro_rules! register_payment_channel_methods { + ($registry:expr, $code_cid:expr, $state_version:path) => {{ + use $state_version::{ConstructorParams, Method, UpdateChannelStateParams}; // Register methods with parameters register_actor_methods!( @@ -30,16 +30,38 @@ macro_rules! register_payment_channel_reg_versions { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { - macro_rules! register_versions { - ($($version:literal),+) => {{ - match version { - $( - $version => register_payment_channel_reg_versions!(registry, cid, $version), - )+ - _ => {} - } - }}; +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { + match version { + ActorVersion::V8 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v8) + } + ActorVersion::V9 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v9) + } + ActorVersion::V10 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v10) + } + ActorVersion::V11 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v11) + } + ActorVersion::V12 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v12) + } + ActorVersion::V13 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v13) + } + ActorVersion::V14 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v14) + } + ActorVersion::V15 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v15) + } + ActorVersion::V16 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v16) + } } - register_versions!(8, 9, 10, 11, 12, 13, 14, 15, 16) } diff --git a/src/rpc/registry/actors/power.rs b/src/rpc/registry/actors/power.rs index 50b0a1b06472..a3b64228f407 100644 --- a/src/rpc/registry/actors/power.rs +++ b/src/rpc/registry/actors/power.rs @@ -4,6 +4,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; // Macro for versions 8-9 that have limited methods macro_rules! register_power_versions_8_to_9 { @@ -113,17 +114,36 @@ macro_rules! register_power_version_16 { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 8 => register_power_versions_8_to_9!(registry, cid, fil_actor_power_state::v8), - 9 => register_power_versions_8_to_9!(registry, cid, fil_actor_power_state::v9), - 10 => register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v10), - 11 => register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v11), - 12 => register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v12), - 13 => register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v13), - 14 => register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v14), - 15 => register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v15), - 16 => register_power_version_16!(registry, cid, fil_actor_power_state::v16), - _ => {} + ActorVersion::V8 => { + register_power_versions_8_to_9!(registry, cid, fil_actor_power_state::v8) + } + ActorVersion::V9 => { + register_power_versions_8_to_9!(registry, cid, fil_actor_power_state::v9) + } + ActorVersion::V10 => { + register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v10) + } + ActorVersion::V11 => { + register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v11) + } + ActorVersion::V12 => { + register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v12) + } + ActorVersion::V13 => { + register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v13) + } + ActorVersion::V14 => { + register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v14) + } + ActorVersion::V15 => { + register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v15) + } + ActorVersion::V16 => register_power_version_16!(registry, cid, fil_actor_power_state::v16), } } diff --git a/src/rpc/registry/actors/reward.rs b/src/rpc/registry/actors/reward.rs index 344459dc94d0..23086077d730 100644 --- a/src/rpc/registry/actors/reward.rs +++ b/src/rpc/registry/actors/reward.rs @@ -4,6 +4,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; macro_rules! register_reward_version_11_to_16 { ($registry:expr, $code_cid:expr, $state_version:path) => {{ @@ -46,15 +47,19 @@ macro_rules! register_reward_version_8_to_10 { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 8 => { + ActorVersion::V8 => { register_reward_version_8_to_10!(registry, cid, fil_actor_reward_state::v8, fvm_shared2) } - 9 => { + ActorVersion::V9 => { register_reward_version_8_to_10!(registry, cid, fil_actor_reward_state::v9, fvm_shared2) } - 10 => { + ActorVersion::V10 => { register_reward_version_8_to_10!( registry, cid, @@ -62,12 +67,23 @@ pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, ve fvm_shared3 ) } - 11 => register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v11), - 12 => register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v12), - 13 => register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v13), - 14 => register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v14), - 15 => register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v15), - 16 => register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v16), - _ => {} + ActorVersion::V11 => { + register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v11) + } + ActorVersion::V12 => { + register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v12) + } + ActorVersion::V13 => { + register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v13) + } + ActorVersion::V14 => { + register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v14) + } + ActorVersion::V15 => { + register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v15) + } + ActorVersion::V16 => { + register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v16) + } } } diff --git a/src/rpc/registry/actors/system.rs b/src/rpc/registry/actors/system.rs index 2cf78002c41f..044c003dae8b 100644 --- a/src/rpc/registry/actors/system.rs +++ b/src/rpc/registry/actors/system.rs @@ -4,6 +4,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; macro_rules! register_system_version { ($registry:expr, $code_cid:expr, $state_version:path) => {{ @@ -19,17 +20,20 @@ macro_rules! register_system_version { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 8 => register_system_version!(registry, cid, fil_actor_system_state::v8), - 9 => register_system_version!(registry, cid, fil_actor_system_state::v9), - 10 => register_system_version!(registry, cid, fil_actor_system_state::v10), - 11 => register_system_version!(registry, cid, fil_actor_system_state::v11), - 12 => register_system_version!(registry, cid, fil_actor_system_state::v12), - 13 => register_system_version!(registry, cid, fil_actor_system_state::v13), - 14 => register_system_version!(registry, cid, fil_actor_system_state::v14), - 15 => register_system_version!(registry, cid, fil_actor_system_state::v15), - 16 => register_system_version!(registry, cid, fil_actor_system_state::v16), - _ => {} + ActorVersion::V8 => register_system_version!(registry, cid, fil_actor_system_state::v8), + ActorVersion::V9 => register_system_version!(registry, cid, fil_actor_system_state::v9), + ActorVersion::V10 => register_system_version!(registry, cid, fil_actor_system_state::v10), + ActorVersion::V11 => register_system_version!(registry, cid, fil_actor_system_state::v11), + ActorVersion::V12 => register_system_version!(registry, cid, fil_actor_system_state::v12), + ActorVersion::V13 => register_system_version!(registry, cid, fil_actor_system_state::v13), + ActorVersion::V14 => register_system_version!(registry, cid, fil_actor_system_state::v14), + ActorVersion::V15 => register_system_version!(registry, cid, fil_actor_system_state::v15), + ActorVersion::V16 => register_system_version!(registry, cid, fil_actor_system_state::v16), } } diff --git a/src/rpc/registry/actors/verified_reg.rs b/src/rpc/registry/actors/verified_reg.rs index 719b789fad62..86d69bb77e7a 100644 --- a/src/rpc/registry/actors/verified_reg.rs +++ b/src/rpc/registry/actors/verified_reg.rs @@ -5,6 +5,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::address::Address; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; use paste::paste; // Core methods present in all versions @@ -235,17 +236,30 @@ macro_rules! register_verified_reg_v12_plus { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { - 8 => register_verified_reg_v8(registry, cid), - 9 => register_verified_reg_v9(registry, cid), - 10 => register_verified_reg_v10(registry, cid), - 11 => register_verified_reg_v11(registry, cid), - 12 => register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v12, v12), - 13 => register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v13, v13), - 14 => register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v14, v14), - 15 => register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v15, v15), - 16 => register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v16, v16), - _ => {} + ActorVersion::V8 => register_verified_reg_v8(registry, cid), + ActorVersion::V9 => register_verified_reg_v9(registry, cid), + ActorVersion::V10 => register_verified_reg_v10(registry, cid), + ActorVersion::V11 => register_verified_reg_v11(registry, cid), + ActorVersion::V12 => { + register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v12, v12) + } + ActorVersion::V13 => { + register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v13, v13) + } + ActorVersion::V14 => { + register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v14, v14) + } + ActorVersion::V15 => { + register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v15, v15) + } + ActorVersion::V16 => { + register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v16, v16) + } } } diff --git a/src/rpc/registry/actors_reg.rs b/src/rpc/registry/actors_reg.rs index 83225e76b472..5fd065d8df7b 100644 --- a/src/rpc/registry/actors_reg.rs +++ b/src/rpc/registry/actors_reg.rs @@ -13,29 +13,32 @@ use crate::shim::machine::BuiltinActor; use ahash::{HashMap, HashMapExt}; use anyhow::{Context, Result, anyhow}; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; use fvm_ipld_blockstore::Blockstore; use serde_json::Value; use std::sync::LazyLock; #[derive(Debug)] pub struct ActorRegistry { - map: HashMap, + map: HashMap, } impl ActorRegistry { fn new() -> Self { let mut map = HashMap::new(); for ((_, _), metadata) in ACTOR_BUNDLES_METADATA.iter() { - if let Ok(version) = metadata.actor_major_version() { - for (actor_type, cid) in metadata.manifest.builtin_actors() { - map.insert(cid, (actor_type, version)); + if let Ok(version_u64) = metadata.actor_major_version() { + if let Some(version) = ActorVersion::from_repr(version_u64 as u8) { + for (actor_type, cid) in metadata.manifest.builtin_actors() { + map.insert(cid, (actor_type, version)); + } } } } Self { map } } - pub fn get_actor_details_from_code(code_cid: &Cid) -> Result<(BuiltinActor, u64)> { + pub fn get_actor_details_from_code(code_cid: &Cid) -> Result<(BuiltinActor, ActorVersion)> { ACTOR_REGISTRY .map .get(code_cid) @@ -43,7 +46,7 @@ impl ActorRegistry { .ok_or_else(|| anyhow!("Unknown actor code CID: {}", code_cid)) } - pub fn iter(&self) -> impl Iterator { + pub fn iter(&self) -> impl Iterator { self.map.iter() } } diff --git a/src/rpc/registry/methods_reg.rs b/src/rpc/registry/methods_reg.rs index 75b8ea34162f..5b83851ec315 100644 --- a/src/rpc/registry/methods_reg.rs +++ b/src/rpc/registry/methods_reg.rs @@ -8,6 +8,7 @@ use crate::shim::message::MethodNum; use ahash::{HashMap, HashMapExt}; use anyhow::{Context, Result, bail}; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; use serde::de::DeserializeOwned; use serde_json::Value; use std::sync::LazyLock; @@ -65,10 +66,7 @@ impl MethodRegistry { let (actor_type, version) = ActorRegistry::get_actor_details_from_code(code_cid)?; bail!( - "No deserializer registered for actor type {:?} (v{}), method {}", - actor_type, - version, - method_num + "No deserializer registered for actor type {actor_type:?} ({version}), method {method_num}" ); } @@ -162,7 +160,6 @@ mod test { use serde::{Deserialize, Serialize}; use serde_json::json; - const V16: u64 = 16; // Test parameter type for testing #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] struct TestParams { @@ -191,7 +188,7 @@ mod test { Cid::new_v1(DAG_CBOR, MultihashCode::Blake2b256.digest(data)) } - fn get_real_actor_cid(target_actor: BuiltinActor, target_version: u64) -> Option { + fn get_real_actor_cid(target_actor: BuiltinActor, target_version: ActorVersion) -> Option { ACTOR_REGISTRY .iter() .find_map(|(&cid, &(actor_type, version))| { @@ -251,7 +248,7 @@ mod test { #[test] fn test_deserialize_params_registered_actor_unregistered_method() { - if let Some(account_cid) = get_real_actor_cid(BuiltinActor::Account, V16) { + if let Some(account_cid) = get_real_actor_cid(BuiltinActor::Account, ActorVersion::V16) { let unregistered_method = 999; let result = deserialize_params(&account_cid, unregistered_method, &[]); @@ -276,7 +273,7 @@ mod test { ]; for actor_type in supported_actors { - let actor_cid = get_real_actor_cid(actor_type, V16).unwrap(); + let actor_cid = get_real_actor_cid(actor_type, ActorVersion::V16).unwrap(); // Test that the Constructor method (typically method 1) is registered let constructor_method = 1; @@ -324,7 +321,7 @@ mod test { #[test] fn test_system_actor_deserialize_params_cbor_null() { - let system_cid = get_real_actor_cid(BuiltinActor::System, V16) + let system_cid = get_real_actor_cid(BuiltinActor::System, ActorVersion::V16) .expect("Should have System actor CID in registry"); // Test with null data From ef1763523a54672c15a4f6ea1c6b2ed6bfbc50d8 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 3 Sep 2025 19:37:17 +0530 Subject: [PATCH 05/18] register exec4 method in the init actor version 10 --- src/rpc/registry/actors/init.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/rpc/registry/actors/init.rs b/src/rpc/registry/actors/init.rs index 802ca18e4d39..5a8f155312da 100644 --- a/src/rpc/registry/actors/init.rs +++ b/src/rpc/registry/actors/init.rs @@ -6,8 +6,8 @@ use crate::shim::message::MethodNum; use cid::Cid; use fil_actors_shared::actor_versions::ActorVersion; -// Macro for versions 8-10 that only have Exec method -macro_rules! register_init_versions_8_to_10 { +// Macro for versions 8-9 that only have Exec method +macro_rules! register_init_versions_8_to_9 { ($registry:expr, $code_cid:expr, $state_version:path) => {{ use $state_version::{ConstructorParams, ExecParams, Method}; @@ -22,8 +22,8 @@ macro_rules! register_init_versions_8_to_10 { }}; } -// Macro for versions 11-16 that have Exec4 -macro_rules! register_init_versions_11_to_16 { +// Macro for versions 10-16 that have Exec4 +macro_rules! register_init_versions_10_to_16 { ($registry:expr, $code_cid:expr, $state_version:path) => {{ use $state_version::{ConstructorParams, Exec4Params, ExecParams, Method}; @@ -46,31 +46,31 @@ pub(crate) fn register_actor_methods( ) { match version { ActorVersion::V8 => { - register_init_versions_8_to_10!(registry, cid, fil_actor_init_state::v8) + register_init_versions_8_to_9!(registry, cid, fil_actor_init_state::v8) } ActorVersion::V9 => { - register_init_versions_8_to_10!(registry, cid, fil_actor_init_state::v9) + register_init_versions_8_to_9!(registry, cid, fil_actor_init_state::v9) } ActorVersion::V10 => { - register_init_versions_8_to_10!(registry, cid, fil_actor_init_state::v10) + register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v10) } ActorVersion::V11 => { - register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v11) + register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v11) } ActorVersion::V12 => { - register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v12) + register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v12) } ActorVersion::V13 => { - register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v13) + register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v13) } ActorVersion::V14 => { - register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v14) + register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v14) } ActorVersion::V15 => { - register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v15) + register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v15) } ActorVersion::V16 => { - register_init_versions_11_to_16!(registry, cid, fil_actor_init_state::v16) + register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v16) } } } From 006a8d4e4123eb602e9d198c69050a412fb2ec02 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 3 Sep 2025 20:41:24 +0530 Subject: [PATCH 06/18] register remaining account actor method [skip ci] --- .../actors/params/account_params.rs | 6 +- src/rpc/registry/actors/account.rs | 87 +++++++++++++++++-- 2 files changed, 80 insertions(+), 13 deletions(-) diff --git a/src/lotus_json/actors/params/account_params.rs b/src/lotus_json/actors/params/account_params.rs index e72c9a1625fa..35b882d2ab3e 100644 --- a/src/lotus_json/actors/params/account_params.rs +++ b/src/lotus_json/actors/params/account_params.rs @@ -101,11 +101,7 @@ macro_rules! impl_account_constructor_params { }; } -// not added other versions because `fil_actor_account_state::types` -// is private for all of them impl_account_constructor_params!(types::ConstructorParams: 15, 16); impl_account_constructor_params!(ConstructorParams: 11, 12, 13, 14); - -// not added other versions because AuthenticateMessageParams is private for the rest of them impl_account_authenticate_params!(types::AuthenticateMessageParams: 15, 16); -impl_account_authenticate_params!(AuthenticateMessageParams: 11, 12, 13, 14); +impl_account_authenticate_params!(AuthenticateMessageParams: 9, 10, 11, 12, 13, 14); diff --git a/src/rpc/registry/actors/account.rs b/src/rpc/registry/actors/account.rs index 3e9b717403f7..392885594f98 100644 --- a/src/rpc/registry/actors/account.rs +++ b/src/rpc/registry/actors/account.rs @@ -2,12 +2,59 @@ // SPDX-License-Identifier: Apache-2.0, MIT use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; +use crate::shim::address::Address; use crate::shim::message::MethodNum; use cid::Cid; use fil_actors_shared::actor_versions::ActorVersion; +fn register_account_version_v8(registry: &mut MethodRegistry, cid: Cid) { + use fil_actor_account_state::v8::Method; + + register_actor_methods!(registry, cid, [(Method::Constructor, Address),]); + register_actor_methods!(registry, cid, [(Method::PubkeyAddress, empty)]); +} + +fn register_account_version_v9(registry: &mut MethodRegistry, cid: Cid) { + use fil_actor_account_state::v9::{AuthenticateMessageParams, Method}; + register_actor_methods!( + registry, + cid, + [ + (Method::Constructor, Address), + (Method::AuthenticateMessage, AuthenticateMessageParams) + ] + ); + + register_actor_methods!( + registry, + cid, + [ + (Method::PubkeyAddress, empty), + (Method::UniversalReceiverHook, empty) + ] + ); +} + +fn register_account_version_10(registry: &mut MethodRegistry, cid: Cid) { + use fil_actor_account_state::v10::{AuthenticateMessageParams, Method}; + + register_actor_methods!( + registry, + cid, + [ + (Method::Constructor, Address), + ( + Method::AuthenticateMessageExported, + AuthenticateMessageParams + ) + ] + ); + + register_actor_methods!(registry, cid, [(Method::PubkeyAddress, empty)]); +} + /// Macro to generate account method registration for different versions -macro_rules! register_account_version { +macro_rules! register_account_version_11_onwards { // For versions that use types module (v15, v16) ($registry:expr, $code_cid:expr, $state_version:path, with_types) => {{ use $state_version::{Method, types}; @@ -23,6 +70,8 @@ macro_rules! register_account_version { ) ] ); + + register_actor_methods!($registry, $code_cid, [(Method::PubkeyAddress, empty)]); }}; // For versions that don't use types module (v11-v14) @@ -40,6 +89,8 @@ macro_rules! register_account_version { ) ] ); + + register_actor_methods!($registry, $code_cid, [(Method::PubkeyAddress, empty)]); }}; } @@ -50,16 +101,36 @@ pub(crate) fn register_account_actor_methods( version: ActorVersion, ) { match version { - ActorVersion::V11 => register_account_version!(registry, cid, fil_actor_account_state::v11), - ActorVersion::V12 => register_account_version!(registry, cid, fil_actor_account_state::v12), - ActorVersion::V13 => register_account_version!(registry, cid, fil_actor_account_state::v13), - ActorVersion::V14 => register_account_version!(registry, cid, fil_actor_account_state::v14), + ActorVersion::V8 => register_account_version_v8(registry, cid), + ActorVersion::V9 => register_account_version_v9(registry, cid), + ActorVersion::V10 => register_account_version_10(registry, cid), + ActorVersion::V11 => { + register_account_version_11_onwards!(registry, cid, fil_actor_account_state::v11) + } + ActorVersion::V12 => { + register_account_version_11_onwards!(registry, cid, fil_actor_account_state::v12) + } + ActorVersion::V13 => { + register_account_version_11_onwards!(registry, cid, fil_actor_account_state::v13) + } + ActorVersion::V14 => { + register_account_version_11_onwards!(registry, cid, fil_actor_account_state::v14) + } ActorVersion::V15 => { - register_account_version!(registry, cid, fil_actor_account_state::v15, with_types) + register_account_version_11_onwards!( + registry, + cid, + fil_actor_account_state::v15, + with_types + ) } ActorVersion::V16 => { - register_account_version!(registry, cid, fil_actor_account_state::v16, with_types) + register_account_version_11_onwards!( + registry, + cid, + fil_actor_account_state::v16, + with_types + ) } - _ => {} } } From 0d35b8dcfb5aa3731bbc8e2c997d8bdefe40c1c5 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Tue, 9 Sep 2025 17:47:35 +0530 Subject: [PATCH 07/18] rebase fixes --- Cargo.lock | 58 ++++++----------------------- src/lotus_json/actors/params/mod.rs | 1 + src/rpc/registry/actors/eam.rs | 17 +++++---- 3 files changed, 22 insertions(+), 54 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4a318320eaee..3458cf4d4e95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2646,7 +2646,7 @@ version = "24.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf7c439d60a7b9979199bb50479b3e42021b2ccf6979bee9a8617e61a67c568f" dependencies = [ - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "frc42_dispatch", "frc42_macros", "frc46_token", @@ -2697,7 +2697,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5cd2fd5ff6c1491267c046b9088ae5877e9a05957bd8665d88dbc44e48c5d47" dependencies = [ "cid", - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "frc42_dispatch", "frc42_macros", "fvm_ipld_encoding", @@ -2719,7 +2719,7 @@ checksum = "e2715e2049987c00fdec6ed087deb3332afb766c0b988ad25fe62f0b8e1ce2a7" dependencies = [ "anyhow", "cid", - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "fvm_ipld_blockstore", "fvm_ipld_encoding", "fvm_ipld_hamt", @@ -2740,7 +2740,7 @@ dependencies = [ "anyhow", "cid", "fil_actor_verifreg_state", - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "frc42_dispatch", "frc42_macros", "fvm_ipld_bitfield", @@ -2769,7 +2769,7 @@ dependencies = [ "bitflags 2.9.4", "cid", "fil_actor_verifreg_state", - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "frc42_dispatch", "frc42_macros", "fvm_ipld_amt", @@ -2798,7 +2798,7 @@ checksum = "308cea7b8cdde90b8f683e4fee3b4b5067295cca63bd66d52a8ad4957e7267e2" dependencies = [ "anyhow", "cid", - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "frc42_dispatch", "frc42_macros", "fvm_ipld_blockstore", @@ -2821,7 +2821,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf3ea5272da3f671db18ace120712eac7bf88e1d4e3183ddb6c1fc3da75cf573" dependencies = [ "cid", - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "frc42_dispatch", "frc42_macros", "fvm_ipld_encoding", @@ -2841,7 +2841,7 @@ checksum = "73ea4fb569085e1bbe5c20de364c2e4b6478084d842d62b0937ac08d4c5cf2ee" dependencies = [ "anyhow", "cid", - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "frc42_dispatch", "frc42_macros", "fvm_ipld_blockstore", @@ -2863,7 +2863,7 @@ version = "24.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6a1142fc9b74f5f107361c1dd6142b2500c5872138f8aa66a523e1af783cb67" dependencies = [ - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "fvm_ipld_encoding", "fvm_shared 2.11.2", "fvm_shared 3.13.2", @@ -2881,7 +2881,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c7798a173573473e45a6ca8ac2b309222638b8ddea2e2c4c6ee93b9dc577daf" dependencies = [ "cid", - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "fvm_ipld_blockstore", "fvm_ipld_encoding", "fvm_shared 2.11.2", @@ -2900,7 +2900,7 @@ checksum = "554578f23efb1e9753bffa9c84803e5b3175847ad7cb3d604fa02a30c6e7dfd9" dependencies = [ "anyhow", "cid", - "fil_actors_shared 23.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fil_actors_shared", "frc42_dispatch", "frc42_macros", "fvm_ipld_blockstore", @@ -2949,40 +2949,6 @@ dependencies = [ "unsigned-varint 0.8.0", ] -[[package]] -name = "fil_actors_shared" -version = "23.0.1" -source = "git+https://github.com/ChainSafe/fil-actor-states?rev=6802167351826fdfe429cf8dc93d26c81c1b0385#6802167351826fdfe429cf8dc93d26c81c1b0385" -dependencies = [ - "anyhow", - "cid", - "filecoin-proofs-api", - "frc46_token", - "fvm_ipld_amt", - "fvm_ipld_bitfield", - "fvm_ipld_blockstore", - "fvm_ipld_encoding", - "fvm_ipld_hamt", - "fvm_shared 2.11.2", - "fvm_shared 3.13.2", - "fvm_shared 4.7.3", - "integer-encoding", - "itertools 0.14.0", - "lazy_static", - "multihash-codetable", - "num", - "num-bigint", - "num-derive", - "num-traits", - "pastey", - "regex", - "serde", - "serde_repr", - "strum", - "thiserror 2.0.16", - "unsigned-varint 0.8.0", -] - [[package]] name = "filecoin-hashers" version = "14.0.0" @@ -3214,7 +3180,7 @@ dependencies = [ "fil_actor_reward_state", "fil_actor_system_state", "fil_actor_verifreg_state", - "fil_actors_shared 23.0.1 (git+https://github.com/ChainSafe/fil-actor-states?rev=6802167351826fdfe429cf8dc93d26c81c1b0385)", + "fil_actors_shared", "flate2", "flume 0.11.1", "fs_extra", diff --git a/src/lotus_json/actors/params/mod.rs b/src/lotus_json/actors/params/mod.rs index 788594b20573..e9e0a8895ca2 100644 --- a/src/lotus_json/actors/params/mod.rs +++ b/src/lotus_json/actors/params/mod.rs @@ -5,6 +5,7 @@ use super::*; mod account_params; mod cron_params; mod datacap_params; +mod eam_params; mod evm_params; mod init_params; mod miner_params; diff --git a/src/rpc/registry/actors/eam.rs b/src/rpc/registry/actors/eam.rs index a02bd8b9e80f..faeb4dad0a5e 100644 --- a/src/rpc/registry/actors/eam.rs +++ b/src/rpc/registry/actors/eam.rs @@ -4,6 +4,7 @@ use crate::rpc::registry::methods_reg::{MethodRegistry, register_actor_methods}; use crate::shim::message::MethodNum; use cid::Cid; +use fil_actors_shared::actor_versions::ActorVersion; macro_rules! register_eam_reg_version { ($registry:expr, $code_cid:expr, $state_version:path) => {{ @@ -24,15 +25,15 @@ macro_rules! register_eam_reg_version { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: u64) { +pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: ActorVersion) { match version { - 10 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v10), - 11 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v11), - 12 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v12), - 13 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v13), - 14 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v14), - 15 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v15), - 16 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v16), + ActorVersion::V10 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v10), + ActorVersion::V11 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v11), + ActorVersion::V12 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v12), + ActorVersion::V13 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v13), + ActorVersion::V14 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v14), + ActorVersion::V15 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v15), + ActorVersion::V15 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v16), _ => {} } } From c96ab46bda2a10b10c938a4198afe8bf99e509a9 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Tue, 9 Sep 2025 23:13:52 +0530 Subject: [PATCH 08/18] add version 17 support [skip ci] --- Cargo.lock | 65 +++++----- Cargo.toml | 32 ++--- .../actors/params/account_params.rs | 4 +- src/lotus_json/actors/params/cron_params.rs | 2 +- .../actors/params/datacap_params.rs | 8 +- src/lotus_json/actors/params/eam_params.rs | 6 +- src/lotus_json/actors/params/evm_params.rs | 4 +- src/lotus_json/actors/params/init_params.rs | 6 +- src/lotus_json/actors/params/miner_params.rs | 72 +++++------ .../actors/params/multisig_params.rs | 16 +-- src/lotus_json/actors/params/paych_params.rs | 4 +- src/lotus_json/actors/params/power_params.rs | 36 +++++- src/lotus_json/actors/params/reward_params.rs | 6 +- .../actors/params/verified_reg_params.rs | 20 +-- src/rpc/registry/actors/account.rs | 8 ++ src/rpc/registry/actors/cron.rs | 1 + src/rpc/registry/actors/datacap.rs | 1 + src/rpc/registry/actors/eam.rs | 13 +- src/rpc/registry/actors/eth_account.rs | 3 + src/rpc/registry/actors/evm.rs | 1 + src/rpc/registry/actors/init.rs | 3 + src/rpc/registry/actors/miner.rs | 116 ++++++++++++++---- src/rpc/registry/actors/multisig.rs | 3 + src/rpc/registry/actors/payment_channel.rs | 3 + src/rpc/registry/actors/power.rs | 39 ++++-- src/rpc/registry/actors/reward.rs | 3 + src/rpc/registry/actors/system.rs | 1 + src/rpc/registry/actors/verified_reg.rs | 3 + 28 files changed, 320 insertions(+), 159 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3458cf4d4e95..1bab72dc3b01 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2610,9 +2610,9 @@ dependencies = [ [[package]] name = "fil_actor_account_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee54bfbd6f576dc263026db73b6e77f6fc23654556c68e5d2b69768171a3fdab" +checksum = "14c6392faf8bc6ce3f36a136c52e0357c4fd1e64a4f0eb9834abd8c63b9b19cf" dependencies = [ "frc42_dispatch", "frc42_macros", @@ -2627,9 +2627,9 @@ dependencies = [ [[package]] name = "fil_actor_cron_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74b3dc3e53aa0636fac281b1cb98af53f16769045119ff47cd1892df60390ee" +checksum = "0fe305e8b1612eec1ba1b3c7dba62bc312d898606a5b9525a464d9c47139e70a" dependencies = [ "fvm_ipld_encoding", "fvm_shared 2.11.2", @@ -2642,9 +2642,9 @@ dependencies = [ [[package]] name = "fil_actor_datacap_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7c439d60a7b9979199bb50479b3e42021b2ccf6979bee9a8617e61a67c568f" +checksum = "a122d4735ab7d52ec38ca91bda8d56c0d1fea0a13ef9be70e2b5b0dd7d9f0a0b" dependencies = [ "fil_actors_shared", "frc42_dispatch", @@ -2663,9 +2663,9 @@ dependencies = [ [[package]] name = "fil_actor_eam_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a82e385dbace66a6ea56a67fb9782d555988ac59bab005d645dfc8f4db13b70" +checksum = "7ef468e409399faf23e6da95e27d5f7a27cac22ba7f6e5f41bf3d485309b936d" dependencies = [ "fil_actor_evm_state", "fvm_ipld_encoding", @@ -2678,9 +2678,9 @@ dependencies = [ [[package]] name = "fil_actor_ethaccount_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1adb598222ed2992854e1e5feca6c42c75403f7ca6683b14d09387c7ff08c7a" +checksum = "8322c4de54e80ca761d82bf259dc3b1b2104de44008dcf2493078df1dd6f044d" dependencies = [ "fvm_ipld_encoding", "fvm_shared 3.13.2", @@ -2692,9 +2692,9 @@ dependencies = [ [[package]] name = "fil_actor_evm_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5cd2fd5ff6c1491267c046b9088ae5877e9a05957bd8665d88dbc44e48c5d47" +checksum = "90610613408cd84da78aeade27ea0f44158b03f5dd6d0d56bd47831543638e63" dependencies = [ "cid", "fil_actors_shared", @@ -2713,9 +2713,9 @@ dependencies = [ [[package]] name = "fil_actor_init_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2715e2049987c00fdec6ed087deb3332afb766c0b988ad25fe62f0b8e1ce2a7" +checksum = "8db5cb637d20451009ebe905d592c235d8ce6fb8626f72f04e3851b4b7744496" dependencies = [ "anyhow", "cid", @@ -2733,9 +2733,9 @@ dependencies = [ [[package]] name = "fil_actor_market_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f945a03e386885d87b1c231b3021a860dab9480da89d096f825562d7d3fc16a" +checksum = "bdb17e1b96534b072d76aa3f4717c2c618b3caf435dcb63f396335259b6eb2e0" dependencies = [ "anyhow", "cid", @@ -2761,9 +2761,9 @@ dependencies = [ [[package]] name = "fil_actor_miner_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1382e2944310ac60bb0e7794299166228ac307005e6e3ee64393477cdb398444" +checksum = "302b9ba04c75efde657c5e06e1033e1585288119da437f29d7e22c5328a6b996" dependencies = [ "anyhow", "bitflags 2.9.4", @@ -2792,9 +2792,9 @@ dependencies = [ [[package]] name = "fil_actor_multisig_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cea7b8cdde90b8f683e4fee3b4b5067295cca63bd66d52a8ad4957e7267e2" +checksum = "84ced2ed760180cb09a03ae0438ed9fb82b495bba97c2da8d7ac5ef61c49b7bb" dependencies = [ "anyhow", "cid", @@ -2816,9 +2816,9 @@ dependencies = [ [[package]] name = "fil_actor_paych_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf3ea5272da3f671db18ace120712eac7bf88e1d4e3183ddb6c1fc3da75cf573" +checksum = "bf6352ea0452bc6dc533528e5c4ff1267f9a94baaf1b11e19145c103a6773780" dependencies = [ "cid", "fil_actors_shared", @@ -2835,9 +2835,9 @@ dependencies = [ [[package]] name = "fil_actor_power_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ea4fb569085e1bbe5c20de364c2e4b6478084d842d62b0937ac08d4c5cf2ee" +checksum = "d97b98196fc3da0e31c00686c79f922eb8805a06a903f576dc9fb6b684ee6845" dependencies = [ "anyhow", "cid", @@ -2859,9 +2859,9 @@ dependencies = [ [[package]] name = "fil_actor_reward_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a1142fc9b74f5f107361c1dd6142b2500c5872138f8aa66a523e1af783cb67" +checksum = "33020cb0a086cff43d94c63034e98b960ff331dc5adc31fc931b695e181f5919" dependencies = [ "fil_actors_shared", "fvm_ipld_encoding", @@ -2876,9 +2876,9 @@ dependencies = [ [[package]] name = "fil_actor_system_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7798a173573473e45a6ca8ac2b309222638b8ddea2e2c4c6ee93b9dc577daf" +checksum = "d26709383303cd27da59f1bd5361249a8043f736721e46b3d5ae674d4f0ff93c" dependencies = [ "cid", "fil_actors_shared", @@ -2894,9 +2894,9 @@ dependencies = [ [[package]] name = "fil_actor_verifreg_state" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "554578f23efb1e9753bffa9c84803e5b3175847ad7cb3d604fa02a30c6e7dfd9" +checksum = "92f8794eab7e2da54225f26ec65bdb2d7565b731c39d661771a516871594354b" dependencies = [ "anyhow", "cid", @@ -2916,9 +2916,9 @@ dependencies = [ [[package]] name = "fil_actors_shared" -version = "24.1.1" +version = "24.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f767a616bd469a24c3d9599b4fbd77a293abe213cf9c3cbac3c8c0e59f7678" +checksum = "0017d2215c114878850e25cfffea5d475abbba72e972fa77c15ed46d6a6be6f8" dependencies = [ "anyhow", "cid", @@ -2947,6 +2947,7 @@ dependencies = [ "strum", "thiserror 2.0.16", "unsigned-varint 0.8.0", + "walkdir", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 575ea3e2c1de..45fc5e203871 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,22 +68,22 @@ educe = { version = "0.6.0", features = ["Debug"], default-features = false } enumflags2 = "0.7" ethereum-types = { version = "0.15", features = ["ethbloom"] } ez-jsonrpc-types = "0.5" -fil_actor_account_state = { version = "24" } -fil_actor_cron_state = { version = "24" } -fil_actor_datacap_state = { version = "24" } -fil_actor_eam_state = { version = "24" } -fil_actor_ethaccount_state = { version = "24" } -fil_actor_evm_state = { version = "24" } -fil_actor_init_state = { version = "24" } -fil_actor_market_state = { version = "24" } -fil_actor_miner_state = { version = "24" } -fil_actor_multisig_state = { version = "24" } -fil_actor_paych_state = { version = "24" } -fil_actor_power_state = { version = "24" } -fil_actor_reward_state = { version = "24" } -fil_actor_system_state = { version = "24" } -fil_actor_verifreg_state = { version = "24" } -fil_actors_shared = { version = "24", features = ["json"] } +fil_actor_account_state = { version = "24.1.2" } +fil_actor_cron_state = { version = "24.1.2" } +fil_actor_datacap_state = { version = "24.1.2" } +fil_actor_eam_state = { version = "24.1.2" } +fil_actor_ethaccount_state = { version = "24.1.2" } +fil_actor_evm_state = { version = "24.1.2" } +fil_actor_init_state = { version = "24.1.2" } +fil_actor_market_state = { version = "24.1.2" } +fil_actor_miner_state = { version = "24.1.2" } +fil_actor_multisig_state = { version = "24.1.2" } +fil_actor_paych_state = { version = "24.1.2" } +fil_actor_power_state = { version = "24.1.2" } +fil_actor_reward_state = { version = "24.1.2" } +fil_actor_system_state = { version = "24.1.2" } +fil_actor_verifreg_state = { version = "24.1.2" } +fil_actors_shared = { version = "24.1.2", features = ["json"] } flate2 = "1" flume = { workspace = true } fs_extra = "1" diff --git a/src/lotus_json/actors/params/account_params.rs b/src/lotus_json/actors/params/account_params.rs index 35b882d2ab3e..a0fbb2013c73 100644 --- a/src/lotus_json/actors/params/account_params.rs +++ b/src/lotus_json/actors/params/account_params.rs @@ -101,7 +101,7 @@ macro_rules! impl_account_constructor_params { }; } -impl_account_constructor_params!(types::ConstructorParams: 15, 16); +impl_account_constructor_params!(types::ConstructorParams: 15, 16, 17); impl_account_constructor_params!(ConstructorParams: 11, 12, 13, 14); -impl_account_authenticate_params!(types::AuthenticateMessageParams: 15, 16); +impl_account_authenticate_params!(types::AuthenticateMessageParams: 15, 16, 17); impl_account_authenticate_params!(AuthenticateMessageParams: 9, 10, 11, 12, 13, 14); diff --git a/src/lotus_json/actors/params/cron_params.rs b/src/lotus_json/actors/params/cron_params.rs index 82849bb7d941..b97298c0ad1a 100644 --- a/src/lotus_json/actors/params/cron_params.rs +++ b/src/lotus_json/actors/params/cron_params.rs @@ -79,4 +79,4 @@ macro_rules! impl_lotus_json_for_cron_constructor_params { }; } -impl_lotus_json_for_cron_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); +impl_lotus_json_for_cron_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); diff --git a/src/lotus_json/actors/params/datacap_params.rs b/src/lotus_json/actors/params/datacap_params.rs index 2f6c17f1741f..cc9ad1a6109b 100644 --- a/src/lotus_json/actors/params/datacap_params.rs +++ b/src/lotus_json/actors/params/datacap_params.rs @@ -48,7 +48,7 @@ macro_rules! impl_datacap_balance_params_lotus_json { }; } -impl_datacap_balance_params_lotus_json!(v11, v12, v13, v14, v15, v16); +impl_datacap_balance_params_lotus_json!(v11, v12, v13, v14, v15, v16, v17); #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema)] #[serde(transparent)] @@ -85,7 +85,7 @@ macro_rules! impl_datacap_constructor_params_lotus_json { }; } -impl_datacap_constructor_params_lotus_json!(v11, v12, v13, v14, v15, v16); +impl_datacap_constructor_params_lotus_json!(v11, v12, v13, v14, v15, v16, v17); #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema)] #[serde(rename_all = "PascalCase")] @@ -135,7 +135,7 @@ macro_rules! impl_datacap_destroy_params_lotus_json { }; } -impl_datacap_destroy_params_lotus_json!(v9, v10, v11, v12, v13, v14, v15, v16); +impl_datacap_destroy_params_lotus_json!(v9, v10, v11, v12, v13, v14, v15, v16, v17); #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema)] #[serde(rename_all = "PascalCase")] @@ -195,7 +195,7 @@ macro_rules! impl_datacap_mint_params_lotus_json { }; } -impl_datacap_mint_params_lotus_json!(v9, v10, v11, v12, v13, v14, v15, v16); +impl_datacap_mint_params_lotus_json!(v9, v10, v11, v12, v13, v14, v15, v16, v17); #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema)] #[serde(rename_all = "PascalCase")] diff --git a/src/lotus_json/actors/params/eam_params.rs b/src/lotus_json/actors/params/eam_params.rs index be92e48f108c..b9023da1fb97 100644 --- a/src/lotus_json/actors/params/eam_params.rs +++ b/src/lotus_json/actors/params/eam_params.rs @@ -147,6 +147,6 @@ macro_rules! impl_eam_create_external_params { }; } -impl_eam_create_params!(10, 11, 12, 13, 14, 15, 16); -impl_eam_create2_params!(10, 11, 12, 13, 14, 15, 16); -impl_eam_create_external_params!(10, 11, 12, 13, 14, 15, 16); +impl_eam_create_params!(10, 11, 12, 13, 14, 15, 16, 17); +impl_eam_create2_params!(10, 11, 12, 13, 14, 15, 16, 17); +impl_eam_create_external_params!(10, 11, 12, 13, 14, 15, 16, 17); diff --git a/src/lotus_json/actors/params/evm_params.rs b/src/lotus_json/actors/params/evm_params.rs index 8cde8409f13e..13b72bd0e40e 100644 --- a/src/lotus_json/actors/params/evm_params.rs +++ b/src/lotus_json/actors/params/evm_params.rs @@ -61,7 +61,7 @@ macro_rules! impl_evm_constructor_params { }; } -impl_evm_constructor_params!(10, 11, 12, 13, 14, 15, 16); +impl_evm_constructor_params!(10, 11, 12, 13, 14, 15, 16, 17); #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema)] #[serde(rename_all = "PascalCase")] @@ -124,7 +124,7 @@ macro_rules! impl_evm_delegate_call_params_lotus_json { }; } -impl_evm_delegate_call_params_lotus_json!(10, 11, 12, 13, 14, 15, 16); +impl_evm_delegate_call_params_lotus_json!(10, 11, 12, 13, 14, 15, 16, 17); #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "PascalCase")] diff --git a/src/lotus_json/actors/params/init_params.rs b/src/lotus_json/actors/params/init_params.rs index b317bc4f49ac..6adbe114945e 100644 --- a/src/lotus_json/actors/params/init_params.rs +++ b/src/lotus_json/actors/params/init_params.rs @@ -176,6 +176,6 @@ macro_rules! impl_lotus_json_for_init_exec4_params { }; } -impl_lotus_json_for_init_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_init_exec_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_init_exec4_params!(10, 11, 12, 13, 14, 15, 16); +impl_lotus_json_for_init_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_init_exec_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_init_exec4_params!(10, 11, 12, 13, 14, 15, 16, 17); diff --git a/src/lotus_json/actors/params/miner_params.rs b/src/lotus_json/actors/params/miner_params.rs index be20adc8aaf2..4849840c2907 100644 --- a/src/lotus_json/actors/params/miner_params.rs +++ b/src/lotus_json/actors/params/miner_params.rs @@ -3695,54 +3695,56 @@ macro_rules! impl_miner_internal_sector_setup_for_preseal_params { }; } -impl_lotus_json_for_miner_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_change_worker_param!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_change_owner_address_params!(11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_extend_sector_expiration2_params!(9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_change_beneficiary_params!(9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_declare_faults_recovered_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_dispute_windowed_post_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_recover_declaration_params_v9_and_above!(9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_post_partition_v9_and_above!(9, 10, 11, 12, 13, 14, 15, 16); +impl_lotus_json_for_miner_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_change_worker_param!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_change_owner_address_params!(11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_extend_sector_expiration2_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_change_beneficiary_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_declare_faults_recovered_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_dispute_windowed_post_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_recover_declaration_params_v9_and_above!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_post_partition_v9_and_above!(9, 10, 11, 12, 13, 14, 15, 16, 17); impl_lotus_json_for_miner_submit_windowed_post_params_v9_and_above!(fvm_shared2: 9); impl_lotus_json_for_miner_submit_windowed_post_params_v9_and_above!(fvm_shared3: 10, 11); -impl_lotus_json_for_miner_submit_windowed_post_params_v9_and_above!(fvm_shared4: 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_declare_faults_params_v9_and_above!(9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_declare_faults_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_termination_declaration_v9_and_above!(9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_terminate_sectors_params_v9_and_above!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_withdraw_balance_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_change_multiaddrs_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_compact_partitions_params!(9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_compact_sector_numbers_params!(9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_pre_commit_sector_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_pre_commit_sector_and_batch_params!(9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_pre_commit_sector_batch2_params!(9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_prove_commit_sectors3_params!(13, 14, 15, 16); -impl_lotus_json_for_miner_prove_replica_updates3_params!(13, 14, 15, 16); -impl_lotus_json_for_miner_report_consensus_fault_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_check_sector_proven_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_apply_reward_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); +impl_lotus_json_for_miner_submit_windowed_post_params_v9_and_above!(fvm_shared4: 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_declare_faults_params_v9_and_above!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_declare_faults_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_termination_declaration_v9_and_above!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_terminate_sectors_params_v9_and_above!( + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 +); +impl_lotus_json_for_miner_withdraw_balance_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_change_multiaddrs_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_compact_partitions_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_compact_sector_numbers_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_pre_commit_sector_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_pre_commit_sector_and_batch_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_pre_commit_sector_batch2_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_prove_commit_sectors3_params!(13, 14, 15, 16, 17); +impl_lotus_json_for_miner_prove_replica_updates3_params!(13, 14, 15, 16, 17); +impl_lotus_json_for_miner_report_consensus_fault_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_check_sector_proven_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_apply_reward_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); impl_lotus_json_for_miner_prove_commit_aggregate_params_v13_and_above!( 9, 10, 11, 12, 13, 14, 15, 16 ); impl_lotus_json_for_miner_prove_replica_updates_params!(fvm_shared2: 8, 9); impl_lotus_json_for_miner_prove_replica_updates_params!(fvm_shared3: 10, 11); impl_lotus_json_for_miner_prove_replica_updates_params!(fvm_shared4: 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_is_controlling_address_param!(10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_max_termination_fee_params!(16); -impl_lotus_json_for_miner_change_peer_id_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_miner_sector_activation_manifest!(13, 14, 15, 16); -impl_lotus_json_for_miner_sector_update_manifest!(13, 14, 15, 16); -impl_miner_prove_commit_sector_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); +impl_lotus_json_for_miner_is_controlling_address_param!(10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_max_termination_fee_params!(16, 17); +impl_lotus_json_for_miner_change_peer_id_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_miner_sector_activation_manifest!(13, 14, 15, 16, 17); +impl_lotus_json_for_miner_sector_update_manifest!(13, 14, 15, 16, 17); +impl_miner_prove_commit_sector_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); impl_miner_extend_sector_expiration_params_v9_onwards!(9, 10, 11, 12, 13, 14, 15, 16); impl_miner_confirm_sector_proofs_param_v8_to_v13!(fvm_shared2: 8, 9); impl_miner_confirm_sector_proofs_param_v8_to_v13!(fvm_shared3: 10, 11,12, 13); -impl_miner_deferred_cron_event_params_v14_onwards!(14, 15, 16); +impl_miner_deferred_cron_event_params_v14_onwards!(14, 15, 16, 17); impl_miner_deferred_cron_event_params_v8_to_v13!(fvm_shared2: 8, 9); impl_miner_deferred_cron_event_params_v8_to_v13!(fvm_shared3: 10, 11, 12, 13); impl_miner_prove_replica_update_params2!(fvm_shared2: 9); impl_miner_prove_replica_update_params2!(fvm_shared3: 10, 11); impl_miner_prove_replica_update_params2!(fvm_shared4: 12); -impl_lotus_json_for_miner_prove_commit_sector_ni_params!(14, 15, 16); -impl_miner_internal_sector_setup_for_preseal_params!(14, 15, 16); +impl_lotus_json_for_miner_prove_commit_sector_ni_params!(14, 15, 16, 17); +impl_miner_internal_sector_setup_for_preseal_params!(14, 15, 16, 17); diff --git a/src/lotus_json/actors/params/multisig_params.rs b/src/lotus_json/actors/params/multisig_params.rs index 8de3eb4f5e97..b34e7f3c6177 100644 --- a/src/lotus_json/actors/params/multisig_params.rs +++ b/src/lotus_json/actors/params/multisig_params.rs @@ -457,11 +457,11 @@ macro_rules! impl_multisig_lock_balance_params { }; } -impl_multisig_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_multisig_propose_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_multisig_txn_id_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_multisig_add_signer_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_multisig_remove_signer_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_multisig_swap_signer_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_multisig_change_num_approvals_threshold_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_multisig_lock_balance_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); +impl_multisig_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_multisig_propose_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_multisig_txn_id_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_multisig_add_signer_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_multisig_remove_signer_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_multisig_swap_signer_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_multisig_change_num_approvals_threshold_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_multisig_lock_balance_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); diff --git a/src/lotus_json/actors/params/paych_params.rs b/src/lotus_json/actors/params/paych_params.rs index 42901f7dc381..0bff50ed1901 100644 --- a/src/lotus_json/actors/params/paych_params.rs +++ b/src/lotus_json/actors/params/paych_params.rs @@ -540,7 +540,7 @@ macro_rules! impl_paych_update_channel_state_params_v4 { } // Apply implementations with correct fvm_shared versions -impl_paych_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); +impl_paych_constructor_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); impl_paych_update_channel_state_params_v2!(8, 9); impl_paych_update_channel_state_params_v3!(10, 11); -impl_paych_update_channel_state_params_v4!(12, 13, 14, 15, 16); +impl_paych_update_channel_state_params_v4!(12, 13, 14, 15, 16, 17); diff --git a/src/lotus_json/actors/params/power_params.rs b/src/lotus_json/actors/params/power_params.rs index faea44701b5f..2207cdf108bc 100644 --- a/src/lotus_json/actors/params/power_params.rs +++ b/src/lotus_json/actors/params/power_params.rs @@ -289,7 +289,7 @@ macro_rules! impl_lotus_json_for_power_miner_raw_power_params { }; } -// Implementations for MinerPowerParams (only present in the power actor v16) +// Implementations for MinerPowerParams (only present in the power actor v16 and v17) impl HasLotusJson for fil_actor_power_state::v16::MinerPowerParams { type LotusJson = MinerPowerParamsLotusJson; @@ -314,8 +314,32 @@ impl HasLotusJson for fil_actor_power_state::v16::MinerPowerParams { } } -impl_lotus_json_for_power_create_miner_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_power_update_claimed_power_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_power_enroll_cron_event_params!(8, 9, 10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_power_update_pledge_total_params!(10, 11, 12, 13, 14, 15, 16); -impl_lotus_json_for_power_miner_raw_power_params!(10, 11, 12, 13, 14, 15, 16); +impl HasLotusJson for fil_actor_power_state::v17::MinerPowerParams { + type LotusJson = MinerPowerParamsLotusJson; + + #[cfg(test)] + fn snapshots() -> Vec<(serde_json::Value, Self)> { + vec![( + json!({ + "Miner": 1002, + }), + Self { miner: 1002 }, + )] + } + + fn into_lotus_json(self) -> Self::LotusJson { + MinerPowerParamsLotusJson { miner: self.miner } + } + + fn from_lotus_json(lotus_json: Self::LotusJson) -> Self { + Self { + miner: lotus_json.miner, + } + } +} + +impl_lotus_json_for_power_create_miner_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_power_update_claimed_power_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_power_enroll_cron_event_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_power_update_pledge_total_params!(10, 11, 12, 13, 14, 15, 16, 17); +impl_lotus_json_for_power_miner_raw_power_params!(10, 11, 12, 13, 14, 15, 16, 17); diff --git a/src/lotus_json/actors/params/reward_params.rs b/src/lotus_json/actors/params/reward_params.rs index e71d3177ba3e..004dbd3cce64 100644 --- a/src/lotus_json/actors/params/reward_params.rs +++ b/src/lotus_json/actors/params/reward_params.rs @@ -173,8 +173,8 @@ macro_rules! impl_update_network_kpi_params { }; } -impl_reward_constructor_params!(fvm_shared4::bigint: 16, 15, 14, 13, 12); +impl_reward_constructor_params!(fvm_shared4::bigint: 17, 16, 15, 14, 13, 12); impl_reward_constructor_params!(fvm_shared3::bigint: 11); -impl_award_block_reward_params!(16, 15, 14, 13, 12, 11, 10, 9, 8); -impl_update_network_kpi_params!(fvm_shared4::bigint: 16, 15, 14, 13, 12); +impl_award_block_reward_params!(17, 16, 15, 14, 13, 12, 11, 10, 9, 8); +impl_update_network_kpi_params!(fvm_shared4::bigint: 17, 16, 15, 14, 13, 12); impl_update_network_kpi_params!(fvm_shared3::bigint: 11); diff --git a/src/lotus_json/actors/params/verified_reg_params.rs b/src/lotus_json/actors/params/verified_reg_params.rs index 06d86ba03102..a358e03c9f85 100644 --- a/src/lotus_json/actors/params/verified_reg_params.rs +++ b/src/lotus_json/actors/params/verified_reg_params.rs @@ -1236,20 +1236,20 @@ impl HasLotusJson for fil_actor_verifreg_state::v9::AddVerifierClientParams { } } -impl_constructor_params!(11, 12, 13, 14, 15, 16); -impl_verifier_params!(10, 11, 12, 13, 14, 15, 16); // Exclude v8,v9 due to different param names -impl_remove_verifier_params!(11, 12, 13, 14, 15, 16); -impl_remove_expired_allocations_params!(9, 10, 11, 12, 13, 14, 15, 16); -impl_get_claims_params!(9, 10, 11, 12, 13, 14, 15, 16); -impl_remove_expired_claims_params!(9, 10, 11, 12, 13, 14, 15, 16); -impl_extend_claim_terms_params!(9, 10, 11, 12, 13, 14, 15, 16); +impl_constructor_params!(11, 12, 13, 14, 15, 16, 17); +impl_verifier_params!(10, 11, 12, 13, 14, 15, 16, 17); // Exclude v8,v9 due to different param names +impl_remove_verifier_params!(11, 12, 13, 14, 15, 16, 17); +impl_remove_expired_allocations_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_get_claims_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_remove_expired_claims_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); +impl_extend_claim_terms_params!(9, 10, 11, 12, 13, 14, 15, 16, 17); impl_remove_data_cap_params_v2!(8, 9); impl_remove_data_cap_params_v3!(10, 11); -impl_remove_data_cap_params_v4!(12, 13, 14, 15, 16); +impl_remove_data_cap_params_v4!(12, 13, 14, 15, 16, 17); impl_claim_allocations_params_v11!(fvm_shared2: 9); impl_claim_allocations_params_v11!(fvm_shared3: 10, 11); -impl_claim_allocations_params_v12_plus!(fvm_shared4: 12, 13, 14, 15, 16); -impl_allocation_requests!(fvm_shared4: 12, 13, 14, 15, 16); +impl_claim_allocations_params_v12_plus!(fvm_shared4: 12, 13, 14, 15, 16, 17); +impl_allocation_requests!(fvm_shared4: 12, 13, 14, 15, 16, 17); impl_allocation_requests!(fvm_shared3: 11); diff --git a/src/rpc/registry/actors/account.rs b/src/rpc/registry/actors/account.rs index 392885594f98..fcd9500a09fa 100644 --- a/src/rpc/registry/actors/account.rs +++ b/src/rpc/registry/actors/account.rs @@ -132,5 +132,13 @@ pub(crate) fn register_account_actor_methods( with_types ) } + ActorVersion::V17 => { + register_account_version_11_onwards!( + registry, + cid, + fil_actor_account_state::v17, + with_types + ) + } } } diff --git a/src/rpc/registry/actors/cron.rs b/src/rpc/registry/actors/cron.rs index d9c74f856945..f4efc581aadd 100644 --- a/src/rpc/registry/actors/cron.rs +++ b/src/rpc/registry/actors/cron.rs @@ -36,5 +36,6 @@ pub(crate) fn register_actor_methods( ActorVersion::V14 => register_cron_version!(registry, cid, fil_actor_cron_state::v14), ActorVersion::V15 => register_cron_version!(registry, cid, fil_actor_cron_state::v15), ActorVersion::V16 => register_cron_version!(registry, cid, fil_actor_cron_state::v16), + ActorVersion::V17 => register_cron_version!(registry, cid, fil_actor_cron_state::v17), } } diff --git a/src/rpc/registry/actors/datacap.rs b/src/rpc/registry/actors/datacap.rs index c345a30f3a34..7a50653ea169 100644 --- a/src/rpc/registry/actors/datacap.rs +++ b/src/rpc/registry/actors/datacap.rs @@ -138,5 +138,6 @@ pub(crate) fn register_datacap_actor_methods( ActorVersion::V14 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v14), ActorVersion::V15 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v15), ActorVersion::V16 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v16), + ActorVersion::V17 => register_datacap_version!(registry, cid, fil_actor_datacap_state::v17), } } diff --git a/src/rpc/registry/actors/eam.rs b/src/rpc/registry/actors/eam.rs index faeb4dad0a5e..d2e6b3b9bef7 100644 --- a/src/rpc/registry/actors/eam.rs +++ b/src/rpc/registry/actors/eam.rs @@ -25,15 +25,22 @@ macro_rules! register_eam_reg_version { }}; } -pub(crate) fn register_actor_methods(registry: &mut MethodRegistry, cid: Cid, version: ActorVersion) { +pub(crate) fn register_actor_methods( + registry: &mut MethodRegistry, + cid: Cid, + version: ActorVersion, +) { match version { + ActorVersion::V8 | ActorVersion::V9 => { + // EAM actor was introduced in V10, so V8 and V9 don't have EAM actors + } ActorVersion::V10 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v10), ActorVersion::V11 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v11), ActorVersion::V12 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v12), ActorVersion::V13 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v13), ActorVersion::V14 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v14), ActorVersion::V15 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v15), - ActorVersion::V15 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v16), - _ => {} + ActorVersion::V16 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v16), + ActorVersion::V17 => register_eam_reg_version!(registry, cid, fil_actor_eam_state::v17), } } diff --git a/src/rpc/registry/actors/eth_account.rs b/src/rpc/registry/actors/eth_account.rs index bac33e5969a7..c48fb501ffe2 100644 --- a/src/rpc/registry/actors/eth_account.rs +++ b/src/rpc/registry/actors/eth_account.rs @@ -43,5 +43,8 @@ pub(crate) fn register_actor_methods( ActorVersion::V16 => { register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v16) } + ActorVersion::V17 => { + register_eth_account_reg_version!(registry, cid, fil_actor_ethaccount_state::v17) + } } } diff --git a/src/rpc/registry/actors/evm.rs b/src/rpc/registry/actors/evm.rs index 2b3494f86a7e..069e6efa63f8 100644 --- a/src/rpc/registry/actors/evm.rs +++ b/src/rpc/registry/actors/evm.rs @@ -54,5 +54,6 @@ pub(crate) fn register_evm_actor_methods( ActorVersion::V14 => register_evm_version!(registry, cid, fil_actor_evm_state::v14), ActorVersion::V15 => register_evm_version!(registry, cid, fil_actor_evm_state::v15), ActorVersion::V16 => register_evm_version!(registry, cid, fil_actor_evm_state::v16), + ActorVersion::V17 => register_evm_version!(registry, cid, fil_actor_evm_state::v17), } } diff --git a/src/rpc/registry/actors/init.rs b/src/rpc/registry/actors/init.rs index 5a8f155312da..e0e2f0785cb7 100644 --- a/src/rpc/registry/actors/init.rs +++ b/src/rpc/registry/actors/init.rs @@ -72,5 +72,8 @@ pub(crate) fn register_actor_methods( ActorVersion::V16 => { register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v16) } + ActorVersion::V17 => { + register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v17) + } } } diff --git a/src/rpc/registry/actors/miner.rs b/src/rpc/registry/actors/miner.rs index 5db35546beb4..5a37067f5b98 100644 --- a/src/rpc/registry/actors/miner.rs +++ b/src/rpc/registry/actors/miner.rs @@ -13,8 +13,7 @@ macro_rules! register_miner_basic_methods { ApplyRewardParams, ChangeMultiaddrsParams, ChangePeerIDParams, ChangeWorkerAddressParams, CheckSectorProvenParams, CompactPartitionsParams, CompactSectorNumbersParams, DeclareFaultsParams, DeclareFaultsRecoveredParams, - DeferredCronEventParams, DisputeWindowedPoStParams, ExtendSectorExpirationParams, - Method, MinerConstructorParams, ProveCommitAggregateParams, ProveReplicaUpdatesParams, + DeferredCronEventParams, DisputeWindowedPoStParams, Method, MinerConstructorParams, ReportConsensusFaultParams, SubmitWindowedPoStParams, TerminateSectorsParams, WithdrawBalanceParams, }; @@ -27,7 +26,6 @@ macro_rules! register_miner_basic_methods { (Method::ChangeWorkerAddress, ChangeWorkerAddressParams), (Method::ChangePeerID, ChangePeerIDParams), (Method::SubmitWindowedPoSt, SubmitWindowedPoStParams), - (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), (Method::TerminateSectors, TerminateSectorsParams), (Method::DeclareFaults, DeclareFaultsParams), (Method::DeclareFaultsRecovered, DeclareFaultsRecoveredParams), @@ -40,8 +38,6 @@ macro_rules! register_miner_basic_methods { (Method::CompactPartitions, CompactPartitionsParams), (Method::CompactSectorNumbers, CompactSectorNumbersParams), (Method::DisputeWindowedPoSt, DisputeWindowedPoStParams), - (Method::ProveCommitAggregate, ProveCommitAggregateParams), - (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), ] ); @@ -137,12 +133,30 @@ macro_rules! register_miner_common_method_v14_onwards { }}; } +macro_rules! register_miner_common_method_v16_onwards { + ($registry:expr, $code_cid:expr, $state_version:path) => {{ + use $state_version::{MaxTerminationFeeParams, Method}; + register_actor_methods!( + $registry, + $code_cid, + [(Method::MaxTerminationFeeExported, MaxTerminationFeeParams),] + ); + + register_actor_methods!( + $registry, + $code_cid, + [(Method::InitialPledgeExported, empty)] + ); + }}; +} + fn register_miner_version_8(registry: &mut MethodRegistry, cid: Cid) { register_miner_basic_methods!(registry, cid, fil_actor_miner_state::v8); use fil_actor_miner_state::v8::{ - ConfirmSectorProofsParams, Method, PreCommitSectorBatchParams, PreCommitSectorParams, - ProveCommitSectorParams, + ConfirmSectorProofsParams, ExtendSectorExpirationParams, Method, + PreCommitSectorBatchParams, PreCommitSectorParams, ProveCommitAggregateParams, + ProveCommitSectorParams, ProveReplicaUpdatesParams, }; register_actor_methods!( @@ -152,8 +166,11 @@ fn register_miner_version_8(registry: &mut MethodRegistry, cid: Cid) { (Method::ChangeOwnerAddress, Address), (Method::PreCommitSector, PreCommitSectorParams), (Method::ProveCommitSector, ProveCommitSectorParams), + (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), (Method::PreCommitSectorBatch, PreCommitSectorBatchParams), (Method::ConfirmSectorProofsValid, ConfirmSectorProofsParams), + (Method::ProveCommitAggregate, ProveCommitAggregateParams), + (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), ] ); @@ -164,9 +181,10 @@ fn register_miner_version_9(registry: &mut MethodRegistry, cid: Cid) { register_miner_basic_methods!(registry, cid, fil_actor_miner_state::v9); use fil_actor_miner_state::v9::{ - ChangeBeneficiaryParams, ConfirmSectorProofsParams, ExtendSectorExpiration2Params, Method, - PreCommitSectorBatchParams, PreCommitSectorBatchParams2, PreCommitSectorParams, - ProveCommitSectorParams, ProveReplicaUpdatesParams2, + ChangeBeneficiaryParams, ConfirmSectorProofsParams, ExtendSectorExpiration2Params, + ExtendSectorExpirationParams, Method, PreCommitSectorBatchParams, + PreCommitSectorBatchParams2, PreCommitSectorParams, ProveCommitAggregateParams, + ProveCommitSectorParams, ProveReplicaUpdatesParams, ProveReplicaUpdatesParams2, }; register_actor_methods!( @@ -175,6 +193,7 @@ fn register_miner_version_9(registry: &mut MethodRegistry, cid: Cid) { [ (Method::PreCommitSector, PreCommitSectorParams), (Method::ProveCommitSector, ProveCommitSectorParams), + (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), (Method::PreCommitSectorBatch, PreCommitSectorBatchParams), (Method::PreCommitSectorBatch2, PreCommitSectorBatchParams2), (Method::ChangeOwnerAddress, Address), @@ -185,6 +204,8 @@ fn register_miner_version_9(registry: &mut MethodRegistry, cid: Cid) { ExtendSectorExpiration2Params ), (Method::ConfirmSectorProofsValid, ConfirmSectorProofsParams), + (Method::ProveCommitAggregate, ProveCommitAggregateParams), + (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), ] ); @@ -202,9 +223,9 @@ fn register_miner_version_10(registry: &mut MethodRegistry, cid: Cid) { register_miner_common_methods_v10_onwards!(registry, cid, fil_actor_miner_state::v10); use fil_actor_miner_state::v10::{ - ConfirmSectorProofsParams, ExtendSectorExpiration2Params, Method, - PreCommitSectorBatchParams, PreCommitSectorParams, ProveCommitSectorParams, - ProveReplicaUpdatesParams2, + ConfirmSectorProofsParams, ExtendSectorExpiration2Params, ExtendSectorExpirationParams, + Method, PreCommitSectorBatchParams, PreCommitSectorParams, ProveCommitAggregateParams, + ProveCommitSectorParams, ProveReplicaUpdatesParams, ProveReplicaUpdatesParams2, }; register_actor_methods!( @@ -212,6 +233,7 @@ fn register_miner_version_10(registry: &mut MethodRegistry, cid: Cid) { cid, [ (Method::PreCommitSector, PreCommitSectorParams), + (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), (Method::ProveReplicaUpdates2, ProveReplicaUpdatesParams2), (Method::ProveCommitSector, ProveCommitSectorParams), (Method::PreCommitSectorBatch, PreCommitSectorBatchParams), @@ -222,6 +244,8 @@ fn register_miner_version_10(registry: &mut MethodRegistry, cid: Cid) { (Method::ChangeOwnerAddress, Address), (Method::ChangeOwnerAddressExported, Address), (Method::ConfirmSectorProofsValid, ConfirmSectorProofsParams), + (Method::ProveCommitAggregate, ProveCommitAggregateParams), + (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), ] ); } @@ -230,8 +254,9 @@ fn register_miner_version_11(registry: &mut MethodRegistry, cid: Cid) { register_miner_common_methods_v10_onwards!(registry, cid, fil_actor_miner_state::v11); use fil_actor_miner_state::v11::{ - ChangeOwnerAddressParams, ConfirmSectorProofsParams, ExtendSectorExpiration2Params, Method, - PreCommitSectorBatchParams, PreCommitSectorParams, ProveCommitSectorParams, + ChangeOwnerAddressParams, ConfirmSectorProofsParams, ExtendSectorExpiration2Params, + ExtendSectorExpirationParams, Method, PreCommitSectorBatchParams, PreCommitSectorParams, + ProveCommitAggregateParams, ProveCommitSectorParams, ProveReplicaUpdatesParams, ProveReplicaUpdatesParams2, }; @@ -240,6 +265,7 @@ fn register_miner_version_11(registry: &mut MethodRegistry, cid: Cid) { cid, [ (Method::PreCommitSector, PreCommitSectorParams), + (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), (Method::ProveReplicaUpdates2, ProveReplicaUpdatesParams2), (Method::ProveCommitSector, ProveCommitSectorParams), (Method::PreCommitSectorBatch, PreCommitSectorBatchParams), @@ -250,6 +276,8 @@ fn register_miner_version_11(registry: &mut MethodRegistry, cid: Cid) { (Method::ChangeOwnerAddress, ChangeOwnerAddressParams), (Method::ChangeOwnerAddressExported, ChangeOwnerAddressParams), (Method::ConfirmSectorProofsValid, ConfirmSectorProofsParams), + (Method::ProveCommitAggregate, ProveCommitAggregateParams), + (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), ] ); } @@ -258,8 +286,9 @@ fn register_miner_version_12(registry: &mut MethodRegistry, cid: Cid) { register_miner_common_methods_v10_onwards!(registry, cid, fil_actor_miner_state::v12); use fil_actor_miner_state::v12::{ - ChangeOwnerAddressParams, ConfirmSectorProofsParams, Method, PreCommitSectorBatchParams, - PreCommitSectorParams, ProveCommitSectorParams, ProveReplicaUpdatesParams2, + ChangeOwnerAddressParams, ConfirmSectorProofsParams, ExtendSectorExpirationParams, Method, + PreCommitSectorBatchParams, PreCommitSectorParams, ProveCommitAggregateParams, + ProveCommitSectorParams, ProveReplicaUpdatesParams, ProveReplicaUpdatesParams2, }; register_actor_methods!( registry, @@ -268,10 +297,13 @@ fn register_miner_version_12(registry: &mut MethodRegistry, cid: Cid) { (Method::PreCommitSector, PreCommitSectorParams), (Method::ProveReplicaUpdates2, ProveReplicaUpdatesParams2), (Method::ProveCommitSector, ProveCommitSectorParams), + (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), (Method::PreCommitSectorBatch, PreCommitSectorBatchParams), (Method::ChangeOwnerAddress, ChangeOwnerAddressParams), (Method::ChangeOwnerAddressExported, ChangeOwnerAddressParams), (Method::ConfirmSectorProofsValid, ConfirmSectorProofsParams), + (Method::ProveCommitAggregate, ProveCommitAggregateParams), + (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), ] ); } @@ -280,18 +312,22 @@ fn register_miner_version_13(registry: &mut MethodRegistry, cid: Cid) { register_miner_common_methods_v10_onwards!(registry, cid, fil_actor_miner_state::v13); use fil_actor_miner_state::v13::{ - ChangeOwnerAddressParams, ConfirmSectorProofsParams, Method, ProveCommitSectorParams, - ProveCommitSectors3Params, + ChangeOwnerAddressParams, ConfirmSectorProofsParams, ExtendSectorExpirationParams, Method, + ProveCommitAggregateParams, ProveCommitSectorParams, ProveCommitSectors3Params, + ProveReplicaUpdatesParams, }; register_actor_methods!( registry, cid, [ (Method::ProveCommitSector, ProveCommitSectorParams), + (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), (Method::ProveCommitSectors3, ProveCommitSectors3Params), (Method::ChangeOwnerAddress, ChangeOwnerAddressParams), (Method::ChangeOwnerAddressExported, ChangeOwnerAddressParams), (Method::ConfirmSectorProofsValid, ConfirmSectorProofsParams), + (Method::ProveCommitAggregate, ProveCommitAggregateParams), + (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), ] ); } @@ -299,25 +335,60 @@ fn register_miner_version_13(registry: &mut MethodRegistry, cid: Cid) { fn register_miner_versions_14(registry: &mut MethodRegistry, cid: Cid) { register_miner_common_methods_v10_onwards!(registry, cid, fil_actor_miner_state::v14); register_miner_common_method_v14_onwards!(registry, cid, fil_actor_miner_state::v14); + use fil_actor_miner_state::v14::{ + ExtendSectorExpirationParams, Method, ProveCommitAggregateParams, ProveReplicaUpdatesParams, + }; + register_actor_methods!( + registry, + cid, + [ + (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), + (Method::ProveCommitAggregate, ProveCommitAggregateParams), + (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), + ] + ); } fn register_miner_version_15(registry: &mut MethodRegistry, cid: Cid) { register_miner_common_methods_v10_onwards!(registry, cid, fil_actor_miner_state::v15); register_miner_common_method_v14_onwards!(registry, cid, fil_actor_miner_state::v15); + use fil_actor_miner_state::v15::{ + ExtendSectorExpirationParams, Method, ProveCommitAggregateParams, ProveReplicaUpdatesParams, + }; + register_actor_methods!( + registry, + cid, + [ + (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), + (Method::ProveCommitAggregate, ProveCommitAggregateParams), + (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), + ] + ); } fn register_miner_version_16(registry: &mut MethodRegistry, cid: Cid) { register_miner_common_methods_v10_onwards!(registry, cid, fil_actor_miner_state::v16); register_miner_common_method_v14_onwards!(registry, cid, fil_actor_miner_state::v16); + register_miner_common_method_v16_onwards!(registry, cid, fil_actor_miner_state::v16); - use fil_actor_miner_state::v16::{MaxTerminationFeeParams, Method}; + use fil_actor_miner_state::v16::{ + ExtendSectorExpirationParams, Method, ProveCommitAggregateParams, ProveReplicaUpdatesParams, + }; register_actor_methods!( registry, cid, - [(Method::MaxTerminationFeeExported, MaxTerminationFeeParams),] + [ + (Method::ExtendSectorExpiration, ExtendSectorExpirationParams), + (Method::ProveCommitAggregate, ProveCommitAggregateParams), + (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams), + ] ); +} - register_actor_methods!(registry, cid, [(Method::InitialPledgeExported, empty)]); +fn register_miner_version_17(registry: &mut MethodRegistry, cid: Cid) { + register_miner_common_methods_v10_onwards!(registry, cid, fil_actor_miner_state::v17); + register_miner_common_method_v14_onwards!(registry, cid, fil_actor_miner_state::v17); + register_miner_common_method_v16_onwards!(registry, cid, fil_actor_miner_state::v17); } pub(crate) fn register_miner_actor_methods( @@ -335,5 +406,6 @@ pub(crate) fn register_miner_actor_methods( ActorVersion::V14 => register_miner_versions_14(registry, cid), ActorVersion::V15 => register_miner_version_15(registry, cid), ActorVersion::V16 => register_miner_version_16(registry, cid), + ActorVersion::V17 => register_miner_version_17(registry, cid), } } diff --git a/src/rpc/registry/actors/multisig.rs b/src/rpc/registry/actors/multisig.rs index cac6cc0b1d06..7e56c1170dae 100644 --- a/src/rpc/registry/actors/multisig.rs +++ b/src/rpc/registry/actors/multisig.rs @@ -102,5 +102,8 @@ pub(crate) fn register_actor_methods( ActorVersion::V16 => { register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v16) } + ActorVersion::V17 => { + register_multisig_v9_plus!(registry, cid, fil_actor_multisig_state::v17) + } } } diff --git a/src/rpc/registry/actors/payment_channel.rs b/src/rpc/registry/actors/payment_channel.rs index afed7c8e2249..9d49c0ce4604 100644 --- a/src/rpc/registry/actors/payment_channel.rs +++ b/src/rpc/registry/actors/payment_channel.rs @@ -63,5 +63,8 @@ pub(crate) fn register_actor_methods( ActorVersion::V16 => { register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v16) } + ActorVersion::V17 => { + register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v17) + } } } diff --git a/src/rpc/registry/actors/power.rs b/src/rpc/registry/actors/power.rs index a3b64228f407..3e2046b15951 100644 --- a/src/rpc/registry/actors/power.rs +++ b/src/rpc/registry/actors/power.rs @@ -98,19 +98,43 @@ macro_rules! register_power_version_16 { ] ); - // Register methods without parameters + // Register methods with empty params + register_actor_methods!( + $registry, + $code_cid, + [(Method::NetworkRawPowerExported, empty),] + ); + }}; +} + +macro_rules! register_power_version_17 { + ($registry:expr, $code_cid:expr, $state_version:path) => {{ + use $state_version::{ + CreateMinerParams, EnrollCronEventParams, Method, MinerPowerParams, + MinerRawPowerParams, UpdateClaimedPowerParams, UpdatePledgeTotalParams, + }; + + // Register methods with parameters register_actor_methods!( $registry, $code_cid, [ - (Method::Constructor, empty), - (Method::OnEpochTickEnd, empty), - (Method::CurrentTotalPower, empty), - (Method::NetworkRawPowerExported, empty), - (Method::MinerCountExported, empty), - (Method::MinerConsensusCountExported, empty), + (Method::CreateMiner, CreateMinerParams), + (Method::UpdateClaimedPower, UpdateClaimedPowerParams), + (Method::EnrollCronEvent, EnrollCronEventParams), + (Method::UpdatePledgeTotal, UpdatePledgeTotalParams), + (Method::CreateMinerExported, CreateMinerParams), + (Method::MinerRawPowerExported, MinerRawPowerParams), + (Method::MinerPowerExported, MinerPowerParams), ] ); + + // Register methods with empty params + register_actor_methods!( + $registry, + $code_cid, + [(Method::NetworkRawPowerExported, empty),] + ); }}; } @@ -145,5 +169,6 @@ pub(crate) fn register_actor_methods( register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v15) } ActorVersion::V16 => register_power_version_16!(registry, cid, fil_actor_power_state::v16), + ActorVersion::V17 => register_power_version_17!(registry, cid, fil_actor_power_state::v17), } } diff --git a/src/rpc/registry/actors/reward.rs b/src/rpc/registry/actors/reward.rs index 23086077d730..bc9f6f41b69b 100644 --- a/src/rpc/registry/actors/reward.rs +++ b/src/rpc/registry/actors/reward.rs @@ -85,5 +85,8 @@ pub(crate) fn register_actor_methods( ActorVersion::V16 => { register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v16) } + ActorVersion::V17 => { + register_reward_version_11_to_16!(registry, cid, fil_actor_reward_state::v17) + } } } diff --git a/src/rpc/registry/actors/system.rs b/src/rpc/registry/actors/system.rs index 044c003dae8b..e6573d17fc1c 100644 --- a/src/rpc/registry/actors/system.rs +++ b/src/rpc/registry/actors/system.rs @@ -35,5 +35,6 @@ pub(crate) fn register_actor_methods( ActorVersion::V14 => register_system_version!(registry, cid, fil_actor_system_state::v14), ActorVersion::V15 => register_system_version!(registry, cid, fil_actor_system_state::v15), ActorVersion::V16 => register_system_version!(registry, cid, fil_actor_system_state::v16), + ActorVersion::V17 => register_system_version!(registry, cid, fil_actor_system_state::v17), } } diff --git a/src/rpc/registry/actors/verified_reg.rs b/src/rpc/registry/actors/verified_reg.rs index 86d69bb77e7a..ee71ed12a681 100644 --- a/src/rpc/registry/actors/verified_reg.rs +++ b/src/rpc/registry/actors/verified_reg.rs @@ -261,5 +261,8 @@ pub(crate) fn register_actor_methods( ActorVersion::V16 => { register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v16, v16) } + ActorVersion::V17 => { + register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v17, v17) + } } } From bddc9dc38f0def572908b6b72fd4074d8cb80937 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 10 Sep 2025 14:39:33 +0530 Subject: [PATCH 09/18] linter fix --- src/rpc/registry/methods_reg.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rpc/registry/methods_reg.rs b/src/rpc/registry/methods_reg.rs index f457ebd7c763..ff90f37bd0ae 100644 --- a/src/rpc/registry/methods_reg.rs +++ b/src/rpc/registry/methods_reg.rs @@ -8,11 +8,10 @@ use crate::shim::message::MethodNum; use ahash::{HashMap, HashMapExt}; use anyhow::{Context, Result, bail}; use cid::Cid; -use fil_actors_shared::actor_versions::ActorVersion; +use fil_actors_shared::v11::runtime::builtins::Type; use serde::de::DeserializeOwned; use serde_json::Value; use std::sync::LazyLock; -use fil_actors_shared::v11::runtime::builtins::Type; // Global registry for method parameter deserialization static METHOD_REGISTRY: LazyLock = @@ -157,6 +156,7 @@ mod test { use super::*; use crate::lotus_json::HasLotusJson; use crate::utils::multihash::MultihashCode; + use fil_actors_shared::actor_versions::ActorVersion; use fvm_ipld_encoding::{DAG_CBOR, to_vec}; use multihash_derive::MultihashDigest; use serde::{Deserialize, Serialize}; From 81fa57d0940a211e5a57972dd91c7d4787f43eaa Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 10 Sep 2025 14:50:59 +0530 Subject: [PATCH 10/18] fix merge issues --- src/lotus_json/actors/params/market_params.rs | 18 +++---- src/rpc/registry/actors/account.rs | 3 +- src/rpc/registry/actors/init.rs | 20 ++++---- src/rpc/registry/actors/power.rs | 48 ++++++------------- 4 files changed, 34 insertions(+), 55 deletions(-) diff --git a/src/lotus_json/actors/params/market_params.rs b/src/lotus_json/actors/params/market_params.rs index b6311ae9e6db..ddd78cedab62 100644 --- a/src/lotus_json/actors/params/market_params.rs +++ b/src/lotus_json/actors/params/market_params.rs @@ -210,18 +210,18 @@ macro_rules! impl_lotus_json_for_deal_proposal { "ClientCollateral": "3000" }), // Create the corresponding object using from_lotus_json to ensure compatibility - Self::from_lotus_json(crate::lotus_json::actor_states::methods::market_actor_params::DealProposalLotusJson { + Self::from_lotus_json(DealProposalLotusJson { piece_cid: test_cid, piece_size: 1024u64.into(), verified_deal: false, - client: crate::shim::address::Address::new_id(1234).into(), - provider: crate::shim::address::Address::new_id(5678).into(), - label: crate::lotus_json::actor_states::methods::market_actor_params::LabelLotusJson::String("test".to_string()), + client: Address::new_id(1234).into(), + provider: Address::new_id(5678).into(), + label: LabelLotusJson::String("test".to_string()), start_epoch: 100, end_epoch: 200, - storage_price_per_epoch: crate::shim::econ::TokenAmount::from_atto(1000u64).into(), - provider_collateral: crate::shim::econ::TokenAmount::from_atto(2000u64).into(), - client_collateral: crate::shim::econ::TokenAmount::from_atto(3000u64).into(), + storage_price_per_epoch: TokenAmount::from_atto(1000u64).into(), + provider_collateral: TokenAmount::from_atto(2000u64).into(), + client_collateral: TokenAmount::from_atto(3000u64).into(), }) )] } @@ -350,13 +350,13 @@ macro_rules! impl_lotus_json_for_client_deal_proposal { }), // Create object using from_lotus_json to ensure compatibility Self::from_lotus_json($lotus_json_type { - proposal: crate::lotus_json::actor_states::methods::market_actor_params::DealProposalLotusJson { + proposal: DealProposalLotusJson { piece_cid: test_cid, piece_size: 1024u64.into(), verified_deal: false, client: crate::shim::address::Address::new_id(1234).into(), provider: crate::shim::address::Address::new_id(5678).into(), - label: crate::lotus_json::actor_states::methods::market_actor_params::LabelLotusJson::String("test".to_string()), + label: LabelLotusJson::String("test".to_string()), start_epoch: 100, end_epoch: 200, storage_price_per_epoch: crate::shim::econ::TokenAmount::from_atto(1000u64).into(), diff --git a/src/rpc/registry/actors/account.rs b/src/rpc/registry/actors/account.rs index fcd9500a09fa..0c0b57afdea8 100644 --- a/src/rpc/registry/actors/account.rs +++ b/src/rpc/registry/actors/account.rs @@ -53,9 +53,8 @@ fn register_account_version_10(registry: &mut MethodRegistry, cid: Cid) { register_actor_methods!(registry, cid, [(Method::PubkeyAddress, empty)]); } -/// Macro to generate account method registration for different versions macro_rules! register_account_version_11_onwards { - // For versions that use types module (v15, v16) + // For versions that use types module (v15 onwards) ($registry:expr, $code_cid:expr, $state_version:path, with_types) => {{ use $state_version::{Method, types}; diff --git a/src/rpc/registry/actors/init.rs b/src/rpc/registry/actors/init.rs index e0e2f0785cb7..17cba4de35d6 100644 --- a/src/rpc/registry/actors/init.rs +++ b/src/rpc/registry/actors/init.rs @@ -22,8 +22,8 @@ macro_rules! register_init_versions_8_to_9 { }}; } -// Macro for versions 10-16 that have Exec4 -macro_rules! register_init_versions_10_to_16 { +// Macro for versions 10 onwards that have Exec4 +macro_rules! register_init_versions_10_onwards { ($registry:expr, $code_cid:expr, $state_version:path) => {{ use $state_version::{ConstructorParams, Exec4Params, ExecParams, Method}; @@ -52,28 +52,28 @@ pub(crate) fn register_actor_methods( register_init_versions_8_to_9!(registry, cid, fil_actor_init_state::v9) } ActorVersion::V10 => { - register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v10) + register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v10) } ActorVersion::V11 => { - register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v11) + register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v11) } ActorVersion::V12 => { - register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v12) + register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v12) } ActorVersion::V13 => { - register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v13) + register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v13) } ActorVersion::V14 => { - register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v14) + register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v14) } ActorVersion::V15 => { - register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v15) + register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v15) } ActorVersion::V16 => { - register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v16) + register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v16) } ActorVersion::V17 => { - register_init_versions_10_to_16!(registry, cid, fil_actor_init_state::v17) + register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v17) } } } diff --git a/src/rpc/registry/actors/power.rs b/src/rpc/registry/actors/power.rs index 3e2046b15951..461f5e8c34bf 100644 --- a/src/rpc/registry/actors/power.rs +++ b/src/rpc/registry/actors/power.rs @@ -76,7 +76,7 @@ macro_rules! register_power_versions_10_to_15 { } // Macro for version 16 that has all methods -macro_rules! register_power_version_16 { +macro_rules! register_power_version_16_onwards { ($registry:expr, $code_cid:expr, $state_version:path) => {{ use $state_version::{ CreateMinerParams, EnrollCronEventParams, Method, MinerPowerParams, @@ -98,43 +98,19 @@ macro_rules! register_power_version_16 { ] ); - // Register methods with empty params - register_actor_methods!( - $registry, - $code_cid, - [(Method::NetworkRawPowerExported, empty),] - ); - }}; -} - -macro_rules! register_power_version_17 { - ($registry:expr, $code_cid:expr, $state_version:path) => {{ - use $state_version::{ - CreateMinerParams, EnrollCronEventParams, Method, MinerPowerParams, - MinerRawPowerParams, UpdateClaimedPowerParams, UpdatePledgeTotalParams, - }; - - // Register methods with parameters + // Register methods without parameters register_actor_methods!( $registry, $code_cid, [ - (Method::CreateMiner, CreateMinerParams), - (Method::UpdateClaimedPower, UpdateClaimedPowerParams), - (Method::EnrollCronEvent, EnrollCronEventParams), - (Method::UpdatePledgeTotal, UpdatePledgeTotalParams), - (Method::CreateMinerExported, CreateMinerParams), - (Method::MinerRawPowerExported, MinerRawPowerParams), - (Method::MinerPowerExported, MinerPowerParams), + (Method::Constructor, empty), + (Method::OnEpochTickEnd, empty), + (Method::CurrentTotalPower, empty), + (Method::NetworkRawPowerExported, empty), + (Method::MinerCountExported, empty), + (Method::MinerConsensusCountExported, empty), ] ); - - // Register methods with empty params - register_actor_methods!( - $registry, - $code_cid, - [(Method::NetworkRawPowerExported, empty),] - ); }}; } @@ -168,7 +144,11 @@ pub(crate) fn register_actor_methods( ActorVersion::V15 => { register_power_versions_10_to_15!(registry, cid, fil_actor_power_state::v15) } - ActorVersion::V16 => register_power_version_16!(registry, cid, fil_actor_power_state::v16), - ActorVersion::V17 => register_power_version_17!(registry, cid, fil_actor_power_state::v17), + ActorVersion::V16 => { + register_power_version_16_onwards!(registry, cid, fil_actor_power_state::v16) + } + ActorVersion::V17 => { + register_power_version_16_onwards!(registry, cid, fil_actor_power_state::v17) + } } } From 712ef55e62eebebab5d6f54d21fb2154ccc00529 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 10 Sep 2025 16:00:10 +0530 Subject: [PATCH 11/18] move the state decode params tests into seperate module --- src/tool/subcommands/api_cmd.rs | 1 + .../subcommands/api_cmd/api_compare_tests.rs | 1768 +---------------- .../state_decode_params/mod.rs | 52 + .../state_decode_params_tests/account.rs | 32 + .../api_cmd/state_decode_params_tests/cron.rs | 31 + .../state_decode_params_tests/datacap.rs | 171 ++ .../api_cmd/state_decode_params_tests/eam.rs | 47 + .../state_decode_params_tests/ethaccount.rs | 14 + .../api_cmd/state_decode_params_tests/evm.rs | 74 + .../api_cmd/state_decode_params_tests/init.rs | 43 + .../state_decode_params_tests/market.rs | 290 +++ .../state_decode_params_tests/miner.rs | 564 ++++++ .../api_cmd/state_decode_params_tests/mod.rs | 57 + .../state_decode_params_tests/multisig.rs | 120 ++ .../state_decode_params_tests/paych.rs | 64 + .../state_decode_params_tests/power.rs | 120 ++ .../state_decode_params_tests/reward.rs | 52 + .../state_decode_params_tests/system.rs | 14 + .../state_decode_params_tests/verified_reg.rs | 198 ++ 19 files changed, 1948 insertions(+), 1764 deletions(-) create mode 100644 src/tool/subcommands/api_cmd/api_compare_tests/state_decode_params/mod.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/cron.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/datacap.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/eam.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/market.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/mod.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/reward.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/system.rs create mode 100644 src/tool/subcommands/api_cmd/state_decode_params_tests/verified_reg.rs diff --git a/src/tool/subcommands/api_cmd.rs b/src/tool/subcommands/api_cmd.rs index fdebd3c4bfe9..7e193120eece 100644 --- a/src/tool/subcommands/api_cmd.rs +++ b/src/tool/subcommands/api_cmd.rs @@ -4,6 +4,7 @@ mod api_compare_tests; mod generate_test_snapshot; mod report; +mod state_decode_params_tests; mod stateful_tests; mod test_snapshot; diff --git a/src/tool/subcommands/api_cmd/api_compare_tests.rs b/src/tool/subcommands/api_cmd/api_compare_tests.rs index 31a39d1fcfee..99f93c90f89e 100644 --- a/src/tool/subcommands/api_cmd/api_compare_tests.rs +++ b/src/tool/subcommands/api_cmd/api_compare_tests.rs @@ -24,7 +24,7 @@ use crate::rpc::{Permission, prelude::*}; use crate::shim::actors::MarketActorStateLoad as _; use crate::shim::actors::market; use crate::shim::executor::Receipt; -use crate::shim::sector::{SectorSize, StoragePower}; +use crate::shim::sector::SectorSize; use crate::shim::{ address::{Address, Protocol}, crypto::Signature, @@ -36,10 +36,10 @@ use crate::state_manager::StateManager; use crate::tool::offline_server::server::handle_chain_config; use crate::tool::subcommands::api_cmd::NetworkChain; use crate::tool::subcommands::api_cmd::report::ReportBuilder; +use crate::tool::subcommands::api_cmd::state_decode_params_tests::create_all_state_decode_params_tests; use crate::utils::proofs_api::{self, ensure_proof_params_downloaded}; use crate::{Config, rpc}; use ahash::HashMap; -use base64::{Engine as _, prelude::BASE64_STANDARD}; use bls_signatures::Serialize as _; use chrono::Utc; use cid::Cid; @@ -48,13 +48,10 @@ use fil_actors_shared::v10::runtime::DomainSeparationTag; use futures::stream::FuturesUnordered; use futures::stream::StreamExt as _; use fvm_ipld_blockstore::Blockstore; -use fvm_ipld_encoding::{BytesDe, RawBytes, to_vec}; -use fvm_shared4::randomness::Randomness; use ipld_core::ipld::Ipld; use itertools::Itertools as _; use jsonrpsee::types::ErrorCode; use libp2p::PeerId; -use num_bigint::BigInt; use num_traits::Signed; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; @@ -330,7 +327,7 @@ impl RpcTest { } /// Check that an endpoint exists and that Forest returns exactly the same /// JSON as Lotus. - fn identity(request: rpc::Request) -> RpcTest { + pub(crate) fn identity(request: rpc::Request) -> RpcTest { Self::validate(request, |forest, lotus| forest == lotus) } @@ -855,7 +852,7 @@ fn state_tests_with_tipset( ]; tests.extend(read_state_api_tests(tipset)?); - tests.extend(state_decode_params_api_tests(tipset)?); + tests.extend(create_all_state_decode_params_tests(tipset)?); for &pending_deal_id in StateGetAllocationIdForPendingDeal::get_allocations_for_pending_deals(store, tipset)? @@ -1854,1763 +1851,6 @@ fn eth_tests_with_tipset(store: &Arc, shared_tipset: &Tipset tests } -fn state_decode_params_api_tests(tipset: &Tipset) -> anyhow::Result> { - // // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/396 - // // Enable this test when lotus supports it in go-state-types. - // let cron_constructor_params = fil_actor_cron_state::v16::ConstructorParams { - // entries: vec![fil_actor_cron_state::v16::Entry { - // receiver: Address::new_id(1000).into(), - // method_num: fil_actor_cron_state::v16::Method::EpochTick as u64, - // }], - // }; - let mut tests = vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::SYSTEM_ACTOR, - fil_actor_system_state::v16::Method::Constructor as u64, - vec![], - tipset.key().into(), - ))?), - // // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/396 - // Enable this test when lotus supports it in go-state-types. - // RpcTest::identity(StateDecodeParams::request(( - // Address::CRON_ACTOR, - // fil_actor_cron_state::v16::Method::Constructor as u64, - // to_vec(&cron_constructor_params)?, - // tipset.key().into(), - // ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::CRON_ACTOR, - fil_actor_cron_state::v16::Method::EpochTick as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_delegated(Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR.id()?, &[0; 20]) - .unwrap(), - fil_actor_ethaccount_state::v16::Method::Constructor as u64, - vec![], - tipset.key().into(), - ))?), - ]; - - tests.extend(miner_actor_state_decode_params_tests(tipset)?); - tests.extend(account_actor_state_decode_params_tests(tipset)?); - tests.extend(init_actor_state_decode_params_tests(tipset)?); - tests.extend(evm_actor_state_decode_params_tests(tipset)?); - tests.extend(reward_actor_state_decode_params_tests(tipset)?); - tests.extend(power_actor_state_decode_params_tests(tipset)?); - tests.extend(datacap_actor_state_decode_params_tests(tipset)?); - tests.extend(multisig_actor_state_decode_params_tests(tipset)?); - tests.extend(verified_reg_actor_state_decode_params_tests(tipset)?); - tests.extend(market_actor_state_decode_params_tests(tipset)?); - tests.extend(paych_actor_state_decode_params_tests(tipset)?); - tests.extend(eam_actor_state_decode_params_tests(tipset)?); - - Ok(tests) -} - -fn paych_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - // payment channel actor address `t066116` - // https://calibration.filscan.io/en/address/t066116/ - let paych_address = Address::new_id(66116); - - let constructor_params = fil_actor_paych_state::v16::ConstructorParams { - from: Address::new_id(1234).into(), - to: Address::new_id(8457).into(), - }; - - let update_channel_state = fil_actor_paych_state::v16::UpdateChannelStateParams { - sv: fil_actor_paych_state::v16::SignedVoucher { - channel_addr: Address::new_id(1000).into(), - time_lock_min: 21, - time_lock_max: 234, - secret_pre_image: vec![], - extra: Some(fil_actor_paych_state::v16::ModVerifyParams { - actor: Address::new_id(1234).into(), - method: 223, - data: Default::default(), - }), - lane: 234, - nonce: 231, - amount: Default::default(), - min_settle_height: 0, - merges: vec![], - signature: None, - }, - secret: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data - }; - - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - paych_address, - fil_actor_paych_state::v16::Method::Constructor as u64, - to_vec(&constructor_params).unwrap(), - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - paych_address, - fil_actor_paych_state::v16::Method::UpdateChannelState as u64, - to_vec(&update_channel_state).unwrap(), - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - paych_address, - fil_actor_paych_state::v16::Method::Settle as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - paych_address, - fil_actor_paych_state::v16::Method::Collect as u64, - vec![], - tipset.key().into(), - ))?), - ]) -} - -fn eam_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let create_params = fil_actor_eam_state::v16::CreateParams { - initcode: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data - nonce: 2, - }; - - let create_params2 = fil_actor_eam_state::v16::Create2Params { - initcode: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data - salt: [0; 32], - }; - - let create_external_params = - fil_actor_eam_state::v16::CreateExternalParams(vec![0x11, 0x22, 0x33, 0x44, 0x55]); - - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, - fil_actor_eam_state::v16::Method::Constructor as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, - fil_actor_eam_state::v16::Method::Create as u64, - to_vec(&create_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, - fil_actor_eam_state::v16::Method::Create2 as u64, - to_vec(&create_params2)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, - fil_actor_eam_state::v16::Method::CreateExternal as u64, - to_vec(&create_external_params)?, - tipset.key().into(), - ))?), - ]) -} - -fn evm_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let evm_constructor_params = fil_actor_evm_state::v16::ConstructorParams { - creator: fil_actor_evm_state::evm_shared::v16::address::EthAddress([0; 20]), - initcode: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode - }; - - let evm_invoke_contract_params = fil_actor_evm_state::v16::InvokeContractParams { - input_data: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy input data - }; - - let evm_delegate_call_params = fil_actor_evm_state::v16::DelegateCallParams { - code: Cid::default(), - input: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy input data - caller: fil_actor_evm_state::evm_shared::v16::address::EthAddress([0; 20]), - value: TokenAmount::default().into(), - }; - - let evm_get_storage_at_params = GetStorageAtParams::new(vec![0xa])?; - - let tests = vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::Constructor as u64, - to_vec(&evm_constructor_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::Resurrect as u64, - to_vec(&evm_constructor_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::GetBytecode as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::GetBytecodeHash as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::InvokeContract as u64, - to_vec(&evm_invoke_contract_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::InvokeContractDelegate as u64, - to_vec(&evm_delegate_call_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::GetStorageAt as u64, - evm_get_storage_at_params.serialize_params()?, - tipset.key().into(), - ))?), - ]; - - Ok(tests) -} - -fn account_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let account_constructor_params = fil_actor_account_state::v16::types::ConstructorParams { - address: Address::new_id(1234).into(), - }; - - let account_auth_params = fil_actor_account_state::v16::types::AuthenticateMessageParams { - signature: vec![0x00; 32], // dummy signature - message: b"test message".to_vec(), - }; - - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - ACCOUNT_ADDRESS, - 1, - to_vec(&account_constructor_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - ACCOUNT_ADDRESS, - 2643134072, // frc42_dispatch::method_hash!("AuthenticateMessage"), - to_vec(&account_auth_params)?, - tipset.key().into(), - ))?), - ]) -} - -fn init_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let init_constructor_params = fil_actor_init_state::v16::ConstructorParams { - network_name: "calibnet".to_string(), - }; - - let init_exec4_params = fil_actor_init_state::v16::Exec4Params { - code_cid: Cid::default(), - constructor_params: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode - subaddress: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode - }; - - let init_exec_params = fil_actor_init_state::v16::ExecParams { - code_cid: Cid::default(), - constructor_params: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode - }; - - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::INIT_ACTOR, - 1, - to_vec(&init_constructor_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::INIT_ACTOR, - 2, - to_vec(&init_exec_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::INIT_ACTOR, - 3, - to_vec(&init_exec4_params)?, - tipset.key().into(), - ))?), - ]) -} - -fn reward_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let reward_constructor_params = fil_actor_reward_state::v16::ConstructorParams { - power: Some(Default::default()), - }; - - let reward_award_block_reward_params = fil_actor_reward_state::v16::AwardBlockRewardParams { - miner: Address::new_id(1000).into(), - penalty: Default::default(), - gas_reward: Default::default(), - win_count: 0, - }; - - let reward_update_network_params = fil_actor_reward_state::v16::UpdateNetworkKPIParams { - curr_realized_power: Option::from(fvm_shared4::bigint::bigint_ser::BigIntDe(BigInt::from( - 111, - ))), - }; - - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::REWARD_ACTOR, - fil_actor_reward_state::v16::Method::Constructor as u64, - to_vec(&reward_constructor_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::REWARD_ACTOR, - fil_actor_reward_state::v16::Method::AwardBlockReward as u64, - to_vec(&reward_award_block_reward_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::REWARD_ACTOR, - fil_actor_reward_state::v16::Method::UpdateNetworkKPI as u64, - to_vec(&reward_update_network_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::REWARD_ACTOR, - fil_actor_reward_state::v16::Method::ThisEpochReward as u64, - vec![], - tipset.key().into(), - ))?), - ]) -} - -fn power_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let power_create_miner_params = fil_actor_power_state::v16::CreateMinerParams { - owner: Address::new_id(1000).into(), - worker: Address::new_id(1001).into(), - window_post_proof_type: fvm_shared4::sector::RegisteredPoStProof::StackedDRGWinning2KiBV1, - peer: b"miner".to_vec(), - multiaddrs: Default::default(), - }; - - // not supported by the lotus - // let _power_miner_power_exp_params = fil_actor_power_state::v16::MinerPowerParams{ - // miner: 1234, - // }; - - let power_update_claim_params = fil_actor_power_state::v16::UpdateClaimedPowerParams { - raw_byte_delta: StoragePower::from(1024u64), - quality_adjusted_delta: StoragePower::from(2048u64), - }; - - let power_enroll_event_params = fil_actor_power_state::v16::EnrollCronEventParams { - event_epoch: 123, - payload: Default::default(), - }; - - let power_update_pledge_ttl_params = fil_actor_power_state::v16::UpdatePledgeTotalParams { - pledge_delta: Default::default(), - }; - - let power_miner_raw_params = fil_actor_power_state::v16::MinerRawPowerParams { miner: 1234 }; - - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::CreateMiner as u64, - to_vec(&power_create_miner_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::UpdateClaimedPower as u64, - to_vec(&power_update_claim_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::EnrollCronEvent as u64, - to_vec(&power_enroll_event_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::UpdatePledgeTotal as u64, - to_vec(&power_update_pledge_ttl_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::CreateMinerExported as u64, - to_vec(&power_create_miner_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::MinerRawPowerExported as u64, - to_vec(&power_miner_raw_params)?, - tipset.key().into(), - ))?), - // Not supported by the lotus, - // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/401 - // RpcTest::identity(StateDecodeParams::request(( - // Address::POWER_ACTOR, - // Method::MinerPowerExported as u64, - // to_vec(&power_miner_power_exp_params)?, - // tipset.key().into(), - // ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::Constructor as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::OnEpochTickEnd as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::CurrentTotalPower as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::NetworkRawPowerExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::MinerCountExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::MinerConsensusCountExported as u64, - vec![], - tipset.key().into(), - ))?), - ]) -} - -fn datacap_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let datacap_constructor_params = fil_actor_datacap_state::v16::ConstructorParams { - governor: Address::new_id(3000).into(), - }; - - let datacap_mint_params = fil_actor_datacap_state::v16::MintParams { - to: Address::new_id(3001).into(), - amount: TokenAmount::default().into(), - operators: vec![Address::new_id(3002).into(), Address::new_id(3003).into()], - }; - - let datacap_destroy_params = fil_actor_datacap_state::v16::DestroyParams { - owner: Address::new_id(3004).into(), - amount: TokenAmount::default().into(), - }; - - let datacap_balance_params = fil_actor_datacap_state::v16::BalanceParams { - address: Address::new_id(3005).into(), - }; - - let datacap_transfer_params = fil_actors_shared::frc46_token::token::types::TransferParams { - to: Address::new_id(3006).into(), - amount: TokenAmount::default().into(), - operator_data: fvm_ipld_encoding::RawBytes::new(b"transfer test data".to_vec()), - }; - - let datacap_transfer_from_params = - fil_actors_shared::frc46_token::token::types::TransferFromParams { - from: Address::new_id(3007).into(), - to: Address::new_id(3008).into(), - amount: TokenAmount::default().into(), - operator_data: fvm_ipld_encoding::RawBytes::new(b"transfer_from test data".to_vec()), - }; - - let datacap_increase_allowance_params = - fil_actors_shared::frc46_token::token::types::IncreaseAllowanceParams { - operator: Address::new_id(3009).into(), - increase: TokenAmount::default().into(), - }; - - let datacap_decrease_allowance_params = - fil_actors_shared::frc46_token::token::types::DecreaseAllowanceParams { - operator: Address::new_id(3010).into(), - decrease: TokenAmount::default().into(), - }; - - let datacap_revoke_allowance_params = - fil_actors_shared::frc46_token::token::types::RevokeAllowanceParams { - operator: Address::new_id(3011).into(), - }; - - let datacap_burn_params = fil_actors_shared::frc46_token::token::types::BurnParams { - amount: TokenAmount::default().into(), - }; - - let datacap_burn_from_params = fil_actors_shared::frc46_token::token::types::BurnFromParams { - owner: Address::new_id(3012).into(), - amount: TokenAmount::default().into(), - }; - - let datacap_get_allowance_params = - fil_actors_shared::frc46_token::token::types::GetAllowanceParams { - owner: Address::new_id(3013).into(), - operator: Address::new_id(3014).into(), - }; - - let tests = vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::Constructor as u64, - to_vec(&datacap_constructor_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::MintExported as u64, - to_vec(&datacap_mint_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::DestroyExported as u64, - to_vec(&datacap_destroy_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::NameExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::SymbolExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::TotalSupplyExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::BalanceExported as u64, - to_vec(&datacap_balance_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::GranularityExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::TransferExported as u64, - to_vec(&datacap_transfer_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::TransferFromExported as u64, - to_vec(&datacap_transfer_from_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::IncreaseAllowanceExported as u64, - to_vec(&datacap_increase_allowance_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::DecreaseAllowanceExported as u64, - to_vec(&datacap_decrease_allowance_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::RevokeAllowanceExported as u64, - to_vec(&datacap_revoke_allowance_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::BurnExported as u64, - to_vec(&datacap_burn_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::BurnFromExported as u64, - to_vec(&datacap_burn_from_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::AllowanceExported as u64, - to_vec(&datacap_get_allowance_params)?, - tipset.key().into(), - ))?), - ]; - - Ok(tests) -} - -fn miner_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let miner_constructor_params = fil_actor_miner_state::v16::MinerConstructorParams { - owner: Address::new_id(1000).into(), - worker: Address::new_id(1001).into(), - control_addresses: vec![Address::new_id(1002).into(), Address::new_id(1003).into()], - window_post_proof_type: fvm_shared4::sector::RegisteredPoStProof::StackedDRGWindow32GiBV1P1, - peer_id: b"miner".to_vec(), - multi_addresses: Default::default(), - }; - - let miner_change_worker_params = fil_actor_miner_state::v16::ChangeWorkerAddressParams { - new_worker: Address::new_id(2000).into(), - new_control_addresses: vec![Address::new_id(2001).into()], - }; - - let miner_change_peer_id_params = fil_actor_miner_state::v16::ChangePeerIDParams { - new_id: b"new_peer".to_vec(), - }; - - let miner_change_multiaddrs_params = fil_actor_miner_state::v16::ChangeMultiaddrsParams { - new_multi_addrs: vec![BytesDe(vec![1, 2, 3])], - }; - - let miner_change_owner_params = fil_actor_miner_state::v16::ChangeOwnerAddressParams { - new_owner: Address::new_id(3000).into(), - }; - - let miner_change_beneficiary_params = fil_actor_miner_state::v16::ChangeBeneficiaryParams { - new_beneficiary: Address::new_id(4000).into(), - new_quota: TokenAmount::from_atto(1000000000000000000u64).into(), - new_expiration: 1000, - }; - - let miner_withdraw_balance_params = fil_actor_miner_state::v16::WithdrawBalanceParams { - amount_requested: TokenAmount::from_atto(500000000000000000u64).into(), - }; - - let miner_submit_windowed_post_params = fil_actor_miner_state::v16::SubmitWindowedPoStParams { - deadline: 0, - partitions: vec![fil_actor_miner_state::v16::PoStPartition { - index: 0, - skipped: Default::default(), - }], - proofs: vec![], - chain_commit_epoch: 0, - chain_commit_rand: Randomness(vec![1, 22, 43]), - }; - - let miner_extend_sector_expiration_params = - fil_actor_miner_state::v16::ExtendSectorExpirationParams { - extensions: vec![fil_actor_miner_state::v16::ExpirationExtension { - deadline: 12, - partition: 123, - sectors: Default::default(), - new_expiration: 1000, - }], - }; - - let miner_terminate_sectors_params = fil_actor_miner_state::v16::TerminateSectorsParams { - terminations: vec![fil_actor_miner_state::v16::TerminationDeclaration { - deadline: 0, - partition: 0, - sectors: Default::default(), - }], - }; - - let miner_declare_faults_params = fil_actor_miner_state::v16::DeclareFaultsParams { - faults: vec![fil_actor_miner_state::v16::FaultDeclaration { - deadline: 0, - partition: 0, - sectors: Default::default(), - }], - }; - - let miner_declare_faults_recovered_params = - fil_actor_miner_state::v16::DeclareFaultsRecoveredParams { - recoveries: vec![fil_actor_miner_state::v16::RecoveryDeclaration { - deadline: 0, - partition: 0, - sectors: Default::default(), - }], - }; - - let miner_deferred_cron_event_params = fil_actor_miner_state::v16::DeferredCronEventParams { - event_payload: vec![], - reward_smoothed: fil_actors_shared::v16::reward::FilterEstimate { - position: Default::default(), - velocity: Default::default(), - }, - quality_adj_power_smoothed: fil_actors_shared::v16::reward::FilterEstimate { - position: Default::default(), - velocity: Default::default(), - }, - }; - - let miner_check_sector_proven_params = - fil_actor_miner_state::v16::CheckSectorProvenParams { sector_number: 0 }; - - let miner_apply_reward_params = fil_actor_miner_state::v16::ApplyRewardParams { - reward: TokenAmount::from_atto(1000000000000000000u64).into(), - penalty: TokenAmount::from_atto(0u64).into(), - }; - - let miner_report_consensus_fault_params = - fil_actor_miner_state::v16::ReportConsensusFaultParams { - header1: vec![], - header2: vec![], - header_extra: vec![], - }; - - let miner_compact_partitions_params = fil_actor_miner_state::v16::CompactPartitionsParams { - deadline: 0, - partitions: Default::default(), - }; - - let miner_compact_sector_numbers_params = - fil_actor_miner_state::v16::CompactSectorNumbersParams { - mask_sector_numbers: Default::default(), - }; - - let miner_dispute_windowed_post_params = - fil_actor_miner_state::v16::DisputeWindowedPoStParams { - deadline: 0, - post_index: 0, - }; - - let miner_prove_commit_aggregate_params = - fil_actor_miner_state::v16::ProveCommitAggregateParams { - sector_numbers: Default::default(), - aggregate_proof: RawBytes::new(vec![]), - }; - - let miner_prove_replica_updates_params = - fil_actor_miner_state::v16::ProveReplicaUpdatesParams { - updates: vec![fil_actor_miner_state::v16::ReplicaUpdate { - sector_number: 0, - deadline: 0, - partition: 0, - new_sealed_cid: Cid::default(), - deals: vec![], - update_proof_type: fvm_shared4::sector::RegisteredUpdateProof::StackedDRG2KiBV1, - replica_proof: RawBytes::new(vec![]), - }], - }; - - let miner_pre_commit_sector_batch2_params = - fil_actor_miner_state::v16::PreCommitSectorBatchParams2 { - sectors: vec![fil_actor_miner_state::v16::SectorPreCommitInfo { - seal_proof: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1P1, - sector_number: 0, - sealed_cid: Cid::default(), - seal_rand_epoch: 0, - deal_ids: vec![], - expiration: 1000, - unsealed_cid: fil_actor_miner_state::v16::CompactCommD(None), - }], - }; - - let miner_extend_sector_expiration2_params = - fil_actor_miner_state::v16::ExtendSectorExpiration2Params { - extensions: vec![fil_actor_miner_state::v16::ExpirationExtension2 { - deadline: 0, - partition: 0, - sectors: Default::default(), - sectors_with_claims: vec![], - new_expiration: 1000, - }], - }; - - let miner_is_controlling_address_param = - fil_actor_miner_state::v16::IsControllingAddressParam { - address: Address::new_id(5000).into(), - }; - - let miner_prove_commit_sectors3_params = - fil_actor_miner_state::v16::ProveCommitSectors3Params { - sector_activations: vec![fil_actor_miner_state::v16::SectorActivationManifest { - sector_number: 0, - pieces: vec![fil_actor_miner_state::v16::PieceActivationManifest { - cid: Cid::default(), - size: fvm_shared4::piece::PaddedPieceSize(23), - verified_allocation_key: None, - notify: vec![], - }], - }], - sector_proofs: vec![RawBytes::new(vec![])], - aggregate_proof: RawBytes::new(vec![]), - aggregate_proof_type: None, - require_activation_success: true, - require_notification_success: true, - }; - - let miner_prove_replica_updates3_params = - fil_actor_miner_state::v16::ProveReplicaUpdates3Params { - sector_updates: vec![fil_actor_miner_state::v16::SectorUpdateManifest { - sector: 0, - deadline: 0, - partition: 0, - new_sealed_cid: Cid::default(), - pieces: vec![fil_actor_miner_state::v16::PieceActivationManifest { - cid: Cid::default(), - size: fvm_shared4::piece::PaddedPieceSize(12), - verified_allocation_key: None, - notify: vec![], - }], - }], - sector_proofs: vec![RawBytes::new(vec![])], - aggregate_proof: RawBytes::new(vec![]), - update_proofs_type: fvm_shared4::sector::RegisteredUpdateProof::StackedDRG2KiBV1, - aggregate_proof_type: None, - require_activation_success: true, - require_notification_success: true, - }; - - let miner_prove_commit_sectors_ni_params = - fil_actor_miner_state::v16::ProveCommitSectorsNIParams { - sectors: vec![fil_actor_miner_state::v16::SectorNIActivationInfo { - sealing_number: 12, - sealer_id: 23343, - sealed_cid: Cid::default(), - sector_number: 2343, - seal_rand_epoch: 2343, - expiration: 1000, - }], - aggregate_proof: RawBytes::new(vec![23, 2, 23]), - seal_proof_type: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1P1, - aggregate_proof_type: fvm_shared4::sector::RegisteredAggregateProof::SnarkPackV1, - proving_deadline: 234, - require_activation_success: true, - }; - - let miner_internal_sector_setup_for_preseal_params = - fil_actor_miner_state::v16::InternalSectorSetupForPresealParams { - sectors: vec![0], - reward_smoothed: fil_actors_shared::v16::reward::FilterEstimate { - position: Default::default(), - velocity: Default::default(), - }, - reward_baseline_power: Default::default(), - quality_adj_power_smoothed: fil_actors_shared::v16::reward::FilterEstimate { - position: Default::default(), - velocity: Default::default(), - }, - }; - - // let miner_max_termination_fee_params = fil_actor_miner_state::v16::MaxTerminationFeeParams { - // power: Default::default(), - // initial_pledge: TokenAmount::from_atto(1000000000000000000u64).into(), - // }; - - use fil_actor_miner_state::v16::Method; - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::Constructor as u64, - to_vec(&miner_constructor_params)?, - tipset.key().into(), - ))?), - // Methods without parameters - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ControlAddresses as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangeWorkerAddress as u64, - to_vec(&miner_change_worker_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangePeerID as u64, - to_vec(&miner_change_peer_id_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::SubmitWindowedPoSt as u64, - to_vec(&miner_submit_windowed_post_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ExtendSectorExpiration as u64, - to_vec(&miner_extend_sector_expiration_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::TerminateSectors as u64, - to_vec(&miner_terminate_sectors_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::DeclareFaults as u64, - to_vec(&miner_declare_faults_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::DeclareFaultsRecovered as u64, - to_vec(&miner_declare_faults_recovered_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::OnDeferredCronEvent as u64, - to_vec(&miner_deferred_cron_event_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::CheckSectorProven as u64, - to_vec(&miner_check_sector_proven_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ApplyRewards as u64, - to_vec(&miner_apply_reward_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ReportConsensusFault as u64, - to_vec(&miner_report_consensus_fault_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::WithdrawBalance as u64, - to_vec(&miner_withdraw_balance_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::InternalSectorSetupForPreseal as u64, - to_vec(&miner_internal_sector_setup_for_preseal_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangeMultiaddrs as u64, - to_vec(&miner_change_multiaddrs_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::CompactPartitions as u64, - to_vec(&miner_compact_partitions_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::CompactSectorNumbers as u64, - to_vec(&miner_compact_sector_numbers_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ConfirmChangeWorkerAddress as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::RepayDebt as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangeOwnerAddress as u64, - to_vec(&miner_change_owner_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::DisputeWindowedPoSt as u64, - to_vec(&miner_dispute_windowed_post_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ProveCommitAggregate as u64, - to_vec(&miner_prove_commit_aggregate_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ProveReplicaUpdates as u64, - to_vec(&miner_prove_replica_updates_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::PreCommitSectorBatch2 as u64, - to_vec(&miner_pre_commit_sector_batch2_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangeBeneficiary as u64, - to_vec(&miner_change_beneficiary_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::GetBeneficiary as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ExtendSectorExpiration2 as u64, - to_vec(&miner_extend_sector_expiration2_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ProveCommitSectors3 as u64, - to_vec(&miner_prove_commit_sectors3_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ProveReplicaUpdates3 as u64, - to_vec(&miner_prove_replica_updates3_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ProveCommitSectorsNI as u64, - to_vec(&miner_prove_commit_sectors_ni_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangeWorkerAddressExported as u64, - to_vec(&miner_change_worker_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangePeerIDExported as u64, - to_vec(&miner_change_peer_id_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::WithdrawBalanceExported as u64, - to_vec(&miner_withdraw_balance_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangeMultiaddrsExported as u64, - to_vec(&miner_change_multiaddrs_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ConfirmChangeWorkerAddressExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::RepayDebtExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangeOwnerAddressExported as u64, - to_vec(&miner_change_owner_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ChangeBeneficiaryExported as u64, - to_vec(&miner_change_beneficiary_params)?, - tipset.key().into(), - ))?), - // Not supported by the lotus. - // RpcTest::identity(StateDecodeParams::request(( - // MINER_ADDRESS, - // Method::GetBeneficiaryExported as u64, - // vec![], - // tipset.key().into(), - // ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::GetOwnerExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::IsControllingAddressExported as u64, - to_vec(&miner_is_controlling_address_param)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::GetSectorSizeExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::GetAvailableBalanceExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::GetVestingFundsExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::GetPeerIDExported as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::GetMultiaddrsExported as u64, - vec![], - tipset.key().into(), - ))?), - // Not supported by the lotus. - // RpcTest::identity(StateDecodeParams::request(( - // MINER_ADDRESS, - // Method::MaxTerminationFeeExported as u64, - // to_vec(&miner_max_termination_fee_params)?, - // tipset.key().into(), - // ))?), - // RpcTest::identity(StateDecodeParams::request(( - // MINER_ADDRESS, - // Method::InitialPledgeExported as u64, - // vec![], - // tipset.key().into(), - // ))?), - ]) -} - -fn multisig_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let multisig_constructor_params = fil_actor_multisig_state::v16::ConstructorParams { - signers: vec![Address::new_id(1000).into(), Address::new_id(1001).into()], - num_approvals_threshold: Default::default(), - unlock_duration: Default::default(), - start_epoch: Default::default(), - }; - - let multisig_propose_params = fil_actor_multisig_state::v16::ProposeParams { - to: Address::new_id(1000).into(), - value: Default::default(), - method: 0, - params: Default::default(), - }; - - let multisig_tx_id_params = fil_actor_multisig_state::v16::TxnIDParams { - id: Default::default(), - proposal_hash: vec![Default::default()], - }; - - let multisig_add_signer_params = fil_actor_multisig_state::v16::AddSignerParams { - signer: Address::new_id(1012).into(), - increase: false, - }; - - let multisig_remove_signer_params = fil_actor_multisig_state::v16::RemoveSignerParams { - signer: Address::new_id(1012).into(), - decrease: false, - }; - - let multisig_swap_signer_params = fil_actor_multisig_state::v16::SwapSignerParams { - from: Address::new_id(122).into(), - to: Address::new_id(1234).into(), - }; - - let multisig_change_num_app_params = - fil_actor_multisig_state::v16::ChangeNumApprovalsThresholdParams { new_threshold: 2 }; - - let multisig_lock_bal_params = fil_actor_multisig_state::v16::LockBalanceParams { - start_epoch: 22, - unlock_duration: 12, - amount: Default::default(), - }; - - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::Constructor as u64, - to_vec(&multisig_constructor_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::Propose as u64, - to_vec(&multisig_propose_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::Approve as u64, - to_vec(&multisig_tx_id_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::Cancel as u64, - to_vec(&multisig_tx_id_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::AddSigner as u64, - to_vec(&multisig_add_signer_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::RemoveSigner as u64, - to_vec(&multisig_remove_signer_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::SwapSigner as u64, - to_vec(&multisig_swap_signer_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::ChangeNumApprovalsThreshold as u64, - to_vec(&multisig_change_num_app_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::LockBalance as u64, - to_vec(&multisig_lock_bal_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::LockBalance as u64, - to_vec(&multisig_lock_bal_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::UniversalReceiverHook as u64, - BASE64_STANDARD.decode("ghgqRBI0Vng=").unwrap(), - tipset.key().into(), - ))?), - ]) -} - -fn verified_reg_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - let verified_reg_constructor_params = fil_actor_verifreg_state::v16::ConstructorParams { - root_key: Address::new_id(1000).into(), - }; - - let verified_reg_add_verifier_params = fil_actor_verifreg_state::v16::AddVerifierParams { - address: Address::new_id(1234).into(), - allowance: StoragePower::from(1048576u64), // 1MB - }; - - let verified_reg_remove_verifier_params = fil_actor_verifreg_state::v16::RemoveVerifierParams { - verifier: Address::new_id(1234).into(), - }; - - let verified_reg_add_verified_client_params = - fil_actor_verifreg_state::v16::AddVerifiedClientParams { - address: Address::new_id(1235).into(), - allowance: fil_actor_verifreg_state::v16::types::DataCap::from(2097152u64), // 2MB - }; - - let verified_reg_remove_data_cap_params = fil_actor_verifreg_state::v16::RemoveDataCapParams { - verified_client_to_remove: Address::new_id(1236).into(), - data_cap_amount_to_remove: fil_actor_verifreg_state::v16::types::DataCap::from(1048576u64), - verifier_request_1: fil_actor_verifreg_state::v16::RemoveDataCapRequest { - verifier: Address::new_id(1237).into(), - signature: fvm_shared4::crypto::signature::Signature::new_bls( - b"test_signature_1".to_vec(), - ), - }, - verifier_request_2: fil_actor_verifreg_state::v16::RemoveDataCapRequest { - verifier: Address::new_id(1238).into(), - signature: fvm_shared4::crypto::signature::Signature::new_secp256k1( - b"test_signature_2".to_vec(), - ), - }, - }; - - let verified_reg_remove_expired_allocations_params = - fil_actor_verifreg_state::v16::RemoveExpiredAllocationsParams { - client: 1239, - allocation_ids: vec![1001, 1002, 1003], - }; - - let verified_reg_claim_allocations_params = - fil_actor_verifreg_state::v16::ClaimAllocationsParams { - sectors: vec![fil_actor_verifreg_state::v16::SectorAllocationClaims { - sector: 42, - expiry: 2000000, - claims: vec![ - fil_actor_verifreg_state::v16::AllocationClaim { - client: 1240, - allocation_id: 2001, - data: Cid::default(), - size: fvm_shared4::piece::PaddedPieceSize(1024), - }, - fil_actor_verifreg_state::v16::AllocationClaim { - client: 1241, - allocation_id: 2002, - data: Cid::default(), - size: fvm_shared4::piece::PaddedPieceSize(2048), - }, - ], - }], - all_or_nothing: false, - }; - - let verified_reg_get_claims_params = fil_actor_verifreg_state::v16::GetClaimsParams { - provider: 1242, - claim_ids: vec![3001, 3002, 3003], - }; - - let verified_reg_extend_claim_terms_params = - fil_actor_verifreg_state::v16::ExtendClaimTermsParams { - terms: vec![fil_actor_verifreg_state::v16::ClaimTerm { - provider: 12, - claim_id: 12, - term_max: 123, - }], - }; - - let verified_reg_remove_expired_claims_params = - fil_actor_verifreg_state::v16::RemoveExpiredClaimsParams { - provider: 1243, - claim_ids: vec![4001, 4002, 4003], - }; - - let verified_reg_universal_receiver_params = - fvm_actor_utils::receiver::UniversalReceiverParams { - type_: 42, - payload: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56, 0x78]), - }; - - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::Constructor as u64, - to_vec(&verified_reg_constructor_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::AddVerifier as u64, - to_vec(&verified_reg_add_verifier_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveVerifier as u64, - to_vec(&verified_reg_remove_verifier_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::AddVerifiedClient as u64, - to_vec(&verified_reg_add_verified_client_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveVerifiedClientDataCap as u64, - to_vec(&verified_reg_remove_data_cap_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveExpiredAllocations as u64, - to_vec(&verified_reg_remove_expired_allocations_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::ClaimAllocations as u64, - to_vec(&verified_reg_claim_allocations_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::GetClaims as u64, - to_vec(&verified_reg_get_claims_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::ExtendClaimTerms as u64, - to_vec(&verified_reg_extend_claim_terms_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveExpiredClaims as u64, - to_vec(&verified_reg_remove_expired_claims_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::AddVerifiedClientExported as u64, - to_vec(&verified_reg_add_verified_client_params)?, // reuse same params - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveExpiredAllocationsExported as u64, - to_vec(&verified_reg_remove_expired_allocations_params)?, // reuse same params - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::GetClaimsExported as u64, - to_vec(&verified_reg_get_claims_params)?, // reuse same params - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::ExtendClaimTermsExported as u64, - to_vec(&verified_reg_extend_claim_terms_params)?, // reuse same params - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveExpiredClaimsExported as u64, - to_vec(&verified_reg_remove_expired_claims_params)?, // reuse same params - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::UniversalReceiverHook as u64, - to_vec(&verified_reg_universal_receiver_params)?, - tipset.key().into(), - ))?), - ]) -} - -fn market_actor_state_decode_params_tests(tipset: &Tipset) -> anyhow::Result> { - fn create_deal_proposal( - client: fvm_shared4::address::Address, - provider: fvm_shared4::address::Address, - client_collateral: fvm_shared4::econ::TokenAmount, - provider_collateral: fvm_shared4::econ::TokenAmount, - start_epoch: fvm_shared4::clock::ChainEpoch, - end_epoch: fvm_shared4::clock::ChainEpoch, - ) -> fil_actor_market_state::v16::DealProposal { - let piece_cid = Cid::default(); - let piece_size = fvm_shared4::piece::PaddedPieceSize(2048); - let storage_price_per_epoch = fvm_shared4::econ::TokenAmount::from_atto(10u8); - - fil_actor_market_state::v16::DealProposal { - piece_cid, - piece_size, - verified_deal: false, - client, - provider, - label: fil_actor_market_state::v16::Label::String("label".to_string()), - start_epoch, - end_epoch, - storage_price_per_epoch, - provider_collateral, - client_collateral, - } - } - - fn create_client_deal_proposal() -> fil_actor_market_state::v16::ClientDealProposal { - let proposal = create_deal_proposal( - fvm_shared4::address::Address::new_id(1000), - fvm_shared4::address::Address::new_id(1000), - fvm_shared4::econ::TokenAmount::from_atto(10u8), - fvm_shared4::econ::TokenAmount::from_atto(10u8), - 0, - 10, - ); - fil_actor_market_state::v16::ClientDealProposal { - proposal, - client_signature: fvm_shared4::crypto::signature::Signature::new_bls( - b"test_signature".to_vec(), - ), - } - } - - fn create_sector_deals() -> fil_actor_market_state::v16::SectorDeals { - fil_actor_market_state::v16::SectorDeals { - sector_number: 42, - sector_type: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1, - sector_expiry: 100, - deal_ids: vec![0, 1], - } - } - - fn create_sector_changes() -> fil_actor_miner_state::v16::SectorChanges { - let piece_change = fil_actor_miner_state::v16::PieceChange { - data: Cid::default(), - size: fvm_shared4::piece::PaddedPieceSize(2048), - payload: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56, 0x78]), - }; - - fil_actor_miner_state::v16::SectorChanges { - sector: 2, - minimum_commitment_epoch: 0, - added: vec![piece_change], - } - } - - let market_actor_add_balance_params = fil_actor_market_state::v16::AddBalanceParams { - provider_or_client: fvm_shared4::address::Address::new_id(1000), - }; - let market_actor_withdraw_balance_params = fil_actor_market_state::v16::WithdrawBalanceParams { - provider_or_client: Address::new_id(1000).into(), - amount: TokenAmount::default().into(), - }; - - let market_actor_publish_storage_deals_params = - fil_actor_market_state::v16::PublishStorageDealsParams { - deals: vec![create_client_deal_proposal()], - }; - - let _market_actor_verify_deals_for_activation_params = - fil_actor_market_state::v16::VerifyDealsForActivationParams { - sectors: vec![create_sector_deals()], - }; - - let _market_actor_batch_activate_deals_params = - fil_actor_market_state::v16::BatchActivateDealsParams { - sectors: vec![create_sector_deals()], - compute_cid: true, - }; - - let _market_actor_on_miner_sectors_terminate_params = - fil_actor_market_state::v16::OnMinerSectorsTerminateParams { - epoch: 123, - sectors: { - let mut bf = BitField::new(); - bf.set(3); - bf - }, - }; - - let market_actor_get_balance_exported_params = Address::new_id(1000); - - let market_actor_settle_deal_payments_params = - fil_actor_market_state::v16::SettleDealPaymentsParams { - deal_ids: { - let mut bf = BitField::new(); - bf.set(42); - bf - }, - }; - - let market_actor_get_deal_data_commitment_params = - fil_actor_market_state::v16::DealQueryParams { id: 0 }; - - let _market_actor_sector_content_changed_params = { - fil_actor_miner_state::v16::SectorContentChangedParams { - sectors: vec![create_sector_changes()], - } - }; - - Ok(vec![ - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::AddBalance as u64, - to_vec(&market_actor_add_balance_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::WithdrawBalance as u64, - to_vec(&market_actor_withdraw_balance_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::PublishStorageDeals as u64, - to_vec(&market_actor_publish_storage_deals_params)?, - tipset.key().into(), - ))?), - // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/409 - // Enable this test when lotus supports this method - // RpcTest::identity(StateDecodeParams::request(( - // Address::MARKET_ACTOR, - // fil_actor_market_state::v16::Method::BatchActivateDeals as u64, - // to_vec(&market_actor_batch_activate_deals_params)?, - // tipset.key().into(), - // ))?), - // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/408 - // Enable this test once Lotus adds the `sector_number` field. - // RpcTest::identity(StateDecodeParams::request(( - // Address::MARKET_ACTOR, - // fil_actor_market_state::v16::Method::VerifyDealsForActivation as u64, - // to_vec(&market_actor_verify_deals_for_activation_params)?, - // tipset.key().into(), - // ))?), - // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/408 - // Enable this test when lotus supports correct types in go-state-types. - // RpcTest::identity(StateDecodeParams::request(( - // Address::MARKET_ACTOR, - // fil_actor_market_state::v16::Method::OnMinerSectorsTerminate as u64, - // to_vec(&market_actor_on_miner_sectors_terminate_params)?, - // tipset.key().into(), - // ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::Constructor as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::CronTick as u64, - vec![], - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::AddBalanceExported as u64, - to_vec(&market_actor_get_balance_exported_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::WithdrawBalanceExported as u64, - to_vec(&market_actor_withdraw_balance_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::PublishStorageDealsExported as u64, - to_vec(&market_actor_publish_storage_deals_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetBalanceExported as u64, - to_vec(&market_actor_get_balance_exported_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealDataCommitmentExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealClientExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealProviderExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealLabelExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealTermExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealTotalPriceExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealClientCollateralExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealProviderCollateralExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealVerifiedExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealActivationExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealSectorExported as u64, - to_vec(&market_actor_get_deal_data_commitment_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::SettleDealPaymentsExported as u64, - to_vec(&market_actor_settle_deal_payments_params)?, - tipset.key().into(), - ))?), - // TODO(lotus): https://github.com/filecoin-project/lotus/issues/13329 - // Lotus panics while decoding this method. - // RpcTest::identity(StateDecodeParams::request(( - // Address::MARKET_ACTOR, - // fil_actor_market_state::v16::Method::SectorContentChangedExported as u64, - // to_vec(&market_actor_sector_content_changed_params)?, - // tipset.key().into(), - // ))?), - ]) -} - fn read_state_api_tests(tipset: &Tipset) -> anyhow::Result> { let tests = vec![ RpcTest::identity(StateReadState::request(( diff --git a/src/tool/subcommands/api_cmd/api_compare_tests/state_decode_params/mod.rs b/src/tool/subcommands/api_cmd/api_compare_tests/state_decode_params/mod.rs new file mode 100644 index 000000000000..d8a151dba01b --- /dev/null +++ b/src/tool/subcommands/api_cmd/api_compare_tests/state_decode_params/mod.rs @@ -0,0 +1,52 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +//! State decode params tests for various actors. +//! +//! This module contains test functions for verifying StateDecodeParams API functionality +//! across different actor types in the Filecoin network. + +use crate::blocks::Tipset; +use anyhow::Result; + +use super::RpcTest; + +// Module declarations for each actor +mod account; +mod datacap; +mod eam; +mod evm; +mod init; +mod market; +mod miner; +mod multisig; +mod paych; +mod power; +mod reward; +mod verified_reg; + +/// Creates all state decode params tests for all supported actors. +/// +/// This function aggregates test cases from all actor-specific modules +/// and includes some basic system-level tests. +pub fn create_all_state_decode_params_tests(tipset: &Tipset) -> Result> { + let mut tests = Vec::new(); + + // TODO: Add system and cron actor tests here when implemented + + // Actor-specific tests + tests.extend(account::create_tests(tipset)?); + tests.extend(datacap::create_tests(tipset)?); + tests.extend(eam::create_tests(tipset)?); + tests.extend(evm::create_tests(tipset)?); + tests.extend(init::create_tests(tipset)?); + tests.extend(market::create_tests(tipset)?); + tests.extend(miner::create_tests(tipset)?); + tests.extend(multisig::create_tests(tipset)?); + tests.extend(paych::create_tests(tipset)?); + tests.extend(power::create_tests(tipset)?); + tests.extend(reward::create_tests(tipset)?); + tests.extend(verified_reg::create_tests(tipset)?); + + Ok(tests) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs new file mode 100644 index 000000000000..3f4c431a87e0 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs @@ -0,0 +1,32 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; + +/// Creates state decode params tests for the Account actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let account_constructor_params = fil_actor_account_state::v16::types::ConstructorParams { + address: Address::new_id(1234).into(), + }; + + let account_auth_params = fil_actor_account_state::v16::types::AuthenticateMessageParams { + signature: vec![0x00; 32], // dummy signature + message: b"test message".to_vec(), + }; + + const ACCOUNT_ADDRESS: Address = Address::new_id(1234); + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + ACCOUNT_ADDRESS, + 1, + to_vec(&account_constructor_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + ACCOUNT_ADDRESS, + 2643134072, // frc42_dispatch::method_hash!("AuthenticateMessage"), + to_vec(&account_auth_params)?, + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/cron.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/cron.rs new file mode 100644 index 000000000000..54f9cc08d915 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/cron.rs @@ -0,0 +1,31 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; + +/// Creates state decode params tests for the Cron actor. +pub fn create_tests(tipset: &Tipset) -> anyhow::Result> { + // let cron_constructor_params = fil_actor_cron_state::v16::ConstructorParams { + // entries: vec![fil_actor_cron_state::v16::Entry { + // receiver: Address::new_id(1000).into(), + // method_num: fil_actor_cron_state::v16::Method::EpochTick as u64, + // }], + // }; + + Ok(vec![ + // // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/396 + // Enable this test when lotus supports it in go-state-types. + // RpcTest::identity(StateDecodeParams::request(( + // Address::CRON_ACTOR, + // fil_actor_cron_state::v16::Method::Constructor as u64, + // to_vec(&cron_constructor_params)?, + // tipset.key().into(), + // ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::CRON_ACTOR, + fil_actor_cron_state::v16::Method::EpochTick as u64, + vec![], + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/datacap.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/datacap.rs new file mode 100644 index 000000000000..d373f5c0f710 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/datacap.rs @@ -0,0 +1,171 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; + +/// Creates state decode params tests for the Datacap actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let datacap_constructor_params = fil_actor_datacap_state::v16::ConstructorParams { + governor: Address::new_id(3000).into(), + }; + + let datacap_mint_params = fil_actor_datacap_state::v16::MintParams { + to: Address::new_id(3001).into(), + amount: TokenAmount::default().into(), + operators: vec![Address::new_id(3002).into(), Address::new_id(3003).into()], + }; + + let datacap_destroy_params = fil_actor_datacap_state::v16::DestroyParams { + owner: Address::new_id(3004).into(), + amount: TokenAmount::default().into(), + }; + + let datacap_balance_params = fil_actor_datacap_state::v16::BalanceParams { + address: Address::new_id(3005).into(), + }; + + let datacap_transfer_params = fil_actors_shared::frc46_token::token::types::TransferParams { + to: Address::new_id(3006).into(), + amount: TokenAmount::default().into(), + operator_data: fvm_ipld_encoding::RawBytes::new(b"transfer test data".to_vec()), + }; + + let datacap_transfer_from_params = + fil_actors_shared::frc46_token::token::types::TransferFromParams { + from: Address::new_id(3007).into(), + to: Address::new_id(3008).into(), + amount: TokenAmount::default().into(), + operator_data: fvm_ipld_encoding::RawBytes::new(b"transfer_from test data".to_vec()), + }; + + let datacap_increase_allowance_params = + fil_actors_shared::frc46_token::token::types::IncreaseAllowanceParams { + operator: Address::new_id(3009).into(), + increase: TokenAmount::default().into(), + }; + + let datacap_decrease_allowance_params = + fil_actors_shared::frc46_token::token::types::DecreaseAllowanceParams { + operator: Address::new_id(3010).into(), + decrease: TokenAmount::default().into(), + }; + + let datacap_revoke_allowance_params = + fil_actors_shared::frc46_token::token::types::RevokeAllowanceParams { + operator: Address::new_id(3011).into(), + }; + + let datacap_burn_params = fil_actors_shared::frc46_token::token::types::BurnParams { + amount: TokenAmount::default().into(), + }; + + let datacap_burn_from_params = fil_actors_shared::frc46_token::token::types::BurnFromParams { + owner: Address::new_id(3012).into(), + amount: TokenAmount::default().into(), + }; + + let datacap_get_allowance_params = + fil_actors_shared::frc46_token::token::types::GetAllowanceParams { + owner: Address::new_id(3013).into(), + operator: Address::new_id(3014).into(), + }; + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::Constructor as u64, + to_vec(&datacap_constructor_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::MintExported as u64, + to_vec(&datacap_mint_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::DestroyExported as u64, + to_vec(&datacap_destroy_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::NameExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::SymbolExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::TotalSupplyExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::BalanceExported as u64, + to_vec(&datacap_balance_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::GranularityExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::TransferExported as u64, + to_vec(&datacap_transfer_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::TransferFromExported as u64, + to_vec(&datacap_transfer_from_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::IncreaseAllowanceExported as u64, + to_vec(&datacap_increase_allowance_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::DecreaseAllowanceExported as u64, + to_vec(&datacap_decrease_allowance_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::RevokeAllowanceExported as u64, + to_vec(&datacap_revoke_allowance_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::BurnExported as u64, + to_vec(&datacap_burn_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::BurnFromExported as u64, + to_vec(&datacap_burn_from_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::DATACAP_TOKEN_ACTOR, + fil_actor_datacap_state::v16::Method::AllowanceExported as u64, + to_vec(&datacap_get_allowance_params)?, + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/eam.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/eam.rs new file mode 100644 index 000000000000..2f38cfc4cb86 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/eam.rs @@ -0,0 +1,47 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; + +/// Creates state decode params tests for the EAM actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let create_params = fil_actor_eam_state::v16::CreateParams { + initcode: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data + nonce: 2, + }; + + let create_params2 = fil_actor_eam_state::v16::Create2Params { + initcode: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data + salt: [0; 32], + }; + + let create_external_params = + fil_actor_eam_state::v16::CreateExternalParams(vec![0x11, 0x22, 0x33, 0x44, 0x55]); + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, + fil_actor_eam_state::v16::Method::Constructor as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, + fil_actor_eam_state::v16::Method::Create as u64, + to_vec(&create_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, + fil_actor_eam_state::v16::Method::Create2 as u64, + to_vec(&create_params2)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, + fil_actor_eam_state::v16::Method::CreateExternal as u64, + to_vec(&create_external_params)?, + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs new file mode 100644 index 000000000000..3147bc05027d --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs @@ -0,0 +1,14 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; + +/// Creates state decode params tests for the EthAccount actor. +pub fn create_tests(tipset: &Tipset) -> anyhow::Result> { + Ok(vec![RpcTest::identity(StateDecodeParams::request(( + Address::new_delegated(Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR.id()?, &[0; 20]).unwrap(), + fil_actor_ethaccount_state::v16::Method::Constructor as u64, + vec![], + tipset.key().into(), + ))?)]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs new file mode 100644 index 000000000000..322551973ee3 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs @@ -0,0 +1,74 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; +use crate::rpc::eth::types::GetStorageAtParams; +use std::str::FromStr; + +const EVM_ADDRESS: &str = "t410fbqoynu2oi2lxam43knqt6ordiowm2ywlml27z4i"; + +/// Creates state decode params tests for the EVM actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let evm_constructor_params = fil_actor_evm_state::v16::ConstructorParams { + creator: fil_actor_evm_state::evm_shared::v16::address::EthAddress([0; 20]), + initcode: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode + }; + + let evm_invoke_contract_params = fil_actor_evm_state::v16::InvokeContractParams { + input_data: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy input data + }; + + let evm_delegate_call_params = fil_actor_evm_state::v16::DelegateCallParams { + code: Cid::default(), + input: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy input data + caller: fil_actor_evm_state::evm_shared::v16::address::EthAddress([0; 20]), + value: TokenAmount::default().into(), + }; + + let evm_get_storage_at_params = GetStorageAtParams::new(vec![0xa])?; + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + Address::from_str(EVM_ADDRESS).unwrap(), + fil_actor_evm_state::v16::Method::Constructor as u64, + to_vec(&evm_constructor_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::from_str(EVM_ADDRESS).unwrap(), + fil_actor_evm_state::v16::Method::Resurrect as u64, + to_vec(&evm_constructor_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::from_str(EVM_ADDRESS).unwrap(), + fil_actor_evm_state::v16::Method::GetBytecode as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::from_str(EVM_ADDRESS).unwrap(), + fil_actor_evm_state::v16::Method::GetBytecodeHash as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::from_str(EVM_ADDRESS).unwrap(), + fil_actor_evm_state::v16::Method::InvokeContract as u64, + to_vec(&evm_invoke_contract_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::from_str(EVM_ADDRESS).unwrap(), + fil_actor_evm_state::v16::Method::InvokeContractDelegate as u64, + to_vec(&evm_delegate_call_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::from_str(EVM_ADDRESS).unwrap(), + fil_actor_evm_state::v16::Method::GetStorageAt as u64, + evm_get_storage_at_params.serialize_params()?, + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs new file mode 100644 index 000000000000..32e274c03883 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs @@ -0,0 +1,43 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; + +/// Creates state decode params tests for the Init actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let init_constructor_params = fil_actor_init_state::v16::ConstructorParams { + network_name: "calibnet".to_string(), + }; + + let init_exec4_params = fil_actor_init_state::v16::Exec4Params { + code_cid: Cid::default(), + constructor_params: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode + subaddress: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode + }; + + let init_exec_params = fil_actor_init_state::v16::ExecParams { + code_cid: Cid::default(), + constructor_params: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode + }; + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + Address::INIT_ACTOR, + 1, + to_vec(&init_constructor_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::INIT_ACTOR, + 2, + to_vec(&init_exec_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::INIT_ACTOR, + 3, + to_vec(&init_exec4_params)?, + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/market.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/market.rs new file mode 100644 index 000000000000..ac232eeed1c8 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/market.rs @@ -0,0 +1,290 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; +use fil_actors_shared::fvm_ipld_bitfield::BitField; + +/// Creates state decode params tests for the Market actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + fn create_deal_proposal( + client: fvm_shared4::address::Address, + provider: fvm_shared4::address::Address, + client_collateral: fvm_shared4::econ::TokenAmount, + provider_collateral: fvm_shared4::econ::TokenAmount, + start_epoch: fvm_shared4::clock::ChainEpoch, + end_epoch: fvm_shared4::clock::ChainEpoch, + ) -> fil_actor_market_state::v16::DealProposal { + let piece_cid = Cid::default(); + let piece_size = fvm_shared4::piece::PaddedPieceSize(2048); + let storage_price_per_epoch = fvm_shared4::econ::TokenAmount::from_atto(10u8); + + fil_actor_market_state::v16::DealProposal { + piece_cid, + piece_size, + verified_deal: false, + client, + provider, + label: fil_actor_market_state::v16::Label::String("label".to_string()), + start_epoch, + end_epoch, + storage_price_per_epoch, + provider_collateral, + client_collateral, + } + } + + fn create_client_deal_proposal() -> fil_actor_market_state::v16::ClientDealProposal { + let proposal = create_deal_proposal( + fvm_shared4::address::Address::new_id(1000), + fvm_shared4::address::Address::new_id(1000), + fvm_shared4::econ::TokenAmount::from_atto(10u8), + fvm_shared4::econ::TokenAmount::from_atto(10u8), + 0, + 10, + ); + fil_actor_market_state::v16::ClientDealProposal { + proposal, + client_signature: fvm_shared4::crypto::signature::Signature::new_bls( + b"test_signature".to_vec(), + ), + } + } + + fn create_sector_deals() -> fil_actor_market_state::v16::SectorDeals { + fil_actor_market_state::v16::SectorDeals { + sector_number: 42, + sector_type: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1, + sector_expiry: 100, + deal_ids: vec![0, 1], + } + } + + fn create_sector_changes() -> fil_actor_miner_state::v16::SectorChanges { + let piece_change = fil_actor_miner_state::v16::PieceChange { + data: Cid::default(), + size: fvm_shared4::piece::PaddedPieceSize(2048), + payload: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56, 0x78]), + }; + + fil_actor_miner_state::v16::SectorChanges { + sector: 2, + minimum_commitment_epoch: 0, + added: vec![piece_change], + } + } + + let market_actor_add_balance_params = fil_actor_market_state::v16::AddBalanceParams { + provider_or_client: fvm_shared4::address::Address::new_id(1000), + }; + let market_actor_withdraw_balance_params = fil_actor_market_state::v16::WithdrawBalanceParams { + provider_or_client: Address::new_id(1000).into(), + amount: TokenAmount::default().into(), + }; + + let market_actor_publish_storage_deals_params = + fil_actor_market_state::v16::PublishStorageDealsParams { + deals: vec![create_client_deal_proposal()], + }; + + let _market_actor_verify_deals_for_activation_params = + fil_actor_market_state::v16::VerifyDealsForActivationParams { + sectors: vec![create_sector_deals()], + }; + + let _market_actor_batch_activate_deals_params = + fil_actor_market_state::v16::BatchActivateDealsParams { + sectors: vec![create_sector_deals()], + compute_cid: true, + }; + + let _market_actor_on_miner_sectors_terminate_params = + fil_actor_market_state::v16::OnMinerSectorsTerminateParams { + epoch: 123, + sectors: { + let mut bf = BitField::new(); + bf.set(3); + bf + }, + }; + + let market_actor_get_balance_exported_params = Address::new_id(1000); + + let market_actor_settle_deal_payments_params = + fil_actor_market_state::v16::SettleDealPaymentsParams { + deal_ids: { + let mut bf = BitField::new(); + bf.set(42); + bf + }, + }; + + let market_actor_get_deal_data_commitment_params = + fil_actor_market_state::v16::DealQueryParams { id: 0 }; + + let _market_actor_sector_content_changed_params = { + fil_actor_miner_state::v16::SectorContentChangedParams { + sectors: vec![create_sector_changes()], + } + }; + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::AddBalance as u64, + to_vec(&market_actor_add_balance_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::WithdrawBalance as u64, + to_vec(&market_actor_withdraw_balance_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::PublishStorageDeals as u64, + to_vec(&market_actor_publish_storage_deals_params)?, + tipset.key().into(), + ))?), + // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/409 + // Enable this test when lotus supports this method + // RpcTest::identity(StateDecodeParams::request(( + // Address::MARKET_ACTOR, + // fil_actor_market_state::v16::Method::BatchActivateDeals as u64, + // to_vec(&market_actor_batch_activate_deals_params)?, + // tipset.key().into(), + // ))?), + // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/408 + // Enable this test once Lotus adds the `sector_number` field. + // RpcTest::identity(StateDecodeParams::request(( + // Address::MARKET_ACTOR, + // fil_actor_market_state::v16::Method::VerifyDealsForActivation as u64, + // to_vec(&market_actor_verify_deals_for_activation_params)?, + // tipset.key().into(), + // ))?), + // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/408 + // Enable this test when lotus supports correct types in go-state-types. + // RpcTest::identity(StateDecodeParams::request(( + // Address::MARKET_ACTOR, + // fil_actor_market_state::v16::Method::OnMinerSectorsTerminate as u64, + // to_vec(&market_actor_on_miner_sectors_terminate_params)?, + // tipset.key().into(), + // ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::Constructor as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::CronTick as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::AddBalanceExported as u64, + to_vec(&market_actor_get_balance_exported_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::WithdrawBalanceExported as u64, + to_vec(&market_actor_withdraw_balance_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::PublishStorageDealsExported as u64, + to_vec(&market_actor_publish_storage_deals_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetBalanceExported as u64, + to_vec(&market_actor_get_balance_exported_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealDataCommitmentExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealClientExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealProviderExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealLabelExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealTermExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealTotalPriceExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealClientCollateralExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealProviderCollateralExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealVerifiedExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealActivationExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::GetDealSectorExported as u64, + to_vec(&market_actor_get_deal_data_commitment_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::MARKET_ACTOR, + fil_actor_market_state::v16::Method::SettleDealPaymentsExported as u64, + to_vec(&market_actor_settle_deal_payments_params)?, + tipset.key().into(), + ))?), + // TODO(lotus): https://github.com/filecoin-project/lotus/issues/13329 + // Lotus panics while decoding this method. + // RpcTest::identity(StateDecodeParams::request(( + // Address::MARKET_ACTOR, + // fil_actor_market_state::v16::Method::SectorContentChangedExported as u64, + // to_vec(&market_actor_sector_content_changed_params)?, + // tipset.key().into(), + // ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs new file mode 100644 index 000000000000..7c16e56a95d8 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs @@ -0,0 +1,564 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; +use fvm_ipld_encoding::{BytesDe, RawBytes}; +use fvm_shared4::randomness::Randomness; + +/// Creates state decode params tests for the Miner actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let miner_constructor_params = fil_actor_miner_state::v16::MinerConstructorParams { + owner: Address::new_id(1000).into(), + worker: Address::new_id(1001).into(), + control_addresses: vec![Address::new_id(1002).into(), Address::new_id(1003).into()], + window_post_proof_type: fvm_shared4::sector::RegisteredPoStProof::StackedDRGWindow32GiBV1P1, + peer_id: b"miner".to_vec(), + multi_addresses: Default::default(), + }; + + let miner_change_worker_params = fil_actor_miner_state::v16::ChangeWorkerAddressParams { + new_worker: Address::new_id(2000).into(), + new_control_addresses: vec![Address::new_id(2001).into()], + }; + + let miner_change_peer_id_params = fil_actor_miner_state::v16::ChangePeerIDParams { + new_id: b"new_peer".to_vec(), + }; + + let miner_change_multiaddrs_params = fil_actor_miner_state::v16::ChangeMultiaddrsParams { + new_multi_addrs: vec![BytesDe(vec![1, 2, 3])], + }; + + let miner_change_owner_params = fil_actor_miner_state::v16::ChangeOwnerAddressParams { + new_owner: Address::new_id(3000).into(), + }; + + let miner_change_beneficiary_params = fil_actor_miner_state::v16::ChangeBeneficiaryParams { + new_beneficiary: Address::new_id(4000).into(), + new_quota: TokenAmount::from_atto(1000000000000000000u64).into(), + new_expiration: 1000, + }; + + let miner_withdraw_balance_params = fil_actor_miner_state::v16::WithdrawBalanceParams { + amount_requested: TokenAmount::from_atto(500000000000000000u64).into(), + }; + + let miner_submit_windowed_post_params = fil_actor_miner_state::v16::SubmitWindowedPoStParams { + deadline: 0, + partitions: vec![fil_actor_miner_state::v16::PoStPartition { + index: 0, + skipped: Default::default(), + }], + proofs: vec![], + chain_commit_epoch: 0, + chain_commit_rand: Randomness(vec![1, 22, 43]), + }; + + let miner_extend_sector_expiration_params = + fil_actor_miner_state::v16::ExtendSectorExpirationParams { + extensions: vec![fil_actor_miner_state::v16::ExpirationExtension { + deadline: 12, + partition: 123, + sectors: Default::default(), + new_expiration: 1000, + }], + }; + + let miner_terminate_sectors_params = fil_actor_miner_state::v16::TerminateSectorsParams { + terminations: vec![fil_actor_miner_state::v16::TerminationDeclaration { + deadline: 0, + partition: 0, + sectors: Default::default(), + }], + }; + + let miner_declare_faults_params = fil_actor_miner_state::v16::DeclareFaultsParams { + faults: vec![fil_actor_miner_state::v16::FaultDeclaration { + deadline: 0, + partition: 0, + sectors: Default::default(), + }], + }; + + let miner_declare_faults_recovered_params = + fil_actor_miner_state::v16::DeclareFaultsRecoveredParams { + recoveries: vec![fil_actor_miner_state::v16::RecoveryDeclaration { + deadline: 0, + partition: 0, + sectors: Default::default(), + }], + }; + + let miner_deferred_cron_event_params = fil_actor_miner_state::v16::DeferredCronEventParams { + event_payload: vec![], + reward_smoothed: fil_actors_shared::v16::reward::FilterEstimate { + position: Default::default(), + velocity: Default::default(), + }, + quality_adj_power_smoothed: fil_actors_shared::v16::reward::FilterEstimate { + position: Default::default(), + velocity: Default::default(), + }, + }; + + let miner_check_sector_proven_params = + fil_actor_miner_state::v16::CheckSectorProvenParams { sector_number: 0 }; + + let miner_apply_reward_params = fil_actor_miner_state::v16::ApplyRewardParams { + reward: TokenAmount::from_atto(1000000000000000000u64).into(), + penalty: TokenAmount::from_atto(0u64).into(), + }; + + let miner_report_consensus_fault_params = + fil_actor_miner_state::v16::ReportConsensusFaultParams { + header1: vec![], + header2: vec![], + header_extra: vec![], + }; + + let miner_compact_partitions_params = fil_actor_miner_state::v16::CompactPartitionsParams { + deadline: 0, + partitions: Default::default(), + }; + + let miner_compact_sector_numbers_params = + fil_actor_miner_state::v16::CompactSectorNumbersParams { + mask_sector_numbers: Default::default(), + }; + + let miner_dispute_windowed_post_params = + fil_actor_miner_state::v16::DisputeWindowedPoStParams { + deadline: 0, + post_index: 0, + }; + + let miner_prove_commit_aggregate_params = + fil_actor_miner_state::v16::ProveCommitAggregateParams { + sector_numbers: Default::default(), + aggregate_proof: RawBytes::new(vec![]), + }; + + let miner_prove_replica_updates_params = + fil_actor_miner_state::v16::ProveReplicaUpdatesParams { + updates: vec![fil_actor_miner_state::v16::ReplicaUpdate { + sector_number: 0, + deadline: 0, + partition: 0, + new_sealed_cid: Cid::default(), + deals: vec![], + update_proof_type: fvm_shared4::sector::RegisteredUpdateProof::StackedDRG2KiBV1, + replica_proof: RawBytes::new(vec![]), + }], + }; + + let miner_pre_commit_sector_batch2_params = + fil_actor_miner_state::v16::PreCommitSectorBatchParams2 { + sectors: vec![fil_actor_miner_state::v16::SectorPreCommitInfo { + seal_proof: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1P1, + sector_number: 0, + sealed_cid: Cid::default(), + seal_rand_epoch: 0, + deal_ids: vec![], + expiration: 1000, + unsealed_cid: fil_actor_miner_state::v16::CompactCommD(None), + }], + }; + + let miner_extend_sector_expiration2_params = + fil_actor_miner_state::v16::ExtendSectorExpiration2Params { + extensions: vec![fil_actor_miner_state::v16::ExpirationExtension2 { + deadline: 0, + partition: 0, + sectors: Default::default(), + sectors_with_claims: vec![], + new_expiration: 1000, + }], + }; + + let miner_is_controlling_address_param = + fil_actor_miner_state::v16::IsControllingAddressParam { + address: Address::new_id(5000).into(), + }; + + let miner_prove_commit_sectors3_params = + fil_actor_miner_state::v16::ProveCommitSectors3Params { + sector_activations: vec![fil_actor_miner_state::v16::SectorActivationManifest { + sector_number: 0, + pieces: vec![fil_actor_miner_state::v16::PieceActivationManifest { + cid: Cid::default(), + size: fvm_shared4::piece::PaddedPieceSize(23), + verified_allocation_key: None, + notify: vec![], + }], + }], + sector_proofs: vec![RawBytes::new(vec![])], + aggregate_proof: RawBytes::new(vec![]), + aggregate_proof_type: None, + require_activation_success: true, + require_notification_success: true, + }; + + let miner_prove_replica_updates3_params = + fil_actor_miner_state::v16::ProveReplicaUpdates3Params { + sector_updates: vec![fil_actor_miner_state::v16::SectorUpdateManifest { + sector: 0, + deadline: 0, + partition: 0, + new_sealed_cid: Cid::default(), + pieces: vec![fil_actor_miner_state::v16::PieceActivationManifest { + cid: Cid::default(), + size: fvm_shared4::piece::PaddedPieceSize(12), + verified_allocation_key: None, + notify: vec![], + }], + }], + sector_proofs: vec![RawBytes::new(vec![])], + aggregate_proof: RawBytes::new(vec![]), + update_proofs_type: fvm_shared4::sector::RegisteredUpdateProof::StackedDRG2KiBV1, + aggregate_proof_type: None, + require_activation_success: true, + require_notification_success: true, + }; + + let miner_prove_commit_sectors_ni_params = + fil_actor_miner_state::v16::ProveCommitSectorsNIParams { + sectors: vec![fil_actor_miner_state::v16::SectorNIActivationInfo { + sealing_number: 12, + sealer_id: 23343, + sealed_cid: Cid::default(), + sector_number: 2343, + seal_rand_epoch: 2343, + expiration: 1000, + }], + aggregate_proof: RawBytes::new(vec![23, 2, 23]), + seal_proof_type: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1P1, + aggregate_proof_type: fvm_shared4::sector::RegisteredAggregateProof::SnarkPackV1, + proving_deadline: 234, + require_activation_success: true, + }; + + let miner_internal_sector_setup_for_preseal_params = + fil_actor_miner_state::v16::InternalSectorSetupForPresealParams { + sectors: vec![0], + reward_smoothed: fil_actors_shared::v16::reward::FilterEstimate { + position: Default::default(), + velocity: Default::default(), + }, + reward_baseline_power: Default::default(), + quality_adj_power_smoothed: fil_actors_shared::v16::reward::FilterEstimate { + position: Default::default(), + velocity: Default::default(), + }, + }; + + // let miner_max_termination_fee_params = fil_actor_miner_state::v16::MaxTerminationFeeParams { + // power: Default::default(), + // initial_pledge: TokenAmount::from_atto(1000000000000000000u64).into(), + // }; + + use fil_actor_miner_state::v16::Method; + const MINER_ADDRESS: Address = Address::new_id(78216); + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::Constructor as u64, + to_vec(&miner_constructor_params)?, + tipset.key().into(), + ))?), + // Methods without parameters + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ControlAddresses as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangeWorkerAddress as u64, + to_vec(&miner_change_worker_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangePeerID as u64, + to_vec(&miner_change_peer_id_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::SubmitWindowedPoSt as u64, + to_vec(&miner_submit_windowed_post_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ExtendSectorExpiration as u64, + to_vec(&miner_extend_sector_expiration_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::TerminateSectors as u64, + to_vec(&miner_terminate_sectors_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::DeclareFaults as u64, + to_vec(&miner_declare_faults_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::DeclareFaultsRecovered as u64, + to_vec(&miner_declare_faults_recovered_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::OnDeferredCronEvent as u64, + to_vec(&miner_deferred_cron_event_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::CheckSectorProven as u64, + to_vec(&miner_check_sector_proven_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ApplyRewards as u64, + to_vec(&miner_apply_reward_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ReportConsensusFault as u64, + to_vec(&miner_report_consensus_fault_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::WithdrawBalance as u64, + to_vec(&miner_withdraw_balance_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::InternalSectorSetupForPreseal as u64, + to_vec(&miner_internal_sector_setup_for_preseal_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangeMultiaddrs as u64, + to_vec(&miner_change_multiaddrs_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::CompactPartitions as u64, + to_vec(&miner_compact_partitions_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::CompactSectorNumbers as u64, + to_vec(&miner_compact_sector_numbers_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ConfirmChangeWorkerAddress as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::RepayDebt as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangeOwnerAddress as u64, + to_vec(&miner_change_owner_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::DisputeWindowedPoSt as u64, + to_vec(&miner_dispute_windowed_post_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ProveCommitAggregate as u64, + to_vec(&miner_prove_commit_aggregate_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ProveReplicaUpdates as u64, + to_vec(&miner_prove_replica_updates_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::PreCommitSectorBatch2 as u64, + to_vec(&miner_pre_commit_sector_batch2_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangeBeneficiary as u64, + to_vec(&miner_change_beneficiary_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::GetBeneficiary as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ExtendSectorExpiration2 as u64, + to_vec(&miner_extend_sector_expiration2_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ProveCommitSectors3 as u64, + to_vec(&miner_prove_commit_sectors3_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ProveReplicaUpdates3 as u64, + to_vec(&miner_prove_replica_updates3_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ProveCommitSectorsNI as u64, + to_vec(&miner_prove_commit_sectors_ni_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangeWorkerAddressExported as u64, + to_vec(&miner_change_worker_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangePeerIDExported as u64, + to_vec(&miner_change_peer_id_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::WithdrawBalanceExported as u64, + to_vec(&miner_withdraw_balance_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangeMultiaddrsExported as u64, + to_vec(&miner_change_multiaddrs_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ConfirmChangeWorkerAddressExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::RepayDebtExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangeOwnerAddressExported as u64, + to_vec(&miner_change_owner_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::ChangeBeneficiaryExported as u64, + to_vec(&miner_change_beneficiary_params)?, + tipset.key().into(), + ))?), + // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/403 + // Enable this test once lotus starts supporting this. + // RpcTest::identity(StateDecodeParams::request(( + // MINER_ADDRESS, + // Method::GetBeneficiaryExported as u64, + // vec![], + // tipset.key().into(), + // ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::GetOwnerExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::IsControllingAddressExported as u64, + to_vec(&miner_is_controlling_address_param)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::GetSectorSizeExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::GetAvailableBalanceExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::GetVestingFundsExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::GetPeerIDExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + MINER_ADDRESS, + Method::GetMultiaddrsExported as u64, + vec![], + tipset.key().into(), + ))?), + // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/403 + // Enable this test once lotus starts supporting this. + // RpcTest::identity(StateDecodeParams::request(( + // MINER_ADDRESS, + // Method::MaxTerminationFeeExported as u64, + // to_vec(&miner_max_termination_fee_params)?, + // tipset.key().into(), + // ))?), + // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/403 + // Enable this test once lotus starts supporting this. + // RpcTest::identity(StateDecodeParams::request(( + // MINER_ADDRESS, + // Method::InitialPledgeExported as u64, + // vec![], + // tipset.key().into(), + // ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/mod.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/mod.rs new file mode 100644 index 000000000000..9464d954d1c1 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/mod.rs @@ -0,0 +1,57 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +//! State decode params tests for various actors. +//! +//! This module contains test functions for verifying StateDecodeParams API functionality +//! across different actor types in the Filecoin network. + +use crate::blocks::Tipset; +use crate::rpc::RpcMethodExt; +use crate::rpc::prelude::StateDecodeParams; +use crate::shim::address::Address; +use crate::shim::econ::TokenAmount; +use crate::tool::subcommands::api_cmd::api_compare_tests::RpcTest; +use anyhow::Result; +use cid::Cid; +use fvm_ipld_encoding::to_vec; + +// Module declarations for each actor +mod account; +mod cron; +mod datacap; +mod eam; +mod ethaccount; +mod evm; +mod init; +mod market; +mod miner; +mod multisig; +mod paych; +mod power; +mod reward; +mod system; +mod verified_reg; + +/// Creates all state decode params tests for all supported actors. +pub fn create_all_state_decode_params_tests(tipset: &Tipset) -> Result> { + let mut tests = Vec::new(); + + tests.extend(account::create_tests(tipset)?); + tests.extend(datacap::create_tests(tipset)?); + tests.extend(eam::create_tests(tipset)?); + tests.extend(evm::create_tests(tipset)?); + tests.extend(init::create_tests(tipset)?); + tests.extend(market::create_tests(tipset)?); + tests.extend(miner::create_tests(tipset)?); + tests.extend(multisig::create_tests(tipset)?); + tests.extend(paych::create_tests(tipset)?); + tests.extend(power::create_tests(tipset)?); + tests.extend(reward::create_tests(tipset)?); + tests.extend(verified_reg::create_tests(tipset)?); + tests.extend(cron::create_tests(tipset)?); + tests.extend(ethaccount::create_tests(tipset)?); + tests.extend(system::create_tests(tipset)?); + + Ok(tests) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs new file mode 100644 index 000000000000..2696dd27be4e --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs @@ -0,0 +1,120 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; +use base64::{Engine, prelude::BASE64_STANDARD}; + +/// Creates state decode params tests for the Multisig actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let multisig_constructor_params = fil_actor_multisig_state::v16::ConstructorParams { + signers: vec![Address::new_id(1000).into(), Address::new_id(1001).into()], + num_approvals_threshold: Default::default(), + unlock_duration: Default::default(), + start_epoch: Default::default(), + }; + + let multisig_propose_params = fil_actor_multisig_state::v16::ProposeParams { + to: Address::new_id(1000).into(), + value: Default::default(), + method: 0, + params: Default::default(), + }; + + let multisig_tx_id_params = fil_actor_multisig_state::v16::TxnIDParams { + id: Default::default(), + proposal_hash: vec![Default::default()], + }; + + let multisig_add_signer_params = fil_actor_multisig_state::v16::AddSignerParams { + signer: Address::new_id(1012).into(), + increase: false, + }; + + let multisig_remove_signer_params = fil_actor_multisig_state::v16::RemoveSignerParams { + signer: Address::new_id(1012).into(), + decrease: false, + }; + + let multisig_swap_signer_params = fil_actor_multisig_state::v16::SwapSignerParams { + from: Address::new_id(122).into(), + to: Address::new_id(1234).into(), + }; + + let multisig_change_num_app_params = + fil_actor_multisig_state::v16::ChangeNumApprovalsThresholdParams { new_threshold: 2 }; + + let multisig_lock_bal_params = fil_actor_multisig_state::v16::LockBalanceParams { + start_epoch: 22, + unlock_duration: 12, + amount: Default::default(), + }; + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::Constructor as u64, + to_vec(&multisig_constructor_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::Propose as u64, + to_vec(&multisig_propose_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::Approve as u64, + to_vec(&multisig_tx_id_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::Cancel as u64, + to_vec(&multisig_tx_id_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::AddSigner as u64, + to_vec(&multisig_add_signer_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::RemoveSigner as u64, + to_vec(&multisig_remove_signer_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::SwapSigner as u64, + to_vec(&multisig_swap_signer_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::ChangeNumApprovalsThreshold as u64, + to_vec(&multisig_change_num_app_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::LockBalance as u64, + to_vec(&multisig_lock_bal_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::LockBalance as u64, + to_vec(&multisig_lock_bal_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, + fil_actor_multisig_state::v16::Method::UniversalReceiverHook as u64, + BASE64_STANDARD.decode("ghgqRBI0Vng=").unwrap(), + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs new file mode 100644 index 000000000000..d9fad209938f --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs @@ -0,0 +1,64 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; + +/// Creates state decode params tests for the Payment Channel actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + // payment channel actor address `t066116` + // https://calibration.filscan.io/en/address/t066116/ + let paych_address = Address::new_id(66116); + + let constructor_params = fil_actor_paych_state::v16::ConstructorParams { + from: Address::new_id(1234).into(), + to: Address::new_id(8457).into(), + }; + + let update_channel_state = fil_actor_paych_state::v16::UpdateChannelStateParams { + sv: fil_actor_paych_state::v16::SignedVoucher { + channel_addr: Address::new_id(1000).into(), + time_lock_min: 21, + time_lock_max: 234, + secret_pre_image: vec![], + extra: Some(fil_actor_paych_state::v16::ModVerifyParams { + actor: Address::new_id(1234).into(), + method: 223, + data: Default::default(), + }), + lane: 234, + nonce: 231, + amount: Default::default(), + min_settle_height: 0, + merges: vec![], + signature: None, + }, + secret: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data + }; + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + paych_address, + fil_actor_paych_state::v16::Method::Constructor as u64, + to_vec(&constructor_params).unwrap(), + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + paych_address, + fil_actor_paych_state::v16::Method::UpdateChannelState as u64, + to_vec(&update_channel_state).unwrap(), + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + paych_address, + fil_actor_paych_state::v16::Method::Settle as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + paych_address, + fil_actor_paych_state::v16::Method::Collect as u64, + vec![], + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs new file mode 100644 index 000000000000..150c2bb865e5 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs @@ -0,0 +1,120 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; +use crate::shim::sector::StoragePower; + +/// Creates state decode params tests for the Storage Power actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let power_create_miner_params = fil_actor_power_state::v16::CreateMinerParams { + owner: Address::new_id(1000).into(), + worker: Address::new_id(1001).into(), + window_post_proof_type: fvm_shared4::sector::RegisteredPoStProof::StackedDRGWinning2KiBV1, + peer: b"miner".to_vec(), + multiaddrs: Default::default(), + }; + + // not supported by the lotus + // let _power_miner_power_exp_params = fil_actor_power_state::v16::MinerPowerParams{ + // miner: 1234, + // }; + + let power_update_claim_params = fil_actor_power_state::v16::UpdateClaimedPowerParams { + raw_byte_delta: StoragePower::from(1024u64), + quality_adjusted_delta: StoragePower::from(2048u64), + }; + + let power_enroll_event_params = fil_actor_power_state::v16::EnrollCronEventParams { + event_epoch: 123, + payload: Default::default(), + }; + + let power_update_pledge_ttl_params = fil_actor_power_state::v16::UpdatePledgeTotalParams { + pledge_delta: Default::default(), + }; + + let power_miner_raw_params = fil_actor_power_state::v16::MinerRawPowerParams { miner: 1234 }; + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::CreateMiner as u64, + to_vec(&power_create_miner_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::UpdateClaimedPower as u64, + to_vec(&power_update_claim_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::EnrollCronEvent as u64, + to_vec(&power_enroll_event_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::UpdatePledgeTotal as u64, + to_vec(&power_update_pledge_ttl_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::CreateMinerExported as u64, + to_vec(&power_create_miner_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::MinerRawPowerExported as u64, + to_vec(&power_miner_raw_params)?, + tipset.key().into(), + ))?), + // Not supported by the lotus, + // TODO(go-state-types): https://github.com/filecoin-project/go-state-types/issues/401 + // RpcTest::identity(StateDecodeParams::request(( + // Address::POWER_ACTOR, + // Method::MinerPowerExported as u64, + // to_vec(&power_miner_power_exp_params)?, + // tipset.key().into(), + // ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::Constructor as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::OnEpochTickEnd as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::CurrentTotalPower as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::NetworkRawPowerExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::MinerCountExported as u64, + vec![], + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::POWER_ACTOR, + fil_actor_power_state::v16::Method::MinerConsensusCountExported as u64, + vec![], + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/reward.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/reward.rs new file mode 100644 index 000000000000..19610598ff8b --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/reward.rs @@ -0,0 +1,52 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; +use num_bigint::BigInt; + +/// Creates state decode params tests for the Reward actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let reward_constructor_params = fil_actor_reward_state::v16::ConstructorParams { + power: Some(Default::default()), + }; + + let reward_award_block_reward_params = fil_actor_reward_state::v16::AwardBlockRewardParams { + miner: Address::new_id(1000).into(), + penalty: Default::default(), + gas_reward: Default::default(), + win_count: 0, + }; + + let reward_update_network_params = fil_actor_reward_state::v16::UpdateNetworkKPIParams { + curr_realized_power: Option::from(fvm_shared4::bigint::bigint_ser::BigIntDe(BigInt::from( + 111, + ))), + }; + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + Address::REWARD_ACTOR, + fil_actor_reward_state::v16::Method::Constructor as u64, + to_vec(&reward_constructor_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::REWARD_ACTOR, + fil_actor_reward_state::v16::Method::AwardBlockReward as u64, + to_vec(&reward_award_block_reward_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::REWARD_ACTOR, + fil_actor_reward_state::v16::Method::UpdateNetworkKPI as u64, + to_vec(&reward_update_network_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::REWARD_ACTOR, + fil_actor_reward_state::v16::Method::ThisEpochReward as u64, + vec![], + tipset.key().into(), + ))?), + ]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/system.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/system.rs new file mode 100644 index 000000000000..c7ff2d1d2c6e --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/system.rs @@ -0,0 +1,14 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; + +/// Creates state decode params tests for the System actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + Ok(vec![RpcTest::identity(StateDecodeParams::request(( + Address::SYSTEM_ACTOR, + fil_actor_system_state::v16::Method::Constructor as u64, + vec![], + tipset.key().into(), + ))?)]) +} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/verified_reg.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/verified_reg.rs new file mode 100644 index 000000000000..2a59668be5e1 --- /dev/null +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/verified_reg.rs @@ -0,0 +1,198 @@ +// Copyright 2019-2025 ChainSafe Systems +// SPDX-License-Identifier: Apache-2.0, MIT + +use super::*; +use crate::shim::sector::StoragePower; + +/// Creates state decode params tests for the Verified Registry actor. +pub fn create_tests(tipset: &Tipset) -> Result> { + let verified_reg_constructor_params = fil_actor_verifreg_state::v16::ConstructorParams { + root_key: Address::new_id(1000).into(), + }; + + let verified_reg_add_verifier_params = fil_actor_verifreg_state::v16::AddVerifierParams { + address: Address::new_id(1234).into(), + allowance: StoragePower::from(1048576u64), // 1MB + }; + + let verified_reg_remove_verifier_params = fil_actor_verifreg_state::v16::RemoveVerifierParams { + verifier: Address::new_id(1234).into(), + }; + + let verified_reg_add_verified_client_params = + fil_actor_verifreg_state::v16::AddVerifiedClientParams { + address: Address::new_id(1235).into(), + allowance: fil_actor_verifreg_state::v16::types::DataCap::from(2097152u64), // 2MB + }; + + let verified_reg_remove_data_cap_params = fil_actor_verifreg_state::v16::RemoveDataCapParams { + verified_client_to_remove: Address::new_id(1236).into(), + data_cap_amount_to_remove: fil_actor_verifreg_state::v16::types::DataCap::from(1048576u64), + verifier_request_1: fil_actor_verifreg_state::v16::RemoveDataCapRequest { + verifier: Address::new_id(1237).into(), + signature: fvm_shared4::crypto::signature::Signature::new_bls( + b"test_signature_1".to_vec(), + ), + }, + verifier_request_2: fil_actor_verifreg_state::v16::RemoveDataCapRequest { + verifier: Address::new_id(1238).into(), + signature: fvm_shared4::crypto::signature::Signature::new_secp256k1( + b"test_signature_2".to_vec(), + ), + }, + }; + + let verified_reg_remove_expired_allocations_params = + fil_actor_verifreg_state::v16::RemoveExpiredAllocationsParams { + client: 1239, + allocation_ids: vec![1001, 1002, 1003], + }; + + let verified_reg_claim_allocations_params = + fil_actor_verifreg_state::v16::ClaimAllocationsParams { + sectors: vec![fil_actor_verifreg_state::v16::SectorAllocationClaims { + sector: 42, + expiry: 2000000, + claims: vec![ + fil_actor_verifreg_state::v16::AllocationClaim { + client: 1240, + allocation_id: 2001, + data: Cid::default(), + size: fvm_shared4::piece::PaddedPieceSize(1024), + }, + fil_actor_verifreg_state::v16::AllocationClaim { + client: 1241, + allocation_id: 2002, + data: Cid::default(), + size: fvm_shared4::piece::PaddedPieceSize(2048), + }, + ], + }], + all_or_nothing: false, + }; + + let verified_reg_get_claims_params = fil_actor_verifreg_state::v16::GetClaimsParams { + provider: 1242, + claim_ids: vec![3001, 3002, 3003], + }; + + let verified_reg_extend_claim_terms_params = + fil_actor_verifreg_state::v16::ExtendClaimTermsParams { + terms: vec![fil_actor_verifreg_state::v16::ClaimTerm { + provider: 12, + claim_id: 12, + term_max: 123, + }], + }; + + let verified_reg_remove_expired_claims_params = + fil_actor_verifreg_state::v16::RemoveExpiredClaimsParams { + provider: 1243, + claim_ids: vec![4001, 4002, 4003], + }; + + let verified_reg_universal_receiver_params = + fvm_actor_utils::receiver::UniversalReceiverParams { + type_: 42, + payload: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56, 0x78]), + }; + + Ok(vec![ + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::Constructor as u64, + to_vec(&verified_reg_constructor_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::AddVerifier as u64, + to_vec(&verified_reg_add_verifier_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::RemoveVerifier as u64, + to_vec(&verified_reg_remove_verifier_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::AddVerifiedClient as u64, + to_vec(&verified_reg_add_verified_client_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::RemoveVerifiedClientDataCap as u64, + to_vec(&verified_reg_remove_data_cap_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::RemoveExpiredAllocations as u64, + to_vec(&verified_reg_remove_expired_allocations_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::ClaimAllocations as u64, + to_vec(&verified_reg_claim_allocations_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::GetClaims as u64, + to_vec(&verified_reg_get_claims_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::ExtendClaimTerms as u64, + to_vec(&verified_reg_extend_claim_terms_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::RemoveExpiredClaims as u64, + to_vec(&verified_reg_remove_expired_claims_params)?, + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::AddVerifiedClientExported as u64, + to_vec(&verified_reg_add_verified_client_params)?, // reuse same params + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::RemoveExpiredAllocationsExported as u64, + to_vec(&verified_reg_remove_expired_allocations_params)?, // reuse same params + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::GetClaimsExported as u64, + to_vec(&verified_reg_get_claims_params)?, // reuse same params + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::ExtendClaimTermsExported as u64, + to_vec(&verified_reg_extend_claim_terms_params)?, // reuse same params + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::RemoveExpiredClaimsExported as u64, + to_vec(&verified_reg_remove_expired_claims_params)?, // reuse same params + tipset.key().into(), + ))?), + RpcTest::identity(StateDecodeParams::request(( + Address::VERIFIED_REGISTRY_ACTOR, + fil_actor_verifreg_state::v16::Method::UniversalReceiverHook as u64, + to_vec(&verified_reg_universal_receiver_params)?, + tipset.key().into(), + ))?), + ]) +} From 77cee586909764cce5c5c7d066dff02acd641c0c Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 10 Sep 2025 16:57:35 +0530 Subject: [PATCH 12/18] fix linter issue --- src/lotus_json/actors/params/init_params.rs | 4 ++-- src/lotus_json/actors/params/miner_params.rs | 6 ++---- src/rpc/registry/actors_reg.rs | 10 +++++----- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/lotus_json/actors/params/init_params.rs b/src/lotus_json/actors/params/init_params.rs index 6adbe114945e..941706cf1720 100644 --- a/src/lotus_json/actors/params/init_params.rs +++ b/src/lotus_json/actors/params/init_params.rs @@ -140,11 +140,11 @@ macro_rules! impl_lotus_json_for_init_exec4_params { vec![ ( json!({ - "CodeCid": { + "CodeCID": { "/": "baeaaaaa" }, "ConstructorParams": "ESIzRFU=", - "Subaddress": "ESIzRFU=", + "SubAddress": "ESIzRFU=", }), Self { code_cid: Cid::default(), diff --git a/src/lotus_json/actors/params/miner_params.rs b/src/lotus_json/actors/params/miner_params.rs index 4849840c2907..04e0882b521c 100644 --- a/src/lotus_json/actors/params/miner_params.rs +++ b/src/lotus_json/actors/params/miner_params.rs @@ -2518,7 +2518,7 @@ macro_rules! impl_lotus_json_for_miner_apply_reward_params { }; } -macro_rules! impl_lotus_json_for_miner_prove_commit_aggregate_params_v13_and_above { +macro_rules! impl_lotus_json_for_miner_prove_commit_aggregate_params_v9_to_v16 { ($($version:literal),+) => { $( paste! { @@ -3725,9 +3725,7 @@ impl_lotus_json_for_miner_prove_replica_updates3_params!(13, 14, 15, 16, 17); impl_lotus_json_for_miner_report_consensus_fault_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); impl_lotus_json_for_miner_check_sector_proven_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); impl_lotus_json_for_miner_apply_reward_params!(8, 9, 10, 11, 12, 13, 14, 15, 16, 17); -impl_lotus_json_for_miner_prove_commit_aggregate_params_v13_and_above!( - 9, 10, 11, 12, 13, 14, 15, 16 -); +impl_lotus_json_for_miner_prove_commit_aggregate_params_v9_to_v16!(9, 10, 11, 12, 13, 14, 15, 16); impl_lotus_json_for_miner_prove_replica_updates_params!(fvm_shared2: 8, 9); impl_lotus_json_for_miner_prove_replica_updates_params!(fvm_shared3: 10, 11); impl_lotus_json_for_miner_prove_replica_updates_params!(fvm_shared4: 12, 13, 14, 15, 16); diff --git a/src/rpc/registry/actors_reg.rs b/src/rpc/registry/actors_reg.rs index 5fd065d8df7b..f990a51d4764 100644 --- a/src/rpc/registry/actors_reg.rs +++ b/src/rpc/registry/actors_reg.rs @@ -27,11 +27,11 @@ impl ActorRegistry { fn new() -> Self { let mut map = HashMap::new(); for ((_, _), metadata) in ACTOR_BUNDLES_METADATA.iter() { - if let Ok(version_u64) = metadata.actor_major_version() { - if let Some(version) = ActorVersion::from_repr(version_u64 as u8) { - for (actor_type, cid) in metadata.manifest.builtin_actors() { - map.insert(cid, (actor_type, version)); - } + if let Ok(version_u64) = metadata.actor_major_version() + && let Some(version) = ActorVersion::from_repr(version_u64 as u8) + { + for (actor_type, cid) in metadata.manifest.builtin_actors() { + map.insert(cid, (actor_type, version)); } } } From 3448b337c8efeb140666f750a1caeaf73267d546 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 10 Sep 2025 17:18:12 +0530 Subject: [PATCH 13/18] remove uneccessary files --- .../state_decode_params/mod.rs | 52 ------------------- .../api_cmd/state_decode_params_tests/mod.rs | 6 --- 2 files changed, 58 deletions(-) delete mode 100644 src/tool/subcommands/api_cmd/api_compare_tests/state_decode_params/mod.rs diff --git a/src/tool/subcommands/api_cmd/api_compare_tests/state_decode_params/mod.rs b/src/tool/subcommands/api_cmd/api_compare_tests/state_decode_params/mod.rs deleted file mode 100644 index d8a151dba01b..000000000000 --- a/src/tool/subcommands/api_cmd/api_compare_tests/state_decode_params/mod.rs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2019-2025 ChainSafe Systems -// SPDX-License-Identifier: Apache-2.0, MIT - -//! State decode params tests for various actors. -//! -//! This module contains test functions for verifying StateDecodeParams API functionality -//! across different actor types in the Filecoin network. - -use crate::blocks::Tipset; -use anyhow::Result; - -use super::RpcTest; - -// Module declarations for each actor -mod account; -mod datacap; -mod eam; -mod evm; -mod init; -mod market; -mod miner; -mod multisig; -mod paych; -mod power; -mod reward; -mod verified_reg; - -/// Creates all state decode params tests for all supported actors. -/// -/// This function aggregates test cases from all actor-specific modules -/// and includes some basic system-level tests. -pub fn create_all_state_decode_params_tests(tipset: &Tipset) -> Result> { - let mut tests = Vec::new(); - - // TODO: Add system and cron actor tests here when implemented - - // Actor-specific tests - tests.extend(account::create_tests(tipset)?); - tests.extend(datacap::create_tests(tipset)?); - tests.extend(eam::create_tests(tipset)?); - tests.extend(evm::create_tests(tipset)?); - tests.extend(init::create_tests(tipset)?); - tests.extend(market::create_tests(tipset)?); - tests.extend(miner::create_tests(tipset)?); - tests.extend(multisig::create_tests(tipset)?); - tests.extend(paych::create_tests(tipset)?); - tests.extend(power::create_tests(tipset)?); - tests.extend(reward::create_tests(tipset)?); - tests.extend(verified_reg::create_tests(tipset)?); - - Ok(tests) -} diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/mod.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/mod.rs index 9464d954d1c1..41ea269d16f6 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/mod.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/mod.rs @@ -1,11 +1,6 @@ // Copyright 2019-2025 ChainSafe Systems // SPDX-License-Identifier: Apache-2.0, MIT -//! State decode params tests for various actors. -//! -//! This module contains test functions for verifying StateDecodeParams API functionality -//! across different actor types in the Filecoin network. - use crate::blocks::Tipset; use crate::rpc::RpcMethodExt; use crate::rpc::prelude::StateDecodeParams; @@ -16,7 +11,6 @@ use anyhow::Result; use cid::Cid; use fvm_ipld_encoding::to_vec; -// Module declarations for each actor mod account; mod cron; mod datacap; From 18c649508fdc5d49fa8277892ad4281f12273fd5 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 10 Sep 2025 17:29:34 +0530 Subject: [PATCH 14/18] resolve ai comments --- .../api_cmd/state_decode_params_tests/account.rs | 5 +++-- .../subcommands/api_cmd/state_decode_params_tests/init.rs | 7 ++++--- .../subcommands/api_cmd/state_decode_params_tests/paych.rs | 4 ++-- .../subcommands/api_cmd/state_decode_params_tests/power.rs | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs index 3f4c431a87e0..9456015b69e2 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs @@ -15,16 +15,17 @@ pub fn create_tests(tipset: &Tipset) -> Result> { }; const ACCOUNT_ADDRESS: Address = Address::new_id(1234); + use fil_actor_account_state::v16::Method; Ok(vec![ RpcTest::identity(StateDecodeParams::request(( ACCOUNT_ADDRESS, - 1, + Method::Constructor as u64, to_vec(&account_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( ACCOUNT_ADDRESS, - 2643134072, // frc42_dispatch::method_hash!("AuthenticateMessage"), + Method::AuthenticateMessageExported as u64, to_vec(&account_auth_params)?, tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs index 32e274c03883..f96e80f65408 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs @@ -20,22 +20,23 @@ pub fn create_tests(tipset: &Tipset) -> Result> { constructor_params: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode }; + use fil_actor_init_state::v16::Method; Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::INIT_ACTOR, - 1, + Method::Constructor as u64, to_vec(&init_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::INIT_ACTOR, - 2, + Method::Exec as u64, to_vec(&init_exec_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::INIT_ACTOR, - 3, + Method::Exec4 as u64, to_vec(&init_exec4_params)?, tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs index d9fad209938f..0426cd20677c 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs @@ -39,13 +39,13 @@ pub fn create_tests(tipset: &Tipset) -> Result> { RpcTest::identity(StateDecodeParams::request(( paych_address, fil_actor_paych_state::v16::Method::Constructor as u64, - to_vec(&constructor_params).unwrap(), + to_vec(&constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( paych_address, fil_actor_paych_state::v16::Method::UpdateChannelState as u64, - to_vec(&update_channel_state).unwrap(), + to_vec(&update_channel_state)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs index 150c2bb865e5..4ee73ecc5cb6 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs @@ -9,7 +9,7 @@ pub fn create_tests(tipset: &Tipset) -> Result> { let power_create_miner_params = fil_actor_power_state::v16::CreateMinerParams { owner: Address::new_id(1000).into(), worker: Address::new_id(1001).into(), - window_post_proof_type: fvm_shared4::sector::RegisteredPoStProof::StackedDRGWinning2KiBV1, + window_post_proof_type: fvm_shared4::sector::RegisteredPoStProof::StackedDRGWindow32GiBV1P1, peer: b"miner".to_vec(), multiaddrs: Default::default(), }; From 6f54f7930b86b11973dc600015d5c97ab6af2ee1 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Wed, 10 Sep 2025 17:37:36 +0530 Subject: [PATCH 15/18] resolve one more ai comment --- src/lotus_json/actors/params/init_params.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lotus_json/actors/params/init_params.rs b/src/lotus_json/actors/params/init_params.rs index 941706cf1720..a754fac3945f 100644 --- a/src/lotus_json/actors/params/init_params.rs +++ b/src/lotus_json/actors/params/init_params.rs @@ -96,7 +96,7 @@ macro_rules! impl_lotus_json_for_init_exec_params { vec![ ( json!({ - "CodeCid": { + "CodeCID": { "/": "baeaaaaa" }, "ConstructorParams": "ESIzRFU=", From bb31a60be03028e5bc7e39cba88af0d7bff63f21 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Thu, 11 Sep 2025 20:53:18 +0530 Subject: [PATCH 16/18] update state to version 17 --- src/state_migration/nv27/mod.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/state_migration/nv27/mod.rs b/src/state_migration/nv27/mod.rs index 02b2c1c8d52a..52cded6a7efc 100644 --- a/src/state_migration/nv27/mod.rs +++ b/src/state_migration/nv27/mod.rs @@ -12,8 +12,7 @@ use crate::{define_system_states, impl_system, impl_verifier}; define_system_states!( fil_actor_system_state::v16::State, - // TODO(forest): https://github.com/ChainSafe/forest/issues/5985 - fil_actor_system_state::v16::State + fil_actor_system_state::v17::State ); impl_system!(); From d7a4cb2bbef53226172cd43dba21ed0df45837f1 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Thu, 11 Sep 2025 21:03:00 +0530 Subject: [PATCH 17/18] update staate decode param test to v17 --- .../state_decode_params_tests/account.rs | 6 +- .../api_cmd/state_decode_params_tests/cron.rs | 11 +- .../state_decode_params_tests/datacap.rs | 41 +-- .../api_cmd/state_decode_params_tests/eam.rs | 16 +- .../state_decode_params_tests/ethaccount.rs | 3 +- .../api_cmd/state_decode_params_tests/evm.rs | 26 +- .../api_cmd/state_decode_params_tests/init.rs | 8 +- .../state_decode_params_tests/market.rs | 135 ++++---- .../state_decode_params_tests/miner.rs | 308 +++++++----------- .../state_decode_params_tests/multisig.rs | 40 +-- .../state_decode_params_tests/paych.rs | 17 +- .../state_decode_params_tests/power.rs | 37 ++- .../state_decode_params_tests/reward.rs | 15 +- .../state_decode_params_tests/system.rs | 3 +- .../state_decode_params_tests/verified_reg.rs | 134 ++++---- 15 files changed, 371 insertions(+), 429 deletions(-) diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs index 9456015b69e2..317afb03cbf0 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs @@ -2,20 +2,20 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_account_state::v17::*; /// Creates state decode params tests for the Account actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let account_constructor_params = fil_actor_account_state::v16::types::ConstructorParams { + let account_constructor_params = types::ConstructorParams { address: Address::new_id(1234).into(), }; - let account_auth_params = fil_actor_account_state::v16::types::AuthenticateMessageParams { + let account_auth_params = types::AuthenticateMessageParams { signature: vec![0x00; 32], // dummy signature message: b"test message".to_vec(), }; const ACCOUNT_ADDRESS: Address = Address::new_id(1234); - use fil_actor_account_state::v16::Method; Ok(vec![ RpcTest::identity(StateDecodeParams::request(( ACCOUNT_ADDRESS, diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/cron.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/cron.rs index 54f9cc08d915..a8aacb4b0338 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/cron.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/cron.rs @@ -2,13 +2,14 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_cron_state::v17::*; /// Creates state decode params tests for the Cron actor. pub fn create_tests(tipset: &Tipset) -> anyhow::Result> { - // let cron_constructor_params = fil_actor_cron_state::v16::ConstructorParams { - // entries: vec![fil_actor_cron_state::v16::Entry { + // let cron_constructor_params = ConstructorParams { + // entries: vec![Entry { // receiver: Address::new_id(1000).into(), - // method_num: fil_actor_cron_state::v16::Method::EpochTick as u64, + // method_num: EpochTick as u64, // }], // }; @@ -17,13 +18,13 @@ pub fn create_tests(tipset: &Tipset) -> anyhow::Result> { // Enable this test when lotus supports it in go-state-types. // RpcTest::identity(StateDecodeParams::request(( // Address::CRON_ACTOR, - // fil_actor_cron_state::v16::Method::Constructor as u64, + // Constructor as u64, // to_vec(&cron_constructor_params)?, // tipset.key().into(), // ))?), RpcTest::identity(StateDecodeParams::request(( Address::CRON_ACTOR, - fil_actor_cron_state::v16::Method::EpochTick as u64, + Method::EpochTick as u64, vec![], tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/datacap.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/datacap.rs index d373f5c0f710..02865b577b64 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/datacap.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/datacap.rs @@ -2,25 +2,26 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_datacap_state::v17::*; /// Creates state decode params tests for the Datacap actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let datacap_constructor_params = fil_actor_datacap_state::v16::ConstructorParams { + let datacap_constructor_params = ConstructorParams { governor: Address::new_id(3000).into(), }; - let datacap_mint_params = fil_actor_datacap_state::v16::MintParams { + let datacap_mint_params = MintParams { to: Address::new_id(3001).into(), amount: TokenAmount::default().into(), operators: vec![Address::new_id(3002).into(), Address::new_id(3003).into()], }; - let datacap_destroy_params = fil_actor_datacap_state::v16::DestroyParams { + let datacap_destroy_params = DestroyParams { owner: Address::new_id(3004).into(), amount: TokenAmount::default().into(), }; - let datacap_balance_params = fil_actor_datacap_state::v16::BalanceParams { + let datacap_balance_params = BalanceParams { address: Address::new_id(3005).into(), }; @@ -73,97 +74,97 @@ pub fn create_tests(tipset: &Tipset) -> Result> { Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::Constructor as u64, + Method::Constructor as u64, to_vec(&datacap_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::MintExported as u64, + Method::MintExported as u64, to_vec(&datacap_mint_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::DestroyExported as u64, + Method::DestroyExported as u64, to_vec(&datacap_destroy_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::NameExported as u64, + Method::NameExported as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::SymbolExported as u64, + Method::SymbolExported as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::TotalSupplyExported as u64, + Method::TotalSupplyExported as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::BalanceExported as u64, + Method::BalanceExported as u64, to_vec(&datacap_balance_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::GranularityExported as u64, + Method::GranularityExported as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::TransferExported as u64, + Method::TransferExported as u64, to_vec(&datacap_transfer_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::TransferFromExported as u64, + Method::TransferFromExported as u64, to_vec(&datacap_transfer_from_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::IncreaseAllowanceExported as u64, + Method::IncreaseAllowanceExported as u64, to_vec(&datacap_increase_allowance_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::DecreaseAllowanceExported as u64, + Method::DecreaseAllowanceExported as u64, to_vec(&datacap_decrease_allowance_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::RevokeAllowanceExported as u64, + Method::RevokeAllowanceExported as u64, to_vec(&datacap_revoke_allowance_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::BurnExported as u64, + Method::BurnExported as u64, to_vec(&datacap_burn_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::BurnFromExported as u64, + Method::BurnFromExported as u64, to_vec(&datacap_burn_from_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::DATACAP_TOKEN_ACTOR, - fil_actor_datacap_state::v16::Method::AllowanceExported as u64, + Method::AllowanceExported as u64, to_vec(&datacap_get_allowance_params)?, tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/eam.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/eam.rs index 2f38cfc4cb86..9ebd75ec914c 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/eam.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/eam.rs @@ -2,44 +2,44 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_eam_state::v17::*; /// Creates state decode params tests for the EAM actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let create_params = fil_actor_eam_state::v16::CreateParams { + let create_params = CreateParams { initcode: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data nonce: 2, }; - let create_params2 = fil_actor_eam_state::v16::Create2Params { + let create_params2 = Create2Params { initcode: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data salt: [0; 32], }; - let create_external_params = - fil_actor_eam_state::v16::CreateExternalParams(vec![0x11, 0x22, 0x33, 0x44, 0x55]); + let create_external_params = CreateExternalParams(vec![0x11, 0x22, 0x33, 0x44, 0x55]); Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, - fil_actor_eam_state::v16::Method::Constructor as u64, + Method::Constructor as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, - fil_actor_eam_state::v16::Method::Create as u64, + Method::Create as u64, to_vec(&create_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, - fil_actor_eam_state::v16::Method::Create2 as u64, + Method::Create2 as u64, to_vec(&create_params2)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR, - fil_actor_eam_state::v16::Method::CreateExternal as u64, + Method::CreateExternal as u64, to_vec(&create_external_params)?, tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs index 3147bc05027d..c8758cbd4e5a 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs @@ -2,12 +2,13 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_ethaccount_state::v17::*; /// Creates state decode params tests for the EthAccount actor. pub fn create_tests(tipset: &Tipset) -> anyhow::Result> { Ok(vec![RpcTest::identity(StateDecodeParams::request(( Address::new_delegated(Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR.id()?, &[0; 20]).unwrap(), - fil_actor_ethaccount_state::v16::Method::Constructor as u64, + Method::Constructor as u64, vec![], tipset.key().into(), ))?)]) diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs index 322551973ee3..38e3c2f4a891 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs @@ -3,25 +3,27 @@ use super::*; use crate::rpc::eth::types::GetStorageAtParams; +use fil_actor_evm_state::evm_shared::v17::address::EthAddress; +use fil_actor_evm_state::v17::*; use std::str::FromStr; const EVM_ADDRESS: &str = "t410fbqoynu2oi2lxam43knqt6ordiowm2ywlml27z4i"; /// Creates state decode params tests for the EVM actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let evm_constructor_params = fil_actor_evm_state::v16::ConstructorParams { - creator: fil_actor_evm_state::evm_shared::v16::address::EthAddress([0; 20]), + let evm_constructor_params = ConstructorParams { + creator: EthAddress([0; 20]), initcode: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode }; - let evm_invoke_contract_params = fil_actor_evm_state::v16::InvokeContractParams { + let evm_invoke_contract_params = InvokeContractParams { input_data: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy input data }; - let evm_delegate_call_params = fil_actor_evm_state::v16::DelegateCallParams { + let evm_delegate_call_params = DelegateCallParams { code: Cid::default(), input: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy input data - caller: fil_actor_evm_state::evm_shared::v16::address::EthAddress([0; 20]), + caller: EthAddress([0; 20]), value: TokenAmount::default().into(), }; @@ -30,43 +32,43 @@ pub fn create_tests(tipset: &Tipset) -> Result> { Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::Constructor as u64, + Method::Constructor as u64, to_vec(&evm_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::Resurrect as u64, + Method::Resurrect as u64, to_vec(&evm_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::GetBytecode as u64, + Method::GetBytecode as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::GetBytecodeHash as u64, + Method::GetBytecodeHash as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::InvokeContract as u64, + Method::InvokeContract as u64, to_vec(&evm_invoke_contract_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::InvokeContractDelegate as u64, + Method::InvokeContractDelegate as u64, to_vec(&evm_delegate_call_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::from_str(EVM_ADDRESS).unwrap(), - fil_actor_evm_state::v16::Method::GetStorageAt as u64, + Method::GetStorageAt as u64, evm_get_storage_at_params.serialize_params()?, tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs index f96e80f65408..c4ab84135310 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs @@ -2,25 +2,25 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_init_state::v17::*; /// Creates state decode params tests for the Init actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let init_constructor_params = fil_actor_init_state::v16::ConstructorParams { + let init_constructor_params = ConstructorParams { network_name: "calibnet".to_string(), }; - let init_exec4_params = fil_actor_init_state::v16::Exec4Params { + let init_exec4_params = Exec4Params { code_cid: Cid::default(), constructor_params: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode subaddress: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode }; - let init_exec_params = fil_actor_init_state::v16::ExecParams { + let init_exec_params = ExecParams { code_cid: Cid::default(), constructor_params: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode }; - use fil_actor_init_state::v16::Method; Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::INIT_ACTOR, diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/market.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/market.rs index ac232eeed1c8..9ce5b55708be 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/market.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/market.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_market_state::v17::*; use fil_actors_shared::fvm_ipld_bitfield::BitField; /// Creates state decode params tests for the Market actor. @@ -13,18 +14,18 @@ pub fn create_tests(tipset: &Tipset) -> Result> { provider_collateral: fvm_shared4::econ::TokenAmount, start_epoch: fvm_shared4::clock::ChainEpoch, end_epoch: fvm_shared4::clock::ChainEpoch, - ) -> fil_actor_market_state::v16::DealProposal { + ) -> DealProposal { let piece_cid = Cid::default(); let piece_size = fvm_shared4::piece::PaddedPieceSize(2048); let storage_price_per_epoch = fvm_shared4::econ::TokenAmount::from_atto(10u8); - fil_actor_market_state::v16::DealProposal { + DealProposal { piece_cid, piece_size, verified_deal: false, client, provider, - label: fil_actor_market_state::v16::Label::String("label".to_string()), + label: Label::String("label".to_string()), start_epoch, end_epoch, storage_price_per_epoch, @@ -33,7 +34,7 @@ pub fn create_tests(tipset: &Tipset) -> Result> { } } - fn create_client_deal_proposal() -> fil_actor_market_state::v16::ClientDealProposal { + fn create_client_deal_proposal() -> ClientDealProposal { let proposal = create_deal_proposal( fvm_shared4::address::Address::new_id(1000), fvm_shared4::address::Address::new_id(1000), @@ -42,7 +43,7 @@ pub fn create_tests(tipset: &Tipset) -> Result> { 0, 10, ); - fil_actor_market_state::v16::ClientDealProposal { + ClientDealProposal { proposal, client_signature: fvm_shared4::crypto::signature::Signature::new_bls( b"test_signature".to_vec(), @@ -50,8 +51,8 @@ pub fn create_tests(tipset: &Tipset) -> Result> { } } - fn create_sector_deals() -> fil_actor_market_state::v16::SectorDeals { - fil_actor_market_state::v16::SectorDeals { + fn create_sector_deals() -> SectorDeals { + SectorDeals { sector_number: 42, sector_type: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1, sector_expiry: 100, @@ -59,70 +60,64 @@ pub fn create_tests(tipset: &Tipset) -> Result> { } } - fn create_sector_changes() -> fil_actor_miner_state::v16::SectorChanges { - let piece_change = fil_actor_miner_state::v16::PieceChange { + fn create_sector_changes() -> ext::miner::SectorChanges { + let piece_change = ext::miner::PieceChange { data: Cid::default(), size: fvm_shared4::piece::PaddedPieceSize(2048), payload: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56, 0x78]), }; - fil_actor_miner_state::v16::SectorChanges { + ext::miner::SectorChanges { sector: 2, minimum_commitment_epoch: 0, added: vec![piece_change], } } - let market_actor_add_balance_params = fil_actor_market_state::v16::AddBalanceParams { + let market_actor_add_balance_params = AddBalanceParams { provider_or_client: fvm_shared4::address::Address::new_id(1000), }; - let market_actor_withdraw_balance_params = fil_actor_market_state::v16::WithdrawBalanceParams { + let market_actor_withdraw_balance_params = WithdrawBalanceParams { provider_or_client: Address::new_id(1000).into(), amount: TokenAmount::default().into(), }; - let market_actor_publish_storage_deals_params = - fil_actor_market_state::v16::PublishStorageDealsParams { - deals: vec![create_client_deal_proposal()], - }; + let market_actor_publish_storage_deals_params = PublishStorageDealsParams { + deals: vec![create_client_deal_proposal()], + }; - let _market_actor_verify_deals_for_activation_params = - fil_actor_market_state::v16::VerifyDealsForActivationParams { - sectors: vec![create_sector_deals()], - }; + let _market_actor_verify_deals_for_activation_params = VerifyDealsForActivationParams { + sectors: vec![create_sector_deals()], + }; - let _market_actor_batch_activate_deals_params = - fil_actor_market_state::v16::BatchActivateDealsParams { - sectors: vec![create_sector_deals()], - compute_cid: true, - }; + let _market_actor_batch_activate_deals_params = BatchActivateDealsParams { + sectors: vec![create_sector_deals()], + compute_cid: true, + }; - let _market_actor_on_miner_sectors_terminate_params = - fil_actor_market_state::v16::OnMinerSectorsTerminateParams { - epoch: 123, - sectors: { - let mut bf = BitField::new(); - bf.set(3); - bf - }, - }; + let _market_actor_on_miner_sectors_terminate_params = OnMinerSectorsTerminateParams { + epoch: 123, + sectors: { + let mut bf = BitField::new(); + bf.set(3); + bf + }, + }; let market_actor_get_balance_exported_params = Address::new_id(1000); - let market_actor_settle_deal_payments_params = - fil_actor_market_state::v16::SettleDealPaymentsParams { - deal_ids: { - let mut bf = BitField::new(); - bf.set(42); - bf - }, - }; + let market_actor_settle_deal_payments_params = SettleDealPaymentsParams { + deal_ids: { + let mut bf = BitField::new(); + bf.set(42); + bf + }, + }; - let market_actor_get_deal_data_commitment_params = - fil_actor_market_state::v16::DealQueryParams { id: 0 }; + let market_actor_get_deal_data_commitment_params = DealQueryParams { id: 0 }; let _market_actor_sector_content_changed_params = { - fil_actor_miner_state::v16::SectorContentChangedParams { + ext::miner::SectorContentChangedParams { sectors: vec![create_sector_changes()], } }; @@ -130,19 +125,19 @@ pub fn create_tests(tipset: &Tipset) -> Result> { Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::AddBalance as u64, + Method::AddBalance as u64, to_vec(&market_actor_add_balance_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::WithdrawBalance as u64, + Method::WithdrawBalance as u64, to_vec(&market_actor_withdraw_balance_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::PublishStorageDeals as u64, + Method::PublishStorageDeals as u64, to_vec(&market_actor_publish_storage_deals_params)?, tipset.key().into(), ))?), @@ -150,7 +145,7 @@ pub fn create_tests(tipset: &Tipset) -> Result> { // Enable this test when lotus supports this method // RpcTest::identity(StateDecodeParams::request(( // Address::MARKET_ACTOR, - // fil_actor_market_state::v16::Method::BatchActivateDeals as u64, + // Method::BatchActivateDeals as u64, // to_vec(&market_actor_batch_activate_deals_params)?, // tipset.key().into(), // ))?), @@ -158,7 +153,7 @@ pub fn create_tests(tipset: &Tipset) -> Result> { // Enable this test once Lotus adds the `sector_number` field. // RpcTest::identity(StateDecodeParams::request(( // Address::MARKET_ACTOR, - // fil_actor_market_state::v16::Method::VerifyDealsForActivation as u64, + // Method::VerifyDealsForActivation as u64, // to_vec(&market_actor_verify_deals_for_activation_params)?, // tipset.key().into(), // ))?), @@ -166,115 +161,115 @@ pub fn create_tests(tipset: &Tipset) -> Result> { // Enable this test when lotus supports correct types in go-state-types. // RpcTest::identity(StateDecodeParams::request(( // Address::MARKET_ACTOR, - // fil_actor_market_state::v16::Method::OnMinerSectorsTerminate as u64, + // Method::OnMinerSectorsTerminate as u64, // to_vec(&market_actor_on_miner_sectors_terminate_params)?, // tipset.key().into(), // ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::Constructor as u64, + Method::Constructor as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::CronTick as u64, + Method::CronTick as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::AddBalanceExported as u64, + Method::AddBalanceExported as u64, to_vec(&market_actor_get_balance_exported_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::WithdrawBalanceExported as u64, + Method::WithdrawBalanceExported as u64, to_vec(&market_actor_withdraw_balance_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::PublishStorageDealsExported as u64, + Method::PublishStorageDealsExported as u64, to_vec(&market_actor_publish_storage_deals_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetBalanceExported as u64, + Method::GetBalanceExported as u64, to_vec(&market_actor_get_balance_exported_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealDataCommitmentExported as u64, + Method::GetDealDataCommitmentExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealClientExported as u64, + Method::GetDealClientExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealProviderExported as u64, + Method::GetDealProviderExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealLabelExported as u64, + Method::GetDealLabelExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealTermExported as u64, + Method::GetDealTermExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealTotalPriceExported as u64, + Method::GetDealTotalPriceExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealClientCollateralExported as u64, + Method::GetDealClientCollateralExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealProviderCollateralExported as u64, + Method::GetDealProviderCollateralExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealVerifiedExported as u64, + Method::GetDealVerifiedExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealActivationExported as u64, + Method::GetDealActivationExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::GetDealSectorExported as u64, + Method::GetDealSectorExported as u64, to_vec(&market_actor_get_deal_data_commitment_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::MARKET_ACTOR, - fil_actor_market_state::v16::Method::SettleDealPaymentsExported as u64, + Method::SettleDealPaymentsExported as u64, to_vec(&market_actor_settle_deal_payments_params)?, tipset.key().into(), ))?), @@ -282,7 +277,7 @@ pub fn create_tests(tipset: &Tipset) -> Result> { // Lotus panics while decoding this method. // RpcTest::identity(StateDecodeParams::request(( // Address::MARKET_ACTOR, - // fil_actor_market_state::v16::Method::SectorContentChangedExported as u64, + // Method::SectorContentChangedExported as u64, // to_vec(&market_actor_sector_content_changed_params)?, // tipset.key().into(), // ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs index 7c16e56a95d8..45097f346df1 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs @@ -2,12 +2,14 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_miner_state::v17::*; +use fil_actors_shared::v17::reward::FilterEstimate; use fvm_ipld_encoding::{BytesDe, RawBytes}; use fvm_shared4::randomness::Randomness; /// Creates state decode params tests for the Miner actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let miner_constructor_params = fil_actor_miner_state::v16::MinerConstructorParams { + let miner_constructor_params = MinerConstructorParams { owner: Address::new_id(1000).into(), worker: Address::new_id(1001).into(), control_addresses: vec![Address::new_id(1002).into(), Address::new_id(1003).into()], @@ -16,36 +18,36 @@ pub fn create_tests(tipset: &Tipset) -> Result> { multi_addresses: Default::default(), }; - let miner_change_worker_params = fil_actor_miner_state::v16::ChangeWorkerAddressParams { + let miner_change_worker_params = ChangeWorkerAddressParams { new_worker: Address::new_id(2000).into(), new_control_addresses: vec![Address::new_id(2001).into()], }; - let miner_change_peer_id_params = fil_actor_miner_state::v16::ChangePeerIDParams { + let miner_change_peer_id_params = ChangePeerIDParams { new_id: b"new_peer".to_vec(), }; - let miner_change_multiaddrs_params = fil_actor_miner_state::v16::ChangeMultiaddrsParams { + let miner_change_multiaddrs_params = ChangeMultiaddrsParams { new_multi_addrs: vec![BytesDe(vec![1, 2, 3])], }; - let miner_change_owner_params = fil_actor_miner_state::v16::ChangeOwnerAddressParams { + let miner_change_owner_params = ChangeOwnerAddressParams { new_owner: Address::new_id(3000).into(), }; - let miner_change_beneficiary_params = fil_actor_miner_state::v16::ChangeBeneficiaryParams { + let miner_change_beneficiary_params = ChangeBeneficiaryParams { new_beneficiary: Address::new_id(4000).into(), new_quota: TokenAmount::from_atto(1000000000000000000u64).into(), new_expiration: 1000, }; - let miner_withdraw_balance_params = fil_actor_miner_state::v16::WithdrawBalanceParams { + let miner_withdraw_balance_params = WithdrawBalanceParams { amount_requested: TokenAmount::from_atto(500000000000000000u64).into(), }; - let miner_submit_windowed_post_params = fil_actor_miner_state::v16::SubmitWindowedPoStParams { + let miner_submit_windowed_post_params = SubmitWindowedPoStParams { deadline: 0, - partitions: vec![fil_actor_miner_state::v16::PoStPartition { + partitions: vec![PoStPartition { index: 0, skipped: Default::default(), }], @@ -54,209 +56,167 @@ pub fn create_tests(tipset: &Tipset) -> Result> { chain_commit_rand: Randomness(vec![1, 22, 43]), }; - let miner_extend_sector_expiration_params = - fil_actor_miner_state::v16::ExtendSectorExpirationParams { - extensions: vec![fil_actor_miner_state::v16::ExpirationExtension { - deadline: 12, - partition: 123, - sectors: Default::default(), - new_expiration: 1000, - }], - }; - - let miner_terminate_sectors_params = fil_actor_miner_state::v16::TerminateSectorsParams { - terminations: vec![fil_actor_miner_state::v16::TerminationDeclaration { + let miner_terminate_sectors_params = TerminateSectorsParams { + terminations: vec![TerminationDeclaration { deadline: 0, partition: 0, sectors: Default::default(), }], }; - let miner_declare_faults_params = fil_actor_miner_state::v16::DeclareFaultsParams { - faults: vec![fil_actor_miner_state::v16::FaultDeclaration { + let miner_declare_faults_params = DeclareFaultsParams { + faults: vec![FaultDeclaration { deadline: 0, partition: 0, sectors: Default::default(), }], }; - let miner_declare_faults_recovered_params = - fil_actor_miner_state::v16::DeclareFaultsRecoveredParams { - recoveries: vec![fil_actor_miner_state::v16::RecoveryDeclaration { - deadline: 0, - partition: 0, - sectors: Default::default(), - }], - }; + let miner_declare_faults_recovered_params = DeclareFaultsRecoveredParams { + recoveries: vec![RecoveryDeclaration { + deadline: 0, + partition: 0, + sectors: Default::default(), + }], + }; - let miner_deferred_cron_event_params = fil_actor_miner_state::v16::DeferredCronEventParams { + let miner_deferred_cron_event_params = DeferredCronEventParams { event_payload: vec![], - reward_smoothed: fil_actors_shared::v16::reward::FilterEstimate { + reward_smoothed: FilterEstimate { position: Default::default(), velocity: Default::default(), }, - quality_adj_power_smoothed: fil_actors_shared::v16::reward::FilterEstimate { + quality_adj_power_smoothed: FilterEstimate { position: Default::default(), velocity: Default::default(), }, }; - let miner_check_sector_proven_params = - fil_actor_miner_state::v16::CheckSectorProvenParams { sector_number: 0 }; + let miner_check_sector_proven_params = CheckSectorProvenParams { sector_number: 0 }; - let miner_apply_reward_params = fil_actor_miner_state::v16::ApplyRewardParams { + let miner_apply_reward_params = ApplyRewardParams { reward: TokenAmount::from_atto(1000000000000000000u64).into(), penalty: TokenAmount::from_atto(0u64).into(), }; - let miner_report_consensus_fault_params = - fil_actor_miner_state::v16::ReportConsensusFaultParams { - header1: vec![], - header2: vec![], - header_extra: vec![], - }; + let miner_report_consensus_fault_params = ReportConsensusFaultParams { + header1: vec![], + header2: vec![], + header_extra: vec![], + }; - let miner_compact_partitions_params = fil_actor_miner_state::v16::CompactPartitionsParams { + let miner_compact_partitions_params = CompactPartitionsParams { deadline: 0, partitions: Default::default(), }; - let miner_compact_sector_numbers_params = - fil_actor_miner_state::v16::CompactSectorNumbersParams { - mask_sector_numbers: Default::default(), - }; - - let miner_dispute_windowed_post_params = - fil_actor_miner_state::v16::DisputeWindowedPoStParams { - deadline: 0, - post_index: 0, - }; - - let miner_prove_commit_aggregate_params = - fil_actor_miner_state::v16::ProveCommitAggregateParams { - sector_numbers: Default::default(), - aggregate_proof: RawBytes::new(vec![]), - }; + let miner_compact_sector_numbers_params = CompactSectorNumbersParams { + mask_sector_numbers: Default::default(), + }; - let miner_prove_replica_updates_params = - fil_actor_miner_state::v16::ProveReplicaUpdatesParams { - updates: vec![fil_actor_miner_state::v16::ReplicaUpdate { - sector_number: 0, - deadline: 0, - partition: 0, - new_sealed_cid: Cid::default(), - deals: vec![], - update_proof_type: fvm_shared4::sector::RegisteredUpdateProof::StackedDRG2KiBV1, - replica_proof: RawBytes::new(vec![]), - }], - }; + let miner_dispute_windowed_post_params = DisputeWindowedPoStParams { + deadline: 0, + post_index: 0, + }; - let miner_pre_commit_sector_batch2_params = - fil_actor_miner_state::v16::PreCommitSectorBatchParams2 { - sectors: vec![fil_actor_miner_state::v16::SectorPreCommitInfo { - seal_proof: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1P1, - sector_number: 0, - sealed_cid: Cid::default(), - seal_rand_epoch: 0, - deal_ids: vec![], - expiration: 1000, - unsealed_cid: fil_actor_miner_state::v16::CompactCommD(None), - }], - }; + let miner_pre_commit_sector_batch2_params = PreCommitSectorBatchParams2 { + sectors: vec![SectorPreCommitInfo { + seal_proof: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1P1, + sector_number: 0, + sealed_cid: Cid::default(), + seal_rand_epoch: 0, + deal_ids: vec![], + expiration: 1000, + unsealed_cid: CompactCommD(None), + }], + }; - let miner_extend_sector_expiration2_params = - fil_actor_miner_state::v16::ExtendSectorExpiration2Params { - extensions: vec![fil_actor_miner_state::v16::ExpirationExtension2 { - deadline: 0, - partition: 0, - sectors: Default::default(), - sectors_with_claims: vec![], - new_expiration: 1000, - }], - }; + let miner_extend_sector_expiration2_params = ExtendSectorExpiration2Params { + extensions: vec![ExpirationExtension2 { + deadline: 0, + partition: 0, + sectors: Default::default(), + sectors_with_claims: vec![], + new_expiration: 1000, + }], + }; - let miner_is_controlling_address_param = - fil_actor_miner_state::v16::IsControllingAddressParam { - address: Address::new_id(5000).into(), - }; + let miner_is_controlling_address_param = IsControllingAddressParam { + address: Address::new_id(5000).into(), + }; - let miner_prove_commit_sectors3_params = - fil_actor_miner_state::v16::ProveCommitSectors3Params { - sector_activations: vec![fil_actor_miner_state::v16::SectorActivationManifest { - sector_number: 0, - pieces: vec![fil_actor_miner_state::v16::PieceActivationManifest { - cid: Cid::default(), - size: fvm_shared4::piece::PaddedPieceSize(23), - verified_allocation_key: None, - notify: vec![], - }], + let miner_prove_commit_sectors3_params = ProveCommitSectors3Params { + sector_activations: vec![SectorActivationManifest { + sector_number: 0, + pieces: vec![PieceActivationManifest { + cid: Cid::default(), + size: fvm_shared4::piece::PaddedPieceSize(23), + verified_allocation_key: None, + notify: vec![], }], - sector_proofs: vec![RawBytes::new(vec![])], - aggregate_proof: RawBytes::new(vec![]), - aggregate_proof_type: None, - require_activation_success: true, - require_notification_success: true, - }; + }], + sector_proofs: vec![RawBytes::new(vec![])], + aggregate_proof: RawBytes::new(vec![]), + aggregate_proof_type: None, + require_activation_success: true, + require_notification_success: true, + }; - let miner_prove_replica_updates3_params = - fil_actor_miner_state::v16::ProveReplicaUpdates3Params { - sector_updates: vec![fil_actor_miner_state::v16::SectorUpdateManifest { - sector: 0, - deadline: 0, - partition: 0, - new_sealed_cid: Cid::default(), - pieces: vec![fil_actor_miner_state::v16::PieceActivationManifest { - cid: Cid::default(), - size: fvm_shared4::piece::PaddedPieceSize(12), - verified_allocation_key: None, - notify: vec![], - }], + let miner_prove_replica_updates3_params = ProveReplicaUpdates3Params { + sector_updates: vec![SectorUpdateManifest { + sector: 0, + deadline: 0, + partition: 0, + new_sealed_cid: Cid::default(), + pieces: vec![PieceActivationManifest { + cid: Cid::default(), + size: fvm_shared4::piece::PaddedPieceSize(12), + verified_allocation_key: None, + notify: vec![], }], - sector_proofs: vec![RawBytes::new(vec![])], - aggregate_proof: RawBytes::new(vec![]), - update_proofs_type: fvm_shared4::sector::RegisteredUpdateProof::StackedDRG2KiBV1, - aggregate_proof_type: None, - require_activation_success: true, - require_notification_success: true, - }; + }], + sector_proofs: vec![RawBytes::new(vec![])], + aggregate_proof: RawBytes::new(vec![]), + update_proofs_type: fvm_shared4::sector::RegisteredUpdateProof::StackedDRG2KiBV1, + aggregate_proof_type: None, + require_activation_success: true, + require_notification_success: true, + }; - let miner_prove_commit_sectors_ni_params = - fil_actor_miner_state::v16::ProveCommitSectorsNIParams { - sectors: vec![fil_actor_miner_state::v16::SectorNIActivationInfo { - sealing_number: 12, - sealer_id: 23343, - sealed_cid: Cid::default(), - sector_number: 2343, - seal_rand_epoch: 2343, - expiration: 1000, - }], - aggregate_proof: RawBytes::new(vec![23, 2, 23]), - seal_proof_type: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1P1, - aggregate_proof_type: fvm_shared4::sector::RegisteredAggregateProof::SnarkPackV1, - proving_deadline: 234, - require_activation_success: true, - }; + let miner_prove_commit_sectors_ni_params = ProveCommitSectorsNIParams { + sectors: vec![SectorNIActivationInfo { + sealing_number: 12, + sealer_id: 23343, + sealed_cid: Cid::default(), + sector_number: 2343, + seal_rand_epoch: 2343, + expiration: 1000, + }], + aggregate_proof: RawBytes::new(vec![23, 2, 23]), + seal_proof_type: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1P1, + aggregate_proof_type: fvm_shared4::sector::RegisteredAggregateProof::SnarkPackV1, + proving_deadline: 234, + require_activation_success: true, + }; - let miner_internal_sector_setup_for_preseal_params = - fil_actor_miner_state::v16::InternalSectorSetupForPresealParams { - sectors: vec![0], - reward_smoothed: fil_actors_shared::v16::reward::FilterEstimate { - position: Default::default(), - velocity: Default::default(), - }, - reward_baseline_power: Default::default(), - quality_adj_power_smoothed: fil_actors_shared::v16::reward::FilterEstimate { - position: Default::default(), - velocity: Default::default(), - }, - }; + let miner_internal_sector_setup_for_preseal_params = InternalSectorSetupForPresealParams { + sectors: vec![0], + reward_smoothed: FilterEstimate { + position: Default::default(), + velocity: Default::default(), + }, + reward_baseline_power: Default::default(), + quality_adj_power_smoothed: FilterEstimate { + position: Default::default(), + velocity: Default::default(), + }, + }; - // let miner_max_termination_fee_params = fil_actor_miner_state::v16::MaxTerminationFeeParams { + // let miner_max_termination_fee_params = MaxTerminationFeeParams { // power: Default::default(), // initial_pledge: TokenAmount::from_atto(1000000000000000000u64).into(), // }; - use fil_actor_miner_state::v16::Method; const MINER_ADDRESS: Address = Address::new_id(78216); Ok(vec![ RpcTest::identity(StateDecodeParams::request(( @@ -290,12 +250,6 @@ pub fn create_tests(tipset: &Tipset) -> Result> { to_vec(&miner_submit_windowed_post_params)?, tipset.key().into(), ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ExtendSectorExpiration as u64, - to_vec(&miner_extend_sector_expiration_params)?, - tipset.key().into(), - ))?), RpcTest::identity(StateDecodeParams::request(( MINER_ADDRESS, Method::TerminateSectors as u64, @@ -392,18 +346,6 @@ pub fn create_tests(tipset: &Tipset) -> Result> { to_vec(&miner_dispute_windowed_post_params)?, tipset.key().into(), ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ProveCommitAggregate as u64, - to_vec(&miner_prove_commit_aggregate_params)?, - tipset.key().into(), - ))?), - RpcTest::identity(StateDecodeParams::request(( - MINER_ADDRESS, - Method::ProveReplicaUpdates as u64, - to_vec(&miner_prove_replica_updates_params)?, - tipset.key().into(), - ))?), RpcTest::identity(StateDecodeParams::request(( MINER_ADDRESS, Method::PreCommitSectorBatch2 as u64, diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs index 2696dd27be4e..aa4ab4663b92 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs @@ -3,47 +3,47 @@ use super::*; use base64::{Engine, prelude::BASE64_STANDARD}; +use fil_actor_multisig_state::v17::*; /// Creates state decode params tests for the Multisig actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let multisig_constructor_params = fil_actor_multisig_state::v16::ConstructorParams { + let multisig_constructor_params = ConstructorParams { signers: vec![Address::new_id(1000).into(), Address::new_id(1001).into()], num_approvals_threshold: Default::default(), unlock_duration: Default::default(), start_epoch: Default::default(), }; - let multisig_propose_params = fil_actor_multisig_state::v16::ProposeParams { + let multisig_propose_params = ProposeParams { to: Address::new_id(1000).into(), value: Default::default(), method: 0, params: Default::default(), }; - let multisig_tx_id_params = fil_actor_multisig_state::v16::TxnIDParams { + let multisig_tx_id_params = TxnIDParams { id: Default::default(), proposal_hash: vec![Default::default()], }; - let multisig_add_signer_params = fil_actor_multisig_state::v16::AddSignerParams { + let multisig_add_signer_params = AddSignerParams { signer: Address::new_id(1012).into(), increase: false, }; - let multisig_remove_signer_params = fil_actor_multisig_state::v16::RemoveSignerParams { + let multisig_remove_signer_params = RemoveSignerParams { signer: Address::new_id(1012).into(), decrease: false, }; - let multisig_swap_signer_params = fil_actor_multisig_state::v16::SwapSignerParams { + let multisig_swap_signer_params = SwapSignerParams { from: Address::new_id(122).into(), to: Address::new_id(1234).into(), }; - let multisig_change_num_app_params = - fil_actor_multisig_state::v16::ChangeNumApprovalsThresholdParams { new_threshold: 2 }; + let multisig_change_num_app_params = ChangeNumApprovalsThresholdParams { new_threshold: 2 }; - let multisig_lock_bal_params = fil_actor_multisig_state::v16::LockBalanceParams { + let multisig_lock_bal_params = LockBalanceParams { start_epoch: 22, unlock_duration: 12, amount: Default::default(), @@ -52,67 +52,67 @@ pub fn create_tests(tipset: &Tipset) -> Result> { Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::Constructor as u64, + Method::Constructor as u64, to_vec(&multisig_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::Propose as u64, + Method::Propose as u64, to_vec(&multisig_propose_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::Approve as u64, + Method::Approve as u64, to_vec(&multisig_tx_id_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::Cancel as u64, + Method::Cancel as u64, to_vec(&multisig_tx_id_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::AddSigner as u64, + Method::AddSigner as u64, to_vec(&multisig_add_signer_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::RemoveSigner as u64, + Method::RemoveSigner as u64, to_vec(&multisig_remove_signer_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::SwapSigner as u64, + Method::SwapSigner as u64, to_vec(&multisig_swap_signer_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::ChangeNumApprovalsThreshold as u64, + Method::ChangeNumApprovalsThreshold as u64, to_vec(&multisig_change_num_app_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::LockBalance as u64, + Method::LockBalance as u64, to_vec(&multisig_lock_bal_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::LockBalance as u64, + Method::LockBalance as u64, to_vec(&multisig_lock_bal_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, - fil_actor_multisig_state::v16::Method::UniversalReceiverHook as u64, + Method::UniversalReceiverHook as u64, BASE64_STANDARD.decode("ghgqRBI0Vng=").unwrap(), tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs index 0426cd20677c..ff31ca0ba650 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_paych_state::v17::*; /// Creates state decode params tests for the Payment Channel actor. pub fn create_tests(tipset: &Tipset) -> Result> { @@ -9,18 +10,18 @@ pub fn create_tests(tipset: &Tipset) -> Result> { // https://calibration.filscan.io/en/address/t066116/ let paych_address = Address::new_id(66116); - let constructor_params = fil_actor_paych_state::v16::ConstructorParams { + let constructor_params = ConstructorParams { from: Address::new_id(1234).into(), to: Address::new_id(8457).into(), }; - let update_channel_state = fil_actor_paych_state::v16::UpdateChannelStateParams { - sv: fil_actor_paych_state::v16::SignedVoucher { + let update_channel_state = UpdateChannelStateParams { + sv: SignedVoucher { channel_addr: Address::new_id(1000).into(), time_lock_min: 21, time_lock_max: 234, secret_pre_image: vec![], - extra: Some(fil_actor_paych_state::v16::ModVerifyParams { + extra: Some(ModVerifyParams { actor: Address::new_id(1234).into(), method: 223, data: Default::default(), @@ -38,25 +39,25 @@ pub fn create_tests(tipset: &Tipset) -> Result> { Ok(vec![ RpcTest::identity(StateDecodeParams::request(( paych_address, - fil_actor_paych_state::v16::Method::Constructor as u64, + Method::Constructor as u64, to_vec(&constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( paych_address, - fil_actor_paych_state::v16::Method::UpdateChannelState as u64, + Method::UpdateChannelState as u64, to_vec(&update_channel_state)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( paych_address, - fil_actor_paych_state::v16::Method::Settle as u64, + Method::Settle as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( paych_address, - fil_actor_paych_state::v16::Method::Collect as u64, + Method::Collect as u64, vec![], tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs index 4ee73ecc5cb6..cd2260ae9054 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs @@ -3,10 +3,11 @@ use super::*; use crate::shim::sector::StoragePower; +use fil_actor_power_state::v17::*; /// Creates state decode params tests for the Storage Power actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let power_create_miner_params = fil_actor_power_state::v16::CreateMinerParams { + let power_create_miner_params = CreateMinerParams { owner: Address::new_id(1000).into(), worker: Address::new_id(1001).into(), window_post_proof_type: fvm_shared4::sector::RegisteredPoStProof::StackedDRGWindow32GiBV1P1, @@ -15,60 +16,60 @@ pub fn create_tests(tipset: &Tipset) -> Result> { }; // not supported by the lotus - // let _power_miner_power_exp_params = fil_actor_power_state::v16::MinerPowerParams{ + // let _power_miner_power_exp_params = MinerPowerParams{ // miner: 1234, // }; - let power_update_claim_params = fil_actor_power_state::v16::UpdateClaimedPowerParams { + let power_update_claim_params = UpdateClaimedPowerParams { raw_byte_delta: StoragePower::from(1024u64), quality_adjusted_delta: StoragePower::from(2048u64), }; - let power_enroll_event_params = fil_actor_power_state::v16::EnrollCronEventParams { + let power_enroll_event_params = EnrollCronEventParams { event_epoch: 123, payload: Default::default(), }; - let power_update_pledge_ttl_params = fil_actor_power_state::v16::UpdatePledgeTotalParams { + let power_update_pledge_ttl_params = UpdatePledgeTotalParams { pledge_delta: Default::default(), }; - let power_miner_raw_params = fil_actor_power_state::v16::MinerRawPowerParams { miner: 1234 }; + let power_miner_raw_params = MinerRawPowerParams { miner: 1234 }; Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::CreateMiner as u64, + Method::CreateMiner as u64, to_vec(&power_create_miner_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::UpdateClaimedPower as u64, + Method::UpdateClaimedPower as u64, to_vec(&power_update_claim_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::EnrollCronEvent as u64, + Method::EnrollCronEvent as u64, to_vec(&power_enroll_event_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::UpdatePledgeTotal as u64, + Method::UpdatePledgeTotal as u64, to_vec(&power_update_pledge_ttl_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::CreateMinerExported as u64, + Method::CreateMinerExported as u64, to_vec(&power_create_miner_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::MinerRawPowerExported as u64, + Method::MinerRawPowerExported as u64, to_vec(&power_miner_raw_params)?, tipset.key().into(), ))?), @@ -82,37 +83,37 @@ pub fn create_tests(tipset: &Tipset) -> Result> { // ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::Constructor as u64, + Method::Constructor as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::OnEpochTickEnd as u64, + Method::OnEpochTickEnd as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::CurrentTotalPower as u64, + Method::CurrentTotalPower as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::NetworkRawPowerExported as u64, + Method::NetworkRawPowerExported as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::MinerCountExported as u64, + Method::MinerCountExported as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::POWER_ACTOR, - fil_actor_power_state::v16::Method::MinerConsensusCountExported as u64, + Method::MinerConsensusCountExported as u64, vec![], tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/reward.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/reward.rs index 19610598ff8b..bdc463e041d0 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/reward.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/reward.rs @@ -2,22 +2,23 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_reward_state::v17::*; use num_bigint::BigInt; /// Creates state decode params tests for the Reward actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let reward_constructor_params = fil_actor_reward_state::v16::ConstructorParams { + let reward_constructor_params = ConstructorParams { power: Some(Default::default()), }; - let reward_award_block_reward_params = fil_actor_reward_state::v16::AwardBlockRewardParams { + let reward_award_block_reward_params = AwardBlockRewardParams { miner: Address::new_id(1000).into(), penalty: Default::default(), gas_reward: Default::default(), win_count: 0, }; - let reward_update_network_params = fil_actor_reward_state::v16::UpdateNetworkKPIParams { + let reward_update_network_params = UpdateNetworkKPIParams { curr_realized_power: Option::from(fvm_shared4::bigint::bigint_ser::BigIntDe(BigInt::from( 111, ))), @@ -26,25 +27,25 @@ pub fn create_tests(tipset: &Tipset) -> Result> { Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::REWARD_ACTOR, - fil_actor_reward_state::v16::Method::Constructor as u64, + Method::Constructor as u64, to_vec(&reward_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::REWARD_ACTOR, - fil_actor_reward_state::v16::Method::AwardBlockReward as u64, + Method::AwardBlockReward as u64, to_vec(&reward_award_block_reward_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::REWARD_ACTOR, - fil_actor_reward_state::v16::Method::UpdateNetworkKPI as u64, + Method::UpdateNetworkKPI as u64, to_vec(&reward_update_network_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::REWARD_ACTOR, - fil_actor_reward_state::v16::Method::ThisEpochReward as u64, + Method::ThisEpochReward as u64, vec![], tipset.key().into(), ))?), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/system.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/system.rs index c7ff2d1d2c6e..49e178cfc7ed 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/system.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/system.rs @@ -2,12 +2,13 @@ // SPDX-License-Identifier: Apache-2.0, MIT use super::*; +use fil_actor_system_state::v17::*; /// Creates state decode params tests for the System actor. pub fn create_tests(tipset: &Tipset) -> Result> { Ok(vec![RpcTest::identity(StateDecodeParams::request(( Address::SYSTEM_ACTOR, - fil_actor_system_state::v16::Method::Constructor as u64, + Method::Constructor as u64, vec![], tipset.key().into(), ))?)]) diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/verified_reg.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/verified_reg.rs index 2a59668be5e1..ed143f85e941 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/verified_reg.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/verified_reg.rs @@ -3,38 +3,38 @@ use super::*; use crate::shim::sector::StoragePower; +use fil_actor_verifreg_state::v17::*; /// Creates state decode params tests for the Verified Registry actor. pub fn create_tests(tipset: &Tipset) -> Result> { - let verified_reg_constructor_params = fil_actor_verifreg_state::v16::ConstructorParams { + let verified_reg_constructor_params = ConstructorParams { root_key: Address::new_id(1000).into(), }; - let verified_reg_add_verifier_params = fil_actor_verifreg_state::v16::AddVerifierParams { + let verified_reg_add_verifier_params = AddVerifierParams { address: Address::new_id(1234).into(), allowance: StoragePower::from(1048576u64), // 1MB }; - let verified_reg_remove_verifier_params = fil_actor_verifreg_state::v16::RemoveVerifierParams { + let verified_reg_remove_verifier_params = RemoveVerifierParams { verifier: Address::new_id(1234).into(), }; - let verified_reg_add_verified_client_params = - fil_actor_verifreg_state::v16::AddVerifiedClientParams { - address: Address::new_id(1235).into(), - allowance: fil_actor_verifreg_state::v16::types::DataCap::from(2097152u64), // 2MB - }; + let verified_reg_add_verified_client_params = AddVerifiedClientParams { + address: Address::new_id(1235).into(), + allowance: types::DataCap::from(2097152u64), // 2MB + }; - let verified_reg_remove_data_cap_params = fil_actor_verifreg_state::v16::RemoveDataCapParams { + let verified_reg_remove_data_cap_params = RemoveDataCapParams { verified_client_to_remove: Address::new_id(1236).into(), - data_cap_amount_to_remove: fil_actor_verifreg_state::v16::types::DataCap::from(1048576u64), - verifier_request_1: fil_actor_verifreg_state::v16::RemoveDataCapRequest { + data_cap_amount_to_remove: types::DataCap::from(1048576u64), + verifier_request_1: RemoveDataCapRequest { verifier: Address::new_id(1237).into(), signature: fvm_shared4::crypto::signature::Signature::new_bls( b"test_signature_1".to_vec(), ), }, - verifier_request_2: fil_actor_verifreg_state::v16::RemoveDataCapRequest { + verifier_request_2: RemoveDataCapRequest { verifier: Address::new_id(1238).into(), signature: fvm_shared4::crypto::signature::Signature::new_secp256k1( b"test_signature_2".to_vec(), @@ -42,54 +42,50 @@ pub fn create_tests(tipset: &Tipset) -> Result> { }, }; - let verified_reg_remove_expired_allocations_params = - fil_actor_verifreg_state::v16::RemoveExpiredAllocationsParams { - client: 1239, - allocation_ids: vec![1001, 1002, 1003], - }; + let verified_reg_remove_expired_allocations_params = RemoveExpiredAllocationsParams { + client: 1239, + allocation_ids: vec![1001, 1002, 1003], + }; - let verified_reg_claim_allocations_params = - fil_actor_verifreg_state::v16::ClaimAllocationsParams { - sectors: vec![fil_actor_verifreg_state::v16::SectorAllocationClaims { - sector: 42, - expiry: 2000000, - claims: vec![ - fil_actor_verifreg_state::v16::AllocationClaim { - client: 1240, - allocation_id: 2001, - data: Cid::default(), - size: fvm_shared4::piece::PaddedPieceSize(1024), - }, - fil_actor_verifreg_state::v16::AllocationClaim { - client: 1241, - allocation_id: 2002, - data: Cid::default(), - size: fvm_shared4::piece::PaddedPieceSize(2048), - }, - ], - }], - all_or_nothing: false, - }; + let verified_reg_claim_allocations_params = ClaimAllocationsParams { + sectors: vec![SectorAllocationClaims { + sector: 42, + expiry: 2000000, + claims: vec![ + AllocationClaim { + client: 1240, + allocation_id: 2001, + data: Cid::default(), + size: fvm_shared4::piece::PaddedPieceSize(1024), + }, + AllocationClaim { + client: 1241, + allocation_id: 2002, + data: Cid::default(), + size: fvm_shared4::piece::PaddedPieceSize(2048), + }, + ], + }], + all_or_nothing: false, + }; - let verified_reg_get_claims_params = fil_actor_verifreg_state::v16::GetClaimsParams { + let verified_reg_get_claims_params = GetClaimsParams { provider: 1242, claim_ids: vec![3001, 3002, 3003], }; - let verified_reg_extend_claim_terms_params = - fil_actor_verifreg_state::v16::ExtendClaimTermsParams { - terms: vec![fil_actor_verifreg_state::v16::ClaimTerm { - provider: 12, - claim_id: 12, - term_max: 123, - }], - }; + let verified_reg_extend_claim_terms_params = ExtendClaimTermsParams { + terms: vec![ClaimTerm { + provider: 12, + claim_id: 12, + term_max: 123, + }], + }; - let verified_reg_remove_expired_claims_params = - fil_actor_verifreg_state::v16::RemoveExpiredClaimsParams { - provider: 1243, - claim_ids: vec![4001, 4002, 4003], - }; + let verified_reg_remove_expired_claims_params = RemoveExpiredClaimsParams { + provider: 1243, + claim_ids: vec![4001, 4002, 4003], + }; let verified_reg_universal_receiver_params = fvm_actor_utils::receiver::UniversalReceiverParams { @@ -100,97 +96,97 @@ pub fn create_tests(tipset: &Tipset) -> Result> { Ok(vec![ RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::Constructor as u64, + Method::Constructor as u64, to_vec(&verified_reg_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::AddVerifier as u64, + Method::AddVerifier as u64, to_vec(&verified_reg_add_verifier_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveVerifier as u64, + Method::RemoveVerifier as u64, to_vec(&verified_reg_remove_verifier_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::AddVerifiedClient as u64, + Method::AddVerifiedClient as u64, to_vec(&verified_reg_add_verified_client_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveVerifiedClientDataCap as u64, + Method::RemoveVerifiedClientDataCap as u64, to_vec(&verified_reg_remove_data_cap_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveExpiredAllocations as u64, + Method::RemoveExpiredAllocations as u64, to_vec(&verified_reg_remove_expired_allocations_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::ClaimAllocations as u64, + Method::ClaimAllocations as u64, to_vec(&verified_reg_claim_allocations_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::GetClaims as u64, + Method::GetClaims as u64, to_vec(&verified_reg_get_claims_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::ExtendClaimTerms as u64, + Method::ExtendClaimTerms as u64, to_vec(&verified_reg_extend_claim_terms_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveExpiredClaims as u64, + Method::RemoveExpiredClaims as u64, to_vec(&verified_reg_remove_expired_claims_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::AddVerifiedClientExported as u64, + Method::AddVerifiedClientExported as u64, to_vec(&verified_reg_add_verified_client_params)?, // reuse same params tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveExpiredAllocationsExported as u64, + Method::RemoveExpiredAllocationsExported as u64, to_vec(&verified_reg_remove_expired_allocations_params)?, // reuse same params tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::GetClaimsExported as u64, + Method::GetClaimsExported as u64, to_vec(&verified_reg_get_claims_params)?, // reuse same params tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::ExtendClaimTermsExported as u64, + Method::ExtendClaimTermsExported as u64, to_vec(&verified_reg_extend_claim_terms_params)?, // reuse same params tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::RemoveExpiredClaimsExported as u64, + Method::RemoveExpiredClaimsExported as u64, to_vec(&verified_reg_remove_expired_claims_params)?, // reuse same params tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( Address::VERIFIED_REGISTRY_ACTOR, - fil_actor_verifreg_state::v16::Method::UniversalReceiverHook as u64, + Method::UniversalReceiverHook as u64, to_vec(&verified_reg_universal_receiver_params)?, tipset.key().into(), ))?), From 252728e3c3c87a71ca3cdaaf3671dc3b79fca850 Mon Sep 17 00:00:00 2001 From: Aryan Tikarya Date: Thu, 11 Sep 2025 21:33:01 +0530 Subject: [PATCH 18/18] remove unwrap --- .../state_decode_params_tests/ethaccount.rs | 2 +- .../api_cmd/state_decode_params_tests/evm.rs | 14 +++++++------- .../api_cmd/state_decode_params_tests/multisig.rs | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs index c8758cbd4e5a..f38d5f11e2ab 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs @@ -7,7 +7,7 @@ use fil_actor_ethaccount_state::v17::*; /// Creates state decode params tests for the EthAccount actor. pub fn create_tests(tipset: &Tipset) -> anyhow::Result> { Ok(vec![RpcTest::identity(StateDecodeParams::request(( - Address::new_delegated(Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR.id()?, &[0; 20]).unwrap(), + Address::new_delegated(Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR.id()?, &[0; 20])?, Method::Constructor as u64, vec![], tipset.key().into(), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs index 38e3c2f4a891..8ca0acc16a13 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs @@ -31,43 +31,43 @@ pub fn create_tests(tipset: &Tipset) -> Result> { Ok(vec![ RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), + Address::from_str(EVM_ADDRESS)?, Method::Constructor as u64, to_vec(&evm_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), + Address::from_str(EVM_ADDRESS)?, Method::Resurrect as u64, to_vec(&evm_constructor_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), + Address::from_str(EVM_ADDRESS)?, Method::GetBytecode as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), + Address::from_str(EVM_ADDRESS)?, Method::GetBytecodeHash as u64, vec![], tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), + Address::from_str(EVM_ADDRESS)?, Method::InvokeContract as u64, to_vec(&evm_invoke_contract_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), + Address::from_str(EVM_ADDRESS)?, Method::InvokeContractDelegate as u64, to_vec(&evm_delegate_call_params)?, tipset.key().into(), ))?), RpcTest::identity(StateDecodeParams::request(( - Address::from_str(EVM_ADDRESS).unwrap(), + Address::from_str(EVM_ADDRESS)?, Method::GetStorageAt as u64, evm_get_storage_at_params.serialize_params()?, tipset.key().into(), diff --git a/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs index aa4ab4663b92..37fb2e1187bb 100644 --- a/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs +++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/multisig.rs @@ -113,7 +113,7 @@ pub fn create_tests(tipset: &Tipset) -> Result> { RpcTest::identity(StateDecodeParams::request(( Address::new_id(18101), // https://calibration.filscan.io/en/address/t018101/, Method::UniversalReceiverHook as u64, - BASE64_STANDARD.decode("ghgqRBI0Vng=").unwrap(), + BASE64_STANDARD.decode("ghgqRBI0Vng=")?, tipset.key().into(), ))?), ])