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
diff --git a/Cargo.toml b/Cargo.toml
index a36b792aff4a..c13ff97da1d2 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -67,22 +67,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/actor_states/methods/account_constructor_params.rs b/src/lotus_json/actor_states/methods/account_constructor_params.rs
deleted file mode 100644
index 1bd244dad4dc..000000000000
--- a/src/lotus_json/actor_states/methods/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/actor_states/methods/init_constructor_params.rs b/src/lotus_json/actor_states/methods/init_constructor_params.rs
deleted file mode 100644
index fae5c3c05c73..000000000000
--- a/src/lotus_json/actor_states/methods/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/actor_states/methods/init_exec4_params.rs b/src/lotus_json/actor_states/methods/init_exec4_params.rs
deleted file mode 100644
index 0b9bffca8010..000000000000
--- a/src/lotus_json/actor_states/methods/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/actor_states/methods/init_exec_params.rs b/src/lotus_json/actor_states/methods/init_exec_params.rs
deleted file mode 100644
index 6820a72ec4d0..000000000000
--- a/src/lotus_json/actor_states/methods/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/actor_states/methods/mod.rs b/src/lotus_json/actor_states/methods/mod.rs
deleted file mode 100644
index ae64614e81ad..000000000000
--- a/src/lotus_json/actor_states/methods/mod.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2019-2025 ChainSafe Systems
-// 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 market_actor_params;
-mod miner_actor_params;
-mod multisig_actor;
-mod paych_params;
-mod power_actor;
-mod reward_methods;
-pub mod verified_reg_actor;
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_params.rs
similarity index 56%
rename from src/lotus_json/actor_states/methods/account_authenticate_params.rs
rename to src/lotus_json/actors/params/account_params.rs
index e34accd2b63c..a0fbb2013c73 100644
--- a/src/lotus_json/actor_states/methods/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,39 @@ macro_rules! impl_account_authenticate_params {
};
}
-// 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);
+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() }
+ }
+ }
+ }
+ )+
+ };
+}
+
+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, 17);
+impl_account_authenticate_params!(AuthenticateMessageParams: 9, 10, 11, 12, 13, 14);
diff --git a/src/lotus_json/actor_states/methods/cron_actor_params.rs b/src/lotus_json/actors/params/cron_params.rs
similarity index 99%
rename from src/lotus_json/actor_states/methods/cron_actor_params.rs
rename to src/lotus_json/actors/params/cron_params.rs
index 82849bb7d941..b97298c0ad1a 100644
--- a/src/lotus_json/actor_states/methods/cron_actor_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/actor_states/methods/datacap_actor_params.rs b/src/lotus_json/actors/params/datacap_params.rs
similarity index 99%
rename from src/lotus_json/actor_states/methods/datacap_actor_params.rs
rename to src/lotus_json/actors/params/datacap_params.rs
index 2f6c17f1741f..cc9ad1a6109b 100644
--- a/src/lotus_json/actor_states/methods/datacap_actor_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/actor_states/methods/eam_params.rs b/src/lotus_json/actors/params/eam_params.rs
similarity index 96%
rename from src/lotus_json/actor_states/methods/eam_params.rs
rename to src/lotus_json/actors/params/eam_params.rs
index be92e48f108c..b9023da1fb97 100644
--- a/src/lotus_json/actor_states/methods/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/actor_states/methods/evm_actor_params.rs b/src/lotus_json/actors/params/evm_params.rs
similarity index 98%
rename from src/lotus_json/actor_states/methods/evm_actor_params.rs
rename to src/lotus_json/actors/params/evm_params.rs
index 8cde8409f13e..13b72bd0e40e 100644
--- a/src/lotus_json/actor_states/methods/evm_actor_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
new file mode 100644
index 000000000000..a754fac3945f
--- /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, 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/actor_states/methods/market_actor_params.rs b/src/lotus_json/actors/params/market_params.rs
similarity index 98%
rename from src/lotus_json/actor_states/methods/market_actor_params.rs
rename to src/lotus_json/actors/params/market_params.rs
index b6311ae9e6db..ddd78cedab62 100644
--- a/src/lotus_json/actor_states/methods/market_actor_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/lotus_json/actor_states/methods/miner_actor_params.rs b/src/lotus_json/actors/params/miner_params.rs
similarity index 99%
rename from src/lotus_json/actor_states/methods/miner_actor_params.rs
rename to src/lotus_json/actors/params/miner_params.rs
index be20adc8aaf2..04e0882b521c 100644
--- a/src/lotus_json/actor_states/methods/miner_actor_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! {
@@ -3695,54 +3695,54 @@ 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_prove_commit_aggregate_params_v13_and_above!(
- 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_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);
-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/mod.rs b/src/lotus_json/actors/params/mod.rs
new file mode 100644
index 000000000000..edae9c291e56
--- /dev/null
+++ b/src/lotus_json/actors/params/mod.rs
@@ -0,0 +1,17 @@
+// Copyright 2019-2025 ChainSafe Systems
+// SPDX-License-Identifier: Apache-2.0, MIT
+
+use super::*;
+mod account_params;
+mod cron_params;
+mod datacap_params;
+mod eam_params;
+mod evm_params;
+mod init_params;
+mod market_params;
+mod miner_params;
+mod multisig_params;
+mod paych_params;
+mod power_params;
+mod reward_params;
+mod verified_reg_params;
diff --git a/src/lotus_json/actor_states/methods/multisig_actor.rs b/src/lotus_json/actors/params/multisig_params.rs
similarity index 98%
rename from src/lotus_json/actor_states/methods/multisig_actor.rs
rename to src/lotus_json/actors/params/multisig_params.rs
index 8de3eb4f5e97..b34e7f3c6177 100644
--- a/src/lotus_json/actor_states/methods/multisig_actor.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/actor_states/methods/paych_params.rs b/src/lotus_json/actors/params/paych_params.rs
similarity index 99%
rename from src/lotus_json/actor_states/methods/paych_params.rs
rename to src/lotus_json/actors/params/paych_params.rs
index 42901f7dc381..0bff50ed1901 100644
--- a/src/lotus_json/actor_states/methods/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/actor_states/methods/power_actor.rs b/src/lotus_json/actors/params/power_params.rs
similarity index 94%
rename from src/lotus_json/actor_states/methods/power_actor.rs
rename to src/lotus_json/actors/params/power_params.rs
index faea44701b5f..2207cdf108bc 100644
--- a/src/lotus_json/actor_states/methods/power_actor.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/actor_states/methods/reward_methods.rs b/src/lotus_json/actors/params/reward_params.rs
similarity index 96%
rename from src/lotus_json/actor_states/methods/reward_methods.rs
rename to src/lotus_json/actors/params/reward_params.rs
index e71d3177ba3e..004dbd3cce64 100644
--- a/src/lotus_json/actor_states/methods/reward_methods.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/actor_states/methods/verified_reg_actor.rs b/src/lotus_json/actors/params/verified_reg_params.rs
similarity index 99%
rename from src/lotus_json/actor_states/methods/verified_reg_actor.rs
rename to src/lotus_json/actors/params/verified_reg_params.rs
index 06d86ba03102..a358e03c9f85 100644
--- a/src/lotus_json/actor_states/methods/verified_reg_actor.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/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 345bae794644..868e5cdbd249 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
diff --git a/src/rpc/registry/actors/account.rs b/src/rpc/registry/actors/account.rs
index dce848fa62a4..0c0b57afdea8 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;
-/// Macro to generate account method registration for different versions
-macro_rules! register_account_version {
- // For versions that use types module (v15, v16)
+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_rules! register_account_version_11_onwards {
+ // For versions that use types module (v15 onwards)
($registry:expr, $code_cid:expr, $state_version:path, with_types) => {{
use $state_version::{Method, types};
@@ -22,6 +69,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)
@@ -39,6 +88,8 @@ macro_rules! register_account_version {
)
]
);
+
+ register_actor_methods!($registry, $code_cid, [(Method::PubkeyAddress, empty)]);
}};
}
@@ -46,15 +97,47 @@ 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::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_11_onwards!(
+ registry,
+ cid,
+ fil_actor_account_state::v15,
+ with_types
+ )
+ }
+ ActorVersion::V16 => {
+ register_account_version_11_onwards!(
+ registry,
+ cid,
+ fil_actor_account_state::v16,
+ 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 56117b2afbaf..f4efc581aadd 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,21 @@ 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),
+ 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 d21bd4b22bed..7a50653ea169 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,18 @@ 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),
+ 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 a02bd8b9e80f..d2e6b3b9bef7 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,22 @@ 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::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::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 86749e8c5acb..c48fb501ffe2 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,36 @@ 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)
+ }
+ 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 d2536d18fc38..069e6efa63f8 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,20 @@ 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),
+ 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 af06ef04c449..17cba4de35d6 100644
--- a/src/rpc/registry/actors/init.rs
+++ b/src/rpc/registry/actors/init.rs
@@ -4,9 +4,10 @@
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 {
+// 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};
@@ -21,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 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};
@@ -38,17 +39,41 @@ 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_9!(registry, cid, fil_actor_init_state::v8)
+ }
+ ActorVersion::V9 => {
+ register_init_versions_8_to_9!(registry, cid, fil_actor_init_state::v9)
+ }
+ ActorVersion::V10 => {
+ register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v10)
+ }
+ ActorVersion::V11 => {
+ register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v11)
+ }
+ ActorVersion::V12 => {
+ register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v12)
+ }
+ ActorVersion::V13 => {
+ register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v13)
+ }
+ ActorVersion::V14 => {
+ register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v14)
+ }
+ ActorVersion::V15 => {
+ register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v15)
+ }
+ ActorVersion::V16 => {
+ register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v16)
+ }
+ ActorVersion::V17 => {
+ register_init_versions_10_onwards!(registry, cid, fil_actor_init_state::v17)
+ }
}
}
diff --git a/src/rpc/registry/actors/market.rs b/src/rpc/registry/actors/market.rs
index 3a752849d525..9a811feed5ee 100644
--- a/src/rpc/registry/actors/market.rs
+++ b/src/rpc/registry/actors/market.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_market_basic_methods {
($registry:expr, $code_cid:expr, $state_version:path) => {{
@@ -174,18 +175,41 @@ macro_rules! register_market_versions_onwards {
}};
}
-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_market_versions_8_to_9!(registry, cid, fil_actor_market_state::v8),
- 9 => register_market_versions_8_to_9!(registry, cid, fil_actor_market_state::v9),
- 10 => register_market_versions_10_to_11!(registry, cid, fil_actor_market_state::v10),
- 11 => register_market_versions_10_to_11!(registry, cid, fil_actor_market_state::v11),
- 12 => register_market_versions_12!(registry, cid, fil_actor_market_state::v12),
- 13 => register_market_versions_onwards!(registry, cid, fil_actor_market_state::v13),
- 14 => register_market_versions_onwards!(registry, cid, fil_actor_market_state::v14),
- 15 => register_market_versions_onwards!(registry, cid, fil_actor_market_state::v15),
- 16 => register_market_versions_onwards!(registry, cid, fil_actor_market_state::v16),
- 17 => register_market_versions_onwards!(registry, cid, fil_actor_market_state::v17),
- _ => {}
+ ActorVersion::V8 => {
+ register_market_versions_8_to_9!(registry, cid, fil_actor_market_state::v8)
+ }
+ ActorVersion::V9 => {
+ register_market_versions_8_to_9!(registry, cid, fil_actor_market_state::v9)
+ }
+ ActorVersion::V10 => {
+ register_market_versions_10_to_11!(registry, cid, fil_actor_market_state::v10)
+ }
+ ActorVersion::V11 => {
+ register_market_versions_10_to_11!(registry, cid, fil_actor_market_state::v11)
+ }
+ ActorVersion::V12 => {
+ register_market_versions_12!(registry, cid, fil_actor_market_state::v12)
+ }
+ ActorVersion::V13 => {
+ register_market_versions_onwards!(registry, cid, fil_actor_market_state::v13)
+ }
+ ActorVersion::V14 => {
+ register_market_versions_onwards!(registry, cid, fil_actor_market_state::v14)
+ }
+ ActorVersion::V15 => {
+ register_market_versions_onwards!(registry, cid, fil_actor_market_state::v15)
+ }
+ ActorVersion::V16 => {
+ register_market_versions_onwards!(registry, cid, fil_actor_market_state::v16)
+ }
+ ActorVersion::V17 => {
+ register_market_versions_onwards!(registry, cid, fil_actor_market_state::v17)
+ }
}
}
diff --git a/src/rpc/registry/actors/miner.rs b/src/rpc/registry/actors/miner.rs
index 89ee822f4830..5a37067f5b98 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) => {{
@@ -12,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,
};
@@ -26,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),
@@ -39,8 +38,6 @@ macro_rules! register_miner_basic_methods {
(Method::CompactPartitions, CompactPartitionsParams),
(Method::CompactSectorNumbers, CompactSectorNumbersParams),
(Method::DisputeWindowedPoSt, DisputeWindowedPoStParams),
- (Method::ProveCommitAggregate, ProveCommitAggregateParams),
- (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams),
]
);
@@ -136,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!(
@@ -151,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),
]
);
@@ -163,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!(
@@ -174,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),
@@ -184,6 +204,8 @@ fn register_miner_version_9(registry: &mut MethodRegistry, cid: Cid) {
ExtendSectorExpiration2Params
),
(Method::ConfirmSectorProofsValid, ConfirmSectorProofsParams),
+ (Method::ProveCommitAggregate, ProveCommitAggregateParams),
+ (Method::ProveReplicaUpdates, ProveReplicaUpdatesParams),
]
);
@@ -201,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!(
@@ -211,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),
@@ -221,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),
]
);
}
@@ -229,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,
};
@@ -239,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),
@@ -249,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),
]
);
}
@@ -257,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,
@@ -267,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),
]
);
}
@@ -279,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),
]
);
}
@@ -298,38 +335,77 @@ 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(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),
+ 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 b7b6c689ce6a..7e56c1170dae 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,37 @@ 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)
+ }
+ 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 7176c4484d60..9d49c0ce4604 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,41 @@ 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)
+ }
+ ActorVersion::V17 => {
+ register_payment_channel_methods!(registry, cid, fil_actor_paych_state::v17)
+ }
}
- 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..461f5e8c34bf 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 {
@@ -75,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,
@@ -113,17 +114,41 @@ 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_onwards!(registry, cid, fil_actor_power_state::v16)
+ }
+ ActorVersion::V17 => {
+ register_power_version_16_onwards!(registry, cid, fil_actor_power_state::v17)
+ }
}
}
diff --git a/src/rpc/registry/actors/reward.rs b/src/rpc/registry/actors/reward.rs
index 344459dc94d0..bc9f6f41b69b 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,26 @@ 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)
+ }
+ 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 2cf78002c41f..e6573d17fc1c 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,21 @@ 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),
+ 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 719b789fad62..ee71ed12a681 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,33 @@ 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)
+ }
+ ActorVersion::V17 => {
+ register_verified_reg_v12_plus!(registry, cid, fil_actor_verifreg_state::v17, v17)
+ }
}
}
diff --git a/src/rpc/registry/actors_reg.rs b/src/rpc/registry/actors_reg.rs
index 83225e76b472..f990a51d4764 100644
--- a/src/rpc/registry/actors_reg.rs
+++ b/src/rpc/registry/actors_reg.rs
@@ -13,20 +13,23 @@ 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() {
+ 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));
}
@@ -35,7 +38,7 @@ impl ActorRegistry {
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 f2587346db43..ff90f37bd0ae 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::v11::runtime::builtins::Type;
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}"
);
}
@@ -103,7 +101,7 @@ impl MethodRegistry {
payment_channel::register_actor_methods(self, cid, version)
}
BuiltinActor::EAM => eam::register_actor_methods(self, cid, version),
- _ => {}
+ Type::Placeholder => {}
}
}
}
@@ -158,12 +156,12 @@ 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};
use serde_json::json;
- const V16: u64 = 16;
// Test parameter type for testing
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
struct TestParams {
@@ -192,7 +190,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))| {
@@ -252,7 +250,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, &[]);
@@ -277,7 +275,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;
@@ -325,7 +323,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
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!();
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/state_decode_params_tests/account.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs
new file mode 100644
index 000000000000..317afb03cbf0
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/account.rs
@@ -0,0 +1,33 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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 = types::ConstructorParams {
+ address: Address::new_id(1234).into(),
+ };
+
+ 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);
+ Ok(vec![
+ RpcTest::identity(StateDecodeParams::request((
+ ACCOUNT_ADDRESS,
+ Method::Constructor as u64,
+ to_vec(&account_constructor_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ ACCOUNT_ADDRESS,
+ Method::AuthenticateMessageExported as u64,
+ 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..a8aacb4b0338
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/cron.rs
@@ -0,0 +1,32 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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 = ConstructorParams {
+ // entries: vec![Entry {
+ // receiver: Address::new_id(1000).into(),
+ // method_num: 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,
+ // Constructor as u64,
+ // to_vec(&cron_constructor_params)?,
+ // tipset.key().into(),
+ // ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::CRON_ACTOR,
+ 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..02865b577b64
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/datacap.rs
@@ -0,0 +1,172 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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 = ConstructorParams {
+ governor: Address::new_id(3000).into(),
+ };
+
+ 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 = DestroyParams {
+ owner: Address::new_id(3004).into(),
+ amount: TokenAmount::default().into(),
+ };
+
+ let datacap_balance_params = 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,
+ Method::Constructor as u64,
+ to_vec(&datacap_constructor_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::MintExported as u64,
+ to_vec(&datacap_mint_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::DestroyExported as u64,
+ to_vec(&datacap_destroy_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::NameExported as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::SymbolExported as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::TotalSupplyExported as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::BalanceExported as u64,
+ to_vec(&datacap_balance_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::GranularityExported as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::TransferExported as u64,
+ to_vec(&datacap_transfer_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::TransferFromExported as u64,
+ to_vec(&datacap_transfer_from_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::IncreaseAllowanceExported as u64,
+ to_vec(&datacap_increase_allowance_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::DecreaseAllowanceExported as u64,
+ to_vec(&datacap_decrease_allowance_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::RevokeAllowanceExported as u64,
+ to_vec(&datacap_revoke_allowance_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::BurnExported as u64,
+ to_vec(&datacap_burn_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ Method::BurnFromExported as u64,
+ to_vec(&datacap_burn_from_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::DATACAP_TOKEN_ACTOR,
+ 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..9ebd75ec914c
--- /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::*;
+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 = CreateParams {
+ initcode: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data
+ nonce: 2,
+ };
+
+ let create_params2 = Create2Params {
+ initcode: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy data
+ salt: [0; 32],
+ };
+
+ let create_external_params = CreateExternalParams(vec![0x11, 0x22, 0x33, 0x44, 0x55]);
+
+ Ok(vec![
+ RpcTest::identity(StateDecodeParams::request((
+ Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR,
+ Method::Constructor as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR,
+ Method::Create as u64,
+ to_vec(&create_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR,
+ Method::Create2 as u64,
+ to_vec(&create_params2)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::ETHEREUM_ACCOUNT_MANAGER_ACTOR,
+ 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..f38d5f11e2ab
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/ethaccount.rs
@@ -0,0 +1,15 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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])?,
+ 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..8ca0acc16a13
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/evm.rs
@@ -0,0 +1,76 @@
+// Copyright 2019-2025 ChainSafe Systems
+// SPDX-License-Identifier: Apache-2.0, MIT
+
+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 = ConstructorParams {
+ creator: EthAddress([0; 20]),
+ initcode: fvm_ipld_encoding::RawBytes::new(vec![0x12, 0x34, 0x56]), // dummy bytecode
+ };
+
+ let evm_invoke_contract_params = InvokeContractParams {
+ input_data: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy input data
+ };
+
+ let evm_delegate_call_params = DelegateCallParams {
+ code: Cid::default(),
+ input: vec![0x11, 0x22, 0x33, 0x44, 0x55], // dummy input data
+ caller: 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)?,
+ Method::Constructor as u64,
+ to_vec(&evm_constructor_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ 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)?,
+ Method::GetBytecode as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::from_str(EVM_ADDRESS)?,
+ Method::GetBytecodeHash as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ 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)?,
+ Method::InvokeContractDelegate as u64,
+ to_vec(&evm_delegate_call_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ 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/init.rs b/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs
new file mode 100644
index 000000000000..c4ab84135310
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/init.rs
@@ -0,0 +1,44 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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 = ConstructorParams {
+ network_name: "calibnet".to_string(),
+ };
+
+ 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 = 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,
+ Method::Constructor as u64,
+ to_vec(&init_constructor_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::INIT_ACTOR,
+ Method::Exec as u64,
+ to_vec(&init_exec_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::INIT_ACTOR,
+ Method::Exec4 as u64,
+ 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..9ce5b55708be
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/market.rs
@@ -0,0 +1,285 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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.
+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,
+ ) -> 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);
+
+ DealProposal {
+ piece_cid,
+ piece_size,
+ verified_deal: false,
+ client,
+ provider,
+ label: Label::String("label".to_string()),
+ start_epoch,
+ end_epoch,
+ storage_price_per_epoch,
+ provider_collateral,
+ client_collateral,
+ }
+ }
+
+ 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),
+ fvm_shared4::econ::TokenAmount::from_atto(10u8),
+ fvm_shared4::econ::TokenAmount::from_atto(10u8),
+ 0,
+ 10,
+ );
+ ClientDealProposal {
+ proposal,
+ client_signature: fvm_shared4::crypto::signature::Signature::new_bls(
+ b"test_signature".to_vec(),
+ ),
+ }
+ }
+
+ fn create_sector_deals() -> SectorDeals {
+ SectorDeals {
+ sector_number: 42,
+ sector_type: fvm_shared4::sector::RegisteredSealProof::StackedDRG2KiBV1,
+ sector_expiry: 100,
+ deal_ids: vec![0, 1],
+ }
+ }
+
+ 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]),
+ };
+
+ ext::miner::SectorChanges {
+ sector: 2,
+ minimum_commitment_epoch: 0,
+ added: vec![piece_change],
+ }
+ }
+
+ let market_actor_add_balance_params = AddBalanceParams {
+ provider_or_client: fvm_shared4::address::Address::new_id(1000),
+ };
+ 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 = PublishStorageDealsParams {
+ deals: vec![create_client_deal_proposal()],
+ };
+
+ let _market_actor_verify_deals_for_activation_params = VerifyDealsForActivationParams {
+ sectors: vec![create_sector_deals()],
+ };
+
+ let _market_actor_batch_activate_deals_params = BatchActivateDealsParams {
+ sectors: vec![create_sector_deals()],
+ compute_cid: true,
+ };
+
+ 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 = SettleDealPaymentsParams {
+ deal_ids: {
+ let mut bf = BitField::new();
+ bf.set(42);
+ bf
+ },
+ };
+
+ let market_actor_get_deal_data_commitment_params = DealQueryParams { id: 0 };
+
+ let _market_actor_sector_content_changed_params = {
+ ext::miner::SectorContentChangedParams {
+ sectors: vec![create_sector_changes()],
+ }
+ };
+
+ Ok(vec![
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::AddBalance as u64,
+ to_vec(&market_actor_add_balance_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::WithdrawBalance as u64,
+ to_vec(&market_actor_withdraw_balance_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ 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,
+ // 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,
+ // 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,
+ // Method::OnMinerSectorsTerminate as u64,
+ // to_vec(&market_actor_on_miner_sectors_terminate_params)?,
+ // tipset.key().into(),
+ // ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::Constructor as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::CronTick as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::AddBalanceExported as u64,
+ to_vec(&market_actor_get_balance_exported_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::WithdrawBalanceExported as u64,
+ to_vec(&market_actor_withdraw_balance_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::PublishStorageDealsExported as u64,
+ to_vec(&market_actor_publish_storage_deals_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetBalanceExported as u64,
+ to_vec(&market_actor_get_balance_exported_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealDataCommitmentExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealClientExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealProviderExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealLabelExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealTermExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealTotalPriceExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealClientCollateralExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealProviderCollateralExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealVerifiedExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealActivationExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ Method::GetDealSectorExported as u64,
+ to_vec(&market_actor_get_deal_data_commitment_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::MARKET_ACTOR,
+ 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,
+ // 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..45097f346df1
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs
@@ -0,0 +1,506 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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 = 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 = ChangeWorkerAddressParams {
+ new_worker: Address::new_id(2000).into(),
+ new_control_addresses: vec![Address::new_id(2001).into()],
+ };
+
+ let miner_change_peer_id_params = ChangePeerIDParams {
+ new_id: b"new_peer".to_vec(),
+ };
+
+ let miner_change_multiaddrs_params = ChangeMultiaddrsParams {
+ new_multi_addrs: vec![BytesDe(vec![1, 2, 3])],
+ };
+
+ let miner_change_owner_params = ChangeOwnerAddressParams {
+ new_owner: Address::new_id(3000).into(),
+ };
+
+ 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 = WithdrawBalanceParams {
+ amount_requested: TokenAmount::from_atto(500000000000000000u64).into(),
+ };
+
+ let miner_submit_windowed_post_params = SubmitWindowedPoStParams {
+ deadline: 0,
+ partitions: vec![PoStPartition {
+ index: 0,
+ skipped: Default::default(),
+ }],
+ proofs: vec![],
+ chain_commit_epoch: 0,
+ chain_commit_rand: Randomness(vec![1, 22, 43]),
+ };
+
+ let miner_terminate_sectors_params = TerminateSectorsParams {
+ terminations: vec![TerminationDeclaration {
+ deadline: 0,
+ partition: 0,
+ sectors: Default::default(),
+ }],
+ };
+
+ let miner_declare_faults_params = DeclareFaultsParams {
+ faults: vec![FaultDeclaration {
+ 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 = DeferredCronEventParams {
+ event_payload: vec![],
+ reward_smoothed: FilterEstimate {
+ position: Default::default(),
+ velocity: Default::default(),
+ },
+ quality_adj_power_smoothed: FilterEstimate {
+ position: Default::default(),
+ velocity: Default::default(),
+ },
+ };
+
+ let miner_check_sector_proven_params = CheckSectorProvenParams { sector_number: 0 };
+
+ let miner_apply_reward_params = ApplyRewardParams {
+ reward: TokenAmount::from_atto(1000000000000000000u64).into(),
+ penalty: TokenAmount::from_atto(0u64).into(),
+ };
+
+ let miner_report_consensus_fault_params = ReportConsensusFaultParams {
+ header1: vec![],
+ header2: vec![],
+ header_extra: vec![],
+ };
+
+ let miner_compact_partitions_params = CompactPartitionsParams {
+ deadline: 0,
+ partitions: Default::default(),
+ };
+
+ let miner_compact_sector_numbers_params = CompactSectorNumbersParams {
+ mask_sector_numbers: Default::default(),
+ };
+
+ let miner_dispute_windowed_post_params = DisputeWindowedPoStParams {
+ deadline: 0,
+ post_index: 0,
+ };
+
+ 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 = ExtendSectorExpiration2Params {
+ extensions: vec![ExpirationExtension2 {
+ deadline: 0,
+ partition: 0,
+ sectors: Default::default(),
+ sectors_with_claims: vec![],
+ new_expiration: 1000,
+ }],
+ };
+
+ let miner_is_controlling_address_param = IsControllingAddressParam {
+ address: Address::new_id(5000).into(),
+ };
+
+ 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,
+ };
+
+ 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,
+ };
+
+ 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 = 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 = MaxTerminationFeeParams {
+ // power: Default::default(),
+ // initial_pledge: TokenAmount::from_atto(1000000000000000000u64).into(),
+ // };
+
+ 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::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::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..41ea269d16f6
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/mod.rs
@@ -0,0 +1,51 @@
+// Copyright 2019-2025 ChainSafe Systems
+// SPDX-License-Identifier: Apache-2.0, MIT
+
+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;
+
+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..37fb2e1187bb
--- /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};
+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 = 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 = ProposeParams {
+ to: Address::new_id(1000).into(),
+ value: Default::default(),
+ method: 0,
+ params: Default::default(),
+ };
+
+ let multisig_tx_id_params = TxnIDParams {
+ id: Default::default(),
+ proposal_hash: vec![Default::default()],
+ };
+
+ let multisig_add_signer_params = AddSignerParams {
+ signer: Address::new_id(1012).into(),
+ increase: false,
+ };
+
+ let multisig_remove_signer_params = RemoveSignerParams {
+ signer: Address::new_id(1012).into(),
+ decrease: false,
+ };
+
+ let multisig_swap_signer_params = SwapSignerParams {
+ from: Address::new_id(122).into(),
+ to: Address::new_id(1234).into(),
+ };
+
+ let multisig_change_num_app_params = ChangeNumApprovalsThresholdParams { new_threshold: 2 };
+
+ let multisig_lock_bal_params = 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/,
+ 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/,
+ 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/,
+ 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/,
+ 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/,
+ 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/,
+ 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/,
+ 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/,
+ 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/,
+ 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/,
+ 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/,
+ Method::UniversalReceiverHook as u64,
+ BASE64_STANDARD.decode("ghgqRBI0Vng=")?,
+ 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..ff31ca0ba650
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/paych.rs
@@ -0,0 +1,65 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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> {
+ // payment channel actor address `t066116`
+ // https://calibration.filscan.io/en/address/t066116/
+ let paych_address = Address::new_id(66116);
+
+ let constructor_params = ConstructorParams {
+ from: Address::new_id(1234).into(),
+ to: Address::new_id(8457).into(),
+ };
+
+ 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(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,
+ Method::Constructor as u64,
+ to_vec(&constructor_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ paych_address,
+ Method::UpdateChannelState as u64,
+ to_vec(&update_channel_state)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ paych_address,
+ Method::Settle as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ paych_address,
+ 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..cd2260ae9054
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/power.rs
@@ -0,0 +1,121 @@
+// Copyright 2019-2025 ChainSafe Systems
+// SPDX-License-Identifier: Apache-2.0, MIT
+
+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 = CreateMinerParams {
+ owner: Address::new_id(1000).into(),
+ worker: Address::new_id(1001).into(),
+ window_post_proof_type: fvm_shared4::sector::RegisteredPoStProof::StackedDRGWindow32GiBV1P1,
+ peer: b"miner".to_vec(),
+ multiaddrs: Default::default(),
+ };
+
+ // not supported by the lotus
+ // let _power_miner_power_exp_params = MinerPowerParams{
+ // miner: 1234,
+ // };
+
+ let power_update_claim_params = UpdateClaimedPowerParams {
+ raw_byte_delta: StoragePower::from(1024u64),
+ quality_adjusted_delta: StoragePower::from(2048u64),
+ };
+
+ let power_enroll_event_params = EnrollCronEventParams {
+ event_epoch: 123,
+ payload: Default::default(),
+ };
+
+ let power_update_pledge_ttl_params = UpdatePledgeTotalParams {
+ pledge_delta: Default::default(),
+ };
+
+ let power_miner_raw_params = MinerRawPowerParams { miner: 1234 };
+
+ Ok(vec![
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ Method::CreateMiner as u64,
+ to_vec(&power_create_miner_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ Method::UpdateClaimedPower as u64,
+ to_vec(&power_update_claim_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ Method::EnrollCronEvent as u64,
+ to_vec(&power_enroll_event_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ Method::UpdatePledgeTotal as u64,
+ to_vec(&power_update_pledge_ttl_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ Method::CreateMinerExported as u64,
+ to_vec(&power_create_miner_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ 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,
+ Method::Constructor as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ Method::OnEpochTickEnd as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ Method::CurrentTotalPower as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ Method::NetworkRawPowerExported as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ Method::MinerCountExported as u64,
+ vec![],
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::POWER_ACTOR,
+ 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..bdc463e041d0
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/reward.rs
@@ -0,0 +1,53 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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 = ConstructorParams {
+ power: Some(Default::default()),
+ };
+
+ 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 = UpdateNetworkKPIParams {
+ curr_realized_power: Option::from(fvm_shared4::bigint::bigint_ser::BigIntDe(BigInt::from(
+ 111,
+ ))),
+ };
+
+ Ok(vec![
+ RpcTest::identity(StateDecodeParams::request((
+ Address::REWARD_ACTOR,
+ Method::Constructor as u64,
+ to_vec(&reward_constructor_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::REWARD_ACTOR,
+ Method::AwardBlockReward as u64,
+ to_vec(&reward_award_block_reward_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::REWARD_ACTOR,
+ Method::UpdateNetworkKPI as u64,
+ to_vec(&reward_update_network_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::REWARD_ACTOR,
+ 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..49e178cfc7ed
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/system.rs
@@ -0,0 +1,15 @@
+// Copyright 2019-2025 ChainSafe Systems
+// 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,
+ 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..ed143f85e941
--- /dev/null
+++ b/src/tool/subcommands/api_cmd/state_decode_params_tests/verified_reg.rs
@@ -0,0 +1,194 @@
+// Copyright 2019-2025 ChainSafe Systems
+// SPDX-License-Identifier: Apache-2.0, MIT
+
+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 = ConstructorParams {
+ root_key: Address::new_id(1000).into(),
+ };
+
+ let verified_reg_add_verifier_params = AddVerifierParams {
+ address: Address::new_id(1234).into(),
+ allowance: StoragePower::from(1048576u64), // 1MB
+ };
+
+ let verified_reg_remove_verifier_params = RemoveVerifierParams {
+ verifier: Address::new_id(1234).into(),
+ };
+
+ 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 = RemoveDataCapParams {
+ verified_client_to_remove: Address::new_id(1236).into(),
+ 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: 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 = RemoveExpiredAllocationsParams {
+ client: 1239,
+ allocation_ids: vec![1001, 1002, 1003],
+ };
+
+ 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 = GetClaimsParams {
+ provider: 1242,
+ claim_ids: vec![3001, 3002, 3003],
+ };
+
+ 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 = 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,
+ Method::Constructor as u64,
+ to_vec(&verified_reg_constructor_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ Method::AddVerifier as u64,
+ to_vec(&verified_reg_add_verifier_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ Method::RemoveVerifier as u64,
+ to_vec(&verified_reg_remove_verifier_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ Method::AddVerifiedClient as u64,
+ to_vec(&verified_reg_add_verified_client_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ Method::RemoveVerifiedClientDataCap as u64,
+ to_vec(&verified_reg_remove_data_cap_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ Method::RemoveExpiredAllocations as u64,
+ to_vec(&verified_reg_remove_expired_allocations_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ Method::ClaimAllocations as u64,
+ to_vec(&verified_reg_claim_allocations_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ Method::GetClaims as u64,
+ to_vec(&verified_reg_get_claims_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ Method::ExtendClaimTerms as u64,
+ to_vec(&verified_reg_extend_claim_terms_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ Method::RemoveExpiredClaims as u64,
+ to_vec(&verified_reg_remove_expired_claims_params)?,
+ tipset.key().into(),
+ ))?),
+ RpcTest::identity(StateDecodeParams::request((
+ Address::VERIFIED_REGISTRY_ACTOR,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ Method::UniversalReceiverHook as u64,
+ to_vec(&verified_reg_universal_receiver_params)?,
+ tipset.key().into(),
+ ))?),
+ ])
+}