From ed3d152818c18dd94131e54bfb1edad9ed5da0c3 Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <> Date: Tue, 10 Mar 2026 12:24:56 +0400 Subject: [PATCH 01/12] [EAN-Issue-2530] Added emv-contracts-details move module - The module will hold the evm contract names accosiated with the corresponding addresses - Supra node runtime will utilize this information to retrieve evm block-metadata and automation-registry contract addresses - Users can retrieve the 0x1::evm_contracts_details::EvmContractsDetails resource to get info on supra native evm contracts --- .../supra-framework/doc/config_buffer.md | 15 -- .../doc/evm_contracts_details.md | 194 ++++++++++++++++++ .../framework/supra-framework/doc/genesis.md | 31 +++ .../framework/supra-framework/doc/overview.md | 1 + .../doc/reconfiguration_with_dkg.md | 2 + .../sources/configs/config_buffer.move | 1 + .../configs/evm_contracts_details.move | 78 +++++++ .../supra-framework/sources/genesis.move | 10 + .../sources/reconfiguration_with_dkg.move | 2 + aptos-move/vm-genesis/src/lib.rs | 30 +++ crates/aptos-genesis/src/lib.rs | 1 + .../on_chain_config/evm_contracts_details.rs | 122 +++++++++++ types/src/on_chain_config/mod.rs | 2 + 13 files changed, 474 insertions(+), 15 deletions(-) create mode 100644 aptos-move/framework/supra-framework/doc/evm_contracts_details.md create mode 100644 aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move create mode 100644 types/src/on_chain_config/evm_contracts_details.rs diff --git a/aptos-move/framework/supra-framework/doc/config_buffer.md b/aptos-move/framework/supra-framework/doc/config_buffer.md index 0c1a65caddf..f491e823271 100644 --- a/aptos-move/framework/supra-framework/doc/config_buffer.md +++ b/aptos-move/framework/supra-framework/doc/config_buffer.md @@ -320,19 +320,4 @@ Typically used in X::on_new_epoch() where X is an on-chaon config. - - - - - -
schema OnNewEpochRequirement<T> {
-    let type_name = type_info::type_name<T>();
-    let configs = global<PendingConfigs>(@supra_framework);
-    include spec_fun_does_exist<T>(type_name) ==> any::UnpackRequirement<T> {
-        x: simple_map::spec_get(configs.configs, type_name)
-    };
-}
-
- - [move-book]: https://aptos.dev/move/book/SUMMARY diff --git a/aptos-move/framework/supra-framework/doc/evm_contracts_details.md b/aptos-move/framework/supra-framework/doc/evm_contracts_details.md new file mode 100644 index 00000000000..bb02deba100 --- /dev/null +++ b/aptos-move/framework/supra-framework/doc/evm_contracts_details.md @@ -0,0 +1,194 @@ + + + +# Module `0x1::evm_contracts_details` + + + +- [Resource `EvmContractsDetails`](#0x1_evm_contracts_details_EvmContractsDetails) +- [Constants](#@Constants_0) +- [Function `initialize`](#0x1_evm_contracts_details_initialize) +- [Function `upset_for_next_epoch`](#0x1_evm_contracts_details_upset_for_next_epoch) +- [Function `on_new_epoch`](#0x1_evm_contracts_details_on_new_epoch) + + +
use 0x1::config_buffer;
+use 0x1::error;
+use 0x1::event;
+use 0x1::option;
+use 0x1::simple_map;
+use 0x1::string;
+use 0x1::system_addresses;
+use 0x1::vector;
+
+ + + + + +## Resource `EvmContractsDetails` + + + +
#[event]
+struct EvmContractsDetails has copy, drop, store, key
+
+ + + +
+Fields + + +
+
+details: simple_map::SimpleMap<string::String, address> +
+
+ +
+
+ + +
+ + + +## Constants + + + + +Empty keys/values to update config. + + +
const EEMPTY_DATA: u64 = 1;
+
+ + + + + +Input keys and values should have the same amount of data + + +
const EKEYS_VALUES_MISMATCH: u64 = 2;
+
+ + + + + +## Function `initialize` + +Publishes the EvmContractInfo details. + + +
public(friend) fun initialize(supra_framework: &signer, keys: vector<string::String>, values: vector<address>)
+
+ + + +
+Implementation + + +
public(friend) fun initialize(
+    supra_framework: &signer, keys: vector<String>, values: vector<address>
+) {
+    system_addresses::assert_supra_framework(supra_framework);
+    assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA));
+    assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH));
+    let contract_details = EvmContractsDetails {
+        details: simple_map::new_from(keys, values)
+    };
+    move_to(supra_framework, contract_details);
+    event::emit(contract_details);
+}
+
+ + + +
+ + + +## Function `upset_for_next_epoch` + +This can be called by on-chain governance to update on-chain evm contract details for the next epoch. +Keys and values will match in lenght and should not be empty, otherwise the call will fail. +Example usage: +``` +supra_framework::evm_genesis_config::set_for_next_epoch(&framework_signer, vector["contact1_name"], [contract1_address]); +supra_framework::supra_governance::reconfigure(&framework_signer); +``` + + +
public fun upset_for_next_epoch(account: &signer, keys: vector<string::String>, values: vector<address>)
+
+ + + +
+Implementation + + +
public fun upset_for_next_epoch(account: &signer, keys: vector<String>, values: vector<address>) acquires EvmContractsDetails {
+    system_addresses::assert_supra_framework(account);
+    assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA));
+    assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH));
+    if (!exists<EvmContractsDetails>(@supra_framework)) {
+        std::config_buffer::upsert<EvmContractsDetails>(EvmContractsDetails { details: simple_map::new_from(keys, values) });
+        return
+    };
+    let updated_config = *borrow_global<EvmContractsDetails>(@supra_framework);
+    vector::zip(keys, values, |key, value| {
+       simple_map::upsert(&mut updated_config.details, key, value);
+    });
+    std::config_buffer::upsert<EvmContractsDetails>(updated_config);
+}
+
+ + + +
+ + + +## Function `on_new_epoch` + +Only used in reconfigurations to apply the pending EvmContractDetails in buffer, if there is any. +If supra_framework has a EvmContractDetails, then update the new config to supra_framework. +Otherwise, move the new config to supra_framework. + + +
public(friend) fun on_new_epoch(framework: &signer)
+
+ + + +
+Implementation + + +
public(friend) fun on_new_epoch(framework: &signer) acquires EvmContractsDetails {
+    system_addresses::assert_supra_framework(framework);
+    if (config_buffer::does_exist<EvmContractsDetails>()) {
+        let new_config = config_buffer::extract<EvmContractsDetails>();
+        if (!exists<EvmContractsDetails>(@supra_framework)) {
+            move_to(framework, new_config);
+        } else  {
+            let  old_config = borrow_global_mut<EvmContractsDetails>(@supra_framework);
+            *old_config = new_config;
+        };
+        event::emit(new_config)
+    }
+}
+
+ + + +
+ + +[move-book]: https://aptos.dev/move/book/SUMMARY diff --git a/aptos-move/framework/supra-framework/doc/genesis.md b/aptos-move/framework/supra-framework/doc/genesis.md index 68589c74226..33c97053461 100644 --- a/aptos-move/framework/supra-framework/doc/genesis.md +++ b/aptos-move/framework/supra-framework/doc/genesis.md @@ -19,6 +19,7 @@ - [Function `initialize_supra_native_automation_v2`](#0x1_genesis_initialize_supra_native_automation_v2) - [Function `initialize_core_resources_and_supra_coin`](#0x1_genesis_initialize_core_resources_and_supra_coin) - [Function `initialize_evm_genesis_config`](#0x1_genesis_initialize_evm_genesis_config) +- [Function `initialize_evm_contracts_details`](#0x1_genesis_initialize_evm_contracts_details) - [Function `initialize_leader_ban_registry_config`](#0x1_genesis_initialize_leader_ban_registry_config) - [Function `create_accounts`](#0x1_genesis_create_accounts) - [Function `create_account`](#0x1_genesis_create_account) @@ -62,6 +63,7 @@ use 0x1::create_signer; use 0x1::dkg_config; use 0x1::error; +use 0x1::evm_contracts_details; use 0x1::evm_genesis_config; use 0x1::execution_config; use 0x1::features; @@ -845,6 +847,35 @@ Initialize the EVM genesis config. + + + + +## Function `initialize_evm_contracts_details` + +Initialize the EVM genesis config. + + +
fun initialize_evm_contracts_details(supra_framework: &signer, keys: vector<string::String>, values: vector<address>)
+
+ + + +
+Implementation + + +
fun initialize_evm_contracts_details(
+    supra_framework: &signer,
+    keys: vector<String>,
+    values: vector<address>
+) {
+    evm_contracts_details::initialize(supra_framework, keys, values);
+}
+
+ + +
diff --git a/aptos-move/framework/supra-framework/doc/overview.md b/aptos-move/framework/supra-framework/doc/overview.md index 0bf36b9ced1..349b7e36805 100644 --- a/aptos-move/framework/supra-framework/doc/overview.md +++ b/aptos-move/framework/supra-framework/doc/overview.md @@ -31,6 +31,7 @@ This is the reference documentation of the Supra framework. - [`0x1::dkg_committee`](dkg_committee.md#0x1_dkg_committee) - [`0x1::dkg_config`](dkg_config.md#0x1_dkg_config) - [`0x1::event`](event.md#0x1_event) +- [`0x1::evm_contracts_details`](evm_contracts_details.md#0x1_evm_contracts_details) - [`0x1::evm_genesis_config`](evm_genesis_config.md#0x1_evm_genesis_config) - [`0x1::execution_config`](execution_config.md#0x1_execution_config) - [`0x1::function_info`](function_info.md#0x1_function_info) diff --git a/aptos-move/framework/supra-framework/doc/reconfiguration_with_dkg.md b/aptos-move/framework/supra-framework/doc/reconfiguration_with_dkg.md index d18866c7486..53d9f4359a7 100644 --- a/aptos-move/framework/supra-framework/doc/reconfiguration_with_dkg.md +++ b/aptos-move/framework/supra-framework/doc/reconfiguration_with_dkg.md @@ -20,6 +20,7 @@ Reconfiguration with DKG helper functions. use 0x1::consensus_config; use 0x1::dkg_committee; use 0x1::dkg_config; +use 0x1::evm_contracts_details; use 0x1::evm_genesis_config; use 0x1::execution_config; use 0x1::features; @@ -177,6 +178,7 @@ Run the default reconfiguration to enter the new epoch. randomness_api_v0_config::on_new_epoch(framework); evm_genesis_config::on_new_epoch(framework); dkg_config::on_new_epoch(framework); + evm_contracts_details::on_new_epoch(framework); reconfiguration::reconfigure(); } diff --git a/aptos-move/framework/supra-framework/sources/configs/config_buffer.move b/aptos-move/framework/supra-framework/sources/configs/config_buffer.move index 6e0019d13d0..d11c1b0bcd8 100644 --- a/aptos-move/framework/supra-framework/sources/configs/config_buffer.move +++ b/aptos-move/framework/supra-framework/sources/configs/config_buffer.move @@ -19,6 +19,7 @@ module supra_framework::config_buffer { use supra_framework::system_addresses; + friend supra_framework::evm_contracts_details; friend supra_framework::evm_genesis_config; friend supra_framework::consensus_config; friend supra_framework::execution_config; diff --git a/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move b/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move new file mode 100644 index 00000000000..9e9afb5c388 --- /dev/null +++ b/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move @@ -0,0 +1,78 @@ +module supra_framework::evm_contracts_details { + + use std::error; + use std::string::String; + use std::vector; + use aptos_std::simple_map; + use aptos_std::simple_map::SimpleMap; + use supra_framework::config_buffer; + use supra_framework::event; + use supra_framework::system_addresses; + + friend supra_framework::genesis; + friend supra_framework::reconfiguration_with_dkg; + + /// Empty keys/values to update config. + const EEMPTY_DATA: u64 = 1; + + /// Input keys and values should have the same amount of data + const EKEYS_VALUES_MISMATCH: u64 = 2; + + #[event] + struct EvmContractsDetails has key, store, copy, drop { + details: SimpleMap, + } + + /// Publishes the EvmContractInfo details. + public(friend) fun initialize( + supra_framework: &signer, keys: vector, values: vector
+ ) { + system_addresses::assert_supra_framework(supra_framework); + assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA)); + assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH)); + let contract_details = EvmContractsDetails { + details: simple_map::new_from(keys, values) + }; + move_to(supra_framework, contract_details); + event::emit(contract_details); + } + + /// This can be called by on-chain governance to update on-chain evm contract details for the next epoch. + /// Keys and values will match in lenght and should not be empty, otherwise the call will fail. + /// Example usage: + /// ``` + /// supra_framework::evm_genesis_config::set_for_next_epoch(&framework_signer, vector["contact1_name"], [contract1_address]); + /// supra_framework::supra_governance::reconfigure(&framework_signer); + /// ``` + public fun upset_for_next_epoch(account: &signer, keys: vector, values: vector
) acquires EvmContractsDetails { + system_addresses::assert_supra_framework(account); + assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA)); + assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH)); + if (!exists(@supra_framework)) { + std::config_buffer::upsert(EvmContractsDetails { details: simple_map::new_from(keys, values) }); + return + }; + let updated_config = *borrow_global(@supra_framework); + vector::zip(keys, values, |key, value| { + simple_map::upsert(&mut updated_config.details, key, value); + }); + std::config_buffer::upsert(updated_config); + } + + /// Only used in reconfigurations to apply the pending `EvmContractDetails` in buffer, if there is any. + /// If supra_framework has a EvmContractDetails, then update the new config to supra_framework. + /// Otherwise, move the new config to supra_framework. + public(friend) fun on_new_epoch(framework: &signer) acquires EvmContractsDetails { + system_addresses::assert_supra_framework(framework); + if (config_buffer::does_exist()) { + let new_config = config_buffer::extract(); + if (!exists(@supra_framework)) { + move_to(framework, new_config); + } else { + let old_config = borrow_global_mut(@supra_framework); + *old_config = new_config; + }; + event::emit(new_config) + } + } +} diff --git a/aptos-move/framework/supra-framework/sources/genesis.move b/aptos-move/framework/supra-framework/sources/genesis.move index b202ff61e54..5feb4f1a1cc 100644 --- a/aptos-move/framework/supra-framework/sources/genesis.move +++ b/aptos-move/framework/supra-framework/sources/genesis.move @@ -5,6 +5,7 @@ module supra_framework::genesis { use std::string::String; use std::vector; use aptos_std::simple_map; + use supra_framework::evm_contracts_details; use supra_framework::account; use supra_framework::aggregator_factory; @@ -300,6 +301,15 @@ module supra_framework::genesis { evm_genesis_config::initialize(supra_framework, evm_genesis_config); } + /// Initialize the EVM genesis config. + fun initialize_evm_contracts_details( + supra_framework: &signer, + keys: vector, + values: vector
+ ) { + evm_contracts_details::initialize(supra_framework, keys, values); + } + /// Initialize the leader ban config fun initialize_leader_ban_registry_config( supra_framework: &signer, leader_ban_registry_config: vector diff --git a/aptos-move/framework/supra-framework/sources/reconfiguration_with_dkg.move b/aptos-move/framework/supra-framework/sources/reconfiguration_with_dkg.move index c272aaa336c..1118b938753 100644 --- a/aptos-move/framework/supra-framework/sources/reconfiguration_with_dkg.move +++ b/aptos-move/framework/supra-framework/sources/reconfiguration_with_dkg.move @@ -7,6 +7,7 @@ module supra_framework::reconfiguration_with_dkg { use std::features; use std::option; use std::vector; + use supra_framework::evm_contracts_details; use supra_framework::automation_registry; use supra_framework::randomness; use supra_framework::consensus_config; @@ -107,6 +108,7 @@ module supra_framework::reconfiguration_with_dkg { randomness_api_v0_config::on_new_epoch(framework); evm_genesis_config::on_new_epoch(framework); dkg_config::on_new_epoch(framework); + evm_contracts_details::on_new_epoch(framework); reconfiguration::reconfigure(); } diff --git a/aptos-move/vm-genesis/src/lib.rs b/aptos-move/vm-genesis/src/lib.rs index d4132f464ad..cbbd8dbdc59 100644 --- a/aptos-move/vm-genesis/src/lib.rs +++ b/aptos-move/vm-genesis/src/lib.rs @@ -56,6 +56,7 @@ use std::{ collections::BTreeSet, hash::{Hash, Hasher}, }; +use aptos_types::on_chain_config::OnChainEvmContractsDetails; // The seed is arbitrarily picked to produce a consistent key. XXX make this more formal? const GENESIS_SEED: [u8; 32] = [42; 32]; @@ -248,6 +249,7 @@ pub fn encode_genesis_transaction_for_testnet( gas_schedule: &GasScheduleV2, supra_config_bytes: Vec, evm_genesis_config: Option, + evm_contracts_details: Option, ) -> Transaction { Transaction::GenesisTransaction(WriteSetPayload::Direct( encode_genesis_change_set_for_testnet( @@ -268,6 +270,7 @@ pub fn encode_genesis_transaction_for_testnet( gas_schedule, supra_config_bytes, evm_genesis_config, + evm_contracts_details ), )) } @@ -290,6 +293,7 @@ pub fn encode_genesis_change_set_for_testnet( gas_schedule: &GasScheduleV2, supra_config_bytes: Vec, evm_genesis_config: Option, + evm_contracts_details: Option, ) -> ChangeSet { validate_genesis_config(genesis_config); // Create a Move VM session so we can invoke on-chain genesis initializations. @@ -343,6 +347,10 @@ pub fn encode_genesis_change_set_for_testnet( initialize_evm_genesis_config(&mut session, &evm_genesis_config); } + if let Some(evm_contracts_details) = evm_contracts_details { + initialize_evm_contracts_details(&mut session, evm_contracts_details); + } + create_accounts(&mut session, accounts); if let Some(owner_group) = owner_group { @@ -619,6 +627,26 @@ fn initialize_evm_genesis_config( ); } +fn initialize_evm_contracts_details( + session: &mut SessionExt, + evm_genesis_config: OnChainEvmContractsDetails, +) { + + let (keys, values) = evm_genesis_config.to_move_values(); + + exec_function( + session, + GENESIS_MODULE_NAME, + "initialize_evm_contracts_details", + vec![], + serialize_values(&vec![ + MoveValue::Signer(CORE_CODE_ADDRESS), + keys, + values + ]), + ); +} + fn initialize_config_buffer(session: &mut SessionExt) { exec_function( session, @@ -1287,6 +1315,7 @@ pub fn generate_test_genesis( &default_gas_schedule(), b"test".to_vec(), None, + None, ); (genesis, test_validators) } @@ -1318,6 +1347,7 @@ pub fn generate_mainnet_genesis( &default_gas_schedule(), b"test".to_vec(), None, + None, ); (genesis, test_validators) } diff --git a/crates/aptos-genesis/src/lib.rs b/crates/aptos-genesis/src/lib.rs index d53bf924acc..38d2b9120bd 100644 --- a/crates/aptos-genesis/src/lib.rs +++ b/crates/aptos-genesis/src/lib.rs @@ -177,6 +177,7 @@ impl GenesisInfo { &self.gas_schedule, b"test".to_vec(), None, + None, ) } diff --git a/types/src/on_chain_config/evm_contracts_details.rs b/types/src/on_chain_config/evm_contracts_details.rs new file mode 100644 index 00000000000..ea8ae804264 --- /dev/null +++ b/types/src/on_chain_config/evm_contracts_details.rs @@ -0,0 +1,122 @@ +use crate::on_chain_config::OnChainConfig; +use move_core_types::account_address::AccountAddress; +use serde::{Deserialize, Serialize}; +use std::collections::BTreeMap; +use std::fmt::{Display, Formatter}; +use std::str::FromStr; +use move_core_types::value::MoveValue; + +/// Evm Contract Names deployed by Supra at genesis or later to be part of Supra EVM main state. +// TODO: at runtime BlockMetadata, AutomationRegistry and maybe AutomationController is required +// The rest will not be utilized by node runtime. Should we keep for the sake of consistency between +// persistent state and runtime state or we can +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, Hash, PartialOrd, Ord)] +pub enum EvmContractName { + Treasury = 0, + Erc20Treasury, + MultiSignatureWallet, + MultisigBeacon, + FoundationWallet, + Erc20Supra, + BlockMetadata, + AutomationCore, + AutomationRegistry, + AutomationController, +} + +impl FromStr for EvmContractName { + type Err = anyhow::Error; + + fn from_str(s: &str) -> Result { + match s { + "treasury" => Ok(EvmContractName::Treasury), + "erc20_treasury" => Ok(EvmContractName::Erc20Treasury), + "multi_signature_wallet" => Ok(EvmContractName::MultiSignatureWallet), + "multisig_beacon" => Ok(EvmContractName::MultisigBeacon), + "foundation_wallet" => Ok(EvmContractName::FoundationWallet), + "erc20_supra" => Ok(EvmContractName::Erc20Supra), + "block_metadata" => Ok(EvmContractName::BlockMetadata), + "automation_core" => Ok(EvmContractName::AutomationCore), + "automation_registry" => Ok(EvmContractName::AutomationRegistry), + "automation_controller" => Ok(EvmContractName::AutomationController), + _ => Err(anyhow::anyhow!("unknown evm contract name: {}", s)), + } + } +} + +impl Display for EvmContractName { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + match self { + EvmContractName::Treasury => write!(f, "treasury"), + EvmContractName::Erc20Treasury => write!(f, "erc20_treasury"), + EvmContractName::MultiSignatureWallet => write!(f, "multi_signature_wallet"), + EvmContractName::MultisigBeacon => write!(f, "multisig_beacon"), + EvmContractName::FoundationWallet => write!(f, "foundation_wallet"), + EvmContractName::Erc20Supra => write!(f, "erc20_supra"), + EvmContractName::BlockMetadata => write!(f, "block_metadata"), + EvmContractName::AutomationCore => write!(f, "automation_core"), + EvmContractName::AutomationRegistry => write!(f, "automation_registry"), + EvmContractName::AutomationController => write!(f, "automation_controller"), + } + } +} + +#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] +pub(crate) struct EvmContractsDetails { + details: Vec<(String, AccountAddress)>, +} + +pub const EVM_ADDRESS_LENGTH: usize = 20; +type RawEvmAddress = [u8; EVM_ADDRESS_LENGTH]; + +/// The Genesis configuration for EVM that can only be set once at genesis epoch. +#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] +pub struct OnChainEvmContractsDetails { + pub name_to_addresses: BTreeMap, +} + +impl OnChainEvmContractsDetails { + /// Converts keys and values to [`MoveValue`] and returns as tuple. + pub fn to_move_values(self) -> (MoveValue, MoveValue) { + let (keys, values):(Vec<_>, Vec<_>) = self.name_to_addresses.into_iter().map(|(key, value)| { + let mut padded = [0u8; AccountAddress::LENGTH]; + padded[..EVM_ADDRESS_LENGTH].copy_from_slice(&value); + (MoveValue::vector_u8(key.to_string().into_bytes()), + AccountAddress::from(padded) + ) + }).unzip(); + (MoveValue::Vector(keys), MoveValue::vector_address(values)) + + } + + pub fn get(&self, contract_name: EvmContractName) -> Option<&RawEvmAddress> { + self.name_to_addresses.get(&contract_name) + } + + pub fn has_all_keys(&self, keys: &[EvmContractName]) -> bool { + keys.into_iter().all(|key| self.name_to_addresses.contains_key(key)) + } + +} + +impl OnChainConfig for OnChainEvmContractsDetails { + const MODULE_IDENTIFIER: &'static str = "evm_contracts_details"; + const TYPE_IDENTIFIER: &'static str = "EvmContractsDetails"; + + fn deserialize_into_config(bytes: &[u8]) -> anyhow::Result { + let raw_details = bcs::from_bytes::(bytes)?; + let details = raw_details + .details + .into_iter() + .filter_map(|(key, value)| { + let name = EvmContractName::from_str(&key).ok()?; + let evm_address: RawEvmAddress = + value.into_bytes()[..EVM_ADDRESS_LENGTH].try_into().ok()?; + Some((name, evm_address)) + }) + .collect::>(); + Ok(Self { + name_to_addresses: details, + }) + } +} diff --git a/types/src/on_chain_config/mod.rs b/types/src/on_chain_config/mod.rs index 50a10bd80c6..430b9c94dd0 100644 --- a/types/src/on_chain_config/mod.rs +++ b/types/src/on_chain_config/mod.rs @@ -38,6 +38,7 @@ mod timed_features; mod timestamp; mod transaction_fee; mod validator_set; +mod evm_contracts_details; pub use self::{ approved_execution_hashes::ApprovedExecutionHashes, @@ -75,6 +76,7 @@ pub use self::{ timestamp::CurrentTimeMicroseconds, transaction_fee::TransactionFeeBurnCap, validator_set::{ConsensusScheme, ValidatorSet}, + evm_contracts_details::{OnChainEvmContractsDetails, EvmContractName}, }; /// To register an on-chain config in Rust: From 18a200cd61a07ef8ecebbd9188b87b7b5d899fdf Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <> Date: Mon, 6 Apr 2026 12:24:52 +0400 Subject: [PATCH 02/12] Addressed review comments --- .../supra-framework/doc/evm_contracts_details.md | 12 ++++++------ .../sources/configs/evm_contracts_details.move | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/aptos-move/framework/supra-framework/doc/evm_contracts_details.md b/aptos-move/framework/supra-framework/doc/evm_contracts_details.md index bb02deba100..a9021081d26 100644 --- a/aptos-move/framework/supra-framework/doc/evm_contracts_details.md +++ b/aptos-move/framework/supra-framework/doc/evm_contracts_details.md @@ -8,7 +8,7 @@ - [Resource `EvmContractsDetails`](#0x1_evm_contracts_details_EvmContractsDetails) - [Constants](#@Constants_0) - [Function `initialize`](#0x1_evm_contracts_details_initialize) -- [Function `upset_for_next_epoch`](#0x1_evm_contracts_details_upset_for_next_epoch) +- [Function `upsert_for_next_epoch`](#0x1_evm_contracts_details_upsert_for_next_epoch) - [Function `on_new_epoch`](#0x1_evm_contracts_details_on_new_epoch) @@ -111,20 +111,20 @@ Publishes the EvmContractInfo details. - + -## Function `upset_for_next_epoch` +## Function `upsert_for_next_epoch` This can be called by on-chain governance to update on-chain evm contract details for the next epoch. Keys and values will match in lenght and should not be empty, otherwise the call will fail. Example usage: ``` -supra_framework::evm_genesis_config::set_for_next_epoch(&framework_signer, vector["contact1_name"], [contract1_address]); +supra_framework::evm_contracts_details::upsert_for_next_epoch(&framework_signer, vector["contact1_name"], vector[contract1_address]); supra_framework::supra_governance::reconfigure(&framework_signer); ``` -
public fun upset_for_next_epoch(account: &signer, keys: vector<string::String>, values: vector<address>)
+
public fun upsert_for_next_epoch(account: &signer, keys: vector<string::String>, values: vector<address>)
 
@@ -133,7 +133,7 @@ supra_framework::supra_governance::reconfigure(&framework_signer); Implementation -
public fun upset_for_next_epoch(account: &signer, keys: vector<String>, values: vector<address>) acquires EvmContractsDetails {
+
public fun upsert_for_next_epoch(account: &signer, keys: vector<String>, values: vector<address>) acquires EvmContractsDetails {
     system_addresses::assert_supra_framework(account);
     assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA));
     assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH));
diff --git a/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move b/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move
index 9e9afb5c388..e4ddab92594 100644
--- a/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move
+++ b/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move
@@ -41,10 +41,10 @@ module supra_framework::evm_contracts_details {
     /// Keys and values will match in lenght and should not be empty, otherwise the call will fail.
     /// Example usage:
     /// ```
-    /// supra_framework::evm_genesis_config::set_for_next_epoch(&framework_signer, vector["contact1_name"], [contract1_address]);
+    /// supra_framework::evm_contracts_details::upsert_for_next_epoch(&framework_signer, vector["contact1_name"], vector[contract1_address]);
     /// supra_framework::supra_governance::reconfigure(&framework_signer);
     /// ```
-    public fun upset_for_next_epoch(account: &signer, keys: vector, values: vector
) acquires EvmContractsDetails { + public fun upsert_for_next_epoch(account: &signer, keys: vector, values: vector
) acquires EvmContractsDetails { system_addresses::assert_supra_framework(account); assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA)); assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH)); From b97a3a4491fa45878f8e0a99ddbe784f59657cd1 Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <> Date: Mon, 6 Apr 2026 15:03:53 +0400 Subject: [PATCH 03/12] Addressed license headers --- aptos-move/aptos-vm/src/aptos_vm_viewer.rs | 3 --- aptos-move/aptos-vm/src/automated_transaction_processor.rs | 3 --- .../aptos-vm/src/automation_registry_transaction_processor.rs | 3 --- aptos-move/e2e-testsuite/src/tests/automated_transactions.rs | 3 --- aptos-move/e2e-testsuite/src/tests/automation_registration.rs | 3 --- aptos-move/e2e-testsuite/src/tests/vm_viewer.rs | 3 --- .../framework/src/natives/automation_registry_callbacks.rs | 3 --- .../src/natives/cryptography/bls12381_bulletproofs.rs | 3 --- .../framework/src/natives/cryptography/bls12381_scalar.rs | 3 --- aptos-move/framework/src/natives/cryptography/eth_trie.rs | 3 --- aptos-move/framework/src/natives/rlp.rs | 3 --- devtools/assets/license_header.txt | 2 +- devtools/assets/license_header_utf8.txt | 2 +- devtools/assets/shared_license_header.txt | 1 + devtools/assets/shared_license_header_utf8.txt | 1 + types/src/on_chain_config/automation_registry.rs | 3 --- types/src/on_chain_config/evm_contracts_details.rs | 3 +++ types/src/on_chain_config/evm_genesis_config.rs | 3 --- types/src/transaction/automated_transaction.rs | 3 --- types/src/transaction/automation.rs | 3 --- types/src/unit_tests/automation.rs | 3 --- 21 files changed, 7 insertions(+), 50 deletions(-) diff --git a/aptos-move/aptos-vm/src/aptos_vm_viewer.rs b/aptos-move/aptos-vm/src/aptos_vm_viewer.rs index a5ce78285ef..5bad9355228 100644 --- a/aptos-move/aptos-vm/src/aptos_vm_viewer.rs +++ b/aptos-move/aptos-vm/src/aptos_vm_viewer.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. // SPDX-License-Identifier: Apache-2.0 diff --git a/aptos-move/aptos-vm/src/automated_transaction_processor.rs b/aptos-move/aptos-vm/src/automated_transaction_processor.rs index 84d3eb76430..ab0ccaec3e4 100644 --- a/aptos-move/aptos-vm/src/automated_transaction_processor.rs +++ b/aptos-move/aptos-vm/src/automated_transaction_processor.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. // SPDX-License-Identifier: Apache-2.0 diff --git a/aptos-move/aptos-vm/src/automation_registry_transaction_processor.rs b/aptos-move/aptos-vm/src/automation_registry_transaction_processor.rs index 71125163f6d..3341741a43f 100644 --- a/aptos-move/aptos-vm/src/automation_registry_transaction_processor.rs +++ b/aptos-move/aptos-vm/src/automation_registry_transaction_processor.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2025 Supra. // SPDX-License-Identifier: Apache-2.0 diff --git a/aptos-move/e2e-testsuite/src/tests/automated_transactions.rs b/aptos-move/e2e-testsuite/src/tests/automated_transactions.rs index 931f7b3611a..2b60baf3520 100644 --- a/aptos-move/e2e-testsuite/src/tests/automated_transactions.rs +++ b/aptos-move/e2e-testsuite/src/tests/automated_transactions.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. // SPDX-License-Identifier: Apache-2.0 diff --git a/aptos-move/e2e-testsuite/src/tests/automation_registration.rs b/aptos-move/e2e-testsuite/src/tests/automation_registration.rs index 73648ec2e11..4444ea6cadc 100644 --- a/aptos-move/e2e-testsuite/src/tests/automation_registration.rs +++ b/aptos-move/e2e-testsuite/src/tests/automation_registration.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. // SPDX-License-Identifier: Apache-2.0 diff --git a/aptos-move/e2e-testsuite/src/tests/vm_viewer.rs b/aptos-move/e2e-testsuite/src/tests/vm_viewer.rs index 7f5b7ea6a58..10e0b6e33bc 100644 --- a/aptos-move/e2e-testsuite/src/tests/vm_viewer.rs +++ b/aptos-move/e2e-testsuite/src/tests/vm_viewer.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. // SPDX-License-Identifier: Apache-2.0 diff --git a/aptos-move/framework/src/natives/automation_registry_callbacks.rs b/aptos-move/framework/src/natives/automation_registry_callbacks.rs index 462756d9fd1..bc2aeb2a13d 100644 --- a/aptos-move/framework/src/natives/automation_registry_callbacks.rs +++ b/aptos-move/framework/src/natives/automation_registry_callbacks.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2025 Supra. // SPDX-License-Identifier: Apache-2.0 use aptos_native_interface::{SafeNativeBuilder, SafeNativeContext, SafeNativeResult}; diff --git a/aptos-move/framework/src/natives/cryptography/bls12381_bulletproofs.rs b/aptos-move/framework/src/natives/cryptography/bls12381_bulletproofs.rs index 01530e3accc..7839d844271 100644 --- a/aptos-move/framework/src/natives/cryptography/bls12381_bulletproofs.rs +++ b/aptos-move/framework/src/natives/cryptography/bls12381_bulletproofs.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. use crate::natives::cryptography::bulletproofs::abort_codes; diff --git a/aptos-move/framework/src/natives/cryptography/bls12381_scalar.rs b/aptos-move/framework/src/natives/cryptography/bls12381_scalar.rs index 1a544baa646..831cbedc52e 100644 --- a/aptos-move/framework/src/natives/cryptography/bls12381_scalar.rs +++ b/aptos-move/framework/src/natives/cryptography/bls12381_scalar.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. use aptos_gas_schedule::gas_params::natives::aptos_framework::{ diff --git a/aptos-move/framework/src/natives/cryptography/eth_trie.rs b/aptos-move/framework/src/natives/cryptography/eth_trie.rs index 6dc32154c90..bafc3006fb2 100644 --- a/aptos-move/framework/src/natives/cryptography/eth_trie.rs +++ b/aptos-move/framework/src/natives/cryptography/eth_trie.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. use aptos_gas_schedule::gas_params::natives::aptos_framework::{ diff --git a/aptos-move/framework/src/natives/rlp.rs b/aptos-move/framework/src/natives/rlp.rs index 413bb9cf867..9f650350766 100644 --- a/aptos-move/framework/src/natives/rlp.rs +++ b/aptos-move/framework/src/natives/rlp.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. use aptos_gas_schedule::gas_params::natives::aptos_framework::{ diff --git a/devtools/assets/license_header.txt b/devtools/assets/license_header.txt index ebc846ed74b..47bc4ada806 100644 --- a/devtools/assets/license_header.txt +++ b/devtools/assets/license_header.txt @@ -1,2 +1,2 @@ -Copyright (c) Aptos Foundation +Copyright (c) Supra. SPDX-License-Identifier: Apache-2.0 diff --git a/devtools/assets/license_header_utf8.txt b/devtools/assets/license_header_utf8.txt index 5f8d7b55e16..47bc4ada806 100644 --- a/devtools/assets/license_header_utf8.txt +++ b/devtools/assets/license_header_utf8.txt @@ -1,2 +1,2 @@ -Copyright © Aptos Foundation +Copyright (c) Supra. SPDX-License-Identifier: Apache-2.0 diff --git a/devtools/assets/shared_license_header.txt b/devtools/assets/shared_license_header.txt index 18a8743e5f4..87bc810c97d 100644 --- a/devtools/assets/shared_license_header.txt +++ b/devtools/assets/shared_license_header.txt @@ -1,3 +1,4 @@ +Copyright (c) Supra. Copyright (c) Aptos Foundation Parts of the project are originally copyright (c) Meta Platforms, Inc. SPDX-License-Identifier: Apache-2.0 diff --git a/devtools/assets/shared_license_header_utf8.txt b/devtools/assets/shared_license_header_utf8.txt index e5b2ef62fc0..da4c1bddd68 100644 --- a/devtools/assets/shared_license_header_utf8.txt +++ b/devtools/assets/shared_license_header_utf8.txt @@ -1,3 +1,4 @@ +Copyright (c) Supra. Copyright © Aptos Foundation Parts of the project are originally copyright © Meta Platforms, Inc. SPDX-License-Identifier: Apache-2.0 diff --git a/types/src/on_chain_config/automation_registry.rs b/types/src/on_chain_config/automation_registry.rs index 4f68aa12669..e910f61baad 100644 --- a/types/src/on_chain_config/automation_registry.rs +++ b/types/src/on_chain_config/automation_registry.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2025 Supra. // SPDX-License-Identifier: Apache-2.0 diff --git a/types/src/on_chain_config/evm_contracts_details.rs b/types/src/on_chain_config/evm_contracts_details.rs index ea8ae804264..6d995ab838c 100644 --- a/types/src/on_chain_config/evm_contracts_details.rs +++ b/types/src/on_chain_config/evm_contracts_details.rs @@ -1,3 +1,6 @@ +// Copyright (c) 2026 Supra. +// SPDX-License-Identifier: Apache-2.0 + use crate::on_chain_config::OnChainConfig; use move_core_types::account_address::AccountAddress; use serde::{Deserialize, Serialize}; diff --git a/types/src/on_chain_config/evm_genesis_config.rs b/types/src/on_chain_config/evm_genesis_config.rs index 1901bc9bb64..30b9f08ce0e 100644 --- a/types/src/on_chain_config/evm_genesis_config.rs +++ b/types/src/on_chain_config/evm_genesis_config.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) Supra Foundation // SPDX-License-Identifier: Apache-2.0 diff --git a/types/src/transaction/automated_transaction.rs b/types/src/transaction/automated_transaction.rs index 317547326be..a7b1009ebcc 100644 --- a/types/src/transaction/automated_transaction.rs +++ b/types/src/transaction/automated_transaction.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. // SPDX-License-Identifier: Apache-2.0 diff --git a/types/src/transaction/automation.rs b/types/src/transaction/automation.rs index c374987485d..892afaa63d5 100644 --- a/types/src/transaction/automation.rs +++ b/types/src/transaction/automation.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2025 Supra. // SPDX-License-Identifier: Apache-2.0 diff --git a/types/src/unit_tests/automation.rs b/types/src/unit_tests/automation.rs index eb361d3845c..470b806479d 100644 --- a/types/src/unit_tests/automation.rs +++ b/types/src/unit_tests/automation.rs @@ -1,6 +1,3 @@ -// Copyright (c) Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - // Copyright (c) 2024 Supra. // SPDX-License-Identifier: Apache-2.0 From 66ba102c7c8fdda439cf7fe343c717fe7b7502ee Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <> Date: Mon, 20 Apr 2026 00:41:42 +0400 Subject: [PATCH 04/12] Fixed TODO and test failures --- aptos-move/e2e-tests/src/executor.rs | 7 +- .../src/tests/automated_transactions.rs | 2 +- .../src/tests/automation_registration.rs | 14 +- .../src/aptos_framework_sdk_builder.rs | 8199 ++++++----------- .../on_chain_config/evm_contracts_details.rs | 44 +- 5 files changed, 2792 insertions(+), 5474 deletions(-) diff --git a/aptos-move/e2e-tests/src/executor.rs b/aptos-move/e2e-tests/src/executor.rs index 87da2dbbac4..b483f2c9dbb 100644 --- a/aptos-move/e2e-tests/src/executor.rs +++ b/aptos-move/e2e-tests/src/executor.rs @@ -502,8 +502,9 @@ impl FakeExecutor { /// Executes the transaction as a singleton block and applies the resulting write set to the /// data store. Panics if execution fails pub fn execute_and_apply_transaction(&mut self, transaction: Transaction) -> TransactionOutput { - let mut outputs = self.execute_transaction_block(vec![transaction]).unwrap(); + let mut outputs = self.execute_transaction_block(vec![transaction.clone()]).unwrap(); assert_eq!(outputs.len(), 1, "transaction outputs size mismatch"); + println!("transaction execution output: {:#?} : {:#?}", outputs, transaction); let output = outputs.pop().unwrap(); match output.status() { TransactionStatus::Keep(status) => { @@ -522,8 +523,8 @@ impl FakeExecutor { assert_eq!( status, &ExecutionStatus::Success, - "transaction failed with {:?}", - status + "transaction failed with {:?}, {:?}", + status, transaction ); output }, diff --git a/aptos-move/e2e-testsuite/src/tests/automated_transactions.rs b/aptos-move/e2e-testsuite/src/tests/automated_transactions.rs index 2b60baf3520..fdc3fb6e973 100644 --- a/aptos-move/e2e-testsuite/src/tests/automated_transactions.rs +++ b/aptos-move/e2e-testsuite/src/tests/automated_transactions.rs @@ -103,7 +103,7 @@ fn check_automated_transaction_successful_execution() { let payload = aptos_framework_sdk_builder::supra_account_transfer(dest_account.address().clone(), 100); let gas_price = 100; - let max_gas_amount = 100; + let max_gas_amount = 1000; let automation_fee_cap = 100_000; // Register automation task diff --git a/aptos-move/e2e-testsuite/src/tests/automation_registration.rs b/aptos-move/e2e-testsuite/src/tests/automation_registration.rs index 4444ea6cadc..38a476c4b37 100644 --- a/aptos-move/e2e-testsuite/src/tests/automation_registration.rs +++ b/aptos-move/e2e-testsuite/src/tests/automation_registration.rs @@ -48,6 +48,8 @@ const HAS_SENDER_ACTIVE_TASK_WITH_ID: &str = "0x1::automation_registry::has_sender_active_task_with_id"; const GET_TASK_IDS: &str = "0x1::automation_registry::get_task_ids"; +const MAX_GAS_AMOUNT_REGISTRATION: u64 = 500_000_000; + struct MultisigAccountData { multisig_address: AccountAddress, owners: Vec, @@ -108,8 +110,8 @@ impl AutomationRegistrationTestContext { fn create_multisig_account_data(executor: &mut FakeExecutor) -> MultisigAccountData { // Prepare multisig_account for system task registration - let multisig_owner1 = executor.create_raw_account_data(1_000_000_000, 0); - let multisig_owner2 = executor.create_raw_account_data(1_000_000_000, 0); + let multisig_owner1 = executor.create_raw_account_data(1_000_000_000_000, 0); + let multisig_owner2 = executor.create_raw_account_data(1_000_000_000_000, 0); executor.add_account_data(&multisig_owner1); executor.add_account_data(&multisig_owner2); let multisig_address = create_multisig_account_address( @@ -126,7 +128,7 @@ impl AutomationRegistrationTestContext { let account_create_txn = multisig_owner1 .account() .transaction() - .max_gas_amount(1_000_000) + .max_gas_amount(5_000_000) .gas_unit_price(100) .payload(create_multisig_payload) .sequence_number(0) @@ -136,7 +138,7 @@ impl AutomationRegistrationTestContext { let transfer_txn = multisig_owner1 .account() .transaction() - .max_gas_amount(1000) + .max_gas_amount(5_000_000) .payload(aptos_stdlib::supra_account_transfer( multisig_address, 10_000_000, @@ -230,6 +232,7 @@ impl AutomationRegistrationTestContext { .payload(automation_txn) .sequence_number(seq_num) .gas_unit_price(1) + .max_gas_amount(MAX_GAS_AMOUNT_REGISTRATION) .sign() } @@ -259,6 +262,7 @@ impl AutomationRegistrationTestContext { .payload(automation_txn) .sequence_number(seq_num) .gas_unit_price(1) + .max_gas_amount(MAX_GAS_AMOUNT_REGISTRATION) .sign() } @@ -283,6 +287,7 @@ impl AutomationRegistrationTestContext { .payload(automation_txn) .sequence_number(seq_num) .gas_unit_price(1) + .max_gas_amount(MAX_GAS_AMOUNT_REGISTRATION) .sign() } @@ -300,6 +305,7 @@ impl AutomationRegistrationTestContext { )) .sequence_number(seq_num) .gas_unit_price(1) + .max_gas_amount(MAX_GAS_AMOUNT_REGISTRATION) .sign() } diff --git a/aptos-move/framework/cached-packages/src/aptos_framework_sdk_builder.rs b/aptos-move/framework/cached-packages/src/aptos_framework_sdk_builder.rs index 6021de2c273..0e8fa86271c 100644 --- a/aptos-move/framework/cached-packages/src/aptos_framework_sdk_builder.rs +++ b/aptos-move/framework/cached-packages/src/aptos_framework_sdk_builder.rs @@ -1,3 +1,4 @@ + // Copyright © Aptos Foundation // SPDX-License-Identifier: Apache-2.0 @@ -15,17 +16,14 @@ #![allow(clippy::too_many_arguments)] #![allow(clippy::arc_with_non_send_sync)] #![allow(clippy::get_first)] -use aptos_types::{ - account_address::AccountAddress, - transaction::{EntryFunction, TransactionPayload}, -}; -use move_core_types::{ - ident_str, - language_storage::{ModuleId, TypeTag}, -}; +use aptos_types::account_address::{AccountAddress}; +use aptos_types::transaction::{TransactionPayload, EntryFunction}; +use move_core_types::{ident_str}; +use move_core_types::language_storage::{ModuleId, TypeTag}; type Bytes = Vec; + /// Structured representation of a call into a known Move entry function. /// ```ignore /// impl EntryFunctionCall { @@ -37,6 +35,7 @@ type Bytes = Vec; #[cfg_attr(feature = "fuzzing", derive(proptest_derive::Arbitrary))] #[cfg_attr(feature = "fuzzing", proptest(no_params))] pub enum EntryFunctionCall { + /// Offers rotation capability on behalf of `account` to the account at address `recipient_address`. /// An account can delegate its rotation capability to only one other address at one time. If the account /// has an existing rotation capability offer, calling this function will update the rotation capability offer with @@ -78,10 +77,12 @@ pub enum EntryFunctionCall { }, /// Revoke any rotation capability offer in the specified account. - AccountRevokeAnyRotationCapability {}, + AccountRevokeAnyRotationCapability { + }, /// Revoke any signer capability offer in the specified account. - AccountRevokeAnySignerCapability {}, + AccountRevokeAnySignerCapability { + }, /// Revoke the rotation capability offer given to `to_be_revoked_recipient_address` from `account` AccountRevokeRotationCapability { @@ -140,6 +141,7 @@ pub enum EntryFunctionCall { new_auth_key: Vec, }, + AccountRotateAuthenticationKeyWithRotationCapability { rotation_cap_offerer_address: AccountAddress, new_scheme: u8, @@ -194,7 +196,9 @@ pub enum EntryFunctionCall { code: Vec>, }, - CoinCreateCoinConversionMap {}, + + CoinCreateCoinConversionMap { + }, /// Create SUPRA pairing by passing `SupraCoin`. CoinCreatePairing { @@ -565,6 +569,7 @@ pub enum EntryFunctionCall { amount: u64, }, + PboDelegationPoolAdminIncreaseLastUnlockPeriod { pool_address: AccountAddress, additional_periods: u64, @@ -583,12 +588,14 @@ pub enum EntryFunctionCall { pool_address: AccountAddress, }, + PboDelegationPoolFundDelegatorsWithLockedStake { pool_address: AccountAddress, delegators: Vec, stakes: Vec, }, + PboDelegationPoolFundDelegatorsWithStake { pool_address: AccountAddress, delegators: Vec, @@ -708,6 +715,7 @@ pub enum EntryFunctionCall { unlock_duration: u64, }, + PboDelegationPoolUpdateUnlockingScheduleUnchecked { pool_address: AccountAddress, unlock_numerators: Vec, @@ -756,7 +764,8 @@ pub enum EntryFunctionCall { }, /// Similar to increase_lockup_with_cap but will use ownership capability from the signing account. - StakeIncreaseLockup {}, + StakeIncreaseLockup { + }, /// Initialize the validator account and give ownership to the signing account /// except it leaves the ValidatorConfig to be set by another entity. @@ -909,39 +918,47 @@ pub enum EntryFunctionCall { new_voter: AccountAddress, }, + StakingProxySetOperator { old_operator: AccountAddress, new_operator: AccountAddress, }, + StakingProxySetStakePoolOperator { new_operator: AccountAddress, }, + StakingProxySetStakePoolVoter { new_voter: AccountAddress, }, + StakingProxySetStakingContractOperator { old_operator: AccountAddress, new_operator: AccountAddress, }, + StakingProxySetStakingContractVoter { operator: AccountAddress, new_voter: AccountAddress, }, + StakingProxySetVestingContractOperator { old_operator: AccountAddress, new_operator: AccountAddress, }, + StakingProxySetVestingContractVoter { operator: AccountAddress, new_voter: AccountAddress, }, + StakingProxySetVoter { operator: AccountAddress, new_voter: AccountAddress, @@ -987,7 +1004,8 @@ pub enum EntryFunctionCall { /// Only callable in tests and testnets where the core resources account exists. /// Claim the delegated mint capability and destroy the delegated token. - SupraCoinClaimMintCapability {}, + SupraCoinClaimMintCapability { + }, /// Only callable in tests and testnets where the core resources account exists. /// Create delegated token for the address so the account could claim MintCapability later. @@ -1002,6 +1020,7 @@ pub enum EntryFunctionCall { amount: u64, }, + SupraGovernanceAddSupraApprovedScriptHashScript { proposal_id: u64, }, @@ -1012,11 +1031,13 @@ pub enum EntryFunctionCall { /// /// WARNING: currently only used by tests. In most cases you should use `reconfigure()` instead. /// TODO: migrate these tests to be aware of async reconfiguration. - SupraGovernanceForceEndEpoch {}, + SupraGovernanceForceEndEpoch { + }, /// `force_end_epoch()` equivalent but only called in testnet, /// where the core resources account exists and has been granted power to mint Supra coins. - SupraGovernanceForceEndEpochTestOnly {}, + SupraGovernanceForceEndEpochTestOnly { + }, /// Manually reconfigure. Called at the end of a governance txn that alters on-chain configs. /// @@ -1027,7 +1048,8 @@ pub enum EntryFunctionCall { /// /// This behavior affects when an update of an on-chain config (e.g. `ConsensusConfig`, `Features`) takes effect, /// since such updates are applied whenever we enter a new epoch. - SupraGovernanceReconfigure {}, + SupraGovernanceReconfigure { + }, /// Create a single-step proposal with the backing `stake_pool`. /// @param execution_hash Required. This is the hash of the resolution script. When the proposal is resolved, @@ -1054,7 +1076,9 @@ pub enum EntryFunctionCall { should_pass: bool, }, - TransactionFeeConvertToAptosFaBurnRef {}, + + TransactionFeeConvertToAptosFaBurnRef { + }, /// Used in on-chain governances to update the major version for the next epoch. /// Example usage: @@ -1096,10 +1120,12 @@ pub enum EntryFunctionCall { shareholder: AccountAddress, }, + VestingResetLockup { contract_address: AccountAddress, }, + VestingSetBeneficiary { contract_address: AccountAddress, shareholder: AccountAddress, @@ -1111,11 +1137,13 @@ pub enum EntryFunctionCall { new_beneficiary: AccountAddress, }, + VestingSetBeneficiaryResetter { contract_address: AccountAddress, beneficiary_resetter: AccountAddress, }, + VestingSetManagementRole { contract_address: AccountAddress, role: Vec, @@ -1137,22 +1165,26 @@ pub enum EntryFunctionCall { contract_addresses: Vec, }, + VestingUpdateCommissionPercentage { contract_address: AccountAddress, new_commission_percentage: u64, }, + VestingUpdateOperator { contract_address: AccountAddress, new_operator: AccountAddress, commission_percentage: u64, }, + VestingUpdateOperatorWithSameCommission { contract_address: AccountAddress, new_operator: AccountAddress, }, + VestingUpdateVoter { contract_address: AccountAddress, new_voter: AccountAddress, @@ -1168,6 +1200,7 @@ pub enum EntryFunctionCall { contract_addresses: Vec, }, + VestingWithoutStakingAdminDelayVesting { contract_address: AccountAddress, delay_periods: u64, @@ -1179,6 +1212,7 @@ pub enum EntryFunctionCall { contract_address: AccountAddress, }, + VestingWithoutStakingCreateVestingContractWithAmounts { shareholders: Vec, shares: Vec, @@ -1204,23 +1238,27 @@ pub enum EntryFunctionCall { shareholder: AccountAddress, }, + VestingWithoutStakingSetBeneficiary { contract_address: AccountAddress, shareholder: AccountAddress, new_beneficiary: AccountAddress, }, + VestingWithoutStakingSetBeneficiaryResetter { contract_address: AccountAddress, beneficiary_resetter: AccountAddress, }, + VestingWithoutStakingSetManagementRole { contract_address: AccountAddress, role: Vec, role_holder: AccountAddress, }, + VestingWithoutStakingSetVestingSchedule { contract_address: AccountAddress, vesting_numerators: Vec, @@ -1238,871 +1276,191 @@ pub enum EntryFunctionCall { contract_address: AccountAddress, }, + VestingWithoutStakingVestIndividual { contract_address: AccountAddress, shareholder_address: AccountAddress, }, } + impl EntryFunctionCall { + /// Build an Aptos `TransactionPayload` from a structured object `EntryFunctionCall`. pub fn encode(self) -> TransactionPayload { use EntryFunctionCall::*; match self { - AccountOfferRotationCapability { - rotation_capability_sig_bytes, - account_scheme, - account_public_key_bytes, - recipient_address, - } => account_offer_rotation_capability( - rotation_capability_sig_bytes, - account_scheme, - account_public_key_bytes, - recipient_address, - ), - AccountOfferSignerCapability { - signer_capability_sig_bytes, - account_scheme, - account_public_key_bytes, - recipient_address, - } => account_offer_signer_capability( - signer_capability_sig_bytes, - account_scheme, - account_public_key_bytes, - recipient_address, - ), - AccountRevokeAnyRotationCapability {} => account_revoke_any_rotation_capability(), - AccountRevokeAnySignerCapability {} => account_revoke_any_signer_capability(), - AccountRevokeRotationCapability { - to_be_revoked_address, - } => account_revoke_rotation_capability(to_be_revoked_address), - AccountRevokeSignerCapability { - to_be_revoked_address, - } => account_revoke_signer_capability(to_be_revoked_address), - AccountRotateAuthenticationKey { - from_scheme, - from_public_key_bytes, - to_scheme, - to_public_key_bytes, - cap_rotate_key, - cap_update_table, - } => account_rotate_authentication_key( - from_scheme, - from_public_key_bytes, - to_scheme, - to_public_key_bytes, - cap_rotate_key, - cap_update_table, - ), - AccountRotateAuthenticationKeyCall { new_auth_key } => { - account_rotate_authentication_key_call(new_auth_key) - }, - AccountRotateAuthenticationKeyWithRotationCapability { - rotation_cap_offerer_address, - new_scheme, - new_public_key_bytes, - cap_update_table, - } => account_rotate_authentication_key_with_rotation_capability( - rotation_cap_offerer_address, - new_scheme, - new_public_key_bytes, - cap_update_table, - ), - AutomationRegistryCancelSystemTask { task_index } => { - automation_registry_cancel_system_task(task_index) - }, - AutomationRegistryCancelTask { task_index } => { - automation_registry_cancel_task(task_index) - }, - AutomationRegistryStopSystemTasks { task_indexes } => { - automation_registry_stop_system_tasks(task_indexes) - }, - AutomationRegistryStopTasks { task_indexes } => { - automation_registry_stop_tasks(task_indexes) - }, - CodePublishPackageTxn { - metadata_serialized, - code, - } => code_publish_package_txn(metadata_serialized, code), - CoinCreateCoinConversionMap {} => coin_create_coin_conversion_map(), - CoinCreatePairing { coin_type } => coin_create_pairing(coin_type), - CoinMigrateToFungibleStore { coin_type } => coin_migrate_to_fungible_store(coin_type), - CoinTransfer { - coin_type, - to, - amount, - } => coin_transfer(coin_type, to, amount), - CoinUpgradeSupply { coin_type } => coin_upgrade_supply(coin_type), - CommitteeMapRemoveCommittee { com_store_addr, id } => { - committee_map_remove_committee(com_store_addr, id) - }, - CommitteeMapRemoveCommitteeBulk { - com_store_addr, - ids, - } => committee_map_remove_committee_bulk(com_store_addr, ids), - CommitteeMapRemoveCommitteeMember { - com_store_addr, - id, - node_address, - } => committee_map_remove_committee_member(com_store_addr, id, node_address), - CommitteeMapUpdateDkgFlag { - com_store_addr, - com_id, - flag_value, - } => committee_map_update_dkg_flag(com_store_addr, com_id, flag_value), - CommitteeMapUpsertCommittee { - com_store_addr, - id, - node_addresses, - ip_public_address, - node_public_key, - network_public_key, - cg_public_key, - network_port, - rpc_port, - committee_type, - } => committee_map_upsert_committee( - com_store_addr, - id, - node_addresses, - ip_public_address, - node_public_key, - network_public_key, - cg_public_key, - network_port, - rpc_port, - committee_type, - ), - CommitteeMapUpsertCommitteeBulk { - com_store_addr, - ids, - node_addresses_bulk, - ip_public_address_bulk, - node_public_key_bulk, - network_public_key_bulk, - cg_public_key_bulk, - network_port_bulk, - rpc_por_bulkt, - committee_types, - } => committee_map_upsert_committee_bulk( - com_store_addr, - ids, - node_addresses_bulk, - ip_public_address_bulk, - node_public_key_bulk, - network_public_key_bulk, - cg_public_key_bulk, - network_port_bulk, - rpc_por_bulkt, - committee_types, - ), - CommitteeMapUpsertCommitteeMember { - com_store_addr, - id, - node_address, - ip_public_address, - node_public_key, - network_public_key, - cg_public_key, - network_port, - rpc_port, - } => committee_map_upsert_committee_member( - com_store_addr, - id, - node_address, - ip_public_address, - node_public_key, - network_public_key, - cg_public_key, - network_port, - rpc_port, - ), - CommitteeMapUpsertCommitteeMemberBulk { - com_store_addr, - ids, - node_addresses, - ip_public_address, - node_public_key, - network_public_key, - cg_public_key, - network_port, - rpc_port, - } => committee_map_upsert_committee_member_bulk( - com_store_addr, - ids, - node_addresses, - ip_public_address, - node_public_key, - network_public_key, - cg_public_key, - network_port, - rpc_port, - ), - ManagedCoinBurn { coin_type, amount } => managed_coin_burn(coin_type, amount), - ManagedCoinInitialize { - coin_type, - name, - symbol, - decimals, - monitor_supply, - } => managed_coin_initialize(coin_type, name, symbol, decimals, monitor_supply), - ManagedCoinMint { - coin_type, - dst_addr, - amount, - } => managed_coin_mint(coin_type, dst_addr, amount), - ManagedCoinRegister { coin_type } => managed_coin_register(coin_type), - MultisigAccountAddOwner { new_owner } => multisig_account_add_owner(new_owner), - MultisigAccountAddOwners { new_owners } => multisig_account_add_owners(new_owners), - MultisigAccountAddOwnersAndUpdateSignaturesRequired { - new_owners, - new_num_signatures_required, - } => multisig_account_add_owners_and_update_signatures_required( - new_owners, - new_num_signatures_required, - ), - MultisigAccountApproveTransaction { - multisig_account, - sequence_number, - } => multisig_account_approve_transaction(multisig_account, sequence_number), - MultisigAccountCreate { - num_signatures_required, - metadata_keys, - metadata_values, - timeout_duration, - } => multisig_account_create( - num_signatures_required, - metadata_keys, - metadata_values, - timeout_duration, - ), - MultisigAccountCreateTransaction { - multisig_account, - payload, - } => multisig_account_create_transaction(multisig_account, payload), - MultisigAccountCreateTransactionWithHash { - multisig_account, - payload_hash, - } => multisig_account_create_transaction_with_hash(multisig_account, payload_hash), - MultisigAccountCreateWithExistingAccount { - multisig_address, - owners, - num_signatures_required, - account_scheme, - account_public_key, - create_multisig_account_signed_message, - metadata_keys, - metadata_values, - timeout_duration, - } => multisig_account_create_with_existing_account( - multisig_address, - owners, - num_signatures_required, - account_scheme, - account_public_key, - create_multisig_account_signed_message, - metadata_keys, - metadata_values, - timeout_duration, - ), - MultisigAccountCreateWithExistingAccountAndRevokeAuthKey { - multisig_address, - owners, - num_signatures_required, - account_scheme, - account_public_key, - create_multisig_account_signed_message, - metadata_keys, - metadata_values, - timeout_duration, - } => multisig_account_create_with_existing_account_and_revoke_auth_key( - multisig_address, - owners, - num_signatures_required, - account_scheme, - account_public_key, - create_multisig_account_signed_message, - metadata_keys, - metadata_values, - timeout_duration, - ), - MultisigAccountCreateWithOwners { - additional_owners, - num_signatures_required, - metadata_keys, - metadata_values, - timeout_duration, - } => multisig_account_create_with_owners( - additional_owners, - num_signatures_required, - metadata_keys, - metadata_values, - timeout_duration, - ), - MultisigAccountCreateWithOwnersThenRemoveBootstrapper { - owners, - num_signatures_required, - metadata_keys, - metadata_values, - timeout_duration, - } => multisig_account_create_with_owners_then_remove_bootstrapper( - owners, - num_signatures_required, - metadata_keys, - metadata_values, - timeout_duration, - ), - MultisigAccountExecuteRejectedTransaction { multisig_account } => { - multisig_account_execute_rejected_transaction(multisig_account) - }, - MultisigAccountExecuteRejectedTransactions { - multisig_account, - final_sequence_number, - } => multisig_account_execute_rejected_transactions( - multisig_account, - final_sequence_number, - ), - MultisigAccountRejectTransaction { - multisig_account, - sequence_number, - } => multisig_account_reject_transaction(multisig_account, sequence_number), - MultisigAccountRemoveOwner { owner_to_remove } => { - multisig_account_remove_owner(owner_to_remove) - }, - MultisigAccountRemoveOwners { owners_to_remove } => { - multisig_account_remove_owners(owners_to_remove) - }, - MultisigAccountSwapOwner { - to_swap_in, - to_swap_out, - } => multisig_account_swap_owner(to_swap_in, to_swap_out), - MultisigAccountSwapOwners { - to_swap_in, - to_swap_out, - } => multisig_account_swap_owners(to_swap_in, to_swap_out), - MultisigAccountSwapOwnersAndUpdateSignaturesRequired { - new_owners, - owners_to_remove, - new_num_signatures_required, - } => multisig_account_swap_owners_and_update_signatures_required( - new_owners, - owners_to_remove, - new_num_signatures_required, - ), - MultisigAccountUpdateMetadata { keys, values } => { - multisig_account_update_metadata(keys, values) - }, - MultisigAccountUpdateSignaturesRequired { - new_num_signatures_required, - } => multisig_account_update_signatures_required(new_num_signatures_required), - MultisigAccountUpdateTimeoutDuration { timeout_duration } => { - multisig_account_update_timeout_duration(timeout_duration) - }, - MultisigAccountVoteTransaction { - multisig_account, - sequence_number, - approved, - } => multisig_account_vote_transaction(multisig_account, sequence_number, approved), - MultisigAccountVoteTransactions { - multisig_account, - starting_sequence_number, - final_sequence_number, - approved, - } => multisig_account_vote_transactions( - multisig_account, - starting_sequence_number, - final_sequence_number, - approved, - ), - MultisigAccountVoteTransanction { - multisig_account, - sequence_number, - approved, - } => multisig_account_vote_transanction(multisig_account, sequence_number, approved), - ObjectTransferCall { object, to } => object_transfer_call(object, to), - ObjectCodeDeploymentPublish { - metadata_serialized, - code, - } => object_code_deployment_publish(metadata_serialized, code), - PboDelegationPoolAddStake { - pool_address, - amount, - } => pbo_delegation_pool_add_stake(pool_address, amount), - PboDelegationPoolAdminIncreaseLastUnlockPeriod { - pool_address, - additional_periods, - } => pbo_delegation_pool_admin_increase_last_unlock_period( - pool_address, - additional_periods, - ), - PboDelegationPoolDelegateVotingPower { - pool_address, - new_voter, - } => pbo_delegation_pool_delegate_voting_power(pool_address, new_voter), - PboDelegationPoolEnablePartialGovernanceVoting { pool_address } => { - pbo_delegation_pool_enable_partial_governance_voting(pool_address) - }, - PboDelegationPoolFundDelegatorsWithLockedStake { - pool_address, - delegators, - stakes, - } => pbo_delegation_pool_fund_delegators_with_locked_stake( - pool_address, - delegators, - stakes, - ), - PboDelegationPoolFundDelegatorsWithStake { - pool_address, - delegators, - stakes, - } => pbo_delegation_pool_fund_delegators_with_stake(pool_address, delegators, stakes), - PboDelegationPoolInitializeDelegationPoolWithAmount { - multisig_admin, - amount, - operator_commission_percentage, - delegation_pool_creation_seed, - delegator_address, - principle_stake, - unlock_numerators, - unlock_denominator, - unlock_start_time, - unlock_duration, - } => pbo_delegation_pool_initialize_delegation_pool_with_amount( - multisig_admin, - amount, - operator_commission_percentage, - delegation_pool_creation_seed, - delegator_address, - principle_stake, - unlock_numerators, - unlock_denominator, - unlock_start_time, - unlock_duration, - ), - PboDelegationPoolInitializeDelegationPoolWithAmountWithoutMultisigAdmin { - amount, - operator_commission_percentage, - delegation_pool_creation_seed, - delegator_address, - principle_stake, - unlock_numerators, - unlock_denominator, - unlock_start_time, - unlock_duration, - } => pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin( - amount, - operator_commission_percentage, - delegation_pool_creation_seed, - delegator_address, - principle_stake, - unlock_numerators, - unlock_denominator, - unlock_start_time, - unlock_duration, - ), - PboDelegationPoolLockDelegatorsStakes { - pool_address, - delegators, - new_principle_stakes, - } => pbo_delegation_pool_lock_delegators_stakes( - pool_address, - delegators, - new_principle_stakes, - ), - PboDelegationPoolReactivateStake { - pool_address, - amount, - } => pbo_delegation_pool_reactivate_stake(pool_address, amount), - PboDelegationPoolReplaceDelegator { - pool_address, - old_delegator, - new_delegator, - } => pbo_delegation_pool_replace_delegator(pool_address, old_delegator, new_delegator), - PboDelegationPoolSetBeneficiaryForOperator { new_beneficiary } => { - pbo_delegation_pool_set_beneficiary_for_operator(new_beneficiary) - }, - PboDelegationPoolSetDelegatedVoter { new_voter } => { - pbo_delegation_pool_set_delegated_voter(new_voter) - }, - PboDelegationPoolSetOperator { new_operator } => { - pbo_delegation_pool_set_operator(new_operator) - }, - PboDelegationPoolSynchronizeDelegationPool { pool_address } => { - pbo_delegation_pool_synchronize_delegation_pool(pool_address) - }, - PboDelegationPoolUnlock { - pool_address, - amount, - } => pbo_delegation_pool_unlock(pool_address, amount), - PboDelegationPoolUpdateCommissionPercentage { - new_commission_percentage, - } => pbo_delegation_pool_update_commission_percentage(new_commission_percentage), - PboDelegationPoolUpdateUnlockingSchedule { - pool_address, - unlock_numerators, - unlock_denominator, - unlock_start_time, - unlock_duration, - } => pbo_delegation_pool_update_unlocking_schedule( - pool_address, - unlock_numerators, - unlock_denominator, - unlock_start_time, - unlock_duration, - ), - PboDelegationPoolUpdateUnlockingScheduleUnchecked { - pool_address, - unlock_numerators, - unlock_denominator, - unlock_start_time, - unlock_duration, - last_unlock_period, - } => pbo_delegation_pool_update_unlocking_schedule_unchecked( - pool_address, - unlock_numerators, - unlock_denominator, - unlock_start_time, - unlock_duration, - last_unlock_period, - ), - PboDelegationPoolWithdraw { - pool_address, - amount, - } => pbo_delegation_pool_withdraw(pool_address, amount), - ResourceAccountCreateResourceAccount { - seed, - optional_auth_key, - } => resource_account_create_resource_account(seed, optional_auth_key), - ResourceAccountCreateResourceAccountAndFund { - seed, - optional_auth_key, - fund_amount, - } => resource_account_create_resource_account_and_fund( - seed, - optional_auth_key, - fund_amount, - ), - ResourceAccountCreateResourceAccountAndPublishPackage { - seed, - metadata_serialized, - code, - } => resource_account_create_resource_account_and_publish_package( - seed, - metadata_serialized, - code, - ), - StakeAddStake { amount } => stake_add_stake(amount), - StakeIncreaseLockup {} => stake_increase_lockup(), - StakeInitializeStakeOwner { - initial_stake_amount, - operator, - voter, - } => stake_initialize_stake_owner(initial_stake_amount, operator, voter), - StakeInitializeValidator { - consensus_pubkey, - network_addresses, - fullnode_addresses, - } => { - stake_initialize_validator(consensus_pubkey, network_addresses, fullnode_addresses) - }, - StakeJoinValidatorSet { pool_address } => stake_join_validator_set(pool_address), - StakeLeaveValidatorSet { pool_address } => stake_leave_validator_set(pool_address), - StakeReactivateStake { amount } => stake_reactivate_stake(amount), - StakeRotateConsensusKey { - pool_address, - new_consensus_pubkey, - } => stake_rotate_consensus_key(pool_address, new_consensus_pubkey), - StakeSetDelegatedVoter { new_voter } => stake_set_delegated_voter(new_voter), - StakeSetOperator { new_operator } => stake_set_operator(new_operator), - StakeUnlock { amount } => stake_unlock(amount), - StakeUpdateNetworkAndFullnodeAddresses { - pool_address, - new_network_addresses, - new_fullnode_addresses, - } => stake_update_network_and_fullnode_addresses( - pool_address, - new_network_addresses, - new_fullnode_addresses, - ), - StakeWithdraw { withdraw_amount } => stake_withdraw(withdraw_amount), - StakingContractAddStake { operator, amount } => { - staking_contract_add_stake(operator, amount) - }, - StakingContractCreateStakingContract { - operator, - voter, - amount, - commission_percentage, - contract_creation_seed, - } => staking_contract_create_staking_contract( - operator, - voter, - amount, - commission_percentage, - contract_creation_seed, - ), - StakingContractDistribute { staker, operator } => { - staking_contract_distribute(staker, operator) - }, - StakingContractRequestCommission { staker, operator } => { - staking_contract_request_commission(staker, operator) - }, - StakingContractResetLockup { operator } => staking_contract_reset_lockup(operator), - StakingContractSetBeneficiaryForOperator { new_beneficiary } => { - staking_contract_set_beneficiary_for_operator(new_beneficiary) - }, - StakingContractSwitchOperator { - old_operator, - new_operator, - new_commission_percentage, - } => staking_contract_switch_operator( - old_operator, - new_operator, - new_commission_percentage, - ), - StakingContractSwitchOperatorWithSameCommission { - old_operator, - new_operator, - } => staking_contract_switch_operator_with_same_commission(old_operator, new_operator), - StakingContractUnlockRewards { operator } => staking_contract_unlock_rewards(operator), - StakingContractUnlockStake { operator, amount } => { - staking_contract_unlock_stake(operator, amount) - }, - StakingContractUpdateCommision { - operator, - new_commission_percentage, - } => staking_contract_update_commision(operator, new_commission_percentage), - StakingContractUpdateVoter { - operator, - new_voter, - } => staking_contract_update_voter(operator, new_voter), - StakingProxySetOperator { - old_operator, - new_operator, - } => staking_proxy_set_operator(old_operator, new_operator), - StakingProxySetStakePoolOperator { new_operator } => { - staking_proxy_set_stake_pool_operator(new_operator) - }, - StakingProxySetStakePoolVoter { new_voter } => { - staking_proxy_set_stake_pool_voter(new_voter) - }, - StakingProxySetStakingContractOperator { - old_operator, - new_operator, - } => staking_proxy_set_staking_contract_operator(old_operator, new_operator), - StakingProxySetStakingContractVoter { - operator, - new_voter, - } => staking_proxy_set_staking_contract_voter(operator, new_voter), - StakingProxySetVestingContractOperator { - old_operator, - new_operator, - } => staking_proxy_set_vesting_contract_operator(old_operator, new_operator), - StakingProxySetVestingContractVoter { - operator, - new_voter, - } => staking_proxy_set_vesting_contract_voter(operator, new_voter), - StakingProxySetVoter { - operator, - new_voter, - } => staking_proxy_set_voter(operator, new_voter), - SupraAccountBatchTransfer { - recipients, - amounts, - } => supra_account_batch_transfer(recipients, amounts), - SupraAccountBatchTransferCoins { - coin_type, - recipients, - amounts, - } => supra_account_batch_transfer_coins(coin_type, recipients, amounts), - SupraAccountCreateAccount { auth_key } => supra_account_create_account(auth_key), - SupraAccountSetAllowDirectCoinTransfers { allow } => { - supra_account_set_allow_direct_coin_transfers(allow) - }, - SupraAccountTransfer { to, amount } => supra_account_transfer(to, amount), - SupraAccountTransferCoins { - coin_type, - to, - amount, - } => supra_account_transfer_coins(coin_type, to, amount), - SupraCoinClaimMintCapability {} => supra_coin_claim_mint_capability(), - SupraCoinDelegateMintCapability { to } => supra_coin_delegate_mint_capability(to), - SupraCoinMint { dst_addr, amount } => supra_coin_mint(dst_addr, amount), - SupraGovernanceAddSupraApprovedScriptHashScript { proposal_id } => { - supra_governance_add_supra_approved_script_hash_script(proposal_id) - }, - SupraGovernanceForceEndEpoch {} => supra_governance_force_end_epoch(), - SupraGovernanceForceEndEpochTestOnly {} => supra_governance_force_end_epoch_test_only(), - SupraGovernanceReconfigure {} => supra_governance_reconfigure(), - SupraGovernanceSupraCreateProposal { - execution_hash, - metadata_location, - metadata_hash, - } => supra_governance_supra_create_proposal( - execution_hash, - metadata_location, - metadata_hash, - ), - SupraGovernanceSupraCreateProposalV2 { - execution_hash, - metadata_location, - metadata_hash, - is_multi_step_proposal, - } => supra_governance_supra_create_proposal_v2( - execution_hash, - metadata_location, - metadata_hash, - is_multi_step_proposal, - ), - SupraGovernanceSupraVote { - proposal_id, - should_pass, - } => supra_governance_supra_vote(proposal_id, should_pass), - TransactionFeeConvertToAptosFaBurnRef {} => { - transaction_fee_convert_to_aptos_fa_burn_ref() - }, - VersionSetForNextEpoch { major } => version_set_for_next_epoch(major), - VersionSetVersion { major } => version_set_version(major), - VestingAdminWithdraw { contract_address } => vesting_admin_withdraw(contract_address), - VestingDistribute { contract_address } => vesting_distribute(contract_address), - VestingDistributeMany { contract_addresses } => { - vesting_distribute_many(contract_addresses) - }, - VestingResetBeneficiary { - contract_address, - shareholder, - } => vesting_reset_beneficiary(contract_address, shareholder), - VestingResetLockup { contract_address } => vesting_reset_lockup(contract_address), - VestingSetBeneficiary { - contract_address, - shareholder, - new_beneficiary, - } => vesting_set_beneficiary(contract_address, shareholder, new_beneficiary), - VestingSetBeneficiaryForOperator { new_beneficiary } => { - vesting_set_beneficiary_for_operator(new_beneficiary) - }, - VestingSetBeneficiaryResetter { - contract_address, - beneficiary_resetter, - } => vesting_set_beneficiary_resetter(contract_address, beneficiary_resetter), - VestingSetManagementRole { - contract_address, - role, - role_holder, - } => vesting_set_management_role(contract_address, role, role_holder), - VestingTerminateVestingContract { contract_address } => { - vesting_terminate_vesting_contract(contract_address) - }, - VestingUnlockRewards { contract_address } => vesting_unlock_rewards(contract_address), - VestingUnlockRewardsMany { contract_addresses } => { - vesting_unlock_rewards_many(contract_addresses) - }, - VestingUpdateCommissionPercentage { - contract_address, - new_commission_percentage, - } => vesting_update_commission_percentage(contract_address, new_commission_percentage), - VestingUpdateOperator { - contract_address, - new_operator, - commission_percentage, - } => vesting_update_operator(contract_address, new_operator, commission_percentage), - VestingUpdateOperatorWithSameCommission { - contract_address, - new_operator, - } => vesting_update_operator_with_same_commission(contract_address, new_operator), - VestingUpdateVoter { - contract_address, - new_voter, - } => vesting_update_voter(contract_address, new_voter), - VestingVest { contract_address } => vesting_vest(contract_address), - VestingVestMany { contract_addresses } => vesting_vest_many(contract_addresses), - VestingWithoutStakingAdminDelayVesting { - contract_address, - delay_periods, - } => vesting_without_staking_admin_delay_vesting(contract_address, delay_periods), - VestingWithoutStakingAdminWithdraw { contract_address } => { - vesting_without_staking_admin_withdraw(contract_address) - }, - VestingWithoutStakingCreateVestingContractWithAmounts { - shareholders, - shares, - vesting_numerators, - vesting_denominator, - start_timestamp_secs, - period_duration, - withdrawal_address, - contract_creation_seed, - } => vesting_without_staking_create_vesting_contract_with_amounts( - shareholders, - shares, - vesting_numerators, - vesting_denominator, - start_timestamp_secs, - period_duration, - withdrawal_address, - contract_creation_seed, - ), - VestingWithoutStakingRemoveShareholder { - contract_address, - shareholder_address, - } => vesting_without_staking_remove_shareholder(contract_address, shareholder_address), - VestingWithoutStakingResetBeneficiary { - contract_address, - shareholder, - } => vesting_without_staking_reset_beneficiary(contract_address, shareholder), - VestingWithoutStakingSetBeneficiary { - contract_address, - shareholder, - new_beneficiary, - } => vesting_without_staking_set_beneficiary( - contract_address, - shareholder, - new_beneficiary, - ), - VestingWithoutStakingSetBeneficiaryResetter { - contract_address, - beneficiary_resetter, - } => vesting_without_staking_set_beneficiary_resetter( - contract_address, - beneficiary_resetter, - ), - VestingWithoutStakingSetManagementRole { - contract_address, - role, - role_holder, - } => vesting_without_staking_set_management_role(contract_address, role, role_holder), - VestingWithoutStakingSetVestingSchedule { - contract_address, - vesting_numerators, - vesting_denominator, - period_duration, - } => vesting_without_staking_set_vesting_schedule( - contract_address, - vesting_numerators, - vesting_denominator, - period_duration, - ), - VestingWithoutStakingTerminateVestingContract { contract_address } => { - vesting_without_staking_terminate_vesting_contract(contract_address) - }, - VestingWithoutStakingVest { contract_address } => { - vesting_without_staking_vest(contract_address) - }, - VestingWithoutStakingVestIndividual { - contract_address, - shareholder_address, - } => vesting_without_staking_vest_individual(contract_address, shareholder_address), + AccountOfferRotationCapability{rotation_capability_sig_bytes, account_scheme, account_public_key_bytes, recipient_address} => account_offer_rotation_capability(rotation_capability_sig_bytes, account_scheme, account_public_key_bytes, recipient_address), + AccountOfferSignerCapability{signer_capability_sig_bytes, account_scheme, account_public_key_bytes, recipient_address} => account_offer_signer_capability(signer_capability_sig_bytes, account_scheme, account_public_key_bytes, recipient_address), + AccountRevokeAnyRotationCapability{} => account_revoke_any_rotation_capability(), + AccountRevokeAnySignerCapability{} => account_revoke_any_signer_capability(), + AccountRevokeRotationCapability{to_be_revoked_address} => account_revoke_rotation_capability(to_be_revoked_address), + AccountRevokeSignerCapability{to_be_revoked_address} => account_revoke_signer_capability(to_be_revoked_address), + AccountRotateAuthenticationKey{from_scheme, from_public_key_bytes, to_scheme, to_public_key_bytes, cap_rotate_key, cap_update_table} => account_rotate_authentication_key(from_scheme, from_public_key_bytes, to_scheme, to_public_key_bytes, cap_rotate_key, cap_update_table), + AccountRotateAuthenticationKeyCall{new_auth_key} => account_rotate_authentication_key_call(new_auth_key), + AccountRotateAuthenticationKeyWithRotationCapability{rotation_cap_offerer_address, new_scheme, new_public_key_bytes, cap_update_table} => account_rotate_authentication_key_with_rotation_capability(rotation_cap_offerer_address, new_scheme, new_public_key_bytes, cap_update_table), + AutomationRegistryCancelSystemTask{task_index} => automation_registry_cancel_system_task(task_index), + AutomationRegistryCancelTask{task_index} => automation_registry_cancel_task(task_index), + AutomationRegistryStopSystemTasks{task_indexes} => automation_registry_stop_system_tasks(task_indexes), + AutomationRegistryStopTasks{task_indexes} => automation_registry_stop_tasks(task_indexes), + CodePublishPackageTxn{metadata_serialized, code} => code_publish_package_txn(metadata_serialized, code), + CoinCreateCoinConversionMap{} => coin_create_coin_conversion_map(), + CoinCreatePairing{coin_type} => coin_create_pairing(coin_type), + CoinMigrateToFungibleStore{coin_type} => coin_migrate_to_fungible_store(coin_type), + CoinTransfer{coin_type, to, amount} => coin_transfer(coin_type, to, amount), + CoinUpgradeSupply{coin_type} => coin_upgrade_supply(coin_type), + CommitteeMapRemoveCommittee{com_store_addr, id} => committee_map_remove_committee(com_store_addr, id), + CommitteeMapRemoveCommitteeBulk{com_store_addr, ids} => committee_map_remove_committee_bulk(com_store_addr, ids), + CommitteeMapRemoveCommitteeMember{com_store_addr, id, node_address} => committee_map_remove_committee_member(com_store_addr, id, node_address), + CommitteeMapUpdateDkgFlag{com_store_addr, com_id, flag_value} => committee_map_update_dkg_flag(com_store_addr, com_id, flag_value), + CommitteeMapUpsertCommittee{com_store_addr, id, node_addresses, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port, committee_type} => committee_map_upsert_committee(com_store_addr, id, node_addresses, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port, committee_type), + CommitteeMapUpsertCommitteeBulk{com_store_addr, ids, node_addresses_bulk, ip_public_address_bulk, node_public_key_bulk, network_public_key_bulk, cg_public_key_bulk, network_port_bulk, rpc_por_bulkt, committee_types} => committee_map_upsert_committee_bulk(com_store_addr, ids, node_addresses_bulk, ip_public_address_bulk, node_public_key_bulk, network_public_key_bulk, cg_public_key_bulk, network_port_bulk, rpc_por_bulkt, committee_types), + CommitteeMapUpsertCommitteeMember{com_store_addr, id, node_address, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port} => committee_map_upsert_committee_member(com_store_addr, id, node_address, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port), + CommitteeMapUpsertCommitteeMemberBulk{com_store_addr, ids, node_addresses, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port} => committee_map_upsert_committee_member_bulk(com_store_addr, ids, node_addresses, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port), + ManagedCoinBurn{coin_type, amount} => managed_coin_burn(coin_type, amount), + ManagedCoinInitialize{coin_type, name, symbol, decimals, monitor_supply} => managed_coin_initialize(coin_type, name, symbol, decimals, monitor_supply), + ManagedCoinMint{coin_type, dst_addr, amount} => managed_coin_mint(coin_type, dst_addr, amount), + ManagedCoinRegister{coin_type} => managed_coin_register(coin_type), + MultisigAccountAddOwner{new_owner} => multisig_account_add_owner(new_owner), + MultisigAccountAddOwners{new_owners} => multisig_account_add_owners(new_owners), + MultisigAccountAddOwnersAndUpdateSignaturesRequired{new_owners, new_num_signatures_required} => multisig_account_add_owners_and_update_signatures_required(new_owners, new_num_signatures_required), + MultisigAccountApproveTransaction{multisig_account, sequence_number} => multisig_account_approve_transaction(multisig_account, sequence_number), + MultisigAccountCreate{num_signatures_required, metadata_keys, metadata_values, timeout_duration} => multisig_account_create(num_signatures_required, metadata_keys, metadata_values, timeout_duration), + MultisigAccountCreateTransaction{multisig_account, payload} => multisig_account_create_transaction(multisig_account, payload), + MultisigAccountCreateTransactionWithHash{multisig_account, payload_hash} => multisig_account_create_transaction_with_hash(multisig_account, payload_hash), + MultisigAccountCreateWithExistingAccount{multisig_address, owners, num_signatures_required, account_scheme, account_public_key, create_multisig_account_signed_message, metadata_keys, metadata_values, timeout_duration} => multisig_account_create_with_existing_account(multisig_address, owners, num_signatures_required, account_scheme, account_public_key, create_multisig_account_signed_message, metadata_keys, metadata_values, timeout_duration), + MultisigAccountCreateWithExistingAccountAndRevokeAuthKey{multisig_address, owners, num_signatures_required, account_scheme, account_public_key, create_multisig_account_signed_message, metadata_keys, metadata_values, timeout_duration} => multisig_account_create_with_existing_account_and_revoke_auth_key(multisig_address, owners, num_signatures_required, account_scheme, account_public_key, create_multisig_account_signed_message, metadata_keys, metadata_values, timeout_duration), + MultisigAccountCreateWithOwners{additional_owners, num_signatures_required, metadata_keys, metadata_values, timeout_duration} => multisig_account_create_with_owners(additional_owners, num_signatures_required, metadata_keys, metadata_values, timeout_duration), + MultisigAccountCreateWithOwnersThenRemoveBootstrapper{owners, num_signatures_required, metadata_keys, metadata_values, timeout_duration} => multisig_account_create_with_owners_then_remove_bootstrapper(owners, num_signatures_required, metadata_keys, metadata_values, timeout_duration), + MultisigAccountExecuteRejectedTransaction{multisig_account} => multisig_account_execute_rejected_transaction(multisig_account), + MultisigAccountExecuteRejectedTransactions{multisig_account, final_sequence_number} => multisig_account_execute_rejected_transactions(multisig_account, final_sequence_number), + MultisigAccountRejectTransaction{multisig_account, sequence_number} => multisig_account_reject_transaction(multisig_account, sequence_number), + MultisigAccountRemoveOwner{owner_to_remove} => multisig_account_remove_owner(owner_to_remove), + MultisigAccountRemoveOwners{owners_to_remove} => multisig_account_remove_owners(owners_to_remove), + MultisigAccountSwapOwner{to_swap_in, to_swap_out} => multisig_account_swap_owner(to_swap_in, to_swap_out), + MultisigAccountSwapOwners{to_swap_in, to_swap_out} => multisig_account_swap_owners(to_swap_in, to_swap_out), + MultisigAccountSwapOwnersAndUpdateSignaturesRequired{new_owners, owners_to_remove, new_num_signatures_required} => multisig_account_swap_owners_and_update_signatures_required(new_owners, owners_to_remove, new_num_signatures_required), + MultisigAccountUpdateMetadata{keys, values} => multisig_account_update_metadata(keys, values), + MultisigAccountUpdateSignaturesRequired{new_num_signatures_required} => multisig_account_update_signatures_required(new_num_signatures_required), + MultisigAccountUpdateTimeoutDuration{timeout_duration} => multisig_account_update_timeout_duration(timeout_duration), + MultisigAccountVoteTransaction{multisig_account, sequence_number, approved} => multisig_account_vote_transaction(multisig_account, sequence_number, approved), + MultisigAccountVoteTransactions{multisig_account, starting_sequence_number, final_sequence_number, approved} => multisig_account_vote_transactions(multisig_account, starting_sequence_number, final_sequence_number, approved), + MultisigAccountVoteTransanction{multisig_account, sequence_number, approved} => multisig_account_vote_transanction(multisig_account, sequence_number, approved), + ObjectTransferCall{object, to} => object_transfer_call(object, to), + ObjectCodeDeploymentPublish{metadata_serialized, code} => object_code_deployment_publish(metadata_serialized, code), + PboDelegationPoolAddStake{pool_address, amount} => pbo_delegation_pool_add_stake(pool_address, amount), + PboDelegationPoolAdminIncreaseLastUnlockPeriod{pool_address, additional_periods} => pbo_delegation_pool_admin_increase_last_unlock_period(pool_address, additional_periods), + PboDelegationPoolDelegateVotingPower{pool_address, new_voter} => pbo_delegation_pool_delegate_voting_power(pool_address, new_voter), + PboDelegationPoolEnablePartialGovernanceVoting{pool_address} => pbo_delegation_pool_enable_partial_governance_voting(pool_address), + PboDelegationPoolFundDelegatorsWithLockedStake{pool_address, delegators, stakes} => pbo_delegation_pool_fund_delegators_with_locked_stake(pool_address, delegators, stakes), + PboDelegationPoolFundDelegatorsWithStake{pool_address, delegators, stakes} => pbo_delegation_pool_fund_delegators_with_stake(pool_address, delegators, stakes), + PboDelegationPoolInitializeDelegationPoolWithAmount{multisig_admin, amount, operator_commission_percentage, delegation_pool_creation_seed, delegator_address, principle_stake, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration} => pbo_delegation_pool_initialize_delegation_pool_with_amount(multisig_admin, amount, operator_commission_percentage, delegation_pool_creation_seed, delegator_address, principle_stake, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration), + PboDelegationPoolInitializeDelegationPoolWithAmountWithoutMultisigAdmin{amount, operator_commission_percentage, delegation_pool_creation_seed, delegator_address, principle_stake, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration} => pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin(amount, operator_commission_percentage, delegation_pool_creation_seed, delegator_address, principle_stake, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration), + PboDelegationPoolLockDelegatorsStakes{pool_address, delegators, new_principle_stakes} => pbo_delegation_pool_lock_delegators_stakes(pool_address, delegators, new_principle_stakes), + PboDelegationPoolReactivateStake{pool_address, amount} => pbo_delegation_pool_reactivate_stake(pool_address, amount), + PboDelegationPoolReplaceDelegator{pool_address, old_delegator, new_delegator} => pbo_delegation_pool_replace_delegator(pool_address, old_delegator, new_delegator), + PboDelegationPoolSetBeneficiaryForOperator{new_beneficiary} => pbo_delegation_pool_set_beneficiary_for_operator(new_beneficiary), + PboDelegationPoolSetDelegatedVoter{new_voter} => pbo_delegation_pool_set_delegated_voter(new_voter), + PboDelegationPoolSetOperator{new_operator} => pbo_delegation_pool_set_operator(new_operator), + PboDelegationPoolSynchronizeDelegationPool{pool_address} => pbo_delegation_pool_synchronize_delegation_pool(pool_address), + PboDelegationPoolUnlock{pool_address, amount} => pbo_delegation_pool_unlock(pool_address, amount), + PboDelegationPoolUpdateCommissionPercentage{new_commission_percentage} => pbo_delegation_pool_update_commission_percentage(new_commission_percentage), + PboDelegationPoolUpdateUnlockingSchedule{pool_address, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration} => pbo_delegation_pool_update_unlocking_schedule(pool_address, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration), + PboDelegationPoolUpdateUnlockingScheduleUnchecked{pool_address, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration, last_unlock_period} => pbo_delegation_pool_update_unlocking_schedule_unchecked(pool_address, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration, last_unlock_period), + PboDelegationPoolWithdraw{pool_address, amount} => pbo_delegation_pool_withdraw(pool_address, amount), + ResourceAccountCreateResourceAccount{seed, optional_auth_key} => resource_account_create_resource_account(seed, optional_auth_key), + ResourceAccountCreateResourceAccountAndFund{seed, optional_auth_key, fund_amount} => resource_account_create_resource_account_and_fund(seed, optional_auth_key, fund_amount), + ResourceAccountCreateResourceAccountAndPublishPackage{seed, metadata_serialized, code} => resource_account_create_resource_account_and_publish_package(seed, metadata_serialized, code), + StakeAddStake{amount} => stake_add_stake(amount), + StakeIncreaseLockup{} => stake_increase_lockup(), + StakeInitializeStakeOwner{initial_stake_amount, operator, voter} => stake_initialize_stake_owner(initial_stake_amount, operator, voter), + StakeInitializeValidator{consensus_pubkey, network_addresses, fullnode_addresses} => stake_initialize_validator(consensus_pubkey, network_addresses, fullnode_addresses), + StakeJoinValidatorSet{pool_address} => stake_join_validator_set(pool_address), + StakeLeaveValidatorSet{pool_address} => stake_leave_validator_set(pool_address), + StakeReactivateStake{amount} => stake_reactivate_stake(amount), + StakeRotateConsensusKey{pool_address, new_consensus_pubkey} => stake_rotate_consensus_key(pool_address, new_consensus_pubkey), + StakeSetDelegatedVoter{new_voter} => stake_set_delegated_voter(new_voter), + StakeSetOperator{new_operator} => stake_set_operator(new_operator), + StakeUnlock{amount} => stake_unlock(amount), + StakeUpdateNetworkAndFullnodeAddresses{pool_address, new_network_addresses, new_fullnode_addresses} => stake_update_network_and_fullnode_addresses(pool_address, new_network_addresses, new_fullnode_addresses), + StakeWithdraw{withdraw_amount} => stake_withdraw(withdraw_amount), + StakingContractAddStake{operator, amount} => staking_contract_add_stake(operator, amount), + StakingContractCreateStakingContract{operator, voter, amount, commission_percentage, contract_creation_seed} => staking_contract_create_staking_contract(operator, voter, amount, commission_percentage, contract_creation_seed), + StakingContractDistribute{staker, operator} => staking_contract_distribute(staker, operator), + StakingContractRequestCommission{staker, operator} => staking_contract_request_commission(staker, operator), + StakingContractResetLockup{operator} => staking_contract_reset_lockup(operator), + StakingContractSetBeneficiaryForOperator{new_beneficiary} => staking_contract_set_beneficiary_for_operator(new_beneficiary), + StakingContractSwitchOperator{old_operator, new_operator, new_commission_percentage} => staking_contract_switch_operator(old_operator, new_operator, new_commission_percentage), + StakingContractSwitchOperatorWithSameCommission{old_operator, new_operator} => staking_contract_switch_operator_with_same_commission(old_operator, new_operator), + StakingContractUnlockRewards{operator} => staking_contract_unlock_rewards(operator), + StakingContractUnlockStake{operator, amount} => staking_contract_unlock_stake(operator, amount), + StakingContractUpdateCommision{operator, new_commission_percentage} => staking_contract_update_commision(operator, new_commission_percentage), + StakingContractUpdateVoter{operator, new_voter} => staking_contract_update_voter(operator, new_voter), + StakingProxySetOperator{old_operator, new_operator} => staking_proxy_set_operator(old_operator, new_operator), + StakingProxySetStakePoolOperator{new_operator} => staking_proxy_set_stake_pool_operator(new_operator), + StakingProxySetStakePoolVoter{new_voter} => staking_proxy_set_stake_pool_voter(new_voter), + StakingProxySetStakingContractOperator{old_operator, new_operator} => staking_proxy_set_staking_contract_operator(old_operator, new_operator), + StakingProxySetStakingContractVoter{operator, new_voter} => staking_proxy_set_staking_contract_voter(operator, new_voter), + StakingProxySetVestingContractOperator{old_operator, new_operator} => staking_proxy_set_vesting_contract_operator(old_operator, new_operator), + StakingProxySetVestingContractVoter{operator, new_voter} => staking_proxy_set_vesting_contract_voter(operator, new_voter), + StakingProxySetVoter{operator, new_voter} => staking_proxy_set_voter(operator, new_voter), + SupraAccountBatchTransfer{recipients, amounts} => supra_account_batch_transfer(recipients, amounts), + SupraAccountBatchTransferCoins{coin_type, recipients, amounts} => supra_account_batch_transfer_coins(coin_type, recipients, amounts), + SupraAccountCreateAccount{auth_key} => supra_account_create_account(auth_key), + SupraAccountSetAllowDirectCoinTransfers{allow} => supra_account_set_allow_direct_coin_transfers(allow), + SupraAccountTransfer{to, amount} => supra_account_transfer(to, amount), + SupraAccountTransferCoins{coin_type, to, amount} => supra_account_transfer_coins(coin_type, to, amount), + SupraCoinClaimMintCapability{} => supra_coin_claim_mint_capability(), + SupraCoinDelegateMintCapability{to} => supra_coin_delegate_mint_capability(to), + SupraCoinMint{dst_addr, amount} => supra_coin_mint(dst_addr, amount), + SupraGovernanceAddSupraApprovedScriptHashScript{proposal_id} => supra_governance_add_supra_approved_script_hash_script(proposal_id), + SupraGovernanceForceEndEpoch{} => supra_governance_force_end_epoch(), + SupraGovernanceForceEndEpochTestOnly{} => supra_governance_force_end_epoch_test_only(), + SupraGovernanceReconfigure{} => supra_governance_reconfigure(), + SupraGovernanceSupraCreateProposal{execution_hash, metadata_location, metadata_hash} => supra_governance_supra_create_proposal(execution_hash, metadata_location, metadata_hash), + SupraGovernanceSupraCreateProposalV2{execution_hash, metadata_location, metadata_hash, is_multi_step_proposal} => supra_governance_supra_create_proposal_v2(execution_hash, metadata_location, metadata_hash, is_multi_step_proposal), + SupraGovernanceSupraVote{proposal_id, should_pass} => supra_governance_supra_vote(proposal_id, should_pass), + TransactionFeeConvertToAptosFaBurnRef{} => transaction_fee_convert_to_aptos_fa_burn_ref(), + VersionSetForNextEpoch{major} => version_set_for_next_epoch(major), + VersionSetVersion{major} => version_set_version(major), + VestingAdminWithdraw{contract_address} => vesting_admin_withdraw(contract_address), + VestingDistribute{contract_address} => vesting_distribute(contract_address), + VestingDistributeMany{contract_addresses} => vesting_distribute_many(contract_addresses), + VestingResetBeneficiary{contract_address, shareholder} => vesting_reset_beneficiary(contract_address, shareholder), + VestingResetLockup{contract_address} => vesting_reset_lockup(contract_address), + VestingSetBeneficiary{contract_address, shareholder, new_beneficiary} => vesting_set_beneficiary(contract_address, shareholder, new_beneficiary), + VestingSetBeneficiaryForOperator{new_beneficiary} => vesting_set_beneficiary_for_operator(new_beneficiary), + VestingSetBeneficiaryResetter{contract_address, beneficiary_resetter} => vesting_set_beneficiary_resetter(contract_address, beneficiary_resetter), + VestingSetManagementRole{contract_address, role, role_holder} => vesting_set_management_role(contract_address, role, role_holder), + VestingTerminateVestingContract{contract_address} => vesting_terminate_vesting_contract(contract_address), + VestingUnlockRewards{contract_address} => vesting_unlock_rewards(contract_address), + VestingUnlockRewardsMany{contract_addresses} => vesting_unlock_rewards_many(contract_addresses), + VestingUpdateCommissionPercentage{contract_address, new_commission_percentage} => vesting_update_commission_percentage(contract_address, new_commission_percentage), + VestingUpdateOperator{contract_address, new_operator, commission_percentage} => vesting_update_operator(contract_address, new_operator, commission_percentage), + VestingUpdateOperatorWithSameCommission{contract_address, new_operator} => vesting_update_operator_with_same_commission(contract_address, new_operator), + VestingUpdateVoter{contract_address, new_voter} => vesting_update_voter(contract_address, new_voter), + VestingVest{contract_address} => vesting_vest(contract_address), + VestingVestMany{contract_addresses} => vesting_vest_many(contract_addresses), + VestingWithoutStakingAdminDelayVesting{contract_address, delay_periods} => vesting_without_staking_admin_delay_vesting(contract_address, delay_periods), + VestingWithoutStakingAdminWithdraw{contract_address} => vesting_without_staking_admin_withdraw(contract_address), + VestingWithoutStakingCreateVestingContractWithAmounts{shareholders, shares, vesting_numerators, vesting_denominator, start_timestamp_secs, period_duration, withdrawal_address, contract_creation_seed} => vesting_without_staking_create_vesting_contract_with_amounts(shareholders, shares, vesting_numerators, vesting_denominator, start_timestamp_secs, period_duration, withdrawal_address, contract_creation_seed), + VestingWithoutStakingRemoveShareholder{contract_address, shareholder_address} => vesting_without_staking_remove_shareholder(contract_address, shareholder_address), + VestingWithoutStakingResetBeneficiary{contract_address, shareholder} => vesting_without_staking_reset_beneficiary(contract_address, shareholder), + VestingWithoutStakingSetBeneficiary{contract_address, shareholder, new_beneficiary} => vesting_without_staking_set_beneficiary(contract_address, shareholder, new_beneficiary), + VestingWithoutStakingSetBeneficiaryResetter{contract_address, beneficiary_resetter} => vesting_without_staking_set_beneficiary_resetter(contract_address, beneficiary_resetter), + VestingWithoutStakingSetManagementRole{contract_address, role, role_holder} => vesting_without_staking_set_management_role(contract_address, role, role_holder), + VestingWithoutStakingSetVestingSchedule{contract_address, vesting_numerators, vesting_denominator, period_duration} => vesting_without_staking_set_vesting_schedule(contract_address, vesting_numerators, vesting_denominator, period_duration), + VestingWithoutStakingTerminateVestingContract{contract_address} => vesting_without_staking_terminate_vesting_contract(contract_address), + VestingWithoutStakingVest{contract_address} => vesting_without_staking_vest(contract_address), + VestingWithoutStakingVestIndividual{contract_address, shareholder_address} => vesting_without_staking_vest_individual(contract_address, shareholder_address), } } + /// Try to recognize an Aptos `TransactionPayload` and convert it into a structured object `EntryFunctionCall`. pub fn decode(payload: &TransactionPayload) -> Option { if let TransactionPayload::EntryFunction(script) = payload { - match SCRIPT_FUNCTION_DECODER_MAP.get(&format!( - "{}_{}", - script.module().name(), - script.function() - )) { + match SCRIPT_FUNCTION_DECODER_MAP.get(&format!("{}_{}", script.module().name(), script.function())) { Some(decoder) => decoder(payload), None => None, } @@ -2110,6 +1468,7 @@ impl EntryFunctionCall { None } } + } /// Offers rotation capability on behalf of `account` to the account at address `recipient_address`. @@ -2129,28 +1488,15 @@ impl EntryFunctionCall { /// @param account_public_key_bytes is the public key of the account owner. /// @param recipient_address is the address of the recipient of the rotation capability - note that if there's an existing rotation capability /// offer, calling this function will replace the previous `recipient_address` upon successful verification. -pub fn account_offer_rotation_capability( - rotation_capability_sig_bytes: Vec, - account_scheme: u8, - account_public_key_bytes: Vec, - recipient_address: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("account").to_owned(), - ), +pub fn account_offer_rotation_capability(rotation_capability_sig_bytes: Vec, account_scheme: u8, account_public_key_bytes: Vec, recipient_address: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("account").to_owned(), + ), ident_str!("offer_rotation_capability").to_owned(), vec![], - vec![ - bcs::to_bytes(&rotation_capability_sig_bytes).unwrap(), - bcs::to_bytes(&account_scheme).unwrap(), - bcs::to_bytes(&account_public_key_bytes).unwrap(), - bcs::to_bytes(&recipient_address).unwrap(), - ], + vec![bcs::to_bytes(&rotation_capability_sig_bytes).unwrap(), bcs::to_bytes(&account_scheme).unwrap(), bcs::to_bytes(&account_public_key_bytes).unwrap(), bcs::to_bytes(&recipient_address).unwrap()], )) } @@ -2163,28 +1509,15 @@ pub fn account_offer_rotation_capability( /// `recipient_address` in the account owner's `SignerCapabilityOffer`, this will replace the /// previous `recipient_address` upon successful verification (the previous recipient will no longer have access /// to the account owner's signer capability). -pub fn account_offer_signer_capability( - signer_capability_sig_bytes: Vec, - account_scheme: u8, - account_public_key_bytes: Vec, - recipient_address: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("account").to_owned(), - ), +pub fn account_offer_signer_capability(signer_capability_sig_bytes: Vec, account_scheme: u8, account_public_key_bytes: Vec, recipient_address: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("account").to_owned(), + ), ident_str!("offer_signer_capability").to_owned(), vec![], - vec![ - bcs::to_bytes(&signer_capability_sig_bytes).unwrap(), - bcs::to_bytes(&account_scheme).unwrap(), - bcs::to_bytes(&account_public_key_bytes).unwrap(), - bcs::to_bytes(&recipient_address).unwrap(), - ], + vec![bcs::to_bytes(&signer_capability_sig_bytes).unwrap(), bcs::to_bytes(&account_scheme).unwrap(), bcs::to_bytes(&account_public_key_bytes).unwrap(), bcs::to_bytes(&recipient_address).unwrap()], )) } @@ -2192,12 +1525,9 @@ pub fn account_offer_signer_capability( pub fn account_revoke_any_rotation_capability() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("account").to_owned(), + ), ident_str!("revoke_any_rotation_capability").to_owned(), vec![], vec![], @@ -2208,12 +1538,9 @@ pub fn account_revoke_any_rotation_capability() -> TransactionPayload { pub fn account_revoke_any_signer_capability() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("account").to_owned(), + ), ident_str!("revoke_any_signer_capability").to_owned(), vec![], vec![], @@ -2221,17 +1548,12 @@ pub fn account_revoke_any_signer_capability() -> TransactionPayload { } /// Revoke the rotation capability offer given to `to_be_revoked_recipient_address` from `account` -pub fn account_revoke_rotation_capability( - to_be_revoked_address: AccountAddress, -) -> TransactionPayload { +pub fn account_revoke_rotation_capability(to_be_revoked_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("account").to_owned(), + ), ident_str!("revoke_rotation_capability").to_owned(), vec![], vec![bcs::to_bytes(&to_be_revoked_address).unwrap()], @@ -2240,17 +1562,12 @@ pub fn account_revoke_rotation_capability( /// Revoke the account owner's signer capability offer for `to_be_revoked_address` (i.e., the address that /// has a signer capability offer from `account` but will be revoked in this function). -pub fn account_revoke_signer_capability( - to_be_revoked_address: AccountAddress, -) -> TransactionPayload { +pub fn account_revoke_signer_capability(to_be_revoked_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("account").to_owned(), + ), ident_str!("revoke_signer_capability").to_owned(), vec![], vec![bcs::to_bytes(&to_be_revoked_address).unwrap()], @@ -2285,32 +1602,15 @@ pub fn account_revoke_signer_capability( /// /// Because we ask for a valid `cap_update_table`, this kind of attack is not possible. Bob would not have the secret key of Alice's address /// to rotate his address to Alice's address in the first place. -pub fn account_rotate_authentication_key( - from_scheme: u8, - from_public_key_bytes: Vec, - to_scheme: u8, - to_public_key_bytes: Vec, - cap_rotate_key: Vec, - cap_update_table: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("account").to_owned(), - ), +pub fn account_rotate_authentication_key(from_scheme: u8, from_public_key_bytes: Vec, to_scheme: u8, to_public_key_bytes: Vec, cap_rotate_key: Vec, cap_update_table: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("account").to_owned(), + ), ident_str!("rotate_authentication_key").to_owned(), vec![], - vec![ - bcs::to_bytes(&from_scheme).unwrap(), - bcs::to_bytes(&from_public_key_bytes).unwrap(), - bcs::to_bytes(&to_scheme).unwrap(), - bcs::to_bytes(&to_public_key_bytes).unwrap(), - bcs::to_bytes(&cap_rotate_key).unwrap(), - bcs::to_bytes(&cap_update_table).unwrap(), - ], + vec![bcs::to_bytes(&from_scheme).unwrap(), bcs::to_bytes(&from_public_key_bytes).unwrap(), bcs::to_bytes(&to_scheme).unwrap(), bcs::to_bytes(&to_public_key_bytes).unwrap(), bcs::to_bytes(&cap_rotate_key).unwrap(), bcs::to_bytes(&cap_update_table).unwrap()], )) } @@ -2322,40 +1622,25 @@ pub fn account_rotate_authentication_key( pub fn account_rotate_authentication_key_call(new_auth_key: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("account").to_owned(), + ), ident_str!("rotate_authentication_key_call").to_owned(), vec![], vec![bcs::to_bytes(&new_auth_key).unwrap()], )) } -pub fn account_rotate_authentication_key_with_rotation_capability( - rotation_cap_offerer_address: AccountAddress, - new_scheme: u8, - new_public_key_bytes: Vec, - cap_update_table: Vec, -) -> TransactionPayload { + +pub fn account_rotate_authentication_key_with_rotation_capability(rotation_cap_offerer_address: AccountAddress, new_scheme: u8, new_public_key_bytes: Vec, cap_update_table: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("account").to_owned(), + ), ident_str!("rotate_authentication_key_with_rotation_capability").to_owned(), vec![], - vec![ - bcs::to_bytes(&rotation_cap_offerer_address).unwrap(), - bcs::to_bytes(&new_scheme).unwrap(), - bcs::to_bytes(&new_public_key_bytes).unwrap(), - bcs::to_bytes(&cap_update_table).unwrap(), - ], + vec![bcs::to_bytes(&rotation_cap_offerer_address).unwrap(), bcs::to_bytes(&new_scheme).unwrap(), bcs::to_bytes(&new_public_key_bytes).unwrap(), bcs::to_bytes(&cap_update_table).unwrap()], )) } @@ -2369,12 +1654,9 @@ pub fn account_rotate_authentication_key_with_rotation_capability( pub fn automation_registry_cancel_system_task(task_index: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("automation_registry").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("automation_registry").to_owned(), + ), ident_str!("cancel_system_task").to_owned(), vec![], vec![bcs::to_bytes(&task_index).unwrap()], @@ -2391,12 +1673,9 @@ pub fn automation_registry_cancel_system_task(task_index: u64) -> TransactionPay pub fn automation_registry_cancel_task(task_index: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("automation_registry").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("automation_registry").to_owned(), + ), ident_str!("cancel_task").to_owned(), vec![], vec![bcs::to_bytes(&task_index).unwrap()], @@ -2411,12 +1690,9 @@ pub fn automation_registry_cancel_task(task_index: u64) -> TransactionPayload { pub fn automation_registry_stop_system_tasks(task_indexes: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("automation_registry").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("automation_registry").to_owned(), + ), ident_str!("stop_system_tasks").to_owned(), vec![], vec![bcs::to_bytes(&task_indexes).unwrap()], @@ -2431,12 +1707,9 @@ pub fn automation_registry_stop_system_tasks(task_indexes: Vec) -> Transact pub fn automation_registry_stop_tasks(task_indexes: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("automation_registry").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("automation_registry").to_owned(), + ), ident_str!("stop_tasks").to_owned(), vec![], vec![bcs::to_bytes(&task_indexes).unwrap()], @@ -2445,36 +1718,25 @@ pub fn automation_registry_stop_tasks(task_indexes: Vec) -> TransactionPayl /// Same as `publish_package` but as an entry function which can be called as a transaction. Because /// of current restrictions for txn parameters, the metadata needs to be passed in serialized form. -pub fn code_publish_package_txn( - metadata_serialized: Vec, - code: Vec>, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("code").to_owned(), - ), +pub fn code_publish_package_txn(metadata_serialized: Vec, code: Vec>) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("code").to_owned(), + ), ident_str!("publish_package_txn").to_owned(), vec![], - vec![ - bcs::to_bytes(&metadata_serialized).unwrap(), - bcs::to_bytes(&code).unwrap(), - ], + vec![bcs::to_bytes(&metadata_serialized).unwrap(), bcs::to_bytes(&code).unwrap()], )) } + pub fn coin_create_coin_conversion_map() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("coin").to_owned(), + ), ident_str!("create_coin_conversion_map").to_owned(), vec![], vec![], @@ -2485,12 +1747,9 @@ pub fn coin_create_coin_conversion_map() -> TransactionPayload { pub fn coin_create_pairing(coin_type: TypeTag) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("coin").to_owned(), + ), ident_str!("create_pairing").to_owned(), vec![coin_type], vec![], @@ -2501,12 +1760,9 @@ pub fn coin_create_pairing(coin_type: TypeTag) -> TransactionPayload { pub fn coin_migrate_to_fungible_store(coin_type: TypeTag) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("coin").to_owned(), + ), ident_str!("migrate_to_fungible_store").to_owned(), vec![coin_type], vec![], @@ -2517,12 +1773,9 @@ pub fn coin_migrate_to_fungible_store(coin_type: TypeTag) -> TransactionPayload pub fn coin_transfer(coin_type: TypeTag, to: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("coin").to_owned(), + ), ident_str!("transfer").to_owned(), vec![coin_type], vec![bcs::to_bytes(&to).unwrap(), bcs::to_bytes(&amount).unwrap()], @@ -2534,12 +1787,9 @@ pub fn coin_transfer(coin_type: TypeTag, to: AccountAddress, amount: u64) -> Tra pub fn coin_upgrade_supply(coin_type: TypeTag) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("coin").to_owned(), + ), ident_str!("upgrade_supply").to_owned(), vec![coin_type], vec![], @@ -2547,242 +1797,106 @@ pub fn coin_upgrade_supply(coin_type: TypeTag) -> TransactionPayload { } /// Remove the committee from the store -pub fn committee_map_remove_committee( - com_store_addr: AccountAddress, - id: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_remove_committee(com_store_addr: AccountAddress, id: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("committee_map").to_owned(), + ), ident_str!("remove_committee").to_owned(), vec![], - vec![ - bcs::to_bytes(&com_store_addr).unwrap(), - bcs::to_bytes(&id).unwrap(), - ], + vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&id).unwrap()], )) } /// Remove the committee in bulk -pub fn committee_map_remove_committee_bulk( - com_store_addr: AccountAddress, - ids: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_remove_committee_bulk(com_store_addr: AccountAddress, ids: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("committee_map").to_owned(), + ), ident_str!("remove_committee_bulk").to_owned(), vec![], - vec![ - bcs::to_bytes(&com_store_addr).unwrap(), - bcs::to_bytes(&ids).unwrap(), - ], + vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&ids).unwrap()], )) } /// Remove the node from the committee -pub fn committee_map_remove_committee_member( - com_store_addr: AccountAddress, - id: u64, - node_address: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_remove_committee_member(com_store_addr: AccountAddress, id: u64, node_address: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("committee_map").to_owned(), + ), ident_str!("remove_committee_member").to_owned(), vec![], - vec![ - bcs::to_bytes(&com_store_addr).unwrap(), - bcs::to_bytes(&id).unwrap(), - bcs::to_bytes(&node_address).unwrap(), - ], + vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&id).unwrap(), bcs::to_bytes(&node_address).unwrap()], )) } /// Update the dkg flag -pub fn committee_map_update_dkg_flag( - com_store_addr: AccountAddress, - com_id: u64, - flag_value: bool, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_update_dkg_flag(com_store_addr: AccountAddress, com_id: u64, flag_value: bool) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("committee_map").to_owned(), + ), ident_str!("update_dkg_flag").to_owned(), vec![], - vec![ - bcs::to_bytes(&com_store_addr).unwrap(), - bcs::to_bytes(&com_id).unwrap(), - bcs::to_bytes(&flag_value).unwrap(), - ], + vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&com_id).unwrap(), bcs::to_bytes(&flag_value).unwrap()], )) } /// This function is used to add a new committee to the store -pub fn committee_map_upsert_committee( - com_store_addr: AccountAddress, - id: u64, - node_addresses: Vec, - ip_public_address: Vec>, - node_public_key: Vec>, - network_public_key: Vec>, - cg_public_key: Vec>, - network_port: Vec, - rpc_port: Vec, - committee_type: u8, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_upsert_committee(com_store_addr: AccountAddress, id: u64, node_addresses: Vec, ip_public_address: Vec>, node_public_key: Vec>, network_public_key: Vec>, cg_public_key: Vec>, network_port: Vec, rpc_port: Vec, committee_type: u8) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("committee_map").to_owned(), + ), ident_str!("upsert_committee").to_owned(), vec![], - vec![ - bcs::to_bytes(&com_store_addr).unwrap(), - bcs::to_bytes(&id).unwrap(), - bcs::to_bytes(&node_addresses).unwrap(), - bcs::to_bytes(&ip_public_address).unwrap(), - bcs::to_bytes(&node_public_key).unwrap(), - bcs::to_bytes(&network_public_key).unwrap(), - bcs::to_bytes(&cg_public_key).unwrap(), - bcs::to_bytes(&network_port).unwrap(), - bcs::to_bytes(&rpc_port).unwrap(), - bcs::to_bytes(&committee_type).unwrap(), - ], + vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&id).unwrap(), bcs::to_bytes(&node_addresses).unwrap(), bcs::to_bytes(&ip_public_address).unwrap(), bcs::to_bytes(&node_public_key).unwrap(), bcs::to_bytes(&network_public_key).unwrap(), bcs::to_bytes(&cg_public_key).unwrap(), bcs::to_bytes(&network_port).unwrap(), bcs::to_bytes(&rpc_port).unwrap(), bcs::to_bytes(&committee_type).unwrap()], )) } /// Add the committee in bulk -pub fn committee_map_upsert_committee_bulk( - com_store_addr: AccountAddress, - ids: Vec, - node_addresses_bulk: Vec>, - ip_public_address_bulk: Vec>>, - node_public_key_bulk: Vec>>, - network_public_key_bulk: Vec>>, - cg_public_key_bulk: Vec>>, - network_port_bulk: Vec>, - rpc_por_bulkt: Vec>, - committee_types: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_upsert_committee_bulk(com_store_addr: AccountAddress, ids: Vec, node_addresses_bulk: Vec>, ip_public_address_bulk: Vec>>, node_public_key_bulk: Vec>>, network_public_key_bulk: Vec>>, cg_public_key_bulk: Vec>>, network_port_bulk: Vec>, rpc_por_bulkt: Vec>, committee_types: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("committee_map").to_owned(), + ), ident_str!("upsert_committee_bulk").to_owned(), vec![], - vec![ - bcs::to_bytes(&com_store_addr).unwrap(), - bcs::to_bytes(&ids).unwrap(), - bcs::to_bytes(&node_addresses_bulk).unwrap(), - bcs::to_bytes(&ip_public_address_bulk).unwrap(), - bcs::to_bytes(&node_public_key_bulk).unwrap(), - bcs::to_bytes(&network_public_key_bulk).unwrap(), - bcs::to_bytes(&cg_public_key_bulk).unwrap(), - bcs::to_bytes(&network_port_bulk).unwrap(), - bcs::to_bytes(&rpc_por_bulkt).unwrap(), - bcs::to_bytes(&committee_types).unwrap(), - ], + vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&ids).unwrap(), bcs::to_bytes(&node_addresses_bulk).unwrap(), bcs::to_bytes(&ip_public_address_bulk).unwrap(), bcs::to_bytes(&node_public_key_bulk).unwrap(), bcs::to_bytes(&network_public_key_bulk).unwrap(), bcs::to_bytes(&cg_public_key_bulk).unwrap(), bcs::to_bytes(&network_port_bulk).unwrap(), bcs::to_bytes(&rpc_por_bulkt).unwrap(), bcs::to_bytes(&committee_types).unwrap()], )) } /// Upsert the node to the committee -pub fn committee_map_upsert_committee_member( - com_store_addr: AccountAddress, - id: u64, - node_address: AccountAddress, - ip_public_address: Vec, - node_public_key: Vec, - network_public_key: Vec, - cg_public_key: Vec, - network_port: u16, - rpc_port: u16, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_upsert_committee_member(com_store_addr: AccountAddress, id: u64, node_address: AccountAddress, ip_public_address: Vec, node_public_key: Vec, network_public_key: Vec, cg_public_key: Vec, network_port: u16, rpc_port: u16) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("committee_map").to_owned(), + ), ident_str!("upsert_committee_member").to_owned(), vec![], - vec![ - bcs::to_bytes(&com_store_addr).unwrap(), - bcs::to_bytes(&id).unwrap(), - bcs::to_bytes(&node_address).unwrap(), - bcs::to_bytes(&ip_public_address).unwrap(), - bcs::to_bytes(&node_public_key).unwrap(), - bcs::to_bytes(&network_public_key).unwrap(), - bcs::to_bytes(&cg_public_key).unwrap(), - bcs::to_bytes(&network_port).unwrap(), - bcs::to_bytes(&rpc_port).unwrap(), - ], + vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&id).unwrap(), bcs::to_bytes(&node_address).unwrap(), bcs::to_bytes(&ip_public_address).unwrap(), bcs::to_bytes(&node_public_key).unwrap(), bcs::to_bytes(&network_public_key).unwrap(), bcs::to_bytes(&cg_public_key).unwrap(), bcs::to_bytes(&network_port).unwrap(), bcs::to_bytes(&rpc_port).unwrap()], )) } /// Upsert nodes to the committee -pub fn committee_map_upsert_committee_member_bulk( - com_store_addr: AccountAddress, - ids: Vec, - node_addresses: Vec, - ip_public_address: Vec>, - node_public_key: Vec>, - network_public_key: Vec>, - cg_public_key: Vec>, - network_port: Vec, - rpc_port: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_upsert_committee_member_bulk(com_store_addr: AccountAddress, ids: Vec, node_addresses: Vec, ip_public_address: Vec>, node_public_key: Vec>, network_public_key: Vec>, cg_public_key: Vec>, network_port: Vec, rpc_port: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("committee_map").to_owned(), + ), ident_str!("upsert_committee_member_bulk").to_owned(), vec![], - vec![ - bcs::to_bytes(&com_store_addr).unwrap(), - bcs::to_bytes(&ids).unwrap(), - bcs::to_bytes(&node_addresses).unwrap(), - bcs::to_bytes(&ip_public_address).unwrap(), - bcs::to_bytes(&node_public_key).unwrap(), - bcs::to_bytes(&network_public_key).unwrap(), - bcs::to_bytes(&cg_public_key).unwrap(), - bcs::to_bytes(&network_port).unwrap(), - bcs::to_bytes(&rpc_port).unwrap(), - ], + vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&ids).unwrap(), bcs::to_bytes(&node_addresses).unwrap(), bcs::to_bytes(&ip_public_address).unwrap(), bcs::to_bytes(&node_public_key).unwrap(), bcs::to_bytes(&network_public_key).unwrap(), bcs::to_bytes(&cg_public_key).unwrap(), bcs::to_bytes(&network_port).unwrap(), bcs::to_bytes(&rpc_port).unwrap()], )) } @@ -2790,12 +1904,9 @@ pub fn committee_map_upsert_committee_member_bulk( pub fn managed_coin_burn(coin_type: TypeTag, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("managed_coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("managed_coin").to_owned(), + ), ident_str!("burn").to_owned(), vec![coin_type], vec![bcs::to_bytes(&amount).unwrap()], @@ -2804,52 +1915,28 @@ pub fn managed_coin_burn(coin_type: TypeTag, amount: u64) -> TransactionPayload /// Initialize new coin `CoinType` in Supra Blockchain. /// Mint and Burn Capabilities will be stored under `account` in `Capabilities` resource. -pub fn managed_coin_initialize( - coin_type: TypeTag, - name: Vec, - symbol: Vec, - decimals: u8, - monitor_supply: bool, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("managed_coin").to_owned(), - ), +pub fn managed_coin_initialize(coin_type: TypeTag, name: Vec, symbol: Vec, decimals: u8, monitor_supply: bool) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("managed_coin").to_owned(), + ), ident_str!("initialize").to_owned(), vec![coin_type], - vec![ - bcs::to_bytes(&name).unwrap(), - bcs::to_bytes(&symbol).unwrap(), - bcs::to_bytes(&decimals).unwrap(), - bcs::to_bytes(&monitor_supply).unwrap(), - ], + vec![bcs::to_bytes(&name).unwrap(), bcs::to_bytes(&symbol).unwrap(), bcs::to_bytes(&decimals).unwrap(), bcs::to_bytes(&monitor_supply).unwrap()], )) } /// Create new coins `CoinType` and deposit them into dst_addr's account. -pub fn managed_coin_mint( - coin_type: TypeTag, - dst_addr: AccountAddress, - amount: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("managed_coin").to_owned(), - ), +pub fn managed_coin_mint(coin_type: TypeTag, dst_addr: AccountAddress, amount: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("managed_coin").to_owned(), + ), ident_str!("mint").to_owned(), vec![coin_type], - vec![ - bcs::to_bytes(&dst_addr).unwrap(), - bcs::to_bytes(&amount).unwrap(), - ], + vec![bcs::to_bytes(&dst_addr).unwrap(), bcs::to_bytes(&amount).unwrap()], )) } @@ -2858,12 +1945,9 @@ pub fn managed_coin_mint( pub fn managed_coin_register(coin_type: TypeTag) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("managed_coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("managed_coin").to_owned(), + ), ident_str!("register").to_owned(), vec![coin_type], vec![], @@ -2874,12 +1958,9 @@ pub fn managed_coin_register(coin_type: TypeTag) -> TransactionPayload { pub fn multisig_account_add_owner(new_owner: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("add_owner").to_owned(), vec![], vec![bcs::to_bytes(&new_owner).unwrap()], @@ -2895,12 +1976,9 @@ pub fn multisig_account_add_owner(new_owner: AccountAddress) -> TransactionPaylo pub fn multisig_account_add_owners(new_owners: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("add_owners").to_owned(), vec![], vec![bcs::to_bytes(&new_owners).unwrap()], @@ -2908,118 +1986,69 @@ pub fn multisig_account_add_owners(new_owners: Vec) -> Transacti } /// Add owners then update number of signatures required, in a single operation. -pub fn multisig_account_add_owners_and_update_signatures_required( - new_owners: Vec, - new_num_signatures_required: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_add_owners_and_update_signatures_required(new_owners: Vec, new_num_signatures_required: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("add_owners_and_update_signatures_required").to_owned(), vec![], - vec![ - bcs::to_bytes(&new_owners).unwrap(), - bcs::to_bytes(&new_num_signatures_required).unwrap(), - ], + vec![bcs::to_bytes(&new_owners).unwrap(), bcs::to_bytes(&new_num_signatures_required).unwrap()], )) } /// Approve a multisig transaction. -pub fn multisig_account_approve_transaction( - multisig_account: AccountAddress, - sequence_number: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_approve_transaction(multisig_account: AccountAddress, sequence_number: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("approve_transaction").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_account).unwrap(), - bcs::to_bytes(&sequence_number).unwrap(), - ], + vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&sequence_number).unwrap()], )) } /// Creates a new multisig account and add the signer as a single owner. -pub fn multisig_account_create( - num_signatures_required: u64, - metadata_keys: Vec>, - metadata_values: Vec>, - timeout_duration: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create(num_signatures_required: u64, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create").to_owned(), vec![], - vec![ - bcs::to_bytes(&num_signatures_required).unwrap(), - bcs::to_bytes(&metadata_keys).unwrap(), - bcs::to_bytes(&metadata_values).unwrap(), - bcs::to_bytes(&timeout_duration).unwrap(), - ], + vec![bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], )) } /// Create a multisig transaction, which will have one approval initially (from the creator). -pub fn multisig_account_create_transaction( - multisig_account: AccountAddress, - payload: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_transaction(multisig_account: AccountAddress, payload: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_transaction").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_account).unwrap(), - bcs::to_bytes(&payload).unwrap(), - ], + vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&payload).unwrap()], )) } /// Create a multisig transaction with a transaction hash instead of the full payload. /// This means the payload will be stored off chain for gas saving. Later, during execution, the executor will need /// to provide the full payload, which will be validated against the hash stored on-chain. -pub fn multisig_account_create_transaction_with_hash( - multisig_account: AccountAddress, - payload_hash: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_transaction_with_hash(multisig_account: AccountAddress, payload_hash: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_transaction_with_hash").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_account).unwrap(), - bcs::to_bytes(&payload_hash).unwrap(), - ], + vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&payload_hash).unwrap()], )) } @@ -3032,38 +2061,15 @@ pub fn multisig_account_create_transaction_with_hash( /// Note that this does not revoke auth key-based control over the account. Owners should separately rotate the auth /// key after they are fully migrated to the new multisig account. Alternatively, they can call /// create_with_existing_account_and_revoke_auth_key instead. -pub fn multisig_account_create_with_existing_account( - multisig_address: AccountAddress, - owners: Vec, - num_signatures_required: u64, - account_scheme: u8, - account_public_key: Vec, - create_multisig_account_signed_message: Vec, - metadata_keys: Vec>, - metadata_values: Vec>, - timeout_duration: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_with_existing_account(multisig_address: AccountAddress, owners: Vec, num_signatures_required: u64, account_scheme: u8, account_public_key: Vec, create_multisig_account_signed_message: Vec, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_with_existing_account").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_address).unwrap(), - bcs::to_bytes(&owners).unwrap(), - bcs::to_bytes(&num_signatures_required).unwrap(), - bcs::to_bytes(&account_scheme).unwrap(), - bcs::to_bytes(&account_public_key).unwrap(), - bcs::to_bytes(&create_multisig_account_signed_message).unwrap(), - bcs::to_bytes(&metadata_keys).unwrap(), - bcs::to_bytes(&metadata_values).unwrap(), - bcs::to_bytes(&timeout_duration).unwrap(), - ], + vec![bcs::to_bytes(&multisig_address).unwrap(), bcs::to_bytes(&owners).unwrap(), bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&account_scheme).unwrap(), bcs::to_bytes(&account_public_key).unwrap(), bcs::to_bytes(&create_multisig_account_signed_message).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], )) } @@ -3072,38 +2078,15 @@ pub fn multisig_account_create_with_existing_account( /// Note: If the original account is a resource account, this does not revoke all control over it as if any /// SignerCapability of the resource account still exists, it can still be used to generate the signer for the /// account. -pub fn multisig_account_create_with_existing_account_and_revoke_auth_key( - multisig_address: AccountAddress, - owners: Vec, - num_signatures_required: u64, - account_scheme: u8, - account_public_key: Vec, - create_multisig_account_signed_message: Vec, - metadata_keys: Vec>, - metadata_values: Vec>, - timeout_duration: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_with_existing_account_and_revoke_auth_key(multisig_address: AccountAddress, owners: Vec, num_signatures_required: u64, account_scheme: u8, account_public_key: Vec, create_multisig_account_signed_message: Vec, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_with_existing_account_and_revoke_auth_key").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_address).unwrap(), - bcs::to_bytes(&owners).unwrap(), - bcs::to_bytes(&num_signatures_required).unwrap(), - bcs::to_bytes(&account_scheme).unwrap(), - bcs::to_bytes(&account_public_key).unwrap(), - bcs::to_bytes(&create_multisig_account_signed_message).unwrap(), - bcs::to_bytes(&metadata_keys).unwrap(), - bcs::to_bytes(&metadata_values).unwrap(), - bcs::to_bytes(&timeout_duration).unwrap(), - ], + vec![bcs::to_bytes(&multisig_address).unwrap(), bcs::to_bytes(&owners).unwrap(), bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&account_scheme).unwrap(), bcs::to_bytes(&account_public_key).unwrap(), bcs::to_bytes(&create_multisig_account_signed_message).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], )) } @@ -3113,30 +2096,15 @@ pub fn multisig_account_create_with_existing_account_and_revoke_auth_key( /// cannot be any duplicate owners in the list. /// @param num_signatures_required The number of signatures required to execute a transaction. Must be at least 1 and /// at most the total number of owners. -pub fn multisig_account_create_with_owners( - additional_owners: Vec, - num_signatures_required: u64, - metadata_keys: Vec>, - metadata_values: Vec>, - timeout_duration: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_with_owners(additional_owners: Vec, num_signatures_required: u64, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_with_owners").to_owned(), vec![], - vec![ - bcs::to_bytes(&additional_owners).unwrap(), - bcs::to_bytes(&num_signatures_required).unwrap(), - bcs::to_bytes(&metadata_keys).unwrap(), - bcs::to_bytes(&metadata_values).unwrap(), - bcs::to_bytes(&timeout_duration).unwrap(), - ], + vec![bcs::to_bytes(&additional_owners).unwrap(), bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], )) } @@ -3144,45 +2112,25 @@ pub fn multisig_account_create_with_owners( /// /// This is for creating a vanity multisig account from a bootstrapping account that should not /// be an owner after the vanity multisig address has been secured. -pub fn multisig_account_create_with_owners_then_remove_bootstrapper( - owners: Vec, - num_signatures_required: u64, - metadata_keys: Vec>, - metadata_values: Vec>, - timeout_duration: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_with_owners_then_remove_bootstrapper(owners: Vec, num_signatures_required: u64, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_with_owners_then_remove_bootstrapper").to_owned(), vec![], - vec![ - bcs::to_bytes(&owners).unwrap(), - bcs::to_bytes(&num_signatures_required).unwrap(), - bcs::to_bytes(&metadata_keys).unwrap(), - bcs::to_bytes(&metadata_values).unwrap(), - bcs::to_bytes(&timeout_duration).unwrap(), - ], + vec![bcs::to_bytes(&owners).unwrap(), bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], )) } /// Remove the next transaction if it has sufficient owner rejections. -pub fn multisig_account_execute_rejected_transaction( - multisig_account: AccountAddress, -) -> TransactionPayload { +pub fn multisig_account_execute_rejected_transaction(multisig_account: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("execute_rejected_transaction").to_owned(), vec![], vec![bcs::to_bytes(&multisig_account).unwrap()], @@ -3190,46 +2138,28 @@ pub fn multisig_account_execute_rejected_transaction( } /// Remove the next transactions until the final_sequence_number if they have sufficient owner rejections. -pub fn multisig_account_execute_rejected_transactions( - multisig_account: AccountAddress, - final_sequence_number: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_execute_rejected_transactions(multisig_account: AccountAddress, final_sequence_number: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("execute_rejected_transactions").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_account).unwrap(), - bcs::to_bytes(&final_sequence_number).unwrap(), - ], + vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&final_sequence_number).unwrap()], )) } /// Reject a multisig transaction. -pub fn multisig_account_reject_transaction( - multisig_account: AccountAddress, - sequence_number: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_reject_transaction(multisig_account: AccountAddress, sequence_number: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("reject_transaction").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_account).unwrap(), - bcs::to_bytes(&sequence_number).unwrap(), - ], + vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&sequence_number).unwrap()], )) } @@ -3237,12 +2167,9 @@ pub fn multisig_account_reject_transaction( pub fn multisig_account_remove_owner(owner_to_remove: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("remove_owner").to_owned(), vec![], vec![bcs::to_bytes(&owner_to_remove).unwrap()], @@ -3259,12 +2186,9 @@ pub fn multisig_account_remove_owner(owner_to_remove: AccountAddress) -> Transac pub fn multisig_account_remove_owners(owners_to_remove: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("remove_owners").to_owned(), vec![], vec![bcs::to_bytes(&owners_to_remove).unwrap()], @@ -3272,70 +2196,41 @@ pub fn multisig_account_remove_owners(owners_to_remove: Vec) -> } /// Swap an owner in for an old one, without changing required signatures. -pub fn multisig_account_swap_owner( - to_swap_in: AccountAddress, - to_swap_out: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_swap_owner(to_swap_in: AccountAddress, to_swap_out: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("swap_owner").to_owned(), vec![], - vec![ - bcs::to_bytes(&to_swap_in).unwrap(), - bcs::to_bytes(&to_swap_out).unwrap(), - ], + vec![bcs::to_bytes(&to_swap_in).unwrap(), bcs::to_bytes(&to_swap_out).unwrap()], )) } /// Swap owners in and out, without changing required signatures. -pub fn multisig_account_swap_owners( - to_swap_in: Vec, - to_swap_out: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_swap_owners(to_swap_in: Vec, to_swap_out: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("swap_owners").to_owned(), vec![], - vec![ - bcs::to_bytes(&to_swap_in).unwrap(), - bcs::to_bytes(&to_swap_out).unwrap(), - ], + vec![bcs::to_bytes(&to_swap_in).unwrap(), bcs::to_bytes(&to_swap_out).unwrap()], )) } /// Swap owners in and out, updating number of required signatures. -pub fn multisig_account_swap_owners_and_update_signatures_required( - new_owners: Vec, - owners_to_remove: Vec, - new_num_signatures_required: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_swap_owners_and_update_signatures_required(new_owners: Vec, owners_to_remove: Vec, new_num_signatures_required: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("swap_owners_and_update_signatures_required").to_owned(), vec![], - vec![ - bcs::to_bytes(&new_owners).unwrap(), - bcs::to_bytes(&owners_to_remove).unwrap(), - bcs::to_bytes(&new_num_signatures_required).unwrap(), - ], + vec![bcs::to_bytes(&new_owners).unwrap(), bcs::to_bytes(&owners_to_remove).unwrap(), bcs::to_bytes(&new_num_signatures_required).unwrap()], )) } @@ -3346,24 +2241,15 @@ pub fn multisig_account_swap_owners_and_update_signatures_required( /// Note that this function is not public so it can only be invoked directly instead of via a module or script. This /// ensures that a multisig transaction cannot lead to another module obtaining the multisig signer and using it to /// maliciously alter the number of signatures required. -pub fn multisig_account_update_metadata( - keys: Vec>, - values: Vec>, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_update_metadata(keys: Vec>, values: Vec>) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("update_metadata").to_owned(), vec![], - vec![ - bcs::to_bytes(&keys).unwrap(), - bcs::to_bytes(&values).unwrap(), - ], + vec![bcs::to_bytes(&keys).unwrap(), bcs::to_bytes(&values).unwrap()], )) } @@ -3373,17 +2259,12 @@ pub fn multisig_account_update_metadata( /// Note that this function is not public so it can only be invoked directly instead of via a module or script. This /// ensures that a multisig transaction cannot lead to another module obtaining the multisig signer and using it to /// maliciously alter the number of signatures required. -pub fn multisig_account_update_signatures_required( - new_num_signatures_required: u64, -) -> TransactionPayload { +pub fn multisig_account_update_signatures_required(new_num_signatures_required: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("update_signatures_required").to_owned(), vec![], vec![bcs::to_bytes(&new_num_signatures_required).unwrap()], @@ -3394,12 +2275,9 @@ pub fn multisig_account_update_signatures_required( pub fn multisig_account_update_timeout_duration(timeout_duration: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("update_timeout_duration").to_owned(), vec![], vec![bcs::to_bytes(&timeout_duration).unwrap()], @@ -3407,78 +2285,43 @@ pub fn multisig_account_update_timeout_duration(timeout_duration: u64) -> Transa } /// Generic function that can be used to either approve or reject a multisig transaction -pub fn multisig_account_vote_transaction( - multisig_account: AccountAddress, - sequence_number: u64, - approved: bool, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_vote_transaction(multisig_account: AccountAddress, sequence_number: u64, approved: bool) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("vote_transaction").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_account).unwrap(), - bcs::to_bytes(&sequence_number).unwrap(), - bcs::to_bytes(&approved).unwrap(), - ], + vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&sequence_number).unwrap(), bcs::to_bytes(&approved).unwrap()], )) } /// Generic function that can be used to either approve or reject a batch of transactions within a specified range. -pub fn multisig_account_vote_transactions( - multisig_account: AccountAddress, - starting_sequence_number: u64, - final_sequence_number: u64, - approved: bool, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_vote_transactions(multisig_account: AccountAddress, starting_sequence_number: u64, final_sequence_number: u64, approved: bool) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("vote_transactions").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_account).unwrap(), - bcs::to_bytes(&starting_sequence_number).unwrap(), - bcs::to_bytes(&final_sequence_number).unwrap(), - bcs::to_bytes(&approved).unwrap(), - ], + vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&starting_sequence_number).unwrap(), bcs::to_bytes(&final_sequence_number).unwrap(), bcs::to_bytes(&approved).unwrap()], )) } /// Generic function that can be used to either approve or reject a multisig transaction /// Retained for backward compatibility: the function with the typographical error in its name /// will continue to be an accessible entry point. -pub fn multisig_account_vote_transanction( - multisig_account: AccountAddress, - sequence_number: u64, - approved: bool, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_vote_transanction(multisig_account: AccountAddress, sequence_number: u64, approved: bool) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("vote_transanction").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_account).unwrap(), - bcs::to_bytes(&sequence_number).unwrap(), - bcs::to_bytes(&approved).unwrap(), - ], + vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&sequence_number).unwrap(), bcs::to_bytes(&approved).unwrap()], )) } @@ -3486,12 +2329,9 @@ pub fn multisig_account_vote_transanction( pub fn object_transfer_call(object: AccountAddress, to: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("object").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("object").to_owned(), + ), ident_str!("transfer_call").to_owned(), vec![], vec![bcs::to_bytes(&object).unwrap(), bcs::to_bytes(&to).unwrap()], @@ -3502,229 +2342,121 @@ pub fn object_transfer_call(object: AccountAddress, to: AccountAddress) -> Trans /// Publishes the code passed in the function to the newly created object. /// The caller must provide package metadata describing the package via `metadata_serialized` and /// the code to be published via `code`. This contains a vector of modules to be deployed on-chain. -pub fn object_code_deployment_publish( - metadata_serialized: Vec, - code: Vec>, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("object_code_deployment").to_owned(), - ), +pub fn object_code_deployment_publish(metadata_serialized: Vec, code: Vec>) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("object_code_deployment").to_owned(), + ), ident_str!("publish").to_owned(), vec![], - vec![ - bcs::to_bytes(&metadata_serialized).unwrap(), - bcs::to_bytes(&code).unwrap(), - ], + vec![bcs::to_bytes(&metadata_serialized).unwrap(), bcs::to_bytes(&code).unwrap()], )) } /// Add `amount` of coins to the delegation pool `pool_address`. -pub fn pbo_delegation_pool_add_stake( - pool_address: AccountAddress, - amount: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_add_stake(pool_address: AccountAddress, amount: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("add_stake").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&amount).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&amount).unwrap()], )) } -pub fn pbo_delegation_pool_admin_increase_last_unlock_period( - pool_address: AccountAddress, - additional_periods: u64, -) -> TransactionPayload { + +pub fn pbo_delegation_pool_admin_increase_last_unlock_period(pool_address: AccountAddress, additional_periods: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("admin_increase_last_unlock_period").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&additional_periods).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&additional_periods).unwrap()], )) } /// Allows a delegator to delegate its voting power to a voter. If this delegator already has a delegated voter, /// this change won't take effects until the next lockup period. -pub fn pbo_delegation_pool_delegate_voting_power( - pool_address: AccountAddress, - new_voter: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_delegate_voting_power(pool_address: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("delegate_voting_power").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&new_voter).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&new_voter).unwrap()], )) } /// Enable partial governance voting on a stake pool. The voter of this stake pool will be managed by this module. /// THe existing voter will be replaced. The function is permissionless. -pub fn pbo_delegation_pool_enable_partial_governance_voting( - pool_address: AccountAddress, -) -> TransactionPayload { +pub fn pbo_delegation_pool_enable_partial_governance_voting(pool_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("enable_partial_governance_voting").to_owned(), vec![], vec![bcs::to_bytes(&pool_address).unwrap()], )) } -pub fn pbo_delegation_pool_fund_delegators_with_locked_stake( - pool_address: AccountAddress, - delegators: Vec, - stakes: Vec, -) -> TransactionPayload { + +pub fn pbo_delegation_pool_fund_delegators_with_locked_stake(pool_address: AccountAddress, delegators: Vec, stakes: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("fund_delegators_with_locked_stake").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&delegators).unwrap(), - bcs::to_bytes(&stakes).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&delegators).unwrap(), bcs::to_bytes(&stakes).unwrap()], )) } -pub fn pbo_delegation_pool_fund_delegators_with_stake( - pool_address: AccountAddress, - delegators: Vec, - stakes: Vec, -) -> TransactionPayload { + +pub fn pbo_delegation_pool_fund_delegators_with_stake(pool_address: AccountAddress, delegators: Vec, stakes: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("fund_delegators_with_stake").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&delegators).unwrap(), - bcs::to_bytes(&stakes).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&delegators).unwrap(), bcs::to_bytes(&stakes).unwrap()], )) } /// Initialize a delegation pool without actual coin but withdraw from the owner's account. -pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount( - multisig_admin: AccountAddress, - amount: u64, - operator_commission_percentage: u64, - delegation_pool_creation_seed: Vec, - delegator_address: Vec, - principle_stake: Vec, - unlock_numerators: Vec, - unlock_denominator: u64, - unlock_start_time: u64, - unlock_duration: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount(multisig_admin: AccountAddress, amount: u64, operator_commission_percentage: u64, delegation_pool_creation_seed: Vec, delegator_address: Vec, principle_stake: Vec, unlock_numerators: Vec, unlock_denominator: u64, unlock_start_time: u64, unlock_duration: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("initialize_delegation_pool_with_amount").to_owned(), vec![], - vec![ - bcs::to_bytes(&multisig_admin).unwrap(), - bcs::to_bytes(&amount).unwrap(), - bcs::to_bytes(&operator_commission_percentage).unwrap(), - bcs::to_bytes(&delegation_pool_creation_seed).unwrap(), - bcs::to_bytes(&delegator_address).unwrap(), - bcs::to_bytes(&principle_stake).unwrap(), - bcs::to_bytes(&unlock_numerators).unwrap(), - bcs::to_bytes(&unlock_denominator).unwrap(), - bcs::to_bytes(&unlock_start_time).unwrap(), - bcs::to_bytes(&unlock_duration).unwrap(), - ], + vec![bcs::to_bytes(&multisig_admin).unwrap(), bcs::to_bytes(&amount).unwrap(), bcs::to_bytes(&operator_commission_percentage).unwrap(), bcs::to_bytes(&delegation_pool_creation_seed).unwrap(), bcs::to_bytes(&delegator_address).unwrap(), bcs::to_bytes(&principle_stake).unwrap(), bcs::to_bytes(&unlock_numerators).unwrap(), bcs::to_bytes(&unlock_denominator).unwrap(), bcs::to_bytes(&unlock_start_time).unwrap(), bcs::to_bytes(&unlock_duration).unwrap()], )) } /// Initialize a delegation pool without actual coin but withdraw from the owner's account. -pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin( - amount: u64, - operator_commission_percentage: u64, - delegation_pool_creation_seed: Vec, - delegator_address: Vec, - principle_stake: Vec, - unlock_numerators: Vec, - unlock_denominator: u64, - unlock_start_time: u64, - unlock_duration: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin(amount: u64, operator_commission_percentage: u64, delegation_pool_creation_seed: Vec, delegator_address: Vec, principle_stake: Vec, unlock_numerators: Vec, unlock_denominator: u64, unlock_start_time: u64, unlock_duration: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("initialize_delegation_pool_with_amount_without_multisig_admin").to_owned(), vec![], - vec![ - bcs::to_bytes(&amount).unwrap(), - bcs::to_bytes(&operator_commission_percentage).unwrap(), - bcs::to_bytes(&delegation_pool_creation_seed).unwrap(), - bcs::to_bytes(&delegator_address).unwrap(), - bcs::to_bytes(&principle_stake).unwrap(), - bcs::to_bytes(&unlock_numerators).unwrap(), - bcs::to_bytes(&unlock_denominator).unwrap(), - bcs::to_bytes(&unlock_start_time).unwrap(), - bcs::to_bytes(&unlock_duration).unwrap(), - ], + vec![bcs::to_bytes(&amount).unwrap(), bcs::to_bytes(&operator_commission_percentage).unwrap(), bcs::to_bytes(&delegation_pool_creation_seed).unwrap(), bcs::to_bytes(&delegator_address).unwrap(), bcs::to_bytes(&principle_stake).unwrap(), bcs::to_bytes(&unlock_numerators).unwrap(), bcs::to_bytes(&unlock_denominator).unwrap(), bcs::to_bytes(&unlock_start_time).unwrap(), bcs::to_bytes(&unlock_duration).unwrap()], )) } @@ -3737,48 +2469,28 @@ pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multis /// Supra Foundation to ensure that the allocations of all investors are subject to the terms specified in the /// corresponding legal contracts. It will be deactivated before the validator set it opened up to external /// validator-owners to prevent it from being abused. -pub fn pbo_delegation_pool_lock_delegators_stakes( - pool_address: AccountAddress, - delegators: Vec, - new_principle_stakes: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_lock_delegators_stakes(pool_address: AccountAddress, delegators: Vec, new_principle_stakes: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("lock_delegators_stakes").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&delegators).unwrap(), - bcs::to_bytes(&new_principle_stakes).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&delegators).unwrap(), bcs::to_bytes(&new_principle_stakes).unwrap()], )) } /// Move `amount` of coins from pending_inactive to active. -pub fn pbo_delegation_pool_reactivate_stake( - pool_address: AccountAddress, - amount: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_reactivate_stake(pool_address: AccountAddress, amount: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("reactivate_stake").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&amount).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&amount).unwrap()], )) } @@ -3791,26 +2503,15 @@ pub fn pbo_delegation_pool_reactivate_stake( /// Supra Foundation to ensure that the allocations of all investors are subject to the terms specified in the /// corresponding legal contracts. It will be deactivated before the validator set it opened up to external /// validator-owners to prevent it from being abused. -pub fn pbo_delegation_pool_replace_delegator( - pool_address: AccountAddress, - old_delegator: AccountAddress, - new_delegator: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_replace_delegator(pool_address: AccountAddress, old_delegator: AccountAddress, new_delegator: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("replace_delegator").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&old_delegator).unwrap(), - bcs::to_bytes(&new_delegator).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&old_delegator).unwrap(), bcs::to_bytes(&new_delegator).unwrap()], )) } @@ -3818,17 +2519,12 @@ pub fn pbo_delegation_pool_replace_delegator( /// beneficiary. To ensures payment to the current beneficiary, one should first call `synchronize_delegation_pool` /// before switching the beneficiary. An operator can set one beneficiary for delegation pools, not a separate /// one for each pool. -pub fn pbo_delegation_pool_set_beneficiary_for_operator( - new_beneficiary: AccountAddress, -) -> TransactionPayload { +pub fn pbo_delegation_pool_set_beneficiary_for_operator(new_beneficiary: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("set_beneficiary_for_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_beneficiary).unwrap()], @@ -3839,12 +2535,9 @@ pub fn pbo_delegation_pool_set_beneficiary_for_operator( pub fn pbo_delegation_pool_set_delegated_voter(new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("set_delegated_voter").to_owned(), vec![], vec![bcs::to_bytes(&new_voter).unwrap()], @@ -3855,12 +2548,9 @@ pub fn pbo_delegation_pool_set_delegated_voter(new_voter: AccountAddress) -> Tra pub fn pbo_delegation_pool_set_operator(new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("set_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_operator).unwrap()], @@ -3869,17 +2559,12 @@ pub fn pbo_delegation_pool_set_operator(new_operator: AccountAddress) -> Transac /// Synchronize delegation and stake pools: distribute yet-undetected rewards to the corresponding internal /// shares pools, assign commission to operator and eventually prepare delegation pool for a new lockup cycle. -pub fn pbo_delegation_pool_synchronize_delegation_pool( - pool_address: AccountAddress, -) -> TransactionPayload { +pub fn pbo_delegation_pool_synchronize_delegation_pool(pool_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("synchronize_delegation_pool").to_owned(), vec![], vec![bcs::to_bytes(&pool_address).unwrap()], @@ -3891,33 +2576,22 @@ pub fn pbo_delegation_pool_synchronize_delegation_pool( pub fn pbo_delegation_pool_unlock(pool_address: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("unlock").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&amount).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&amount).unwrap()], )) } /// Allows an owner to update the commission percentage for the operator of the underlying stake pool. -pub fn pbo_delegation_pool_update_commission_percentage( - new_commission_percentage: u64, -) -> TransactionPayload { +pub fn pbo_delegation_pool_update_commission_percentage(new_commission_percentage: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("update_commission_percentage").to_owned(), vec![], vec![bcs::to_bytes(&new_commission_percentage).unwrap()], @@ -3930,105 +2604,56 @@ pub fn pbo_delegation_pool_update_commission_percentage( /// This is a temporary measure to allow Supra Foundation to change the schedule for those pools /// there were initialized with ``dummy/default'' schedule. This method must be disabled /// before external validators are allowed to join the validator set. -pub fn pbo_delegation_pool_update_unlocking_schedule( - pool_address: AccountAddress, - unlock_numerators: Vec, - unlock_denominator: u64, - unlock_start_time: u64, - unlock_duration: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_update_unlocking_schedule(pool_address: AccountAddress, unlock_numerators: Vec, unlock_denominator: u64, unlock_start_time: u64, unlock_duration: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("update_unlocking_schedule").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&unlock_numerators).unwrap(), - bcs::to_bytes(&unlock_denominator).unwrap(), - bcs::to_bytes(&unlock_start_time).unwrap(), - bcs::to_bytes(&unlock_duration).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&unlock_numerators).unwrap(), bcs::to_bytes(&unlock_denominator).unwrap(), bcs::to_bytes(&unlock_start_time).unwrap(), bcs::to_bytes(&unlock_duration).unwrap()], )) } -pub fn pbo_delegation_pool_update_unlocking_schedule_unchecked( - pool_address: AccountAddress, - unlock_numerators: Vec, - unlock_denominator: u64, - unlock_start_time: u64, - unlock_duration: u64, - last_unlock_period: u64, -) -> TransactionPayload { + +pub fn pbo_delegation_pool_update_unlocking_schedule_unchecked(pool_address: AccountAddress, unlock_numerators: Vec, unlock_denominator: u64, unlock_start_time: u64, unlock_duration: u64, last_unlock_period: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("update_unlocking_schedule_unchecked").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&unlock_numerators).unwrap(), - bcs::to_bytes(&unlock_denominator).unwrap(), - bcs::to_bytes(&unlock_start_time).unwrap(), - bcs::to_bytes(&unlock_duration).unwrap(), - bcs::to_bytes(&last_unlock_period).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&unlock_numerators).unwrap(), bcs::to_bytes(&unlock_denominator).unwrap(), bcs::to_bytes(&unlock_start_time).unwrap(), bcs::to_bytes(&unlock_duration).unwrap(), bcs::to_bytes(&last_unlock_period).unwrap()], )) } /// Withdraw `amount` of owned inactive stake from the delegation pool at `pool_address`. -pub fn pbo_delegation_pool_withdraw( - pool_address: AccountAddress, - amount: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_withdraw(pool_address: AccountAddress, amount: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("withdraw").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&amount).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&amount).unwrap()], )) } /// Creates a new resource account and rotates the authentication key to either /// the optional auth key if it is non-empty (though auth keys are 32-bytes) /// or the source accounts current auth key. -pub fn resource_account_create_resource_account( - seed: Vec, - optional_auth_key: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("resource_account").to_owned(), - ), +pub fn resource_account_create_resource_account(seed: Vec, optional_auth_key: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("resource_account").to_owned(), + ), ident_str!("create_resource_account").to_owned(), vec![], - vec![ - bcs::to_bytes(&seed).unwrap(), - bcs::to_bytes(&optional_auth_key).unwrap(), - ], + vec![bcs::to_bytes(&seed).unwrap(), bcs::to_bytes(&optional_auth_key).unwrap()], )) } @@ -4037,51 +2662,29 @@ pub fn resource_account_create_resource_account( /// non-empty (though auth keys are 32-bytes) or the source accounts current auth key. Note, /// this function adds additional resource ownership to the resource account and should only be /// used for resource accounts that need access to `Coin`. -pub fn resource_account_create_resource_account_and_fund( - seed: Vec, - optional_auth_key: Vec, - fund_amount: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("resource_account").to_owned(), - ), +pub fn resource_account_create_resource_account_and_fund(seed: Vec, optional_auth_key: Vec, fund_amount: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("resource_account").to_owned(), + ), ident_str!("create_resource_account_and_fund").to_owned(), vec![], - vec![ - bcs::to_bytes(&seed).unwrap(), - bcs::to_bytes(&optional_auth_key).unwrap(), - bcs::to_bytes(&fund_amount).unwrap(), - ], + vec![bcs::to_bytes(&seed).unwrap(), bcs::to_bytes(&optional_auth_key).unwrap(), bcs::to_bytes(&fund_amount).unwrap()], )) } /// Creates a new resource account, publishes the package under this account transaction under /// this account and leaves the signer cap readily available for pickup. -pub fn resource_account_create_resource_account_and_publish_package( - seed: Vec, - metadata_serialized: Vec, - code: Vec>, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("resource_account").to_owned(), - ), +pub fn resource_account_create_resource_account_and_publish_package(seed: Vec, metadata_serialized: Vec, code: Vec>) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("resource_account").to_owned(), + ), ident_str!("create_resource_account_and_publish_package").to_owned(), vec![], - vec![ - bcs::to_bytes(&seed).unwrap(), - bcs::to_bytes(&metadata_serialized).unwrap(), - bcs::to_bytes(&code).unwrap(), - ], + vec![bcs::to_bytes(&seed).unwrap(), bcs::to_bytes(&metadata_serialized).unwrap(), bcs::to_bytes(&code).unwrap()], )) } @@ -4089,12 +2692,9 @@ pub fn resource_account_create_resource_account_and_publish_package( pub fn stake_add_stake(amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("add_stake").to_owned(), vec![], vec![bcs::to_bytes(&amount).unwrap()], @@ -4105,12 +2705,9 @@ pub fn stake_add_stake(amount: u64) -> TransactionPayload { pub fn stake_increase_lockup() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("increase_lockup").to_owned(), vec![], vec![], @@ -4121,50 +2718,28 @@ pub fn stake_increase_lockup() -> TransactionPayload { /// except it leaves the ValidatorConfig to be set by another entity. /// Note: this triggers setting the operator and owner, set it to the account's address /// to set later. -pub fn stake_initialize_stake_owner( - initial_stake_amount: u64, - operator: AccountAddress, - voter: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), +pub fn stake_initialize_stake_owner(initial_stake_amount: u64, operator: AccountAddress, voter: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("initialize_stake_owner").to_owned(), vec![], - vec![ - bcs::to_bytes(&initial_stake_amount).unwrap(), - bcs::to_bytes(&operator).unwrap(), - bcs::to_bytes(&voter).unwrap(), - ], + vec![bcs::to_bytes(&initial_stake_amount).unwrap(), bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&voter).unwrap()], )) } /// Initialize the validator account and give ownership to the signing account. -pub fn stake_initialize_validator( - consensus_pubkey: Vec, - network_addresses: Vec, - fullnode_addresses: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), +pub fn stake_initialize_validator(consensus_pubkey: Vec, network_addresses: Vec, fullnode_addresses: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("initialize_validator").to_owned(), vec![], - vec![ - bcs::to_bytes(&consensus_pubkey).unwrap(), - bcs::to_bytes(&network_addresses).unwrap(), - bcs::to_bytes(&fullnode_addresses).unwrap(), - ], + vec![bcs::to_bytes(&consensus_pubkey).unwrap(), bcs::to_bytes(&network_addresses).unwrap(), bcs::to_bytes(&fullnode_addresses).unwrap()], )) } @@ -4172,12 +2747,9 @@ pub fn stake_initialize_validator( pub fn stake_join_validator_set(pool_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("join_validator_set").to_owned(), vec![], vec![bcs::to_bytes(&pool_address).unwrap()], @@ -4193,12 +2765,9 @@ pub fn stake_join_validator_set(pool_address: AccountAddress) -> TransactionPayl pub fn stake_leave_validator_set(pool_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("leave_validator_set").to_owned(), vec![], vec![bcs::to_bytes(&pool_address).unwrap()], @@ -4209,12 +2778,9 @@ pub fn stake_leave_validator_set(pool_address: AccountAddress) -> TransactionPay pub fn stake_reactivate_stake(amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("reactivate_stake").to_owned(), vec![], vec![bcs::to_bytes(&amount).unwrap()], @@ -4222,24 +2788,15 @@ pub fn stake_reactivate_stake(amount: u64) -> TransactionPayload { } /// Rotate the consensus key of the validator, it'll take effect in next epoch. -pub fn stake_rotate_consensus_key( - pool_address: AccountAddress, - new_consensus_pubkey: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), +pub fn stake_rotate_consensus_key(pool_address: AccountAddress, new_consensus_pubkey: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("rotate_consensus_key").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&new_consensus_pubkey).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&new_consensus_pubkey).unwrap()], )) } @@ -4247,12 +2804,9 @@ pub fn stake_rotate_consensus_key( pub fn stake_set_delegated_voter(new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("set_delegated_voter").to_owned(), vec![], vec![bcs::to_bytes(&new_voter).unwrap()], @@ -4263,12 +2817,9 @@ pub fn stake_set_delegated_voter(new_voter: AccountAddress) -> TransactionPayloa pub fn stake_set_operator(new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("set_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_operator).unwrap()], @@ -4279,12 +2830,9 @@ pub fn stake_set_operator(new_operator: AccountAddress) -> TransactionPayload { pub fn stake_unlock(amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("unlock").to_owned(), vec![], vec![bcs::to_bytes(&amount).unwrap()], @@ -4292,26 +2840,15 @@ pub fn stake_unlock(amount: u64) -> TransactionPayload { } /// Update the network and full node addresses of the validator. This only takes effect in the next epoch. -pub fn stake_update_network_and_fullnode_addresses( - pool_address: AccountAddress, - new_network_addresses: Vec, - new_fullnode_addresses: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), +pub fn stake_update_network_and_fullnode_addresses(pool_address: AccountAddress, new_network_addresses: Vec, new_fullnode_addresses: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("update_network_and_fullnode_addresses").to_owned(), vec![], - vec![ - bcs::to_bytes(&pool_address).unwrap(), - bcs::to_bytes(&new_network_addresses).unwrap(), - bcs::to_bytes(&new_fullnode_addresses).unwrap(), - ], + vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&new_network_addresses).unwrap(), bcs::to_bytes(&new_fullnode_addresses).unwrap()], )) } @@ -4319,12 +2856,9 @@ pub fn stake_update_network_and_fullnode_addresses( pub fn stake_withdraw(withdraw_amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("stake").to_owned(), + ), ident_str!("withdraw").to_owned(), vec![], vec![bcs::to_bytes(&withdraw_amount).unwrap()], @@ -4335,69 +2869,39 @@ pub fn stake_withdraw(withdraw_amount: u64) -> TransactionPayload { pub fn staking_contract_add_stake(operator: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("add_stake").to_owned(), vec![], - vec![ - bcs::to_bytes(&operator).unwrap(), - bcs::to_bytes(&amount).unwrap(), - ], + vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&amount).unwrap()], )) } /// Staker can call this function to create a simple staking contract with a specified operator. -pub fn staking_contract_create_staking_contract( - operator: AccountAddress, - voter: AccountAddress, - amount: u64, - commission_percentage: u64, - contract_creation_seed: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_create_staking_contract(operator: AccountAddress, voter: AccountAddress, amount: u64, commission_percentage: u64, contract_creation_seed: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("create_staking_contract").to_owned(), vec![], - vec![ - bcs::to_bytes(&operator).unwrap(), - bcs::to_bytes(&voter).unwrap(), - bcs::to_bytes(&amount).unwrap(), - bcs::to_bytes(&commission_percentage).unwrap(), - bcs::to_bytes(&contract_creation_seed).unwrap(), - ], + vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&voter).unwrap(), bcs::to_bytes(&amount).unwrap(), bcs::to_bytes(&commission_percentage).unwrap(), bcs::to_bytes(&contract_creation_seed).unwrap()], )) } /// Allow anyone to distribute already unlocked funds. This does not affect reward compounding and therefore does /// not need to be restricted to just the staker or operator. -pub fn staking_contract_distribute( - staker: AccountAddress, - operator: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_distribute(staker: AccountAddress, operator: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("distribute").to_owned(), vec![], - vec![ - bcs::to_bytes(&staker).unwrap(), - bcs::to_bytes(&operator).unwrap(), - ], + vec![bcs::to_bytes(&staker).unwrap(), bcs::to_bytes(&operator).unwrap()], )) } @@ -4405,24 +2909,15 @@ pub fn staking_contract_distribute( /// at the end of the stake pool's lockup period before they can actually can withdraw_commission. /// /// Only staker, operator or beneficiary can call this. -pub fn staking_contract_request_commission( - staker: AccountAddress, - operator: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_request_commission(staker: AccountAddress, operator: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("request_commission").to_owned(), vec![], - vec![ - bcs::to_bytes(&staker).unwrap(), - bcs::to_bytes(&operator).unwrap(), - ], + vec![bcs::to_bytes(&staker).unwrap(), bcs::to_bytes(&operator).unwrap()], )) } @@ -4430,12 +2925,9 @@ pub fn staking_contract_request_commission( pub fn staking_contract_reset_lockup(operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("reset_lockup").to_owned(), vec![], vec![bcs::to_bytes(&operator).unwrap()], @@ -4445,17 +2937,12 @@ pub fn staking_contract_reset_lockup(operator: AccountAddress) -> TransactionPay /// Allows an operator to change its beneficiary. Any existing unpaid commission rewards will be paid to the new /// beneficiary. To ensures payment to the current beneficiary, one should first call `distribute` before switching /// the beneficiary. An operator can set one beneficiary for staking contract pools, not a separate one for each pool. -pub fn staking_contract_set_beneficiary_for_operator( - new_beneficiary: AccountAddress, -) -> TransactionPayload { +pub fn staking_contract_set_beneficiary_for_operator(new_beneficiary: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("set_beneficiary_for_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_beneficiary).unwrap()], @@ -4463,48 +2950,28 @@ pub fn staking_contract_set_beneficiary_for_operator( } /// Allows staker to switch operator without going through the lenghthy process to unstake. -pub fn staking_contract_switch_operator( - old_operator: AccountAddress, - new_operator: AccountAddress, - new_commission_percentage: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_switch_operator(old_operator: AccountAddress, new_operator: AccountAddress, new_commission_percentage: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("switch_operator").to_owned(), vec![], - vec![ - bcs::to_bytes(&old_operator).unwrap(), - bcs::to_bytes(&new_operator).unwrap(), - bcs::to_bytes(&new_commission_percentage).unwrap(), - ], + vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap(), bcs::to_bytes(&new_commission_percentage).unwrap()], )) } /// Allows staker to switch operator without going through the lenghthy process to unstake, without resetting commission. -pub fn staking_contract_switch_operator_with_same_commission( - old_operator: AccountAddress, - new_operator: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_switch_operator_with_same_commission(old_operator: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("switch_operator_with_same_commission").to_owned(), vec![], - vec![ - bcs::to_bytes(&old_operator).unwrap(), - bcs::to_bytes(&new_operator).unwrap(), - ], + vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap()], )) } @@ -4512,12 +2979,9 @@ pub fn staking_contract_switch_operator_with_same_commission( pub fn staking_contract_unlock_rewards(operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("unlock_rewards").to_owned(), vec![], vec![bcs::to_bytes(&operator).unwrap()], @@ -4529,264 +2993,169 @@ pub fn staking_contract_unlock_rewards(operator: AccountAddress) -> TransactionP pub fn staking_contract_unlock_stake(operator: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("unlock_stake").to_owned(), vec![], - vec![ - bcs::to_bytes(&operator).unwrap(), - bcs::to_bytes(&amount).unwrap(), - ], + vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&amount).unwrap()], )) } /// Convenience function to allow a staker to update the commission percentage paid to the operator. /// TODO: fix the typo in function name. commision -> commission -pub fn staking_contract_update_commision( - operator: AccountAddress, - new_commission_percentage: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_update_commision(operator: AccountAddress, new_commission_percentage: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("update_commision").to_owned(), vec![], - vec![ - bcs::to_bytes(&operator).unwrap(), - bcs::to_bytes(&new_commission_percentage).unwrap(), - ], + vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_commission_percentage).unwrap()], )) } /// Convenient function to allow the staker to update the voter address in a staking contract they made. -pub fn staking_contract_update_voter( - operator: AccountAddress, - new_voter: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_update_voter(operator: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("update_voter").to_owned(), vec![], - vec![ - bcs::to_bytes(&operator).unwrap(), - bcs::to_bytes(&new_voter).unwrap(), - ], + vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_voter).unwrap()], )) } -pub fn staking_proxy_set_operator( - old_operator: AccountAddress, - new_operator: AccountAddress, -) -> TransactionPayload { + +pub fn staking_proxy_set_operator(old_operator: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_operator").to_owned(), vec![], - vec![ - bcs::to_bytes(&old_operator).unwrap(), - bcs::to_bytes(&new_operator).unwrap(), - ], + vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap()], )) } + pub fn staking_proxy_set_stake_pool_operator(new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_stake_pool_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_operator).unwrap()], )) } + pub fn staking_proxy_set_stake_pool_voter(new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_stake_pool_voter").to_owned(), vec![], vec![bcs::to_bytes(&new_voter).unwrap()], )) } -pub fn staking_proxy_set_staking_contract_operator( - old_operator: AccountAddress, - new_operator: AccountAddress, -) -> TransactionPayload { + +pub fn staking_proxy_set_staking_contract_operator(old_operator: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_staking_contract_operator").to_owned(), vec![], - vec![ - bcs::to_bytes(&old_operator).unwrap(), - bcs::to_bytes(&new_operator).unwrap(), - ], + vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap()], )) } -pub fn staking_proxy_set_staking_contract_voter( - operator: AccountAddress, - new_voter: AccountAddress, -) -> TransactionPayload { + +pub fn staking_proxy_set_staking_contract_voter(operator: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_staking_contract_voter").to_owned(), vec![], - vec![ - bcs::to_bytes(&operator).unwrap(), - bcs::to_bytes(&new_voter).unwrap(), - ], + vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_voter).unwrap()], )) } -pub fn staking_proxy_set_vesting_contract_operator( - old_operator: AccountAddress, - new_operator: AccountAddress, -) -> TransactionPayload { + +pub fn staking_proxy_set_vesting_contract_operator(old_operator: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_vesting_contract_operator").to_owned(), vec![], - vec![ - bcs::to_bytes(&old_operator).unwrap(), - bcs::to_bytes(&new_operator).unwrap(), - ], + vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap()], )) } -pub fn staking_proxy_set_vesting_contract_voter( - operator: AccountAddress, - new_voter: AccountAddress, -) -> TransactionPayload { + +pub fn staking_proxy_set_vesting_contract_voter(operator: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_vesting_contract_voter").to_owned(), vec![], - vec![ - bcs::to_bytes(&operator).unwrap(), - bcs::to_bytes(&new_voter).unwrap(), - ], + vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_voter).unwrap()], )) } -pub fn staking_proxy_set_voter( - operator: AccountAddress, - new_voter: AccountAddress, -) -> TransactionPayload { + +pub fn staking_proxy_set_voter(operator: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_voter").to_owned(), vec![], - vec![ - bcs::to_bytes(&operator).unwrap(), - bcs::to_bytes(&new_voter).unwrap(), - ], + vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_voter).unwrap()], )) } /// Batch version of SUPRA transfer. -pub fn supra_account_batch_transfer( - recipients: Vec, - amounts: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_account").to_owned(), - ), +pub fn supra_account_batch_transfer(recipients: Vec, amounts: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_account").to_owned(), + ), ident_str!("batch_transfer").to_owned(), vec![], - vec![ - bcs::to_bytes(&recipients).unwrap(), - bcs::to_bytes(&amounts).unwrap(), - ], + vec![bcs::to_bytes(&recipients).unwrap(), bcs::to_bytes(&amounts).unwrap()], )) } /// Batch version of transfer_coins. -pub fn supra_account_batch_transfer_coins( - coin_type: TypeTag, - recipients: Vec, - amounts: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_account").to_owned(), - ), +pub fn supra_account_batch_transfer_coins(coin_type: TypeTag, recipients: Vec, amounts: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_account").to_owned(), + ), ident_str!("batch_transfer_coins").to_owned(), vec![coin_type], - vec![ - bcs::to_bytes(&recipients).unwrap(), - bcs::to_bytes(&amounts).unwrap(), - ], + vec![bcs::to_bytes(&recipients).unwrap(), bcs::to_bytes(&amounts).unwrap()], )) } @@ -4794,12 +3163,9 @@ pub fn supra_account_batch_transfer_coins( pub fn supra_account_create_account(auth_key: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_account").to_owned(), + ), ident_str!("create_account").to_owned(), vec![], vec![bcs::to_bytes(&auth_key).unwrap()], @@ -4810,12 +3176,9 @@ pub fn supra_account_create_account(auth_key: AccountAddress) -> TransactionPayl pub fn supra_account_set_allow_direct_coin_transfers(allow: bool) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_account").to_owned(), + ), ident_str!("set_allow_direct_coin_transfers").to_owned(), vec![], vec![bcs::to_bytes(&allow).unwrap()], @@ -4827,12 +3190,9 @@ pub fn supra_account_set_allow_direct_coin_transfers(allow: bool) -> Transaction pub fn supra_account_transfer(to: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_account").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_account").to_owned(), + ), ident_str!("transfer").to_owned(), vec![], vec![bcs::to_bytes(&to).unwrap(), bcs::to_bytes(&amount).unwrap()], @@ -4841,19 +3201,12 @@ pub fn supra_account_transfer(to: AccountAddress, amount: u64) -> TransactionPay /// Convenient function to transfer a custom CoinType to a recipient account that might not exist. /// This would create the recipient account first and register it to receive the CoinType, before transferring. -pub fn supra_account_transfer_coins( - coin_type: TypeTag, - to: AccountAddress, - amount: u64, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_account").to_owned(), - ), +pub fn supra_account_transfer_coins(coin_type: TypeTag, to: AccountAddress, amount: u64) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_account").to_owned(), + ), ident_str!("transfer_coins").to_owned(), vec![coin_type], vec![bcs::to_bytes(&to).unwrap(), bcs::to_bytes(&amount).unwrap()], @@ -4865,12 +3218,9 @@ pub fn supra_account_transfer_coins( pub fn supra_coin_claim_mint_capability() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_coin").to_owned(), + ), ident_str!("claim_mint_capability").to_owned(), vec![], vec![], @@ -4882,12 +3232,9 @@ pub fn supra_coin_claim_mint_capability() -> TransactionPayload { pub fn supra_coin_delegate_mint_capability(to: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_coin").to_owned(), + ), ident_str!("delegate_mint_capability").to_owned(), vec![], vec![bcs::to_bytes(&to).unwrap()], @@ -4899,32 +3246,22 @@ pub fn supra_coin_delegate_mint_capability(to: AccountAddress) -> TransactionPay pub fn supra_coin_mint(dst_addr: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_coin").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_coin").to_owned(), + ), ident_str!("mint").to_owned(), vec![], - vec![ - bcs::to_bytes(&dst_addr).unwrap(), - bcs::to_bytes(&amount).unwrap(), - ], + vec![bcs::to_bytes(&dst_addr).unwrap(), bcs::to_bytes(&amount).unwrap()], )) } -pub fn supra_governance_add_supra_approved_script_hash_script( - proposal_id: u64, -) -> TransactionPayload { + +pub fn supra_governance_add_supra_approved_script_hash_script(proposal_id: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("add_supra_approved_script_hash_script").to_owned(), vec![], vec![bcs::to_bytes(&proposal_id).unwrap()], @@ -4940,12 +3277,9 @@ pub fn supra_governance_add_supra_approved_script_hash_script( pub fn supra_governance_force_end_epoch() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("force_end_epoch").to_owned(), vec![], vec![], @@ -4957,12 +3291,9 @@ pub fn supra_governance_force_end_epoch() -> TransactionPayload { pub fn supra_governance_force_end_epoch_test_only() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("force_end_epoch_test_only").to_owned(), vec![], vec![], @@ -4981,12 +3312,9 @@ pub fn supra_governance_force_end_epoch_test_only() -> TransactionPayload { pub fn supra_governance_reconfigure() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("reconfigure").to_owned(), vec![], vec![], @@ -4996,54 +3324,30 @@ pub fn supra_governance_reconfigure() -> TransactionPayload { /// Create a single-step proposal with the backing `stake_pool`. /// @param execution_hash Required. This is the hash of the resolution script. When the proposal is resolved, /// only the exact script with matching hash can be successfully executed. -pub fn supra_governance_supra_create_proposal( - execution_hash: Vec, - metadata_location: Vec, - metadata_hash: Vec, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_governance").to_owned(), - ), +pub fn supra_governance_supra_create_proposal(execution_hash: Vec, metadata_location: Vec, metadata_hash: Vec) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("supra_create_proposal").to_owned(), vec![], - vec![ - bcs::to_bytes(&execution_hash).unwrap(), - bcs::to_bytes(&metadata_location).unwrap(), - bcs::to_bytes(&metadata_hash).unwrap(), - ], + vec![bcs::to_bytes(&execution_hash).unwrap(), bcs::to_bytes(&metadata_location).unwrap(), bcs::to_bytes(&metadata_hash).unwrap()], )) } /// Create a single-step or multi-step proposal with the backing `stake_pool`. /// @param execution_hash Required. This is the hash of the resolution script. When the proposal is resolved, /// only the exact script with matching hash can be successfully executed. -pub fn supra_governance_supra_create_proposal_v2( - execution_hash: Vec, - metadata_location: Vec, - metadata_hash: Vec, - is_multi_step_proposal: bool, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_governance").to_owned(), - ), +pub fn supra_governance_supra_create_proposal_v2(execution_hash: Vec, metadata_location: Vec, metadata_hash: Vec, is_multi_step_proposal: bool) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("supra_create_proposal_v2").to_owned(), vec![], - vec![ - bcs::to_bytes(&execution_hash).unwrap(), - bcs::to_bytes(&metadata_location).unwrap(), - bcs::to_bytes(&metadata_hash).unwrap(), - bcs::to_bytes(&is_multi_step_proposal).unwrap(), - ], + vec![bcs::to_bytes(&execution_hash).unwrap(), bcs::to_bytes(&metadata_location).unwrap(), bcs::to_bytes(&metadata_hash).unwrap(), bcs::to_bytes(&is_multi_step_proposal).unwrap()], )) } @@ -5051,30 +3355,22 @@ pub fn supra_governance_supra_create_proposal_v2( pub fn supra_governance_supra_vote(proposal_id: u64, should_pass: bool) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("supra_vote").to_owned(), vec![], - vec![ - bcs::to_bytes(&proposal_id).unwrap(), - bcs::to_bytes(&should_pass).unwrap(), - ], + vec![bcs::to_bytes(&proposal_id).unwrap(), bcs::to_bytes(&should_pass).unwrap()], )) } + pub fn transaction_fee_convert_to_aptos_fa_burn_ref() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("transaction_fee").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("transaction_fee").to_owned(), + ), ident_str!("convert_to_aptos_fa_burn_ref").to_owned(), vec![], vec![], @@ -5088,12 +3384,9 @@ pub fn transaction_fee_convert_to_aptos_fa_burn_ref() -> TransactionPayload { pub fn version_set_for_next_epoch(major: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("version").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("version").to_owned(), + ), ident_str!("set_for_next_epoch").to_owned(), vec![], vec![bcs::to_bytes(&major).unwrap()], @@ -5108,12 +3401,9 @@ pub fn version_set_for_next_epoch(major: u64) -> TransactionPayload { pub fn version_set_version(major: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("version").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("version").to_owned(), + ), ident_str!("set_version").to_owned(), vec![], vec![bcs::to_bytes(&major).unwrap()], @@ -5125,12 +3415,9 @@ pub fn version_set_version(major: u64) -> TransactionPayload { pub fn vesting_admin_withdraw(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("admin_withdraw").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -5141,12 +3428,9 @@ pub fn vesting_admin_withdraw(contract_address: AccountAddress) -> TransactionPa pub fn vesting_distribute(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("distribute").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -5157,12 +3441,9 @@ pub fn vesting_distribute(contract_address: AccountAddress) -> TransactionPayloa pub fn vesting_distribute_many(contract_addresses: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("distribute_many").to_owned(), vec![], vec![bcs::to_bytes(&contract_addresses).unwrap()], @@ -5171,62 +3452,41 @@ pub fn vesting_distribute_many(contract_addresses: Vec) -> Trans /// Remove the beneficiary for the given shareholder. All distributions will sent directly to the shareholder /// account. -pub fn vesting_reset_beneficiary( - contract_address: AccountAddress, - shareholder: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), +pub fn vesting_reset_beneficiary(contract_address: AccountAddress, shareholder: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("reset_beneficiary").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&shareholder).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder).unwrap()], )) } + pub fn vesting_reset_lockup(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("reset_lockup").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], )) } -pub fn vesting_set_beneficiary( - contract_address: AccountAddress, - shareholder: AccountAddress, - new_beneficiary: AccountAddress, -) -> TransactionPayload { + +pub fn vesting_set_beneficiary(contract_address: AccountAddress, shareholder: AccountAddress, new_beneficiary: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("set_beneficiary").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&shareholder).unwrap(), - bcs::to_bytes(&new_beneficiary).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder).unwrap(), bcs::to_bytes(&new_beneficiary).unwrap()], )) } @@ -5234,59 +3494,38 @@ pub fn vesting_set_beneficiary( pub fn vesting_set_beneficiary_for_operator(new_beneficiary: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("set_beneficiary_for_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_beneficiary).unwrap()], )) } -pub fn vesting_set_beneficiary_resetter( - contract_address: AccountAddress, - beneficiary_resetter: AccountAddress, -) -> TransactionPayload { + +pub fn vesting_set_beneficiary_resetter(contract_address: AccountAddress, beneficiary_resetter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("set_beneficiary_resetter").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&beneficiary_resetter).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&beneficiary_resetter).unwrap()], )) } -pub fn vesting_set_management_role( - contract_address: AccountAddress, - role: Vec, - role_holder: AccountAddress, -) -> TransactionPayload { + +pub fn vesting_set_management_role(contract_address: AccountAddress, role: Vec, role_holder: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("set_management_role").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&role).unwrap(), - bcs::to_bytes(&role_holder).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&role).unwrap(), bcs::to_bytes(&role_holder).unwrap()], )) } @@ -5294,12 +3533,9 @@ pub fn vesting_set_management_role( pub fn vesting_terminate_vesting_contract(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("terminate_vesting_contract").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -5310,12 +3546,9 @@ pub fn vesting_terminate_vesting_contract(contract_address: AccountAddress) -> T pub fn vesting_unlock_rewards(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("unlock_rewards").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -5326,101 +3559,64 @@ pub fn vesting_unlock_rewards(contract_address: AccountAddress) -> TransactionPa pub fn vesting_unlock_rewards_many(contract_addresses: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("unlock_rewards_many").to_owned(), vec![], vec![bcs::to_bytes(&contract_addresses).unwrap()], )) } -pub fn vesting_update_commission_percentage( - contract_address: AccountAddress, - new_commission_percentage: u64, -) -> TransactionPayload { + +pub fn vesting_update_commission_percentage(contract_address: AccountAddress, new_commission_percentage: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("update_commission_percentage").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&new_commission_percentage).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&new_commission_percentage).unwrap()], )) } -pub fn vesting_update_operator( - contract_address: AccountAddress, - new_operator: AccountAddress, - commission_percentage: u64, -) -> TransactionPayload { + +pub fn vesting_update_operator(contract_address: AccountAddress, new_operator: AccountAddress, commission_percentage: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("update_operator").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&new_operator).unwrap(), - bcs::to_bytes(&commission_percentage).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&new_operator).unwrap(), bcs::to_bytes(&commission_percentage).unwrap()], )) } -pub fn vesting_update_operator_with_same_commission( - contract_address: AccountAddress, - new_operator: AccountAddress, -) -> TransactionPayload { + +pub fn vesting_update_operator_with_same_commission(contract_address: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("update_operator_with_same_commission").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&new_operator).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&new_operator).unwrap()], )) } -pub fn vesting_update_voter( - contract_address: AccountAddress, - new_voter: AccountAddress, -) -> TransactionPayload { + +pub fn vesting_update_voter(contract_address: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("update_voter").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&new_voter).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&new_voter).unwrap()], )) } @@ -5428,12 +3624,9 @@ pub fn vesting_update_voter( pub fn vesting_vest(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("vest").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -5444,241 +3637,142 @@ pub fn vesting_vest(contract_address: AccountAddress) -> TransactionPayload { pub fn vesting_vest_many(contract_addresses: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting").to_owned(), + ), ident_str!("vest_many").to_owned(), vec![], vec![bcs::to_bytes(&contract_addresses).unwrap()], )) } -pub fn vesting_without_staking_admin_delay_vesting( - contract_address: AccountAddress, - delay_periods: u64, -) -> TransactionPayload { + +pub fn vesting_without_staking_admin_delay_vesting(contract_address: AccountAddress, delay_periods: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("admin_delay_vesting").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&delay_periods).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&delay_periods).unwrap()], )) } /// Withdraw all funds to the preset vesting contract's withdrawal address. This can only be called if the contract /// has already been terminated. -pub fn vesting_without_staking_admin_withdraw( - contract_address: AccountAddress, -) -> TransactionPayload { +pub fn vesting_without_staking_admin_withdraw(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("admin_withdraw").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], )) } -pub fn vesting_without_staking_create_vesting_contract_with_amounts( - shareholders: Vec, - shares: Vec, - vesting_numerators: Vec, - vesting_denominator: u64, - start_timestamp_secs: u64, - period_duration: u64, - withdrawal_address: AccountAddress, - contract_creation_seed: Vec, -) -> TransactionPayload { + +pub fn vesting_without_staking_create_vesting_contract_with_amounts(shareholders: Vec, shares: Vec, vesting_numerators: Vec, vesting_denominator: u64, start_timestamp_secs: u64, period_duration: u64, withdrawal_address: AccountAddress, contract_creation_seed: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("create_vesting_contract_with_amounts").to_owned(), vec![], - vec![ - bcs::to_bytes(&shareholders).unwrap(), - bcs::to_bytes(&shares).unwrap(), - bcs::to_bytes(&vesting_numerators).unwrap(), - bcs::to_bytes(&vesting_denominator).unwrap(), - bcs::to_bytes(&start_timestamp_secs).unwrap(), - bcs::to_bytes(&period_duration).unwrap(), - bcs::to_bytes(&withdrawal_address).unwrap(), - bcs::to_bytes(&contract_creation_seed).unwrap(), - ], + vec![bcs::to_bytes(&shareholders).unwrap(), bcs::to_bytes(&shares).unwrap(), bcs::to_bytes(&vesting_numerators).unwrap(), bcs::to_bytes(&vesting_denominator).unwrap(), bcs::to_bytes(&start_timestamp_secs).unwrap(), bcs::to_bytes(&period_duration).unwrap(), bcs::to_bytes(&withdrawal_address).unwrap(), bcs::to_bytes(&contract_creation_seed).unwrap()], )) } /// Remove the lockup period for the vesting contract. This can only be called by the admin of the vesting contract. /// Example usage: If admin find shareholder suspicious, admin can remove it. -pub fn vesting_without_staking_remove_shareholder( - contract_address: AccountAddress, - shareholder_address: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), +pub fn vesting_without_staking_remove_shareholder(contract_address: AccountAddress, shareholder_address: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("remove_shareholder").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&shareholder_address).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder_address).unwrap()], )) } /// Remove the beneficiary for the given shareholder. All distributions will sent directly to the shareholder /// account. -pub fn vesting_without_staking_reset_beneficiary( - contract_address: AccountAddress, - shareholder: AccountAddress, -) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), +pub fn vesting_without_staking_reset_beneficiary(contract_address: AccountAddress, shareholder: AccountAddress) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("reset_beneficiary").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&shareholder).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder).unwrap()], )) } -pub fn vesting_without_staking_set_beneficiary( - contract_address: AccountAddress, - shareholder: AccountAddress, - new_beneficiary: AccountAddress, -) -> TransactionPayload { + +pub fn vesting_without_staking_set_beneficiary(contract_address: AccountAddress, shareholder: AccountAddress, new_beneficiary: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("set_beneficiary").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&shareholder).unwrap(), - bcs::to_bytes(&new_beneficiary).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder).unwrap(), bcs::to_bytes(&new_beneficiary).unwrap()], )) } -pub fn vesting_without_staking_set_beneficiary_resetter( - contract_address: AccountAddress, - beneficiary_resetter: AccountAddress, -) -> TransactionPayload { + +pub fn vesting_without_staking_set_beneficiary_resetter(contract_address: AccountAddress, beneficiary_resetter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("set_beneficiary_resetter").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&beneficiary_resetter).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&beneficiary_resetter).unwrap()], )) } -pub fn vesting_without_staking_set_management_role( - contract_address: AccountAddress, - role: Vec, - role_holder: AccountAddress, -) -> TransactionPayload { + +pub fn vesting_without_staking_set_management_role(contract_address: AccountAddress, role: Vec, role_holder: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("set_management_role").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&role).unwrap(), - bcs::to_bytes(&role_holder).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&role).unwrap(), bcs::to_bytes(&role_holder).unwrap()], )) } -pub fn vesting_without_staking_set_vesting_schedule( - contract_address: AccountAddress, - vesting_numerators: Vec, - vesting_denominator: u64, - period_duration: u64, -) -> TransactionPayload { + +pub fn vesting_without_staking_set_vesting_schedule(contract_address: AccountAddress, vesting_numerators: Vec, vesting_denominator: u64, period_duration: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("set_vesting_schedule").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&vesting_numerators).unwrap(), - bcs::to_bytes(&vesting_denominator).unwrap(), - bcs::to_bytes(&period_duration).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&vesting_numerators).unwrap(), bcs::to_bytes(&vesting_denominator).unwrap(), bcs::to_bytes(&period_duration).unwrap()], )) } /// Terminate the vesting contract and send all funds back to the withdrawal address. -pub fn vesting_without_staking_terminate_vesting_contract( - contract_address: AccountAddress, -) -> TransactionPayload { +pub fn vesting_without_staking_terminate_vesting_contract(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("terminate_vesting_contract").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -5689,948 +3783,805 @@ pub fn vesting_without_staking_terminate_vesting_contract( pub fn vesting_without_staking_vest(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("vest").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], )) } -pub fn vesting_without_staking_vest_individual( - contract_address: AccountAddress, - shareholder_address: AccountAddress, -) -> TransactionPayload { + +pub fn vesting_without_staking_vest_individual(contract_address: AccountAddress, shareholder_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - ]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("vest_individual").to_owned(), vec![], - vec![ - bcs::to_bytes(&contract_address).unwrap(), - bcs::to_bytes(&shareholder_address).unwrap(), - ], + vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder_address).unwrap()], )) } -mod decoder { - use super::*; - pub fn account_offer_rotation_capability( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountOfferRotationCapability { - rotation_capability_sig_bytes: bcs::from_bytes(script.args().get(0)?).ok()?, - account_scheme: bcs::from_bytes(script.args().get(1)?).ok()?, - account_public_key_bytes: bcs::from_bytes(script.args().get(2)?).ok()?, - recipient_address: bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None - } +mod decoder { use super::*; +pub fn account_offer_rotation_capability(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountOfferRotationCapability { + rotation_capability_sig_bytes : bcs::from_bytes(script.args().get(0)?).ok()?, + account_scheme : bcs::from_bytes(script.args().get(1)?).ok()?, + account_public_key_bytes : bcs::from_bytes(script.args().get(2)?).ok()?, + recipient_address : bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None } +} - pub fn account_offer_signer_capability( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountOfferSignerCapability { - signer_capability_sig_bytes: bcs::from_bytes(script.args().get(0)?).ok()?, - account_scheme: bcs::from_bytes(script.args().get(1)?).ok()?, - account_public_key_bytes: bcs::from_bytes(script.args().get(2)?).ok()?, - recipient_address: bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None - } +pub fn account_offer_signer_capability(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountOfferSignerCapability { + signer_capability_sig_bytes : bcs::from_bytes(script.args().get(0)?).ok()?, + account_scheme : bcs::from_bytes(script.args().get(1)?).ok()?, + account_public_key_bytes : bcs::from_bytes(script.args().get(2)?).ok()?, + recipient_address : bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None } +} - pub fn account_revoke_any_rotation_capability( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::AccountRevokeAnyRotationCapability {}) - } else { - None - } +pub fn account_revoke_any_rotation_capability(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::AccountRevokeAnyRotationCapability { + }) + } else { + None } +} - pub fn account_revoke_any_signer_capability( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::AccountRevokeAnySignerCapability {}) - } else { - None - } +pub fn account_revoke_any_signer_capability(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::AccountRevokeAnySignerCapability { + }) + } else { + None } +} - pub fn account_revoke_rotation_capability( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountRevokeRotationCapability { - to_be_revoked_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn account_revoke_rotation_capability(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountRevokeRotationCapability { + to_be_revoked_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn account_revoke_signer_capability( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountRevokeSignerCapability { - to_be_revoked_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn account_revoke_signer_capability(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountRevokeSignerCapability { + to_be_revoked_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn account_rotate_authentication_key( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountRotateAuthenticationKey { - from_scheme: bcs::from_bytes(script.args().get(0)?).ok()?, - from_public_key_bytes: bcs::from_bytes(script.args().get(1)?).ok()?, - to_scheme: bcs::from_bytes(script.args().get(2)?).ok()?, - to_public_key_bytes: bcs::from_bytes(script.args().get(3)?).ok()?, - cap_rotate_key: bcs::from_bytes(script.args().get(4)?).ok()?, - cap_update_table: bcs::from_bytes(script.args().get(5)?).ok()?, - }) - } else { - None - } +pub fn account_rotate_authentication_key(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountRotateAuthenticationKey { + from_scheme : bcs::from_bytes(script.args().get(0)?).ok()?, + from_public_key_bytes : bcs::from_bytes(script.args().get(1)?).ok()?, + to_scheme : bcs::from_bytes(script.args().get(2)?).ok()?, + to_public_key_bytes : bcs::from_bytes(script.args().get(3)?).ok()?, + cap_rotate_key : bcs::from_bytes(script.args().get(4)?).ok()?, + cap_update_table : bcs::from_bytes(script.args().get(5)?).ok()?, + }) + } else { + None } +} - pub fn account_rotate_authentication_key_call( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountRotateAuthenticationKeyCall { - new_auth_key: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn account_rotate_authentication_key_call(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountRotateAuthenticationKeyCall { + new_auth_key : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn account_rotate_authentication_key_with_rotation_capability( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::AccountRotateAuthenticationKeyWithRotationCapability { - rotation_cap_offerer_address: bcs::from_bytes(script.args().get(0)?).ok()?, - new_scheme: bcs::from_bytes(script.args().get(1)?).ok()?, - new_public_key_bytes: bcs::from_bytes(script.args().get(2)?).ok()?, - cap_update_table: bcs::from_bytes(script.args().get(3)?).ok()?, - }, - ) - } else { - None - } - } - - pub fn automation_registry_cancel_system_task( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AutomationRegistryCancelSystemTask { - task_index: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } - } - - pub fn automation_registry_cancel_task( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AutomationRegistryCancelTask { - task_index: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } - } - - pub fn automation_registry_stop_system_tasks( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AutomationRegistryStopSystemTasks { - task_indexes: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } - } - - pub fn automation_registry_stop_tasks( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AutomationRegistryStopTasks { - task_indexes: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } - } - - pub fn code_publish_package_txn(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CodePublishPackageTxn { - metadata_serialized: bcs::from_bytes(script.args().get(0)?).ok()?, - code: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } - } - - pub fn coin_create_coin_conversion_map( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::CoinCreateCoinConversionMap {}) - } else { - None - } - } - - pub fn coin_create_pairing(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CoinCreatePairing { - coin_type: script.ty_args().get(0)?.clone(), - }) - } else { - None - } +pub fn account_rotate_authentication_key_with_rotation_capability(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountRotateAuthenticationKeyWithRotationCapability { + rotation_cap_offerer_address : bcs::from_bytes(script.args().get(0)?).ok()?, + new_scheme : bcs::from_bytes(script.args().get(1)?).ok()?, + new_public_key_bytes : bcs::from_bytes(script.args().get(2)?).ok()?, + cap_update_table : bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None } +} - pub fn coin_migrate_to_fungible_store( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CoinMigrateToFungibleStore { - coin_type: script.ty_args().get(0)?.clone(), - }) - } else { - None - } +pub fn automation_registry_cancel_system_task(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AutomationRegistryCancelSystemTask { + task_index : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn coin_transfer(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CoinTransfer { - coin_type: script.ty_args().get(0)?.clone(), - to: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn automation_registry_cancel_task(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AutomationRegistryCancelTask { + task_index : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn coin_upgrade_supply(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CoinUpgradeSupply { - coin_type: script.ty_args().get(0)?.clone(), - }) - } else { - None - } +pub fn automation_registry_stop_system_tasks(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AutomationRegistryStopSystemTasks { + task_indexes : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn committee_map_remove_committee( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapRemoveCommittee { - com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - id: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn automation_registry_stop_tasks(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AutomationRegistryStopTasks { + task_indexes : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn committee_map_remove_committee_bulk( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapRemoveCommitteeBulk { - com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - ids: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn code_publish_package_txn(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CodePublishPackageTxn { + metadata_serialized : bcs::from_bytes(script.args().get(0)?).ok()?, + code : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn committee_map_remove_committee_member( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapRemoveCommitteeMember { - com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - id: bcs::from_bytes(script.args().get(1)?).ok()?, - node_address: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn coin_create_coin_conversion_map(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::CoinCreateCoinConversionMap { + }) + } else { + None } +} - pub fn committee_map_update_dkg_flag( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpdateDkgFlag { - com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - com_id: bcs::from_bytes(script.args().get(1)?).ok()?, - flag_value: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn coin_create_pairing(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CoinCreatePairing { + coin_type : script.ty_args().get(0)?.clone(), + }) + } else { + None } +} - pub fn committee_map_upsert_committee( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpsertCommittee { - com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - id: bcs::from_bytes(script.args().get(1)?).ok()?, - node_addresses: bcs::from_bytes(script.args().get(2)?).ok()?, - ip_public_address: bcs::from_bytes(script.args().get(3)?).ok()?, - node_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, - network_public_key: bcs::from_bytes(script.args().get(5)?).ok()?, - cg_public_key: bcs::from_bytes(script.args().get(6)?).ok()?, - network_port: bcs::from_bytes(script.args().get(7)?).ok()?, - rpc_port: bcs::from_bytes(script.args().get(8)?).ok()?, - committee_type: bcs::from_bytes(script.args().get(9)?).ok()?, - }) - } else { - None - } +pub fn coin_migrate_to_fungible_store(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CoinMigrateToFungibleStore { + coin_type : script.ty_args().get(0)?.clone(), + }) + } else { + None } +} - pub fn committee_map_upsert_committee_bulk( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpsertCommitteeBulk { - com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - ids: bcs::from_bytes(script.args().get(1)?).ok()?, - node_addresses_bulk: bcs::from_bytes(script.args().get(2)?).ok()?, - ip_public_address_bulk: bcs::from_bytes(script.args().get(3)?).ok()?, - node_public_key_bulk: bcs::from_bytes(script.args().get(4)?).ok()?, - network_public_key_bulk: bcs::from_bytes(script.args().get(5)?).ok()?, - cg_public_key_bulk: bcs::from_bytes(script.args().get(6)?).ok()?, - network_port_bulk: bcs::from_bytes(script.args().get(7)?).ok()?, - rpc_por_bulkt: bcs::from_bytes(script.args().get(8)?).ok()?, - committee_types: bcs::from_bytes(script.args().get(9)?).ok()?, - }) - } else { - None - } +pub fn coin_transfer(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CoinTransfer { + coin_type : script.ty_args().get(0)?.clone(), + to : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn committee_map_upsert_committee_member( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpsertCommitteeMember { - com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - id: bcs::from_bytes(script.args().get(1)?).ok()?, - node_address: bcs::from_bytes(script.args().get(2)?).ok()?, - ip_public_address: bcs::from_bytes(script.args().get(3)?).ok()?, - node_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, - network_public_key: bcs::from_bytes(script.args().get(5)?).ok()?, - cg_public_key: bcs::from_bytes(script.args().get(6)?).ok()?, - network_port: bcs::from_bytes(script.args().get(7)?).ok()?, - rpc_port: bcs::from_bytes(script.args().get(8)?).ok()?, - }) - } else { - None - } +pub fn coin_upgrade_supply(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CoinUpgradeSupply { + coin_type : script.ty_args().get(0)?.clone(), + }) + } else { + None } +} - pub fn committee_map_upsert_committee_member_bulk( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpsertCommitteeMemberBulk { - com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - ids: bcs::from_bytes(script.args().get(1)?).ok()?, - node_addresses: bcs::from_bytes(script.args().get(2)?).ok()?, - ip_public_address: bcs::from_bytes(script.args().get(3)?).ok()?, - node_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, - network_public_key: bcs::from_bytes(script.args().get(5)?).ok()?, - cg_public_key: bcs::from_bytes(script.args().get(6)?).ok()?, - network_port: bcs::from_bytes(script.args().get(7)?).ok()?, - rpc_port: bcs::from_bytes(script.args().get(8)?).ok()?, - }) - } else { - None - } +pub fn committee_map_remove_committee(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapRemoveCommittee { + com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + id : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn managed_coin_burn(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ManagedCoinBurn { - coin_type: script.ty_args().get(0)?.clone(), - amount: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn committee_map_remove_committee_bulk(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapRemoveCommitteeBulk { + com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + ids : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn managed_coin_initialize(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ManagedCoinInitialize { - coin_type: script.ty_args().get(0)?.clone(), - name: bcs::from_bytes(script.args().get(0)?).ok()?, - symbol: bcs::from_bytes(script.args().get(1)?).ok()?, - decimals: bcs::from_bytes(script.args().get(2)?).ok()?, - monitor_supply: bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None - } +pub fn committee_map_remove_committee_member(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapRemoveCommitteeMember { + com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + id : bcs::from_bytes(script.args().get(1)?).ok()?, + node_address : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn managed_coin_mint(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ManagedCoinMint { - coin_type: script.ty_args().get(0)?.clone(), - dst_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn committee_map_update_dkg_flag(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpdateDkgFlag { + com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + com_id : bcs::from_bytes(script.args().get(1)?).ok()?, + flag_value : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } +} + +pub fn committee_map_upsert_committee(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpsertCommittee { + com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + id : bcs::from_bytes(script.args().get(1)?).ok()?, + node_addresses : bcs::from_bytes(script.args().get(2)?).ok()?, + ip_public_address : bcs::from_bytes(script.args().get(3)?).ok()?, + node_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, + network_public_key : bcs::from_bytes(script.args().get(5)?).ok()?, + cg_public_key : bcs::from_bytes(script.args().get(6)?).ok()?, + network_port : bcs::from_bytes(script.args().get(7)?).ok()?, + rpc_port : bcs::from_bytes(script.args().get(8)?).ok()?, + committee_type : bcs::from_bytes(script.args().get(9)?).ok()?, + }) + } else { + None + } +} + +pub fn committee_map_upsert_committee_bulk(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpsertCommitteeBulk { + com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + ids : bcs::from_bytes(script.args().get(1)?).ok()?, + node_addresses_bulk : bcs::from_bytes(script.args().get(2)?).ok()?, + ip_public_address_bulk : bcs::from_bytes(script.args().get(3)?).ok()?, + node_public_key_bulk : bcs::from_bytes(script.args().get(4)?).ok()?, + network_public_key_bulk : bcs::from_bytes(script.args().get(5)?).ok()?, + cg_public_key_bulk : bcs::from_bytes(script.args().get(6)?).ok()?, + network_port_bulk : bcs::from_bytes(script.args().get(7)?).ok()?, + rpc_por_bulkt : bcs::from_bytes(script.args().get(8)?).ok()?, + committee_types : bcs::from_bytes(script.args().get(9)?).ok()?, + }) + } else { + None + } +} + +pub fn committee_map_upsert_committee_member(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpsertCommitteeMember { + com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + id : bcs::from_bytes(script.args().get(1)?).ok()?, + node_address : bcs::from_bytes(script.args().get(2)?).ok()?, + ip_public_address : bcs::from_bytes(script.args().get(3)?).ok()?, + node_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, + network_public_key : bcs::from_bytes(script.args().get(5)?).ok()?, + cg_public_key : bcs::from_bytes(script.args().get(6)?).ok()?, + network_port : bcs::from_bytes(script.args().get(7)?).ok()?, + rpc_port : bcs::from_bytes(script.args().get(8)?).ok()?, + }) + } else { + None + } +} + +pub fn committee_map_upsert_committee_member_bulk(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpsertCommitteeMemberBulk { + com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + ids : bcs::from_bytes(script.args().get(1)?).ok()?, + node_addresses : bcs::from_bytes(script.args().get(2)?).ok()?, + ip_public_address : bcs::from_bytes(script.args().get(3)?).ok()?, + node_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, + network_public_key : bcs::from_bytes(script.args().get(5)?).ok()?, + cg_public_key : bcs::from_bytes(script.args().get(6)?).ok()?, + network_port : bcs::from_bytes(script.args().get(7)?).ok()?, + rpc_port : bcs::from_bytes(script.args().get(8)?).ok()?, + }) + } else { + None } +} - pub fn managed_coin_register(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ManagedCoinRegister { - coin_type: script.ty_args().get(0)?.clone(), - }) - } else { - None - } +pub fn managed_coin_burn(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ManagedCoinBurn { + coin_type : script.ty_args().get(0)?.clone(), + amount : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_add_owner(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountAddOwner { - new_owner: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn managed_coin_initialize(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ManagedCoinInitialize { + coin_type : script.ty_args().get(0)?.clone(), + name : bcs::from_bytes(script.args().get(0)?).ok()?, + symbol : bcs::from_bytes(script.args().get(1)?).ok()?, + decimals : bcs::from_bytes(script.args().get(2)?).ok()?, + monitor_supply : bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_add_owners(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountAddOwners { - new_owners: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn managed_coin_mint(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ManagedCoinMint { + coin_type : script.ty_args().get(0)?.clone(), + dst_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_add_owners_and_update_signatures_required( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::MultisigAccountAddOwnersAndUpdateSignaturesRequired { - new_owners: bcs::from_bytes(script.args().get(0)?).ok()?, - new_num_signatures_required: bcs::from_bytes(script.args().get(1)?).ok()?, - }, - ) - } else { - None - } +pub fn managed_coin_register(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ManagedCoinRegister { + coin_type : script.ty_args().get(0)?.clone(), + }) + } else { + None } +} - pub fn multisig_account_approve_transaction( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountApproveTransaction { - multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, - sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_add_owner(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountAddOwner { + new_owner : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_create(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreate { - num_signatures_required: bcs::from_bytes(script.args().get(0)?).ok()?, - metadata_keys: bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_values: bcs::from_bytes(script.args().get(2)?).ok()?, - timeout_duration: bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_add_owners(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountAddOwners { + new_owners : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_create_transaction( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreateTransaction { - multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, - payload: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_add_owners_and_update_signatures_required(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountAddOwnersAndUpdateSignaturesRequired { + new_owners : bcs::from_bytes(script.args().get(0)?).ok()?, + new_num_signatures_required : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_create_transaction_with_hash( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::MultisigAccountCreateTransactionWithHash { - multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, - payload_hash: bcs::from_bytes(script.args().get(1)?).ok()?, - }, - ) - } else { - None - } +pub fn multisig_account_approve_transaction(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountApproveTransaction { + multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, + sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_create_with_existing_account( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::MultisigAccountCreateWithExistingAccount { - multisig_address: bcs::from_bytes(script.args().get(0)?).ok()?, - owners: bcs::from_bytes(script.args().get(1)?).ok()?, - num_signatures_required: bcs::from_bytes(script.args().get(2)?).ok()?, - account_scheme: bcs::from_bytes(script.args().get(3)?).ok()?, - account_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, - create_multisig_account_signed_message: bcs::from_bytes(script.args().get(5)?) - .ok()?, - metadata_keys: bcs::from_bytes(script.args().get(6)?).ok()?, - metadata_values: bcs::from_bytes(script.args().get(7)?).ok()?, - timeout_duration: bcs::from_bytes(script.args().get(8)?).ok()?, - }, - ) - } else { - None - } +pub fn multisig_account_create(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreate { + num_signatures_required : bcs::from_bytes(script.args().get(0)?).ok()?, + metadata_keys : bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_values : bcs::from_bytes(script.args().get(2)?).ok()?, + timeout_duration : bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_create_with_existing_account_and_revoke_auth_key( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::MultisigAccountCreateWithExistingAccountAndRevokeAuthKey { - multisig_address: bcs::from_bytes(script.args().get(0)?).ok()?, - owners: bcs::from_bytes(script.args().get(1)?).ok()?, - num_signatures_required: bcs::from_bytes(script.args().get(2)?).ok()?, - account_scheme: bcs::from_bytes(script.args().get(3)?).ok()?, - account_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, - create_multisig_account_signed_message: bcs::from_bytes(script.args().get(5)?) - .ok()?, - metadata_keys: bcs::from_bytes(script.args().get(6)?).ok()?, - metadata_values: bcs::from_bytes(script.args().get(7)?).ok()?, - timeout_duration: bcs::from_bytes(script.args().get(8)?).ok()?, - }, - ) - } else { - None - } +pub fn multisig_account_create_transaction(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreateTransaction { + multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, + payload : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_create_with_owners( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreateWithOwners { - additional_owners: bcs::from_bytes(script.args().get(0)?).ok()?, - num_signatures_required: bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_keys: bcs::from_bytes(script.args().get(2)?).ok()?, - metadata_values: bcs::from_bytes(script.args().get(3)?).ok()?, - timeout_duration: bcs::from_bytes(script.args().get(4)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_create_transaction_with_hash(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreateTransactionWithHash { + multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, + payload_hash : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } +} + +pub fn multisig_account_create_with_existing_account(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreateWithExistingAccount { + multisig_address : bcs::from_bytes(script.args().get(0)?).ok()?, + owners : bcs::from_bytes(script.args().get(1)?).ok()?, + num_signatures_required : bcs::from_bytes(script.args().get(2)?).ok()?, + account_scheme : bcs::from_bytes(script.args().get(3)?).ok()?, + account_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, + create_multisig_account_signed_message : bcs::from_bytes(script.args().get(5)?).ok()?, + metadata_keys : bcs::from_bytes(script.args().get(6)?).ok()?, + metadata_values : bcs::from_bytes(script.args().get(7)?).ok()?, + timeout_duration : bcs::from_bytes(script.args().get(8)?).ok()?, + }) + } else { + None + } +} + +pub fn multisig_account_create_with_existing_account_and_revoke_auth_key(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreateWithExistingAccountAndRevokeAuthKey { + multisig_address : bcs::from_bytes(script.args().get(0)?).ok()?, + owners : bcs::from_bytes(script.args().get(1)?).ok()?, + num_signatures_required : bcs::from_bytes(script.args().get(2)?).ok()?, + account_scheme : bcs::from_bytes(script.args().get(3)?).ok()?, + account_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, + create_multisig_account_signed_message : bcs::from_bytes(script.args().get(5)?).ok()?, + metadata_keys : bcs::from_bytes(script.args().get(6)?).ok()?, + metadata_values : bcs::from_bytes(script.args().get(7)?).ok()?, + timeout_duration : bcs::from_bytes(script.args().get(8)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_create_with_owners_then_remove_bootstrapper( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::MultisigAccountCreateWithOwnersThenRemoveBootstrapper { - owners: bcs::from_bytes(script.args().get(0)?).ok()?, - num_signatures_required: bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_keys: bcs::from_bytes(script.args().get(2)?).ok()?, - metadata_values: bcs::from_bytes(script.args().get(3)?).ok()?, - timeout_duration: bcs::from_bytes(script.args().get(4)?).ok()?, - }, - ) - } else { - None - } +pub fn multisig_account_create_with_owners(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreateWithOwners { + additional_owners : bcs::from_bytes(script.args().get(0)?).ok()?, + num_signatures_required : bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_keys : bcs::from_bytes(script.args().get(2)?).ok()?, + metadata_values : bcs::from_bytes(script.args().get(3)?).ok()?, + timeout_duration : bcs::from_bytes(script.args().get(4)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_execute_rejected_transaction( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::MultisigAccountExecuteRejectedTransaction { - multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, - }, - ) - } else { - None - } +pub fn multisig_account_create_with_owners_then_remove_bootstrapper(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreateWithOwnersThenRemoveBootstrapper { + owners : bcs::from_bytes(script.args().get(0)?).ok()?, + num_signatures_required : bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_keys : bcs::from_bytes(script.args().get(2)?).ok()?, + metadata_values : bcs::from_bytes(script.args().get(3)?).ok()?, + timeout_duration : bcs::from_bytes(script.args().get(4)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_execute_rejected_transactions( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::MultisigAccountExecuteRejectedTransactions { - multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, - final_sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, - }, - ) - } else { - None - } +pub fn multisig_account_execute_rejected_transaction(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountExecuteRejectedTransaction { + multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_reject_transaction( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountRejectTransaction { - multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, - sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_execute_rejected_transactions(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountExecuteRejectedTransactions { + multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, + final_sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_remove_owner( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountRemoveOwner { - owner_to_remove: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_reject_transaction(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountRejectTransaction { + multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, + sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_remove_owners( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountRemoveOwners { - owners_to_remove: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_remove_owner(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountRemoveOwner { + owner_to_remove : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_swap_owner(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountSwapOwner { - to_swap_in: bcs::from_bytes(script.args().get(0)?).ok()?, - to_swap_out: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_remove_owners(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountRemoveOwners { + owners_to_remove : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_swap_owners(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountSwapOwners { - to_swap_in: bcs::from_bytes(script.args().get(0)?).ok()?, - to_swap_out: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_swap_owner(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountSwapOwner { + to_swap_in : bcs::from_bytes(script.args().get(0)?).ok()?, + to_swap_out : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_swap_owners_and_update_signatures_required( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::MultisigAccountSwapOwnersAndUpdateSignaturesRequired { - new_owners: bcs::from_bytes(script.args().get(0)?).ok()?, - owners_to_remove: bcs::from_bytes(script.args().get(1)?).ok()?, - new_num_signatures_required: bcs::from_bytes(script.args().get(2)?).ok()?, - }, - ) - } else { - None - } +pub fn multisig_account_swap_owners(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountSwapOwners { + to_swap_in : bcs::from_bytes(script.args().get(0)?).ok()?, + to_swap_out : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_update_metadata( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountUpdateMetadata { - keys: bcs::from_bytes(script.args().get(0)?).ok()?, - values: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_swap_owners_and_update_signatures_required(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountSwapOwnersAndUpdateSignaturesRequired { + new_owners : bcs::from_bytes(script.args().get(0)?).ok()?, + owners_to_remove : bcs::from_bytes(script.args().get(1)?).ok()?, + new_num_signatures_required : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_update_signatures_required( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountUpdateSignaturesRequired { - new_num_signatures_required: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_update_metadata(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountUpdateMetadata { + keys : bcs::from_bytes(script.args().get(0)?).ok()?, + values : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_update_timeout_duration( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountUpdateTimeoutDuration { - timeout_duration: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_update_signatures_required(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountUpdateSignaturesRequired { + new_num_signatures_required : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_vote_transaction( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountVoteTransaction { - multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, - sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, - approved: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_update_timeout_duration(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountUpdateTimeoutDuration { + timeout_duration : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_vote_transactions( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountVoteTransactions { - multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, - starting_sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, - final_sequence_number: bcs::from_bytes(script.args().get(2)?).ok()?, - approved: bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_vote_transaction(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountVoteTransaction { + multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, + sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, + approved : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn multisig_account_vote_transanction( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountVoteTransanction { - multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, - sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, - approved: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_vote_transactions(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountVoteTransactions { + multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, + starting_sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, + final_sequence_number : bcs::from_bytes(script.args().get(2)?).ok()?, + approved : bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None } +} - pub fn object_transfer_call(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ObjectTransferCall { - object: bcs::from_bytes(script.args().get(0)?).ok()?, - to: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn multisig_account_vote_transanction(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountVoteTransanction { + multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, + sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, + approved : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn object_code_deployment_publish( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ObjectCodeDeploymentPublish { - metadata_serialized: bcs::from_bytes(script.args().get(0)?).ok()?, - code: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn object_transfer_call(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ObjectTransferCall { + object : bcs::from_bytes(script.args().get(0)?).ok()?, + to : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_add_stake( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolAddStake { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn object_code_deployment_publish(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ObjectCodeDeploymentPublish { + metadata_serialized : bcs::from_bytes(script.args().get(0)?).ok()?, + code : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_admin_increase_last_unlock_period( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolAdminIncreaseLastUnlockPeriod { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - additional_periods: bcs::from_bytes(script.args().get(1)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_add_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolAddStake { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_delegate_voting_power( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolDelegateVotingPower { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn pbo_delegation_pool_admin_increase_last_unlock_period(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolAdminIncreaseLastUnlockPeriod { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + additional_periods : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_enable_partial_governance_voting( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolEnablePartialGovernanceVoting { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_delegate_voting_power(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolDelegateVotingPower { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_fund_delegators_with_locked_stake( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolFundDelegatorsWithLockedStake { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - delegators: bcs::from_bytes(script.args().get(1)?).ok()?, - stakes: bcs::from_bytes(script.args().get(2)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_enable_partial_governance_voting(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolEnablePartialGovernanceVoting { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_fund_delegators_with_stake( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolFundDelegatorsWithStake { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - delegators: bcs::from_bytes(script.args().get(1)?).ok()?, - stakes: bcs::from_bytes(script.args().get(2)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_fund_delegators_with_locked_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolFundDelegatorsWithLockedStake { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + delegators : bcs::from_bytes(script.args().get(1)?).ok()?, + stakes : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolInitializeDelegationPoolWithAmount { - multisig_admin: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - operator_commission_percentage: bcs::from_bytes(script.args().get(2)?).ok()?, - delegation_pool_creation_seed: bcs::from_bytes(script.args().get(3)?).ok()?, - delegator_address: bcs::from_bytes(script.args().get(4)?).ok()?, - principle_stake: bcs::from_bytes(script.args().get(5)?).ok()?, - unlock_numerators: bcs::from_bytes(script.args().get(6)?).ok()?, - unlock_denominator: bcs::from_bytes(script.args().get(7)?).ok()?, - unlock_start_time: bcs::from_bytes(script.args().get(8)?).ok()?, - unlock_duration: bcs::from_bytes(script.args().get(9)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_fund_delegators_with_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolFundDelegatorsWithStake { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + delegators : bcs::from_bytes(script.args().get(1)?).ok()?, + stakes : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } +} + +pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolInitializeDelegationPoolWithAmount { + multisig_admin : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + operator_commission_percentage : bcs::from_bytes(script.args().get(2)?).ok()?, + delegation_pool_creation_seed : bcs::from_bytes(script.args().get(3)?).ok()?, + delegator_address : bcs::from_bytes(script.args().get(4)?).ok()?, + principle_stake : bcs::from_bytes(script.args().get(5)?).ok()?, + unlock_numerators : bcs::from_bytes(script.args().get(6)?).ok()?, + unlock_denominator : bcs::from_bytes(script.args().get(7)?).ok()?, + unlock_start_time : bcs::from_bytes(script.args().get(8)?).ok()?, + unlock_duration : bcs::from_bytes(script.args().get(9)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolInitializeDelegationPoolWithAmountWithoutMultisigAdmin { +pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolInitializeDelegationPoolWithAmountWithoutMultisigAdmin { amount : bcs::from_bytes(script.args().get(0)?).ok()?, operator_commission_percentage : bcs::from_bytes(script.args().get(1)?).ok()?, delegation_pool_creation_seed : bcs::from_bytes(script.args().get(2)?).ok()?, @@ -6641,1852 +4592,1232 @@ mod decoder { unlock_start_time : bcs::from_bytes(script.args().get(7)?).ok()?, unlock_duration : bcs::from_bytes(script.args().get(8)?).ok()?, }) - } else { - None - } - } - - pub fn pbo_delegation_pool_lock_delegators_stakes( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolLockDelegatorsStakes { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - delegators: bcs::from_bytes(script.args().get(1)?).ok()?, - new_principle_stakes: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } - } - - pub fn pbo_delegation_pool_reactivate_stake( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolReactivateStake { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } + } else { + None } +} - pub fn pbo_delegation_pool_replace_delegator( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolReplaceDelegator { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - old_delegator: bcs::from_bytes(script.args().get(1)?).ok()?, - new_delegator: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn pbo_delegation_pool_lock_delegators_stakes(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolLockDelegatorsStakes { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + delegators : bcs::from_bytes(script.args().get(1)?).ok()?, + new_principle_stakes : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_set_beneficiary_for_operator( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolSetBeneficiaryForOperator { - new_beneficiary: bcs::from_bytes(script.args().get(0)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_reactivate_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolReactivateStake { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_set_delegated_voter( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolSetDelegatedVoter { - new_voter: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn pbo_delegation_pool_replace_delegator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolReplaceDelegator { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + old_delegator : bcs::from_bytes(script.args().get(1)?).ok()?, + new_delegator : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_set_operator( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolSetOperator { - new_operator: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn pbo_delegation_pool_set_beneficiary_for_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolSetBeneficiaryForOperator { + new_beneficiary : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_synchronize_delegation_pool( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolSynchronizeDelegationPool { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_set_delegated_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolSetDelegatedVoter { + new_voter : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_unlock(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolUnlock { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn pbo_delegation_pool_set_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolSetOperator { + new_operator : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_update_commission_percentage( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolUpdateCommissionPercentage { - new_commission_percentage: bcs::from_bytes(script.args().get(0)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_synchronize_delegation_pool(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolSynchronizeDelegationPool { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_update_unlocking_schedule( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolUpdateUnlockingSchedule { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - unlock_numerators: bcs::from_bytes(script.args().get(1)?).ok()?, - unlock_denominator: bcs::from_bytes(script.args().get(2)?).ok()?, - unlock_start_time: bcs::from_bytes(script.args().get(3)?).ok()?, - unlock_duration: bcs::from_bytes(script.args().get(4)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_unlock(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolUnlock { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn pbo_delegation_pool_update_unlocking_schedule_unchecked( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::PboDelegationPoolUpdateUnlockingScheduleUnchecked { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - unlock_numerators: bcs::from_bytes(script.args().get(1)?).ok()?, - unlock_denominator: bcs::from_bytes(script.args().get(2)?).ok()?, - unlock_start_time: bcs::from_bytes(script.args().get(3)?).ok()?, - unlock_duration: bcs::from_bytes(script.args().get(4)?).ok()?, - last_unlock_period: bcs::from_bytes(script.args().get(5)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_update_commission_percentage(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolUpdateCommissionPercentage { + new_commission_percentage : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } - - pub fn pbo_delegation_pool_withdraw(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolWithdraw { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +} + +pub fn pbo_delegation_pool_update_unlocking_schedule(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolUpdateUnlockingSchedule { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + unlock_numerators : bcs::from_bytes(script.args().get(1)?).ok()?, + unlock_denominator : bcs::from_bytes(script.args().get(2)?).ok()?, + unlock_start_time : bcs::from_bytes(script.args().get(3)?).ok()?, + unlock_duration : bcs::from_bytes(script.args().get(4)?).ok()?, + }) + } else { + None } +} - pub fn resource_account_create_resource_account( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ResourceAccountCreateResourceAccount { - seed: bcs::from_bytes(script.args().get(0)?).ok()?, - optional_auth_key: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn pbo_delegation_pool_update_unlocking_schedule_unchecked(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolUpdateUnlockingScheduleUnchecked { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + unlock_numerators : bcs::from_bytes(script.args().get(1)?).ok()?, + unlock_denominator : bcs::from_bytes(script.args().get(2)?).ok()?, + unlock_start_time : bcs::from_bytes(script.args().get(3)?).ok()?, + unlock_duration : bcs::from_bytes(script.args().get(4)?).ok()?, + last_unlock_period : bcs::from_bytes(script.args().get(5)?).ok()?, + }) + } else { + None } +} - pub fn resource_account_create_resource_account_and_fund( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::ResourceAccountCreateResourceAccountAndFund { - seed: bcs::from_bytes(script.args().get(0)?).ok()?, - optional_auth_key: bcs::from_bytes(script.args().get(1)?).ok()?, - fund_amount: bcs::from_bytes(script.args().get(2)?).ok()?, - }, - ) - } else { - None - } +pub fn pbo_delegation_pool_withdraw(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolWithdraw { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn resource_account_create_resource_account_and_publish_package( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::ResourceAccountCreateResourceAccountAndPublishPackage { - seed: bcs::from_bytes(script.args().get(0)?).ok()?, - metadata_serialized: bcs::from_bytes(script.args().get(1)?).ok()?, - code: bcs::from_bytes(script.args().get(2)?).ok()?, - }, - ) - } else { - None - } +pub fn resource_account_create_resource_account(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ResourceAccountCreateResourceAccount { + seed : bcs::from_bytes(script.args().get(0)?).ok()?, + optional_auth_key : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn stake_add_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeAddStake { - amount: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn resource_account_create_resource_account_and_fund(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ResourceAccountCreateResourceAccountAndFund { + seed : bcs::from_bytes(script.args().get(0)?).ok()?, + optional_auth_key : bcs::from_bytes(script.args().get(1)?).ok()?, + fund_amount : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn stake_increase_lockup(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::StakeIncreaseLockup {}) - } else { - None - } +pub fn resource_account_create_resource_account_and_publish_package(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ResourceAccountCreateResourceAccountAndPublishPackage { + seed : bcs::from_bytes(script.args().get(0)?).ok()?, + metadata_serialized : bcs::from_bytes(script.args().get(1)?).ok()?, + code : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn stake_initialize_stake_owner(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeInitializeStakeOwner { - initial_stake_amount: bcs::from_bytes(script.args().get(0)?).ok()?, - operator: bcs::from_bytes(script.args().get(1)?).ok()?, - voter: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn stake_add_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeAddStake { + amount : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn stake_initialize_validator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeInitializeValidator { - consensus_pubkey: bcs::from_bytes(script.args().get(0)?).ok()?, - network_addresses: bcs::from_bytes(script.args().get(1)?).ok()?, - fullnode_addresses: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn stake_increase_lockup(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::StakeIncreaseLockup { + }) + } else { + None } +} - pub fn stake_join_validator_set(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeJoinValidatorSet { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn stake_initialize_stake_owner(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeInitializeStakeOwner { + initial_stake_amount : bcs::from_bytes(script.args().get(0)?).ok()?, + operator : bcs::from_bytes(script.args().get(1)?).ok()?, + voter : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn stake_leave_validator_set(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeLeaveValidatorSet { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn stake_initialize_validator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeInitializeValidator { + consensus_pubkey : bcs::from_bytes(script.args().get(0)?).ok()?, + network_addresses : bcs::from_bytes(script.args().get(1)?).ok()?, + fullnode_addresses : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn stake_reactivate_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeReactivateStake { - amount: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn stake_join_validator_set(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeJoinValidatorSet { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn stake_rotate_consensus_key(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeRotateConsensusKey { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - new_consensus_pubkey: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn stake_leave_validator_set(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeLeaveValidatorSet { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn stake_set_delegated_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeSetDelegatedVoter { - new_voter: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn stake_reactivate_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeReactivateStake { + amount : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn stake_set_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeSetOperator { - new_operator: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn stake_rotate_consensus_key(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeRotateConsensusKey { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + new_consensus_pubkey : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn stake_unlock(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeUnlock { - amount: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn stake_set_delegated_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeSetDelegatedVoter { + new_voter : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn stake_update_network_and_fullnode_addresses( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeUpdateNetworkAndFullnodeAddresses { - pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, - new_network_addresses: bcs::from_bytes(script.args().get(1)?).ok()?, - new_fullnode_addresses: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn stake_set_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeSetOperator { + new_operator : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn stake_withdraw(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeWithdraw { - withdraw_amount: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn stake_unlock(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeUnlock { + amount : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_add_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractAddStake { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn stake_update_network_and_fullnode_addresses(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeUpdateNetworkAndFullnodeAddresses { + pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, + new_network_addresses : bcs::from_bytes(script.args().get(1)?).ok()?, + new_fullnode_addresses : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_create_staking_contract( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractCreateStakingContract { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - voter: bcs::from_bytes(script.args().get(1)?).ok()?, - amount: bcs::from_bytes(script.args().get(2)?).ok()?, - commission_percentage: bcs::from_bytes(script.args().get(3)?).ok()?, - contract_creation_seed: bcs::from_bytes(script.args().get(4)?).ok()?, - }) - } else { - None - } +pub fn stake_withdraw(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeWithdraw { + withdraw_amount : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_distribute(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractDistribute { - staker: bcs::from_bytes(script.args().get(0)?).ok()?, - operator: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_add_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractAddStake { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_request_commission( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractRequestCommission { - staker: bcs::from_bytes(script.args().get(0)?).ok()?, - operator: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_create_staking_contract(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractCreateStakingContract { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + voter : bcs::from_bytes(script.args().get(1)?).ok()?, + amount : bcs::from_bytes(script.args().get(2)?).ok()?, + commission_percentage : bcs::from_bytes(script.args().get(3)?).ok()?, + contract_creation_seed : bcs::from_bytes(script.args().get(4)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_reset_lockup( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractResetLockup { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_distribute(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractDistribute { + staker : bcs::from_bytes(script.args().get(0)?).ok()?, + operator : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_set_beneficiary_for_operator( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::StakingContractSetBeneficiaryForOperator { - new_beneficiary: bcs::from_bytes(script.args().get(0)?).ok()?, - }, - ) - } else { - None - } +pub fn staking_contract_request_commission(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractRequestCommission { + staker : bcs::from_bytes(script.args().get(0)?).ok()?, + operator : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_switch_operator( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractSwitchOperator { - old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, - new_commission_percentage: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_reset_lockup(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractResetLockup { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_switch_operator_with_same_commission( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::StakingContractSwitchOperatorWithSameCommission { - old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, - }, - ) - } else { - None - } +pub fn staking_contract_set_beneficiary_for_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractSetBeneficiaryForOperator { + new_beneficiary : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_unlock_rewards( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractUnlockRewards { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_switch_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractSwitchOperator { + old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, + new_commission_percentage : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_unlock_stake( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractUnlockStake { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_switch_operator_with_same_commission(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractSwitchOperatorWithSameCommission { + old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_update_commision( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractUpdateCommision { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_commission_percentage: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_unlock_rewards(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractUnlockRewards { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn staking_contract_update_voter( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractUpdateVoter { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_unlock_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractUnlockStake { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_proxy_set_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetOperator { - old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_update_commision(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractUpdateCommision { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_commission_percentage : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_proxy_set_stake_pool_operator( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetStakePoolOperator { - new_operator: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn staking_contract_update_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractUpdateVoter { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_proxy_set_stake_pool_voter( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetStakePoolVoter { - new_voter: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn staking_proxy_set_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetOperator { + old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_proxy_set_staking_contract_operator( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetStakingContractOperator { - old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_proxy_set_stake_pool_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetStakePoolOperator { + new_operator : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn staking_proxy_set_staking_contract_voter( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetStakingContractVoter { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_proxy_set_stake_pool_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetStakePoolVoter { + new_voter : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn staking_proxy_set_vesting_contract_operator( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetVestingContractOperator { - old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_proxy_set_staking_contract_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetStakingContractOperator { + old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_proxy_set_vesting_contract_voter( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetVestingContractVoter { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_proxy_set_staking_contract_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetStakingContractVoter { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn staking_proxy_set_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetVoter { - operator: bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_proxy_set_vesting_contract_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetVestingContractOperator { + old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn supra_account_batch_transfer(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountBatchTransfer { - recipients: bcs::from_bytes(script.args().get(0)?).ok()?, - amounts: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_proxy_set_vesting_contract_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetVestingContractVoter { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn supra_account_batch_transfer_coins( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountBatchTransferCoins { - coin_type: script.ty_args().get(0)?.clone(), - recipients: bcs::from_bytes(script.args().get(0)?).ok()?, - amounts: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn staking_proxy_set_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetVoter { + operator : bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn supra_account_create_account(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountCreateAccount { - auth_key: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn supra_account_batch_transfer(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountBatchTransfer { + recipients : bcs::from_bytes(script.args().get(0)?).ok()?, + amounts : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn supra_account_set_allow_direct_coin_transfers( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountSetAllowDirectCoinTransfers { - allow: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn supra_account_batch_transfer_coins(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountBatchTransferCoins { + coin_type : script.ty_args().get(0)?.clone(), + recipients : bcs::from_bytes(script.args().get(0)?).ok()?, + amounts : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn supra_account_transfer(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountTransfer { - to: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn supra_account_create_account(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountCreateAccount { + auth_key : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn supra_account_transfer_coins(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountTransferCoins { - coin_type: script.ty_args().get(0)?.clone(), - to: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn supra_account_set_allow_direct_coin_transfers(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountSetAllowDirectCoinTransfers { + allow : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn supra_coin_claim_mint_capability( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::SupraCoinClaimMintCapability {}) - } else { - None - } +pub fn supra_account_transfer(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountTransfer { + to : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn supra_coin_delegate_mint_capability( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraCoinDelegateMintCapability { - to: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn supra_account_transfer_coins(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountTransferCoins { + coin_type : script.ty_args().get(0)?.clone(), + to : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn supra_coin_mint(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraCoinMint { - dst_addr: bcs::from_bytes(script.args().get(0)?).ok()?, - amount: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn supra_coin_claim_mint_capability(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::SupraCoinClaimMintCapability { + }) + } else { + None } +} - pub fn supra_governance_add_supra_approved_script_hash_script( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::SupraGovernanceAddSupraApprovedScriptHashScript { - proposal_id: bcs::from_bytes(script.args().get(0)?).ok()?, - }, - ) - } else { - None - } +pub fn supra_coin_delegate_mint_capability(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraCoinDelegateMintCapability { + to : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn supra_governance_force_end_epoch( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::SupraGovernanceForceEndEpoch {}) - } else { - None - } +pub fn supra_coin_mint(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraCoinMint { + dst_addr : bcs::from_bytes(script.args().get(0)?).ok()?, + amount : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn supra_governance_force_end_epoch_test_only( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::SupraGovernanceForceEndEpochTestOnly {}) - } else { - None - } +pub fn supra_governance_add_supra_approved_script_hash_script(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraGovernanceAddSupraApprovedScriptHashScript { + proposal_id : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn supra_governance_reconfigure(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::SupraGovernanceReconfigure {}) - } else { - None - } +pub fn supra_governance_force_end_epoch(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::SupraGovernanceForceEndEpoch { + }) + } else { + None } +} - pub fn supra_governance_supra_create_proposal( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraGovernanceSupraCreateProposal { - execution_hash: bcs::from_bytes(script.args().get(0)?).ok()?, - metadata_location: bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_hash: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn supra_governance_force_end_epoch_test_only(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::SupraGovernanceForceEndEpochTestOnly { + }) + } else { + None } +} - pub fn supra_governance_supra_create_proposal_v2( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraGovernanceSupraCreateProposalV2 { - execution_hash: bcs::from_bytes(script.args().get(0)?).ok()?, - metadata_location: bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_hash: bcs::from_bytes(script.args().get(2)?).ok()?, - is_multi_step_proposal: bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None - } +pub fn supra_governance_reconfigure(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::SupraGovernanceReconfigure { + }) + } else { + None } +} - pub fn supra_governance_supra_vote(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraGovernanceSupraVote { - proposal_id: bcs::from_bytes(script.args().get(0)?).ok()?, - should_pass: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn supra_governance_supra_create_proposal(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraGovernanceSupraCreateProposal { + execution_hash : bcs::from_bytes(script.args().get(0)?).ok()?, + metadata_location : bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_hash : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn transaction_fee_convert_to_aptos_fa_burn_ref( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::TransactionFeeConvertToAptosFaBurnRef {}) - } else { - None - } +pub fn supra_governance_supra_create_proposal_v2(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraGovernanceSupraCreateProposalV2 { + execution_hash : bcs::from_bytes(script.args().get(0)?).ok()?, + metadata_location : bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_hash : bcs::from_bytes(script.args().get(2)?).ok()?, + is_multi_step_proposal : bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None } +} - pub fn version_set_for_next_epoch(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VersionSetForNextEpoch { - major: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn supra_governance_supra_vote(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraGovernanceSupraVote { + proposal_id : bcs::from_bytes(script.args().get(0)?).ok()?, + should_pass : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn version_set_version(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VersionSetVersion { - major: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn transaction_fee_convert_to_aptos_fa_burn_ref(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::TransactionFeeConvertToAptosFaBurnRef { + }) + } else { + None } +} - pub fn vesting_admin_withdraw(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingAdminWithdraw { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn version_set_for_next_epoch(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VersionSetForNextEpoch { + major : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_distribute(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingDistribute { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn version_set_version(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VersionSetVersion { + major : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_distribute_many(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingDistributeMany { - contract_addresses: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_admin_withdraw(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingAdminWithdraw { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_reset_beneficiary(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingResetBeneficiary { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn vesting_distribute(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingDistribute { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_reset_lockup(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingResetLockup { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_distribute_many(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingDistributeMany { + contract_addresses : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_set_beneficiary(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingSetBeneficiary { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder: bcs::from_bytes(script.args().get(1)?).ok()?, - new_beneficiary: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn vesting_reset_beneficiary(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingResetBeneficiary { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn vesting_set_beneficiary_for_operator( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingSetBeneficiaryForOperator { - new_beneficiary: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_reset_lockup(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingResetLockup { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_set_beneficiary_resetter( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingSetBeneficiaryResetter { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - beneficiary_resetter: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn vesting_set_beneficiary(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingSetBeneficiary { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder : bcs::from_bytes(script.args().get(1)?).ok()?, + new_beneficiary : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn vesting_set_management_role(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingSetManagementRole { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - role: bcs::from_bytes(script.args().get(1)?).ok()?, - role_holder: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn vesting_set_beneficiary_for_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingSetBeneficiaryForOperator { + new_beneficiary : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_terminate_vesting_contract( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingTerminateVestingContract { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_set_beneficiary_resetter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingSetBeneficiaryResetter { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + beneficiary_resetter : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn vesting_unlock_rewards(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUnlockRewards { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_set_management_role(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingSetManagementRole { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + role : bcs::from_bytes(script.args().get(1)?).ok()?, + role_holder : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn vesting_unlock_rewards_many(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUnlockRewardsMany { - contract_addresses: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_terminate_vesting_contract(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingTerminateVestingContract { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_update_commission_percentage( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUpdateCommissionPercentage { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - new_commission_percentage: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn vesting_unlock_rewards(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUnlockRewards { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_update_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUpdateOperator { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, - commission_percentage: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn vesting_unlock_rewards_many(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUnlockRewardsMany { + contract_addresses : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_update_operator_with_same_commission( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUpdateOperatorWithSameCommission { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn vesting_update_commission_percentage(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUpdateCommissionPercentage { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + new_commission_percentage : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn vesting_update_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUpdateVoter { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn vesting_update_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUpdateOperator { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, + commission_percentage : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn vesting_vest(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingVest { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_update_operator_with_same_commission(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUpdateOperatorWithSameCommission { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn vesting_vest_many(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingVestMany { - contract_addresses: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_update_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUpdateVoter { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_admin_delay_vesting( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingAdminDelayVesting { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - delay_periods: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn vesting_vest(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingVest { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_admin_withdraw( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingAdminWithdraw { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_vest_many(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingVestMany { + contract_addresses : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_create_vesting_contract_with_amounts( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::VestingWithoutStakingCreateVestingContractWithAmounts { - shareholders: bcs::from_bytes(script.args().get(0)?).ok()?, - shares: bcs::from_bytes(script.args().get(1)?).ok()?, - vesting_numerators: bcs::from_bytes(script.args().get(2)?).ok()?, - vesting_denominator: bcs::from_bytes(script.args().get(3)?).ok()?, - start_timestamp_secs: bcs::from_bytes(script.args().get(4)?).ok()?, - period_duration: bcs::from_bytes(script.args().get(5)?).ok()?, - withdrawal_address: bcs::from_bytes(script.args().get(6)?).ok()?, - contract_creation_seed: bcs::from_bytes(script.args().get(7)?).ok()?, - }, - ) - } else { - None - } +pub fn vesting_without_staking_admin_delay_vesting(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingAdminDelayVesting { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + delay_periods : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_remove_shareholder( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingRemoveShareholder { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder_address: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn vesting_without_staking_admin_withdraw(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingAdminWithdraw { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } +} + +pub fn vesting_without_staking_create_vesting_contract_with_amounts(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingCreateVestingContractWithAmounts { + shareholders : bcs::from_bytes(script.args().get(0)?).ok()?, + shares : bcs::from_bytes(script.args().get(1)?).ok()?, + vesting_numerators : bcs::from_bytes(script.args().get(2)?).ok()?, + vesting_denominator : bcs::from_bytes(script.args().get(3)?).ok()?, + start_timestamp_secs : bcs::from_bytes(script.args().get(4)?).ok()?, + period_duration : bcs::from_bytes(script.args().get(5)?).ok()?, + withdrawal_address : bcs::from_bytes(script.args().get(6)?).ok()?, + contract_creation_seed : bcs::from_bytes(script.args().get(7)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_reset_beneficiary( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingResetBeneficiary { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn vesting_without_staking_remove_shareholder(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingRemoveShareholder { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder_address : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_set_beneficiary( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingSetBeneficiary { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder: bcs::from_bytes(script.args().get(1)?).ok()?, - new_beneficiary: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn vesting_without_staking_reset_beneficiary(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingResetBeneficiary { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_set_beneficiary_resetter( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::VestingWithoutStakingSetBeneficiaryResetter { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - beneficiary_resetter: bcs::from_bytes(script.args().get(1)?).ok()?, - }, - ) - } else { - None - } +pub fn vesting_without_staking_set_beneficiary(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingSetBeneficiary { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder : bcs::from_bytes(script.args().get(1)?).ok()?, + new_beneficiary : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_set_management_role( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingSetManagementRole { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - role: bcs::from_bytes(script.args().get(1)?).ok()?, - role_holder: bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } +pub fn vesting_without_staking_set_beneficiary_resetter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingSetBeneficiaryResetter { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + beneficiary_resetter : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_set_vesting_schedule( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingSetVestingSchedule { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - vesting_numerators: bcs::from_bytes(script.args().get(1)?).ok()?, - vesting_denominator: bcs::from_bytes(script.args().get(2)?).ok()?, - period_duration: bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None - } +pub fn vesting_without_staking_set_management_role(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingSetManagementRole { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + role : bcs::from_bytes(script.args().get(1)?).ok()?, + role_holder : bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_terminate_vesting_contract( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some( - EntryFunctionCall::VestingWithoutStakingTerminateVestingContract { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }, - ) - } else { - None - } +pub fn vesting_without_staking_set_vesting_schedule(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingSetVestingSchedule { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + vesting_numerators : bcs::from_bytes(script.args().get(1)?).ok()?, + vesting_denominator : bcs::from_bytes(script.args().get(2)?).ok()?, + period_duration : bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_vest(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingVest { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } +pub fn vesting_without_staking_terminate_vesting_contract(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingTerminateVestingContract { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } +} - pub fn vesting_without_staking_vest_individual( - payload: &TransactionPayload, - ) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingVestIndividual { - contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder_address: bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } +pub fn vesting_without_staking_vest(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingVest { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None } } -type EntryFunctionDecoderMap = std::collections::HashMap< - String, - Box< - dyn Fn(&TransactionPayload) -> Option - + std::marker::Sync - + std::marker::Send, - >, ->; - -static SCRIPT_FUNCTION_DECODER_MAP: once_cell::sync::Lazy = - once_cell::sync::Lazy::new(|| { - let mut map: EntryFunctionDecoderMap = std::collections::HashMap::new(); - map.insert( - "account_offer_rotation_capability".to_string(), - Box::new(decoder::account_offer_rotation_capability), - ); - map.insert( - "account_offer_signer_capability".to_string(), - Box::new(decoder::account_offer_signer_capability), - ); - map.insert( - "account_revoke_any_rotation_capability".to_string(), - Box::new(decoder::account_revoke_any_rotation_capability), - ); - map.insert( - "account_revoke_any_signer_capability".to_string(), - Box::new(decoder::account_revoke_any_signer_capability), - ); - map.insert( - "account_revoke_rotation_capability".to_string(), - Box::new(decoder::account_revoke_rotation_capability), - ); - map.insert( - "account_revoke_signer_capability".to_string(), - Box::new(decoder::account_revoke_signer_capability), - ); - map.insert( - "account_rotate_authentication_key".to_string(), - Box::new(decoder::account_rotate_authentication_key), - ); - map.insert( - "account_rotate_authentication_key_call".to_string(), - Box::new(decoder::account_rotate_authentication_key_call), - ); - map.insert( - "account_rotate_authentication_key_with_rotation_capability".to_string(), - Box::new(decoder::account_rotate_authentication_key_with_rotation_capability), - ); - map.insert( - "automation_registry_cancel_system_task".to_string(), - Box::new(decoder::automation_registry_cancel_system_task), - ); - map.insert( - "automation_registry_cancel_task".to_string(), - Box::new(decoder::automation_registry_cancel_task), - ); - map.insert( - "automation_registry_stop_system_tasks".to_string(), - Box::new(decoder::automation_registry_stop_system_tasks), - ); - map.insert( - "automation_registry_stop_tasks".to_string(), - Box::new(decoder::automation_registry_stop_tasks), - ); - map.insert( - "code_publish_package_txn".to_string(), - Box::new(decoder::code_publish_package_txn), - ); - map.insert( - "coin_create_coin_conversion_map".to_string(), - Box::new(decoder::coin_create_coin_conversion_map), - ); - map.insert( - "coin_create_pairing".to_string(), - Box::new(decoder::coin_create_pairing), - ); - map.insert( - "coin_migrate_to_fungible_store".to_string(), - Box::new(decoder::coin_migrate_to_fungible_store), - ); - map.insert( - "coin_transfer".to_string(), - Box::new(decoder::coin_transfer), - ); - map.insert( - "coin_upgrade_supply".to_string(), - Box::new(decoder::coin_upgrade_supply), - ); - map.insert( - "committee_map_remove_committee".to_string(), - Box::new(decoder::committee_map_remove_committee), - ); - map.insert( - "committee_map_remove_committee_bulk".to_string(), - Box::new(decoder::committee_map_remove_committee_bulk), - ); - map.insert( - "committee_map_remove_committee_member".to_string(), - Box::new(decoder::committee_map_remove_committee_member), - ); - map.insert( - "committee_map_update_dkg_flag".to_string(), - Box::new(decoder::committee_map_update_dkg_flag), - ); - map.insert( - "committee_map_upsert_committee".to_string(), - Box::new(decoder::committee_map_upsert_committee), - ); - map.insert( - "committee_map_upsert_committee_bulk".to_string(), - Box::new(decoder::committee_map_upsert_committee_bulk), - ); - map.insert( - "committee_map_upsert_committee_member".to_string(), - Box::new(decoder::committee_map_upsert_committee_member), - ); - map.insert( - "committee_map_upsert_committee_member_bulk".to_string(), - Box::new(decoder::committee_map_upsert_committee_member_bulk), - ); - map.insert( - "managed_coin_burn".to_string(), - Box::new(decoder::managed_coin_burn), - ); - map.insert( - "managed_coin_initialize".to_string(), - Box::new(decoder::managed_coin_initialize), - ); - map.insert( - "managed_coin_mint".to_string(), - Box::new(decoder::managed_coin_mint), - ); - map.insert( - "managed_coin_register".to_string(), - Box::new(decoder::managed_coin_register), - ); - map.insert( - "multisig_account_add_owner".to_string(), - Box::new(decoder::multisig_account_add_owner), - ); - map.insert( - "multisig_account_add_owners".to_string(), - Box::new(decoder::multisig_account_add_owners), - ); - map.insert( - "multisig_account_add_owners_and_update_signatures_required".to_string(), - Box::new(decoder::multisig_account_add_owners_and_update_signatures_required), - ); - map.insert( - "multisig_account_approve_transaction".to_string(), - Box::new(decoder::multisig_account_approve_transaction), - ); - map.insert( - "multisig_account_create".to_string(), - Box::new(decoder::multisig_account_create), - ); - map.insert( - "multisig_account_create_transaction".to_string(), - Box::new(decoder::multisig_account_create_transaction), - ); - map.insert( - "multisig_account_create_transaction_with_hash".to_string(), - Box::new(decoder::multisig_account_create_transaction_with_hash), - ); - map.insert( - "multisig_account_create_with_existing_account".to_string(), - Box::new(decoder::multisig_account_create_with_existing_account), - ); - map.insert( - "multisig_account_create_with_existing_account_and_revoke_auth_key".to_string(), - Box::new(decoder::multisig_account_create_with_existing_account_and_revoke_auth_key), - ); - map.insert( - "multisig_account_create_with_owners".to_string(), - Box::new(decoder::multisig_account_create_with_owners), - ); - map.insert( - "multisig_account_create_with_owners_then_remove_bootstrapper".to_string(), - Box::new(decoder::multisig_account_create_with_owners_then_remove_bootstrapper), - ); - map.insert( - "multisig_account_execute_rejected_transaction".to_string(), - Box::new(decoder::multisig_account_execute_rejected_transaction), - ); - map.insert( - "multisig_account_execute_rejected_transactions".to_string(), - Box::new(decoder::multisig_account_execute_rejected_transactions), - ); - map.insert( - "multisig_account_reject_transaction".to_string(), - Box::new(decoder::multisig_account_reject_transaction), - ); - map.insert( - "multisig_account_remove_owner".to_string(), - Box::new(decoder::multisig_account_remove_owner), - ); - map.insert( - "multisig_account_remove_owners".to_string(), - Box::new(decoder::multisig_account_remove_owners), - ); - map.insert( - "multisig_account_swap_owner".to_string(), - Box::new(decoder::multisig_account_swap_owner), - ); - map.insert( - "multisig_account_swap_owners".to_string(), - Box::new(decoder::multisig_account_swap_owners), - ); - map.insert( - "multisig_account_swap_owners_and_update_signatures_required".to_string(), - Box::new(decoder::multisig_account_swap_owners_and_update_signatures_required), - ); - map.insert( - "multisig_account_update_metadata".to_string(), - Box::new(decoder::multisig_account_update_metadata), - ); - map.insert( - "multisig_account_update_signatures_required".to_string(), - Box::new(decoder::multisig_account_update_signatures_required), - ); - map.insert( - "multisig_account_update_timeout_duration".to_string(), - Box::new(decoder::multisig_account_update_timeout_duration), - ); - map.insert( - "multisig_account_vote_transaction".to_string(), - Box::new(decoder::multisig_account_vote_transaction), - ); - map.insert( - "multisig_account_vote_transactions".to_string(), - Box::new(decoder::multisig_account_vote_transactions), - ); - map.insert( - "multisig_account_vote_transanction".to_string(), - Box::new(decoder::multisig_account_vote_transanction), - ); - map.insert( - "object_transfer_call".to_string(), - Box::new(decoder::object_transfer_call), - ); - map.insert( - "object_code_deployment_publish".to_string(), - Box::new(decoder::object_code_deployment_publish), - ); - map.insert( - "pbo_delegation_pool_add_stake".to_string(), - Box::new(decoder::pbo_delegation_pool_add_stake), - ); - map.insert( - "pbo_delegation_pool_admin_increase_last_unlock_period".to_string(), - Box::new(decoder::pbo_delegation_pool_admin_increase_last_unlock_period), - ); - map.insert( - "pbo_delegation_pool_delegate_voting_power".to_string(), - Box::new(decoder::pbo_delegation_pool_delegate_voting_power), - ); - map.insert( - "pbo_delegation_pool_enable_partial_governance_voting".to_string(), - Box::new(decoder::pbo_delegation_pool_enable_partial_governance_voting), - ); - map.insert( - "pbo_delegation_pool_fund_delegators_with_locked_stake".to_string(), - Box::new(decoder::pbo_delegation_pool_fund_delegators_with_locked_stake), - ); - map.insert( - "pbo_delegation_pool_fund_delegators_with_stake".to_string(), - Box::new(decoder::pbo_delegation_pool_fund_delegators_with_stake), - ); - map.insert( - "pbo_delegation_pool_initialize_delegation_pool_with_amount".to_string(), - Box::new(decoder::pbo_delegation_pool_initialize_delegation_pool_with_amount), - ); - map.insert("pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin".to_string(), Box::new(decoder::pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin)); - map.insert( - "pbo_delegation_pool_lock_delegators_stakes".to_string(), - Box::new(decoder::pbo_delegation_pool_lock_delegators_stakes), - ); - map.insert( - "pbo_delegation_pool_reactivate_stake".to_string(), - Box::new(decoder::pbo_delegation_pool_reactivate_stake), - ); - map.insert( - "pbo_delegation_pool_replace_delegator".to_string(), - Box::new(decoder::pbo_delegation_pool_replace_delegator), - ); - map.insert( - "pbo_delegation_pool_set_beneficiary_for_operator".to_string(), - Box::new(decoder::pbo_delegation_pool_set_beneficiary_for_operator), - ); - map.insert( - "pbo_delegation_pool_set_delegated_voter".to_string(), - Box::new(decoder::pbo_delegation_pool_set_delegated_voter), - ); - map.insert( - "pbo_delegation_pool_set_operator".to_string(), - Box::new(decoder::pbo_delegation_pool_set_operator), - ); - map.insert( - "pbo_delegation_pool_synchronize_delegation_pool".to_string(), - Box::new(decoder::pbo_delegation_pool_synchronize_delegation_pool), - ); - map.insert( - "pbo_delegation_pool_unlock".to_string(), - Box::new(decoder::pbo_delegation_pool_unlock), - ); - map.insert( - "pbo_delegation_pool_update_commission_percentage".to_string(), - Box::new(decoder::pbo_delegation_pool_update_commission_percentage), - ); - map.insert( - "pbo_delegation_pool_update_unlocking_schedule".to_string(), - Box::new(decoder::pbo_delegation_pool_update_unlocking_schedule), - ); - map.insert( - "pbo_delegation_pool_update_unlocking_schedule_unchecked".to_string(), - Box::new(decoder::pbo_delegation_pool_update_unlocking_schedule_unchecked), - ); - map.insert( - "pbo_delegation_pool_withdraw".to_string(), - Box::new(decoder::pbo_delegation_pool_withdraw), - ); - map.insert( - "resource_account_create_resource_account".to_string(), - Box::new(decoder::resource_account_create_resource_account), - ); - map.insert( - "resource_account_create_resource_account_and_fund".to_string(), - Box::new(decoder::resource_account_create_resource_account_and_fund), - ); - map.insert( - "resource_account_create_resource_account_and_publish_package".to_string(), - Box::new(decoder::resource_account_create_resource_account_and_publish_package), - ); - map.insert( - "stake_add_stake".to_string(), - Box::new(decoder::stake_add_stake), - ); - map.insert( - "stake_increase_lockup".to_string(), - Box::new(decoder::stake_increase_lockup), - ); - map.insert( - "stake_initialize_stake_owner".to_string(), - Box::new(decoder::stake_initialize_stake_owner), - ); - map.insert( - "stake_initialize_validator".to_string(), - Box::new(decoder::stake_initialize_validator), - ); - map.insert( - "stake_join_validator_set".to_string(), - Box::new(decoder::stake_join_validator_set), - ); - map.insert( - "stake_leave_validator_set".to_string(), - Box::new(decoder::stake_leave_validator_set), - ); - map.insert( - "stake_reactivate_stake".to_string(), - Box::new(decoder::stake_reactivate_stake), - ); - map.insert( - "stake_rotate_consensus_key".to_string(), - Box::new(decoder::stake_rotate_consensus_key), - ); - map.insert( - "stake_set_delegated_voter".to_string(), - Box::new(decoder::stake_set_delegated_voter), - ); - map.insert( - "stake_set_operator".to_string(), - Box::new(decoder::stake_set_operator), - ); - map.insert("stake_unlock".to_string(), Box::new(decoder::stake_unlock)); - map.insert( - "stake_update_network_and_fullnode_addresses".to_string(), - Box::new(decoder::stake_update_network_and_fullnode_addresses), - ); - map.insert( - "stake_withdraw".to_string(), - Box::new(decoder::stake_withdraw), - ); - map.insert( - "staking_contract_add_stake".to_string(), - Box::new(decoder::staking_contract_add_stake), - ); - map.insert( - "staking_contract_create_staking_contract".to_string(), - Box::new(decoder::staking_contract_create_staking_contract), - ); - map.insert( - "staking_contract_distribute".to_string(), - Box::new(decoder::staking_contract_distribute), - ); - map.insert( - "staking_contract_request_commission".to_string(), - Box::new(decoder::staking_contract_request_commission), - ); - map.insert( - "staking_contract_reset_lockup".to_string(), - Box::new(decoder::staking_contract_reset_lockup), - ); - map.insert( - "staking_contract_set_beneficiary_for_operator".to_string(), - Box::new(decoder::staking_contract_set_beneficiary_for_operator), - ); - map.insert( - "staking_contract_switch_operator".to_string(), - Box::new(decoder::staking_contract_switch_operator), - ); - map.insert( - "staking_contract_switch_operator_with_same_commission".to_string(), - Box::new(decoder::staking_contract_switch_operator_with_same_commission), - ); - map.insert( - "staking_contract_unlock_rewards".to_string(), - Box::new(decoder::staking_contract_unlock_rewards), - ); - map.insert( - "staking_contract_unlock_stake".to_string(), - Box::new(decoder::staking_contract_unlock_stake), - ); - map.insert( - "staking_contract_update_commision".to_string(), - Box::new(decoder::staking_contract_update_commision), - ); - map.insert( - "staking_contract_update_voter".to_string(), - Box::new(decoder::staking_contract_update_voter), - ); - map.insert( - "staking_proxy_set_operator".to_string(), - Box::new(decoder::staking_proxy_set_operator), - ); - map.insert( - "staking_proxy_set_stake_pool_operator".to_string(), - Box::new(decoder::staking_proxy_set_stake_pool_operator), - ); - map.insert( - "staking_proxy_set_stake_pool_voter".to_string(), - Box::new(decoder::staking_proxy_set_stake_pool_voter), - ); - map.insert( - "staking_proxy_set_staking_contract_operator".to_string(), - Box::new(decoder::staking_proxy_set_staking_contract_operator), - ); - map.insert( - "staking_proxy_set_staking_contract_voter".to_string(), - Box::new(decoder::staking_proxy_set_staking_contract_voter), - ); - map.insert( - "staking_proxy_set_vesting_contract_operator".to_string(), - Box::new(decoder::staking_proxy_set_vesting_contract_operator), - ); - map.insert( - "staking_proxy_set_vesting_contract_voter".to_string(), - Box::new(decoder::staking_proxy_set_vesting_contract_voter), - ); - map.insert( - "staking_proxy_set_voter".to_string(), - Box::new(decoder::staking_proxy_set_voter), - ); - map.insert( - "supra_account_batch_transfer".to_string(), - Box::new(decoder::supra_account_batch_transfer), - ); - map.insert( - "supra_account_batch_transfer_coins".to_string(), - Box::new(decoder::supra_account_batch_transfer_coins), - ); - map.insert( - "supra_account_create_account".to_string(), - Box::new(decoder::supra_account_create_account), - ); - map.insert( - "supra_account_set_allow_direct_coin_transfers".to_string(), - Box::new(decoder::supra_account_set_allow_direct_coin_transfers), - ); - map.insert( - "supra_account_transfer".to_string(), - Box::new(decoder::supra_account_transfer), - ); - map.insert( - "supra_account_transfer_coins".to_string(), - Box::new(decoder::supra_account_transfer_coins), - ); - map.insert( - "supra_coin_claim_mint_capability".to_string(), - Box::new(decoder::supra_coin_claim_mint_capability), - ); - map.insert( - "supra_coin_delegate_mint_capability".to_string(), - Box::new(decoder::supra_coin_delegate_mint_capability), - ); - map.insert( - "supra_coin_mint".to_string(), - Box::new(decoder::supra_coin_mint), - ); - map.insert( - "supra_governance_add_supra_approved_script_hash_script".to_string(), - Box::new(decoder::supra_governance_add_supra_approved_script_hash_script), - ); - map.insert( - "supra_governance_force_end_epoch".to_string(), - Box::new(decoder::supra_governance_force_end_epoch), - ); - map.insert( - "supra_governance_force_end_epoch_test_only".to_string(), - Box::new(decoder::supra_governance_force_end_epoch_test_only), - ); - map.insert( - "supra_governance_reconfigure".to_string(), - Box::new(decoder::supra_governance_reconfigure), - ); - map.insert( - "supra_governance_supra_create_proposal".to_string(), - Box::new(decoder::supra_governance_supra_create_proposal), - ); - map.insert( - "supra_governance_supra_create_proposal_v2".to_string(), - Box::new(decoder::supra_governance_supra_create_proposal_v2), - ); - map.insert( - "supra_governance_supra_vote".to_string(), - Box::new(decoder::supra_governance_supra_vote), - ); - map.insert( - "transaction_fee_convert_to_aptos_fa_burn_ref".to_string(), - Box::new(decoder::transaction_fee_convert_to_aptos_fa_burn_ref), - ); - map.insert( - "version_set_for_next_epoch".to_string(), - Box::new(decoder::version_set_for_next_epoch), - ); - map.insert( - "version_set_version".to_string(), - Box::new(decoder::version_set_version), - ); - map.insert( - "vesting_admin_withdraw".to_string(), - Box::new(decoder::vesting_admin_withdraw), - ); - map.insert( - "vesting_distribute".to_string(), - Box::new(decoder::vesting_distribute), - ); - map.insert( - "vesting_distribute_many".to_string(), - Box::new(decoder::vesting_distribute_many), - ); - map.insert( - "vesting_reset_beneficiary".to_string(), - Box::new(decoder::vesting_reset_beneficiary), - ); - map.insert( - "vesting_reset_lockup".to_string(), - Box::new(decoder::vesting_reset_lockup), - ); - map.insert( - "vesting_set_beneficiary".to_string(), - Box::new(decoder::vesting_set_beneficiary), - ); - map.insert( - "vesting_set_beneficiary_for_operator".to_string(), - Box::new(decoder::vesting_set_beneficiary_for_operator), - ); - map.insert( - "vesting_set_beneficiary_resetter".to_string(), - Box::new(decoder::vesting_set_beneficiary_resetter), - ); - map.insert( - "vesting_set_management_role".to_string(), - Box::new(decoder::vesting_set_management_role), - ); - map.insert( - "vesting_terminate_vesting_contract".to_string(), - Box::new(decoder::vesting_terminate_vesting_contract), - ); - map.insert( - "vesting_unlock_rewards".to_string(), - Box::new(decoder::vesting_unlock_rewards), - ); - map.insert( - "vesting_unlock_rewards_many".to_string(), - Box::new(decoder::vesting_unlock_rewards_many), - ); - map.insert( - "vesting_update_commission_percentage".to_string(), - Box::new(decoder::vesting_update_commission_percentage), - ); - map.insert( - "vesting_update_operator".to_string(), - Box::new(decoder::vesting_update_operator), - ); - map.insert( - "vesting_update_operator_with_same_commission".to_string(), - Box::new(decoder::vesting_update_operator_with_same_commission), - ); - map.insert( - "vesting_update_voter".to_string(), - Box::new(decoder::vesting_update_voter), - ); - map.insert("vesting_vest".to_string(), Box::new(decoder::vesting_vest)); - map.insert( - "vesting_vest_many".to_string(), - Box::new(decoder::vesting_vest_many), - ); - map.insert( - "vesting_without_staking_admin_delay_vesting".to_string(), - Box::new(decoder::vesting_without_staking_admin_delay_vesting), - ); - map.insert( - "vesting_without_staking_admin_withdraw".to_string(), - Box::new(decoder::vesting_without_staking_admin_withdraw), - ); - map.insert( - "vesting_without_staking_create_vesting_contract_with_amounts".to_string(), - Box::new(decoder::vesting_without_staking_create_vesting_contract_with_amounts), - ); - map.insert( - "vesting_without_staking_remove_shareholder".to_string(), - Box::new(decoder::vesting_without_staking_remove_shareholder), - ); - map.insert( - "vesting_without_staking_reset_beneficiary".to_string(), - Box::new(decoder::vesting_without_staking_reset_beneficiary), - ); - map.insert( - "vesting_without_staking_set_beneficiary".to_string(), - Box::new(decoder::vesting_without_staking_set_beneficiary), - ); - map.insert( - "vesting_without_staking_set_beneficiary_resetter".to_string(), - Box::new(decoder::vesting_without_staking_set_beneficiary_resetter), - ); - map.insert( - "vesting_without_staking_set_management_role".to_string(), - Box::new(decoder::vesting_without_staking_set_management_role), - ); - map.insert( - "vesting_without_staking_set_vesting_schedule".to_string(), - Box::new(decoder::vesting_without_staking_set_vesting_schedule), - ); - map.insert( - "vesting_without_staking_terminate_vesting_contract".to_string(), - Box::new(decoder::vesting_without_staking_terminate_vesting_contract), - ); - map.insert( - "vesting_without_staking_vest".to_string(), - Box::new(decoder::vesting_without_staking_vest), - ); - map.insert( - "vesting_without_staking_vest_individual".to_string(), - Box::new(decoder::vesting_without_staking_vest_individual), - ); - map - }); +pub fn vesting_without_staking_vest_individual(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingVestIndividual { + contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder_address : bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } +} +} + +type EntryFunctionDecoderMap = std::collections::HashMap Option + std::marker::Sync + std::marker::Send>>; + +static SCRIPT_FUNCTION_DECODER_MAP: once_cell::sync::Lazy = once_cell::sync::Lazy::new(|| { + let mut map : EntryFunctionDecoderMap = std::collections::HashMap::new(); + map.insert("account_offer_rotation_capability".to_string(), Box::new(decoder::account_offer_rotation_capability)); + map.insert("account_offer_signer_capability".to_string(), Box::new(decoder::account_offer_signer_capability)); + map.insert("account_revoke_any_rotation_capability".to_string(), Box::new(decoder::account_revoke_any_rotation_capability)); + map.insert("account_revoke_any_signer_capability".to_string(), Box::new(decoder::account_revoke_any_signer_capability)); + map.insert("account_revoke_rotation_capability".to_string(), Box::new(decoder::account_revoke_rotation_capability)); + map.insert("account_revoke_signer_capability".to_string(), Box::new(decoder::account_revoke_signer_capability)); + map.insert("account_rotate_authentication_key".to_string(), Box::new(decoder::account_rotate_authentication_key)); + map.insert("account_rotate_authentication_key_call".to_string(), Box::new(decoder::account_rotate_authentication_key_call)); + map.insert("account_rotate_authentication_key_with_rotation_capability".to_string(), Box::new(decoder::account_rotate_authentication_key_with_rotation_capability)); + map.insert("automation_registry_cancel_system_task".to_string(), Box::new(decoder::automation_registry_cancel_system_task)); + map.insert("automation_registry_cancel_task".to_string(), Box::new(decoder::automation_registry_cancel_task)); + map.insert("automation_registry_stop_system_tasks".to_string(), Box::new(decoder::automation_registry_stop_system_tasks)); + map.insert("automation_registry_stop_tasks".to_string(), Box::new(decoder::automation_registry_stop_tasks)); + map.insert("code_publish_package_txn".to_string(), Box::new(decoder::code_publish_package_txn)); + map.insert("coin_create_coin_conversion_map".to_string(), Box::new(decoder::coin_create_coin_conversion_map)); + map.insert("coin_create_pairing".to_string(), Box::new(decoder::coin_create_pairing)); + map.insert("coin_migrate_to_fungible_store".to_string(), Box::new(decoder::coin_migrate_to_fungible_store)); + map.insert("coin_transfer".to_string(), Box::new(decoder::coin_transfer)); + map.insert("coin_upgrade_supply".to_string(), Box::new(decoder::coin_upgrade_supply)); + map.insert("committee_map_remove_committee".to_string(), Box::new(decoder::committee_map_remove_committee)); + map.insert("committee_map_remove_committee_bulk".to_string(), Box::new(decoder::committee_map_remove_committee_bulk)); + map.insert("committee_map_remove_committee_member".to_string(), Box::new(decoder::committee_map_remove_committee_member)); + map.insert("committee_map_update_dkg_flag".to_string(), Box::new(decoder::committee_map_update_dkg_flag)); + map.insert("committee_map_upsert_committee".to_string(), Box::new(decoder::committee_map_upsert_committee)); + map.insert("committee_map_upsert_committee_bulk".to_string(), Box::new(decoder::committee_map_upsert_committee_bulk)); + map.insert("committee_map_upsert_committee_member".to_string(), Box::new(decoder::committee_map_upsert_committee_member)); + map.insert("committee_map_upsert_committee_member_bulk".to_string(), Box::new(decoder::committee_map_upsert_committee_member_bulk)); + map.insert("managed_coin_burn".to_string(), Box::new(decoder::managed_coin_burn)); + map.insert("managed_coin_initialize".to_string(), Box::new(decoder::managed_coin_initialize)); + map.insert("managed_coin_mint".to_string(), Box::new(decoder::managed_coin_mint)); + map.insert("managed_coin_register".to_string(), Box::new(decoder::managed_coin_register)); + map.insert("multisig_account_add_owner".to_string(), Box::new(decoder::multisig_account_add_owner)); + map.insert("multisig_account_add_owners".to_string(), Box::new(decoder::multisig_account_add_owners)); + map.insert("multisig_account_add_owners_and_update_signatures_required".to_string(), Box::new(decoder::multisig_account_add_owners_and_update_signatures_required)); + map.insert("multisig_account_approve_transaction".to_string(), Box::new(decoder::multisig_account_approve_transaction)); + map.insert("multisig_account_create".to_string(), Box::new(decoder::multisig_account_create)); + map.insert("multisig_account_create_transaction".to_string(), Box::new(decoder::multisig_account_create_transaction)); + map.insert("multisig_account_create_transaction_with_hash".to_string(), Box::new(decoder::multisig_account_create_transaction_with_hash)); + map.insert("multisig_account_create_with_existing_account".to_string(), Box::new(decoder::multisig_account_create_with_existing_account)); + map.insert("multisig_account_create_with_existing_account_and_revoke_auth_key".to_string(), Box::new(decoder::multisig_account_create_with_existing_account_and_revoke_auth_key)); + map.insert("multisig_account_create_with_owners".to_string(), Box::new(decoder::multisig_account_create_with_owners)); + map.insert("multisig_account_create_with_owners_then_remove_bootstrapper".to_string(), Box::new(decoder::multisig_account_create_with_owners_then_remove_bootstrapper)); + map.insert("multisig_account_execute_rejected_transaction".to_string(), Box::new(decoder::multisig_account_execute_rejected_transaction)); + map.insert("multisig_account_execute_rejected_transactions".to_string(), Box::new(decoder::multisig_account_execute_rejected_transactions)); + map.insert("multisig_account_reject_transaction".to_string(), Box::new(decoder::multisig_account_reject_transaction)); + map.insert("multisig_account_remove_owner".to_string(), Box::new(decoder::multisig_account_remove_owner)); + map.insert("multisig_account_remove_owners".to_string(), Box::new(decoder::multisig_account_remove_owners)); + map.insert("multisig_account_swap_owner".to_string(), Box::new(decoder::multisig_account_swap_owner)); + map.insert("multisig_account_swap_owners".to_string(), Box::new(decoder::multisig_account_swap_owners)); + map.insert("multisig_account_swap_owners_and_update_signatures_required".to_string(), Box::new(decoder::multisig_account_swap_owners_and_update_signatures_required)); + map.insert("multisig_account_update_metadata".to_string(), Box::new(decoder::multisig_account_update_metadata)); + map.insert("multisig_account_update_signatures_required".to_string(), Box::new(decoder::multisig_account_update_signatures_required)); + map.insert("multisig_account_update_timeout_duration".to_string(), Box::new(decoder::multisig_account_update_timeout_duration)); + map.insert("multisig_account_vote_transaction".to_string(), Box::new(decoder::multisig_account_vote_transaction)); + map.insert("multisig_account_vote_transactions".to_string(), Box::new(decoder::multisig_account_vote_transactions)); + map.insert("multisig_account_vote_transanction".to_string(), Box::new(decoder::multisig_account_vote_transanction)); + map.insert("object_transfer_call".to_string(), Box::new(decoder::object_transfer_call)); + map.insert("object_code_deployment_publish".to_string(), Box::new(decoder::object_code_deployment_publish)); + map.insert("pbo_delegation_pool_add_stake".to_string(), Box::new(decoder::pbo_delegation_pool_add_stake)); + map.insert("pbo_delegation_pool_admin_increase_last_unlock_period".to_string(), Box::new(decoder::pbo_delegation_pool_admin_increase_last_unlock_period)); + map.insert("pbo_delegation_pool_delegate_voting_power".to_string(), Box::new(decoder::pbo_delegation_pool_delegate_voting_power)); + map.insert("pbo_delegation_pool_enable_partial_governance_voting".to_string(), Box::new(decoder::pbo_delegation_pool_enable_partial_governance_voting)); + map.insert("pbo_delegation_pool_fund_delegators_with_locked_stake".to_string(), Box::new(decoder::pbo_delegation_pool_fund_delegators_with_locked_stake)); + map.insert("pbo_delegation_pool_fund_delegators_with_stake".to_string(), Box::new(decoder::pbo_delegation_pool_fund_delegators_with_stake)); + map.insert("pbo_delegation_pool_initialize_delegation_pool_with_amount".to_string(), Box::new(decoder::pbo_delegation_pool_initialize_delegation_pool_with_amount)); + map.insert("pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin".to_string(), Box::new(decoder::pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin)); + map.insert("pbo_delegation_pool_lock_delegators_stakes".to_string(), Box::new(decoder::pbo_delegation_pool_lock_delegators_stakes)); + map.insert("pbo_delegation_pool_reactivate_stake".to_string(), Box::new(decoder::pbo_delegation_pool_reactivate_stake)); + map.insert("pbo_delegation_pool_replace_delegator".to_string(), Box::new(decoder::pbo_delegation_pool_replace_delegator)); + map.insert("pbo_delegation_pool_set_beneficiary_for_operator".to_string(), Box::new(decoder::pbo_delegation_pool_set_beneficiary_for_operator)); + map.insert("pbo_delegation_pool_set_delegated_voter".to_string(), Box::new(decoder::pbo_delegation_pool_set_delegated_voter)); + map.insert("pbo_delegation_pool_set_operator".to_string(), Box::new(decoder::pbo_delegation_pool_set_operator)); + map.insert("pbo_delegation_pool_synchronize_delegation_pool".to_string(), Box::new(decoder::pbo_delegation_pool_synchronize_delegation_pool)); + map.insert("pbo_delegation_pool_unlock".to_string(), Box::new(decoder::pbo_delegation_pool_unlock)); + map.insert("pbo_delegation_pool_update_commission_percentage".to_string(), Box::new(decoder::pbo_delegation_pool_update_commission_percentage)); + map.insert("pbo_delegation_pool_update_unlocking_schedule".to_string(), Box::new(decoder::pbo_delegation_pool_update_unlocking_schedule)); + map.insert("pbo_delegation_pool_update_unlocking_schedule_unchecked".to_string(), Box::new(decoder::pbo_delegation_pool_update_unlocking_schedule_unchecked)); + map.insert("pbo_delegation_pool_withdraw".to_string(), Box::new(decoder::pbo_delegation_pool_withdraw)); + map.insert("resource_account_create_resource_account".to_string(), Box::new(decoder::resource_account_create_resource_account)); + map.insert("resource_account_create_resource_account_and_fund".to_string(), Box::new(decoder::resource_account_create_resource_account_and_fund)); + map.insert("resource_account_create_resource_account_and_publish_package".to_string(), Box::new(decoder::resource_account_create_resource_account_and_publish_package)); + map.insert("stake_add_stake".to_string(), Box::new(decoder::stake_add_stake)); + map.insert("stake_increase_lockup".to_string(), Box::new(decoder::stake_increase_lockup)); + map.insert("stake_initialize_stake_owner".to_string(), Box::new(decoder::stake_initialize_stake_owner)); + map.insert("stake_initialize_validator".to_string(), Box::new(decoder::stake_initialize_validator)); + map.insert("stake_join_validator_set".to_string(), Box::new(decoder::stake_join_validator_set)); + map.insert("stake_leave_validator_set".to_string(), Box::new(decoder::stake_leave_validator_set)); + map.insert("stake_reactivate_stake".to_string(), Box::new(decoder::stake_reactivate_stake)); + map.insert("stake_rotate_consensus_key".to_string(), Box::new(decoder::stake_rotate_consensus_key)); + map.insert("stake_set_delegated_voter".to_string(), Box::new(decoder::stake_set_delegated_voter)); + map.insert("stake_set_operator".to_string(), Box::new(decoder::stake_set_operator)); + map.insert("stake_unlock".to_string(), Box::new(decoder::stake_unlock)); + map.insert("stake_update_network_and_fullnode_addresses".to_string(), Box::new(decoder::stake_update_network_and_fullnode_addresses)); + map.insert("stake_withdraw".to_string(), Box::new(decoder::stake_withdraw)); + map.insert("staking_contract_add_stake".to_string(), Box::new(decoder::staking_contract_add_stake)); + map.insert("staking_contract_create_staking_contract".to_string(), Box::new(decoder::staking_contract_create_staking_contract)); + map.insert("staking_contract_distribute".to_string(), Box::new(decoder::staking_contract_distribute)); + map.insert("staking_contract_request_commission".to_string(), Box::new(decoder::staking_contract_request_commission)); + map.insert("staking_contract_reset_lockup".to_string(), Box::new(decoder::staking_contract_reset_lockup)); + map.insert("staking_contract_set_beneficiary_for_operator".to_string(), Box::new(decoder::staking_contract_set_beneficiary_for_operator)); + map.insert("staking_contract_switch_operator".to_string(), Box::new(decoder::staking_contract_switch_operator)); + map.insert("staking_contract_switch_operator_with_same_commission".to_string(), Box::new(decoder::staking_contract_switch_operator_with_same_commission)); + map.insert("staking_contract_unlock_rewards".to_string(), Box::new(decoder::staking_contract_unlock_rewards)); + map.insert("staking_contract_unlock_stake".to_string(), Box::new(decoder::staking_contract_unlock_stake)); + map.insert("staking_contract_update_commision".to_string(), Box::new(decoder::staking_contract_update_commision)); + map.insert("staking_contract_update_voter".to_string(), Box::new(decoder::staking_contract_update_voter)); + map.insert("staking_proxy_set_operator".to_string(), Box::new(decoder::staking_proxy_set_operator)); + map.insert("staking_proxy_set_stake_pool_operator".to_string(), Box::new(decoder::staking_proxy_set_stake_pool_operator)); + map.insert("staking_proxy_set_stake_pool_voter".to_string(), Box::new(decoder::staking_proxy_set_stake_pool_voter)); + map.insert("staking_proxy_set_staking_contract_operator".to_string(), Box::new(decoder::staking_proxy_set_staking_contract_operator)); + map.insert("staking_proxy_set_staking_contract_voter".to_string(), Box::new(decoder::staking_proxy_set_staking_contract_voter)); + map.insert("staking_proxy_set_vesting_contract_operator".to_string(), Box::new(decoder::staking_proxy_set_vesting_contract_operator)); + map.insert("staking_proxy_set_vesting_contract_voter".to_string(), Box::new(decoder::staking_proxy_set_vesting_contract_voter)); + map.insert("staking_proxy_set_voter".to_string(), Box::new(decoder::staking_proxy_set_voter)); + map.insert("supra_account_batch_transfer".to_string(), Box::new(decoder::supra_account_batch_transfer)); + map.insert("supra_account_batch_transfer_coins".to_string(), Box::new(decoder::supra_account_batch_transfer_coins)); + map.insert("supra_account_create_account".to_string(), Box::new(decoder::supra_account_create_account)); + map.insert("supra_account_set_allow_direct_coin_transfers".to_string(), Box::new(decoder::supra_account_set_allow_direct_coin_transfers)); + map.insert("supra_account_transfer".to_string(), Box::new(decoder::supra_account_transfer)); + map.insert("supra_account_transfer_coins".to_string(), Box::new(decoder::supra_account_transfer_coins)); + map.insert("supra_coin_claim_mint_capability".to_string(), Box::new(decoder::supra_coin_claim_mint_capability)); + map.insert("supra_coin_delegate_mint_capability".to_string(), Box::new(decoder::supra_coin_delegate_mint_capability)); + map.insert("supra_coin_mint".to_string(), Box::new(decoder::supra_coin_mint)); + map.insert("supra_governance_add_supra_approved_script_hash_script".to_string(), Box::new(decoder::supra_governance_add_supra_approved_script_hash_script)); + map.insert("supra_governance_force_end_epoch".to_string(), Box::new(decoder::supra_governance_force_end_epoch)); + map.insert("supra_governance_force_end_epoch_test_only".to_string(), Box::new(decoder::supra_governance_force_end_epoch_test_only)); + map.insert("supra_governance_reconfigure".to_string(), Box::new(decoder::supra_governance_reconfigure)); + map.insert("supra_governance_supra_create_proposal".to_string(), Box::new(decoder::supra_governance_supra_create_proposal)); + map.insert("supra_governance_supra_create_proposal_v2".to_string(), Box::new(decoder::supra_governance_supra_create_proposal_v2)); + map.insert("supra_governance_supra_vote".to_string(), Box::new(decoder::supra_governance_supra_vote)); + map.insert("transaction_fee_convert_to_aptos_fa_burn_ref".to_string(), Box::new(decoder::transaction_fee_convert_to_aptos_fa_burn_ref)); + map.insert("version_set_for_next_epoch".to_string(), Box::new(decoder::version_set_for_next_epoch)); + map.insert("version_set_version".to_string(), Box::new(decoder::version_set_version)); + map.insert("vesting_admin_withdraw".to_string(), Box::new(decoder::vesting_admin_withdraw)); + map.insert("vesting_distribute".to_string(), Box::new(decoder::vesting_distribute)); + map.insert("vesting_distribute_many".to_string(), Box::new(decoder::vesting_distribute_many)); + map.insert("vesting_reset_beneficiary".to_string(), Box::new(decoder::vesting_reset_beneficiary)); + map.insert("vesting_reset_lockup".to_string(), Box::new(decoder::vesting_reset_lockup)); + map.insert("vesting_set_beneficiary".to_string(), Box::new(decoder::vesting_set_beneficiary)); + map.insert("vesting_set_beneficiary_for_operator".to_string(), Box::new(decoder::vesting_set_beneficiary_for_operator)); + map.insert("vesting_set_beneficiary_resetter".to_string(), Box::new(decoder::vesting_set_beneficiary_resetter)); + map.insert("vesting_set_management_role".to_string(), Box::new(decoder::vesting_set_management_role)); + map.insert("vesting_terminate_vesting_contract".to_string(), Box::new(decoder::vesting_terminate_vesting_contract)); + map.insert("vesting_unlock_rewards".to_string(), Box::new(decoder::vesting_unlock_rewards)); + map.insert("vesting_unlock_rewards_many".to_string(), Box::new(decoder::vesting_unlock_rewards_many)); + map.insert("vesting_update_commission_percentage".to_string(), Box::new(decoder::vesting_update_commission_percentage)); + map.insert("vesting_update_operator".to_string(), Box::new(decoder::vesting_update_operator)); + map.insert("vesting_update_operator_with_same_commission".to_string(), Box::new(decoder::vesting_update_operator_with_same_commission)); + map.insert("vesting_update_voter".to_string(), Box::new(decoder::vesting_update_voter)); + map.insert("vesting_vest".to_string(), Box::new(decoder::vesting_vest)); + map.insert("vesting_vest_many".to_string(), Box::new(decoder::vesting_vest_many)); + map.insert("vesting_without_staking_admin_delay_vesting".to_string(), Box::new(decoder::vesting_without_staking_admin_delay_vesting)); + map.insert("vesting_without_staking_admin_withdraw".to_string(), Box::new(decoder::vesting_without_staking_admin_withdraw)); + map.insert("vesting_without_staking_create_vesting_contract_with_amounts".to_string(), Box::new(decoder::vesting_without_staking_create_vesting_contract_with_amounts)); + map.insert("vesting_without_staking_remove_shareholder".to_string(), Box::new(decoder::vesting_without_staking_remove_shareholder)); + map.insert("vesting_without_staking_reset_beneficiary".to_string(), Box::new(decoder::vesting_without_staking_reset_beneficiary)); + map.insert("vesting_without_staking_set_beneficiary".to_string(), Box::new(decoder::vesting_without_staking_set_beneficiary)); + map.insert("vesting_without_staking_set_beneficiary_resetter".to_string(), Box::new(decoder::vesting_without_staking_set_beneficiary_resetter)); + map.insert("vesting_without_staking_set_management_role".to_string(), Box::new(decoder::vesting_without_staking_set_management_role)); + map.insert("vesting_without_staking_set_vesting_schedule".to_string(), Box::new(decoder::vesting_without_staking_set_vesting_schedule)); + map.insert("vesting_without_staking_terminate_vesting_contract".to_string(), Box::new(decoder::vesting_without_staking_terminate_vesting_contract)); + map.insert("vesting_without_staking_vest".to_string(), Box::new(decoder::vesting_without_staking_vest)); + map.insert("vesting_without_staking_vest_individual".to_string(), Box::new(decoder::vesting_without_staking_vest_individual)); + map +}); diff --git a/types/src/on_chain_config/evm_contracts_details.rs b/types/src/on_chain_config/evm_contracts_details.rs index 6d995ab838c..e67a100f9df 100644 --- a/types/src/on_chain_config/evm_contracts_details.rs +++ b/types/src/on_chain_config/evm_contracts_details.rs @@ -10,21 +10,14 @@ use std::str::FromStr; use move_core_types::value::MoveValue; /// Evm Contract Names deployed by Supra at genesis or later to be part of Supra EVM main state. -// TODO: at runtime BlockMetadata, AutomationRegistry and maybe AutomationController is required -// The rest will not be utilized by node runtime. Should we keep for the sake of consistency between -// persistent state and runtime state or we can +/// Currently only system targeted contracts have dedicated enum variants, the rest will be stored +/// as instance of [Self::Custom] variant. #[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, Hash, PartialOrd, Ord)] pub enum EvmContractName { - Treasury = 0, - Erc20Treasury, - MultiSignatureWallet, - MultisigBeacon, - FoundationWallet, - Erc20Supra, BlockMetadata, - AutomationCore, - AutomationRegistry, AutomationController, + AutomationRegistry, + Custom(String), } impl FromStr for EvmContractName { @@ -32,17 +25,10 @@ impl FromStr for EvmContractName { fn from_str(s: &str) -> Result { match s { - "treasury" => Ok(EvmContractName::Treasury), - "erc20_treasury" => Ok(EvmContractName::Erc20Treasury), - "multi_signature_wallet" => Ok(EvmContractName::MultiSignatureWallet), - "multisig_beacon" => Ok(EvmContractName::MultisigBeacon), - "foundation_wallet" => Ok(EvmContractName::FoundationWallet), - "erc20_supra" => Ok(EvmContractName::Erc20Supra), - "block_metadata" => Ok(EvmContractName::BlockMetadata), - "automation_core" => Ok(EvmContractName::AutomationCore), - "automation_registry" => Ok(EvmContractName::AutomationRegistry), - "automation_controller" => Ok(EvmContractName::AutomationController), - _ => Err(anyhow::anyhow!("unknown evm contract name: {}", s)), + "BlockMetadata" => Ok(EvmContractName::BlockMetadata), + "AutomationCore" => Ok(EvmContractName::AutomationController), + "AutomationRegistry" => Ok(EvmContractName::AutomationRegistry), + n => Ok(EvmContractName::Custom(n.to_string())), } } } @@ -50,16 +36,10 @@ impl FromStr for EvmContractName { impl Display for EvmContractName { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { - EvmContractName::Treasury => write!(f, "treasury"), - EvmContractName::Erc20Treasury => write!(f, "erc20_treasury"), - EvmContractName::MultiSignatureWallet => write!(f, "multi_signature_wallet"), - EvmContractName::MultisigBeacon => write!(f, "multisig_beacon"), - EvmContractName::FoundationWallet => write!(f, "foundation_wallet"), - EvmContractName::Erc20Supra => write!(f, "erc20_supra"), - EvmContractName::BlockMetadata => write!(f, "block_metadata"), - EvmContractName::AutomationCore => write!(f, "automation_core"), - EvmContractName::AutomationRegistry => write!(f, "automation_registry"), - EvmContractName::AutomationController => write!(f, "automation_controller"), + EvmContractName::BlockMetadata => write!(f, "BlockMetadata"), + EvmContractName::AutomationController => write!(f, "AutomationCore"), + EvmContractName::AutomationRegistry => write!(f, "AutomationRegistry"), + EvmContractName::Custom(n) => write!(f, "{n}"), } } } From 94458617117f86170fb825f0bb82ca73d8753b60 Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <> Date: Wed, 22 Apr 2026 22:41:20 +0400 Subject: [PATCH 05/12] Fixed EvnContractName string values --- .../src/aptos_framework_sdk_builder.rs | 8201 +++++++++++------ .../on_chain_config/evm_contracts_details.rs | 4 +- 2 files changed, 5437 insertions(+), 2768 deletions(-) diff --git a/aptos-move/framework/cached-packages/src/aptos_framework_sdk_builder.rs b/aptos-move/framework/cached-packages/src/aptos_framework_sdk_builder.rs index 0e8fa86271c..6021de2c273 100644 --- a/aptos-move/framework/cached-packages/src/aptos_framework_sdk_builder.rs +++ b/aptos-move/framework/cached-packages/src/aptos_framework_sdk_builder.rs @@ -1,4 +1,3 @@ - // Copyright © Aptos Foundation // SPDX-License-Identifier: Apache-2.0 @@ -16,14 +15,17 @@ #![allow(clippy::too_many_arguments)] #![allow(clippy::arc_with_non_send_sync)] #![allow(clippy::get_first)] -use aptos_types::account_address::{AccountAddress}; -use aptos_types::transaction::{TransactionPayload, EntryFunction}; -use move_core_types::{ident_str}; -use move_core_types::language_storage::{ModuleId, TypeTag}; +use aptos_types::{ + account_address::AccountAddress, + transaction::{EntryFunction, TransactionPayload}, +}; +use move_core_types::{ + ident_str, + language_storage::{ModuleId, TypeTag}, +}; type Bytes = Vec; - /// Structured representation of a call into a known Move entry function. /// ```ignore /// impl EntryFunctionCall { @@ -35,7 +37,6 @@ type Bytes = Vec; #[cfg_attr(feature = "fuzzing", derive(proptest_derive::Arbitrary))] #[cfg_attr(feature = "fuzzing", proptest(no_params))] pub enum EntryFunctionCall { - /// Offers rotation capability on behalf of `account` to the account at address `recipient_address`. /// An account can delegate its rotation capability to only one other address at one time. If the account /// has an existing rotation capability offer, calling this function will update the rotation capability offer with @@ -77,12 +78,10 @@ pub enum EntryFunctionCall { }, /// Revoke any rotation capability offer in the specified account. - AccountRevokeAnyRotationCapability { - }, + AccountRevokeAnyRotationCapability {}, /// Revoke any signer capability offer in the specified account. - AccountRevokeAnySignerCapability { - }, + AccountRevokeAnySignerCapability {}, /// Revoke the rotation capability offer given to `to_be_revoked_recipient_address` from `account` AccountRevokeRotationCapability { @@ -141,7 +140,6 @@ pub enum EntryFunctionCall { new_auth_key: Vec, }, - AccountRotateAuthenticationKeyWithRotationCapability { rotation_cap_offerer_address: AccountAddress, new_scheme: u8, @@ -196,9 +194,7 @@ pub enum EntryFunctionCall { code: Vec>, }, - - CoinCreateCoinConversionMap { - }, + CoinCreateCoinConversionMap {}, /// Create SUPRA pairing by passing `SupraCoin`. CoinCreatePairing { @@ -569,7 +565,6 @@ pub enum EntryFunctionCall { amount: u64, }, - PboDelegationPoolAdminIncreaseLastUnlockPeriod { pool_address: AccountAddress, additional_periods: u64, @@ -588,14 +583,12 @@ pub enum EntryFunctionCall { pool_address: AccountAddress, }, - PboDelegationPoolFundDelegatorsWithLockedStake { pool_address: AccountAddress, delegators: Vec, stakes: Vec, }, - PboDelegationPoolFundDelegatorsWithStake { pool_address: AccountAddress, delegators: Vec, @@ -715,7 +708,6 @@ pub enum EntryFunctionCall { unlock_duration: u64, }, - PboDelegationPoolUpdateUnlockingScheduleUnchecked { pool_address: AccountAddress, unlock_numerators: Vec, @@ -764,8 +756,7 @@ pub enum EntryFunctionCall { }, /// Similar to increase_lockup_with_cap but will use ownership capability from the signing account. - StakeIncreaseLockup { - }, + StakeIncreaseLockup {}, /// Initialize the validator account and give ownership to the signing account /// except it leaves the ValidatorConfig to be set by another entity. @@ -918,47 +909,39 @@ pub enum EntryFunctionCall { new_voter: AccountAddress, }, - StakingProxySetOperator { old_operator: AccountAddress, new_operator: AccountAddress, }, - StakingProxySetStakePoolOperator { new_operator: AccountAddress, }, - StakingProxySetStakePoolVoter { new_voter: AccountAddress, }, - StakingProxySetStakingContractOperator { old_operator: AccountAddress, new_operator: AccountAddress, }, - StakingProxySetStakingContractVoter { operator: AccountAddress, new_voter: AccountAddress, }, - StakingProxySetVestingContractOperator { old_operator: AccountAddress, new_operator: AccountAddress, }, - StakingProxySetVestingContractVoter { operator: AccountAddress, new_voter: AccountAddress, }, - StakingProxySetVoter { operator: AccountAddress, new_voter: AccountAddress, @@ -1004,8 +987,7 @@ pub enum EntryFunctionCall { /// Only callable in tests and testnets where the core resources account exists. /// Claim the delegated mint capability and destroy the delegated token. - SupraCoinClaimMintCapability { - }, + SupraCoinClaimMintCapability {}, /// Only callable in tests and testnets where the core resources account exists. /// Create delegated token for the address so the account could claim MintCapability later. @@ -1020,7 +1002,6 @@ pub enum EntryFunctionCall { amount: u64, }, - SupraGovernanceAddSupraApprovedScriptHashScript { proposal_id: u64, }, @@ -1031,13 +1012,11 @@ pub enum EntryFunctionCall { /// /// WARNING: currently only used by tests. In most cases you should use `reconfigure()` instead. /// TODO: migrate these tests to be aware of async reconfiguration. - SupraGovernanceForceEndEpoch { - }, + SupraGovernanceForceEndEpoch {}, /// `force_end_epoch()` equivalent but only called in testnet, /// where the core resources account exists and has been granted power to mint Supra coins. - SupraGovernanceForceEndEpochTestOnly { - }, + SupraGovernanceForceEndEpochTestOnly {}, /// Manually reconfigure. Called at the end of a governance txn that alters on-chain configs. /// @@ -1048,8 +1027,7 @@ pub enum EntryFunctionCall { /// /// This behavior affects when an update of an on-chain config (e.g. `ConsensusConfig`, `Features`) takes effect, /// since such updates are applied whenever we enter a new epoch. - SupraGovernanceReconfigure { - }, + SupraGovernanceReconfigure {}, /// Create a single-step proposal with the backing `stake_pool`. /// @param execution_hash Required. This is the hash of the resolution script. When the proposal is resolved, @@ -1076,9 +1054,7 @@ pub enum EntryFunctionCall { should_pass: bool, }, - - TransactionFeeConvertToAptosFaBurnRef { - }, + TransactionFeeConvertToAptosFaBurnRef {}, /// Used in on-chain governances to update the major version for the next epoch. /// Example usage: @@ -1120,12 +1096,10 @@ pub enum EntryFunctionCall { shareholder: AccountAddress, }, - VestingResetLockup { contract_address: AccountAddress, }, - VestingSetBeneficiary { contract_address: AccountAddress, shareholder: AccountAddress, @@ -1137,13 +1111,11 @@ pub enum EntryFunctionCall { new_beneficiary: AccountAddress, }, - VestingSetBeneficiaryResetter { contract_address: AccountAddress, beneficiary_resetter: AccountAddress, }, - VestingSetManagementRole { contract_address: AccountAddress, role: Vec, @@ -1165,26 +1137,22 @@ pub enum EntryFunctionCall { contract_addresses: Vec, }, - VestingUpdateCommissionPercentage { contract_address: AccountAddress, new_commission_percentage: u64, }, - VestingUpdateOperator { contract_address: AccountAddress, new_operator: AccountAddress, commission_percentage: u64, }, - VestingUpdateOperatorWithSameCommission { contract_address: AccountAddress, new_operator: AccountAddress, }, - VestingUpdateVoter { contract_address: AccountAddress, new_voter: AccountAddress, @@ -1200,7 +1168,6 @@ pub enum EntryFunctionCall { contract_addresses: Vec, }, - VestingWithoutStakingAdminDelayVesting { contract_address: AccountAddress, delay_periods: u64, @@ -1212,7 +1179,6 @@ pub enum EntryFunctionCall { contract_address: AccountAddress, }, - VestingWithoutStakingCreateVestingContractWithAmounts { shareholders: Vec, shares: Vec, @@ -1238,27 +1204,23 @@ pub enum EntryFunctionCall { shareholder: AccountAddress, }, - VestingWithoutStakingSetBeneficiary { contract_address: AccountAddress, shareholder: AccountAddress, new_beneficiary: AccountAddress, }, - VestingWithoutStakingSetBeneficiaryResetter { contract_address: AccountAddress, beneficiary_resetter: AccountAddress, }, - VestingWithoutStakingSetManagementRole { contract_address: AccountAddress, role: Vec, role_holder: AccountAddress, }, - VestingWithoutStakingSetVestingSchedule { contract_address: AccountAddress, vesting_numerators: Vec, @@ -1276,191 +1238,871 @@ pub enum EntryFunctionCall { contract_address: AccountAddress, }, - VestingWithoutStakingVestIndividual { contract_address: AccountAddress, shareholder_address: AccountAddress, }, } - impl EntryFunctionCall { - /// Build an Aptos `TransactionPayload` from a structured object `EntryFunctionCall`. pub fn encode(self) -> TransactionPayload { use EntryFunctionCall::*; match self { - AccountOfferRotationCapability{rotation_capability_sig_bytes, account_scheme, account_public_key_bytes, recipient_address} => account_offer_rotation_capability(rotation_capability_sig_bytes, account_scheme, account_public_key_bytes, recipient_address), - AccountOfferSignerCapability{signer_capability_sig_bytes, account_scheme, account_public_key_bytes, recipient_address} => account_offer_signer_capability(signer_capability_sig_bytes, account_scheme, account_public_key_bytes, recipient_address), - AccountRevokeAnyRotationCapability{} => account_revoke_any_rotation_capability(), - AccountRevokeAnySignerCapability{} => account_revoke_any_signer_capability(), - AccountRevokeRotationCapability{to_be_revoked_address} => account_revoke_rotation_capability(to_be_revoked_address), - AccountRevokeSignerCapability{to_be_revoked_address} => account_revoke_signer_capability(to_be_revoked_address), - AccountRotateAuthenticationKey{from_scheme, from_public_key_bytes, to_scheme, to_public_key_bytes, cap_rotate_key, cap_update_table} => account_rotate_authentication_key(from_scheme, from_public_key_bytes, to_scheme, to_public_key_bytes, cap_rotate_key, cap_update_table), - AccountRotateAuthenticationKeyCall{new_auth_key} => account_rotate_authentication_key_call(new_auth_key), - AccountRotateAuthenticationKeyWithRotationCapability{rotation_cap_offerer_address, new_scheme, new_public_key_bytes, cap_update_table} => account_rotate_authentication_key_with_rotation_capability(rotation_cap_offerer_address, new_scheme, new_public_key_bytes, cap_update_table), - AutomationRegistryCancelSystemTask{task_index} => automation_registry_cancel_system_task(task_index), - AutomationRegistryCancelTask{task_index} => automation_registry_cancel_task(task_index), - AutomationRegistryStopSystemTasks{task_indexes} => automation_registry_stop_system_tasks(task_indexes), - AutomationRegistryStopTasks{task_indexes} => automation_registry_stop_tasks(task_indexes), - CodePublishPackageTxn{metadata_serialized, code} => code_publish_package_txn(metadata_serialized, code), - CoinCreateCoinConversionMap{} => coin_create_coin_conversion_map(), - CoinCreatePairing{coin_type} => coin_create_pairing(coin_type), - CoinMigrateToFungibleStore{coin_type} => coin_migrate_to_fungible_store(coin_type), - CoinTransfer{coin_type, to, amount} => coin_transfer(coin_type, to, amount), - CoinUpgradeSupply{coin_type} => coin_upgrade_supply(coin_type), - CommitteeMapRemoveCommittee{com_store_addr, id} => committee_map_remove_committee(com_store_addr, id), - CommitteeMapRemoveCommitteeBulk{com_store_addr, ids} => committee_map_remove_committee_bulk(com_store_addr, ids), - CommitteeMapRemoveCommitteeMember{com_store_addr, id, node_address} => committee_map_remove_committee_member(com_store_addr, id, node_address), - CommitteeMapUpdateDkgFlag{com_store_addr, com_id, flag_value} => committee_map_update_dkg_flag(com_store_addr, com_id, flag_value), - CommitteeMapUpsertCommittee{com_store_addr, id, node_addresses, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port, committee_type} => committee_map_upsert_committee(com_store_addr, id, node_addresses, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port, committee_type), - CommitteeMapUpsertCommitteeBulk{com_store_addr, ids, node_addresses_bulk, ip_public_address_bulk, node_public_key_bulk, network_public_key_bulk, cg_public_key_bulk, network_port_bulk, rpc_por_bulkt, committee_types} => committee_map_upsert_committee_bulk(com_store_addr, ids, node_addresses_bulk, ip_public_address_bulk, node_public_key_bulk, network_public_key_bulk, cg_public_key_bulk, network_port_bulk, rpc_por_bulkt, committee_types), - CommitteeMapUpsertCommitteeMember{com_store_addr, id, node_address, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port} => committee_map_upsert_committee_member(com_store_addr, id, node_address, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port), - CommitteeMapUpsertCommitteeMemberBulk{com_store_addr, ids, node_addresses, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port} => committee_map_upsert_committee_member_bulk(com_store_addr, ids, node_addresses, ip_public_address, node_public_key, network_public_key, cg_public_key, network_port, rpc_port), - ManagedCoinBurn{coin_type, amount} => managed_coin_burn(coin_type, amount), - ManagedCoinInitialize{coin_type, name, symbol, decimals, monitor_supply} => managed_coin_initialize(coin_type, name, symbol, decimals, monitor_supply), - ManagedCoinMint{coin_type, dst_addr, amount} => managed_coin_mint(coin_type, dst_addr, amount), - ManagedCoinRegister{coin_type} => managed_coin_register(coin_type), - MultisigAccountAddOwner{new_owner} => multisig_account_add_owner(new_owner), - MultisigAccountAddOwners{new_owners} => multisig_account_add_owners(new_owners), - MultisigAccountAddOwnersAndUpdateSignaturesRequired{new_owners, new_num_signatures_required} => multisig_account_add_owners_and_update_signatures_required(new_owners, new_num_signatures_required), - MultisigAccountApproveTransaction{multisig_account, sequence_number} => multisig_account_approve_transaction(multisig_account, sequence_number), - MultisigAccountCreate{num_signatures_required, metadata_keys, metadata_values, timeout_duration} => multisig_account_create(num_signatures_required, metadata_keys, metadata_values, timeout_duration), - MultisigAccountCreateTransaction{multisig_account, payload} => multisig_account_create_transaction(multisig_account, payload), - MultisigAccountCreateTransactionWithHash{multisig_account, payload_hash} => multisig_account_create_transaction_with_hash(multisig_account, payload_hash), - MultisigAccountCreateWithExistingAccount{multisig_address, owners, num_signatures_required, account_scheme, account_public_key, create_multisig_account_signed_message, metadata_keys, metadata_values, timeout_duration} => multisig_account_create_with_existing_account(multisig_address, owners, num_signatures_required, account_scheme, account_public_key, create_multisig_account_signed_message, metadata_keys, metadata_values, timeout_duration), - MultisigAccountCreateWithExistingAccountAndRevokeAuthKey{multisig_address, owners, num_signatures_required, account_scheme, account_public_key, create_multisig_account_signed_message, metadata_keys, metadata_values, timeout_duration} => multisig_account_create_with_existing_account_and_revoke_auth_key(multisig_address, owners, num_signatures_required, account_scheme, account_public_key, create_multisig_account_signed_message, metadata_keys, metadata_values, timeout_duration), - MultisigAccountCreateWithOwners{additional_owners, num_signatures_required, metadata_keys, metadata_values, timeout_duration} => multisig_account_create_with_owners(additional_owners, num_signatures_required, metadata_keys, metadata_values, timeout_duration), - MultisigAccountCreateWithOwnersThenRemoveBootstrapper{owners, num_signatures_required, metadata_keys, metadata_values, timeout_duration} => multisig_account_create_with_owners_then_remove_bootstrapper(owners, num_signatures_required, metadata_keys, metadata_values, timeout_duration), - MultisigAccountExecuteRejectedTransaction{multisig_account} => multisig_account_execute_rejected_transaction(multisig_account), - MultisigAccountExecuteRejectedTransactions{multisig_account, final_sequence_number} => multisig_account_execute_rejected_transactions(multisig_account, final_sequence_number), - MultisigAccountRejectTransaction{multisig_account, sequence_number} => multisig_account_reject_transaction(multisig_account, sequence_number), - MultisigAccountRemoveOwner{owner_to_remove} => multisig_account_remove_owner(owner_to_remove), - MultisigAccountRemoveOwners{owners_to_remove} => multisig_account_remove_owners(owners_to_remove), - MultisigAccountSwapOwner{to_swap_in, to_swap_out} => multisig_account_swap_owner(to_swap_in, to_swap_out), - MultisigAccountSwapOwners{to_swap_in, to_swap_out} => multisig_account_swap_owners(to_swap_in, to_swap_out), - MultisigAccountSwapOwnersAndUpdateSignaturesRequired{new_owners, owners_to_remove, new_num_signatures_required} => multisig_account_swap_owners_and_update_signatures_required(new_owners, owners_to_remove, new_num_signatures_required), - MultisigAccountUpdateMetadata{keys, values} => multisig_account_update_metadata(keys, values), - MultisigAccountUpdateSignaturesRequired{new_num_signatures_required} => multisig_account_update_signatures_required(new_num_signatures_required), - MultisigAccountUpdateTimeoutDuration{timeout_duration} => multisig_account_update_timeout_duration(timeout_duration), - MultisigAccountVoteTransaction{multisig_account, sequence_number, approved} => multisig_account_vote_transaction(multisig_account, sequence_number, approved), - MultisigAccountVoteTransactions{multisig_account, starting_sequence_number, final_sequence_number, approved} => multisig_account_vote_transactions(multisig_account, starting_sequence_number, final_sequence_number, approved), - MultisigAccountVoteTransanction{multisig_account, sequence_number, approved} => multisig_account_vote_transanction(multisig_account, sequence_number, approved), - ObjectTransferCall{object, to} => object_transfer_call(object, to), - ObjectCodeDeploymentPublish{metadata_serialized, code} => object_code_deployment_publish(metadata_serialized, code), - PboDelegationPoolAddStake{pool_address, amount} => pbo_delegation_pool_add_stake(pool_address, amount), - PboDelegationPoolAdminIncreaseLastUnlockPeriod{pool_address, additional_periods} => pbo_delegation_pool_admin_increase_last_unlock_period(pool_address, additional_periods), - PboDelegationPoolDelegateVotingPower{pool_address, new_voter} => pbo_delegation_pool_delegate_voting_power(pool_address, new_voter), - PboDelegationPoolEnablePartialGovernanceVoting{pool_address} => pbo_delegation_pool_enable_partial_governance_voting(pool_address), - PboDelegationPoolFundDelegatorsWithLockedStake{pool_address, delegators, stakes} => pbo_delegation_pool_fund_delegators_with_locked_stake(pool_address, delegators, stakes), - PboDelegationPoolFundDelegatorsWithStake{pool_address, delegators, stakes} => pbo_delegation_pool_fund_delegators_with_stake(pool_address, delegators, stakes), - PboDelegationPoolInitializeDelegationPoolWithAmount{multisig_admin, amount, operator_commission_percentage, delegation_pool_creation_seed, delegator_address, principle_stake, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration} => pbo_delegation_pool_initialize_delegation_pool_with_amount(multisig_admin, amount, operator_commission_percentage, delegation_pool_creation_seed, delegator_address, principle_stake, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration), - PboDelegationPoolInitializeDelegationPoolWithAmountWithoutMultisigAdmin{amount, operator_commission_percentage, delegation_pool_creation_seed, delegator_address, principle_stake, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration} => pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin(amount, operator_commission_percentage, delegation_pool_creation_seed, delegator_address, principle_stake, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration), - PboDelegationPoolLockDelegatorsStakes{pool_address, delegators, new_principle_stakes} => pbo_delegation_pool_lock_delegators_stakes(pool_address, delegators, new_principle_stakes), - PboDelegationPoolReactivateStake{pool_address, amount} => pbo_delegation_pool_reactivate_stake(pool_address, amount), - PboDelegationPoolReplaceDelegator{pool_address, old_delegator, new_delegator} => pbo_delegation_pool_replace_delegator(pool_address, old_delegator, new_delegator), - PboDelegationPoolSetBeneficiaryForOperator{new_beneficiary} => pbo_delegation_pool_set_beneficiary_for_operator(new_beneficiary), - PboDelegationPoolSetDelegatedVoter{new_voter} => pbo_delegation_pool_set_delegated_voter(new_voter), - PboDelegationPoolSetOperator{new_operator} => pbo_delegation_pool_set_operator(new_operator), - PboDelegationPoolSynchronizeDelegationPool{pool_address} => pbo_delegation_pool_synchronize_delegation_pool(pool_address), - PboDelegationPoolUnlock{pool_address, amount} => pbo_delegation_pool_unlock(pool_address, amount), - PboDelegationPoolUpdateCommissionPercentage{new_commission_percentage} => pbo_delegation_pool_update_commission_percentage(new_commission_percentage), - PboDelegationPoolUpdateUnlockingSchedule{pool_address, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration} => pbo_delegation_pool_update_unlocking_schedule(pool_address, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration), - PboDelegationPoolUpdateUnlockingScheduleUnchecked{pool_address, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration, last_unlock_period} => pbo_delegation_pool_update_unlocking_schedule_unchecked(pool_address, unlock_numerators, unlock_denominator, unlock_start_time, unlock_duration, last_unlock_period), - PboDelegationPoolWithdraw{pool_address, amount} => pbo_delegation_pool_withdraw(pool_address, amount), - ResourceAccountCreateResourceAccount{seed, optional_auth_key} => resource_account_create_resource_account(seed, optional_auth_key), - ResourceAccountCreateResourceAccountAndFund{seed, optional_auth_key, fund_amount} => resource_account_create_resource_account_and_fund(seed, optional_auth_key, fund_amount), - ResourceAccountCreateResourceAccountAndPublishPackage{seed, metadata_serialized, code} => resource_account_create_resource_account_and_publish_package(seed, metadata_serialized, code), - StakeAddStake{amount} => stake_add_stake(amount), - StakeIncreaseLockup{} => stake_increase_lockup(), - StakeInitializeStakeOwner{initial_stake_amount, operator, voter} => stake_initialize_stake_owner(initial_stake_amount, operator, voter), - StakeInitializeValidator{consensus_pubkey, network_addresses, fullnode_addresses} => stake_initialize_validator(consensus_pubkey, network_addresses, fullnode_addresses), - StakeJoinValidatorSet{pool_address} => stake_join_validator_set(pool_address), - StakeLeaveValidatorSet{pool_address} => stake_leave_validator_set(pool_address), - StakeReactivateStake{amount} => stake_reactivate_stake(amount), - StakeRotateConsensusKey{pool_address, new_consensus_pubkey} => stake_rotate_consensus_key(pool_address, new_consensus_pubkey), - StakeSetDelegatedVoter{new_voter} => stake_set_delegated_voter(new_voter), - StakeSetOperator{new_operator} => stake_set_operator(new_operator), - StakeUnlock{amount} => stake_unlock(amount), - StakeUpdateNetworkAndFullnodeAddresses{pool_address, new_network_addresses, new_fullnode_addresses} => stake_update_network_and_fullnode_addresses(pool_address, new_network_addresses, new_fullnode_addresses), - StakeWithdraw{withdraw_amount} => stake_withdraw(withdraw_amount), - StakingContractAddStake{operator, amount} => staking_contract_add_stake(operator, amount), - StakingContractCreateStakingContract{operator, voter, amount, commission_percentage, contract_creation_seed} => staking_contract_create_staking_contract(operator, voter, amount, commission_percentage, contract_creation_seed), - StakingContractDistribute{staker, operator} => staking_contract_distribute(staker, operator), - StakingContractRequestCommission{staker, operator} => staking_contract_request_commission(staker, operator), - StakingContractResetLockup{operator} => staking_contract_reset_lockup(operator), - StakingContractSetBeneficiaryForOperator{new_beneficiary} => staking_contract_set_beneficiary_for_operator(new_beneficiary), - StakingContractSwitchOperator{old_operator, new_operator, new_commission_percentage} => staking_contract_switch_operator(old_operator, new_operator, new_commission_percentage), - StakingContractSwitchOperatorWithSameCommission{old_operator, new_operator} => staking_contract_switch_operator_with_same_commission(old_operator, new_operator), - StakingContractUnlockRewards{operator} => staking_contract_unlock_rewards(operator), - StakingContractUnlockStake{operator, amount} => staking_contract_unlock_stake(operator, amount), - StakingContractUpdateCommision{operator, new_commission_percentage} => staking_contract_update_commision(operator, new_commission_percentage), - StakingContractUpdateVoter{operator, new_voter} => staking_contract_update_voter(operator, new_voter), - StakingProxySetOperator{old_operator, new_operator} => staking_proxy_set_operator(old_operator, new_operator), - StakingProxySetStakePoolOperator{new_operator} => staking_proxy_set_stake_pool_operator(new_operator), - StakingProxySetStakePoolVoter{new_voter} => staking_proxy_set_stake_pool_voter(new_voter), - StakingProxySetStakingContractOperator{old_operator, new_operator} => staking_proxy_set_staking_contract_operator(old_operator, new_operator), - StakingProxySetStakingContractVoter{operator, new_voter} => staking_proxy_set_staking_contract_voter(operator, new_voter), - StakingProxySetVestingContractOperator{old_operator, new_operator} => staking_proxy_set_vesting_contract_operator(old_operator, new_operator), - StakingProxySetVestingContractVoter{operator, new_voter} => staking_proxy_set_vesting_contract_voter(operator, new_voter), - StakingProxySetVoter{operator, new_voter} => staking_proxy_set_voter(operator, new_voter), - SupraAccountBatchTransfer{recipients, amounts} => supra_account_batch_transfer(recipients, amounts), - SupraAccountBatchTransferCoins{coin_type, recipients, amounts} => supra_account_batch_transfer_coins(coin_type, recipients, amounts), - SupraAccountCreateAccount{auth_key} => supra_account_create_account(auth_key), - SupraAccountSetAllowDirectCoinTransfers{allow} => supra_account_set_allow_direct_coin_transfers(allow), - SupraAccountTransfer{to, amount} => supra_account_transfer(to, amount), - SupraAccountTransferCoins{coin_type, to, amount} => supra_account_transfer_coins(coin_type, to, amount), - SupraCoinClaimMintCapability{} => supra_coin_claim_mint_capability(), - SupraCoinDelegateMintCapability{to} => supra_coin_delegate_mint_capability(to), - SupraCoinMint{dst_addr, amount} => supra_coin_mint(dst_addr, amount), - SupraGovernanceAddSupraApprovedScriptHashScript{proposal_id} => supra_governance_add_supra_approved_script_hash_script(proposal_id), - SupraGovernanceForceEndEpoch{} => supra_governance_force_end_epoch(), - SupraGovernanceForceEndEpochTestOnly{} => supra_governance_force_end_epoch_test_only(), - SupraGovernanceReconfigure{} => supra_governance_reconfigure(), - SupraGovernanceSupraCreateProposal{execution_hash, metadata_location, metadata_hash} => supra_governance_supra_create_proposal(execution_hash, metadata_location, metadata_hash), - SupraGovernanceSupraCreateProposalV2{execution_hash, metadata_location, metadata_hash, is_multi_step_proposal} => supra_governance_supra_create_proposal_v2(execution_hash, metadata_location, metadata_hash, is_multi_step_proposal), - SupraGovernanceSupraVote{proposal_id, should_pass} => supra_governance_supra_vote(proposal_id, should_pass), - TransactionFeeConvertToAptosFaBurnRef{} => transaction_fee_convert_to_aptos_fa_burn_ref(), - VersionSetForNextEpoch{major} => version_set_for_next_epoch(major), - VersionSetVersion{major} => version_set_version(major), - VestingAdminWithdraw{contract_address} => vesting_admin_withdraw(contract_address), - VestingDistribute{contract_address} => vesting_distribute(contract_address), - VestingDistributeMany{contract_addresses} => vesting_distribute_many(contract_addresses), - VestingResetBeneficiary{contract_address, shareholder} => vesting_reset_beneficiary(contract_address, shareholder), - VestingResetLockup{contract_address} => vesting_reset_lockup(contract_address), - VestingSetBeneficiary{contract_address, shareholder, new_beneficiary} => vesting_set_beneficiary(contract_address, shareholder, new_beneficiary), - VestingSetBeneficiaryForOperator{new_beneficiary} => vesting_set_beneficiary_for_operator(new_beneficiary), - VestingSetBeneficiaryResetter{contract_address, beneficiary_resetter} => vesting_set_beneficiary_resetter(contract_address, beneficiary_resetter), - VestingSetManagementRole{contract_address, role, role_holder} => vesting_set_management_role(contract_address, role, role_holder), - VestingTerminateVestingContract{contract_address} => vesting_terminate_vesting_contract(contract_address), - VestingUnlockRewards{contract_address} => vesting_unlock_rewards(contract_address), - VestingUnlockRewardsMany{contract_addresses} => vesting_unlock_rewards_many(contract_addresses), - VestingUpdateCommissionPercentage{contract_address, new_commission_percentage} => vesting_update_commission_percentage(contract_address, new_commission_percentage), - VestingUpdateOperator{contract_address, new_operator, commission_percentage} => vesting_update_operator(contract_address, new_operator, commission_percentage), - VestingUpdateOperatorWithSameCommission{contract_address, new_operator} => vesting_update_operator_with_same_commission(contract_address, new_operator), - VestingUpdateVoter{contract_address, new_voter} => vesting_update_voter(contract_address, new_voter), - VestingVest{contract_address} => vesting_vest(contract_address), - VestingVestMany{contract_addresses} => vesting_vest_many(contract_addresses), - VestingWithoutStakingAdminDelayVesting{contract_address, delay_periods} => vesting_without_staking_admin_delay_vesting(contract_address, delay_periods), - VestingWithoutStakingAdminWithdraw{contract_address} => vesting_without_staking_admin_withdraw(contract_address), - VestingWithoutStakingCreateVestingContractWithAmounts{shareholders, shares, vesting_numerators, vesting_denominator, start_timestamp_secs, period_duration, withdrawal_address, contract_creation_seed} => vesting_without_staking_create_vesting_contract_with_amounts(shareholders, shares, vesting_numerators, vesting_denominator, start_timestamp_secs, period_duration, withdrawal_address, contract_creation_seed), - VestingWithoutStakingRemoveShareholder{contract_address, shareholder_address} => vesting_without_staking_remove_shareholder(contract_address, shareholder_address), - VestingWithoutStakingResetBeneficiary{contract_address, shareholder} => vesting_without_staking_reset_beneficiary(contract_address, shareholder), - VestingWithoutStakingSetBeneficiary{contract_address, shareholder, new_beneficiary} => vesting_without_staking_set_beneficiary(contract_address, shareholder, new_beneficiary), - VestingWithoutStakingSetBeneficiaryResetter{contract_address, beneficiary_resetter} => vesting_without_staking_set_beneficiary_resetter(contract_address, beneficiary_resetter), - VestingWithoutStakingSetManagementRole{contract_address, role, role_holder} => vesting_without_staking_set_management_role(contract_address, role, role_holder), - VestingWithoutStakingSetVestingSchedule{contract_address, vesting_numerators, vesting_denominator, period_duration} => vesting_without_staking_set_vesting_schedule(contract_address, vesting_numerators, vesting_denominator, period_duration), - VestingWithoutStakingTerminateVestingContract{contract_address} => vesting_without_staking_terminate_vesting_contract(contract_address), - VestingWithoutStakingVest{contract_address} => vesting_without_staking_vest(contract_address), - VestingWithoutStakingVestIndividual{contract_address, shareholder_address} => vesting_without_staking_vest_individual(contract_address, shareholder_address), + AccountOfferRotationCapability { + rotation_capability_sig_bytes, + account_scheme, + account_public_key_bytes, + recipient_address, + } => account_offer_rotation_capability( + rotation_capability_sig_bytes, + account_scheme, + account_public_key_bytes, + recipient_address, + ), + AccountOfferSignerCapability { + signer_capability_sig_bytes, + account_scheme, + account_public_key_bytes, + recipient_address, + } => account_offer_signer_capability( + signer_capability_sig_bytes, + account_scheme, + account_public_key_bytes, + recipient_address, + ), + AccountRevokeAnyRotationCapability {} => account_revoke_any_rotation_capability(), + AccountRevokeAnySignerCapability {} => account_revoke_any_signer_capability(), + AccountRevokeRotationCapability { + to_be_revoked_address, + } => account_revoke_rotation_capability(to_be_revoked_address), + AccountRevokeSignerCapability { + to_be_revoked_address, + } => account_revoke_signer_capability(to_be_revoked_address), + AccountRotateAuthenticationKey { + from_scheme, + from_public_key_bytes, + to_scheme, + to_public_key_bytes, + cap_rotate_key, + cap_update_table, + } => account_rotate_authentication_key( + from_scheme, + from_public_key_bytes, + to_scheme, + to_public_key_bytes, + cap_rotate_key, + cap_update_table, + ), + AccountRotateAuthenticationKeyCall { new_auth_key } => { + account_rotate_authentication_key_call(new_auth_key) + }, + AccountRotateAuthenticationKeyWithRotationCapability { + rotation_cap_offerer_address, + new_scheme, + new_public_key_bytes, + cap_update_table, + } => account_rotate_authentication_key_with_rotation_capability( + rotation_cap_offerer_address, + new_scheme, + new_public_key_bytes, + cap_update_table, + ), + AutomationRegistryCancelSystemTask { task_index } => { + automation_registry_cancel_system_task(task_index) + }, + AutomationRegistryCancelTask { task_index } => { + automation_registry_cancel_task(task_index) + }, + AutomationRegistryStopSystemTasks { task_indexes } => { + automation_registry_stop_system_tasks(task_indexes) + }, + AutomationRegistryStopTasks { task_indexes } => { + automation_registry_stop_tasks(task_indexes) + }, + CodePublishPackageTxn { + metadata_serialized, + code, + } => code_publish_package_txn(metadata_serialized, code), + CoinCreateCoinConversionMap {} => coin_create_coin_conversion_map(), + CoinCreatePairing { coin_type } => coin_create_pairing(coin_type), + CoinMigrateToFungibleStore { coin_type } => coin_migrate_to_fungible_store(coin_type), + CoinTransfer { + coin_type, + to, + amount, + } => coin_transfer(coin_type, to, amount), + CoinUpgradeSupply { coin_type } => coin_upgrade_supply(coin_type), + CommitteeMapRemoveCommittee { com_store_addr, id } => { + committee_map_remove_committee(com_store_addr, id) + }, + CommitteeMapRemoveCommitteeBulk { + com_store_addr, + ids, + } => committee_map_remove_committee_bulk(com_store_addr, ids), + CommitteeMapRemoveCommitteeMember { + com_store_addr, + id, + node_address, + } => committee_map_remove_committee_member(com_store_addr, id, node_address), + CommitteeMapUpdateDkgFlag { + com_store_addr, + com_id, + flag_value, + } => committee_map_update_dkg_flag(com_store_addr, com_id, flag_value), + CommitteeMapUpsertCommittee { + com_store_addr, + id, + node_addresses, + ip_public_address, + node_public_key, + network_public_key, + cg_public_key, + network_port, + rpc_port, + committee_type, + } => committee_map_upsert_committee( + com_store_addr, + id, + node_addresses, + ip_public_address, + node_public_key, + network_public_key, + cg_public_key, + network_port, + rpc_port, + committee_type, + ), + CommitteeMapUpsertCommitteeBulk { + com_store_addr, + ids, + node_addresses_bulk, + ip_public_address_bulk, + node_public_key_bulk, + network_public_key_bulk, + cg_public_key_bulk, + network_port_bulk, + rpc_por_bulkt, + committee_types, + } => committee_map_upsert_committee_bulk( + com_store_addr, + ids, + node_addresses_bulk, + ip_public_address_bulk, + node_public_key_bulk, + network_public_key_bulk, + cg_public_key_bulk, + network_port_bulk, + rpc_por_bulkt, + committee_types, + ), + CommitteeMapUpsertCommitteeMember { + com_store_addr, + id, + node_address, + ip_public_address, + node_public_key, + network_public_key, + cg_public_key, + network_port, + rpc_port, + } => committee_map_upsert_committee_member( + com_store_addr, + id, + node_address, + ip_public_address, + node_public_key, + network_public_key, + cg_public_key, + network_port, + rpc_port, + ), + CommitteeMapUpsertCommitteeMemberBulk { + com_store_addr, + ids, + node_addresses, + ip_public_address, + node_public_key, + network_public_key, + cg_public_key, + network_port, + rpc_port, + } => committee_map_upsert_committee_member_bulk( + com_store_addr, + ids, + node_addresses, + ip_public_address, + node_public_key, + network_public_key, + cg_public_key, + network_port, + rpc_port, + ), + ManagedCoinBurn { coin_type, amount } => managed_coin_burn(coin_type, amount), + ManagedCoinInitialize { + coin_type, + name, + symbol, + decimals, + monitor_supply, + } => managed_coin_initialize(coin_type, name, symbol, decimals, monitor_supply), + ManagedCoinMint { + coin_type, + dst_addr, + amount, + } => managed_coin_mint(coin_type, dst_addr, amount), + ManagedCoinRegister { coin_type } => managed_coin_register(coin_type), + MultisigAccountAddOwner { new_owner } => multisig_account_add_owner(new_owner), + MultisigAccountAddOwners { new_owners } => multisig_account_add_owners(new_owners), + MultisigAccountAddOwnersAndUpdateSignaturesRequired { + new_owners, + new_num_signatures_required, + } => multisig_account_add_owners_and_update_signatures_required( + new_owners, + new_num_signatures_required, + ), + MultisigAccountApproveTransaction { + multisig_account, + sequence_number, + } => multisig_account_approve_transaction(multisig_account, sequence_number), + MultisigAccountCreate { + num_signatures_required, + metadata_keys, + metadata_values, + timeout_duration, + } => multisig_account_create( + num_signatures_required, + metadata_keys, + metadata_values, + timeout_duration, + ), + MultisigAccountCreateTransaction { + multisig_account, + payload, + } => multisig_account_create_transaction(multisig_account, payload), + MultisigAccountCreateTransactionWithHash { + multisig_account, + payload_hash, + } => multisig_account_create_transaction_with_hash(multisig_account, payload_hash), + MultisigAccountCreateWithExistingAccount { + multisig_address, + owners, + num_signatures_required, + account_scheme, + account_public_key, + create_multisig_account_signed_message, + metadata_keys, + metadata_values, + timeout_duration, + } => multisig_account_create_with_existing_account( + multisig_address, + owners, + num_signatures_required, + account_scheme, + account_public_key, + create_multisig_account_signed_message, + metadata_keys, + metadata_values, + timeout_duration, + ), + MultisigAccountCreateWithExistingAccountAndRevokeAuthKey { + multisig_address, + owners, + num_signatures_required, + account_scheme, + account_public_key, + create_multisig_account_signed_message, + metadata_keys, + metadata_values, + timeout_duration, + } => multisig_account_create_with_existing_account_and_revoke_auth_key( + multisig_address, + owners, + num_signatures_required, + account_scheme, + account_public_key, + create_multisig_account_signed_message, + metadata_keys, + metadata_values, + timeout_duration, + ), + MultisigAccountCreateWithOwners { + additional_owners, + num_signatures_required, + metadata_keys, + metadata_values, + timeout_duration, + } => multisig_account_create_with_owners( + additional_owners, + num_signatures_required, + metadata_keys, + metadata_values, + timeout_duration, + ), + MultisigAccountCreateWithOwnersThenRemoveBootstrapper { + owners, + num_signatures_required, + metadata_keys, + metadata_values, + timeout_duration, + } => multisig_account_create_with_owners_then_remove_bootstrapper( + owners, + num_signatures_required, + metadata_keys, + metadata_values, + timeout_duration, + ), + MultisigAccountExecuteRejectedTransaction { multisig_account } => { + multisig_account_execute_rejected_transaction(multisig_account) + }, + MultisigAccountExecuteRejectedTransactions { + multisig_account, + final_sequence_number, + } => multisig_account_execute_rejected_transactions( + multisig_account, + final_sequence_number, + ), + MultisigAccountRejectTransaction { + multisig_account, + sequence_number, + } => multisig_account_reject_transaction(multisig_account, sequence_number), + MultisigAccountRemoveOwner { owner_to_remove } => { + multisig_account_remove_owner(owner_to_remove) + }, + MultisigAccountRemoveOwners { owners_to_remove } => { + multisig_account_remove_owners(owners_to_remove) + }, + MultisigAccountSwapOwner { + to_swap_in, + to_swap_out, + } => multisig_account_swap_owner(to_swap_in, to_swap_out), + MultisigAccountSwapOwners { + to_swap_in, + to_swap_out, + } => multisig_account_swap_owners(to_swap_in, to_swap_out), + MultisigAccountSwapOwnersAndUpdateSignaturesRequired { + new_owners, + owners_to_remove, + new_num_signatures_required, + } => multisig_account_swap_owners_and_update_signatures_required( + new_owners, + owners_to_remove, + new_num_signatures_required, + ), + MultisigAccountUpdateMetadata { keys, values } => { + multisig_account_update_metadata(keys, values) + }, + MultisigAccountUpdateSignaturesRequired { + new_num_signatures_required, + } => multisig_account_update_signatures_required(new_num_signatures_required), + MultisigAccountUpdateTimeoutDuration { timeout_duration } => { + multisig_account_update_timeout_duration(timeout_duration) + }, + MultisigAccountVoteTransaction { + multisig_account, + sequence_number, + approved, + } => multisig_account_vote_transaction(multisig_account, sequence_number, approved), + MultisigAccountVoteTransactions { + multisig_account, + starting_sequence_number, + final_sequence_number, + approved, + } => multisig_account_vote_transactions( + multisig_account, + starting_sequence_number, + final_sequence_number, + approved, + ), + MultisigAccountVoteTransanction { + multisig_account, + sequence_number, + approved, + } => multisig_account_vote_transanction(multisig_account, sequence_number, approved), + ObjectTransferCall { object, to } => object_transfer_call(object, to), + ObjectCodeDeploymentPublish { + metadata_serialized, + code, + } => object_code_deployment_publish(metadata_serialized, code), + PboDelegationPoolAddStake { + pool_address, + amount, + } => pbo_delegation_pool_add_stake(pool_address, amount), + PboDelegationPoolAdminIncreaseLastUnlockPeriod { + pool_address, + additional_periods, + } => pbo_delegation_pool_admin_increase_last_unlock_period( + pool_address, + additional_periods, + ), + PboDelegationPoolDelegateVotingPower { + pool_address, + new_voter, + } => pbo_delegation_pool_delegate_voting_power(pool_address, new_voter), + PboDelegationPoolEnablePartialGovernanceVoting { pool_address } => { + pbo_delegation_pool_enable_partial_governance_voting(pool_address) + }, + PboDelegationPoolFundDelegatorsWithLockedStake { + pool_address, + delegators, + stakes, + } => pbo_delegation_pool_fund_delegators_with_locked_stake( + pool_address, + delegators, + stakes, + ), + PboDelegationPoolFundDelegatorsWithStake { + pool_address, + delegators, + stakes, + } => pbo_delegation_pool_fund_delegators_with_stake(pool_address, delegators, stakes), + PboDelegationPoolInitializeDelegationPoolWithAmount { + multisig_admin, + amount, + operator_commission_percentage, + delegation_pool_creation_seed, + delegator_address, + principle_stake, + unlock_numerators, + unlock_denominator, + unlock_start_time, + unlock_duration, + } => pbo_delegation_pool_initialize_delegation_pool_with_amount( + multisig_admin, + amount, + operator_commission_percentage, + delegation_pool_creation_seed, + delegator_address, + principle_stake, + unlock_numerators, + unlock_denominator, + unlock_start_time, + unlock_duration, + ), + PboDelegationPoolInitializeDelegationPoolWithAmountWithoutMultisigAdmin { + amount, + operator_commission_percentage, + delegation_pool_creation_seed, + delegator_address, + principle_stake, + unlock_numerators, + unlock_denominator, + unlock_start_time, + unlock_duration, + } => pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin( + amount, + operator_commission_percentage, + delegation_pool_creation_seed, + delegator_address, + principle_stake, + unlock_numerators, + unlock_denominator, + unlock_start_time, + unlock_duration, + ), + PboDelegationPoolLockDelegatorsStakes { + pool_address, + delegators, + new_principle_stakes, + } => pbo_delegation_pool_lock_delegators_stakes( + pool_address, + delegators, + new_principle_stakes, + ), + PboDelegationPoolReactivateStake { + pool_address, + amount, + } => pbo_delegation_pool_reactivate_stake(pool_address, amount), + PboDelegationPoolReplaceDelegator { + pool_address, + old_delegator, + new_delegator, + } => pbo_delegation_pool_replace_delegator(pool_address, old_delegator, new_delegator), + PboDelegationPoolSetBeneficiaryForOperator { new_beneficiary } => { + pbo_delegation_pool_set_beneficiary_for_operator(new_beneficiary) + }, + PboDelegationPoolSetDelegatedVoter { new_voter } => { + pbo_delegation_pool_set_delegated_voter(new_voter) + }, + PboDelegationPoolSetOperator { new_operator } => { + pbo_delegation_pool_set_operator(new_operator) + }, + PboDelegationPoolSynchronizeDelegationPool { pool_address } => { + pbo_delegation_pool_synchronize_delegation_pool(pool_address) + }, + PboDelegationPoolUnlock { + pool_address, + amount, + } => pbo_delegation_pool_unlock(pool_address, amount), + PboDelegationPoolUpdateCommissionPercentage { + new_commission_percentage, + } => pbo_delegation_pool_update_commission_percentage(new_commission_percentage), + PboDelegationPoolUpdateUnlockingSchedule { + pool_address, + unlock_numerators, + unlock_denominator, + unlock_start_time, + unlock_duration, + } => pbo_delegation_pool_update_unlocking_schedule( + pool_address, + unlock_numerators, + unlock_denominator, + unlock_start_time, + unlock_duration, + ), + PboDelegationPoolUpdateUnlockingScheduleUnchecked { + pool_address, + unlock_numerators, + unlock_denominator, + unlock_start_time, + unlock_duration, + last_unlock_period, + } => pbo_delegation_pool_update_unlocking_schedule_unchecked( + pool_address, + unlock_numerators, + unlock_denominator, + unlock_start_time, + unlock_duration, + last_unlock_period, + ), + PboDelegationPoolWithdraw { + pool_address, + amount, + } => pbo_delegation_pool_withdraw(pool_address, amount), + ResourceAccountCreateResourceAccount { + seed, + optional_auth_key, + } => resource_account_create_resource_account(seed, optional_auth_key), + ResourceAccountCreateResourceAccountAndFund { + seed, + optional_auth_key, + fund_amount, + } => resource_account_create_resource_account_and_fund( + seed, + optional_auth_key, + fund_amount, + ), + ResourceAccountCreateResourceAccountAndPublishPackage { + seed, + metadata_serialized, + code, + } => resource_account_create_resource_account_and_publish_package( + seed, + metadata_serialized, + code, + ), + StakeAddStake { amount } => stake_add_stake(amount), + StakeIncreaseLockup {} => stake_increase_lockup(), + StakeInitializeStakeOwner { + initial_stake_amount, + operator, + voter, + } => stake_initialize_stake_owner(initial_stake_amount, operator, voter), + StakeInitializeValidator { + consensus_pubkey, + network_addresses, + fullnode_addresses, + } => { + stake_initialize_validator(consensus_pubkey, network_addresses, fullnode_addresses) + }, + StakeJoinValidatorSet { pool_address } => stake_join_validator_set(pool_address), + StakeLeaveValidatorSet { pool_address } => stake_leave_validator_set(pool_address), + StakeReactivateStake { amount } => stake_reactivate_stake(amount), + StakeRotateConsensusKey { + pool_address, + new_consensus_pubkey, + } => stake_rotate_consensus_key(pool_address, new_consensus_pubkey), + StakeSetDelegatedVoter { new_voter } => stake_set_delegated_voter(new_voter), + StakeSetOperator { new_operator } => stake_set_operator(new_operator), + StakeUnlock { amount } => stake_unlock(amount), + StakeUpdateNetworkAndFullnodeAddresses { + pool_address, + new_network_addresses, + new_fullnode_addresses, + } => stake_update_network_and_fullnode_addresses( + pool_address, + new_network_addresses, + new_fullnode_addresses, + ), + StakeWithdraw { withdraw_amount } => stake_withdraw(withdraw_amount), + StakingContractAddStake { operator, amount } => { + staking_contract_add_stake(operator, amount) + }, + StakingContractCreateStakingContract { + operator, + voter, + amount, + commission_percentage, + contract_creation_seed, + } => staking_contract_create_staking_contract( + operator, + voter, + amount, + commission_percentage, + contract_creation_seed, + ), + StakingContractDistribute { staker, operator } => { + staking_contract_distribute(staker, operator) + }, + StakingContractRequestCommission { staker, operator } => { + staking_contract_request_commission(staker, operator) + }, + StakingContractResetLockup { operator } => staking_contract_reset_lockup(operator), + StakingContractSetBeneficiaryForOperator { new_beneficiary } => { + staking_contract_set_beneficiary_for_operator(new_beneficiary) + }, + StakingContractSwitchOperator { + old_operator, + new_operator, + new_commission_percentage, + } => staking_contract_switch_operator( + old_operator, + new_operator, + new_commission_percentage, + ), + StakingContractSwitchOperatorWithSameCommission { + old_operator, + new_operator, + } => staking_contract_switch_operator_with_same_commission(old_operator, new_operator), + StakingContractUnlockRewards { operator } => staking_contract_unlock_rewards(operator), + StakingContractUnlockStake { operator, amount } => { + staking_contract_unlock_stake(operator, amount) + }, + StakingContractUpdateCommision { + operator, + new_commission_percentage, + } => staking_contract_update_commision(operator, new_commission_percentage), + StakingContractUpdateVoter { + operator, + new_voter, + } => staking_contract_update_voter(operator, new_voter), + StakingProxySetOperator { + old_operator, + new_operator, + } => staking_proxy_set_operator(old_operator, new_operator), + StakingProxySetStakePoolOperator { new_operator } => { + staking_proxy_set_stake_pool_operator(new_operator) + }, + StakingProxySetStakePoolVoter { new_voter } => { + staking_proxy_set_stake_pool_voter(new_voter) + }, + StakingProxySetStakingContractOperator { + old_operator, + new_operator, + } => staking_proxy_set_staking_contract_operator(old_operator, new_operator), + StakingProxySetStakingContractVoter { + operator, + new_voter, + } => staking_proxy_set_staking_contract_voter(operator, new_voter), + StakingProxySetVestingContractOperator { + old_operator, + new_operator, + } => staking_proxy_set_vesting_contract_operator(old_operator, new_operator), + StakingProxySetVestingContractVoter { + operator, + new_voter, + } => staking_proxy_set_vesting_contract_voter(operator, new_voter), + StakingProxySetVoter { + operator, + new_voter, + } => staking_proxy_set_voter(operator, new_voter), + SupraAccountBatchTransfer { + recipients, + amounts, + } => supra_account_batch_transfer(recipients, amounts), + SupraAccountBatchTransferCoins { + coin_type, + recipients, + amounts, + } => supra_account_batch_transfer_coins(coin_type, recipients, amounts), + SupraAccountCreateAccount { auth_key } => supra_account_create_account(auth_key), + SupraAccountSetAllowDirectCoinTransfers { allow } => { + supra_account_set_allow_direct_coin_transfers(allow) + }, + SupraAccountTransfer { to, amount } => supra_account_transfer(to, amount), + SupraAccountTransferCoins { + coin_type, + to, + amount, + } => supra_account_transfer_coins(coin_type, to, amount), + SupraCoinClaimMintCapability {} => supra_coin_claim_mint_capability(), + SupraCoinDelegateMintCapability { to } => supra_coin_delegate_mint_capability(to), + SupraCoinMint { dst_addr, amount } => supra_coin_mint(dst_addr, amount), + SupraGovernanceAddSupraApprovedScriptHashScript { proposal_id } => { + supra_governance_add_supra_approved_script_hash_script(proposal_id) + }, + SupraGovernanceForceEndEpoch {} => supra_governance_force_end_epoch(), + SupraGovernanceForceEndEpochTestOnly {} => supra_governance_force_end_epoch_test_only(), + SupraGovernanceReconfigure {} => supra_governance_reconfigure(), + SupraGovernanceSupraCreateProposal { + execution_hash, + metadata_location, + metadata_hash, + } => supra_governance_supra_create_proposal( + execution_hash, + metadata_location, + metadata_hash, + ), + SupraGovernanceSupraCreateProposalV2 { + execution_hash, + metadata_location, + metadata_hash, + is_multi_step_proposal, + } => supra_governance_supra_create_proposal_v2( + execution_hash, + metadata_location, + metadata_hash, + is_multi_step_proposal, + ), + SupraGovernanceSupraVote { + proposal_id, + should_pass, + } => supra_governance_supra_vote(proposal_id, should_pass), + TransactionFeeConvertToAptosFaBurnRef {} => { + transaction_fee_convert_to_aptos_fa_burn_ref() + }, + VersionSetForNextEpoch { major } => version_set_for_next_epoch(major), + VersionSetVersion { major } => version_set_version(major), + VestingAdminWithdraw { contract_address } => vesting_admin_withdraw(contract_address), + VestingDistribute { contract_address } => vesting_distribute(contract_address), + VestingDistributeMany { contract_addresses } => { + vesting_distribute_many(contract_addresses) + }, + VestingResetBeneficiary { + contract_address, + shareholder, + } => vesting_reset_beneficiary(contract_address, shareholder), + VestingResetLockup { contract_address } => vesting_reset_lockup(contract_address), + VestingSetBeneficiary { + contract_address, + shareholder, + new_beneficiary, + } => vesting_set_beneficiary(contract_address, shareholder, new_beneficiary), + VestingSetBeneficiaryForOperator { new_beneficiary } => { + vesting_set_beneficiary_for_operator(new_beneficiary) + }, + VestingSetBeneficiaryResetter { + contract_address, + beneficiary_resetter, + } => vesting_set_beneficiary_resetter(contract_address, beneficiary_resetter), + VestingSetManagementRole { + contract_address, + role, + role_holder, + } => vesting_set_management_role(contract_address, role, role_holder), + VestingTerminateVestingContract { contract_address } => { + vesting_terminate_vesting_contract(contract_address) + }, + VestingUnlockRewards { contract_address } => vesting_unlock_rewards(contract_address), + VestingUnlockRewardsMany { contract_addresses } => { + vesting_unlock_rewards_many(contract_addresses) + }, + VestingUpdateCommissionPercentage { + contract_address, + new_commission_percentage, + } => vesting_update_commission_percentage(contract_address, new_commission_percentage), + VestingUpdateOperator { + contract_address, + new_operator, + commission_percentage, + } => vesting_update_operator(contract_address, new_operator, commission_percentage), + VestingUpdateOperatorWithSameCommission { + contract_address, + new_operator, + } => vesting_update_operator_with_same_commission(contract_address, new_operator), + VestingUpdateVoter { + contract_address, + new_voter, + } => vesting_update_voter(contract_address, new_voter), + VestingVest { contract_address } => vesting_vest(contract_address), + VestingVestMany { contract_addresses } => vesting_vest_many(contract_addresses), + VestingWithoutStakingAdminDelayVesting { + contract_address, + delay_periods, + } => vesting_without_staking_admin_delay_vesting(contract_address, delay_periods), + VestingWithoutStakingAdminWithdraw { contract_address } => { + vesting_without_staking_admin_withdraw(contract_address) + }, + VestingWithoutStakingCreateVestingContractWithAmounts { + shareholders, + shares, + vesting_numerators, + vesting_denominator, + start_timestamp_secs, + period_duration, + withdrawal_address, + contract_creation_seed, + } => vesting_without_staking_create_vesting_contract_with_amounts( + shareholders, + shares, + vesting_numerators, + vesting_denominator, + start_timestamp_secs, + period_duration, + withdrawal_address, + contract_creation_seed, + ), + VestingWithoutStakingRemoveShareholder { + contract_address, + shareholder_address, + } => vesting_without_staking_remove_shareholder(contract_address, shareholder_address), + VestingWithoutStakingResetBeneficiary { + contract_address, + shareholder, + } => vesting_without_staking_reset_beneficiary(contract_address, shareholder), + VestingWithoutStakingSetBeneficiary { + contract_address, + shareholder, + new_beneficiary, + } => vesting_without_staking_set_beneficiary( + contract_address, + shareholder, + new_beneficiary, + ), + VestingWithoutStakingSetBeneficiaryResetter { + contract_address, + beneficiary_resetter, + } => vesting_without_staking_set_beneficiary_resetter( + contract_address, + beneficiary_resetter, + ), + VestingWithoutStakingSetManagementRole { + contract_address, + role, + role_holder, + } => vesting_without_staking_set_management_role(contract_address, role, role_holder), + VestingWithoutStakingSetVestingSchedule { + contract_address, + vesting_numerators, + vesting_denominator, + period_duration, + } => vesting_without_staking_set_vesting_schedule( + contract_address, + vesting_numerators, + vesting_denominator, + period_duration, + ), + VestingWithoutStakingTerminateVestingContract { contract_address } => { + vesting_without_staking_terminate_vesting_contract(contract_address) + }, + VestingWithoutStakingVest { contract_address } => { + vesting_without_staking_vest(contract_address) + }, + VestingWithoutStakingVestIndividual { + contract_address, + shareholder_address, + } => vesting_without_staking_vest_individual(contract_address, shareholder_address), } } - /// Try to recognize an Aptos `TransactionPayload` and convert it into a structured object `EntryFunctionCall`. pub fn decode(payload: &TransactionPayload) -> Option { if let TransactionPayload::EntryFunction(script) = payload { - match SCRIPT_FUNCTION_DECODER_MAP.get(&format!("{}_{}", script.module().name(), script.function())) { + match SCRIPT_FUNCTION_DECODER_MAP.get(&format!( + "{}_{}", + script.module().name(), + script.function() + )) { Some(decoder) => decoder(payload), None => None, } @@ -1468,7 +2110,6 @@ impl EntryFunctionCall { None } } - } /// Offers rotation capability on behalf of `account` to the account at address `recipient_address`. @@ -1488,15 +2129,28 @@ impl EntryFunctionCall { /// @param account_public_key_bytes is the public key of the account owner. /// @param recipient_address is the address of the recipient of the rotation capability - note that if there's an existing rotation capability /// offer, calling this function will replace the previous `recipient_address` upon successful verification. -pub fn account_offer_rotation_capability(rotation_capability_sig_bytes: Vec, account_scheme: u8, account_public_key_bytes: Vec, recipient_address: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("account").to_owned(), - ), +pub fn account_offer_rotation_capability( + rotation_capability_sig_bytes: Vec, + account_scheme: u8, + account_public_key_bytes: Vec, + recipient_address: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("account").to_owned(), + ), ident_str!("offer_rotation_capability").to_owned(), vec![], - vec![bcs::to_bytes(&rotation_capability_sig_bytes).unwrap(), bcs::to_bytes(&account_scheme).unwrap(), bcs::to_bytes(&account_public_key_bytes).unwrap(), bcs::to_bytes(&recipient_address).unwrap()], + vec![ + bcs::to_bytes(&rotation_capability_sig_bytes).unwrap(), + bcs::to_bytes(&account_scheme).unwrap(), + bcs::to_bytes(&account_public_key_bytes).unwrap(), + bcs::to_bytes(&recipient_address).unwrap(), + ], )) } @@ -1509,15 +2163,28 @@ pub fn account_offer_rotation_capability(rotation_capability_sig_bytes: Vec, /// `recipient_address` in the account owner's `SignerCapabilityOffer`, this will replace the /// previous `recipient_address` upon successful verification (the previous recipient will no longer have access /// to the account owner's signer capability). -pub fn account_offer_signer_capability(signer_capability_sig_bytes: Vec, account_scheme: u8, account_public_key_bytes: Vec, recipient_address: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("account").to_owned(), - ), +pub fn account_offer_signer_capability( + signer_capability_sig_bytes: Vec, + account_scheme: u8, + account_public_key_bytes: Vec, + recipient_address: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("account").to_owned(), + ), ident_str!("offer_signer_capability").to_owned(), vec![], - vec![bcs::to_bytes(&signer_capability_sig_bytes).unwrap(), bcs::to_bytes(&account_scheme).unwrap(), bcs::to_bytes(&account_public_key_bytes).unwrap(), bcs::to_bytes(&recipient_address).unwrap()], + vec![ + bcs::to_bytes(&signer_capability_sig_bytes).unwrap(), + bcs::to_bytes(&account_scheme).unwrap(), + bcs::to_bytes(&account_public_key_bytes).unwrap(), + bcs::to_bytes(&recipient_address).unwrap(), + ], )) } @@ -1525,9 +2192,12 @@ pub fn account_offer_signer_capability(signer_capability_sig_bytes: Vec, acc pub fn account_revoke_any_rotation_capability() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("account").to_owned(), + ), ident_str!("revoke_any_rotation_capability").to_owned(), vec![], vec![], @@ -1538,9 +2208,12 @@ pub fn account_revoke_any_rotation_capability() -> TransactionPayload { pub fn account_revoke_any_signer_capability() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("account").to_owned(), + ), ident_str!("revoke_any_signer_capability").to_owned(), vec![], vec![], @@ -1548,12 +2221,17 @@ pub fn account_revoke_any_signer_capability() -> TransactionPayload { } /// Revoke the rotation capability offer given to `to_be_revoked_recipient_address` from `account` -pub fn account_revoke_rotation_capability(to_be_revoked_address: AccountAddress) -> TransactionPayload { +pub fn account_revoke_rotation_capability( + to_be_revoked_address: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("account").to_owned(), + ), ident_str!("revoke_rotation_capability").to_owned(), vec![], vec![bcs::to_bytes(&to_be_revoked_address).unwrap()], @@ -1562,12 +2240,17 @@ pub fn account_revoke_rotation_capability(to_be_revoked_address: AccountAddress) /// Revoke the account owner's signer capability offer for `to_be_revoked_address` (i.e., the address that /// has a signer capability offer from `account` but will be revoked in this function). -pub fn account_revoke_signer_capability(to_be_revoked_address: AccountAddress) -> TransactionPayload { +pub fn account_revoke_signer_capability( + to_be_revoked_address: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("account").to_owned(), + ), ident_str!("revoke_signer_capability").to_owned(), vec![], vec![bcs::to_bytes(&to_be_revoked_address).unwrap()], @@ -1602,15 +2285,32 @@ pub fn account_revoke_signer_capability(to_be_revoked_address: AccountAddress) - /// /// Because we ask for a valid `cap_update_table`, this kind of attack is not possible. Bob would not have the secret key of Alice's address /// to rotate his address to Alice's address in the first place. -pub fn account_rotate_authentication_key(from_scheme: u8, from_public_key_bytes: Vec, to_scheme: u8, to_public_key_bytes: Vec, cap_rotate_key: Vec, cap_update_table: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("account").to_owned(), - ), +pub fn account_rotate_authentication_key( + from_scheme: u8, + from_public_key_bytes: Vec, + to_scheme: u8, + to_public_key_bytes: Vec, + cap_rotate_key: Vec, + cap_update_table: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("account").to_owned(), + ), ident_str!("rotate_authentication_key").to_owned(), vec![], - vec![bcs::to_bytes(&from_scheme).unwrap(), bcs::to_bytes(&from_public_key_bytes).unwrap(), bcs::to_bytes(&to_scheme).unwrap(), bcs::to_bytes(&to_public_key_bytes).unwrap(), bcs::to_bytes(&cap_rotate_key).unwrap(), bcs::to_bytes(&cap_update_table).unwrap()], + vec![ + bcs::to_bytes(&from_scheme).unwrap(), + bcs::to_bytes(&from_public_key_bytes).unwrap(), + bcs::to_bytes(&to_scheme).unwrap(), + bcs::to_bytes(&to_public_key_bytes).unwrap(), + bcs::to_bytes(&cap_rotate_key).unwrap(), + bcs::to_bytes(&cap_update_table).unwrap(), + ], )) } @@ -1622,25 +2322,40 @@ pub fn account_rotate_authentication_key(from_scheme: u8, from_public_key_bytes: pub fn account_rotate_authentication_key_call(new_auth_key: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("account").to_owned(), + ), ident_str!("rotate_authentication_key_call").to_owned(), vec![], vec![bcs::to_bytes(&new_auth_key).unwrap()], )) } - -pub fn account_rotate_authentication_key_with_rotation_capability(rotation_cap_offerer_address: AccountAddress, new_scheme: u8, new_public_key_bytes: Vec, cap_update_table: Vec) -> TransactionPayload { +pub fn account_rotate_authentication_key_with_rotation_capability( + rotation_cap_offerer_address: AccountAddress, + new_scheme: u8, + new_public_key_bytes: Vec, + cap_update_table: Vec, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("account").to_owned(), + ), ident_str!("rotate_authentication_key_with_rotation_capability").to_owned(), vec![], - vec![bcs::to_bytes(&rotation_cap_offerer_address).unwrap(), bcs::to_bytes(&new_scheme).unwrap(), bcs::to_bytes(&new_public_key_bytes).unwrap(), bcs::to_bytes(&cap_update_table).unwrap()], + vec![ + bcs::to_bytes(&rotation_cap_offerer_address).unwrap(), + bcs::to_bytes(&new_scheme).unwrap(), + bcs::to_bytes(&new_public_key_bytes).unwrap(), + bcs::to_bytes(&cap_update_table).unwrap(), + ], )) } @@ -1654,9 +2369,12 @@ pub fn account_rotate_authentication_key_with_rotation_capability(rotation_cap_o pub fn automation_registry_cancel_system_task(task_index: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("automation_registry").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("automation_registry").to_owned(), + ), ident_str!("cancel_system_task").to_owned(), vec![], vec![bcs::to_bytes(&task_index).unwrap()], @@ -1673,9 +2391,12 @@ pub fn automation_registry_cancel_system_task(task_index: u64) -> TransactionPay pub fn automation_registry_cancel_task(task_index: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("automation_registry").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("automation_registry").to_owned(), + ), ident_str!("cancel_task").to_owned(), vec![], vec![bcs::to_bytes(&task_index).unwrap()], @@ -1690,9 +2411,12 @@ pub fn automation_registry_cancel_task(task_index: u64) -> TransactionPayload { pub fn automation_registry_stop_system_tasks(task_indexes: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("automation_registry").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("automation_registry").to_owned(), + ), ident_str!("stop_system_tasks").to_owned(), vec![], vec![bcs::to_bytes(&task_indexes).unwrap()], @@ -1707,9 +2431,12 @@ pub fn automation_registry_stop_system_tasks(task_indexes: Vec) -> Transact pub fn automation_registry_stop_tasks(task_indexes: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("automation_registry").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("automation_registry").to_owned(), + ), ident_str!("stop_tasks").to_owned(), vec![], vec![bcs::to_bytes(&task_indexes).unwrap()], @@ -1718,25 +2445,36 @@ pub fn automation_registry_stop_tasks(task_indexes: Vec) -> TransactionPayl /// Same as `publish_package` but as an entry function which can be called as a transaction. Because /// of current restrictions for txn parameters, the metadata needs to be passed in serialized form. -pub fn code_publish_package_txn(metadata_serialized: Vec, code: Vec>) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("code").to_owned(), - ), +pub fn code_publish_package_txn( + metadata_serialized: Vec, + code: Vec>, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("code").to_owned(), + ), ident_str!("publish_package_txn").to_owned(), vec![], - vec![bcs::to_bytes(&metadata_serialized).unwrap(), bcs::to_bytes(&code).unwrap()], + vec![ + bcs::to_bytes(&metadata_serialized).unwrap(), + bcs::to_bytes(&code).unwrap(), + ], )) } - pub fn coin_create_coin_conversion_map() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("coin").to_owned(), + ), ident_str!("create_coin_conversion_map").to_owned(), vec![], vec![], @@ -1747,9 +2485,12 @@ pub fn coin_create_coin_conversion_map() -> TransactionPayload { pub fn coin_create_pairing(coin_type: TypeTag) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("coin").to_owned(), + ), ident_str!("create_pairing").to_owned(), vec![coin_type], vec![], @@ -1760,9 +2501,12 @@ pub fn coin_create_pairing(coin_type: TypeTag) -> TransactionPayload { pub fn coin_migrate_to_fungible_store(coin_type: TypeTag) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("coin").to_owned(), + ), ident_str!("migrate_to_fungible_store").to_owned(), vec![coin_type], vec![], @@ -1773,9 +2517,12 @@ pub fn coin_migrate_to_fungible_store(coin_type: TypeTag) -> TransactionPayload pub fn coin_transfer(coin_type: TypeTag, to: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("coin").to_owned(), + ), ident_str!("transfer").to_owned(), vec![coin_type], vec![bcs::to_bytes(&to).unwrap(), bcs::to_bytes(&amount).unwrap()], @@ -1787,9 +2534,12 @@ pub fn coin_transfer(coin_type: TypeTag, to: AccountAddress, amount: u64) -> Tra pub fn coin_upgrade_supply(coin_type: TypeTag) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("coin").to_owned(), + ), ident_str!("upgrade_supply").to_owned(), vec![coin_type], vec![], @@ -1797,106 +2547,242 @@ pub fn coin_upgrade_supply(coin_type: TypeTag) -> TransactionPayload { } /// Remove the committee from the store -pub fn committee_map_remove_committee(com_store_addr: AccountAddress, id: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_remove_committee( + com_store_addr: AccountAddress, + id: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("committee_map").to_owned(), + ), ident_str!("remove_committee").to_owned(), vec![], - vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&id).unwrap()], + vec![ + bcs::to_bytes(&com_store_addr).unwrap(), + bcs::to_bytes(&id).unwrap(), + ], )) } /// Remove the committee in bulk -pub fn committee_map_remove_committee_bulk(com_store_addr: AccountAddress, ids: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_remove_committee_bulk( + com_store_addr: AccountAddress, + ids: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("committee_map").to_owned(), + ), ident_str!("remove_committee_bulk").to_owned(), vec![], - vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&ids).unwrap()], + vec![ + bcs::to_bytes(&com_store_addr).unwrap(), + bcs::to_bytes(&ids).unwrap(), + ], )) } /// Remove the node from the committee -pub fn committee_map_remove_committee_member(com_store_addr: AccountAddress, id: u64, node_address: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_remove_committee_member( + com_store_addr: AccountAddress, + id: u64, + node_address: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("committee_map").to_owned(), + ), ident_str!("remove_committee_member").to_owned(), vec![], - vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&id).unwrap(), bcs::to_bytes(&node_address).unwrap()], + vec![ + bcs::to_bytes(&com_store_addr).unwrap(), + bcs::to_bytes(&id).unwrap(), + bcs::to_bytes(&node_address).unwrap(), + ], )) } /// Update the dkg flag -pub fn committee_map_update_dkg_flag(com_store_addr: AccountAddress, com_id: u64, flag_value: bool) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_update_dkg_flag( + com_store_addr: AccountAddress, + com_id: u64, + flag_value: bool, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("committee_map").to_owned(), + ), ident_str!("update_dkg_flag").to_owned(), vec![], - vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&com_id).unwrap(), bcs::to_bytes(&flag_value).unwrap()], + vec![ + bcs::to_bytes(&com_store_addr).unwrap(), + bcs::to_bytes(&com_id).unwrap(), + bcs::to_bytes(&flag_value).unwrap(), + ], )) } /// This function is used to add a new committee to the store -pub fn committee_map_upsert_committee(com_store_addr: AccountAddress, id: u64, node_addresses: Vec, ip_public_address: Vec>, node_public_key: Vec>, network_public_key: Vec>, cg_public_key: Vec>, network_port: Vec, rpc_port: Vec, committee_type: u8) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_upsert_committee( + com_store_addr: AccountAddress, + id: u64, + node_addresses: Vec, + ip_public_address: Vec>, + node_public_key: Vec>, + network_public_key: Vec>, + cg_public_key: Vec>, + network_port: Vec, + rpc_port: Vec, + committee_type: u8, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("committee_map").to_owned(), + ), ident_str!("upsert_committee").to_owned(), vec![], - vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&id).unwrap(), bcs::to_bytes(&node_addresses).unwrap(), bcs::to_bytes(&ip_public_address).unwrap(), bcs::to_bytes(&node_public_key).unwrap(), bcs::to_bytes(&network_public_key).unwrap(), bcs::to_bytes(&cg_public_key).unwrap(), bcs::to_bytes(&network_port).unwrap(), bcs::to_bytes(&rpc_port).unwrap(), bcs::to_bytes(&committee_type).unwrap()], + vec![ + bcs::to_bytes(&com_store_addr).unwrap(), + bcs::to_bytes(&id).unwrap(), + bcs::to_bytes(&node_addresses).unwrap(), + bcs::to_bytes(&ip_public_address).unwrap(), + bcs::to_bytes(&node_public_key).unwrap(), + bcs::to_bytes(&network_public_key).unwrap(), + bcs::to_bytes(&cg_public_key).unwrap(), + bcs::to_bytes(&network_port).unwrap(), + bcs::to_bytes(&rpc_port).unwrap(), + bcs::to_bytes(&committee_type).unwrap(), + ], )) } /// Add the committee in bulk -pub fn committee_map_upsert_committee_bulk(com_store_addr: AccountAddress, ids: Vec, node_addresses_bulk: Vec>, ip_public_address_bulk: Vec>>, node_public_key_bulk: Vec>>, network_public_key_bulk: Vec>>, cg_public_key_bulk: Vec>>, network_port_bulk: Vec>, rpc_por_bulkt: Vec>, committee_types: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_upsert_committee_bulk( + com_store_addr: AccountAddress, + ids: Vec, + node_addresses_bulk: Vec>, + ip_public_address_bulk: Vec>>, + node_public_key_bulk: Vec>>, + network_public_key_bulk: Vec>>, + cg_public_key_bulk: Vec>>, + network_port_bulk: Vec>, + rpc_por_bulkt: Vec>, + committee_types: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("committee_map").to_owned(), + ), ident_str!("upsert_committee_bulk").to_owned(), vec![], - vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&ids).unwrap(), bcs::to_bytes(&node_addresses_bulk).unwrap(), bcs::to_bytes(&ip_public_address_bulk).unwrap(), bcs::to_bytes(&node_public_key_bulk).unwrap(), bcs::to_bytes(&network_public_key_bulk).unwrap(), bcs::to_bytes(&cg_public_key_bulk).unwrap(), bcs::to_bytes(&network_port_bulk).unwrap(), bcs::to_bytes(&rpc_por_bulkt).unwrap(), bcs::to_bytes(&committee_types).unwrap()], + vec![ + bcs::to_bytes(&com_store_addr).unwrap(), + bcs::to_bytes(&ids).unwrap(), + bcs::to_bytes(&node_addresses_bulk).unwrap(), + bcs::to_bytes(&ip_public_address_bulk).unwrap(), + bcs::to_bytes(&node_public_key_bulk).unwrap(), + bcs::to_bytes(&network_public_key_bulk).unwrap(), + bcs::to_bytes(&cg_public_key_bulk).unwrap(), + bcs::to_bytes(&network_port_bulk).unwrap(), + bcs::to_bytes(&rpc_por_bulkt).unwrap(), + bcs::to_bytes(&committee_types).unwrap(), + ], )) } /// Upsert the node to the committee -pub fn committee_map_upsert_committee_member(com_store_addr: AccountAddress, id: u64, node_address: AccountAddress, ip_public_address: Vec, node_public_key: Vec, network_public_key: Vec, cg_public_key: Vec, network_port: u16, rpc_port: u16) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_upsert_committee_member( + com_store_addr: AccountAddress, + id: u64, + node_address: AccountAddress, + ip_public_address: Vec, + node_public_key: Vec, + network_public_key: Vec, + cg_public_key: Vec, + network_port: u16, + rpc_port: u16, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("committee_map").to_owned(), + ), ident_str!("upsert_committee_member").to_owned(), vec![], - vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&id).unwrap(), bcs::to_bytes(&node_address).unwrap(), bcs::to_bytes(&ip_public_address).unwrap(), bcs::to_bytes(&node_public_key).unwrap(), bcs::to_bytes(&network_public_key).unwrap(), bcs::to_bytes(&cg_public_key).unwrap(), bcs::to_bytes(&network_port).unwrap(), bcs::to_bytes(&rpc_port).unwrap()], + vec![ + bcs::to_bytes(&com_store_addr).unwrap(), + bcs::to_bytes(&id).unwrap(), + bcs::to_bytes(&node_address).unwrap(), + bcs::to_bytes(&ip_public_address).unwrap(), + bcs::to_bytes(&node_public_key).unwrap(), + bcs::to_bytes(&network_public_key).unwrap(), + bcs::to_bytes(&cg_public_key).unwrap(), + bcs::to_bytes(&network_port).unwrap(), + bcs::to_bytes(&rpc_port).unwrap(), + ], )) } /// Upsert nodes to the committee -pub fn committee_map_upsert_committee_member_bulk(com_store_addr: AccountAddress, ids: Vec, node_addresses: Vec, ip_public_address: Vec>, node_public_key: Vec>, network_public_key: Vec>, cg_public_key: Vec>, network_port: Vec, rpc_port: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("committee_map").to_owned(), - ), +pub fn committee_map_upsert_committee_member_bulk( + com_store_addr: AccountAddress, + ids: Vec, + node_addresses: Vec, + ip_public_address: Vec>, + node_public_key: Vec>, + network_public_key: Vec>, + cg_public_key: Vec>, + network_port: Vec, + rpc_port: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("committee_map").to_owned(), + ), ident_str!("upsert_committee_member_bulk").to_owned(), vec![], - vec![bcs::to_bytes(&com_store_addr).unwrap(), bcs::to_bytes(&ids).unwrap(), bcs::to_bytes(&node_addresses).unwrap(), bcs::to_bytes(&ip_public_address).unwrap(), bcs::to_bytes(&node_public_key).unwrap(), bcs::to_bytes(&network_public_key).unwrap(), bcs::to_bytes(&cg_public_key).unwrap(), bcs::to_bytes(&network_port).unwrap(), bcs::to_bytes(&rpc_port).unwrap()], + vec![ + bcs::to_bytes(&com_store_addr).unwrap(), + bcs::to_bytes(&ids).unwrap(), + bcs::to_bytes(&node_addresses).unwrap(), + bcs::to_bytes(&ip_public_address).unwrap(), + bcs::to_bytes(&node_public_key).unwrap(), + bcs::to_bytes(&network_public_key).unwrap(), + bcs::to_bytes(&cg_public_key).unwrap(), + bcs::to_bytes(&network_port).unwrap(), + bcs::to_bytes(&rpc_port).unwrap(), + ], )) } @@ -1904,9 +2790,12 @@ pub fn committee_map_upsert_committee_member_bulk(com_store_addr: AccountAddress pub fn managed_coin_burn(coin_type: TypeTag, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("managed_coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("managed_coin").to_owned(), + ), ident_str!("burn").to_owned(), vec![coin_type], vec![bcs::to_bytes(&amount).unwrap()], @@ -1915,28 +2804,52 @@ pub fn managed_coin_burn(coin_type: TypeTag, amount: u64) -> TransactionPayload /// Initialize new coin `CoinType` in Supra Blockchain. /// Mint and Burn Capabilities will be stored under `account` in `Capabilities` resource. -pub fn managed_coin_initialize(coin_type: TypeTag, name: Vec, symbol: Vec, decimals: u8, monitor_supply: bool) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("managed_coin").to_owned(), - ), +pub fn managed_coin_initialize( + coin_type: TypeTag, + name: Vec, + symbol: Vec, + decimals: u8, + monitor_supply: bool, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("managed_coin").to_owned(), + ), ident_str!("initialize").to_owned(), vec![coin_type], - vec![bcs::to_bytes(&name).unwrap(), bcs::to_bytes(&symbol).unwrap(), bcs::to_bytes(&decimals).unwrap(), bcs::to_bytes(&monitor_supply).unwrap()], + vec![ + bcs::to_bytes(&name).unwrap(), + bcs::to_bytes(&symbol).unwrap(), + bcs::to_bytes(&decimals).unwrap(), + bcs::to_bytes(&monitor_supply).unwrap(), + ], )) } /// Create new coins `CoinType` and deposit them into dst_addr's account. -pub fn managed_coin_mint(coin_type: TypeTag, dst_addr: AccountAddress, amount: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("managed_coin").to_owned(), - ), +pub fn managed_coin_mint( + coin_type: TypeTag, + dst_addr: AccountAddress, + amount: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("managed_coin").to_owned(), + ), ident_str!("mint").to_owned(), vec![coin_type], - vec![bcs::to_bytes(&dst_addr).unwrap(), bcs::to_bytes(&amount).unwrap()], + vec![ + bcs::to_bytes(&dst_addr).unwrap(), + bcs::to_bytes(&amount).unwrap(), + ], )) } @@ -1945,9 +2858,12 @@ pub fn managed_coin_mint(coin_type: TypeTag, dst_addr: AccountAddress, amount: u pub fn managed_coin_register(coin_type: TypeTag) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("managed_coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("managed_coin").to_owned(), + ), ident_str!("register").to_owned(), vec![coin_type], vec![], @@ -1958,9 +2874,12 @@ pub fn managed_coin_register(coin_type: TypeTag) -> TransactionPayload { pub fn multisig_account_add_owner(new_owner: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("add_owner").to_owned(), vec![], vec![bcs::to_bytes(&new_owner).unwrap()], @@ -1976,9 +2895,12 @@ pub fn multisig_account_add_owner(new_owner: AccountAddress) -> TransactionPaylo pub fn multisig_account_add_owners(new_owners: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("add_owners").to_owned(), vec![], vec![bcs::to_bytes(&new_owners).unwrap()], @@ -1986,69 +2908,118 @@ pub fn multisig_account_add_owners(new_owners: Vec) -> Transacti } /// Add owners then update number of signatures required, in a single operation. -pub fn multisig_account_add_owners_and_update_signatures_required(new_owners: Vec, new_num_signatures_required: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_add_owners_and_update_signatures_required( + new_owners: Vec, + new_num_signatures_required: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("add_owners_and_update_signatures_required").to_owned(), vec![], - vec![bcs::to_bytes(&new_owners).unwrap(), bcs::to_bytes(&new_num_signatures_required).unwrap()], + vec![ + bcs::to_bytes(&new_owners).unwrap(), + bcs::to_bytes(&new_num_signatures_required).unwrap(), + ], )) } /// Approve a multisig transaction. -pub fn multisig_account_approve_transaction(multisig_account: AccountAddress, sequence_number: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_approve_transaction( + multisig_account: AccountAddress, + sequence_number: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("approve_transaction").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&sequence_number).unwrap()], + vec![ + bcs::to_bytes(&multisig_account).unwrap(), + bcs::to_bytes(&sequence_number).unwrap(), + ], )) } /// Creates a new multisig account and add the signer as a single owner. -pub fn multisig_account_create(num_signatures_required: u64, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create( + num_signatures_required: u64, + metadata_keys: Vec>, + metadata_values: Vec>, + timeout_duration: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create").to_owned(), vec![], - vec![bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], + vec![ + bcs::to_bytes(&num_signatures_required).unwrap(), + bcs::to_bytes(&metadata_keys).unwrap(), + bcs::to_bytes(&metadata_values).unwrap(), + bcs::to_bytes(&timeout_duration).unwrap(), + ], )) } /// Create a multisig transaction, which will have one approval initially (from the creator). -pub fn multisig_account_create_transaction(multisig_account: AccountAddress, payload: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_transaction( + multisig_account: AccountAddress, + payload: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_transaction").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&payload).unwrap()], + vec![ + bcs::to_bytes(&multisig_account).unwrap(), + bcs::to_bytes(&payload).unwrap(), + ], )) } /// Create a multisig transaction with a transaction hash instead of the full payload. /// This means the payload will be stored off chain for gas saving. Later, during execution, the executor will need /// to provide the full payload, which will be validated against the hash stored on-chain. -pub fn multisig_account_create_transaction_with_hash(multisig_account: AccountAddress, payload_hash: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_transaction_with_hash( + multisig_account: AccountAddress, + payload_hash: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_transaction_with_hash").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&payload_hash).unwrap()], + vec![ + bcs::to_bytes(&multisig_account).unwrap(), + bcs::to_bytes(&payload_hash).unwrap(), + ], )) } @@ -2061,15 +3032,38 @@ pub fn multisig_account_create_transaction_with_hash(multisig_account: AccountAd /// Note that this does not revoke auth key-based control over the account. Owners should separately rotate the auth /// key after they are fully migrated to the new multisig account. Alternatively, they can call /// create_with_existing_account_and_revoke_auth_key instead. -pub fn multisig_account_create_with_existing_account(multisig_address: AccountAddress, owners: Vec, num_signatures_required: u64, account_scheme: u8, account_public_key: Vec, create_multisig_account_signed_message: Vec, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_with_existing_account( + multisig_address: AccountAddress, + owners: Vec, + num_signatures_required: u64, + account_scheme: u8, + account_public_key: Vec, + create_multisig_account_signed_message: Vec, + metadata_keys: Vec>, + metadata_values: Vec>, + timeout_duration: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_with_existing_account").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_address).unwrap(), bcs::to_bytes(&owners).unwrap(), bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&account_scheme).unwrap(), bcs::to_bytes(&account_public_key).unwrap(), bcs::to_bytes(&create_multisig_account_signed_message).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], + vec![ + bcs::to_bytes(&multisig_address).unwrap(), + bcs::to_bytes(&owners).unwrap(), + bcs::to_bytes(&num_signatures_required).unwrap(), + bcs::to_bytes(&account_scheme).unwrap(), + bcs::to_bytes(&account_public_key).unwrap(), + bcs::to_bytes(&create_multisig_account_signed_message).unwrap(), + bcs::to_bytes(&metadata_keys).unwrap(), + bcs::to_bytes(&metadata_values).unwrap(), + bcs::to_bytes(&timeout_duration).unwrap(), + ], )) } @@ -2078,15 +3072,38 @@ pub fn multisig_account_create_with_existing_account(multisig_address: AccountAd /// Note: If the original account is a resource account, this does not revoke all control over it as if any /// SignerCapability of the resource account still exists, it can still be used to generate the signer for the /// account. -pub fn multisig_account_create_with_existing_account_and_revoke_auth_key(multisig_address: AccountAddress, owners: Vec, num_signatures_required: u64, account_scheme: u8, account_public_key: Vec, create_multisig_account_signed_message: Vec, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_with_existing_account_and_revoke_auth_key( + multisig_address: AccountAddress, + owners: Vec, + num_signatures_required: u64, + account_scheme: u8, + account_public_key: Vec, + create_multisig_account_signed_message: Vec, + metadata_keys: Vec>, + metadata_values: Vec>, + timeout_duration: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_with_existing_account_and_revoke_auth_key").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_address).unwrap(), bcs::to_bytes(&owners).unwrap(), bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&account_scheme).unwrap(), bcs::to_bytes(&account_public_key).unwrap(), bcs::to_bytes(&create_multisig_account_signed_message).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], + vec![ + bcs::to_bytes(&multisig_address).unwrap(), + bcs::to_bytes(&owners).unwrap(), + bcs::to_bytes(&num_signatures_required).unwrap(), + bcs::to_bytes(&account_scheme).unwrap(), + bcs::to_bytes(&account_public_key).unwrap(), + bcs::to_bytes(&create_multisig_account_signed_message).unwrap(), + bcs::to_bytes(&metadata_keys).unwrap(), + bcs::to_bytes(&metadata_values).unwrap(), + bcs::to_bytes(&timeout_duration).unwrap(), + ], )) } @@ -2096,15 +3113,30 @@ pub fn multisig_account_create_with_existing_account_and_revoke_auth_key(multisi /// cannot be any duplicate owners in the list. /// @param num_signatures_required The number of signatures required to execute a transaction. Must be at least 1 and /// at most the total number of owners. -pub fn multisig_account_create_with_owners(additional_owners: Vec, num_signatures_required: u64, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_with_owners( + additional_owners: Vec, + num_signatures_required: u64, + metadata_keys: Vec>, + metadata_values: Vec>, + timeout_duration: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_with_owners").to_owned(), vec![], - vec![bcs::to_bytes(&additional_owners).unwrap(), bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], + vec![ + bcs::to_bytes(&additional_owners).unwrap(), + bcs::to_bytes(&num_signatures_required).unwrap(), + bcs::to_bytes(&metadata_keys).unwrap(), + bcs::to_bytes(&metadata_values).unwrap(), + bcs::to_bytes(&timeout_duration).unwrap(), + ], )) } @@ -2112,25 +3144,45 @@ pub fn multisig_account_create_with_owners(additional_owners: Vec, num_signatures_required: u64, metadata_keys: Vec>, metadata_values: Vec>, timeout_duration: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_create_with_owners_then_remove_bootstrapper( + owners: Vec, + num_signatures_required: u64, + metadata_keys: Vec>, + metadata_values: Vec>, + timeout_duration: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("create_with_owners_then_remove_bootstrapper").to_owned(), vec![], - vec![bcs::to_bytes(&owners).unwrap(), bcs::to_bytes(&num_signatures_required).unwrap(), bcs::to_bytes(&metadata_keys).unwrap(), bcs::to_bytes(&metadata_values).unwrap(), bcs::to_bytes(&timeout_duration).unwrap()], + vec![ + bcs::to_bytes(&owners).unwrap(), + bcs::to_bytes(&num_signatures_required).unwrap(), + bcs::to_bytes(&metadata_keys).unwrap(), + bcs::to_bytes(&metadata_values).unwrap(), + bcs::to_bytes(&timeout_duration).unwrap(), + ], )) } /// Remove the next transaction if it has sufficient owner rejections. -pub fn multisig_account_execute_rejected_transaction(multisig_account: AccountAddress) -> TransactionPayload { +pub fn multisig_account_execute_rejected_transaction( + multisig_account: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("execute_rejected_transaction").to_owned(), vec![], vec![bcs::to_bytes(&multisig_account).unwrap()], @@ -2138,28 +3190,46 @@ pub fn multisig_account_execute_rejected_transaction(multisig_account: AccountAd } /// Remove the next transactions until the final_sequence_number if they have sufficient owner rejections. -pub fn multisig_account_execute_rejected_transactions(multisig_account: AccountAddress, final_sequence_number: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_execute_rejected_transactions( + multisig_account: AccountAddress, + final_sequence_number: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("execute_rejected_transactions").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&final_sequence_number).unwrap()], + vec![ + bcs::to_bytes(&multisig_account).unwrap(), + bcs::to_bytes(&final_sequence_number).unwrap(), + ], )) } /// Reject a multisig transaction. -pub fn multisig_account_reject_transaction(multisig_account: AccountAddress, sequence_number: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_reject_transaction( + multisig_account: AccountAddress, + sequence_number: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("reject_transaction").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&sequence_number).unwrap()], + vec![ + bcs::to_bytes(&multisig_account).unwrap(), + bcs::to_bytes(&sequence_number).unwrap(), + ], )) } @@ -2167,9 +3237,12 @@ pub fn multisig_account_reject_transaction(multisig_account: AccountAddress, seq pub fn multisig_account_remove_owner(owner_to_remove: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("remove_owner").to_owned(), vec![], vec![bcs::to_bytes(&owner_to_remove).unwrap()], @@ -2186,9 +3259,12 @@ pub fn multisig_account_remove_owner(owner_to_remove: AccountAddress) -> Transac pub fn multisig_account_remove_owners(owners_to_remove: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("remove_owners").to_owned(), vec![], vec![bcs::to_bytes(&owners_to_remove).unwrap()], @@ -2196,41 +3272,70 @@ pub fn multisig_account_remove_owners(owners_to_remove: Vec) -> } /// Swap an owner in for an old one, without changing required signatures. -pub fn multisig_account_swap_owner(to_swap_in: AccountAddress, to_swap_out: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_swap_owner( + to_swap_in: AccountAddress, + to_swap_out: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("swap_owner").to_owned(), vec![], - vec![bcs::to_bytes(&to_swap_in).unwrap(), bcs::to_bytes(&to_swap_out).unwrap()], + vec![ + bcs::to_bytes(&to_swap_in).unwrap(), + bcs::to_bytes(&to_swap_out).unwrap(), + ], )) } /// Swap owners in and out, without changing required signatures. -pub fn multisig_account_swap_owners(to_swap_in: Vec, to_swap_out: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_swap_owners( + to_swap_in: Vec, + to_swap_out: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("swap_owners").to_owned(), vec![], - vec![bcs::to_bytes(&to_swap_in).unwrap(), bcs::to_bytes(&to_swap_out).unwrap()], + vec![ + bcs::to_bytes(&to_swap_in).unwrap(), + bcs::to_bytes(&to_swap_out).unwrap(), + ], )) } /// Swap owners in and out, updating number of required signatures. -pub fn multisig_account_swap_owners_and_update_signatures_required(new_owners: Vec, owners_to_remove: Vec, new_num_signatures_required: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_swap_owners_and_update_signatures_required( + new_owners: Vec, + owners_to_remove: Vec, + new_num_signatures_required: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("swap_owners_and_update_signatures_required").to_owned(), vec![], - vec![bcs::to_bytes(&new_owners).unwrap(), bcs::to_bytes(&owners_to_remove).unwrap(), bcs::to_bytes(&new_num_signatures_required).unwrap()], + vec![ + bcs::to_bytes(&new_owners).unwrap(), + bcs::to_bytes(&owners_to_remove).unwrap(), + bcs::to_bytes(&new_num_signatures_required).unwrap(), + ], )) } @@ -2241,15 +3346,24 @@ pub fn multisig_account_swap_owners_and_update_signatures_required(new_owners: V /// Note that this function is not public so it can only be invoked directly instead of via a module or script. This /// ensures that a multisig transaction cannot lead to another module obtaining the multisig signer and using it to /// maliciously alter the number of signatures required. -pub fn multisig_account_update_metadata(keys: Vec>, values: Vec>) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_update_metadata( + keys: Vec>, + values: Vec>, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("update_metadata").to_owned(), vec![], - vec![bcs::to_bytes(&keys).unwrap(), bcs::to_bytes(&values).unwrap()], + vec![ + bcs::to_bytes(&keys).unwrap(), + bcs::to_bytes(&values).unwrap(), + ], )) } @@ -2259,12 +3373,17 @@ pub fn multisig_account_update_metadata(keys: Vec>, values: Vec> /// Note that this function is not public so it can only be invoked directly instead of via a module or script. This /// ensures that a multisig transaction cannot lead to another module obtaining the multisig signer and using it to /// maliciously alter the number of signatures required. -pub fn multisig_account_update_signatures_required(new_num_signatures_required: u64) -> TransactionPayload { +pub fn multisig_account_update_signatures_required( + new_num_signatures_required: u64, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("update_signatures_required").to_owned(), vec![], vec![bcs::to_bytes(&new_num_signatures_required).unwrap()], @@ -2275,9 +3394,12 @@ pub fn multisig_account_update_signatures_required(new_num_signatures_required: pub fn multisig_account_update_timeout_duration(timeout_duration: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("update_timeout_duration").to_owned(), vec![], vec![bcs::to_bytes(&timeout_duration).unwrap()], @@ -2285,43 +3407,78 @@ pub fn multisig_account_update_timeout_duration(timeout_duration: u64) -> Transa } /// Generic function that can be used to either approve or reject a multisig transaction -pub fn multisig_account_vote_transaction(multisig_account: AccountAddress, sequence_number: u64, approved: bool) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_vote_transaction( + multisig_account: AccountAddress, + sequence_number: u64, + approved: bool, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("vote_transaction").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&sequence_number).unwrap(), bcs::to_bytes(&approved).unwrap()], + vec![ + bcs::to_bytes(&multisig_account).unwrap(), + bcs::to_bytes(&sequence_number).unwrap(), + bcs::to_bytes(&approved).unwrap(), + ], )) } /// Generic function that can be used to either approve or reject a batch of transactions within a specified range. -pub fn multisig_account_vote_transactions(multisig_account: AccountAddress, starting_sequence_number: u64, final_sequence_number: u64, approved: bool) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_vote_transactions( + multisig_account: AccountAddress, + starting_sequence_number: u64, + final_sequence_number: u64, + approved: bool, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("vote_transactions").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&starting_sequence_number).unwrap(), bcs::to_bytes(&final_sequence_number).unwrap(), bcs::to_bytes(&approved).unwrap()], + vec![ + bcs::to_bytes(&multisig_account).unwrap(), + bcs::to_bytes(&starting_sequence_number).unwrap(), + bcs::to_bytes(&final_sequence_number).unwrap(), + bcs::to_bytes(&approved).unwrap(), + ], )) } /// Generic function that can be used to either approve or reject a multisig transaction /// Retained for backward compatibility: the function with the typographical error in its name /// will continue to be an accessible entry point. -pub fn multisig_account_vote_transanction(multisig_account: AccountAddress, sequence_number: u64, approved: bool) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("multisig_account").to_owned(), - ), +pub fn multisig_account_vote_transanction( + multisig_account: AccountAddress, + sequence_number: u64, + approved: bool, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("multisig_account").to_owned(), + ), ident_str!("vote_transanction").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_account).unwrap(), bcs::to_bytes(&sequence_number).unwrap(), bcs::to_bytes(&approved).unwrap()], + vec![ + bcs::to_bytes(&multisig_account).unwrap(), + bcs::to_bytes(&sequence_number).unwrap(), + bcs::to_bytes(&approved).unwrap(), + ], )) } @@ -2329,9 +3486,12 @@ pub fn multisig_account_vote_transanction(multisig_account: AccountAddress, sequ pub fn object_transfer_call(object: AccountAddress, to: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("object").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("object").to_owned(), + ), ident_str!("transfer_call").to_owned(), vec![], vec![bcs::to_bytes(&object).unwrap(), bcs::to_bytes(&to).unwrap()], @@ -2342,121 +3502,229 @@ pub fn object_transfer_call(object: AccountAddress, to: AccountAddress) -> Trans /// Publishes the code passed in the function to the newly created object. /// The caller must provide package metadata describing the package via `metadata_serialized` and /// the code to be published via `code`. This contains a vector of modules to be deployed on-chain. -pub fn object_code_deployment_publish(metadata_serialized: Vec, code: Vec>) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("object_code_deployment").to_owned(), - ), +pub fn object_code_deployment_publish( + metadata_serialized: Vec, + code: Vec>, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("object_code_deployment").to_owned(), + ), ident_str!("publish").to_owned(), vec![], - vec![bcs::to_bytes(&metadata_serialized).unwrap(), bcs::to_bytes(&code).unwrap()], + vec![ + bcs::to_bytes(&metadata_serialized).unwrap(), + bcs::to_bytes(&code).unwrap(), + ], )) } /// Add `amount` of coins to the delegation pool `pool_address`. -pub fn pbo_delegation_pool_add_stake(pool_address: AccountAddress, amount: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_add_stake( + pool_address: AccountAddress, + amount: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("add_stake").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&amount).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&amount).unwrap(), + ], )) } - -pub fn pbo_delegation_pool_admin_increase_last_unlock_period(pool_address: AccountAddress, additional_periods: u64) -> TransactionPayload { +pub fn pbo_delegation_pool_admin_increase_last_unlock_period( + pool_address: AccountAddress, + additional_periods: u64, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("admin_increase_last_unlock_period").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&additional_periods).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&additional_periods).unwrap(), + ], )) } /// Allows a delegator to delegate its voting power to a voter. If this delegator already has a delegated voter, /// this change won't take effects until the next lockup period. -pub fn pbo_delegation_pool_delegate_voting_power(pool_address: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_delegate_voting_power( + pool_address: AccountAddress, + new_voter: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("delegate_voting_power").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&new_voter).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&new_voter).unwrap(), + ], )) } /// Enable partial governance voting on a stake pool. The voter of this stake pool will be managed by this module. /// THe existing voter will be replaced. The function is permissionless. -pub fn pbo_delegation_pool_enable_partial_governance_voting(pool_address: AccountAddress) -> TransactionPayload { +pub fn pbo_delegation_pool_enable_partial_governance_voting( + pool_address: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("enable_partial_governance_voting").to_owned(), vec![], vec![bcs::to_bytes(&pool_address).unwrap()], )) } - -pub fn pbo_delegation_pool_fund_delegators_with_locked_stake(pool_address: AccountAddress, delegators: Vec, stakes: Vec) -> TransactionPayload { +pub fn pbo_delegation_pool_fund_delegators_with_locked_stake( + pool_address: AccountAddress, + delegators: Vec, + stakes: Vec, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("fund_delegators_with_locked_stake").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&delegators).unwrap(), bcs::to_bytes(&stakes).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&delegators).unwrap(), + bcs::to_bytes(&stakes).unwrap(), + ], )) } - -pub fn pbo_delegation_pool_fund_delegators_with_stake(pool_address: AccountAddress, delegators: Vec, stakes: Vec) -> TransactionPayload { +pub fn pbo_delegation_pool_fund_delegators_with_stake( + pool_address: AccountAddress, + delegators: Vec, + stakes: Vec, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("fund_delegators_with_stake").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&delegators).unwrap(), bcs::to_bytes(&stakes).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&delegators).unwrap(), + bcs::to_bytes(&stakes).unwrap(), + ], )) } /// Initialize a delegation pool without actual coin but withdraw from the owner's account. -pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount(multisig_admin: AccountAddress, amount: u64, operator_commission_percentage: u64, delegation_pool_creation_seed: Vec, delegator_address: Vec, principle_stake: Vec, unlock_numerators: Vec, unlock_denominator: u64, unlock_start_time: u64, unlock_duration: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount( + multisig_admin: AccountAddress, + amount: u64, + operator_commission_percentage: u64, + delegation_pool_creation_seed: Vec, + delegator_address: Vec, + principle_stake: Vec, + unlock_numerators: Vec, + unlock_denominator: u64, + unlock_start_time: u64, + unlock_duration: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("initialize_delegation_pool_with_amount").to_owned(), vec![], - vec![bcs::to_bytes(&multisig_admin).unwrap(), bcs::to_bytes(&amount).unwrap(), bcs::to_bytes(&operator_commission_percentage).unwrap(), bcs::to_bytes(&delegation_pool_creation_seed).unwrap(), bcs::to_bytes(&delegator_address).unwrap(), bcs::to_bytes(&principle_stake).unwrap(), bcs::to_bytes(&unlock_numerators).unwrap(), bcs::to_bytes(&unlock_denominator).unwrap(), bcs::to_bytes(&unlock_start_time).unwrap(), bcs::to_bytes(&unlock_duration).unwrap()], + vec![ + bcs::to_bytes(&multisig_admin).unwrap(), + bcs::to_bytes(&amount).unwrap(), + bcs::to_bytes(&operator_commission_percentage).unwrap(), + bcs::to_bytes(&delegation_pool_creation_seed).unwrap(), + bcs::to_bytes(&delegator_address).unwrap(), + bcs::to_bytes(&principle_stake).unwrap(), + bcs::to_bytes(&unlock_numerators).unwrap(), + bcs::to_bytes(&unlock_denominator).unwrap(), + bcs::to_bytes(&unlock_start_time).unwrap(), + bcs::to_bytes(&unlock_duration).unwrap(), + ], )) } /// Initialize a delegation pool without actual coin but withdraw from the owner's account. -pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin(amount: u64, operator_commission_percentage: u64, delegation_pool_creation_seed: Vec, delegator_address: Vec, principle_stake: Vec, unlock_numerators: Vec, unlock_denominator: u64, unlock_start_time: u64, unlock_duration: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin( + amount: u64, + operator_commission_percentage: u64, + delegation_pool_creation_seed: Vec, + delegator_address: Vec, + principle_stake: Vec, + unlock_numerators: Vec, + unlock_denominator: u64, + unlock_start_time: u64, + unlock_duration: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("initialize_delegation_pool_with_amount_without_multisig_admin").to_owned(), vec![], - vec![bcs::to_bytes(&amount).unwrap(), bcs::to_bytes(&operator_commission_percentage).unwrap(), bcs::to_bytes(&delegation_pool_creation_seed).unwrap(), bcs::to_bytes(&delegator_address).unwrap(), bcs::to_bytes(&principle_stake).unwrap(), bcs::to_bytes(&unlock_numerators).unwrap(), bcs::to_bytes(&unlock_denominator).unwrap(), bcs::to_bytes(&unlock_start_time).unwrap(), bcs::to_bytes(&unlock_duration).unwrap()], + vec![ + bcs::to_bytes(&amount).unwrap(), + bcs::to_bytes(&operator_commission_percentage).unwrap(), + bcs::to_bytes(&delegation_pool_creation_seed).unwrap(), + bcs::to_bytes(&delegator_address).unwrap(), + bcs::to_bytes(&principle_stake).unwrap(), + bcs::to_bytes(&unlock_numerators).unwrap(), + bcs::to_bytes(&unlock_denominator).unwrap(), + bcs::to_bytes(&unlock_start_time).unwrap(), + bcs::to_bytes(&unlock_duration).unwrap(), + ], )) } @@ -2469,28 +3737,48 @@ pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multis /// Supra Foundation to ensure that the allocations of all investors are subject to the terms specified in the /// corresponding legal contracts. It will be deactivated before the validator set it opened up to external /// validator-owners to prevent it from being abused. -pub fn pbo_delegation_pool_lock_delegators_stakes(pool_address: AccountAddress, delegators: Vec, new_principle_stakes: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_lock_delegators_stakes( + pool_address: AccountAddress, + delegators: Vec, + new_principle_stakes: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("lock_delegators_stakes").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&delegators).unwrap(), bcs::to_bytes(&new_principle_stakes).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&delegators).unwrap(), + bcs::to_bytes(&new_principle_stakes).unwrap(), + ], )) } /// Move `amount` of coins from pending_inactive to active. -pub fn pbo_delegation_pool_reactivate_stake(pool_address: AccountAddress, amount: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_reactivate_stake( + pool_address: AccountAddress, + amount: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("reactivate_stake").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&amount).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&amount).unwrap(), + ], )) } @@ -2503,15 +3791,26 @@ pub fn pbo_delegation_pool_reactivate_stake(pool_address: AccountAddress, amount /// Supra Foundation to ensure that the allocations of all investors are subject to the terms specified in the /// corresponding legal contracts. It will be deactivated before the validator set it opened up to external /// validator-owners to prevent it from being abused. -pub fn pbo_delegation_pool_replace_delegator(pool_address: AccountAddress, old_delegator: AccountAddress, new_delegator: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_replace_delegator( + pool_address: AccountAddress, + old_delegator: AccountAddress, + new_delegator: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("replace_delegator").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&old_delegator).unwrap(), bcs::to_bytes(&new_delegator).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&old_delegator).unwrap(), + bcs::to_bytes(&new_delegator).unwrap(), + ], )) } @@ -2519,12 +3818,17 @@ pub fn pbo_delegation_pool_replace_delegator(pool_address: AccountAddress, old_d /// beneficiary. To ensures payment to the current beneficiary, one should first call `synchronize_delegation_pool` /// before switching the beneficiary. An operator can set one beneficiary for delegation pools, not a separate /// one for each pool. -pub fn pbo_delegation_pool_set_beneficiary_for_operator(new_beneficiary: AccountAddress) -> TransactionPayload { +pub fn pbo_delegation_pool_set_beneficiary_for_operator( + new_beneficiary: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("set_beneficiary_for_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_beneficiary).unwrap()], @@ -2535,9 +3839,12 @@ pub fn pbo_delegation_pool_set_beneficiary_for_operator(new_beneficiary: Account pub fn pbo_delegation_pool_set_delegated_voter(new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("set_delegated_voter").to_owned(), vec![], vec![bcs::to_bytes(&new_voter).unwrap()], @@ -2548,9 +3855,12 @@ pub fn pbo_delegation_pool_set_delegated_voter(new_voter: AccountAddress) -> Tra pub fn pbo_delegation_pool_set_operator(new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("set_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_operator).unwrap()], @@ -2559,12 +3869,17 @@ pub fn pbo_delegation_pool_set_operator(new_operator: AccountAddress) -> Transac /// Synchronize delegation and stake pools: distribute yet-undetected rewards to the corresponding internal /// shares pools, assign commission to operator and eventually prepare delegation pool for a new lockup cycle. -pub fn pbo_delegation_pool_synchronize_delegation_pool(pool_address: AccountAddress) -> TransactionPayload { +pub fn pbo_delegation_pool_synchronize_delegation_pool( + pool_address: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("synchronize_delegation_pool").to_owned(), vec![], vec![bcs::to_bytes(&pool_address).unwrap()], @@ -2576,22 +3891,33 @@ pub fn pbo_delegation_pool_synchronize_delegation_pool(pool_address: AccountAddr pub fn pbo_delegation_pool_unlock(pool_address: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("unlock").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&amount).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&amount).unwrap(), + ], )) } /// Allows an owner to update the commission percentage for the operator of the underlying stake pool. -pub fn pbo_delegation_pool_update_commission_percentage(new_commission_percentage: u64) -> TransactionPayload { +pub fn pbo_delegation_pool_update_commission_percentage( + new_commission_percentage: u64, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("update_commission_percentage").to_owned(), vec![], vec![bcs::to_bytes(&new_commission_percentage).unwrap()], @@ -2604,56 +3930,105 @@ pub fn pbo_delegation_pool_update_commission_percentage(new_commission_percentag /// This is a temporary measure to allow Supra Foundation to change the schedule for those pools /// there were initialized with ``dummy/default'' schedule. This method must be disabled /// before external validators are allowed to join the validator set. -pub fn pbo_delegation_pool_update_unlocking_schedule(pool_address: AccountAddress, unlock_numerators: Vec, unlock_denominator: u64, unlock_start_time: u64, unlock_duration: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_update_unlocking_schedule( + pool_address: AccountAddress, + unlock_numerators: Vec, + unlock_denominator: u64, + unlock_start_time: u64, + unlock_duration: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("update_unlocking_schedule").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&unlock_numerators).unwrap(), bcs::to_bytes(&unlock_denominator).unwrap(), bcs::to_bytes(&unlock_start_time).unwrap(), bcs::to_bytes(&unlock_duration).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&unlock_numerators).unwrap(), + bcs::to_bytes(&unlock_denominator).unwrap(), + bcs::to_bytes(&unlock_start_time).unwrap(), + bcs::to_bytes(&unlock_duration).unwrap(), + ], )) } - -pub fn pbo_delegation_pool_update_unlocking_schedule_unchecked(pool_address: AccountAddress, unlock_numerators: Vec, unlock_denominator: u64, unlock_start_time: u64, unlock_duration: u64, last_unlock_period: u64) -> TransactionPayload { +pub fn pbo_delegation_pool_update_unlocking_schedule_unchecked( + pool_address: AccountAddress, + unlock_numerators: Vec, + unlock_denominator: u64, + unlock_start_time: u64, + unlock_duration: u64, + last_unlock_period: u64, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("update_unlocking_schedule_unchecked").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&unlock_numerators).unwrap(), bcs::to_bytes(&unlock_denominator).unwrap(), bcs::to_bytes(&unlock_start_time).unwrap(), bcs::to_bytes(&unlock_duration).unwrap(), bcs::to_bytes(&last_unlock_period).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&unlock_numerators).unwrap(), + bcs::to_bytes(&unlock_denominator).unwrap(), + bcs::to_bytes(&unlock_start_time).unwrap(), + bcs::to_bytes(&unlock_duration).unwrap(), + bcs::to_bytes(&last_unlock_period).unwrap(), + ], )) } /// Withdraw `amount` of owned inactive stake from the delegation pool at `pool_address`. -pub fn pbo_delegation_pool_withdraw(pool_address: AccountAddress, amount: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("pbo_delegation_pool").to_owned(), - ), +pub fn pbo_delegation_pool_withdraw( + pool_address: AccountAddress, + amount: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("pbo_delegation_pool").to_owned(), + ), ident_str!("withdraw").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&amount).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&amount).unwrap(), + ], )) } /// Creates a new resource account and rotates the authentication key to either /// the optional auth key if it is non-empty (though auth keys are 32-bytes) /// or the source accounts current auth key. -pub fn resource_account_create_resource_account(seed: Vec, optional_auth_key: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("resource_account").to_owned(), - ), +pub fn resource_account_create_resource_account( + seed: Vec, + optional_auth_key: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("resource_account").to_owned(), + ), ident_str!("create_resource_account").to_owned(), vec![], - vec![bcs::to_bytes(&seed).unwrap(), bcs::to_bytes(&optional_auth_key).unwrap()], + vec![ + bcs::to_bytes(&seed).unwrap(), + bcs::to_bytes(&optional_auth_key).unwrap(), + ], )) } @@ -2662,29 +4037,51 @@ pub fn resource_account_create_resource_account(seed: Vec, optional_auth_key /// non-empty (though auth keys are 32-bytes) or the source accounts current auth key. Note, /// this function adds additional resource ownership to the resource account and should only be /// used for resource accounts that need access to `Coin`. -pub fn resource_account_create_resource_account_and_fund(seed: Vec, optional_auth_key: Vec, fund_amount: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("resource_account").to_owned(), - ), +pub fn resource_account_create_resource_account_and_fund( + seed: Vec, + optional_auth_key: Vec, + fund_amount: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("resource_account").to_owned(), + ), ident_str!("create_resource_account_and_fund").to_owned(), vec![], - vec![bcs::to_bytes(&seed).unwrap(), bcs::to_bytes(&optional_auth_key).unwrap(), bcs::to_bytes(&fund_amount).unwrap()], + vec![ + bcs::to_bytes(&seed).unwrap(), + bcs::to_bytes(&optional_auth_key).unwrap(), + bcs::to_bytes(&fund_amount).unwrap(), + ], )) } /// Creates a new resource account, publishes the package under this account transaction under /// this account and leaves the signer cap readily available for pickup. -pub fn resource_account_create_resource_account_and_publish_package(seed: Vec, metadata_serialized: Vec, code: Vec>) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("resource_account").to_owned(), - ), +pub fn resource_account_create_resource_account_and_publish_package( + seed: Vec, + metadata_serialized: Vec, + code: Vec>, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("resource_account").to_owned(), + ), ident_str!("create_resource_account_and_publish_package").to_owned(), vec![], - vec![bcs::to_bytes(&seed).unwrap(), bcs::to_bytes(&metadata_serialized).unwrap(), bcs::to_bytes(&code).unwrap()], + vec![ + bcs::to_bytes(&seed).unwrap(), + bcs::to_bytes(&metadata_serialized).unwrap(), + bcs::to_bytes(&code).unwrap(), + ], )) } @@ -2692,9 +4089,12 @@ pub fn resource_account_create_resource_account_and_publish_package(seed: Vec TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("add_stake").to_owned(), vec![], vec![bcs::to_bytes(&amount).unwrap()], @@ -2705,9 +4105,12 @@ pub fn stake_add_stake(amount: u64) -> TransactionPayload { pub fn stake_increase_lockup() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("increase_lockup").to_owned(), vec![], vec![], @@ -2718,28 +4121,50 @@ pub fn stake_increase_lockup() -> TransactionPayload { /// except it leaves the ValidatorConfig to be set by another entity. /// Note: this triggers setting the operator and owner, set it to the account's address /// to set later. -pub fn stake_initialize_stake_owner(initial_stake_amount: u64, operator: AccountAddress, voter: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), +pub fn stake_initialize_stake_owner( + initial_stake_amount: u64, + operator: AccountAddress, + voter: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("initialize_stake_owner").to_owned(), vec![], - vec![bcs::to_bytes(&initial_stake_amount).unwrap(), bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&voter).unwrap()], + vec![ + bcs::to_bytes(&initial_stake_amount).unwrap(), + bcs::to_bytes(&operator).unwrap(), + bcs::to_bytes(&voter).unwrap(), + ], )) } /// Initialize the validator account and give ownership to the signing account. -pub fn stake_initialize_validator(consensus_pubkey: Vec, network_addresses: Vec, fullnode_addresses: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), +pub fn stake_initialize_validator( + consensus_pubkey: Vec, + network_addresses: Vec, + fullnode_addresses: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("initialize_validator").to_owned(), vec![], - vec![bcs::to_bytes(&consensus_pubkey).unwrap(), bcs::to_bytes(&network_addresses).unwrap(), bcs::to_bytes(&fullnode_addresses).unwrap()], + vec![ + bcs::to_bytes(&consensus_pubkey).unwrap(), + bcs::to_bytes(&network_addresses).unwrap(), + bcs::to_bytes(&fullnode_addresses).unwrap(), + ], )) } @@ -2747,9 +4172,12 @@ pub fn stake_initialize_validator(consensus_pubkey: Vec, network_addresses: pub fn stake_join_validator_set(pool_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("join_validator_set").to_owned(), vec![], vec![bcs::to_bytes(&pool_address).unwrap()], @@ -2765,9 +4193,12 @@ pub fn stake_join_validator_set(pool_address: AccountAddress) -> TransactionPayl pub fn stake_leave_validator_set(pool_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("leave_validator_set").to_owned(), vec![], vec![bcs::to_bytes(&pool_address).unwrap()], @@ -2778,9 +4209,12 @@ pub fn stake_leave_validator_set(pool_address: AccountAddress) -> TransactionPay pub fn stake_reactivate_stake(amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("reactivate_stake").to_owned(), vec![], vec![bcs::to_bytes(&amount).unwrap()], @@ -2788,15 +4222,24 @@ pub fn stake_reactivate_stake(amount: u64) -> TransactionPayload { } /// Rotate the consensus key of the validator, it'll take effect in next epoch. -pub fn stake_rotate_consensus_key(pool_address: AccountAddress, new_consensus_pubkey: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), +pub fn stake_rotate_consensus_key( + pool_address: AccountAddress, + new_consensus_pubkey: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("rotate_consensus_key").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&new_consensus_pubkey).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&new_consensus_pubkey).unwrap(), + ], )) } @@ -2804,9 +4247,12 @@ pub fn stake_rotate_consensus_key(pool_address: AccountAddress, new_consensus_pu pub fn stake_set_delegated_voter(new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("set_delegated_voter").to_owned(), vec![], vec![bcs::to_bytes(&new_voter).unwrap()], @@ -2817,9 +4263,12 @@ pub fn stake_set_delegated_voter(new_voter: AccountAddress) -> TransactionPayloa pub fn stake_set_operator(new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("set_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_operator).unwrap()], @@ -2830,9 +4279,12 @@ pub fn stake_set_operator(new_operator: AccountAddress) -> TransactionPayload { pub fn stake_unlock(amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("unlock").to_owned(), vec![], vec![bcs::to_bytes(&amount).unwrap()], @@ -2840,15 +4292,26 @@ pub fn stake_unlock(amount: u64) -> TransactionPayload { } /// Update the network and full node addresses of the validator. This only takes effect in the next epoch. -pub fn stake_update_network_and_fullnode_addresses(pool_address: AccountAddress, new_network_addresses: Vec, new_fullnode_addresses: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), +pub fn stake_update_network_and_fullnode_addresses( + pool_address: AccountAddress, + new_network_addresses: Vec, + new_fullnode_addresses: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("update_network_and_fullnode_addresses").to_owned(), vec![], - vec![bcs::to_bytes(&pool_address).unwrap(), bcs::to_bytes(&new_network_addresses).unwrap(), bcs::to_bytes(&new_fullnode_addresses).unwrap()], + vec![ + bcs::to_bytes(&pool_address).unwrap(), + bcs::to_bytes(&new_network_addresses).unwrap(), + bcs::to_bytes(&new_fullnode_addresses).unwrap(), + ], )) } @@ -2856,9 +4319,12 @@ pub fn stake_update_network_and_fullnode_addresses(pool_address: AccountAddress, pub fn stake_withdraw(withdraw_amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("stake").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("stake").to_owned(), + ), ident_str!("withdraw").to_owned(), vec![], vec![bcs::to_bytes(&withdraw_amount).unwrap()], @@ -2869,39 +4335,69 @@ pub fn stake_withdraw(withdraw_amount: u64) -> TransactionPayload { pub fn staking_contract_add_stake(operator: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("add_stake").to_owned(), vec![], - vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&amount).unwrap()], + vec![ + bcs::to_bytes(&operator).unwrap(), + bcs::to_bytes(&amount).unwrap(), + ], )) } /// Staker can call this function to create a simple staking contract with a specified operator. -pub fn staking_contract_create_staking_contract(operator: AccountAddress, voter: AccountAddress, amount: u64, commission_percentage: u64, contract_creation_seed: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_create_staking_contract( + operator: AccountAddress, + voter: AccountAddress, + amount: u64, + commission_percentage: u64, + contract_creation_seed: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("create_staking_contract").to_owned(), vec![], - vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&voter).unwrap(), bcs::to_bytes(&amount).unwrap(), bcs::to_bytes(&commission_percentage).unwrap(), bcs::to_bytes(&contract_creation_seed).unwrap()], + vec![ + bcs::to_bytes(&operator).unwrap(), + bcs::to_bytes(&voter).unwrap(), + bcs::to_bytes(&amount).unwrap(), + bcs::to_bytes(&commission_percentage).unwrap(), + bcs::to_bytes(&contract_creation_seed).unwrap(), + ], )) } /// Allow anyone to distribute already unlocked funds. This does not affect reward compounding and therefore does /// not need to be restricted to just the staker or operator. -pub fn staking_contract_distribute(staker: AccountAddress, operator: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_distribute( + staker: AccountAddress, + operator: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("distribute").to_owned(), vec![], - vec![bcs::to_bytes(&staker).unwrap(), bcs::to_bytes(&operator).unwrap()], + vec![ + bcs::to_bytes(&staker).unwrap(), + bcs::to_bytes(&operator).unwrap(), + ], )) } @@ -2909,15 +4405,24 @@ pub fn staking_contract_distribute(staker: AccountAddress, operator: AccountAddr /// at the end of the stake pool's lockup period before they can actually can withdraw_commission. /// /// Only staker, operator or beneficiary can call this. -pub fn staking_contract_request_commission(staker: AccountAddress, operator: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_request_commission( + staker: AccountAddress, + operator: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("request_commission").to_owned(), vec![], - vec![bcs::to_bytes(&staker).unwrap(), bcs::to_bytes(&operator).unwrap()], + vec![ + bcs::to_bytes(&staker).unwrap(), + bcs::to_bytes(&operator).unwrap(), + ], )) } @@ -2925,9 +4430,12 @@ pub fn staking_contract_request_commission(staker: AccountAddress, operator: Acc pub fn staking_contract_reset_lockup(operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("reset_lockup").to_owned(), vec![], vec![bcs::to_bytes(&operator).unwrap()], @@ -2937,12 +4445,17 @@ pub fn staking_contract_reset_lockup(operator: AccountAddress) -> TransactionPay /// Allows an operator to change its beneficiary. Any existing unpaid commission rewards will be paid to the new /// beneficiary. To ensures payment to the current beneficiary, one should first call `distribute` before switching /// the beneficiary. An operator can set one beneficiary for staking contract pools, not a separate one for each pool. -pub fn staking_contract_set_beneficiary_for_operator(new_beneficiary: AccountAddress) -> TransactionPayload { +pub fn staking_contract_set_beneficiary_for_operator( + new_beneficiary: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("set_beneficiary_for_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_beneficiary).unwrap()], @@ -2950,28 +4463,48 @@ pub fn staking_contract_set_beneficiary_for_operator(new_beneficiary: AccountAdd } /// Allows staker to switch operator without going through the lenghthy process to unstake. -pub fn staking_contract_switch_operator(old_operator: AccountAddress, new_operator: AccountAddress, new_commission_percentage: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_switch_operator( + old_operator: AccountAddress, + new_operator: AccountAddress, + new_commission_percentage: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("switch_operator").to_owned(), vec![], - vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap(), bcs::to_bytes(&new_commission_percentage).unwrap()], + vec![ + bcs::to_bytes(&old_operator).unwrap(), + bcs::to_bytes(&new_operator).unwrap(), + bcs::to_bytes(&new_commission_percentage).unwrap(), + ], )) } /// Allows staker to switch operator without going through the lenghthy process to unstake, without resetting commission. -pub fn staking_contract_switch_operator_with_same_commission(old_operator: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_switch_operator_with_same_commission( + old_operator: AccountAddress, + new_operator: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("switch_operator_with_same_commission").to_owned(), vec![], - vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap()], + vec![ + bcs::to_bytes(&old_operator).unwrap(), + bcs::to_bytes(&new_operator).unwrap(), + ], )) } @@ -2979,9 +4512,12 @@ pub fn staking_contract_switch_operator_with_same_commission(old_operator: Accou pub fn staking_contract_unlock_rewards(operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("unlock_rewards").to_owned(), vec![], vec![bcs::to_bytes(&operator).unwrap()], @@ -2993,169 +4529,264 @@ pub fn staking_contract_unlock_rewards(operator: AccountAddress) -> TransactionP pub fn staking_contract_unlock_stake(operator: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("unlock_stake").to_owned(), vec![], - vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&amount).unwrap()], + vec![ + bcs::to_bytes(&operator).unwrap(), + bcs::to_bytes(&amount).unwrap(), + ], )) } /// Convenience function to allow a staker to update the commission percentage paid to the operator. /// TODO: fix the typo in function name. commision -> commission -pub fn staking_contract_update_commision(operator: AccountAddress, new_commission_percentage: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_update_commision( + operator: AccountAddress, + new_commission_percentage: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("update_commision").to_owned(), vec![], - vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_commission_percentage).unwrap()], + vec![ + bcs::to_bytes(&operator).unwrap(), + bcs::to_bytes(&new_commission_percentage).unwrap(), + ], )) } /// Convenient function to allow the staker to update the voter address in a staking contract they made. -pub fn staking_contract_update_voter(operator: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_contract").to_owned(), - ), +pub fn staking_contract_update_voter( + operator: AccountAddress, + new_voter: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_contract").to_owned(), + ), ident_str!("update_voter").to_owned(), vec![], - vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_voter).unwrap()], + vec![ + bcs::to_bytes(&operator).unwrap(), + bcs::to_bytes(&new_voter).unwrap(), + ], )) } - -pub fn staking_proxy_set_operator(old_operator: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { +pub fn staking_proxy_set_operator( + old_operator: AccountAddress, + new_operator: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_operator").to_owned(), vec![], - vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap()], + vec![ + bcs::to_bytes(&old_operator).unwrap(), + bcs::to_bytes(&new_operator).unwrap(), + ], )) } - pub fn staking_proxy_set_stake_pool_operator(new_operator: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_stake_pool_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_operator).unwrap()], )) } - pub fn staking_proxy_set_stake_pool_voter(new_voter: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_stake_pool_voter").to_owned(), vec![], vec![bcs::to_bytes(&new_voter).unwrap()], )) } - -pub fn staking_proxy_set_staking_contract_operator(old_operator: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { +pub fn staking_proxy_set_staking_contract_operator( + old_operator: AccountAddress, + new_operator: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_staking_contract_operator").to_owned(), vec![], - vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap()], + vec![ + bcs::to_bytes(&old_operator).unwrap(), + bcs::to_bytes(&new_operator).unwrap(), + ], )) } - -pub fn staking_proxy_set_staking_contract_voter(operator: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { +pub fn staking_proxy_set_staking_contract_voter( + operator: AccountAddress, + new_voter: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_staking_contract_voter").to_owned(), vec![], - vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_voter).unwrap()], + vec![ + bcs::to_bytes(&operator).unwrap(), + bcs::to_bytes(&new_voter).unwrap(), + ], )) } - -pub fn staking_proxy_set_vesting_contract_operator(old_operator: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { +pub fn staking_proxy_set_vesting_contract_operator( + old_operator: AccountAddress, + new_operator: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_vesting_contract_operator").to_owned(), vec![], - vec![bcs::to_bytes(&old_operator).unwrap(), bcs::to_bytes(&new_operator).unwrap()], + vec![ + bcs::to_bytes(&old_operator).unwrap(), + bcs::to_bytes(&new_operator).unwrap(), + ], )) } - -pub fn staking_proxy_set_vesting_contract_voter(operator: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { +pub fn staking_proxy_set_vesting_contract_voter( + operator: AccountAddress, + new_voter: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_vesting_contract_voter").to_owned(), vec![], - vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_voter).unwrap()], + vec![ + bcs::to_bytes(&operator).unwrap(), + bcs::to_bytes(&new_voter).unwrap(), + ], )) } - -pub fn staking_proxy_set_voter(operator: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { +pub fn staking_proxy_set_voter( + operator: AccountAddress, + new_voter: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("staking_proxy").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("staking_proxy").to_owned(), + ), ident_str!("set_voter").to_owned(), vec![], - vec![bcs::to_bytes(&operator).unwrap(), bcs::to_bytes(&new_voter).unwrap()], + vec![ + bcs::to_bytes(&operator).unwrap(), + bcs::to_bytes(&new_voter).unwrap(), + ], )) } /// Batch version of SUPRA transfer. -pub fn supra_account_batch_transfer(recipients: Vec, amounts: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_account").to_owned(), - ), +pub fn supra_account_batch_transfer( + recipients: Vec, + amounts: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_account").to_owned(), + ), ident_str!("batch_transfer").to_owned(), vec![], - vec![bcs::to_bytes(&recipients).unwrap(), bcs::to_bytes(&amounts).unwrap()], + vec![ + bcs::to_bytes(&recipients).unwrap(), + bcs::to_bytes(&amounts).unwrap(), + ], )) } /// Batch version of transfer_coins. -pub fn supra_account_batch_transfer_coins(coin_type: TypeTag, recipients: Vec, amounts: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_account").to_owned(), - ), +pub fn supra_account_batch_transfer_coins( + coin_type: TypeTag, + recipients: Vec, + amounts: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_account").to_owned(), + ), ident_str!("batch_transfer_coins").to_owned(), vec![coin_type], - vec![bcs::to_bytes(&recipients).unwrap(), bcs::to_bytes(&amounts).unwrap()], + vec![ + bcs::to_bytes(&recipients).unwrap(), + bcs::to_bytes(&amounts).unwrap(), + ], )) } @@ -3163,9 +4794,12 @@ pub fn supra_account_batch_transfer_coins(coin_type: TypeTag, recipients: Vec TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_account").to_owned(), + ), ident_str!("create_account").to_owned(), vec![], vec![bcs::to_bytes(&auth_key).unwrap()], @@ -3176,9 +4810,12 @@ pub fn supra_account_create_account(auth_key: AccountAddress) -> TransactionPayl pub fn supra_account_set_allow_direct_coin_transfers(allow: bool) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_account").to_owned(), + ), ident_str!("set_allow_direct_coin_transfers").to_owned(), vec![], vec![bcs::to_bytes(&allow).unwrap()], @@ -3190,9 +4827,12 @@ pub fn supra_account_set_allow_direct_coin_transfers(allow: bool) -> Transaction pub fn supra_account_transfer(to: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_account").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_account").to_owned(), + ), ident_str!("transfer").to_owned(), vec![], vec![bcs::to_bytes(&to).unwrap(), bcs::to_bytes(&amount).unwrap()], @@ -3201,12 +4841,19 @@ pub fn supra_account_transfer(to: AccountAddress, amount: u64) -> TransactionPay /// Convenient function to transfer a custom CoinType to a recipient account that might not exist. /// This would create the recipient account first and register it to receive the CoinType, before transferring. -pub fn supra_account_transfer_coins(coin_type: TypeTag, to: AccountAddress, amount: u64) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_account").to_owned(), - ), +pub fn supra_account_transfer_coins( + coin_type: TypeTag, + to: AccountAddress, + amount: u64, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_account").to_owned(), + ), ident_str!("transfer_coins").to_owned(), vec![coin_type], vec![bcs::to_bytes(&to).unwrap(), bcs::to_bytes(&amount).unwrap()], @@ -3218,9 +4865,12 @@ pub fn supra_account_transfer_coins(coin_type: TypeTag, to: AccountAddress, amou pub fn supra_coin_claim_mint_capability() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_coin").to_owned(), + ), ident_str!("claim_mint_capability").to_owned(), vec![], vec![], @@ -3232,9 +4882,12 @@ pub fn supra_coin_claim_mint_capability() -> TransactionPayload { pub fn supra_coin_delegate_mint_capability(to: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_coin").to_owned(), + ), ident_str!("delegate_mint_capability").to_owned(), vec![], vec![bcs::to_bytes(&to).unwrap()], @@ -3246,22 +4899,32 @@ pub fn supra_coin_delegate_mint_capability(to: AccountAddress) -> TransactionPay pub fn supra_coin_mint(dst_addr: AccountAddress, amount: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_coin").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_coin").to_owned(), + ), ident_str!("mint").to_owned(), vec![], - vec![bcs::to_bytes(&dst_addr).unwrap(), bcs::to_bytes(&amount).unwrap()], + vec![ + bcs::to_bytes(&dst_addr).unwrap(), + bcs::to_bytes(&amount).unwrap(), + ], )) } - -pub fn supra_governance_add_supra_approved_script_hash_script(proposal_id: u64) -> TransactionPayload { +pub fn supra_governance_add_supra_approved_script_hash_script( + proposal_id: u64, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("add_supra_approved_script_hash_script").to_owned(), vec![], vec![bcs::to_bytes(&proposal_id).unwrap()], @@ -3277,9 +4940,12 @@ pub fn supra_governance_add_supra_approved_script_hash_script(proposal_id: u64) pub fn supra_governance_force_end_epoch() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("force_end_epoch").to_owned(), vec![], vec![], @@ -3291,9 +4957,12 @@ pub fn supra_governance_force_end_epoch() -> TransactionPayload { pub fn supra_governance_force_end_epoch_test_only() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("force_end_epoch_test_only").to_owned(), vec![], vec![], @@ -3312,9 +4981,12 @@ pub fn supra_governance_force_end_epoch_test_only() -> TransactionPayload { pub fn supra_governance_reconfigure() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("reconfigure").to_owned(), vec![], vec![], @@ -3324,30 +4996,54 @@ pub fn supra_governance_reconfigure() -> TransactionPayload { /// Create a single-step proposal with the backing `stake_pool`. /// @param execution_hash Required. This is the hash of the resolution script. When the proposal is resolved, /// only the exact script with matching hash can be successfully executed. -pub fn supra_governance_supra_create_proposal(execution_hash: Vec, metadata_location: Vec, metadata_hash: Vec) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_governance").to_owned(), - ), +pub fn supra_governance_supra_create_proposal( + execution_hash: Vec, + metadata_location: Vec, + metadata_hash: Vec, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("supra_create_proposal").to_owned(), vec![], - vec![bcs::to_bytes(&execution_hash).unwrap(), bcs::to_bytes(&metadata_location).unwrap(), bcs::to_bytes(&metadata_hash).unwrap()], + vec![ + bcs::to_bytes(&execution_hash).unwrap(), + bcs::to_bytes(&metadata_location).unwrap(), + bcs::to_bytes(&metadata_hash).unwrap(), + ], )) } /// Create a single-step or multi-step proposal with the backing `stake_pool`. /// @param execution_hash Required. This is the hash of the resolution script. When the proposal is resolved, /// only the exact script with matching hash can be successfully executed. -pub fn supra_governance_supra_create_proposal_v2(execution_hash: Vec, metadata_location: Vec, metadata_hash: Vec, is_multi_step_proposal: bool) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_governance").to_owned(), - ), +pub fn supra_governance_supra_create_proposal_v2( + execution_hash: Vec, + metadata_location: Vec, + metadata_hash: Vec, + is_multi_step_proposal: bool, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("supra_create_proposal_v2").to_owned(), vec![], - vec![bcs::to_bytes(&execution_hash).unwrap(), bcs::to_bytes(&metadata_location).unwrap(), bcs::to_bytes(&metadata_hash).unwrap(), bcs::to_bytes(&is_multi_step_proposal).unwrap()], + vec![ + bcs::to_bytes(&execution_hash).unwrap(), + bcs::to_bytes(&metadata_location).unwrap(), + bcs::to_bytes(&metadata_hash).unwrap(), + bcs::to_bytes(&is_multi_step_proposal).unwrap(), + ], )) } @@ -3355,22 +5051,30 @@ pub fn supra_governance_supra_create_proposal_v2(execution_hash: Vec, metada pub fn supra_governance_supra_vote(proposal_id: u64, should_pass: bool) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("supra_governance").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("supra_governance").to_owned(), + ), ident_str!("supra_vote").to_owned(), vec![], - vec![bcs::to_bytes(&proposal_id).unwrap(), bcs::to_bytes(&should_pass).unwrap()], + vec![ + bcs::to_bytes(&proposal_id).unwrap(), + bcs::to_bytes(&should_pass).unwrap(), + ], )) } - pub fn transaction_fee_convert_to_aptos_fa_burn_ref() -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("transaction_fee").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("transaction_fee").to_owned(), + ), ident_str!("convert_to_aptos_fa_burn_ref").to_owned(), vec![], vec![], @@ -3384,9 +5088,12 @@ pub fn transaction_fee_convert_to_aptos_fa_burn_ref() -> TransactionPayload { pub fn version_set_for_next_epoch(major: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("version").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("version").to_owned(), + ), ident_str!("set_for_next_epoch").to_owned(), vec![], vec![bcs::to_bytes(&major).unwrap()], @@ -3401,9 +5108,12 @@ pub fn version_set_for_next_epoch(major: u64) -> TransactionPayload { pub fn version_set_version(major: u64) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("version").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("version").to_owned(), + ), ident_str!("set_version").to_owned(), vec![], vec![bcs::to_bytes(&major).unwrap()], @@ -3415,9 +5125,12 @@ pub fn version_set_version(major: u64) -> TransactionPayload { pub fn vesting_admin_withdraw(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("admin_withdraw").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -3428,9 +5141,12 @@ pub fn vesting_admin_withdraw(contract_address: AccountAddress) -> TransactionPa pub fn vesting_distribute(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("distribute").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -3441,9 +5157,12 @@ pub fn vesting_distribute(contract_address: AccountAddress) -> TransactionPayloa pub fn vesting_distribute_many(contract_addresses: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("distribute_many").to_owned(), vec![], vec![bcs::to_bytes(&contract_addresses).unwrap()], @@ -3452,41 +5171,62 @@ pub fn vesting_distribute_many(contract_addresses: Vec) -> Trans /// Remove the beneficiary for the given shareholder. All distributions will sent directly to the shareholder /// account. -pub fn vesting_reset_beneficiary(contract_address: AccountAddress, shareholder: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), +pub fn vesting_reset_beneficiary( + contract_address: AccountAddress, + shareholder: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("reset_beneficiary").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&shareholder).unwrap(), + ], )) } - pub fn vesting_reset_lockup(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("reset_lockup").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], )) } - -pub fn vesting_set_beneficiary(contract_address: AccountAddress, shareholder: AccountAddress, new_beneficiary: AccountAddress) -> TransactionPayload { +pub fn vesting_set_beneficiary( + contract_address: AccountAddress, + shareholder: AccountAddress, + new_beneficiary: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("set_beneficiary").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder).unwrap(), bcs::to_bytes(&new_beneficiary).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&shareholder).unwrap(), + bcs::to_bytes(&new_beneficiary).unwrap(), + ], )) } @@ -3494,38 +5234,59 @@ pub fn vesting_set_beneficiary(contract_address: AccountAddress, shareholder: Ac pub fn vesting_set_beneficiary_for_operator(new_beneficiary: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("set_beneficiary_for_operator").to_owned(), vec![], vec![bcs::to_bytes(&new_beneficiary).unwrap()], )) } - -pub fn vesting_set_beneficiary_resetter(contract_address: AccountAddress, beneficiary_resetter: AccountAddress) -> TransactionPayload { +pub fn vesting_set_beneficiary_resetter( + contract_address: AccountAddress, + beneficiary_resetter: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("set_beneficiary_resetter").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&beneficiary_resetter).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&beneficiary_resetter).unwrap(), + ], )) } - -pub fn vesting_set_management_role(contract_address: AccountAddress, role: Vec, role_holder: AccountAddress) -> TransactionPayload { +pub fn vesting_set_management_role( + contract_address: AccountAddress, + role: Vec, + role_holder: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("set_management_role").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&role).unwrap(), bcs::to_bytes(&role_holder).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&role).unwrap(), + bcs::to_bytes(&role_holder).unwrap(), + ], )) } @@ -3533,9 +5294,12 @@ pub fn vesting_set_management_role(contract_address: AccountAddress, role: Vec TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("terminate_vesting_contract").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -3546,9 +5310,12 @@ pub fn vesting_terminate_vesting_contract(contract_address: AccountAddress) -> T pub fn vesting_unlock_rewards(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("unlock_rewards").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -3559,64 +5326,101 @@ pub fn vesting_unlock_rewards(contract_address: AccountAddress) -> TransactionPa pub fn vesting_unlock_rewards_many(contract_addresses: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("unlock_rewards_many").to_owned(), vec![], vec![bcs::to_bytes(&contract_addresses).unwrap()], )) } - -pub fn vesting_update_commission_percentage(contract_address: AccountAddress, new_commission_percentage: u64) -> TransactionPayload { +pub fn vesting_update_commission_percentage( + contract_address: AccountAddress, + new_commission_percentage: u64, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("update_commission_percentage").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&new_commission_percentage).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&new_commission_percentage).unwrap(), + ], )) } - -pub fn vesting_update_operator(contract_address: AccountAddress, new_operator: AccountAddress, commission_percentage: u64) -> TransactionPayload { +pub fn vesting_update_operator( + contract_address: AccountAddress, + new_operator: AccountAddress, + commission_percentage: u64, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("update_operator").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&new_operator).unwrap(), bcs::to_bytes(&commission_percentage).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&new_operator).unwrap(), + bcs::to_bytes(&commission_percentage).unwrap(), + ], )) } - -pub fn vesting_update_operator_with_same_commission(contract_address: AccountAddress, new_operator: AccountAddress) -> TransactionPayload { +pub fn vesting_update_operator_with_same_commission( + contract_address: AccountAddress, + new_operator: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("update_operator_with_same_commission").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&new_operator).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&new_operator).unwrap(), + ], )) } - -pub fn vesting_update_voter(contract_address: AccountAddress, new_voter: AccountAddress) -> TransactionPayload { +pub fn vesting_update_voter( + contract_address: AccountAddress, + new_voter: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("update_voter").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&new_voter).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&new_voter).unwrap(), + ], )) } @@ -3624,9 +5428,12 @@ pub fn vesting_update_voter(contract_address: AccountAddress, new_voter: Account pub fn vesting_vest(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("vest").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -3637,142 +5444,241 @@ pub fn vesting_vest(contract_address: AccountAddress) -> TransactionPayload { pub fn vesting_vest_many(contract_addresses: Vec) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting").to_owned(), + ), ident_str!("vest_many").to_owned(), vec![], vec![bcs::to_bytes(&contract_addresses).unwrap()], )) } - -pub fn vesting_without_staking_admin_delay_vesting(contract_address: AccountAddress, delay_periods: u64) -> TransactionPayload { +pub fn vesting_without_staking_admin_delay_vesting( + contract_address: AccountAddress, + delay_periods: u64, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("admin_delay_vesting").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&delay_periods).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&delay_periods).unwrap(), + ], )) } /// Withdraw all funds to the preset vesting contract's withdrawal address. This can only be called if the contract /// has already been terminated. -pub fn vesting_without_staking_admin_withdraw(contract_address: AccountAddress) -> TransactionPayload { +pub fn vesting_without_staking_admin_withdraw( + contract_address: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("admin_withdraw").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], )) } - -pub fn vesting_without_staking_create_vesting_contract_with_amounts(shareholders: Vec, shares: Vec, vesting_numerators: Vec, vesting_denominator: u64, start_timestamp_secs: u64, period_duration: u64, withdrawal_address: AccountAddress, contract_creation_seed: Vec) -> TransactionPayload { +pub fn vesting_without_staking_create_vesting_contract_with_amounts( + shareholders: Vec, + shares: Vec, + vesting_numerators: Vec, + vesting_denominator: u64, + start_timestamp_secs: u64, + period_duration: u64, + withdrawal_address: AccountAddress, + contract_creation_seed: Vec, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("create_vesting_contract_with_amounts").to_owned(), vec![], - vec![bcs::to_bytes(&shareholders).unwrap(), bcs::to_bytes(&shares).unwrap(), bcs::to_bytes(&vesting_numerators).unwrap(), bcs::to_bytes(&vesting_denominator).unwrap(), bcs::to_bytes(&start_timestamp_secs).unwrap(), bcs::to_bytes(&period_duration).unwrap(), bcs::to_bytes(&withdrawal_address).unwrap(), bcs::to_bytes(&contract_creation_seed).unwrap()], + vec![ + bcs::to_bytes(&shareholders).unwrap(), + bcs::to_bytes(&shares).unwrap(), + bcs::to_bytes(&vesting_numerators).unwrap(), + bcs::to_bytes(&vesting_denominator).unwrap(), + bcs::to_bytes(&start_timestamp_secs).unwrap(), + bcs::to_bytes(&period_duration).unwrap(), + bcs::to_bytes(&withdrawal_address).unwrap(), + bcs::to_bytes(&contract_creation_seed).unwrap(), + ], )) } /// Remove the lockup period for the vesting contract. This can only be called by the admin of the vesting contract. /// Example usage: If admin find shareholder suspicious, admin can remove it. -pub fn vesting_without_staking_remove_shareholder(contract_address: AccountAddress, shareholder_address: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), +pub fn vesting_without_staking_remove_shareholder( + contract_address: AccountAddress, + shareholder_address: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("remove_shareholder").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder_address).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&shareholder_address).unwrap(), + ], )) } /// Remove the beneficiary for the given shareholder. All distributions will sent directly to the shareholder /// account. -pub fn vesting_without_staking_reset_beneficiary(contract_address: AccountAddress, shareholder: AccountAddress) -> TransactionPayload { - TransactionPayload::EntryFunction(EntryFunction::new( - ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), +pub fn vesting_without_staking_reset_beneficiary( + contract_address: AccountAddress, + shareholder: AccountAddress, +) -> TransactionPayload { + TransactionPayload::EntryFunction(EntryFunction::new( + ModuleId::new( + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("reset_beneficiary").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&shareholder).unwrap(), + ], )) } - -pub fn vesting_without_staking_set_beneficiary(contract_address: AccountAddress, shareholder: AccountAddress, new_beneficiary: AccountAddress) -> TransactionPayload { +pub fn vesting_without_staking_set_beneficiary( + contract_address: AccountAddress, + shareholder: AccountAddress, + new_beneficiary: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("set_beneficiary").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder).unwrap(), bcs::to_bytes(&new_beneficiary).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&shareholder).unwrap(), + bcs::to_bytes(&new_beneficiary).unwrap(), + ], )) } - -pub fn vesting_without_staking_set_beneficiary_resetter(contract_address: AccountAddress, beneficiary_resetter: AccountAddress) -> TransactionPayload { +pub fn vesting_without_staking_set_beneficiary_resetter( + contract_address: AccountAddress, + beneficiary_resetter: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("set_beneficiary_resetter").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&beneficiary_resetter).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&beneficiary_resetter).unwrap(), + ], )) } - -pub fn vesting_without_staking_set_management_role(contract_address: AccountAddress, role: Vec, role_holder: AccountAddress) -> TransactionPayload { +pub fn vesting_without_staking_set_management_role( + contract_address: AccountAddress, + role: Vec, + role_holder: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("set_management_role").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&role).unwrap(), bcs::to_bytes(&role_holder).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&role).unwrap(), + bcs::to_bytes(&role_holder).unwrap(), + ], )) } - -pub fn vesting_without_staking_set_vesting_schedule(contract_address: AccountAddress, vesting_numerators: Vec, vesting_denominator: u64, period_duration: u64) -> TransactionPayload { +pub fn vesting_without_staking_set_vesting_schedule( + contract_address: AccountAddress, + vesting_numerators: Vec, + vesting_denominator: u64, + period_duration: u64, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("set_vesting_schedule").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&vesting_numerators).unwrap(), bcs::to_bytes(&vesting_denominator).unwrap(), bcs::to_bytes(&period_duration).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&vesting_numerators).unwrap(), + bcs::to_bytes(&vesting_denominator).unwrap(), + bcs::to_bytes(&period_duration).unwrap(), + ], )) } /// Terminate the vesting contract and send all funds back to the withdrawal address. -pub fn vesting_without_staking_terminate_vesting_contract(contract_address: AccountAddress) -> TransactionPayload { +pub fn vesting_without_staking_terminate_vesting_contract( + contract_address: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("terminate_vesting_contract").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], @@ -3783,805 +5689,948 @@ pub fn vesting_without_staking_terminate_vesting_contract(contract_address: Acco pub fn vesting_without_staking_vest(contract_address: AccountAddress) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("vest").to_owned(), vec![], vec![bcs::to_bytes(&contract_address).unwrap()], )) } - -pub fn vesting_without_staking_vest_individual(contract_address: AccountAddress, shareholder_address: AccountAddress) -> TransactionPayload { +pub fn vesting_without_staking_vest_individual( + contract_address: AccountAddress, + shareholder_address: AccountAddress, +) -> TransactionPayload { TransactionPayload::EntryFunction(EntryFunction::new( ModuleId::new( - AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]), - ident_str!("vesting_without_staking").to_owned(), - ), + AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + ]), + ident_str!("vesting_without_staking").to_owned(), + ), ident_str!("vest_individual").to_owned(), vec![], - vec![bcs::to_bytes(&contract_address).unwrap(), bcs::to_bytes(&shareholder_address).unwrap()], + vec![ + bcs::to_bytes(&contract_address).unwrap(), + bcs::to_bytes(&shareholder_address).unwrap(), + ], )) } -mod decoder { use super::*; -pub fn account_offer_rotation_capability(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountOfferRotationCapability { - rotation_capability_sig_bytes : bcs::from_bytes(script.args().get(0)?).ok()?, - account_scheme : bcs::from_bytes(script.args().get(1)?).ok()?, - account_public_key_bytes : bcs::from_bytes(script.args().get(2)?).ok()?, - recipient_address : bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None - } -} - -pub fn account_offer_signer_capability(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountOfferSignerCapability { - signer_capability_sig_bytes : bcs::from_bytes(script.args().get(0)?).ok()?, - account_scheme : bcs::from_bytes(script.args().get(1)?).ok()?, - account_public_key_bytes : bcs::from_bytes(script.args().get(2)?).ok()?, - recipient_address : bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None +mod decoder { + use super::*; + pub fn account_offer_rotation_capability( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountOfferRotationCapability { + rotation_capability_sig_bytes: bcs::from_bytes(script.args().get(0)?).ok()?, + account_scheme: bcs::from_bytes(script.args().get(1)?).ok()?, + account_public_key_bytes: bcs::from_bytes(script.args().get(2)?).ok()?, + recipient_address: bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None + } } -} -pub fn account_revoke_any_rotation_capability(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::AccountRevokeAnyRotationCapability { - }) - } else { - None + pub fn account_offer_signer_capability( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountOfferSignerCapability { + signer_capability_sig_bytes: bcs::from_bytes(script.args().get(0)?).ok()?, + account_scheme: bcs::from_bytes(script.args().get(1)?).ok()?, + account_public_key_bytes: bcs::from_bytes(script.args().get(2)?).ok()?, + recipient_address: bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None + } } -} -pub fn account_revoke_any_signer_capability(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::AccountRevokeAnySignerCapability { - }) - } else { - None + pub fn account_revoke_any_rotation_capability( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::AccountRevokeAnyRotationCapability {}) + } else { + None + } } -} -pub fn account_revoke_rotation_capability(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountRevokeRotationCapability { - to_be_revoked_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn account_revoke_any_signer_capability( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::AccountRevokeAnySignerCapability {}) + } else { + None + } } -} -pub fn account_revoke_signer_capability(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountRevokeSignerCapability { - to_be_revoked_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn account_revoke_rotation_capability( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountRevokeRotationCapability { + to_be_revoked_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn account_rotate_authentication_key(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountRotateAuthenticationKey { - from_scheme : bcs::from_bytes(script.args().get(0)?).ok()?, - from_public_key_bytes : bcs::from_bytes(script.args().get(1)?).ok()?, - to_scheme : bcs::from_bytes(script.args().get(2)?).ok()?, - to_public_key_bytes : bcs::from_bytes(script.args().get(3)?).ok()?, - cap_rotate_key : bcs::from_bytes(script.args().get(4)?).ok()?, - cap_update_table : bcs::from_bytes(script.args().get(5)?).ok()?, - }) - } else { - None + pub fn account_revoke_signer_capability( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountRevokeSignerCapability { + to_be_revoked_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn account_rotate_authentication_key_call(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountRotateAuthenticationKeyCall { - new_auth_key : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn account_rotate_authentication_key( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountRotateAuthenticationKey { + from_scheme: bcs::from_bytes(script.args().get(0)?).ok()?, + from_public_key_bytes: bcs::from_bytes(script.args().get(1)?).ok()?, + to_scheme: bcs::from_bytes(script.args().get(2)?).ok()?, + to_public_key_bytes: bcs::from_bytes(script.args().get(3)?).ok()?, + cap_rotate_key: bcs::from_bytes(script.args().get(4)?).ok()?, + cap_update_table: bcs::from_bytes(script.args().get(5)?).ok()?, + }) + } else { + None + } } -} -pub fn account_rotate_authentication_key_with_rotation_capability(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AccountRotateAuthenticationKeyWithRotationCapability { - rotation_cap_offerer_address : bcs::from_bytes(script.args().get(0)?).ok()?, - new_scheme : bcs::from_bytes(script.args().get(1)?).ok()?, - new_public_key_bytes : bcs::from_bytes(script.args().get(2)?).ok()?, - cap_update_table : bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None + pub fn account_rotate_authentication_key_call( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AccountRotateAuthenticationKeyCall { + new_auth_key: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn automation_registry_cancel_system_task(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AutomationRegistryCancelSystemTask { - task_index : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn account_rotate_authentication_key_with_rotation_capability( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::AccountRotateAuthenticationKeyWithRotationCapability { + rotation_cap_offerer_address: bcs::from_bytes(script.args().get(0)?).ok()?, + new_scheme: bcs::from_bytes(script.args().get(1)?).ok()?, + new_public_key_bytes: bcs::from_bytes(script.args().get(2)?).ok()?, + cap_update_table: bcs::from_bytes(script.args().get(3)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn automation_registry_cancel_task(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AutomationRegistryCancelTask { - task_index : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn automation_registry_cancel_system_task( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AutomationRegistryCancelSystemTask { + task_index: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn automation_registry_stop_system_tasks(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AutomationRegistryStopSystemTasks { - task_indexes : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn automation_registry_cancel_task( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AutomationRegistryCancelTask { + task_index: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn automation_registry_stop_tasks(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::AutomationRegistryStopTasks { - task_indexes : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn automation_registry_stop_system_tasks( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AutomationRegistryStopSystemTasks { + task_indexes: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn code_publish_package_txn(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CodePublishPackageTxn { - metadata_serialized : bcs::from_bytes(script.args().get(0)?).ok()?, - code : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn automation_registry_stop_tasks( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::AutomationRegistryStopTasks { + task_indexes: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn coin_create_coin_conversion_map(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::CoinCreateCoinConversionMap { - }) - } else { - None + pub fn code_publish_package_txn(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CodePublishPackageTxn { + metadata_serialized: bcs::from_bytes(script.args().get(0)?).ok()?, + code: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn coin_create_pairing(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CoinCreatePairing { - coin_type : script.ty_args().get(0)?.clone(), - }) - } else { - None + pub fn coin_create_coin_conversion_map( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::CoinCreateCoinConversionMap {}) + } else { + None + } } -} -pub fn coin_migrate_to_fungible_store(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CoinMigrateToFungibleStore { - coin_type : script.ty_args().get(0)?.clone(), - }) - } else { - None + pub fn coin_create_pairing(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CoinCreatePairing { + coin_type: script.ty_args().get(0)?.clone(), + }) + } else { + None + } } -} -pub fn coin_transfer(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CoinTransfer { - coin_type : script.ty_args().get(0)?.clone(), - to : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn coin_migrate_to_fungible_store( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CoinMigrateToFungibleStore { + coin_type: script.ty_args().get(0)?.clone(), + }) + } else { + None + } } -} -pub fn coin_upgrade_supply(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CoinUpgradeSupply { - coin_type : script.ty_args().get(0)?.clone(), - }) - } else { - None + pub fn coin_transfer(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CoinTransfer { + coin_type: script.ty_args().get(0)?.clone(), + to: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn committee_map_remove_committee(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapRemoveCommittee { - com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - id : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn coin_upgrade_supply(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CoinUpgradeSupply { + coin_type: script.ty_args().get(0)?.clone(), + }) + } else { + None + } } -} -pub fn committee_map_remove_committee_bulk(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapRemoveCommitteeBulk { - com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - ids : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn committee_map_remove_committee( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapRemoveCommittee { + com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + id: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn committee_map_remove_committee_member(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapRemoveCommitteeMember { - com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - id : bcs::from_bytes(script.args().get(1)?).ok()?, - node_address : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn committee_map_remove_committee_bulk( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapRemoveCommitteeBulk { + com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + ids: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn committee_map_update_dkg_flag(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpdateDkgFlag { - com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - com_id : bcs::from_bytes(script.args().get(1)?).ok()?, - flag_value : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } -} - -pub fn committee_map_upsert_committee(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpsertCommittee { - com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - id : bcs::from_bytes(script.args().get(1)?).ok()?, - node_addresses : bcs::from_bytes(script.args().get(2)?).ok()?, - ip_public_address : bcs::from_bytes(script.args().get(3)?).ok()?, - node_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, - network_public_key : bcs::from_bytes(script.args().get(5)?).ok()?, - cg_public_key : bcs::from_bytes(script.args().get(6)?).ok()?, - network_port : bcs::from_bytes(script.args().get(7)?).ok()?, - rpc_port : bcs::from_bytes(script.args().get(8)?).ok()?, - committee_type : bcs::from_bytes(script.args().get(9)?).ok()?, - }) - } else { - None - } -} - -pub fn committee_map_upsert_committee_bulk(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpsertCommitteeBulk { - com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - ids : bcs::from_bytes(script.args().get(1)?).ok()?, - node_addresses_bulk : bcs::from_bytes(script.args().get(2)?).ok()?, - ip_public_address_bulk : bcs::from_bytes(script.args().get(3)?).ok()?, - node_public_key_bulk : bcs::from_bytes(script.args().get(4)?).ok()?, - network_public_key_bulk : bcs::from_bytes(script.args().get(5)?).ok()?, - cg_public_key_bulk : bcs::from_bytes(script.args().get(6)?).ok()?, - network_port_bulk : bcs::from_bytes(script.args().get(7)?).ok()?, - rpc_por_bulkt : bcs::from_bytes(script.args().get(8)?).ok()?, - committee_types : bcs::from_bytes(script.args().get(9)?).ok()?, - }) - } else { - None - } -} - -pub fn committee_map_upsert_committee_member(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpsertCommitteeMember { - com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - id : bcs::from_bytes(script.args().get(1)?).ok()?, - node_address : bcs::from_bytes(script.args().get(2)?).ok()?, - ip_public_address : bcs::from_bytes(script.args().get(3)?).ok()?, - node_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, - network_public_key : bcs::from_bytes(script.args().get(5)?).ok()?, - cg_public_key : bcs::from_bytes(script.args().get(6)?).ok()?, - network_port : bcs::from_bytes(script.args().get(7)?).ok()?, - rpc_port : bcs::from_bytes(script.args().get(8)?).ok()?, - }) - } else { - None - } -} - -pub fn committee_map_upsert_committee_member_bulk(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::CommitteeMapUpsertCommitteeMemberBulk { - com_store_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - ids : bcs::from_bytes(script.args().get(1)?).ok()?, - node_addresses : bcs::from_bytes(script.args().get(2)?).ok()?, - ip_public_address : bcs::from_bytes(script.args().get(3)?).ok()?, - node_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, - network_public_key : bcs::from_bytes(script.args().get(5)?).ok()?, - cg_public_key : bcs::from_bytes(script.args().get(6)?).ok()?, - network_port : bcs::from_bytes(script.args().get(7)?).ok()?, - rpc_port : bcs::from_bytes(script.args().get(8)?).ok()?, - }) - } else { - None + pub fn committee_map_remove_committee_member( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapRemoveCommitteeMember { + com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + id: bcs::from_bytes(script.args().get(1)?).ok()?, + node_address: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn managed_coin_burn(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ManagedCoinBurn { - coin_type : script.ty_args().get(0)?.clone(), - amount : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn committee_map_update_dkg_flag( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpdateDkgFlag { + com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + com_id: bcs::from_bytes(script.args().get(1)?).ok()?, + flag_value: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn managed_coin_initialize(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ManagedCoinInitialize { - coin_type : script.ty_args().get(0)?.clone(), - name : bcs::from_bytes(script.args().get(0)?).ok()?, - symbol : bcs::from_bytes(script.args().get(1)?).ok()?, - decimals : bcs::from_bytes(script.args().get(2)?).ok()?, - monitor_supply : bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None + pub fn committee_map_upsert_committee( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpsertCommittee { + com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + id: bcs::from_bytes(script.args().get(1)?).ok()?, + node_addresses: bcs::from_bytes(script.args().get(2)?).ok()?, + ip_public_address: bcs::from_bytes(script.args().get(3)?).ok()?, + node_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, + network_public_key: bcs::from_bytes(script.args().get(5)?).ok()?, + cg_public_key: bcs::from_bytes(script.args().get(6)?).ok()?, + network_port: bcs::from_bytes(script.args().get(7)?).ok()?, + rpc_port: bcs::from_bytes(script.args().get(8)?).ok()?, + committee_type: bcs::from_bytes(script.args().get(9)?).ok()?, + }) + } else { + None + } } -} -pub fn managed_coin_mint(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ManagedCoinMint { - coin_type : script.ty_args().get(0)?.clone(), - dst_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn committee_map_upsert_committee_bulk( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpsertCommitteeBulk { + com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + ids: bcs::from_bytes(script.args().get(1)?).ok()?, + node_addresses_bulk: bcs::from_bytes(script.args().get(2)?).ok()?, + ip_public_address_bulk: bcs::from_bytes(script.args().get(3)?).ok()?, + node_public_key_bulk: bcs::from_bytes(script.args().get(4)?).ok()?, + network_public_key_bulk: bcs::from_bytes(script.args().get(5)?).ok()?, + cg_public_key_bulk: bcs::from_bytes(script.args().get(6)?).ok()?, + network_port_bulk: bcs::from_bytes(script.args().get(7)?).ok()?, + rpc_por_bulkt: bcs::from_bytes(script.args().get(8)?).ok()?, + committee_types: bcs::from_bytes(script.args().get(9)?).ok()?, + }) + } else { + None + } } -} -pub fn managed_coin_register(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ManagedCoinRegister { - coin_type : script.ty_args().get(0)?.clone(), - }) - } else { - None + pub fn committee_map_upsert_committee_member( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpsertCommitteeMember { + com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + id: bcs::from_bytes(script.args().get(1)?).ok()?, + node_address: bcs::from_bytes(script.args().get(2)?).ok()?, + ip_public_address: bcs::from_bytes(script.args().get(3)?).ok()?, + node_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, + network_public_key: bcs::from_bytes(script.args().get(5)?).ok()?, + cg_public_key: bcs::from_bytes(script.args().get(6)?).ok()?, + network_port: bcs::from_bytes(script.args().get(7)?).ok()?, + rpc_port: bcs::from_bytes(script.args().get(8)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_add_owner(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountAddOwner { - new_owner : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn committee_map_upsert_committee_member_bulk( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::CommitteeMapUpsertCommitteeMemberBulk { + com_store_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + ids: bcs::from_bytes(script.args().get(1)?).ok()?, + node_addresses: bcs::from_bytes(script.args().get(2)?).ok()?, + ip_public_address: bcs::from_bytes(script.args().get(3)?).ok()?, + node_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, + network_public_key: bcs::from_bytes(script.args().get(5)?).ok()?, + cg_public_key: bcs::from_bytes(script.args().get(6)?).ok()?, + network_port: bcs::from_bytes(script.args().get(7)?).ok()?, + rpc_port: bcs::from_bytes(script.args().get(8)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_add_owners(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountAddOwners { - new_owners : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn managed_coin_burn(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ManagedCoinBurn { + coin_type: script.ty_args().get(0)?.clone(), + amount: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_add_owners_and_update_signatures_required(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountAddOwnersAndUpdateSignaturesRequired { - new_owners : bcs::from_bytes(script.args().get(0)?).ok()?, - new_num_signatures_required : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn managed_coin_initialize(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ManagedCoinInitialize { + coin_type: script.ty_args().get(0)?.clone(), + name: bcs::from_bytes(script.args().get(0)?).ok()?, + symbol: bcs::from_bytes(script.args().get(1)?).ok()?, + decimals: bcs::from_bytes(script.args().get(2)?).ok()?, + monitor_supply: bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_approve_transaction(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountApproveTransaction { - multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, - sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn managed_coin_mint(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ManagedCoinMint { + coin_type: script.ty_args().get(0)?.clone(), + dst_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_create(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreate { - num_signatures_required : bcs::from_bytes(script.args().get(0)?).ok()?, - metadata_keys : bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_values : bcs::from_bytes(script.args().get(2)?).ok()?, - timeout_duration : bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None + pub fn managed_coin_register(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ManagedCoinRegister { + coin_type: script.ty_args().get(0)?.clone(), + }) + } else { + None + } } -} -pub fn multisig_account_create_transaction(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreateTransaction { - multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, - payload : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_add_owner(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountAddOwner { + new_owner: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_create_transaction_with_hash(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreateTransactionWithHash { - multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, - payload_hash : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } -} - -pub fn multisig_account_create_with_existing_account(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreateWithExistingAccount { - multisig_address : bcs::from_bytes(script.args().get(0)?).ok()?, - owners : bcs::from_bytes(script.args().get(1)?).ok()?, - num_signatures_required : bcs::from_bytes(script.args().get(2)?).ok()?, - account_scheme : bcs::from_bytes(script.args().get(3)?).ok()?, - account_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, - create_multisig_account_signed_message : bcs::from_bytes(script.args().get(5)?).ok()?, - metadata_keys : bcs::from_bytes(script.args().get(6)?).ok()?, - metadata_values : bcs::from_bytes(script.args().get(7)?).ok()?, - timeout_duration : bcs::from_bytes(script.args().get(8)?).ok()?, - }) - } else { - None - } -} - -pub fn multisig_account_create_with_existing_account_and_revoke_auth_key(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreateWithExistingAccountAndRevokeAuthKey { - multisig_address : bcs::from_bytes(script.args().get(0)?).ok()?, - owners : bcs::from_bytes(script.args().get(1)?).ok()?, - num_signatures_required : bcs::from_bytes(script.args().get(2)?).ok()?, - account_scheme : bcs::from_bytes(script.args().get(3)?).ok()?, - account_public_key : bcs::from_bytes(script.args().get(4)?).ok()?, - create_multisig_account_signed_message : bcs::from_bytes(script.args().get(5)?).ok()?, - metadata_keys : bcs::from_bytes(script.args().get(6)?).ok()?, - metadata_values : bcs::from_bytes(script.args().get(7)?).ok()?, - timeout_duration : bcs::from_bytes(script.args().get(8)?).ok()?, - }) - } else { - None + pub fn multisig_account_add_owners(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountAddOwners { + new_owners: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_create_with_owners(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreateWithOwners { - additional_owners : bcs::from_bytes(script.args().get(0)?).ok()?, - num_signatures_required : bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_keys : bcs::from_bytes(script.args().get(2)?).ok()?, - metadata_values : bcs::from_bytes(script.args().get(3)?).ok()?, - timeout_duration : bcs::from_bytes(script.args().get(4)?).ok()?, - }) - } else { - None + pub fn multisig_account_add_owners_and_update_signatures_required( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::MultisigAccountAddOwnersAndUpdateSignaturesRequired { + new_owners: bcs::from_bytes(script.args().get(0)?).ok()?, + new_num_signatures_required: bcs::from_bytes(script.args().get(1)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn multisig_account_create_with_owners_then_remove_bootstrapper(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountCreateWithOwnersThenRemoveBootstrapper { - owners : bcs::from_bytes(script.args().get(0)?).ok()?, - num_signatures_required : bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_keys : bcs::from_bytes(script.args().get(2)?).ok()?, - metadata_values : bcs::from_bytes(script.args().get(3)?).ok()?, - timeout_duration : bcs::from_bytes(script.args().get(4)?).ok()?, - }) - } else { - None + pub fn multisig_account_approve_transaction( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountApproveTransaction { + multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, + sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_execute_rejected_transaction(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountExecuteRejectedTransaction { - multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn multisig_account_create(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreate { + num_signatures_required: bcs::from_bytes(script.args().get(0)?).ok()?, + metadata_keys: bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_values: bcs::from_bytes(script.args().get(2)?).ok()?, + timeout_duration: bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_execute_rejected_transactions(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountExecuteRejectedTransactions { - multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, - final_sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_create_transaction( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreateTransaction { + multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, + payload: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_reject_transaction(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountRejectTransaction { - multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, - sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_create_transaction_with_hash( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::MultisigAccountCreateTransactionWithHash { + multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, + payload_hash: bcs::from_bytes(script.args().get(1)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn multisig_account_remove_owner(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountRemoveOwner { - owner_to_remove : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn multisig_account_create_with_existing_account( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::MultisigAccountCreateWithExistingAccount { + multisig_address: bcs::from_bytes(script.args().get(0)?).ok()?, + owners: bcs::from_bytes(script.args().get(1)?).ok()?, + num_signatures_required: bcs::from_bytes(script.args().get(2)?).ok()?, + account_scheme: bcs::from_bytes(script.args().get(3)?).ok()?, + account_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, + create_multisig_account_signed_message: bcs::from_bytes(script.args().get(5)?) + .ok()?, + metadata_keys: bcs::from_bytes(script.args().get(6)?).ok()?, + metadata_values: bcs::from_bytes(script.args().get(7)?).ok()?, + timeout_duration: bcs::from_bytes(script.args().get(8)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn multisig_account_remove_owners(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountRemoveOwners { - owners_to_remove : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn multisig_account_create_with_existing_account_and_revoke_auth_key( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::MultisigAccountCreateWithExistingAccountAndRevokeAuthKey { + multisig_address: bcs::from_bytes(script.args().get(0)?).ok()?, + owners: bcs::from_bytes(script.args().get(1)?).ok()?, + num_signatures_required: bcs::from_bytes(script.args().get(2)?).ok()?, + account_scheme: bcs::from_bytes(script.args().get(3)?).ok()?, + account_public_key: bcs::from_bytes(script.args().get(4)?).ok()?, + create_multisig_account_signed_message: bcs::from_bytes(script.args().get(5)?) + .ok()?, + metadata_keys: bcs::from_bytes(script.args().get(6)?).ok()?, + metadata_values: bcs::from_bytes(script.args().get(7)?).ok()?, + timeout_duration: bcs::from_bytes(script.args().get(8)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn multisig_account_swap_owner(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountSwapOwner { - to_swap_in : bcs::from_bytes(script.args().get(0)?).ok()?, - to_swap_out : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_create_with_owners( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountCreateWithOwners { + additional_owners: bcs::from_bytes(script.args().get(0)?).ok()?, + num_signatures_required: bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_keys: bcs::from_bytes(script.args().get(2)?).ok()?, + metadata_values: bcs::from_bytes(script.args().get(3)?).ok()?, + timeout_duration: bcs::from_bytes(script.args().get(4)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_swap_owners(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountSwapOwners { - to_swap_in : bcs::from_bytes(script.args().get(0)?).ok()?, - to_swap_out : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_create_with_owners_then_remove_bootstrapper( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::MultisigAccountCreateWithOwnersThenRemoveBootstrapper { + owners: bcs::from_bytes(script.args().get(0)?).ok()?, + num_signatures_required: bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_keys: bcs::from_bytes(script.args().get(2)?).ok()?, + metadata_values: bcs::from_bytes(script.args().get(3)?).ok()?, + timeout_duration: bcs::from_bytes(script.args().get(4)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn multisig_account_swap_owners_and_update_signatures_required(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountSwapOwnersAndUpdateSignaturesRequired { - new_owners : bcs::from_bytes(script.args().get(0)?).ok()?, - owners_to_remove : bcs::from_bytes(script.args().get(1)?).ok()?, - new_num_signatures_required : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn multisig_account_execute_rejected_transaction( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::MultisigAccountExecuteRejectedTransaction { + multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn multisig_account_update_metadata(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountUpdateMetadata { - keys : bcs::from_bytes(script.args().get(0)?).ok()?, - values : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_execute_rejected_transactions( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::MultisigAccountExecuteRejectedTransactions { + multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, + final_sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn multisig_account_update_signatures_required(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountUpdateSignaturesRequired { - new_num_signatures_required : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn multisig_account_reject_transaction( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountRejectTransaction { + multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, + sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_update_timeout_duration(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountUpdateTimeoutDuration { - timeout_duration : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn multisig_account_remove_owner( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountRemoveOwner { + owner_to_remove: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_vote_transaction(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountVoteTransaction { - multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, - sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, - approved : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn multisig_account_remove_owners( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountRemoveOwners { + owners_to_remove: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_vote_transactions(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountVoteTransactions { - multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, - starting_sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, - final_sequence_number : bcs::from_bytes(script.args().get(2)?).ok()?, - approved : bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None + pub fn multisig_account_swap_owner(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountSwapOwner { + to_swap_in: bcs::from_bytes(script.args().get(0)?).ok()?, + to_swap_out: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn multisig_account_vote_transanction(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::MultisigAccountVoteTransanction { - multisig_account : bcs::from_bytes(script.args().get(0)?).ok()?, - sequence_number : bcs::from_bytes(script.args().get(1)?).ok()?, - approved : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn multisig_account_swap_owners(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountSwapOwners { + to_swap_in: bcs::from_bytes(script.args().get(0)?).ok()?, + to_swap_out: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn object_transfer_call(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ObjectTransferCall { - object : bcs::from_bytes(script.args().get(0)?).ok()?, - to : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_swap_owners_and_update_signatures_required( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::MultisigAccountSwapOwnersAndUpdateSignaturesRequired { + new_owners: bcs::from_bytes(script.args().get(0)?).ok()?, + owners_to_remove: bcs::from_bytes(script.args().get(1)?).ok()?, + new_num_signatures_required: bcs::from_bytes(script.args().get(2)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn object_code_deployment_publish(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ObjectCodeDeploymentPublish { - metadata_serialized : bcs::from_bytes(script.args().get(0)?).ok()?, - code : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_update_metadata( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountUpdateMetadata { + keys: bcs::from_bytes(script.args().get(0)?).ok()?, + values: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_add_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolAddStake { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_update_signatures_required( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountUpdateSignaturesRequired { + new_num_signatures_required: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_admin_increase_last_unlock_period(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolAdminIncreaseLastUnlockPeriod { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - additional_periods : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_update_timeout_duration( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountUpdateTimeoutDuration { + timeout_duration: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_delegate_voting_power(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolDelegateVotingPower { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn multisig_account_vote_transaction( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountVoteTransaction { + multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, + sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, + approved: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_enable_partial_governance_voting(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolEnablePartialGovernanceVoting { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn multisig_account_vote_transactions( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountVoteTransactions { + multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, + starting_sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, + final_sequence_number: bcs::from_bytes(script.args().get(2)?).ok()?, + approved: bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_fund_delegators_with_locked_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolFundDelegatorsWithLockedStake { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - delegators : bcs::from_bytes(script.args().get(1)?).ok()?, - stakes : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn multisig_account_vote_transanction( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::MultisigAccountVoteTransanction { + multisig_account: bcs::from_bytes(script.args().get(0)?).ok()?, + sequence_number: bcs::from_bytes(script.args().get(1)?).ok()?, + approved: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_fund_delegators_with_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolFundDelegatorsWithStake { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - delegators : bcs::from_bytes(script.args().get(1)?).ok()?, - stakes : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None - } -} - -pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolInitializeDelegationPoolWithAmount { - multisig_admin : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - operator_commission_percentage : bcs::from_bytes(script.args().get(2)?).ok()?, - delegation_pool_creation_seed : bcs::from_bytes(script.args().get(3)?).ok()?, - delegator_address : bcs::from_bytes(script.args().get(4)?).ok()?, - principle_stake : bcs::from_bytes(script.args().get(5)?).ok()?, - unlock_numerators : bcs::from_bytes(script.args().get(6)?).ok()?, - unlock_denominator : bcs::from_bytes(script.args().get(7)?).ok()?, - unlock_start_time : bcs::from_bytes(script.args().get(8)?).ok()?, - unlock_duration : bcs::from_bytes(script.args().get(9)?).ok()?, - }) - } else { - None + pub fn object_transfer_call(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ObjectTransferCall { + object: bcs::from_bytes(script.args().get(0)?).ok()?, + to: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } + } + + pub fn object_code_deployment_publish( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ObjectCodeDeploymentPublish { + metadata_serialized: bcs::from_bytes(script.args().get(0)?).ok()?, + code: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolInitializeDelegationPoolWithAmountWithoutMultisigAdmin { + pub fn pbo_delegation_pool_add_stake( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolAddStake { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } + } + + pub fn pbo_delegation_pool_admin_increase_last_unlock_period( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolAdminIncreaseLastUnlockPeriod { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + additional_periods: bcs::from_bytes(script.args().get(1)?).ok()?, + }, + ) + } else { + None + } + } + + pub fn pbo_delegation_pool_delegate_voting_power( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolDelegateVotingPower { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } + } + + pub fn pbo_delegation_pool_enable_partial_governance_voting( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolEnablePartialGovernanceVoting { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }, + ) + } else { + None + } + } + + pub fn pbo_delegation_pool_fund_delegators_with_locked_stake( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolFundDelegatorsWithLockedStake { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + delegators: bcs::from_bytes(script.args().get(1)?).ok()?, + stakes: bcs::from_bytes(script.args().get(2)?).ok()?, + }, + ) + } else { + None + } + } + + pub fn pbo_delegation_pool_fund_delegators_with_stake( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolFundDelegatorsWithStake { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + delegators: bcs::from_bytes(script.args().get(1)?).ok()?, + stakes: bcs::from_bytes(script.args().get(2)?).ok()?, + }, + ) + } else { + None + } + } + + pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolInitializeDelegationPoolWithAmount { + multisig_admin: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + operator_commission_percentage: bcs::from_bytes(script.args().get(2)?).ok()?, + delegation_pool_creation_seed: bcs::from_bytes(script.args().get(3)?).ok()?, + delegator_address: bcs::from_bytes(script.args().get(4)?).ok()?, + principle_stake: bcs::from_bytes(script.args().get(5)?).ok()?, + unlock_numerators: bcs::from_bytes(script.args().get(6)?).ok()?, + unlock_denominator: bcs::from_bytes(script.args().get(7)?).ok()?, + unlock_start_time: bcs::from_bytes(script.args().get(8)?).ok()?, + unlock_duration: bcs::from_bytes(script.args().get(9)?).ok()?, + }, + ) + } else { + None + } + } + + pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolInitializeDelegationPoolWithAmountWithoutMultisigAdmin { amount : bcs::from_bytes(script.args().get(0)?).ok()?, operator_commission_percentage : bcs::from_bytes(script.args().get(1)?).ok()?, delegation_pool_creation_seed : bcs::from_bytes(script.args().get(2)?).ok()?, @@ -4592,1232 +6641,1852 @@ pub fn pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multis unlock_start_time : bcs::from_bytes(script.args().get(7)?).ok()?, unlock_duration : bcs::from_bytes(script.args().get(8)?).ok()?, }) - } else { - None + } else { + None + } } -} -pub fn pbo_delegation_pool_lock_delegators_stakes(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolLockDelegatorsStakes { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - delegators : bcs::from_bytes(script.args().get(1)?).ok()?, - new_principle_stakes : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_lock_delegators_stakes( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolLockDelegatorsStakes { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + delegators: bcs::from_bytes(script.args().get(1)?).ok()?, + new_principle_stakes: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_reactivate_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolReactivateStake { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_reactivate_stake( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolReactivateStake { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_replace_delegator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolReplaceDelegator { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - old_delegator : bcs::from_bytes(script.args().get(1)?).ok()?, - new_delegator : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_replace_delegator( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolReplaceDelegator { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + old_delegator: bcs::from_bytes(script.args().get(1)?).ok()?, + new_delegator: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_set_beneficiary_for_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolSetBeneficiaryForOperator { - new_beneficiary : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_set_beneficiary_for_operator( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolSetBeneficiaryForOperator { + new_beneficiary: bcs::from_bytes(script.args().get(0)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn pbo_delegation_pool_set_delegated_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolSetDelegatedVoter { - new_voter : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_set_delegated_voter( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolSetDelegatedVoter { + new_voter: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_set_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolSetOperator { - new_operator : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_set_operator( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolSetOperator { + new_operator: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_synchronize_delegation_pool(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolSynchronizeDelegationPool { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_synchronize_delegation_pool( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolSynchronizeDelegationPool { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn pbo_delegation_pool_unlock(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolUnlock { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_unlock(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolUnlock { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_update_commission_percentage(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolUpdateCommissionPercentage { - new_commission_percentage : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_update_commission_percentage( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolUpdateCommissionPercentage { + new_commission_percentage: bcs::from_bytes(script.args().get(0)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn pbo_delegation_pool_update_unlocking_schedule(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolUpdateUnlockingSchedule { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - unlock_numerators : bcs::from_bytes(script.args().get(1)?).ok()?, - unlock_denominator : bcs::from_bytes(script.args().get(2)?).ok()?, - unlock_start_time : bcs::from_bytes(script.args().get(3)?).ok()?, - unlock_duration : bcs::from_bytes(script.args().get(4)?).ok()?, - }) - } else { - None + pub fn pbo_delegation_pool_update_unlocking_schedule( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolUpdateUnlockingSchedule { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + unlock_numerators: bcs::from_bytes(script.args().get(1)?).ok()?, + unlock_denominator: bcs::from_bytes(script.args().get(2)?).ok()?, + unlock_start_time: bcs::from_bytes(script.args().get(3)?).ok()?, + unlock_duration: bcs::from_bytes(script.args().get(4)?).ok()?, + }, + ) + } else { + None + } + } + + pub fn pbo_delegation_pool_update_unlocking_schedule_unchecked( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::PboDelegationPoolUpdateUnlockingScheduleUnchecked { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + unlock_numerators: bcs::from_bytes(script.args().get(1)?).ok()?, + unlock_denominator: bcs::from_bytes(script.args().get(2)?).ok()?, + unlock_start_time: bcs::from_bytes(script.args().get(3)?).ok()?, + unlock_duration: bcs::from_bytes(script.args().get(4)?).ok()?, + last_unlock_period: bcs::from_bytes(script.args().get(5)?).ok()?, + }, + ) + } else { + None + } + } + + pub fn pbo_delegation_pool_withdraw(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::PboDelegationPoolWithdraw { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_update_unlocking_schedule_unchecked(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolUpdateUnlockingScheduleUnchecked { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - unlock_numerators : bcs::from_bytes(script.args().get(1)?).ok()?, - unlock_denominator : bcs::from_bytes(script.args().get(2)?).ok()?, - unlock_start_time : bcs::from_bytes(script.args().get(3)?).ok()?, - unlock_duration : bcs::from_bytes(script.args().get(4)?).ok()?, - last_unlock_period : bcs::from_bytes(script.args().get(5)?).ok()?, - }) - } else { - None + pub fn resource_account_create_resource_account( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::ResourceAccountCreateResourceAccount { + seed: bcs::from_bytes(script.args().get(0)?).ok()?, + optional_auth_key: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn pbo_delegation_pool_withdraw(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::PboDelegationPoolWithdraw { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn resource_account_create_resource_account_and_fund( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::ResourceAccountCreateResourceAccountAndFund { + seed: bcs::from_bytes(script.args().get(0)?).ok()?, + optional_auth_key: bcs::from_bytes(script.args().get(1)?).ok()?, + fund_amount: bcs::from_bytes(script.args().get(2)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn resource_account_create_resource_account(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ResourceAccountCreateResourceAccount { - seed : bcs::from_bytes(script.args().get(0)?).ok()?, - optional_auth_key : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn resource_account_create_resource_account_and_publish_package( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::ResourceAccountCreateResourceAccountAndPublishPackage { + seed: bcs::from_bytes(script.args().get(0)?).ok()?, + metadata_serialized: bcs::from_bytes(script.args().get(1)?).ok()?, + code: bcs::from_bytes(script.args().get(2)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn resource_account_create_resource_account_and_fund(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ResourceAccountCreateResourceAccountAndFund { - seed : bcs::from_bytes(script.args().get(0)?).ok()?, - optional_auth_key : bcs::from_bytes(script.args().get(1)?).ok()?, - fund_amount : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn stake_add_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeAddStake { + amount: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn resource_account_create_resource_account_and_publish_package(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::ResourceAccountCreateResourceAccountAndPublishPackage { - seed : bcs::from_bytes(script.args().get(0)?).ok()?, - metadata_serialized : bcs::from_bytes(script.args().get(1)?).ok()?, - code : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn stake_increase_lockup(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::StakeIncreaseLockup {}) + } else { + None + } } -} -pub fn stake_add_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeAddStake { - amount : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn stake_initialize_stake_owner(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeInitializeStakeOwner { + initial_stake_amount: bcs::from_bytes(script.args().get(0)?).ok()?, + operator: bcs::from_bytes(script.args().get(1)?).ok()?, + voter: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_increase_lockup(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::StakeIncreaseLockup { - }) - } else { - None + pub fn stake_initialize_validator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeInitializeValidator { + consensus_pubkey: bcs::from_bytes(script.args().get(0)?).ok()?, + network_addresses: bcs::from_bytes(script.args().get(1)?).ok()?, + fullnode_addresses: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_initialize_stake_owner(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeInitializeStakeOwner { - initial_stake_amount : bcs::from_bytes(script.args().get(0)?).ok()?, - operator : bcs::from_bytes(script.args().get(1)?).ok()?, - voter : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn stake_join_validator_set(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeJoinValidatorSet { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_initialize_validator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeInitializeValidator { - consensus_pubkey : bcs::from_bytes(script.args().get(0)?).ok()?, - network_addresses : bcs::from_bytes(script.args().get(1)?).ok()?, - fullnode_addresses : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn stake_leave_validator_set(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeLeaveValidatorSet { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_join_validator_set(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeJoinValidatorSet { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn stake_reactivate_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeReactivateStake { + amount: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_leave_validator_set(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeLeaveValidatorSet { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn stake_rotate_consensus_key(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeRotateConsensusKey { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + new_consensus_pubkey: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_reactivate_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeReactivateStake { - amount : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn stake_set_delegated_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeSetDelegatedVoter { + new_voter: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_rotate_consensus_key(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeRotateConsensusKey { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - new_consensus_pubkey : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn stake_set_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeSetOperator { + new_operator: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_set_delegated_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeSetDelegatedVoter { - new_voter : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn stake_unlock(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeUnlock { + amount: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_set_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeSetOperator { - new_operator : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn stake_update_network_and_fullnode_addresses( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeUpdateNetworkAndFullnodeAddresses { + pool_address: bcs::from_bytes(script.args().get(0)?).ok()?, + new_network_addresses: bcs::from_bytes(script.args().get(1)?).ok()?, + new_fullnode_addresses: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_unlock(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeUnlock { - amount : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn stake_withdraw(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakeWithdraw { + withdraw_amount: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_update_network_and_fullnode_addresses(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeUpdateNetworkAndFullnodeAddresses { - pool_address : bcs::from_bytes(script.args().get(0)?).ok()?, - new_network_addresses : bcs::from_bytes(script.args().get(1)?).ok()?, - new_fullnode_addresses : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn staking_contract_add_stake(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractAddStake { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn stake_withdraw(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakeWithdraw { - withdraw_amount : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn staking_contract_create_staking_contract( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractCreateStakingContract { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + voter: bcs::from_bytes(script.args().get(1)?).ok()?, + amount: bcs::from_bytes(script.args().get(2)?).ok()?, + commission_percentage: bcs::from_bytes(script.args().get(3)?).ok()?, + contract_creation_seed: bcs::from_bytes(script.args().get(4)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_add_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractAddStake { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_contract_distribute(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractDistribute { + staker: bcs::from_bytes(script.args().get(0)?).ok()?, + operator: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_create_staking_contract(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractCreateStakingContract { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - voter : bcs::from_bytes(script.args().get(1)?).ok()?, - amount : bcs::from_bytes(script.args().get(2)?).ok()?, - commission_percentage : bcs::from_bytes(script.args().get(3)?).ok()?, - contract_creation_seed : bcs::from_bytes(script.args().get(4)?).ok()?, - }) - } else { - None + pub fn staking_contract_request_commission( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractRequestCommission { + staker: bcs::from_bytes(script.args().get(0)?).ok()?, + operator: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_distribute(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractDistribute { - staker : bcs::from_bytes(script.args().get(0)?).ok()?, - operator : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_contract_reset_lockup( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractResetLockup { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_request_commission(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractRequestCommission { - staker : bcs::from_bytes(script.args().get(0)?).ok()?, - operator : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_contract_set_beneficiary_for_operator( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::StakingContractSetBeneficiaryForOperator { + new_beneficiary: bcs::from_bytes(script.args().get(0)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn staking_contract_reset_lockup(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractResetLockup { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn staking_contract_switch_operator( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractSwitchOperator { + old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, + new_commission_percentage: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_set_beneficiary_for_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractSetBeneficiaryForOperator { - new_beneficiary : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn staking_contract_switch_operator_with_same_commission( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::StakingContractSwitchOperatorWithSameCommission { + old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn staking_contract_switch_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractSwitchOperator { - old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, - new_commission_percentage : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn staking_contract_unlock_rewards( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractUnlockRewards { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_switch_operator_with_same_commission(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractSwitchOperatorWithSameCommission { - old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_contract_unlock_stake( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractUnlockStake { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_unlock_rewards(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractUnlockRewards { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn staking_contract_update_commision( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractUpdateCommision { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_commission_percentage: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_unlock_stake(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractUnlockStake { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_contract_update_voter( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingContractUpdateVoter { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_update_commision(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractUpdateCommision { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_commission_percentage : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_proxy_set_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetOperator { + old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_contract_update_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingContractUpdateVoter { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_proxy_set_stake_pool_operator( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetStakePoolOperator { + new_operator: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_proxy_set_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetOperator { - old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_proxy_set_stake_pool_voter( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetStakePoolVoter { + new_voter: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_proxy_set_stake_pool_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetStakePoolOperator { - new_operator : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn staking_proxy_set_staking_contract_operator( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetStakingContractOperator { + old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_proxy_set_stake_pool_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetStakePoolVoter { - new_voter : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn staking_proxy_set_staking_contract_voter( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetStakingContractVoter { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_proxy_set_staking_contract_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetStakingContractOperator { - old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_proxy_set_vesting_contract_operator( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetVestingContractOperator { + old_operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_proxy_set_staking_contract_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetStakingContractVoter { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_proxy_set_vesting_contract_voter( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetVestingContractVoter { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_proxy_set_vesting_contract_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetVestingContractOperator { - old_operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn staking_proxy_set_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::StakingProxySetVoter { + operator: bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_proxy_set_vesting_contract_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetVestingContractVoter { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn supra_account_batch_transfer(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountBatchTransfer { + recipients: bcs::from_bytes(script.args().get(0)?).ok()?, + amounts: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn staking_proxy_set_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::StakingProxySetVoter { - operator : bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn supra_account_batch_transfer_coins( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountBatchTransferCoins { + coin_type: script.ty_args().get(0)?.clone(), + recipients: bcs::from_bytes(script.args().get(0)?).ok()?, + amounts: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_account_batch_transfer(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountBatchTransfer { - recipients : bcs::from_bytes(script.args().get(0)?).ok()?, - amounts : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn supra_account_create_account(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountCreateAccount { + auth_key: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_account_batch_transfer_coins(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountBatchTransferCoins { - coin_type : script.ty_args().get(0)?.clone(), - recipients : bcs::from_bytes(script.args().get(0)?).ok()?, - amounts : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn supra_account_set_allow_direct_coin_transfers( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountSetAllowDirectCoinTransfers { + allow: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_account_create_account(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountCreateAccount { - auth_key : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn supra_account_transfer(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountTransfer { + to: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_account_set_allow_direct_coin_transfers(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountSetAllowDirectCoinTransfers { - allow : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn supra_account_transfer_coins(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraAccountTransferCoins { + coin_type: script.ty_args().get(0)?.clone(), + to: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_account_transfer(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountTransfer { - to : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn supra_coin_claim_mint_capability( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::SupraCoinClaimMintCapability {}) + } else { + None + } } -} -pub fn supra_account_transfer_coins(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraAccountTransferCoins { - coin_type : script.ty_args().get(0)?.clone(), - to : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn supra_coin_delegate_mint_capability( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraCoinDelegateMintCapability { + to: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_coin_claim_mint_capability(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::SupraCoinClaimMintCapability { - }) - } else { - None + pub fn supra_coin_mint(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraCoinMint { + dst_addr: bcs::from_bytes(script.args().get(0)?).ok()?, + amount: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_coin_delegate_mint_capability(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraCoinDelegateMintCapability { - to : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn supra_governance_add_supra_approved_script_hash_script( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::SupraGovernanceAddSupraApprovedScriptHashScript { + proposal_id: bcs::from_bytes(script.args().get(0)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn supra_coin_mint(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraCoinMint { - dst_addr : bcs::from_bytes(script.args().get(0)?).ok()?, - amount : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn supra_governance_force_end_epoch( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::SupraGovernanceForceEndEpoch {}) + } else { + None + } } -} -pub fn supra_governance_add_supra_approved_script_hash_script(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraGovernanceAddSupraApprovedScriptHashScript { - proposal_id : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn supra_governance_force_end_epoch_test_only( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::SupraGovernanceForceEndEpochTestOnly {}) + } else { + None + } } -} -pub fn supra_governance_force_end_epoch(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::SupraGovernanceForceEndEpoch { - }) - } else { - None + pub fn supra_governance_reconfigure(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::SupraGovernanceReconfigure {}) + } else { + None + } } -} -pub fn supra_governance_force_end_epoch_test_only(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::SupraGovernanceForceEndEpochTestOnly { - }) - } else { - None + pub fn supra_governance_supra_create_proposal( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraGovernanceSupraCreateProposal { + execution_hash: bcs::from_bytes(script.args().get(0)?).ok()?, + metadata_location: bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_hash: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_governance_reconfigure(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::SupraGovernanceReconfigure { - }) - } else { - None + pub fn supra_governance_supra_create_proposal_v2( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraGovernanceSupraCreateProposalV2 { + execution_hash: bcs::from_bytes(script.args().get(0)?).ok()?, + metadata_location: bcs::from_bytes(script.args().get(1)?).ok()?, + metadata_hash: bcs::from_bytes(script.args().get(2)?).ok()?, + is_multi_step_proposal: bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_governance_supra_create_proposal(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraGovernanceSupraCreateProposal { - execution_hash : bcs::from_bytes(script.args().get(0)?).ok()?, - metadata_location : bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_hash : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn supra_governance_supra_vote(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::SupraGovernanceSupraVote { + proposal_id: bcs::from_bytes(script.args().get(0)?).ok()?, + should_pass: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn supra_governance_supra_create_proposal_v2(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraGovernanceSupraCreateProposalV2 { - execution_hash : bcs::from_bytes(script.args().get(0)?).ok()?, - metadata_location : bcs::from_bytes(script.args().get(1)?).ok()?, - metadata_hash : bcs::from_bytes(script.args().get(2)?).ok()?, - is_multi_step_proposal : bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None + pub fn transaction_fee_convert_to_aptos_fa_burn_ref( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(_script) = payload { + Some(EntryFunctionCall::TransactionFeeConvertToAptosFaBurnRef {}) + } else { + None + } } -} -pub fn supra_governance_supra_vote(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::SupraGovernanceSupraVote { - proposal_id : bcs::from_bytes(script.args().get(0)?).ok()?, - should_pass : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn version_set_for_next_epoch(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VersionSetForNextEpoch { + major: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn transaction_fee_convert_to_aptos_fa_burn_ref(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(_script) = payload { - Some(EntryFunctionCall::TransactionFeeConvertToAptosFaBurnRef { - }) - } else { - None + pub fn version_set_version(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VersionSetVersion { + major: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn version_set_for_next_epoch(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VersionSetForNextEpoch { - major : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_admin_withdraw(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingAdminWithdraw { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn version_set_version(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VersionSetVersion { - major : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_distribute(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingDistribute { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_admin_withdraw(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingAdminWithdraw { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_distribute_many(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingDistributeMany { + contract_addresses: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_distribute(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingDistribute { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_reset_beneficiary(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingResetBeneficiary { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_distribute_many(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingDistributeMany { - contract_addresses : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_reset_lockup(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingResetLockup { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_reset_beneficiary(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingResetBeneficiary { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn vesting_set_beneficiary(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingSetBeneficiary { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder: bcs::from_bytes(script.args().get(1)?).ok()?, + new_beneficiary: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_reset_lockup(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingResetLockup { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_set_beneficiary_for_operator( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingSetBeneficiaryForOperator { + new_beneficiary: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_set_beneficiary(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingSetBeneficiary { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder : bcs::from_bytes(script.args().get(1)?).ok()?, - new_beneficiary : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn vesting_set_beneficiary_resetter( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingSetBeneficiaryResetter { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + beneficiary_resetter: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_set_beneficiary_for_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingSetBeneficiaryForOperator { - new_beneficiary : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_set_management_role(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingSetManagementRole { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + role: bcs::from_bytes(script.args().get(1)?).ok()?, + role_holder: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_set_beneficiary_resetter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingSetBeneficiaryResetter { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - beneficiary_resetter : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn vesting_terminate_vesting_contract( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingTerminateVestingContract { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_set_management_role(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingSetManagementRole { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - role : bcs::from_bytes(script.args().get(1)?).ok()?, - role_holder : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn vesting_unlock_rewards(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUnlockRewards { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_terminate_vesting_contract(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingTerminateVestingContract { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_unlock_rewards_many(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUnlockRewardsMany { + contract_addresses: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_unlock_rewards(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUnlockRewards { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_update_commission_percentage( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUpdateCommissionPercentage { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + new_commission_percentage: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_unlock_rewards_many(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUnlockRewardsMany { - contract_addresses : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_update_operator(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUpdateOperator { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, + commission_percentage: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_update_commission_percentage(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUpdateCommissionPercentage { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - new_commission_percentage : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn vesting_update_operator_with_same_commission( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUpdateOperatorWithSameCommission { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + new_operator: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_update_operator(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUpdateOperator { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, - commission_percentage : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn vesting_update_voter(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingUpdateVoter { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + new_voter: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_update_operator_with_same_commission(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUpdateOperatorWithSameCommission { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - new_operator : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn vesting_vest(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingVest { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_update_voter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingUpdateVoter { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - new_voter : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn vesting_vest_many(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingVestMany { + contract_addresses: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_vest(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingVest { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_admin_delay_vesting( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingAdminDelayVesting { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + delay_periods: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_vest_many(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingVestMany { - contract_addresses : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_admin_withdraw( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingAdminWithdraw { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_without_staking_admin_delay_vesting(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingAdminDelayVesting { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - delay_periods : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_create_vesting_contract_with_amounts( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::VestingWithoutStakingCreateVestingContractWithAmounts { + shareholders: bcs::from_bytes(script.args().get(0)?).ok()?, + shares: bcs::from_bytes(script.args().get(1)?).ok()?, + vesting_numerators: bcs::from_bytes(script.args().get(2)?).ok()?, + vesting_denominator: bcs::from_bytes(script.args().get(3)?).ok()?, + start_timestamp_secs: bcs::from_bytes(script.args().get(4)?).ok()?, + period_duration: bcs::from_bytes(script.args().get(5)?).ok()?, + withdrawal_address: bcs::from_bytes(script.args().get(6)?).ok()?, + contract_creation_seed: bcs::from_bytes(script.args().get(7)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn vesting_without_staking_admin_withdraw(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingAdminWithdraw { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None - } -} - -pub fn vesting_without_staking_create_vesting_contract_with_amounts(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingCreateVestingContractWithAmounts { - shareholders : bcs::from_bytes(script.args().get(0)?).ok()?, - shares : bcs::from_bytes(script.args().get(1)?).ok()?, - vesting_numerators : bcs::from_bytes(script.args().get(2)?).ok()?, - vesting_denominator : bcs::from_bytes(script.args().get(3)?).ok()?, - start_timestamp_secs : bcs::from_bytes(script.args().get(4)?).ok()?, - period_duration : bcs::from_bytes(script.args().get(5)?).ok()?, - withdrawal_address : bcs::from_bytes(script.args().get(6)?).ok()?, - contract_creation_seed : bcs::from_bytes(script.args().get(7)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_remove_shareholder( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingRemoveShareholder { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder_address: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_without_staking_remove_shareholder(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingRemoveShareholder { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder_address : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_reset_beneficiary( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingResetBeneficiary { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_without_staking_reset_beneficiary(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingResetBeneficiary { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_set_beneficiary( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingSetBeneficiary { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder: bcs::from_bytes(script.args().get(1)?).ok()?, + new_beneficiary: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_without_staking_set_beneficiary(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingSetBeneficiary { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder : bcs::from_bytes(script.args().get(1)?).ok()?, - new_beneficiary : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_set_beneficiary_resetter( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::VestingWithoutStakingSetBeneficiaryResetter { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + beneficiary_resetter: bcs::from_bytes(script.args().get(1)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn vesting_without_staking_set_beneficiary_resetter(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingSetBeneficiaryResetter { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - beneficiary_resetter : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_set_management_role( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingSetManagementRole { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + role: bcs::from_bytes(script.args().get(1)?).ok()?, + role_holder: bcs::from_bytes(script.args().get(2)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_without_staking_set_management_role(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingSetManagementRole { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - role : bcs::from_bytes(script.args().get(1)?).ok()?, - role_holder : bcs::from_bytes(script.args().get(2)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_set_vesting_schedule( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingSetVestingSchedule { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + vesting_numerators: bcs::from_bytes(script.args().get(1)?).ok()?, + vesting_denominator: bcs::from_bytes(script.args().get(2)?).ok()?, + period_duration: bcs::from_bytes(script.args().get(3)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_without_staking_set_vesting_schedule(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingSetVestingSchedule { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - vesting_numerators : bcs::from_bytes(script.args().get(1)?).ok()?, - vesting_denominator : bcs::from_bytes(script.args().get(2)?).ok()?, - period_duration : bcs::from_bytes(script.args().get(3)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_terminate_vesting_contract( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some( + EntryFunctionCall::VestingWithoutStakingTerminateVestingContract { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }, + ) + } else { + None + } } -} -pub fn vesting_without_staking_terminate_vesting_contract(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingTerminateVestingContract { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_vest(payload: &TransactionPayload) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingVest { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + }) + } else { + None + } } -} -pub fn vesting_without_staking_vest(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingVest { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - }) - } else { - None + pub fn vesting_without_staking_vest_individual( + payload: &TransactionPayload, + ) -> Option { + if let TransactionPayload::EntryFunction(script) = payload { + Some(EntryFunctionCall::VestingWithoutStakingVestIndividual { + contract_address: bcs::from_bytes(script.args().get(0)?).ok()?, + shareholder_address: bcs::from_bytes(script.args().get(1)?).ok()?, + }) + } else { + None + } } } -pub fn vesting_without_staking_vest_individual(payload: &TransactionPayload) -> Option { - if let TransactionPayload::EntryFunction(script) = payload { - Some(EntryFunctionCall::VestingWithoutStakingVestIndividual { - contract_address : bcs::from_bytes(script.args().get(0)?).ok()?, - shareholder_address : bcs::from_bytes(script.args().get(1)?).ok()?, - }) - } else { - None - } -} -} - -type EntryFunctionDecoderMap = std::collections::HashMap Option + std::marker::Sync + std::marker::Send>>; - -static SCRIPT_FUNCTION_DECODER_MAP: once_cell::sync::Lazy = once_cell::sync::Lazy::new(|| { - let mut map : EntryFunctionDecoderMap = std::collections::HashMap::new(); - map.insert("account_offer_rotation_capability".to_string(), Box::new(decoder::account_offer_rotation_capability)); - map.insert("account_offer_signer_capability".to_string(), Box::new(decoder::account_offer_signer_capability)); - map.insert("account_revoke_any_rotation_capability".to_string(), Box::new(decoder::account_revoke_any_rotation_capability)); - map.insert("account_revoke_any_signer_capability".to_string(), Box::new(decoder::account_revoke_any_signer_capability)); - map.insert("account_revoke_rotation_capability".to_string(), Box::new(decoder::account_revoke_rotation_capability)); - map.insert("account_revoke_signer_capability".to_string(), Box::new(decoder::account_revoke_signer_capability)); - map.insert("account_rotate_authentication_key".to_string(), Box::new(decoder::account_rotate_authentication_key)); - map.insert("account_rotate_authentication_key_call".to_string(), Box::new(decoder::account_rotate_authentication_key_call)); - map.insert("account_rotate_authentication_key_with_rotation_capability".to_string(), Box::new(decoder::account_rotate_authentication_key_with_rotation_capability)); - map.insert("automation_registry_cancel_system_task".to_string(), Box::new(decoder::automation_registry_cancel_system_task)); - map.insert("automation_registry_cancel_task".to_string(), Box::new(decoder::automation_registry_cancel_task)); - map.insert("automation_registry_stop_system_tasks".to_string(), Box::new(decoder::automation_registry_stop_system_tasks)); - map.insert("automation_registry_stop_tasks".to_string(), Box::new(decoder::automation_registry_stop_tasks)); - map.insert("code_publish_package_txn".to_string(), Box::new(decoder::code_publish_package_txn)); - map.insert("coin_create_coin_conversion_map".to_string(), Box::new(decoder::coin_create_coin_conversion_map)); - map.insert("coin_create_pairing".to_string(), Box::new(decoder::coin_create_pairing)); - map.insert("coin_migrate_to_fungible_store".to_string(), Box::new(decoder::coin_migrate_to_fungible_store)); - map.insert("coin_transfer".to_string(), Box::new(decoder::coin_transfer)); - map.insert("coin_upgrade_supply".to_string(), Box::new(decoder::coin_upgrade_supply)); - map.insert("committee_map_remove_committee".to_string(), Box::new(decoder::committee_map_remove_committee)); - map.insert("committee_map_remove_committee_bulk".to_string(), Box::new(decoder::committee_map_remove_committee_bulk)); - map.insert("committee_map_remove_committee_member".to_string(), Box::new(decoder::committee_map_remove_committee_member)); - map.insert("committee_map_update_dkg_flag".to_string(), Box::new(decoder::committee_map_update_dkg_flag)); - map.insert("committee_map_upsert_committee".to_string(), Box::new(decoder::committee_map_upsert_committee)); - map.insert("committee_map_upsert_committee_bulk".to_string(), Box::new(decoder::committee_map_upsert_committee_bulk)); - map.insert("committee_map_upsert_committee_member".to_string(), Box::new(decoder::committee_map_upsert_committee_member)); - map.insert("committee_map_upsert_committee_member_bulk".to_string(), Box::new(decoder::committee_map_upsert_committee_member_bulk)); - map.insert("managed_coin_burn".to_string(), Box::new(decoder::managed_coin_burn)); - map.insert("managed_coin_initialize".to_string(), Box::new(decoder::managed_coin_initialize)); - map.insert("managed_coin_mint".to_string(), Box::new(decoder::managed_coin_mint)); - map.insert("managed_coin_register".to_string(), Box::new(decoder::managed_coin_register)); - map.insert("multisig_account_add_owner".to_string(), Box::new(decoder::multisig_account_add_owner)); - map.insert("multisig_account_add_owners".to_string(), Box::new(decoder::multisig_account_add_owners)); - map.insert("multisig_account_add_owners_and_update_signatures_required".to_string(), Box::new(decoder::multisig_account_add_owners_and_update_signatures_required)); - map.insert("multisig_account_approve_transaction".to_string(), Box::new(decoder::multisig_account_approve_transaction)); - map.insert("multisig_account_create".to_string(), Box::new(decoder::multisig_account_create)); - map.insert("multisig_account_create_transaction".to_string(), Box::new(decoder::multisig_account_create_transaction)); - map.insert("multisig_account_create_transaction_with_hash".to_string(), Box::new(decoder::multisig_account_create_transaction_with_hash)); - map.insert("multisig_account_create_with_existing_account".to_string(), Box::new(decoder::multisig_account_create_with_existing_account)); - map.insert("multisig_account_create_with_existing_account_and_revoke_auth_key".to_string(), Box::new(decoder::multisig_account_create_with_existing_account_and_revoke_auth_key)); - map.insert("multisig_account_create_with_owners".to_string(), Box::new(decoder::multisig_account_create_with_owners)); - map.insert("multisig_account_create_with_owners_then_remove_bootstrapper".to_string(), Box::new(decoder::multisig_account_create_with_owners_then_remove_bootstrapper)); - map.insert("multisig_account_execute_rejected_transaction".to_string(), Box::new(decoder::multisig_account_execute_rejected_transaction)); - map.insert("multisig_account_execute_rejected_transactions".to_string(), Box::new(decoder::multisig_account_execute_rejected_transactions)); - map.insert("multisig_account_reject_transaction".to_string(), Box::new(decoder::multisig_account_reject_transaction)); - map.insert("multisig_account_remove_owner".to_string(), Box::new(decoder::multisig_account_remove_owner)); - map.insert("multisig_account_remove_owners".to_string(), Box::new(decoder::multisig_account_remove_owners)); - map.insert("multisig_account_swap_owner".to_string(), Box::new(decoder::multisig_account_swap_owner)); - map.insert("multisig_account_swap_owners".to_string(), Box::new(decoder::multisig_account_swap_owners)); - map.insert("multisig_account_swap_owners_and_update_signatures_required".to_string(), Box::new(decoder::multisig_account_swap_owners_and_update_signatures_required)); - map.insert("multisig_account_update_metadata".to_string(), Box::new(decoder::multisig_account_update_metadata)); - map.insert("multisig_account_update_signatures_required".to_string(), Box::new(decoder::multisig_account_update_signatures_required)); - map.insert("multisig_account_update_timeout_duration".to_string(), Box::new(decoder::multisig_account_update_timeout_duration)); - map.insert("multisig_account_vote_transaction".to_string(), Box::new(decoder::multisig_account_vote_transaction)); - map.insert("multisig_account_vote_transactions".to_string(), Box::new(decoder::multisig_account_vote_transactions)); - map.insert("multisig_account_vote_transanction".to_string(), Box::new(decoder::multisig_account_vote_transanction)); - map.insert("object_transfer_call".to_string(), Box::new(decoder::object_transfer_call)); - map.insert("object_code_deployment_publish".to_string(), Box::new(decoder::object_code_deployment_publish)); - map.insert("pbo_delegation_pool_add_stake".to_string(), Box::new(decoder::pbo_delegation_pool_add_stake)); - map.insert("pbo_delegation_pool_admin_increase_last_unlock_period".to_string(), Box::new(decoder::pbo_delegation_pool_admin_increase_last_unlock_period)); - map.insert("pbo_delegation_pool_delegate_voting_power".to_string(), Box::new(decoder::pbo_delegation_pool_delegate_voting_power)); - map.insert("pbo_delegation_pool_enable_partial_governance_voting".to_string(), Box::new(decoder::pbo_delegation_pool_enable_partial_governance_voting)); - map.insert("pbo_delegation_pool_fund_delegators_with_locked_stake".to_string(), Box::new(decoder::pbo_delegation_pool_fund_delegators_with_locked_stake)); - map.insert("pbo_delegation_pool_fund_delegators_with_stake".to_string(), Box::new(decoder::pbo_delegation_pool_fund_delegators_with_stake)); - map.insert("pbo_delegation_pool_initialize_delegation_pool_with_amount".to_string(), Box::new(decoder::pbo_delegation_pool_initialize_delegation_pool_with_amount)); - map.insert("pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin".to_string(), Box::new(decoder::pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin)); - map.insert("pbo_delegation_pool_lock_delegators_stakes".to_string(), Box::new(decoder::pbo_delegation_pool_lock_delegators_stakes)); - map.insert("pbo_delegation_pool_reactivate_stake".to_string(), Box::new(decoder::pbo_delegation_pool_reactivate_stake)); - map.insert("pbo_delegation_pool_replace_delegator".to_string(), Box::new(decoder::pbo_delegation_pool_replace_delegator)); - map.insert("pbo_delegation_pool_set_beneficiary_for_operator".to_string(), Box::new(decoder::pbo_delegation_pool_set_beneficiary_for_operator)); - map.insert("pbo_delegation_pool_set_delegated_voter".to_string(), Box::new(decoder::pbo_delegation_pool_set_delegated_voter)); - map.insert("pbo_delegation_pool_set_operator".to_string(), Box::new(decoder::pbo_delegation_pool_set_operator)); - map.insert("pbo_delegation_pool_synchronize_delegation_pool".to_string(), Box::new(decoder::pbo_delegation_pool_synchronize_delegation_pool)); - map.insert("pbo_delegation_pool_unlock".to_string(), Box::new(decoder::pbo_delegation_pool_unlock)); - map.insert("pbo_delegation_pool_update_commission_percentage".to_string(), Box::new(decoder::pbo_delegation_pool_update_commission_percentage)); - map.insert("pbo_delegation_pool_update_unlocking_schedule".to_string(), Box::new(decoder::pbo_delegation_pool_update_unlocking_schedule)); - map.insert("pbo_delegation_pool_update_unlocking_schedule_unchecked".to_string(), Box::new(decoder::pbo_delegation_pool_update_unlocking_schedule_unchecked)); - map.insert("pbo_delegation_pool_withdraw".to_string(), Box::new(decoder::pbo_delegation_pool_withdraw)); - map.insert("resource_account_create_resource_account".to_string(), Box::new(decoder::resource_account_create_resource_account)); - map.insert("resource_account_create_resource_account_and_fund".to_string(), Box::new(decoder::resource_account_create_resource_account_and_fund)); - map.insert("resource_account_create_resource_account_and_publish_package".to_string(), Box::new(decoder::resource_account_create_resource_account_and_publish_package)); - map.insert("stake_add_stake".to_string(), Box::new(decoder::stake_add_stake)); - map.insert("stake_increase_lockup".to_string(), Box::new(decoder::stake_increase_lockup)); - map.insert("stake_initialize_stake_owner".to_string(), Box::new(decoder::stake_initialize_stake_owner)); - map.insert("stake_initialize_validator".to_string(), Box::new(decoder::stake_initialize_validator)); - map.insert("stake_join_validator_set".to_string(), Box::new(decoder::stake_join_validator_set)); - map.insert("stake_leave_validator_set".to_string(), Box::new(decoder::stake_leave_validator_set)); - map.insert("stake_reactivate_stake".to_string(), Box::new(decoder::stake_reactivate_stake)); - map.insert("stake_rotate_consensus_key".to_string(), Box::new(decoder::stake_rotate_consensus_key)); - map.insert("stake_set_delegated_voter".to_string(), Box::new(decoder::stake_set_delegated_voter)); - map.insert("stake_set_operator".to_string(), Box::new(decoder::stake_set_operator)); - map.insert("stake_unlock".to_string(), Box::new(decoder::stake_unlock)); - map.insert("stake_update_network_and_fullnode_addresses".to_string(), Box::new(decoder::stake_update_network_and_fullnode_addresses)); - map.insert("stake_withdraw".to_string(), Box::new(decoder::stake_withdraw)); - map.insert("staking_contract_add_stake".to_string(), Box::new(decoder::staking_contract_add_stake)); - map.insert("staking_contract_create_staking_contract".to_string(), Box::new(decoder::staking_contract_create_staking_contract)); - map.insert("staking_contract_distribute".to_string(), Box::new(decoder::staking_contract_distribute)); - map.insert("staking_contract_request_commission".to_string(), Box::new(decoder::staking_contract_request_commission)); - map.insert("staking_contract_reset_lockup".to_string(), Box::new(decoder::staking_contract_reset_lockup)); - map.insert("staking_contract_set_beneficiary_for_operator".to_string(), Box::new(decoder::staking_contract_set_beneficiary_for_operator)); - map.insert("staking_contract_switch_operator".to_string(), Box::new(decoder::staking_contract_switch_operator)); - map.insert("staking_contract_switch_operator_with_same_commission".to_string(), Box::new(decoder::staking_contract_switch_operator_with_same_commission)); - map.insert("staking_contract_unlock_rewards".to_string(), Box::new(decoder::staking_contract_unlock_rewards)); - map.insert("staking_contract_unlock_stake".to_string(), Box::new(decoder::staking_contract_unlock_stake)); - map.insert("staking_contract_update_commision".to_string(), Box::new(decoder::staking_contract_update_commision)); - map.insert("staking_contract_update_voter".to_string(), Box::new(decoder::staking_contract_update_voter)); - map.insert("staking_proxy_set_operator".to_string(), Box::new(decoder::staking_proxy_set_operator)); - map.insert("staking_proxy_set_stake_pool_operator".to_string(), Box::new(decoder::staking_proxy_set_stake_pool_operator)); - map.insert("staking_proxy_set_stake_pool_voter".to_string(), Box::new(decoder::staking_proxy_set_stake_pool_voter)); - map.insert("staking_proxy_set_staking_contract_operator".to_string(), Box::new(decoder::staking_proxy_set_staking_contract_operator)); - map.insert("staking_proxy_set_staking_contract_voter".to_string(), Box::new(decoder::staking_proxy_set_staking_contract_voter)); - map.insert("staking_proxy_set_vesting_contract_operator".to_string(), Box::new(decoder::staking_proxy_set_vesting_contract_operator)); - map.insert("staking_proxy_set_vesting_contract_voter".to_string(), Box::new(decoder::staking_proxy_set_vesting_contract_voter)); - map.insert("staking_proxy_set_voter".to_string(), Box::new(decoder::staking_proxy_set_voter)); - map.insert("supra_account_batch_transfer".to_string(), Box::new(decoder::supra_account_batch_transfer)); - map.insert("supra_account_batch_transfer_coins".to_string(), Box::new(decoder::supra_account_batch_transfer_coins)); - map.insert("supra_account_create_account".to_string(), Box::new(decoder::supra_account_create_account)); - map.insert("supra_account_set_allow_direct_coin_transfers".to_string(), Box::new(decoder::supra_account_set_allow_direct_coin_transfers)); - map.insert("supra_account_transfer".to_string(), Box::new(decoder::supra_account_transfer)); - map.insert("supra_account_transfer_coins".to_string(), Box::new(decoder::supra_account_transfer_coins)); - map.insert("supra_coin_claim_mint_capability".to_string(), Box::new(decoder::supra_coin_claim_mint_capability)); - map.insert("supra_coin_delegate_mint_capability".to_string(), Box::new(decoder::supra_coin_delegate_mint_capability)); - map.insert("supra_coin_mint".to_string(), Box::new(decoder::supra_coin_mint)); - map.insert("supra_governance_add_supra_approved_script_hash_script".to_string(), Box::new(decoder::supra_governance_add_supra_approved_script_hash_script)); - map.insert("supra_governance_force_end_epoch".to_string(), Box::new(decoder::supra_governance_force_end_epoch)); - map.insert("supra_governance_force_end_epoch_test_only".to_string(), Box::new(decoder::supra_governance_force_end_epoch_test_only)); - map.insert("supra_governance_reconfigure".to_string(), Box::new(decoder::supra_governance_reconfigure)); - map.insert("supra_governance_supra_create_proposal".to_string(), Box::new(decoder::supra_governance_supra_create_proposal)); - map.insert("supra_governance_supra_create_proposal_v2".to_string(), Box::new(decoder::supra_governance_supra_create_proposal_v2)); - map.insert("supra_governance_supra_vote".to_string(), Box::new(decoder::supra_governance_supra_vote)); - map.insert("transaction_fee_convert_to_aptos_fa_burn_ref".to_string(), Box::new(decoder::transaction_fee_convert_to_aptos_fa_burn_ref)); - map.insert("version_set_for_next_epoch".to_string(), Box::new(decoder::version_set_for_next_epoch)); - map.insert("version_set_version".to_string(), Box::new(decoder::version_set_version)); - map.insert("vesting_admin_withdraw".to_string(), Box::new(decoder::vesting_admin_withdraw)); - map.insert("vesting_distribute".to_string(), Box::new(decoder::vesting_distribute)); - map.insert("vesting_distribute_many".to_string(), Box::new(decoder::vesting_distribute_many)); - map.insert("vesting_reset_beneficiary".to_string(), Box::new(decoder::vesting_reset_beneficiary)); - map.insert("vesting_reset_lockup".to_string(), Box::new(decoder::vesting_reset_lockup)); - map.insert("vesting_set_beneficiary".to_string(), Box::new(decoder::vesting_set_beneficiary)); - map.insert("vesting_set_beneficiary_for_operator".to_string(), Box::new(decoder::vesting_set_beneficiary_for_operator)); - map.insert("vesting_set_beneficiary_resetter".to_string(), Box::new(decoder::vesting_set_beneficiary_resetter)); - map.insert("vesting_set_management_role".to_string(), Box::new(decoder::vesting_set_management_role)); - map.insert("vesting_terminate_vesting_contract".to_string(), Box::new(decoder::vesting_terminate_vesting_contract)); - map.insert("vesting_unlock_rewards".to_string(), Box::new(decoder::vesting_unlock_rewards)); - map.insert("vesting_unlock_rewards_many".to_string(), Box::new(decoder::vesting_unlock_rewards_many)); - map.insert("vesting_update_commission_percentage".to_string(), Box::new(decoder::vesting_update_commission_percentage)); - map.insert("vesting_update_operator".to_string(), Box::new(decoder::vesting_update_operator)); - map.insert("vesting_update_operator_with_same_commission".to_string(), Box::new(decoder::vesting_update_operator_with_same_commission)); - map.insert("vesting_update_voter".to_string(), Box::new(decoder::vesting_update_voter)); - map.insert("vesting_vest".to_string(), Box::new(decoder::vesting_vest)); - map.insert("vesting_vest_many".to_string(), Box::new(decoder::vesting_vest_many)); - map.insert("vesting_without_staking_admin_delay_vesting".to_string(), Box::new(decoder::vesting_without_staking_admin_delay_vesting)); - map.insert("vesting_without_staking_admin_withdraw".to_string(), Box::new(decoder::vesting_without_staking_admin_withdraw)); - map.insert("vesting_without_staking_create_vesting_contract_with_amounts".to_string(), Box::new(decoder::vesting_without_staking_create_vesting_contract_with_amounts)); - map.insert("vesting_without_staking_remove_shareholder".to_string(), Box::new(decoder::vesting_without_staking_remove_shareholder)); - map.insert("vesting_without_staking_reset_beneficiary".to_string(), Box::new(decoder::vesting_without_staking_reset_beneficiary)); - map.insert("vesting_without_staking_set_beneficiary".to_string(), Box::new(decoder::vesting_without_staking_set_beneficiary)); - map.insert("vesting_without_staking_set_beneficiary_resetter".to_string(), Box::new(decoder::vesting_without_staking_set_beneficiary_resetter)); - map.insert("vesting_without_staking_set_management_role".to_string(), Box::new(decoder::vesting_without_staking_set_management_role)); - map.insert("vesting_without_staking_set_vesting_schedule".to_string(), Box::new(decoder::vesting_without_staking_set_vesting_schedule)); - map.insert("vesting_without_staking_terminate_vesting_contract".to_string(), Box::new(decoder::vesting_without_staking_terminate_vesting_contract)); - map.insert("vesting_without_staking_vest".to_string(), Box::new(decoder::vesting_without_staking_vest)); - map.insert("vesting_without_staking_vest_individual".to_string(), Box::new(decoder::vesting_without_staking_vest_individual)); - map -}); +type EntryFunctionDecoderMap = std::collections::HashMap< + String, + Box< + dyn Fn(&TransactionPayload) -> Option + + std::marker::Sync + + std::marker::Send, + >, +>; + +static SCRIPT_FUNCTION_DECODER_MAP: once_cell::sync::Lazy = + once_cell::sync::Lazy::new(|| { + let mut map: EntryFunctionDecoderMap = std::collections::HashMap::new(); + map.insert( + "account_offer_rotation_capability".to_string(), + Box::new(decoder::account_offer_rotation_capability), + ); + map.insert( + "account_offer_signer_capability".to_string(), + Box::new(decoder::account_offer_signer_capability), + ); + map.insert( + "account_revoke_any_rotation_capability".to_string(), + Box::new(decoder::account_revoke_any_rotation_capability), + ); + map.insert( + "account_revoke_any_signer_capability".to_string(), + Box::new(decoder::account_revoke_any_signer_capability), + ); + map.insert( + "account_revoke_rotation_capability".to_string(), + Box::new(decoder::account_revoke_rotation_capability), + ); + map.insert( + "account_revoke_signer_capability".to_string(), + Box::new(decoder::account_revoke_signer_capability), + ); + map.insert( + "account_rotate_authentication_key".to_string(), + Box::new(decoder::account_rotate_authentication_key), + ); + map.insert( + "account_rotate_authentication_key_call".to_string(), + Box::new(decoder::account_rotate_authentication_key_call), + ); + map.insert( + "account_rotate_authentication_key_with_rotation_capability".to_string(), + Box::new(decoder::account_rotate_authentication_key_with_rotation_capability), + ); + map.insert( + "automation_registry_cancel_system_task".to_string(), + Box::new(decoder::automation_registry_cancel_system_task), + ); + map.insert( + "automation_registry_cancel_task".to_string(), + Box::new(decoder::automation_registry_cancel_task), + ); + map.insert( + "automation_registry_stop_system_tasks".to_string(), + Box::new(decoder::automation_registry_stop_system_tasks), + ); + map.insert( + "automation_registry_stop_tasks".to_string(), + Box::new(decoder::automation_registry_stop_tasks), + ); + map.insert( + "code_publish_package_txn".to_string(), + Box::new(decoder::code_publish_package_txn), + ); + map.insert( + "coin_create_coin_conversion_map".to_string(), + Box::new(decoder::coin_create_coin_conversion_map), + ); + map.insert( + "coin_create_pairing".to_string(), + Box::new(decoder::coin_create_pairing), + ); + map.insert( + "coin_migrate_to_fungible_store".to_string(), + Box::new(decoder::coin_migrate_to_fungible_store), + ); + map.insert( + "coin_transfer".to_string(), + Box::new(decoder::coin_transfer), + ); + map.insert( + "coin_upgrade_supply".to_string(), + Box::new(decoder::coin_upgrade_supply), + ); + map.insert( + "committee_map_remove_committee".to_string(), + Box::new(decoder::committee_map_remove_committee), + ); + map.insert( + "committee_map_remove_committee_bulk".to_string(), + Box::new(decoder::committee_map_remove_committee_bulk), + ); + map.insert( + "committee_map_remove_committee_member".to_string(), + Box::new(decoder::committee_map_remove_committee_member), + ); + map.insert( + "committee_map_update_dkg_flag".to_string(), + Box::new(decoder::committee_map_update_dkg_flag), + ); + map.insert( + "committee_map_upsert_committee".to_string(), + Box::new(decoder::committee_map_upsert_committee), + ); + map.insert( + "committee_map_upsert_committee_bulk".to_string(), + Box::new(decoder::committee_map_upsert_committee_bulk), + ); + map.insert( + "committee_map_upsert_committee_member".to_string(), + Box::new(decoder::committee_map_upsert_committee_member), + ); + map.insert( + "committee_map_upsert_committee_member_bulk".to_string(), + Box::new(decoder::committee_map_upsert_committee_member_bulk), + ); + map.insert( + "managed_coin_burn".to_string(), + Box::new(decoder::managed_coin_burn), + ); + map.insert( + "managed_coin_initialize".to_string(), + Box::new(decoder::managed_coin_initialize), + ); + map.insert( + "managed_coin_mint".to_string(), + Box::new(decoder::managed_coin_mint), + ); + map.insert( + "managed_coin_register".to_string(), + Box::new(decoder::managed_coin_register), + ); + map.insert( + "multisig_account_add_owner".to_string(), + Box::new(decoder::multisig_account_add_owner), + ); + map.insert( + "multisig_account_add_owners".to_string(), + Box::new(decoder::multisig_account_add_owners), + ); + map.insert( + "multisig_account_add_owners_and_update_signatures_required".to_string(), + Box::new(decoder::multisig_account_add_owners_and_update_signatures_required), + ); + map.insert( + "multisig_account_approve_transaction".to_string(), + Box::new(decoder::multisig_account_approve_transaction), + ); + map.insert( + "multisig_account_create".to_string(), + Box::new(decoder::multisig_account_create), + ); + map.insert( + "multisig_account_create_transaction".to_string(), + Box::new(decoder::multisig_account_create_transaction), + ); + map.insert( + "multisig_account_create_transaction_with_hash".to_string(), + Box::new(decoder::multisig_account_create_transaction_with_hash), + ); + map.insert( + "multisig_account_create_with_existing_account".to_string(), + Box::new(decoder::multisig_account_create_with_existing_account), + ); + map.insert( + "multisig_account_create_with_existing_account_and_revoke_auth_key".to_string(), + Box::new(decoder::multisig_account_create_with_existing_account_and_revoke_auth_key), + ); + map.insert( + "multisig_account_create_with_owners".to_string(), + Box::new(decoder::multisig_account_create_with_owners), + ); + map.insert( + "multisig_account_create_with_owners_then_remove_bootstrapper".to_string(), + Box::new(decoder::multisig_account_create_with_owners_then_remove_bootstrapper), + ); + map.insert( + "multisig_account_execute_rejected_transaction".to_string(), + Box::new(decoder::multisig_account_execute_rejected_transaction), + ); + map.insert( + "multisig_account_execute_rejected_transactions".to_string(), + Box::new(decoder::multisig_account_execute_rejected_transactions), + ); + map.insert( + "multisig_account_reject_transaction".to_string(), + Box::new(decoder::multisig_account_reject_transaction), + ); + map.insert( + "multisig_account_remove_owner".to_string(), + Box::new(decoder::multisig_account_remove_owner), + ); + map.insert( + "multisig_account_remove_owners".to_string(), + Box::new(decoder::multisig_account_remove_owners), + ); + map.insert( + "multisig_account_swap_owner".to_string(), + Box::new(decoder::multisig_account_swap_owner), + ); + map.insert( + "multisig_account_swap_owners".to_string(), + Box::new(decoder::multisig_account_swap_owners), + ); + map.insert( + "multisig_account_swap_owners_and_update_signatures_required".to_string(), + Box::new(decoder::multisig_account_swap_owners_and_update_signatures_required), + ); + map.insert( + "multisig_account_update_metadata".to_string(), + Box::new(decoder::multisig_account_update_metadata), + ); + map.insert( + "multisig_account_update_signatures_required".to_string(), + Box::new(decoder::multisig_account_update_signatures_required), + ); + map.insert( + "multisig_account_update_timeout_duration".to_string(), + Box::new(decoder::multisig_account_update_timeout_duration), + ); + map.insert( + "multisig_account_vote_transaction".to_string(), + Box::new(decoder::multisig_account_vote_transaction), + ); + map.insert( + "multisig_account_vote_transactions".to_string(), + Box::new(decoder::multisig_account_vote_transactions), + ); + map.insert( + "multisig_account_vote_transanction".to_string(), + Box::new(decoder::multisig_account_vote_transanction), + ); + map.insert( + "object_transfer_call".to_string(), + Box::new(decoder::object_transfer_call), + ); + map.insert( + "object_code_deployment_publish".to_string(), + Box::new(decoder::object_code_deployment_publish), + ); + map.insert( + "pbo_delegation_pool_add_stake".to_string(), + Box::new(decoder::pbo_delegation_pool_add_stake), + ); + map.insert( + "pbo_delegation_pool_admin_increase_last_unlock_period".to_string(), + Box::new(decoder::pbo_delegation_pool_admin_increase_last_unlock_period), + ); + map.insert( + "pbo_delegation_pool_delegate_voting_power".to_string(), + Box::new(decoder::pbo_delegation_pool_delegate_voting_power), + ); + map.insert( + "pbo_delegation_pool_enable_partial_governance_voting".to_string(), + Box::new(decoder::pbo_delegation_pool_enable_partial_governance_voting), + ); + map.insert( + "pbo_delegation_pool_fund_delegators_with_locked_stake".to_string(), + Box::new(decoder::pbo_delegation_pool_fund_delegators_with_locked_stake), + ); + map.insert( + "pbo_delegation_pool_fund_delegators_with_stake".to_string(), + Box::new(decoder::pbo_delegation_pool_fund_delegators_with_stake), + ); + map.insert( + "pbo_delegation_pool_initialize_delegation_pool_with_amount".to_string(), + Box::new(decoder::pbo_delegation_pool_initialize_delegation_pool_with_amount), + ); + map.insert("pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin".to_string(), Box::new(decoder::pbo_delegation_pool_initialize_delegation_pool_with_amount_without_multisig_admin)); + map.insert( + "pbo_delegation_pool_lock_delegators_stakes".to_string(), + Box::new(decoder::pbo_delegation_pool_lock_delegators_stakes), + ); + map.insert( + "pbo_delegation_pool_reactivate_stake".to_string(), + Box::new(decoder::pbo_delegation_pool_reactivate_stake), + ); + map.insert( + "pbo_delegation_pool_replace_delegator".to_string(), + Box::new(decoder::pbo_delegation_pool_replace_delegator), + ); + map.insert( + "pbo_delegation_pool_set_beneficiary_for_operator".to_string(), + Box::new(decoder::pbo_delegation_pool_set_beneficiary_for_operator), + ); + map.insert( + "pbo_delegation_pool_set_delegated_voter".to_string(), + Box::new(decoder::pbo_delegation_pool_set_delegated_voter), + ); + map.insert( + "pbo_delegation_pool_set_operator".to_string(), + Box::new(decoder::pbo_delegation_pool_set_operator), + ); + map.insert( + "pbo_delegation_pool_synchronize_delegation_pool".to_string(), + Box::new(decoder::pbo_delegation_pool_synchronize_delegation_pool), + ); + map.insert( + "pbo_delegation_pool_unlock".to_string(), + Box::new(decoder::pbo_delegation_pool_unlock), + ); + map.insert( + "pbo_delegation_pool_update_commission_percentage".to_string(), + Box::new(decoder::pbo_delegation_pool_update_commission_percentage), + ); + map.insert( + "pbo_delegation_pool_update_unlocking_schedule".to_string(), + Box::new(decoder::pbo_delegation_pool_update_unlocking_schedule), + ); + map.insert( + "pbo_delegation_pool_update_unlocking_schedule_unchecked".to_string(), + Box::new(decoder::pbo_delegation_pool_update_unlocking_schedule_unchecked), + ); + map.insert( + "pbo_delegation_pool_withdraw".to_string(), + Box::new(decoder::pbo_delegation_pool_withdraw), + ); + map.insert( + "resource_account_create_resource_account".to_string(), + Box::new(decoder::resource_account_create_resource_account), + ); + map.insert( + "resource_account_create_resource_account_and_fund".to_string(), + Box::new(decoder::resource_account_create_resource_account_and_fund), + ); + map.insert( + "resource_account_create_resource_account_and_publish_package".to_string(), + Box::new(decoder::resource_account_create_resource_account_and_publish_package), + ); + map.insert( + "stake_add_stake".to_string(), + Box::new(decoder::stake_add_stake), + ); + map.insert( + "stake_increase_lockup".to_string(), + Box::new(decoder::stake_increase_lockup), + ); + map.insert( + "stake_initialize_stake_owner".to_string(), + Box::new(decoder::stake_initialize_stake_owner), + ); + map.insert( + "stake_initialize_validator".to_string(), + Box::new(decoder::stake_initialize_validator), + ); + map.insert( + "stake_join_validator_set".to_string(), + Box::new(decoder::stake_join_validator_set), + ); + map.insert( + "stake_leave_validator_set".to_string(), + Box::new(decoder::stake_leave_validator_set), + ); + map.insert( + "stake_reactivate_stake".to_string(), + Box::new(decoder::stake_reactivate_stake), + ); + map.insert( + "stake_rotate_consensus_key".to_string(), + Box::new(decoder::stake_rotate_consensus_key), + ); + map.insert( + "stake_set_delegated_voter".to_string(), + Box::new(decoder::stake_set_delegated_voter), + ); + map.insert( + "stake_set_operator".to_string(), + Box::new(decoder::stake_set_operator), + ); + map.insert("stake_unlock".to_string(), Box::new(decoder::stake_unlock)); + map.insert( + "stake_update_network_and_fullnode_addresses".to_string(), + Box::new(decoder::stake_update_network_and_fullnode_addresses), + ); + map.insert( + "stake_withdraw".to_string(), + Box::new(decoder::stake_withdraw), + ); + map.insert( + "staking_contract_add_stake".to_string(), + Box::new(decoder::staking_contract_add_stake), + ); + map.insert( + "staking_contract_create_staking_contract".to_string(), + Box::new(decoder::staking_contract_create_staking_contract), + ); + map.insert( + "staking_contract_distribute".to_string(), + Box::new(decoder::staking_contract_distribute), + ); + map.insert( + "staking_contract_request_commission".to_string(), + Box::new(decoder::staking_contract_request_commission), + ); + map.insert( + "staking_contract_reset_lockup".to_string(), + Box::new(decoder::staking_contract_reset_lockup), + ); + map.insert( + "staking_contract_set_beneficiary_for_operator".to_string(), + Box::new(decoder::staking_contract_set_beneficiary_for_operator), + ); + map.insert( + "staking_contract_switch_operator".to_string(), + Box::new(decoder::staking_contract_switch_operator), + ); + map.insert( + "staking_contract_switch_operator_with_same_commission".to_string(), + Box::new(decoder::staking_contract_switch_operator_with_same_commission), + ); + map.insert( + "staking_contract_unlock_rewards".to_string(), + Box::new(decoder::staking_contract_unlock_rewards), + ); + map.insert( + "staking_contract_unlock_stake".to_string(), + Box::new(decoder::staking_contract_unlock_stake), + ); + map.insert( + "staking_contract_update_commision".to_string(), + Box::new(decoder::staking_contract_update_commision), + ); + map.insert( + "staking_contract_update_voter".to_string(), + Box::new(decoder::staking_contract_update_voter), + ); + map.insert( + "staking_proxy_set_operator".to_string(), + Box::new(decoder::staking_proxy_set_operator), + ); + map.insert( + "staking_proxy_set_stake_pool_operator".to_string(), + Box::new(decoder::staking_proxy_set_stake_pool_operator), + ); + map.insert( + "staking_proxy_set_stake_pool_voter".to_string(), + Box::new(decoder::staking_proxy_set_stake_pool_voter), + ); + map.insert( + "staking_proxy_set_staking_contract_operator".to_string(), + Box::new(decoder::staking_proxy_set_staking_contract_operator), + ); + map.insert( + "staking_proxy_set_staking_contract_voter".to_string(), + Box::new(decoder::staking_proxy_set_staking_contract_voter), + ); + map.insert( + "staking_proxy_set_vesting_contract_operator".to_string(), + Box::new(decoder::staking_proxy_set_vesting_contract_operator), + ); + map.insert( + "staking_proxy_set_vesting_contract_voter".to_string(), + Box::new(decoder::staking_proxy_set_vesting_contract_voter), + ); + map.insert( + "staking_proxy_set_voter".to_string(), + Box::new(decoder::staking_proxy_set_voter), + ); + map.insert( + "supra_account_batch_transfer".to_string(), + Box::new(decoder::supra_account_batch_transfer), + ); + map.insert( + "supra_account_batch_transfer_coins".to_string(), + Box::new(decoder::supra_account_batch_transfer_coins), + ); + map.insert( + "supra_account_create_account".to_string(), + Box::new(decoder::supra_account_create_account), + ); + map.insert( + "supra_account_set_allow_direct_coin_transfers".to_string(), + Box::new(decoder::supra_account_set_allow_direct_coin_transfers), + ); + map.insert( + "supra_account_transfer".to_string(), + Box::new(decoder::supra_account_transfer), + ); + map.insert( + "supra_account_transfer_coins".to_string(), + Box::new(decoder::supra_account_transfer_coins), + ); + map.insert( + "supra_coin_claim_mint_capability".to_string(), + Box::new(decoder::supra_coin_claim_mint_capability), + ); + map.insert( + "supra_coin_delegate_mint_capability".to_string(), + Box::new(decoder::supra_coin_delegate_mint_capability), + ); + map.insert( + "supra_coin_mint".to_string(), + Box::new(decoder::supra_coin_mint), + ); + map.insert( + "supra_governance_add_supra_approved_script_hash_script".to_string(), + Box::new(decoder::supra_governance_add_supra_approved_script_hash_script), + ); + map.insert( + "supra_governance_force_end_epoch".to_string(), + Box::new(decoder::supra_governance_force_end_epoch), + ); + map.insert( + "supra_governance_force_end_epoch_test_only".to_string(), + Box::new(decoder::supra_governance_force_end_epoch_test_only), + ); + map.insert( + "supra_governance_reconfigure".to_string(), + Box::new(decoder::supra_governance_reconfigure), + ); + map.insert( + "supra_governance_supra_create_proposal".to_string(), + Box::new(decoder::supra_governance_supra_create_proposal), + ); + map.insert( + "supra_governance_supra_create_proposal_v2".to_string(), + Box::new(decoder::supra_governance_supra_create_proposal_v2), + ); + map.insert( + "supra_governance_supra_vote".to_string(), + Box::new(decoder::supra_governance_supra_vote), + ); + map.insert( + "transaction_fee_convert_to_aptos_fa_burn_ref".to_string(), + Box::new(decoder::transaction_fee_convert_to_aptos_fa_burn_ref), + ); + map.insert( + "version_set_for_next_epoch".to_string(), + Box::new(decoder::version_set_for_next_epoch), + ); + map.insert( + "version_set_version".to_string(), + Box::new(decoder::version_set_version), + ); + map.insert( + "vesting_admin_withdraw".to_string(), + Box::new(decoder::vesting_admin_withdraw), + ); + map.insert( + "vesting_distribute".to_string(), + Box::new(decoder::vesting_distribute), + ); + map.insert( + "vesting_distribute_many".to_string(), + Box::new(decoder::vesting_distribute_many), + ); + map.insert( + "vesting_reset_beneficiary".to_string(), + Box::new(decoder::vesting_reset_beneficiary), + ); + map.insert( + "vesting_reset_lockup".to_string(), + Box::new(decoder::vesting_reset_lockup), + ); + map.insert( + "vesting_set_beneficiary".to_string(), + Box::new(decoder::vesting_set_beneficiary), + ); + map.insert( + "vesting_set_beneficiary_for_operator".to_string(), + Box::new(decoder::vesting_set_beneficiary_for_operator), + ); + map.insert( + "vesting_set_beneficiary_resetter".to_string(), + Box::new(decoder::vesting_set_beneficiary_resetter), + ); + map.insert( + "vesting_set_management_role".to_string(), + Box::new(decoder::vesting_set_management_role), + ); + map.insert( + "vesting_terminate_vesting_contract".to_string(), + Box::new(decoder::vesting_terminate_vesting_contract), + ); + map.insert( + "vesting_unlock_rewards".to_string(), + Box::new(decoder::vesting_unlock_rewards), + ); + map.insert( + "vesting_unlock_rewards_many".to_string(), + Box::new(decoder::vesting_unlock_rewards_many), + ); + map.insert( + "vesting_update_commission_percentage".to_string(), + Box::new(decoder::vesting_update_commission_percentage), + ); + map.insert( + "vesting_update_operator".to_string(), + Box::new(decoder::vesting_update_operator), + ); + map.insert( + "vesting_update_operator_with_same_commission".to_string(), + Box::new(decoder::vesting_update_operator_with_same_commission), + ); + map.insert( + "vesting_update_voter".to_string(), + Box::new(decoder::vesting_update_voter), + ); + map.insert("vesting_vest".to_string(), Box::new(decoder::vesting_vest)); + map.insert( + "vesting_vest_many".to_string(), + Box::new(decoder::vesting_vest_many), + ); + map.insert( + "vesting_without_staking_admin_delay_vesting".to_string(), + Box::new(decoder::vesting_without_staking_admin_delay_vesting), + ); + map.insert( + "vesting_without_staking_admin_withdraw".to_string(), + Box::new(decoder::vesting_without_staking_admin_withdraw), + ); + map.insert( + "vesting_without_staking_create_vesting_contract_with_amounts".to_string(), + Box::new(decoder::vesting_without_staking_create_vesting_contract_with_amounts), + ); + map.insert( + "vesting_without_staking_remove_shareholder".to_string(), + Box::new(decoder::vesting_without_staking_remove_shareholder), + ); + map.insert( + "vesting_without_staking_reset_beneficiary".to_string(), + Box::new(decoder::vesting_without_staking_reset_beneficiary), + ); + map.insert( + "vesting_without_staking_set_beneficiary".to_string(), + Box::new(decoder::vesting_without_staking_set_beneficiary), + ); + map.insert( + "vesting_without_staking_set_beneficiary_resetter".to_string(), + Box::new(decoder::vesting_without_staking_set_beneficiary_resetter), + ); + map.insert( + "vesting_without_staking_set_management_role".to_string(), + Box::new(decoder::vesting_without_staking_set_management_role), + ); + map.insert( + "vesting_without_staking_set_vesting_schedule".to_string(), + Box::new(decoder::vesting_without_staking_set_vesting_schedule), + ); + map.insert( + "vesting_without_staking_terminate_vesting_contract".to_string(), + Box::new(decoder::vesting_without_staking_terminate_vesting_contract), + ); + map.insert( + "vesting_without_staking_vest".to_string(), + Box::new(decoder::vesting_without_staking_vest), + ); + map.insert( + "vesting_without_staking_vest_individual".to_string(), + Box::new(decoder::vesting_without_staking_vest_individual), + ); + map + }); diff --git a/types/src/on_chain_config/evm_contracts_details.rs b/types/src/on_chain_config/evm_contracts_details.rs index e67a100f9df..518768a6db4 100644 --- a/types/src/on_chain_config/evm_contracts_details.rs +++ b/types/src/on_chain_config/evm_contracts_details.rs @@ -26,7 +26,7 @@ impl FromStr for EvmContractName { fn from_str(s: &str) -> Result { match s { "BlockMetadata" => Ok(EvmContractName::BlockMetadata), - "AutomationCore" => Ok(EvmContractName::AutomationController), + "AutomationController" => Ok(EvmContractName::AutomationController), "AutomationRegistry" => Ok(EvmContractName::AutomationRegistry), n => Ok(EvmContractName::Custom(n.to_string())), } @@ -37,7 +37,7 @@ impl Display for EvmContractName { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { EvmContractName::BlockMetadata => write!(f, "BlockMetadata"), - EvmContractName::AutomationController => write!(f, "AutomationCore"), + EvmContractName::AutomationController => write!(f, "AutomationController"), EvmContractName::AutomationRegistry => write!(f, "AutomationRegistry"), EvmContractName::Custom(n) => write!(f, "{n}"), } From d7a89ad9a12d5fe297e0b89a19149bd01e212f23 Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <> Date: Thu, 23 Apr 2026 11:12:03 +0400 Subject: [PATCH 06/12] Addressed review comments --- .github/workflows/aptos-framework-test.yaml | 4 ++-- .../supra-framework/doc/evm_contracts_details.md | 8 ++++---- .../sources/configs/evm_contracts_details.move | 8 ++++---- devtools/assets/license_header_utf8.txt | 2 +- devtools/assets/shared_license_header.txt | 2 +- devtools/assets/shared_license_header_utf8.txt | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/aptos-framework-test.yaml b/.github/workflows/aptos-framework-test.yaml index d3eba885a1a..6c29d9a2da8 100644 --- a/.github/workflows/aptos-framework-test.yaml +++ b/.github/workflows/aptos-framework-test.yaml @@ -53,7 +53,7 @@ jobs: run: cargo test --release -p aptos-framework -- --skip prover - name: Run language e2e tests - run: RUST_MIN_STACK=104857600 cargo test run -p language-e2e-testsuite --no-fail-fast + run: RUST_MIN_STACK=104857600 cargo nextest run -p language-e2e-testsuite --no-fail-fast - name: Run move e2e tests - run: RUST_MIN_STACK=104857600 cargo test run -p e2e-move-tests --no-fail-fast + run: RUST_MIN_STACK=104857600 cargo nextest run -p e2e-move-tests --no-fail-fast diff --git a/aptos-move/framework/supra-framework/doc/evm_contracts_details.md b/aptos-move/framework/supra-framework/doc/evm_contracts_details.md index a9021081d26..24cbd3fb254 100644 --- a/aptos-move/framework/supra-framework/doc/evm_contracts_details.md +++ b/aptos-move/framework/supra-framework/doc/evm_contracts_details.md @@ -116,7 +116,7 @@ Publishes the EvmContractInfo details. ## Function `upsert_for_next_epoch` This can be called by on-chain governance to update on-chain evm contract details for the next epoch. -Keys and values will match in lenght and should not be empty, otherwise the call will fail. +Keys and values will match in length and should not be empty, otherwise the call will fail. Example usage: ``` supra_framework::evm_contracts_details::upsert_for_next_epoch(&framework_signer, vector["contact1_name"], vector[contract1_address]); @@ -175,11 +175,11 @@ Otherwise, move the new config to supra_framework. system_addresses::assert_supra_framework(framework); if (config_buffer::does_exist<EvmContractsDetails>()) { let new_config = config_buffer::extract<EvmContractsDetails>(); - if (!exists<EvmContractsDetails>(@supra_framework)) { - move_to(framework, new_config); - } else { + if (exists<EvmContractsDetails>(@supra_framework)) { let old_config = borrow_global_mut<EvmContractsDetails>(@supra_framework); *old_config = new_config; + } else { + move_to(framework, new_config); }; event::emit(new_config) } diff --git a/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move b/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move index e4ddab92594..1014a318d32 100644 --- a/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move +++ b/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move @@ -38,7 +38,7 @@ module supra_framework::evm_contracts_details { } /// This can be called by on-chain governance to update on-chain evm contract details for the next epoch. - /// Keys and values will match in lenght and should not be empty, otherwise the call will fail. + /// Keys and values will match in length and should not be empty, otherwise the call will fail. /// Example usage: /// ``` /// supra_framework::evm_contracts_details::upsert_for_next_epoch(&framework_signer, vector["contact1_name"], vector[contract1_address]); @@ -66,11 +66,11 @@ module supra_framework::evm_contracts_details { system_addresses::assert_supra_framework(framework); if (config_buffer::does_exist()) { let new_config = config_buffer::extract(); - if (!exists(@supra_framework)) { - move_to(framework, new_config); - } else { + if (exists(@supra_framework)) { let old_config = borrow_global_mut(@supra_framework); *old_config = new_config; + } else { + move_to(framework, new_config); }; event::emit(new_config) } diff --git a/devtools/assets/license_header_utf8.txt b/devtools/assets/license_header_utf8.txt index 47bc4ada806..c0cb30e1214 100644 --- a/devtools/assets/license_header_utf8.txt +++ b/devtools/assets/license_header_utf8.txt @@ -1,2 +1,2 @@ -Copyright (c) Supra. +Copyright © Supra. SPDX-License-Identifier: Apache-2.0 diff --git a/devtools/assets/shared_license_header.txt b/devtools/assets/shared_license_header.txt index 87bc810c97d..a279050a3ae 100644 --- a/devtools/assets/shared_license_header.txt +++ b/devtools/assets/shared_license_header.txt @@ -1,4 +1,4 @@ -Copyright (c) Supra. +Copyright © Supra. Copyright (c) Aptos Foundation Parts of the project are originally copyright (c) Meta Platforms, Inc. SPDX-License-Identifier: Apache-2.0 diff --git a/devtools/assets/shared_license_header_utf8.txt b/devtools/assets/shared_license_header_utf8.txt index da4c1bddd68..78c2c2b1913 100644 --- a/devtools/assets/shared_license_header_utf8.txt +++ b/devtools/assets/shared_license_header_utf8.txt @@ -1,4 +1,4 @@ -Copyright (c) Supra. +Copyright © Supra. Copyright © Aptos Foundation Parts of the project are originally copyright © Meta Platforms, Inc. SPDX-License-Identifier: Apache-2.0 From 78bc75375317aeab169f49ea3d52c4e965d5926c Mon Sep 17 00:00:00 2001 From: Saurabh Joshi <106232965+sjoshisupra@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:08:51 +0530 Subject: [PATCH 07/12] add evm_config in Move state (#353) * add evm_config in Move state * add config validation for required key and value type match * add test * remove double negative assert check * change to EvmScalarCOnfig with everything u128 * minor * add evm config to encode testnet * Fixed test * Fixed build error * Enabled serde for OnChainEvmConfig required by to be able to cache on-chain-config * remove nested if * validate gas used ratio, add other evm parameters --------- Co-authored-by: Saurabh Joshi Co-authored-by: Aregnaz Harutyunyan <> --- aptos-move/framework/aptos-stdlib/doc/any.md | 29 + .../aptos-stdlib/doc/copyable_any.md | 63 +++ .../framework/aptos-stdlib/sources/any.move | 7 + .../aptos-stdlib/sources/copyable_any.move | 20 + .../supra-framework/doc/config_buffer.md | 15 + .../supra-framework/doc/evm_config.md | 495 ++++++++++++++--- .../framework/supra-framework/doc/genesis.md | 22 +- .../framework/supra-framework/doc/overview.md | 2 +- .../doc/reconfiguration_with_dkg.md | 4 +- .../sources/configs/config_buffer.move | 2 +- .../sources/configs/evm_config.move | 470 ++++++++++++++++ .../configs/evm_contracts_details.move | 78 --- .../supra-framework/sources/genesis.move | 14 +- .../sources/reconfiguration_with_dkg.move | 4 +- aptos-move/vm-genesis/src/lib.rs | 26 +- crates/aptos-genesis/src/lib.rs | 1 + types/src/on_chain_config/evm_config.rs | 508 ++++++++++++++++++ .../on_chain_config/evm_contracts_details.rs | 105 ---- types/src/on_chain_config/mod.rs | 5 +- 19 files changed, 1593 insertions(+), 277 deletions(-) create mode 100644 aptos-move/framework/supra-framework/sources/configs/evm_config.move delete mode 100644 aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move create mode 100644 types/src/on_chain_config/evm_config.rs delete mode 100644 types/src/on_chain_config/evm_contracts_details.rs diff --git a/aptos-move/framework/aptos-stdlib/doc/any.md b/aptos-move/framework/aptos-stdlib/doc/any.md index d8f08373494..5b930d17a03 100644 --- a/aptos-move/framework/aptos-stdlib/doc/any.md +++ b/aptos-move/framework/aptos-stdlib/doc/any.md @@ -11,6 +11,7 @@ - [Function `pack`](#0x1_any_pack) - [Function `unpack`](#0x1_any_unpack) - [Function `type_name`](#0x1_any_type_name) +- [Function `is_empty`](#0x1_any_is_empty) - [Specification](#@Specification_1) - [Function `pack`](#@Specification_1_pack) - [Function `unpack`](#@Specification_1_unpack) @@ -22,6 +23,7 @@ use 0x1::from_bcs; use 0x1::string; use 0x1::type_info; +use 0x1::vector;
@@ -191,6 +193,33 @@ Returns the type name of this Any + + + + +## Function `is_empty` + +Returns true if the BCS-encoded data payload is empty. +An Any value with an empty data vector cannot be decoded and should +be treated as invalid by callers. + + +
public fun is_empty(x: &any::Any): bool
+
+ + + +
+Implementation + + +
public fun is_empty(x: &Any): bool {
+    std::vector::is_empty(&x.data)
+}
+
+ + +
diff --git a/aptos-move/framework/aptos-stdlib/doc/copyable_any.md b/aptos-move/framework/aptos-stdlib/doc/copyable_any.md index 7ac120437e6..4803bd75f7e 100644 --- a/aptos-move/framework/aptos-stdlib/doc/copyable_any.md +++ b/aptos-move/framework/aptos-stdlib/doc/copyable_any.md @@ -8,8 +8,10 @@ - [Struct `Any`](#0x1_copyable_any_Any) - [Constants](#@Constants_0) - [Function `pack`](#0x1_copyable_any_pack) +- [Function `new`](#0x1_copyable_any_new) - [Function `unpack`](#0x1_copyable_any_unpack) - [Function `type_name`](#0x1_copyable_any_type_name) +- [Function `is_empty`](#0x1_copyable_any_is_empty) - [Specification](#@Specification_1) - [Function `pack`](#@Specification_1_pack) - [Function `unpack`](#@Specification_1_unpack) @@ -21,6 +23,7 @@ use 0x1::from_bcs; use 0x1::string; use 0x1::type_info; +use 0x1::vector;
@@ -101,6 +104,39 @@ also required from T. + + + + +## Function `new` + +Construct an Any directly from a pre-known type-name string and +already-BCS-encoded data bytes. Use this only when the type name is +obtained from a trusted source (e.g. type_info::type_name<T>() or a +constant produced by the same) and the data bytes are the BCS encoding +of a value of that type. Prefer pack<T> whenever the concrete type +is statically known at the call site, as it is safer and self-validating. + +This constructor exists primarily for genesis and governance scripts that +receive pre-serialised values from the Rust layer. + + +
public fun new(type_name: string::String, data: vector<u8>): copyable_any::Any
+
+ + + +
+Implementation + + +
public fun new(type_name: String, data: vector<u8>): Any {
+    Any { type_name, data }
+}
+
+ + +
@@ -152,6 +188,33 @@ Returns the type name of this Any + + + + +## Function `is_empty` + +Returns true if the BCS-encoded data payload is empty. +An Any value with an empty data vector cannot be decoded and should +be treated as invalid by callers. + + +
public fun is_empty(x: &copyable_any::Any): bool
+
+ + + +
+Implementation + + +
public fun is_empty(x: &Any): bool {
+    std::vector::is_empty(&x.data)
+}
+
+ + +
diff --git a/aptos-move/framework/aptos-stdlib/sources/any.move b/aptos-move/framework/aptos-stdlib/sources/any.move index 88b9f4dd780..a275828d4cf 100644 --- a/aptos-move/framework/aptos-stdlib/sources/any.move +++ b/aptos-move/framework/aptos-stdlib/sources/any.move @@ -54,6 +54,13 @@ module aptos_std::any { &x.type_name } + /// Returns true if the BCS-encoded data payload is empty. + /// An Any value with an empty data vector cannot be decoded and should + /// be treated as invalid by callers. + public fun is_empty(x: &Any): bool { + std::vector::is_empty(&x.data) + } + #[test_only] struct S has store, drop { x: u64 } diff --git a/aptos-move/framework/aptos-stdlib/sources/copyable_any.move b/aptos-move/framework/aptos-stdlib/sources/copyable_any.move index b12303a3f92..dc288f0faec 100644 --- a/aptos-move/framework/aptos-stdlib/sources/copyable_any.move +++ b/aptos-move/framework/aptos-stdlib/sources/copyable_any.move @@ -23,6 +23,19 @@ module aptos_std::copyable_any { } } + /// Construct an `Any` directly from a pre-known type-name string and + /// already-BCS-encoded data bytes. Use this only when the type name is + /// obtained from a trusted source (e.g. `type_info::type_name()` or a + /// constant produced by the same) and the data bytes are the BCS encoding + /// of a value of that type. Prefer `pack` whenever the concrete type + /// is statically known at the call site, as it is safer and self-validating. + /// + /// This constructor exists primarily for genesis and governance scripts that + /// receive pre-serialised values from the Rust layer. + public fun new(type_name: String, data: vector): Any { + Any { type_name, data } + } + /// Unpack a value from the `Any` representation. This aborts if the value has not the expected type `T`. public fun unpack(x: Any): T { assert!(type_info::type_name() == x.type_name, error::invalid_argument(ETYPE_MISMATCH)); @@ -34,6 +47,13 @@ module aptos_std::copyable_any { &x.type_name } + /// Returns true if the BCS-encoded data payload is empty. + /// An Any value with an empty data vector cannot be decoded and should + /// be treated as invalid by callers. + public fun is_empty(x: &Any): bool { + std::vector::is_empty(&x.data) + } + #[test_only] struct S has store, drop, copy { x: u64 } diff --git a/aptos-move/framework/supra-framework/doc/config_buffer.md b/aptos-move/framework/supra-framework/doc/config_buffer.md index f491e823271..0c1a65caddf 100644 --- a/aptos-move/framework/supra-framework/doc/config_buffer.md +++ b/aptos-move/framework/supra-framework/doc/config_buffer.md @@ -320,4 +320,19 @@ Typically used in X::on_new_epoch() where X is an on-chaon config.
+ + + + + +
schema OnNewEpochRequirement<T> {
+    let type_name = type_info::type_name<T>();
+    let configs = global<PendingConfigs>(@supra_framework);
+    include spec_fun_does_exist<T>(type_name) ==> any::UnpackRequirement<T> {
+        x: simple_map::spec_get(configs.configs, type_name)
+    };
+}
+
+ + [move-book]: https://aptos.dev/move/book/SUMMARY diff --git a/aptos-move/framework/supra-framework/doc/evm_config.md b/aptos-move/framework/supra-framework/doc/evm_config.md index 266294bb013..6d1e329e2b7 100644 --- a/aptos-move/framework/supra-framework/doc/evm_config.md +++ b/aptos-move/framework/supra-framework/doc/evm_config.md @@ -5,33 +5,41 @@ -- [Resource `EvmConfig`](#0x1_evm_config_EvmConfig) +- [Resource `EvmContractsDetails`](#0x1_evm_config_EvmContractsDetails) +- [Resource `EvmScalarConfig`](#0x1_evm_config_EvmScalarConfig) - [Constants](#@Constants_0) - [Function `initialize`](#0x1_evm_config_initialize) -- [Function `set_for_next_epoch`](#0x1_evm_config_set_for_next_epoch) +- [Function `upsert_evm_contract_details_for_next_epoch`](#0x1_evm_config_upsert_evm_contract_details_for_next_epoch) +- [Function `upsert_config_for_next_epoch`](#0x1_evm_config_upsert_config_for_next_epoch) +- [Function `get_contract_value`](#0x1_evm_config_get_contract_value) +- [Function `get_scalar_config_value`](#0x1_evm_config_get_scalar_config_value) +- [Function `validate_scalar_config`](#0x1_evm_config_validate_scalar_config) +- [Function `is_valid_evm_address`](#0x1_evm_config_is_valid_evm_address) - [Function `on_new_epoch`](#0x1_evm_config_on_new_epoch) -- [Specification](#@Specification_1) - - [Function `initialize`](#@Specification_1_initialize) - - [Function `set_for_next_epoch`](#@Specification_1_set_for_next_epoch) - - [Function `on_new_epoch`](#@Specification_1_on_new_epoch) -
use 0x1::config_buffer;
+
use 0x1::bcs;
+use 0x1::config_buffer;
 use 0x1::error;
+use 0x1::event;
+use 0x1::option;
+use 0x1::signer;
+use 0x1::simple_map;
+use 0x1::string;
 use 0x1::system_addresses;
 use 0x1::vector;
 
- + -## Resource `EvmConfig` +## Resource `EvmContractsDetails` -The struct stores the on-chain EVM configuration. -
struct EvmConfig has drop, store, key
+
#[event]
+struct EvmContractsDetails has copy, drop, store, key
 
@@ -42,7 +50,35 @@ The struct stores the on-chain EVM configuration.
-config: vector<u8> +details: simple_map::SimpleMap<string::String, address> +
+
+ +
+
+ + + + + + +## Resource `EvmScalarConfig` + + + +
#[event]
+struct EvmScalarConfig has copy, drop, store, key
+
+ + + +
+Fields + + +
+
+config: simple_map::SimpleMap<string::String, u128>
@@ -57,12 +93,122 @@ The struct stores the on-chain EVM configuration. ## Constants - + + +Requested key does not exist in the map + + +
const EKEY_NOT_FOUND: u64 = 4;
+
+ + + + + +Supra EVM Gas Estimate Margin + + +
const CONFIG_KEY_EVM_GAS_ESTIMATE_MARGIN: vector<u8> = [101, 118, 109, 95, 103, 97, 115, 95, 101, 115, 116, 105, 109, 97, 116, 101, 95, 109, 97, 114, 103, 105, 110];
+
+ + + + + +Well-known config key for the EVM gas normalisation denominator. +This u64 value is used to scale EVM gas units into Supra gas units. + + +
const CONFIG_KEY_EVM_GAS_NORMALIZATION_DENOM: vector<u8> = [101, 118, 109, 95, 103, 97, 115, 95, 110, 111, 114, 109, 97, 108, 105, 122, 97, 116, 105, 111, 110, 95, 100, 101, 110, 111, 109];
+
+ + + + + +Empty keys/values to update config. + + +
const EEMPTY_DATA: u64 = 1;
+
+ + + + + +Invalid EVM address, valid EVM address must fit in 20 bytes + + +
const EINVALID_EVM_ADDRESS: u64 = 3;
+
+ + + + + +Input keys and values should have the same amount of data + + +
const EKEYS_VALUES_MISMATCH: u64 = 2;
+
+ + + + + +Required Key is missing or value type is incorrect for a key + + +
const EMISSING_KEY_OR_INCORRECT_VAL_TYPE: u64 = 5;
+
+ + + + + +Resource already exist at address + + +
const ERESOURCE_ALREADY_EXISTS: u64 = 6;
+
+ + + + + +Evm and Move address length + + +
const EVM_ADDRESS_BYTE_LENGTH: u64 = 12;
+
+ + + + + + -The provided on chain config bytes are empty or invalid +
const MOVE_ADDRESS_BYTE_LENGTH: u64 = 32;
+
+ + + + + +Supra EVM Gas Used Ratio + + +
const SUPRA_EVM_GAS_USED_RATIO: vector<u8> = [101, 118, 109, 95, 103, 97, 115, 95, 117, 115, 101, 100, 95, 114, 97, 116, 105, 111];
+
+ + + + +DECIMAL_PRECISION -
const EINVALID_CONFIG: u64 = 1;
+
+
const SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION: vector<u8> = [101, 118, 109, 95, 103, 97, 115, 95, 117, 115, 101, 100, 95, 114, 97, 116, 105, 111, 95, 100, 101, 99, 105, 109, 97, 108, 95, 112, 114, 101, 99, 105, 115, 105, 111, 110];
 
@@ -71,10 +217,14 @@ The provided on chain config bytes are empty or invalid ## Function `initialize` -Publishes the EvmConfig config. +Publishes both the EVM contract address map and the scalar config map. +contract_keys/contract_values must be the same length and every address +must be a valid 20-byte EVM address (upper 12 bytes of the 32-byte Move +address must be zero). config_keys/config_values must be the same +length and must include all required keys (e.g. evm_gas_normalization_denom). -
public(friend) fun initialize(supra_framework: &signer, config: vector<u8>)
+
public(friend) fun initialize(supra_framework: &signer, contract_keys: vector<string::String>, contract_values: vector<address>, config_keys: vector<string::String>, config_values: vector<u128>)
 
@@ -83,10 +233,45 @@ Publishes the EvmConfig config. Implementation -
public(friend) fun initialize(supra_framework: &signer, config: vector<u8>) {
+
public(friend) fun initialize(
+    supra_framework: &signer,
+    contract_keys: vector<String>,
+    contract_values: vector<address>,
+    config_keys: vector<String>,
+    config_values: vector<u128>
+) {
     system_addresses::assert_supra_framework(supra_framework);
-    assert!(!vector::is_empty(&config), error::invalid_argument(EINVALID_CONFIG));
-    move_to(supra_framework, EvmConfig { config });
+    assert!(!vector::is_empty(&contract_keys), error::invalid_argument(EEMPTY_DATA));
+    assert!(!vector::is_empty(&config_keys), error::invalid_argument(EEMPTY_DATA));
+    let supra_framework_addr = signer::address_of(supra_framework);
+    assert!(!exists<EvmContractsDetails>(supra_framework_addr),error::invalid_state(ERESOURCE_ALREADY_EXISTS));
+    assert!(!exists<EvmScalarConfig>(supra_framework_addr),error::invalid_state(ERESOURCE_ALREADY_EXISTS));
+    assert!(
+        vector::length(&contract_keys) == vector::length(&contract_values),
+        error::invalid_argument(EKEYS_VALUES_MISMATCH)
+    );
+    assert!(
+        vector::length(&config_keys) == vector::length(&config_values),
+        error::invalid_argument(EKEYS_VALUES_MISMATCH)
+    );
+
+    // Check that no contract value is invalid EVM address
+    let all_valid_evm_address = vector::all(&contract_values,
+    |v|{ is_valid_evm_address(v) });
+    assert!(all_valid_evm_address, error::invalid_argument(EINVALID_EVM_ADDRESS));
+
+    let contract_details = EvmContractsDetails {
+        details: simple_map::new_from(contract_keys, contract_values)
+    };
+    move_to(supra_framework, contract_details);
+    event::emit(contract_details);
+
+    let evm_config = EvmScalarConfig {
+        config: simple_map::new_from(config_keys, config_values)
+    };
+    validate_scalar_config(&evm_config);
+    move_to(supra_framework, evm_config);
+    event::emit(evm_config);
 }
 
@@ -94,19 +279,21 @@ Publishes the EvmConfig config.
- + -## Function `set_for_next_epoch` +## Function `upsert_evm_contract_details_for_next_epoch` -This can be called by on-chain governance to update on-chain evm configs for the next epoch. +This can be called by on-chain governance to update on-chain evm contract +details for the next epoch. Example usage: ``` -supra_framework::evm_config::set_for_next_epoch(&framework_signer, some_config_bytes); +supra_framework::evm_config::upsert_evm_contract_details_for_next_epoch( +&framework_signer, vector["contract1_name"], vector[contract1_address]); supra_framework::supra_governance::reconfigure(&framework_signer); ``` -
public fun set_for_next_epoch(account: &signer, config: vector<u8>)
+
public fun upsert_evm_contract_details_for_next_epoch(account: &signer, keys: vector<string::String>, values: vector<address>)
 
@@ -115,10 +302,30 @@ supra_framework::supra_governance::reconfigure(&framework_signer); Implementation -
public fun set_for_next_epoch(account: &signer, config: vector<u8>) {
+
public fun upsert_evm_contract_details_for_next_epoch(
+    account: &signer,
+    keys: vector<String>,
+    values: vector<address>
+) acquires EvmContractsDetails {
     system_addresses::assert_supra_framework(account);
-    assert!(!vector::is_empty(&config), error::invalid_argument(EINVALID_CONFIG));
-    std::config_buffer::upsert<EvmConfig>(EvmConfig {config});
+    assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA));
+    assert!(
+        vector::length(&keys) == vector::length(&values),
+        error::invalid_argument(EKEYS_VALUES_MISMATCH)
+    );
+    let all_valid_evm_address = vector::all(&values, |v| { is_valid_evm_address(v) });
+    assert!(all_valid_evm_address, error::invalid_argument(EINVALID_EVM_ADDRESS));
+    if (!exists<EvmContractsDetails>(@supra_framework)) {
+        std::config_buffer::upsert<EvmContractsDetails>(
+            EvmContractsDetails { details: simple_map::new_from(keys, values) }
+        );
+        return
+    };
+    let updated_config = *borrow_global<EvmContractsDetails>(@supra_framework);
+    vector::zip(keys, values, |key, value| {
+        simple_map::upsert(&mut updated_config.details, key, value);
+    });
+    std::config_buffer::upsert<EvmContractsDetails>(updated_config);
 }
 
@@ -126,16 +333,21 @@ supra_framework::supra_governance::reconfigure(&framework_signer); - + -## Function `on_new_epoch` +## Function `upsert_config_for_next_epoch` -Only used in reconfigurations to apply the pending EvmConfig in buffer, if there is any. -If supra_framework has a EvmConfig, then update the new config to supra_framework. -Otherwise, move the new config to supra_framework. +This can be called by on-chain governance to update on-chain evm config +for the next epoch. Values are plain u128 scalars. +Example usage: +``` +supra_framework::evm_config::upsert_config_for_next_epoch( +&framework_signer, vector["config_key"], vector[new_value]); +supra_framework::supra_governance::reconfigure(&framework_signer); +``` -
public(friend) fun on_new_epoch(framework: &signer)
+
public fun upsert_config_for_next_epoch(account: &signer, keys: vector<string::String>, values: vector<u128>)
 
@@ -144,16 +356,69 @@ Otherwise, move the new config to supra_framework. Implementation -
public(friend) fun on_new_epoch(framework: &signer) acquires EvmConfig {
-    system_addresses::assert_supra_framework(framework);
-    if (config_buffer::does_exist<EvmConfig>()) {
-        let new_config = config_buffer::extract<EvmConfig>();
-        if (exists<EvmConfig>(@supra_framework)) {
-            *borrow_global_mut<EvmConfig>(@supra_framework) = new_config;
-        } else {
-            move_to(framework, new_config);
-        };
-    }
+
public fun upsert_config_for_next_epoch(
+    account: &signer,
+    keys: vector<String>,
+    values: vector<u128>
+) acquires EvmScalarConfig {
+    system_addresses::assert_supra_framework(account);
+    assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA));
+    assert!(
+        vector::length(&keys) == vector::length(&values),
+        error::invalid_argument(EKEYS_VALUES_MISMATCH)
+    );
+    if (!exists<EvmScalarConfig>(@supra_framework)) {
+        let evm_config =
+            EvmScalarConfig { config: simple_map::new_from(keys, values) };
+        // Config did not exist earlier, so validate the config for
+        // presence of required keys and value type match
+        validate_scalar_config(&evm_config);
+        std::config_buffer::upsert<EvmScalarConfig>(evm_config);
+        return;
+    };
+    // Copy existing config
+    let updated_config = *borrow_global<EvmScalarConfig>(@supra_framework);
+    // We are never removing existing keys so by induction if all required
+    // keys are present in config during initialization
+    // they will be there later as well, so no need to validate here
+    vector::zip(keys, values, |key, value| {
+        simple_map::upsert(&mut updated_config.config, key, value);
+    });
+    std::config_buffer::upsert<EvmScalarConfig>(updated_config);
+}
+
+ + + + + + + +## Function `get_contract_value` + +Returns the contract address stored under key in the EvmContractsDetails map. +Aborts with EKEY_NOT_FOUND if the resource has not been initialised or the key +is not present in the map. + + +
#[view]
+public fun get_contract_value(key: string::String): address
+
+ + + +
+Implementation + + +
public fun get_contract_value(key: String): address acquires EvmContractsDetails {
+    assert!(exists<EvmContractsDetails>(@supra_framework), error::not_found(EKEY_NOT_FOUND));
+    let details = borrow_global<EvmContractsDetails>(@supra_framework);
+    assert!(
+        simple_map::contains_key(&details.details, &key),
+        error::not_found(EKEY_NOT_FOUND)
+    );
+    *simple_map::borrow(&details.details, &key)
 }
 
@@ -161,53 +426,132 @@ Otherwise, move the new config to supra_framework.
- + + +## Function `get_scalar_config_value` -## Specification +Returns the u128 value stored under key in the EvmScalarConfig map. +Aborts with EKEY_NOT_FOUND if the resource has not been initialised or the key +is not present in the map. +
#[view]
+public fun get_scalar_config_value(key: string::String): u128
+
+ + + +
+Implementation -
pragma verify = true;
-pragma aborts_if_is_strict;
+
+
public fun get_scalar_config_value(key: String): u128 acquires EvmScalarConfig {
+    assert!(exists<EvmScalarConfig>(@supra_framework), error::not_found(EKEY_NOT_FOUND));
+    let config = borrow_global<EvmScalarConfig>(@supra_framework);
+    assert!(
+        simple_map::contains_key(&config.config, &key),
+        error::not_found(EKEY_NOT_FOUND)
+    );
+    *simple_map::borrow(&config.config, &key)
+}
 
- +
+ + + +## Function `validate_scalar_config` -### Function `initialize` -
public(friend) fun initialize(supra_framework: &signer, config: vector<u8>)
+
fun validate_scalar_config(evm_config: &evm_config::EvmScalarConfig)
 
+
+Implementation + -
pragma aborts_if_is_strict = false;
+
fun validate_scalar_config(evm_config: &EvmScalarConfig) {
+    let required_keys = vector[string::utf8(CONFIG_KEY_EVM_GAS_NORMALIZATION_DENOM),
+                               string::utf8(CONFIG_KEY_EVM_GAS_ESTIMATE_MARGIN),
+                               string::utf8(SUPRA_EVM_GAS_USED_RATIO),
+                               string::utf8(SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION)];
+    // With u128 as the value type, the Move type system prevents type mismatches at
+    // compile time. The only meaningful runtime check is key presence.
+    vector::for_each_reverse(required_keys, |rk| {
+        assert!(simple_map::contains_key(&evm_config.config, &rk),
+            error::invalid_argument(EMISSING_KEY_OR_INCORRECT_VAL_TYPE)
+        );
+        assert!(*simple_map::borrow(&evm_config.config, &rk) > 0u128, error::invalid_argument(EMISSING_KEY_OR_INCORRECT_VAL_TYPE));
+    });
+}
 
- +
+ + -### Function `set_for_next_epoch` +## Function `is_valid_evm_address` -
public fun set_for_next_epoch(account: &signer, config: vector<u8>)
+
+
fun is_valid_evm_address(addr: &address): bool
 
+
+Implementation + + +
fun is_valid_evm_address(addr: &address): bool {
+    // BCS serialises a Move `address` as a raw fixed-size 32-byte array in
+    // big-endian order (most-significant byte first).  An EVM address is only
+    // 20 bytes wide, so when a 20-byte EVM address is stored in a 32-byte Move
+    // address the EVM bytes occupy the last 20 positions (indices 12-31) and the
+    // leading 12 bytes (indices 0-11) must all be zero.
+    // We iterate only over that prefix and bail immediately on the first non-zero
+    // byte to avoid unnecessary work.
+    let evm_addr_bytes = bcs::to_bytes(addr);
+
+    // Sanity check: BCS encoding of an address is always 32 bytes. If somehow
+    // the length differs, the address cannot be valid.
+    if (vector::length(&evm_addr_bytes) != MOVE_ADDRESS_BYTE_LENGTH) {
+        return false
+    };
+
+    // Check that all 12 high-order prefix bytes are zero.  A non-zero byte here
+    // means the value cannot fit in 20 bytes and is therefore not a valid EVM address.
+    let i = 0u64;
+    let addr_length_diff = MOVE_ADDRESS_BYTE_LENGTH - EVM_ADDRESS_BYTE_LENGTH;
+    while (i < addr_length_diff) {
+        if (*vector::borrow(&evm_addr_bytes, i) != 0u8) {
+            // Non-zero prefix byte found - not a valid 20-byte EVM address.
+            return false
+        };
+        i = i + 1;
+    };
 
-
include config_buffer::SetForNextEpochAbortsIf;
+    true
+}
 
- +
+ + -### Function `on_new_epoch` +## Function `on_new_epoch` + +Only used in reconfigurations to apply the pending configs in buffer, if any. +If supra_framework already holds the resource, overwrite it; otherwise move it in.
public(friend) fun on_new_epoch(framework: &signer)
@@ -215,11 +559,40 @@ Otherwise, move the new config to supra_framework.
 
 
 
+
+Implementation -
requires @supra_framework == std::signer::address_of(framework);
-include config_buffer::OnNewEpochRequirement<EvmConfig>;
-aborts_if false;
+
+
public(friend) fun on_new_epoch(framework: &signer) acquires EvmScalarConfig, EvmContractsDetails {
+    system_addresses::assert_supra_framework(framework);
+    if (config_buffer::does_exist<EvmContractsDetails>()) {
+        //TODO: change to extract_v2 when extract_v2 is merged and available
+        let new_config = config_buffer::extract<EvmContractsDetails>();
+        if (!exists<EvmContractsDetails>(@supra_framework)) {
+            move_to(framework, new_config);
+        } else {
+            let old_config = borrow_global_mut<EvmContractsDetails>(@supra_framework);
+            *old_config = new_config;
+        };
+        event::emit(new_config)
+    };
+    if (config_buffer::does_exist<EvmScalarConfig>()) {
+        // change to extract_v2 when it is available
+        let new_config = config_buffer::extract<EvmScalarConfig>();
+        if (!exists<EvmScalarConfig>(@supra_framework)) {
+            move_to(framework, new_config);
+        } else {
+            let old_config = borrow_global_mut<EvmScalarConfig>(@supra_framework);
+            *old_config = new_config;
+        };
+        event::emit(new_config)
+    };
+}
 
+ +
+ + [move-book]: https://aptos.dev/move/book/SUMMARY diff --git a/aptos-move/framework/supra-framework/doc/genesis.md b/aptos-move/framework/supra-framework/doc/genesis.md index 33c97053461..a3a7417e932 100644 --- a/aptos-move/framework/supra-framework/doc/genesis.md +++ b/aptos-move/framework/supra-framework/doc/genesis.md @@ -19,7 +19,7 @@ - [Function `initialize_supra_native_automation_v2`](#0x1_genesis_initialize_supra_native_automation_v2) - [Function `initialize_core_resources_and_supra_coin`](#0x1_genesis_initialize_core_resources_and_supra_coin) - [Function `initialize_evm_genesis_config`](#0x1_genesis_initialize_evm_genesis_config) -- [Function `initialize_evm_contracts_details`](#0x1_genesis_initialize_evm_contracts_details) +- [Function `initialize_evm_config`](#0x1_genesis_initialize_evm_config) - [Function `initialize_leader_ban_registry_config`](#0x1_genesis_initialize_leader_ban_registry_config) - [Function `create_accounts`](#0x1_genesis_create_accounts) - [Function `create_account`](#0x1_genesis_create_account) @@ -63,7 +63,7 @@ use 0x1::create_signer; use 0x1::dkg_config; use 0x1::error; -use 0x1::evm_contracts_details; +use 0x1::evm_config; use 0x1::evm_genesis_config; use 0x1::execution_config; use 0x1::features; @@ -849,14 +849,14 @@ Initialize the EVM genesis config. - + -## Function `initialize_evm_contracts_details` +## Function `initialize_evm_config` -Initialize the EVM genesis config. +Initialize the EVM config. -
fun initialize_evm_contracts_details(supra_framework: &signer, keys: vector<string::String>, values: vector<address>)
+
fun initialize_evm_config(supra_framework: &signer, contract_names: vector<string::String>, contract_addresses: vector<address>, config_keys: vector<string::String>, config_values: vector<u128>)
 
@@ -865,12 +865,14 @@ Initialize the EVM genesis config. Implementation -
fun initialize_evm_contracts_details(
+
fun initialize_evm_config(
     supra_framework: &signer,
-    keys: vector<String>,
-    values: vector<address>
+    contract_names: vector<String>,
+    contract_addresses: vector<address>,
+    config_keys: vector<String>,
+    config_values: vector<u128>
 ) {
-    evm_contracts_details::initialize(supra_framework, keys, values);
+    evm_config::initialize(supra_framework, contract_names, contract_addresses, config_keys, config_values);
 }
 
diff --git a/aptos-move/framework/supra-framework/doc/overview.md b/aptos-move/framework/supra-framework/doc/overview.md index 349b7e36805..f07a02a84ae 100644 --- a/aptos-move/framework/supra-framework/doc/overview.md +++ b/aptos-move/framework/supra-framework/doc/overview.md @@ -31,7 +31,7 @@ This is the reference documentation of the Supra framework. - [`0x1::dkg_committee`](dkg_committee.md#0x1_dkg_committee) - [`0x1::dkg_config`](dkg_config.md#0x1_dkg_config) - [`0x1::event`](event.md#0x1_event) -- [`0x1::evm_contracts_details`](evm_contracts_details.md#0x1_evm_contracts_details) +- [`0x1::evm_config`](evm_config.md#0x1_evm_config) - [`0x1::evm_genesis_config`](evm_genesis_config.md#0x1_evm_genesis_config) - [`0x1::execution_config`](execution_config.md#0x1_execution_config) - [`0x1::function_info`](function_info.md#0x1_function_info) diff --git a/aptos-move/framework/supra-framework/doc/reconfiguration_with_dkg.md b/aptos-move/framework/supra-framework/doc/reconfiguration_with_dkg.md index 53d9f4359a7..f894b2ba518 100644 --- a/aptos-move/framework/supra-framework/doc/reconfiguration_with_dkg.md +++ b/aptos-move/framework/supra-framework/doc/reconfiguration_with_dkg.md @@ -20,7 +20,7 @@ Reconfiguration with DKG helper functions. use 0x1::consensus_config; use 0x1::dkg_committee; use 0x1::dkg_config; -use 0x1::evm_contracts_details; +use 0x1::evm_config; use 0x1::evm_genesis_config; use 0x1::execution_config; use 0x1::features; @@ -178,7 +178,7 @@ Run the default reconfiguration to enter the new epoch. randomness_api_v0_config::on_new_epoch(framework); evm_genesis_config::on_new_epoch(framework); dkg_config::on_new_epoch(framework); - evm_contracts_details::on_new_epoch(framework); + evm_config::on_new_epoch(framework); reconfiguration::reconfigure(); }
diff --git a/aptos-move/framework/supra-framework/sources/configs/config_buffer.move b/aptos-move/framework/supra-framework/sources/configs/config_buffer.move index d11c1b0bcd8..4b97ec1cabe 100644 --- a/aptos-move/framework/supra-framework/sources/configs/config_buffer.move +++ b/aptos-move/framework/supra-framework/sources/configs/config_buffer.move @@ -19,7 +19,7 @@ module supra_framework::config_buffer { use supra_framework::system_addresses; - friend supra_framework::evm_contracts_details; + friend supra_framework::evm_config; friend supra_framework::evm_genesis_config; friend supra_framework::consensus_config; friend supra_framework::execution_config; diff --git a/aptos-move/framework/supra-framework/sources/configs/evm_config.move b/aptos-move/framework/supra-framework/sources/configs/evm_config.move new file mode 100644 index 00000000000..d52f75c156b --- /dev/null +++ b/aptos-move/framework/supra-framework/sources/configs/evm_config.move @@ -0,0 +1,470 @@ +module supra_framework::evm_config { + + use std::error; + use std::signer; + use std::string::{Self,String}; + use std::vector; + use aptos_std::simple_map; + use aptos_std::simple_map::SimpleMap; + use aptos_std::bcs; + use supra_framework::config_buffer; + use supra_framework::event; + use supra_framework::system_addresses; + + friend supra_framework::genesis; + friend supra_framework::reconfiguration_with_dkg; + + /// Empty keys/values to update config. + const EEMPTY_DATA: u64 = 1; + + /// Input keys and values should have the same amount of data + const EKEYS_VALUES_MISMATCH: u64 = 2; + + /// Invalid EVM address, valid EVM address must fit in 20 bytes + const EINVALID_EVM_ADDRESS: u64 = 3; + + /// Requested key does not exist in the map + const EKEY_NOT_FOUND: u64 = 4; + + /// Required Key is missing or value type is incorrect for a key + const EMISSING_KEY_OR_INCORRECT_VAL_TYPE: u64 = 5; + + /// Resource already exist at address + const ERESOURCE_ALREADY_EXISTS: u64 = 6; + + /// gas used ratio cannot exceed decimal precision + const EGAS_USED_RATIO_CANNOT_EXCEED_DECIMAL_PRECISION: u64 = 7; + + /// Well-known config key for the EVM gas normalisation denominator. + /// This u64 value is used to scale EVM gas units into Supra gas units. + const CONFIG_KEY_EVM_GAS_NORMALIZATION_DENOM: vector = b"evm_gas_normalization_denom"; + + /// Supra EVM Gas Estimate Margin + const CONFIG_KEY_EVM_GAS_ESTIMATE_MARGIN: vector = b"evm_gas_estimate_margin"; + + /// Supra EVM Gas Used Ratio + const SUPRA_EVM_GAS_USED_RATIO : vector = b"evm_gas_used_ratio"; + + /// DECIMAL_PRECISION + const SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION: vector = b"evm_gas_used_ratio_decimal_precision"; + + /// Evm and Move address length + const EVM_ADDRESS_BYTE_LENGTH : u64 = 12; + const MOVE_ADDRESS_BYTE_LENGTH: u64 = 32; + + #[event] + struct EvmContractsDetails has key, copy, store, drop { + details: SimpleMap, + } + + /// key-value map of EVM scalar config parameters. + /// Values are plain u128 integers; the Move type system enforces type safety + /// at compile time, eliminating the need for self-describing Any wrappers. + #[event] + struct EvmScalarConfig has key, copy, store, drop { + config: SimpleMap + } + + /// Publishes both the EVM contract address map and the scalar config map. + /// `contract_keys`/`contract_values` must be the same length and every address + /// must be a valid 20-byte EVM address (upper 12 bytes of the 32-byte Move + /// address must be zero). `config_keys`/`config_values` must be the same + /// length and must include all required keys (e.g. evm_gas_normalization_denom). + public(friend) fun initialize( + supra_framework: &signer, + contract_keys: vector, + contract_values: vector
, + config_keys: vector, + config_values: vector + ) { + system_addresses::assert_supra_framework(supra_framework); + assert!(!vector::is_empty(&contract_keys), error::invalid_argument(EEMPTY_DATA)); + assert!(!vector::is_empty(&config_keys), error::invalid_argument(EEMPTY_DATA)); + let supra_framework_addr = signer::address_of(supra_framework); + assert!(!exists(supra_framework_addr),error::invalid_state(ERESOURCE_ALREADY_EXISTS)); + assert!(!exists(supra_framework_addr),error::invalid_state(ERESOURCE_ALREADY_EXISTS)); + assert!( + vector::length(&contract_keys) == vector::length(&contract_values), + error::invalid_argument(EKEYS_VALUES_MISMATCH) + ); + assert!( + vector::length(&config_keys) == vector::length(&config_values), + error::invalid_argument(EKEYS_VALUES_MISMATCH) + ); + + // Check that no contract value is invalid EVM address + let all_valid_evm_address = vector::all(&contract_values, + |v|{ is_valid_evm_address(v) }); + assert!(all_valid_evm_address, error::invalid_argument(EINVALID_EVM_ADDRESS)); + + let contract_details = EvmContractsDetails { + details: simple_map::new_from(contract_keys, contract_values) + }; + move_to(supra_framework, contract_details); + event::emit(contract_details); + + let evm_config = EvmScalarConfig { + config: simple_map::new_from(config_keys, config_values) + }; + validate_scalar_config(&evm_config); + move_to(supra_framework, evm_config); + event::emit(evm_config); + } + + /// This can be called by on-chain governance to update on-chain evm contract + /// details for the next epoch. + /// Example usage: + /// ``` + /// supra_framework::evm_config::upsert_evm_contract_details_for_next_epoch( + /// &framework_signer, vector["contract1_name"], vector[contract1_address]); + /// supra_framework::supra_governance::reconfigure(&framework_signer); + /// ``` + public fun upsert_evm_contract_details_for_next_epoch( + account: &signer, + keys: vector, + values: vector
+ ) acquires EvmContractsDetails { + system_addresses::assert_supra_framework(account); + assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA)); + assert!( + vector::length(&keys) == vector::length(&values), + error::invalid_argument(EKEYS_VALUES_MISMATCH) + ); + let all_valid_evm_address = vector::all(&values, |v| { is_valid_evm_address(v) }); + assert!(all_valid_evm_address, error::invalid_argument(EINVALID_EVM_ADDRESS)); + if (!exists(@supra_framework)) { + std::config_buffer::upsert( + EvmContractsDetails { details: simple_map::new_from(keys, values) } + ); + return + }; + let updated_config = *borrow_global(@supra_framework); + vector::zip(keys, values, |key, value| { + simple_map::upsert(&mut updated_config.details, key, value); + }); + std::config_buffer::upsert(updated_config); + } + + /// This can be called by on-chain governance to update on-chain evm config + /// for the next epoch. Values are plain u128 scalars. + /// Example usage: + /// ``` + /// supra_framework::evm_config::upsert_config_for_next_epoch( + /// &framework_signer, vector["config_key"], vector[new_value]); + /// supra_framework::supra_governance::reconfigure(&framework_signer); + /// ``` + public fun upsert_config_for_next_epoch( + account: &signer, + keys: vector, + values: vector + ) acquires EvmScalarConfig { + system_addresses::assert_supra_framework(account); + assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA)); + assert!( + vector::length(&keys) == vector::length(&values), + error::invalid_argument(EKEYS_VALUES_MISMATCH) + ); + if (!exists(@supra_framework)) { + let evm_config = + EvmScalarConfig { config: simple_map::new_from(keys, values) }; + // Config did not exist earlier, so validate the config for + // presence of required keys and value type match + validate_scalar_config(&evm_config); + std::config_buffer::upsert(evm_config); + return; + }; + // Copy existing config + let updated_config = *borrow_global(@supra_framework); + // We are never removing existing keys so by induction if all required + // keys are present in config during initialization + // they will be there later as well, so no need to validate here + vector::zip(keys, values, |key, value| { + simple_map::upsert(&mut updated_config.config, key, value); + }); + std::config_buffer::upsert(updated_config); + } + + #[view] + /// Returns the contract address stored under `key` in the EvmContractsDetails map. + /// Aborts with EKEY_NOT_FOUND if the resource has not been initialised or the key + /// is not present in the map. + public fun get_contract_value(key: String): address acquires EvmContractsDetails { + assert!(exists(@supra_framework), error::not_found(EKEY_NOT_FOUND)); + let details = borrow_global(@supra_framework); + assert!( + simple_map::contains_key(&details.details, &key), + error::not_found(EKEY_NOT_FOUND) + ); + *simple_map::borrow(&details.details, &key) + } + + #[view] + /// Returns the u128 value stored under `key` in the EvmScalarConfig map. + /// Aborts with EKEY_NOT_FOUND if the resource has not been initialised or the key + /// is not present in the map. + public fun get_scalar_config_value(key: String): u128 acquires EvmScalarConfig { + assert!(exists(@supra_framework), error::not_found(EKEY_NOT_FOUND)); + let config = borrow_global(@supra_framework); + assert!( + simple_map::contains_key(&config.config, &key), + error::not_found(EKEY_NOT_FOUND) + ); + *simple_map::borrow(&config.config, &key) + } + + fun validate_scalar_config(evm_config: &EvmScalarConfig) { + let required_keys = vector[string::utf8(CONFIG_KEY_EVM_GAS_NORMALIZATION_DENOM), + string::utf8(CONFIG_KEY_EVM_GAS_ESTIMATE_MARGIN), + string::utf8(SUPRA_EVM_GAS_USED_RATIO), + string::utf8(SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION)]; + // With u128 as the value type, the Move type system prevents type mismatches at + // compile time. The only meaningful runtime check is key presence. + vector::for_each_reverse(required_keys, |rk| { + assert!(simple_map::contains_key(&evm_config.config, &rk), + error::invalid_argument(EMISSING_KEY_OR_INCORRECT_VAL_TYPE) + ); + assert!(*simple_map::borrow(&evm_config.config, &rk) > 0u128, error::invalid_argument(EMISSING_KEY_OR_INCORRECT_VAL_TYPE)); + }); + let gas_used_ratio = *simple_map::borrow(&evm_config.config, &string::utf8(SUPRA_EVM_GAS_USED_RATIO)); + let gas_used_ratio_decimal_precision = *simple_map::borrow(&evm_config.config, &string::utf8(SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION)); + assert!(gas_used_ratio <= gas_used_ratio_decimal_precision, error::invalid_argument(EGAS_USED_RATIO_CANNOT_EXCEED_DECIMAL_PRECISION)); + } + + fun is_valid_evm_address(addr: &address): bool { + // BCS serialises a Move `address` as a raw fixed-size 32-byte array in + // big-endian order (most-significant byte first). An EVM address is only + // 20 bytes wide, so when a 20-byte EVM address is stored in a 32-byte Move + // address the EVM bytes occupy the last 20 positions (indices 12-31) and the + // leading 12 bytes (indices 0-11) must all be zero. + // We iterate only over that prefix and bail immediately on the first non-zero + // byte to avoid unnecessary work. + let evm_addr_bytes = bcs::to_bytes(addr); + + // Sanity check: BCS encoding of an address is always 32 bytes. If somehow + // the length differs, the address cannot be valid. + if (vector::length(&evm_addr_bytes) != MOVE_ADDRESS_BYTE_LENGTH) { + return false + }; + + // Check that all 12 high-order prefix bytes are zero. A non-zero byte here + // means the value cannot fit in 20 bytes and is therefore not a valid EVM address. + let i = 0u64; + let addr_length_diff = MOVE_ADDRESS_BYTE_LENGTH - EVM_ADDRESS_BYTE_LENGTH; + while (i < addr_length_diff) { + if (*vector::borrow(&evm_addr_bytes, i) != 0u8) { + // Non-zero prefix byte found - not a valid 20-byte EVM address. + return false + }; + i = i + 1; + }; + + true + } + + /// Only used in reconfigurations to apply the pending configs in buffer, if any. + /// If supra_framework already holds the resource, overwrite it; otherwise move it in. + public(friend) fun on_new_epoch(framework: &signer) acquires EvmScalarConfig, EvmContractsDetails { + system_addresses::assert_supra_framework(framework); + if (config_buffer::does_exist()) { + //TODO: change to extract_v2 when extract_v2 is merged and available + let new_config = config_buffer::extract(); + if (!exists(@supra_framework)) { + move_to(framework, new_config); + } else { + let old_config = borrow_global_mut(@supra_framework); + *old_config = new_config; + }; + event::emit(new_config) + }; + if (config_buffer::does_exist()) { + // change to extract_v2 when it is available + let new_config = config_buffer::extract(); + if (!exists(@supra_framework)) { + move_to(framework, new_config); + } else { + let old_config = borrow_global_mut(@supra_framework); + *old_config = new_config; + }; + event::emit(new_config) + }; + } + + // ------------------------------------------------------------------------- + // Tests + // ------------------------------------------------------------------------- + + #[test] + /// Verifies that a small address value (@0x1) is accepted as a valid EVM address. + /// + /// @0x1 is the 256-bit integer 1. BCS serialises a Move address as a raw + /// big-endian 32-byte array, so the most-significant byte is at index 0 and the + /// least-significant byte (0x01) is at index 31. The 12 leading bytes + /// (indices 0-11) are therefore all zero, and the function must return true. + fun test_valid_evm_address_small_value() { + // BCS big-endian layout for @0x1 (32 bytes): + // index 0 : 0x00 + // ... + // index 30 : 0x00 + // index 31 : 0x01 + // Leading bytes 0-11 are all 0x00 -> valid 20-byte EVM address. + assert!(is_valid_evm_address(&@0x1), 0); + } + + #[test] + /// Verifies that a full 32-byte address is rejected as an invalid EVM address. + /// + /// @0x1000...000 (64 hex digits, most-significant nibble = 1) is the 256-bit + /// value 2^252. BCS serialises it as a big-endian byte array, so the + /// most-significant byte (0x10) lands at index 0 - which falls inside the + /// leading window [0, 11] that must be entirely zero for a valid EVM address. + /// The function must therefore return false. + fun test_invalid_evm_address_full_32_bytes() { + // BCS big-endian layout for @0x1000...000 (32 bytes): + // index 0 : 0x10 <- non-zero prefix byte -> invalid EVM address + // index 1 : 0x00 + // ... + // index 31 : 0x00 + assert!( + !is_valid_evm_address( + &@0x1000000000000000000000000000000000000000000000000000000000000000 + ), + 0 + ); + } + + #[test(supra_framework = @supra_framework)] + /// Happy-path test: both get_contract_value and get_scalar_config_value return the + /// values that were seeded into their respective resources. + fun test_get_contract_and_config_value_success(supra_framework: signer) acquires EvmContractsDetails, EvmScalarConfig { + // Seed EvmContractsDetails with a single entry. + let contract_key = std::string::utf8(b"usdc_contract"); + let contract_addr = @0xA550C18; + move_to(&supra_framework, EvmContractsDetails { + details: simple_map::new_from(vector[contract_key], vector[contract_addr]) + }); + + // Seed EvmScalarConfig with a single entry using a plain u128 value. + let config_key = std::string::utf8(b"evm_gas_normalization_denom"); + let config_value = 42u128; + move_to(&supra_framework, EvmScalarConfig { + config: simple_map::new_from(vector[config_key], vector[config_value]) + }); + + // Both lookups must return the exact values that were inserted above. + assert!(get_contract_value(std::string::utf8(b"usdc_contract")) == contract_addr, 0); + assert!( + get_scalar_config_value(std::string::utf8(b"evm_gas_normalization_denom")) == 42u128, + 0 + ); + } + + #[test(supra_framework = @supra_framework)] + /// Failure test: get_contract_value aborts when the requested key is absent. + /// + /// The expected abort code is error::not_found(EKEY_NOT_FOUND) + /// = (NOT_FOUND_CATEGORY=6 << 16) | EKEY_NOT_FOUND=4 = 0x60004. + #[expected_failure(abort_code = 0x60004, location = supra_framework::evm_config)] + fun test_get_contract_value_key_not_found(supra_framework: signer) acquires EvmContractsDetails { + move_to(&supra_framework, EvmContractsDetails { + details: simple_map::new_from( + vector[std::string::utf8(b"existing_key")], + vector[@0x1] + ) + }); + get_contract_value(std::string::utf8(b"nonexistent_key")); + } + + #[test(supra_framework = @supra_framework)] + /// Failure test: get_scalar_config_value aborts when the requested key is absent. + /// + /// The expected abort code is error::not_found(EKEY_NOT_FOUND) + /// = (NOT_FOUND_CATEGORY=6 << 16) | EKEY_NOT_FOUND=4 = 0x60004. + #[expected_failure(abort_code = 0x60004, location = supra_framework::evm_config)] + fun test_get_config_value_key_not_found(supra_framework: signer) acquires EvmScalarConfig { + move_to(&supra_framework, EvmScalarConfig { + config: simple_map::new_from( + vector[std::string::utf8(b"existing_key")], + vector[1u128] + ) + }); + get_scalar_config_value(std::string::utf8(b"nonexistent_key")); + } + + #[test] + /// Success test: validate_scalar_config must not abort when all required keys are present. + /// + /// evm_gas_normalization_denom is the sole required key. A config seeded with that + /// key and a plain u128 value must pass validation. + fun test_validate_config_success() { + let config_key = std::string::utf8(CONFIG_KEY_EVM_GAS_NORMALIZATION_DENOM); + let estimate_margin_key = std::string::utf8(CONFIG_KEY_EVM_GAS_ESTIMATE_MARGIN); + let gas_used_ratio_key = std::string::utf8(SUPRA_EVM_GAS_USED_RATIO); + let decimal_precision_key = std::string::utf8(SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION); + + + let evm_config = EvmScalarConfig { + config: simple_map::new_from(vector[config_key, estimate_margin_key, gas_used_ratio_key, decimal_precision_key], vector[100u128, 1000u128, 500u128, 1000u128]) + }; + // Must complete without aborting. + validate_scalar_config(&evm_config); + } + + #[test] + /// Failure test: validate_scalar_config aborts when a required key is absent. + /// + /// An empty config is missing evm_gas_normalization_denom, so validation must abort. + /// The expected abort code is error::invalid_argument(EMISSING_KEY_OR_INCORRECT_VAL_TYPE) + /// = (INVALID_ARGUMENT_CATEGORY=1 << 16) | EMISSING_KEY_OR_INCORRECT_VAL_TYPE=5 = 0x10005. + #[expected_failure(abort_code = 0x10005, location = supra_framework::evm_config)] + fun test_validate_config_missing_required_key() { + // An empty config is missing the sole required key -> must abort. + let evm_config = EvmScalarConfig { config: simple_map::new() }; + validate_scalar_config(&evm_config); + } + + #[test(supra_framework = @supra_framework)] + /// Failure test: upsert_evm_contract_details_for_next_epoch aborts when any + /// address in the values vector is not a valid EVM address. + /// + /// The call passes one valid address (@0x1, which fits in 20 bytes with all + /// leading bytes zero) alongside one invalid address whose most-significant + /// byte is non-zero (@0x1000...000). The presence of the invalid address + /// must trigger EINVALID_EVM_ADDRESS regardless of position in the vector. + /// The expected abort code is error::invalid_argument(EINVALID_EVM_ADDRESS) + /// = (INVALID_ARGUMENT_CATEGORY=1 << 16) | EINVALID_EVM_ADDRESS=3 = 0x10003. + #[expected_failure(abort_code = 0x10003, location = supra_framework::evm_config)] + fun test_upsert_evm_contract_details_mixed_invalid_address(supra_framework: signer) acquires EvmContractsDetails { + let keys = vector[ + std::string::utf8(b"valid_contract"), + std::string::utf8(b"invalid_contract") + ]; + let values = vector[ + @0x1, // valid: fits in 20 bytes + @0x1000000000000000000000000000000000000000000000000000000000000000 // invalid: high byte non-zero + ]; + upsert_evm_contract_details_for_next_epoch(&supra_framework, keys, values); + } + + #[test(supra_framework = @supra_framework)] + /// Failure test: validate_scalar_config aborts when gas used ratio exceeds decimal precision. + /// + /// The config includes all required keys, but the value for SUPRA_EVM_GAS_USED_RATIO (500) exceeds the value for SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION (1000), which is not logically valid. Validation must abort with + /// error::invalid_argument(EGAS_USED_RATIO_CANNOT_EXCEED_DECIMAL_PRECISION) + /// = (INVALID_ARGUMENT_CATEGORY=1 << 16) | EGAS_USED_RATIO_CANNOT_EXCEED_DECIMAL_PRECISION=7 = 0x10007. + #[expected_failure(abort_code = 0x10007, location = supra_framework::evm_config)] + fun test_validate_config_gas_used_ratio_exceeds_decimal_precision() { + let config_key = std::string::utf8(CONFIG_KEY_EVM_GAS_NORMALIZATION_DENOM); + let estimate_margin_key = std::string::utf8(CONFIG_KEY_EVM_GAS_ESTIMATE_MARGIN); + let gas_used_ratio_key = std::string::utf8(SUPRA_EVM_GAS_USED_RATIO); + let decimal_precision_key = std::string::utf8(SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION); + let evm_config = EvmScalarConfig { + config: simple_map::new_from( + vector[config_key, estimate_margin_key, gas_used_ratio_key, decimal_precision_key], + vector[100u128, 1000u128, 1500u128, 1000u128] // gas used ratio exceeds decimal precision -> must abort + ) + }; + validate_scalar_config(&evm_config); + +} + +} diff --git a/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move b/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move deleted file mode 100644 index 1014a318d32..00000000000 --- a/aptos-move/framework/supra-framework/sources/configs/evm_contracts_details.move +++ /dev/null @@ -1,78 +0,0 @@ -module supra_framework::evm_contracts_details { - - use std::error; - use std::string::String; - use std::vector; - use aptos_std::simple_map; - use aptos_std::simple_map::SimpleMap; - use supra_framework::config_buffer; - use supra_framework::event; - use supra_framework::system_addresses; - - friend supra_framework::genesis; - friend supra_framework::reconfiguration_with_dkg; - - /// Empty keys/values to update config. - const EEMPTY_DATA: u64 = 1; - - /// Input keys and values should have the same amount of data - const EKEYS_VALUES_MISMATCH: u64 = 2; - - #[event] - struct EvmContractsDetails has key, store, copy, drop { - details: SimpleMap, - } - - /// Publishes the EvmContractInfo details. - public(friend) fun initialize( - supra_framework: &signer, keys: vector, values: vector
- ) { - system_addresses::assert_supra_framework(supra_framework); - assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA)); - assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH)); - let contract_details = EvmContractsDetails { - details: simple_map::new_from(keys, values) - }; - move_to(supra_framework, contract_details); - event::emit(contract_details); - } - - /// This can be called by on-chain governance to update on-chain evm contract details for the next epoch. - /// Keys and values will match in length and should not be empty, otherwise the call will fail. - /// Example usage: - /// ``` - /// supra_framework::evm_contracts_details::upsert_for_next_epoch(&framework_signer, vector["contact1_name"], vector[contract1_address]); - /// supra_framework::supra_governance::reconfigure(&framework_signer); - /// ``` - public fun upsert_for_next_epoch(account: &signer, keys: vector, values: vector
) acquires EvmContractsDetails { - system_addresses::assert_supra_framework(account); - assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA)); - assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH)); - if (!exists(@supra_framework)) { - std::config_buffer::upsert(EvmContractsDetails { details: simple_map::new_from(keys, values) }); - return - }; - let updated_config = *borrow_global(@supra_framework); - vector::zip(keys, values, |key, value| { - simple_map::upsert(&mut updated_config.details, key, value); - }); - std::config_buffer::upsert(updated_config); - } - - /// Only used in reconfigurations to apply the pending `EvmContractDetails` in buffer, if there is any. - /// If supra_framework has a EvmContractDetails, then update the new config to supra_framework. - /// Otherwise, move the new config to supra_framework. - public(friend) fun on_new_epoch(framework: &signer) acquires EvmContractsDetails { - system_addresses::assert_supra_framework(framework); - if (config_buffer::does_exist()) { - let new_config = config_buffer::extract(); - if (exists(@supra_framework)) { - let old_config = borrow_global_mut(@supra_framework); - *old_config = new_config; - } else { - move_to(framework, new_config); - }; - event::emit(new_config) - } - } -} diff --git a/aptos-move/framework/supra-framework/sources/genesis.move b/aptos-move/framework/supra-framework/sources/genesis.move index 5feb4f1a1cc..e123fadd181 100644 --- a/aptos-move/framework/supra-framework/sources/genesis.move +++ b/aptos-move/framework/supra-framework/sources/genesis.move @@ -5,7 +5,7 @@ module supra_framework::genesis { use std::string::String; use std::vector; use aptos_std::simple_map; - use supra_framework::evm_contracts_details; + use supra_framework::evm_config; use supra_framework::account; use supra_framework::aggregator_factory; @@ -301,13 +301,15 @@ module supra_framework::genesis { evm_genesis_config::initialize(supra_framework, evm_genesis_config); } - /// Initialize the EVM genesis config. - fun initialize_evm_contracts_details( + /// Initialize the EVM config. + fun initialize_evm_config( supra_framework: &signer, - keys: vector, - values: vector
+ contract_names: vector, + contract_addresses: vector
, + config_keys: vector, + config_values: vector ) { - evm_contracts_details::initialize(supra_framework, keys, values); + evm_config::initialize(supra_framework, contract_names, contract_addresses, config_keys, config_values); } /// Initialize the leader ban config diff --git a/aptos-move/framework/supra-framework/sources/reconfiguration_with_dkg.move b/aptos-move/framework/supra-framework/sources/reconfiguration_with_dkg.move index 1118b938753..598aecdfaf1 100644 --- a/aptos-move/framework/supra-framework/sources/reconfiguration_with_dkg.move +++ b/aptos-move/framework/supra-framework/sources/reconfiguration_with_dkg.move @@ -7,7 +7,7 @@ module supra_framework::reconfiguration_with_dkg { use std::features; use std::option; use std::vector; - use supra_framework::evm_contracts_details; + use supra_framework::evm_config; use supra_framework::automation_registry; use supra_framework::randomness; use supra_framework::consensus_config; @@ -108,7 +108,7 @@ module supra_framework::reconfiguration_with_dkg { randomness_api_v0_config::on_new_epoch(framework); evm_genesis_config::on_new_epoch(framework); dkg_config::on_new_epoch(framework); - evm_contracts_details::on_new_epoch(framework); + evm_config::on_new_epoch(framework); reconfiguration::reconfigure(); } diff --git a/aptos-move/vm-genesis/src/lib.rs b/aptos-move/vm-genesis/src/lib.rs index cbbd8dbdc59..e03be918bbc 100644 --- a/aptos-move/vm-genesis/src/lib.rs +++ b/aptos-move/vm-genesis/src/lib.rs @@ -56,7 +56,7 @@ use std::{ collections::BTreeSet, hash::{Hash, Hasher}, }; -use aptos_types::on_chain_config::OnChainEvmContractsDetails; +use aptos_types::on_chain_config::{OnChainEvmContractsDetails, OnChainEvmConfig}; // The seed is arbitrarily picked to produce a consistent key. XXX make this more formal? const GENESIS_SEED: [u8; 32] = [42; 32]; @@ -250,6 +250,7 @@ pub fn encode_genesis_transaction_for_testnet( supra_config_bytes: Vec, evm_genesis_config: Option, evm_contracts_details: Option, + evm_scalar_config: Option ) -> Transaction { Transaction::GenesisTransaction(WriteSetPayload::Direct( encode_genesis_change_set_for_testnet( @@ -270,7 +271,8 @@ pub fn encode_genesis_transaction_for_testnet( gas_schedule, supra_config_bytes, evm_genesis_config, - evm_contracts_details + evm_contracts_details, + evm_scalar_config ), )) } @@ -294,6 +296,8 @@ pub fn encode_genesis_change_set_for_testnet( supra_config_bytes: Vec, evm_genesis_config: Option, evm_contracts_details: Option, + evm_scalar_config: Option + ) -> ChangeSet { validate_genesis_config(genesis_config); // Create a Move VM session so we can invoke on-chain genesis initializations. @@ -347,8 +351,8 @@ pub fn encode_genesis_change_set_for_testnet( initialize_evm_genesis_config(&mut session, &evm_genesis_config); } - if let Some(evm_contracts_details) = evm_contracts_details { - initialize_evm_contracts_details(&mut session, evm_contracts_details); + if let (Some(evm_contracts_details), Some(evm_scalar_config)) = (evm_contracts_details, evm_scalar_config) { + initialize_evm_config(&mut session, evm_contracts_details, evm_scalar_config); } create_accounts(&mut session, accounts); @@ -627,12 +631,14 @@ fn initialize_evm_genesis_config( ); } -fn initialize_evm_contracts_details( +fn initialize_evm_config( session: &mut SessionExt, evm_genesis_config: OnChainEvmContractsDetails, + evm_scalar_config: OnChainEvmConfig, ) { - let (keys, values) = evm_genesis_config.to_move_values(); + let (contract_names, contract_addresses) = evm_genesis_config.to_move_values(); + let (config_keys, config_values) = evm_scalar_config.to_move_values(); exec_function( session, @@ -641,8 +647,10 @@ fn initialize_evm_contracts_details( vec![], serialize_values(&vec![ MoveValue::Signer(CORE_CODE_ADDRESS), - keys, - values + contract_names, + contract_addresses, + config_keys, + config_values ]), ); } @@ -1316,6 +1324,7 @@ pub fn generate_test_genesis( b"test".to_vec(), None, None, + None, ); (genesis, test_validators) } @@ -1348,6 +1357,7 @@ pub fn generate_mainnet_genesis( b"test".to_vec(), None, None, + None, ); (genesis, test_validators) } diff --git a/crates/aptos-genesis/src/lib.rs b/crates/aptos-genesis/src/lib.rs index 38d2b9120bd..aca84febb4c 100644 --- a/crates/aptos-genesis/src/lib.rs +++ b/crates/aptos-genesis/src/lib.rs @@ -178,6 +178,7 @@ impl GenesisInfo { b"test".to_vec(), None, None, + None, ) } diff --git a/types/src/on_chain_config/evm_config.rs b/types/src/on_chain_config/evm_config.rs new file mode 100644 index 00000000000..7936a9f7b75 --- /dev/null +++ b/types/src/on_chain_config/evm_config.rs @@ -0,0 +1,508 @@ +// Copyright (c) 2026 Supra. +// SPDX-License-Identifier: Apache-2.0 + +use crate::on_chain_config::OnChainConfig; +use move_core_types::account_address::AccountAddress; +use move_core_types::value::MoveValue; +use serde::{Deserialize, Serialize}; +use std::collections::BTreeMap; +use std::fmt::{Display, Formatter}; +use std::str::FromStr; + +// -- EvmContractName ----------------------------------------------------------- + +/// Evm Contract Names deployed by Supra at genesis or later to be part of Supra EVM main state. +/// Currently only system targeted contracts have dedicated enum variants, the rest will be stored +/// as instance of [Self::Custom] variant. +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, Hash, PartialOrd, Ord)] +pub enum EvmContractName { + BlockMetadata, + AutomationController, + AutomationRegistry, + Custom(String), +} + +impl FromStr for EvmContractName { + type Err = anyhow::Error; + + fn from_str(s: &str) -> Result { + match s { + "BlockMetadata" => Ok(EvmContractName::BlockMetadata), + "AutomationCore" => Ok(EvmContractName::AutomationController), + "AutomationRegistry" => Ok(EvmContractName::AutomationRegistry), + n => Ok(EvmContractName::Custom(n.to_string())), + } + } +} + +impl Display for EvmContractName { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + match self { + EvmContractName::BlockMetadata => write!(f, "BlockMetadata"), + EvmContractName::AutomationController => write!(f, "AutomationCore"), + EvmContractName::AutomationRegistry => write!(f, "AutomationRegistry"), + EvmContractName::Custom(n) => write!(f, "{n}"), + } + } +} + +#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] +pub(crate) struct EvmContractsDetails { + details: Vec<(String, AccountAddress)>, +} + +pub const EVM_ADDRESS_LENGTH: usize = 20; +type RawEvmAddress = [u8; EVM_ADDRESS_LENGTH]; + +/// The Genesis configuration for EVM that can only be set once at genesis epoch. +#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] +pub struct OnChainEvmContractsDetails { + pub name_to_addresses: BTreeMap, +} + +impl OnChainEvmContractsDetails { + /// Converts keys and values to [`MoveValue`] and returns as tuple. + pub fn to_move_values(self) -> (MoveValue, MoveValue) { + let (keys, values): (Vec<_>, Vec<_>) = self + .name_to_addresses + .into_iter() + .map(|(key, value)| { + // A Move `address` is 32 bytes serialised by BCS in big-endian order + // (most-significant byte at index 0). An EVM address is only 20 bytes, + // so we zero-pad the leading 12 bytes and place the EVM bytes at the + // tail (indices 12-31). This matches the invariant enforced by + // `is_valid_evm_address` in evm_config.move, which asserts that + // indices 0-11 are all zero. + let mut padded = [0u8; AccountAddress::LENGTH]; + padded[AccountAddress::LENGTH - EVM_ADDRESS_LENGTH..].copy_from_slice(&value); + ( + MoveValue::vector_u8(key.to_string().into_bytes()), + AccountAddress::from(padded), + ) + }) + .unzip(); + (MoveValue::Vector(keys), MoveValue::vector_address(values)) + } + + pub fn get(&self, contract_name: EvmContractName) -> Option<&RawEvmAddress> { + self.name_to_addresses.get(&contract_name) + } + + pub fn has_all_keys(&self, keys: &[EvmContractName]) -> bool { + keys.into_iter() + .all(|key| self.name_to_addresses.contains_key(key)) + } +} + +impl OnChainConfig for OnChainEvmContractsDetails { + const MODULE_IDENTIFIER: &'static str = "evm_config"; + const TYPE_IDENTIFIER: &'static str = "EvmContractsDetails"; + + fn deserialize_into_config(bytes: &[u8]) -> anyhow::Result { + let raw_details = bcs::from_bytes::(bytes)?; + let details = raw_details + .details + .into_iter() + .filter_map(|(key, value)| { + let name = EvmContractName::from_str(&key).ok()?; + // BCS serialises a Move `address` as a raw 32-byte big-endian + // array. `to_move_values` places the 20-byte EVM address in the + // tail (indices 12-31) with the leading 12 bytes zeroed, so we + // must read from the back to recover the original EVM address. + let evm_address: RawEvmAddress = value.into_bytes() + [AccountAddress::LENGTH - EVM_ADDRESS_LENGTH..] + .try_into() + .ok()?; + Some((name, evm_address)) + }) + .collect::>(); + Ok(Self { + name_to_addresses: details, + }) + } +} + +// -- EvmScalarConfigKey -------------------------------------------------------- + +/// Typed keys for entries stored in the on-chain `EvmScalarConfig` resource. +/// Only keys whose string representation is known at compile time are listed +/// here; unknown keys are silently skipped during deserialization so that an +/// older node binary can still read a config that was extended with new keys. +#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, Hash, PartialOrd, Ord)] +pub enum EvmScalarConfigKey { + EvmGasNormalizationDenom, + EvmGasEstimateMargin, + EvmGasUsedRatio, + EvmGasUsedRatioDecimalPrecision, +} + +impl EvmScalarConfigKey { + /// The set of keys that MUST be present in the on-chain config. + /// Deserialization hard-fails if any of these is missing. + pub fn required_keys() -> &'static [EvmScalarConfigKey] { + &[EvmScalarConfigKey::EvmGasNormalizationDenom, + EvmScalarConfigKey::EvmGasEstimateMargin, + EvmScalarConfigKey::EvmGasUsedRatio, + EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision + ] + } +} + +impl FromStr for EvmScalarConfigKey { + type Err = anyhow::Error; + + fn from_str(s: &str) -> Result { + match s { + "evm_gas_normalization_denom" => Ok(EvmScalarConfigKey::EvmGasNormalizationDenom), + "evm_gas_estimate_margin" => Ok(EvmScalarConfigKey::EvmGasEstimateMargin), + "evm_gas_used_ratio" => Ok(EvmScalarConfigKey::EvmGasUsedRatio), + "evm_gas_used_ratio_decimal_precision" => Ok(EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision), + _ => Err(anyhow::anyhow!("unknown evm scalar config key: {}", s)), + } + } +} + +impl Display for EvmScalarConfigKey { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + // Mirror FromStr: Display produces the canonical snake_case string that + // operators see in logs and error messages. + match self { + EvmScalarConfigKey::EvmGasNormalizationDenom => { + write!(f, "evm_gas_normalization_denom") + } + EvmScalarConfigKey::EvmGasEstimateMargin => { + write!(f, "evm_gas_estimate_margin") + } + EvmScalarConfigKey::EvmGasUsedRatio => { + write!(f, "evm_gas_used_ratio") + } + EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision => { + write!(f, "evm_gas_used_ratio_decimal_precision") + } + } + } +} + +// -- Internal BCS mirror struct ------------------------------------------------ + +/// BCS mirror of the on-chain `EvmScalarConfig` resource. +/// `SimpleMap` serializes as `Vec<(K, V)>` in BCS. +/// All config values are plain u128 scalars; the Move type system enforces +/// type correctness at compile time. +#[derive(Deserialize, Serialize)] +struct RawEvmScalarConfig { + config: Vec<(String, u128)>, +} + +// -- OnChainEvmConfig ---------------------------------------------------------- + +/// The decoded, type-safe representation of the on-chain `EvmScalarConfig` resource. +#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] +pub struct OnChainEvmConfig { + pub config: BTreeMap, +} + +impl OnChainEvmConfig { + /// Convenience accessor for the EVM gas normalisation denominator. + pub fn evm_gas_normalization_denom(&self) -> anyhow::Result { + self.config + .get(&EvmScalarConfigKey::EvmGasNormalizationDenom) + .copied() + .ok_or_else(|| anyhow::anyhow!("evm_gas_normalization_denom not found in EvmScalarConfig")) + } + + pub fn evm_gas_estimate_margin(&self) -> anyhow::Result { + self.config + .get(&EvmScalarConfigKey::EvmGasEstimateMargin) + .copied() + .and_then(|v| v.try_into().ok()) + .ok_or_else(|| anyhow::anyhow!("evm_gas_estimate_margin not found in EvmScalarConfig")) + } + + pub fn evm_gas_used_ratio(&self) -> anyhow::Result { + // Decimal is guaranteed to be non-zero due to validation in evm_config.move, so this division is safe. + let decimal = self.evm_gas_used_ratio_decimal_precision()?; + self.config + .get(&EvmScalarConfigKey::EvmGasUsedRatio) + .copied() + .and_then(|v| { + let ratio = v as f64 / decimal as f64; + if ratio > 0.0 { + Some(ratio) + } else { + None + } + }) + .ok_or_else(|| anyhow::anyhow!("evm_gas_used_ratio not found in EvmScalarConfig")) + } + + pub fn evm_gas_used_ratio_decimal_precision(&self) -> anyhow::Result { + self.config + .get(&EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision) + .copied() + .and_then(|v| v.try_into().ok()) + .ok_or_else(|| anyhow::anyhow!("evm_gas_used_ratio_decimal_precision not found in EvmScalarConfig")) + } + + pub fn to_move_values(self) -> (MoveValue, MoveValue) { + let (keys, values): (Vec<_>, Vec<_>) = self.config.into_iter().map(|(key, value)| { + ( + MoveValue::vector_u8(key.to_string().into_bytes()), + MoveValue::U128(value), + ) + }).unzip(); + (MoveValue::Vector(keys), MoveValue::Vector(values)) + } +} + +impl OnChainConfig for OnChainEvmConfig { + const MODULE_IDENTIFIER: &'static str = "evm_config"; + const TYPE_IDENTIFIER: &'static str = "EvmScalarConfig"; + + fn deserialize_into_config(bytes: &[u8]) -> anyhow::Result { + let raw: RawEvmScalarConfig = bcs::from_bytes(bytes) + .map_err(|e| anyhow::anyhow!("failed to BCS-decode RawEvmScalarConfig: {}", e))?; + + let mut config = BTreeMap::new(); + for (key_str, value) in raw.config { + // Skip keys that are not (yet) known to this codebase; this allows + // the on-chain config to grow new entries without breaking older nodes. + let key = match EvmScalarConfigKey::from_str(&key_str) { + Ok(k) => k, + Err(_) => continue, + }; + config.insert(key, value); + } + + // Hard-fail if any required key is absent - the node cannot operate + // correctly without the full set of mandatory config values. + for required_key in EvmScalarConfigKey::required_keys() { + if !config.contains_key(required_key) { + return Err(anyhow::anyhow!( + "required EvmScalarConfig key '{}' is missing from on-chain state", + required_key // Display -> "evm_gas_normalization_denom" + )); + } + } + + Ok(Self { config }) + } +} + +#[cfg(test)] +mod unit_tests { + use super::*; + use crate::on_chain_config::{InMemoryOnChainConfig, OnChainConfig, OnChainConfigProvider}; + use std::collections::HashMap; + + // -- Helpers --------------------------------------------------------------- + + /// Returns a `RawEvmScalarConfig` with all four required keys populated. + /// Use this as the baseline for any test that needs a fully valid config. + fn raw_evm_scalar_config_all_keys( + denom: u128, + margin: u128, + gas_used_ratio: u128, + decimal_precision: u128, + ) -> RawEvmScalarConfig { + RawEvmScalarConfig { + config: vec![ + ("evm_gas_normalization_denom".to_string(), denom), + ("evm_gas_estimate_margin".to_string(), margin), + ("evm_gas_used_ratio".to_string(), gas_used_ratio), + ("evm_gas_used_ratio_decimal_precision".to_string(), decimal_precision), + ], + } + } + + /// Convenience wrapper with fixed margin/ratio/precision for tests that + /// only care about the denom value. + fn raw_evm_scalar_config_with_denom(denom: u128) -> RawEvmScalarConfig { + raw_evm_scalar_config_all_keys(denom, 500, 750, 1000) + } + + // -- OnChainEvmConfig deserialization -------------------------------------- + + #[test] + fn test_deserialize_evm_config_happy_path() { + let bytes = bcs::to_bytes(&raw_evm_scalar_config_with_denom(100)).unwrap(); + let config = OnChainEvmConfig::deserialize_into_config(&bytes).unwrap(); + assert_eq!(config.evm_gas_normalization_denom().unwrap(), 100u128); + // All four required keys must be decoded - no phantom entries. + assert_eq!(config.config.len(), 4); + } + + #[test] + fn test_deserialize_evm_config_missing_required_key() { + // Empty config - all required keys absent; the first one iterated + // (evm_gas_normalization_denom) must appear in the error. + let raw = RawEvmScalarConfig { config: vec![] }; + let bytes = bcs::to_bytes(&raw).unwrap(); + let result = OnChainEvmConfig::deserialize_into_config(&bytes); + assert!(result.is_err(), "expected Err when required key is missing"); + assert!( + result.unwrap_err().to_string().contains("evm_gas_normalization_denom"), + "error should identify the missing key" + ); + } + + #[test] + fn test_deserialize_evm_config_each_required_key_missing() { + // Every required key must be individually enforced: removing any single + // one must hard-fail with an error message that names that key. + let required = [ + "evm_gas_normalization_denom", + "evm_gas_estimate_margin", + "evm_gas_used_ratio", + "evm_gas_used_ratio_decimal_precision", + ]; + let full = raw_evm_scalar_config_all_keys(100, 500, 750, 1000); + for missing_key in &required { + let partial = RawEvmScalarConfig { + config: full + .config + .iter() + .filter(|(k, _)| k != missing_key) + .cloned() + .collect(), + }; + let bytes = bcs::to_bytes(&partial).unwrap(); + let result = OnChainEvmConfig::deserialize_into_config(&bytes); + assert!(result.is_err(), "expected Err when '{}' is absent", missing_key); + assert!( + result.unwrap_err().to_string().contains(missing_key), + "error must name the missing key '{}'", + missing_key + ); + } + } + + #[test] + fn test_deserialize_evm_config_unknown_key_skipped() { + // Unknown keys must be silently dropped so an older node binary can still + // read a config that was extended with new keys by a newer software version. + let mut raw = raw_evm_scalar_config_all_keys(42, 500, 750, 1000); + raw.config.push(("completely_unknown_key".to_string(), 7u128)); + let bytes = bcs::to_bytes(&raw).unwrap(); + let config = OnChainEvmConfig::deserialize_into_config(&bytes).unwrap(); + assert_eq!(config.evm_gas_normalization_denom().unwrap(), 42u128); + // Only the four known keys should appear; the unknown one is dropped. + assert_eq!(config.config.len(), 4); + } + + // -- Accessor correctness -------------------------------------------------- + + #[test] + fn test_accessor_evm_gas_estimate_margin() { + let bytes = bcs::to_bytes(&raw_evm_scalar_config_all_keys(100, 1234, 750, 1000)).unwrap(); + let config = OnChainEvmConfig::deserialize_into_config(&bytes).unwrap(); + assert_eq!(config.evm_gas_estimate_margin().unwrap(), 1234u64); + } + + #[test] + fn test_accessor_evm_gas_used_ratio_decimal_precision() { + let bytes = bcs::to_bytes(&raw_evm_scalar_config_all_keys(100, 500, 750, 2000)).unwrap(); + let config = OnChainEvmConfig::deserialize_into_config(&bytes).unwrap(); + assert_eq!(config.evm_gas_used_ratio_decimal_precision().unwrap(), 2000u64); + } + + #[test] + fn test_accessor_evm_gas_used_ratio() { + // ratio=750, decimal_precision=1000 -> 750 / 1000 = 0.75 + let bytes = bcs::to_bytes(&raw_evm_scalar_config_all_keys(100, 500, 750, 1000)).unwrap(); + let config = OnChainEvmConfig::deserialize_into_config(&bytes).unwrap(); + let ratio = config.evm_gas_used_ratio().unwrap(); + assert!( + (ratio - 0.75f64).abs() < f64::EPSILON, + "expected 0.75, got {}", + ratio + ); + } + + // -- to_move_values -------------------------------------------------------- + + #[test] + fn test_to_move_values_structure() { + // to_move_values must produce two parallel MoveValue::Vector outputs: + // keys as vector (UTF-8 strings) and values as u128. + let config = OnChainEvmConfig { + config: [ + (EvmScalarConfigKey::EvmGasNormalizationDenom, 42u128), + (EvmScalarConfigKey::EvmGasEstimateMargin, 500u128), + (EvmScalarConfigKey::EvmGasUsedRatio, 750u128), + (EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision, 1000u128), + ] + .into(), + }; + let (keys_mv, values_mv) = config.to_move_values(); + let MoveValue::Vector(keys) = keys_mv else { + panic!("expected MoveValue::Vector for keys") + }; + let MoveValue::Vector(values) = values_mv else { + panic!("expected MoveValue::Vector for values") + }; + assert_eq!(keys.len(), 4); + assert_eq!(values.len(), 4); + // Keys are encoded as vector (UTF-8 bytes). + assert!(matches!(keys[0], MoveValue::Vector(_))); + // Values are u128. + assert!(matches!(values[0], MoveValue::U128(_))); + } + + // -- OnChainEvmContractsDetails round-trip --------------------------------- + + #[test] + fn test_evm_contracts_details_round_trip() { + // 20-byte EVM address placed in the lower 20 bytes of a 32-byte Move + // address (upper 12 zeroed), matching the to_move_values encoding. + let evm_bytes: RawEvmAddress = [ + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, + 0xee, 0xff, 0x00, 0x11, 0x22, 0x33, + ]; + let original = OnChainEvmContractsDetails { + name_to_addresses: [(EvmContractName::BlockMetadata, evm_bytes)].into(), + }; + let mut padded = [0u8; AccountAddress::LENGTH]; + padded[AccountAddress::LENGTH - EVM_ADDRESS_LENGTH..].copy_from_slice(&evm_bytes); + let raw = EvmContractsDetails { + details: vec![("BlockMetadata".to_string(), AccountAddress::from(padded))], + }; + let bytes = bcs::to_bytes(&raw).unwrap(); + let recovered = OnChainEvmContractsDetails::deserialize_into_config(&bytes).unwrap(); + assert_eq!(recovered, original); + } + + // -- Tier 2: InMemoryOnChainConfig provider -------------------------------- + + #[test] + fn test_fetch_evm_config_via_provider() { + // Validates the full path: raw BCS bytes -> ConfigID lookup -> + // deserialize_into_config -> typed accessor, without a running VM. + let bytes = bcs::to_bytes(&raw_evm_scalar_config_with_denom(999)).unwrap(); + let mut map = HashMap::new(); + map.insert(OnChainEvmConfig::CONFIG_ID, bytes); + let provider = InMemoryOnChainConfig::new(map); + let config = provider.get::().unwrap(); + assert_eq!(config.evm_gas_normalization_denom().unwrap(), 999u128); + } + + #[test] + fn test_fetch_evm_contracts_details_via_provider() { + // Same end-to-end path for OnChainEvmContractsDetails. + let evm_bytes: RawEvmAddress = [ + 0xDE, 0xAD, 0xBE, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + ]; + let mut padded = [0u8; AccountAddress::LENGTH]; + padded[AccountAddress::LENGTH - EVM_ADDRESS_LENGTH..].copy_from_slice(&evm_bytes); + let raw = EvmContractsDetails { + details: vec![("BlockMetadata".to_string(), AccountAddress::from(padded))], + }; + let bytes = bcs::to_bytes(&raw).unwrap(); + let mut map = HashMap::new(); + map.insert(OnChainEvmContractsDetails::CONFIG_ID, bytes); + let provider = InMemoryOnChainConfig::new(map); + let recovered = provider.get::().unwrap(); + assert_eq!(recovered.get(EvmContractName::BlockMetadata), Some(&evm_bytes)); + } +} diff --git a/types/src/on_chain_config/evm_contracts_details.rs b/types/src/on_chain_config/evm_contracts_details.rs deleted file mode 100644 index 518768a6db4..00000000000 --- a/types/src/on_chain_config/evm_contracts_details.rs +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) 2026 Supra. -// SPDX-License-Identifier: Apache-2.0 - -use crate::on_chain_config::OnChainConfig; -use move_core_types::account_address::AccountAddress; -use serde::{Deserialize, Serialize}; -use std::collections::BTreeMap; -use std::fmt::{Display, Formatter}; -use std::str::FromStr; -use move_core_types::value::MoveValue; - -/// Evm Contract Names deployed by Supra at genesis or later to be part of Supra EVM main state. -/// Currently only system targeted contracts have dedicated enum variants, the rest will be stored -/// as instance of [Self::Custom] variant. -#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, Hash, PartialOrd, Ord)] -pub enum EvmContractName { - BlockMetadata, - AutomationController, - AutomationRegistry, - Custom(String), -} - -impl FromStr for EvmContractName { - type Err = anyhow::Error; - - fn from_str(s: &str) -> Result { - match s { - "BlockMetadata" => Ok(EvmContractName::BlockMetadata), - "AutomationController" => Ok(EvmContractName::AutomationController), - "AutomationRegistry" => Ok(EvmContractName::AutomationRegistry), - n => Ok(EvmContractName::Custom(n.to_string())), - } - } -} - -impl Display for EvmContractName { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match self { - EvmContractName::BlockMetadata => write!(f, "BlockMetadata"), - EvmContractName::AutomationController => write!(f, "AutomationController"), - EvmContractName::AutomationRegistry => write!(f, "AutomationRegistry"), - EvmContractName::Custom(n) => write!(f, "{n}"), - } - } -} - -#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] -pub(crate) struct EvmContractsDetails { - details: Vec<(String, AccountAddress)>, -} - -pub const EVM_ADDRESS_LENGTH: usize = 20; -type RawEvmAddress = [u8; EVM_ADDRESS_LENGTH]; - -/// The Genesis configuration for EVM that can only be set once at genesis epoch. -#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] -pub struct OnChainEvmContractsDetails { - pub name_to_addresses: BTreeMap, -} - -impl OnChainEvmContractsDetails { - /// Converts keys and values to [`MoveValue`] and returns as tuple. - pub fn to_move_values(self) -> (MoveValue, MoveValue) { - let (keys, values):(Vec<_>, Vec<_>) = self.name_to_addresses.into_iter().map(|(key, value)| { - let mut padded = [0u8; AccountAddress::LENGTH]; - padded[..EVM_ADDRESS_LENGTH].copy_from_slice(&value); - (MoveValue::vector_u8(key.to_string().into_bytes()), - AccountAddress::from(padded) - ) - }).unzip(); - (MoveValue::Vector(keys), MoveValue::vector_address(values)) - - } - - pub fn get(&self, contract_name: EvmContractName) -> Option<&RawEvmAddress> { - self.name_to_addresses.get(&contract_name) - } - - pub fn has_all_keys(&self, keys: &[EvmContractName]) -> bool { - keys.into_iter().all(|key| self.name_to_addresses.contains_key(key)) - } - -} - -impl OnChainConfig for OnChainEvmContractsDetails { - const MODULE_IDENTIFIER: &'static str = "evm_contracts_details"; - const TYPE_IDENTIFIER: &'static str = "EvmContractsDetails"; - - fn deserialize_into_config(bytes: &[u8]) -> anyhow::Result { - let raw_details = bcs::from_bytes::(bytes)?; - let details = raw_details - .details - .into_iter() - .filter_map(|(key, value)| { - let name = EvmContractName::from_str(&key).ok()?; - let evm_address: RawEvmAddress = - value.into_bytes()[..EVM_ADDRESS_LENGTH].try_into().ok()?; - Some((name, evm_address)) - }) - .collect::>(); - Ok(Self { - name_to_addresses: details, - }) - } -} diff --git a/types/src/on_chain_config/mod.rs b/types/src/on_chain_config/mod.rs index 430b9c94dd0..5ecb4d50e56 100644 --- a/types/src/on_chain_config/mod.rs +++ b/types/src/on_chain_config/mod.rs @@ -38,8 +38,7 @@ mod timed_features; mod timestamp; mod transaction_fee; mod validator_set; -mod evm_contracts_details; - +mod evm_config; pub use self::{ approved_execution_hashes::ApprovedExecutionHashes, aptos_features::*, @@ -76,7 +75,7 @@ pub use self::{ timestamp::CurrentTimeMicroseconds, transaction_fee::TransactionFeeBurnCap, validator_set::{ConsensusScheme, ValidatorSet}, - evm_contracts_details::{OnChainEvmContractsDetails, EvmContractName}, + evm_config::{EvmScalarConfigKey, EvmContractName, OnChainEvmConfig, OnChainEvmContractsDetails}, }; /// To register an on-chain config in Rust: From c7a346a297819a9126542cc161ddec92838cdfdb Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <89187359+aregng@users.noreply.github.com> Date: Fri, 24 Apr 2026 20:38:21 +0400 Subject: [PATCH 08/12] [Issue-2530] Extended GenesisEvmContract to support function calls as well (#354) Co-authored-by: Aregnaz Harutyunyan <> --- .../supra-framework/doc/evm_config.md | 13 +++ types/src/on_chain_config/evm_config.rs | 84 ++++++++++++------- .../src/on_chain_config/evm_genesis_config.rs | 13 +++ types/src/on_chain_config/mod.rs | 9 +- 4 files changed, 88 insertions(+), 31 deletions(-) diff --git a/aptos-move/framework/supra-framework/doc/evm_config.md b/aptos-move/framework/supra-framework/doc/evm_config.md index 6d1e329e2b7..0b0785d7ccd 100644 --- a/aptos-move/framework/supra-framework/doc/evm_config.md +++ b/aptos-move/framework/supra-framework/doc/evm_config.md @@ -134,6 +134,16 @@ Empty keys/values to update config. + + +gas used ratio cannot exceed decimal precision + + +
const EGAS_USED_RATIO_CANNOT_EXCEED_DECIMAL_PRECISION: u64 = 7;
+
+ + + Invalid EVM address, valid EVM address must fit in 20 bytes @@ -488,6 +498,9 @@ is not present in the map. ); assert!(*simple_map::borrow(&evm_config.config, &rk) > 0u128, error::invalid_argument(EMISSING_KEY_OR_INCORRECT_VAL_TYPE)); }); + let gas_used_ratio = *simple_map::borrow(&evm_config.config, &string::utf8(SUPRA_EVM_GAS_USED_RATIO)); + let gas_used_ratio_decimal_precision = *simple_map::borrow(&evm_config.config, &string::utf8(SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION)); + assert!(gas_used_ratio <= gas_used_ratio_decimal_precision, error::invalid_argument(EGAS_USED_RATIO_CANNOT_EXCEED_DECIMAL_PRECISION)); }
diff --git a/types/src/on_chain_config/evm_config.rs b/types/src/on_chain_config/evm_config.rs index 7936a9f7b75..2e15cbe8039 100644 --- a/types/src/on_chain_config/evm_config.rs +++ b/types/src/on_chain_config/evm_config.rs @@ -17,7 +17,6 @@ use std::str::FromStr; #[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, Hash, PartialOrd, Ord)] pub enum EvmContractName { BlockMetadata, - AutomationController, AutomationRegistry, Custom(String), } @@ -28,7 +27,6 @@ impl FromStr for EvmContractName { fn from_str(s: &str) -> Result { match s { "BlockMetadata" => Ok(EvmContractName::BlockMetadata), - "AutomationCore" => Ok(EvmContractName::AutomationController), "AutomationRegistry" => Ok(EvmContractName::AutomationRegistry), n => Ok(EvmContractName::Custom(n.to_string())), } @@ -39,7 +37,6 @@ impl Display for EvmContractName { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { EvmContractName::BlockMetadata => write!(f, "BlockMetadata"), - EvmContractName::AutomationController => write!(f, "AutomationCore"), EvmContractName::AutomationRegistry => write!(f, "AutomationRegistry"), EvmContractName::Custom(n) => write!(f, "{n}"), } @@ -140,10 +137,11 @@ impl EvmScalarConfigKey { /// The set of keys that MUST be present in the on-chain config. /// Deserialization hard-fails if any of these is missing. pub fn required_keys() -> &'static [EvmScalarConfigKey] { - &[EvmScalarConfigKey::EvmGasNormalizationDenom, - EvmScalarConfigKey::EvmGasEstimateMargin, - EvmScalarConfigKey::EvmGasUsedRatio, - EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision + &[ + EvmScalarConfigKey::EvmGasNormalizationDenom, + EvmScalarConfigKey::EvmGasEstimateMargin, + EvmScalarConfigKey::EvmGasUsedRatio, + EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision, ] } } @@ -156,7 +154,9 @@ impl FromStr for EvmScalarConfigKey { "evm_gas_normalization_denom" => Ok(EvmScalarConfigKey::EvmGasNormalizationDenom), "evm_gas_estimate_margin" => Ok(EvmScalarConfigKey::EvmGasEstimateMargin), "evm_gas_used_ratio" => Ok(EvmScalarConfigKey::EvmGasUsedRatio), - "evm_gas_used_ratio_decimal_precision" => Ok(EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision), + "evm_gas_used_ratio_decimal_precision" => { + Ok(EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision) + }, _ => Err(anyhow::anyhow!("unknown evm scalar config key: {}", s)), } } @@ -169,16 +169,16 @@ impl Display for EvmScalarConfigKey { match self { EvmScalarConfigKey::EvmGasNormalizationDenom => { write!(f, "evm_gas_normalization_denom") - } + }, EvmScalarConfigKey::EvmGasEstimateMargin => { write!(f, "evm_gas_estimate_margin") - } + }, EvmScalarConfigKey::EvmGasUsedRatio => { write!(f, "evm_gas_used_ratio") - } + }, EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision => { write!(f, "evm_gas_used_ratio_decimal_precision") - } + }, } } } @@ -208,7 +208,9 @@ impl OnChainEvmConfig { self.config .get(&EvmScalarConfigKey::EvmGasNormalizationDenom) .copied() - .ok_or_else(|| anyhow::anyhow!("evm_gas_normalization_denom not found in EvmScalarConfig")) + .ok_or_else(|| { + anyhow::anyhow!("evm_gas_normalization_denom not found in EvmScalarConfig") + }) } pub fn evm_gas_estimate_margin(&self) -> anyhow::Result { @@ -241,16 +243,22 @@ impl OnChainEvmConfig { .get(&EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision) .copied() .and_then(|v| v.try_into().ok()) - .ok_or_else(|| anyhow::anyhow!("evm_gas_used_ratio_decimal_precision not found in EvmScalarConfig")) + .ok_or_else(|| { + anyhow::anyhow!("evm_gas_used_ratio_decimal_precision not found in EvmScalarConfig") + }) } pub fn to_move_values(self) -> (MoveValue, MoveValue) { - let (keys, values): (Vec<_>, Vec<_>) = self.config.into_iter().map(|(key, value)| { - ( - MoveValue::vector_u8(key.to_string().into_bytes()), - MoveValue::U128(value), - ) - }).unzip(); + let (keys, values): (Vec<_>, Vec<_>) = self + .config + .into_iter() + .map(|(key, value)| { + ( + MoveValue::vector_u8(key.to_string().into_bytes()), + MoveValue::U128(value), + ) + }) + .unzip(); (MoveValue::Vector(keys), MoveValue::Vector(values)) } } @@ -280,7 +288,7 @@ impl OnChainConfig for OnChainEvmConfig { if !config.contains_key(required_key) { return Err(anyhow::anyhow!( "required EvmScalarConfig key '{}' is missing from on-chain state", - required_key // Display -> "evm_gas_normalization_denom" + required_key // Display -> "evm_gas_normalization_denom" )); } } @@ -310,7 +318,10 @@ mod unit_tests { ("evm_gas_normalization_denom".to_string(), denom), ("evm_gas_estimate_margin".to_string(), margin), ("evm_gas_used_ratio".to_string(), gas_used_ratio), - ("evm_gas_used_ratio_decimal_precision".to_string(), decimal_precision), + ( + "evm_gas_used_ratio_decimal_precision".to_string(), + decimal_precision, + ), ], } } @@ -341,7 +352,10 @@ mod unit_tests { let result = OnChainEvmConfig::deserialize_into_config(&bytes); assert!(result.is_err(), "expected Err when required key is missing"); assert!( - result.unwrap_err().to_string().contains("evm_gas_normalization_denom"), + result + .unwrap_err() + .to_string() + .contains("evm_gas_normalization_denom"), "error should identify the missing key" ); } @@ -368,7 +382,11 @@ mod unit_tests { }; let bytes = bcs::to_bytes(&partial).unwrap(); let result = OnChainEvmConfig::deserialize_into_config(&bytes); - assert!(result.is_err(), "expected Err when '{}' is absent", missing_key); + assert!( + result.is_err(), + "expected Err when '{}' is absent", + missing_key + ); assert!( result.unwrap_err().to_string().contains(missing_key), "error must name the missing key '{}'", @@ -382,7 +400,8 @@ mod unit_tests { // Unknown keys must be silently dropped so an older node binary can still // read a config that was extended with new keys by a newer software version. let mut raw = raw_evm_scalar_config_all_keys(42, 500, 750, 1000); - raw.config.push(("completely_unknown_key".to_string(), 7u128)); + raw.config + .push(("completely_unknown_key".to_string(), 7u128)); let bytes = bcs::to_bytes(&raw).unwrap(); let config = OnChainEvmConfig::deserialize_into_config(&bytes).unwrap(); assert_eq!(config.evm_gas_normalization_denom().unwrap(), 42u128); @@ -403,7 +422,10 @@ mod unit_tests { fn test_accessor_evm_gas_used_ratio_decimal_precision() { let bytes = bcs::to_bytes(&raw_evm_scalar_config_all_keys(100, 500, 750, 2000)).unwrap(); let config = OnChainEvmConfig::deserialize_into_config(&bytes).unwrap(); - assert_eq!(config.evm_gas_used_ratio_decimal_precision().unwrap(), 2000u64); + assert_eq!( + config.evm_gas_used_ratio_decimal_precision().unwrap(), + 2000u64 + ); } #[test] @@ -430,7 +452,10 @@ mod unit_tests { (EvmScalarConfigKey::EvmGasNormalizationDenom, 42u128), (EvmScalarConfigKey::EvmGasEstimateMargin, 500u128), (EvmScalarConfigKey::EvmGasUsedRatio, 750u128), - (EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision, 1000u128), + ( + EvmScalarConfigKey::EvmGasUsedRatioDecimalPrecision, + 1000u128, + ), ] .into(), }; @@ -503,6 +528,9 @@ mod unit_tests { map.insert(OnChainEvmContractsDetails::CONFIG_ID, bytes); let provider = InMemoryOnChainConfig::new(map); let recovered = provider.get::().unwrap(); - assert_eq!(recovered.get(EvmContractName::BlockMetadata), Some(&evm_bytes)); + assert_eq!( + recovered.get(EvmContractName::BlockMetadata), + Some(&evm_bytes) + ); } } diff --git a/types/src/on_chain_config/evm_genesis_config.rs b/types/src/on_chain_config/evm_genesis_config.rs index 30b9f08ce0e..ca66bdc826d 100644 --- a/types/src/on_chain_config/evm_genesis_config.rs +++ b/types/src/on_chain_config/evm_genesis_config.rs @@ -29,6 +29,15 @@ pub struct GenesisEvmEOA { pub amount: u128, } +/// The Creator address and nonce determines the contract' deployment address. +#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] +pub enum ContractKind { + /// Default contract creation API + Create, + /// EVM address that creates a contract. + Call(String), +} + /// The Creator address and nonce determines the contract' deployment address. #[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] pub struct GenesisEvmContract { @@ -40,6 +49,10 @@ pub struct GenesisEvmContract { pub amount: u128, /// The bytecode of the contract to deploy. pub bytecode: Vec, + /// Type of the contract + pub kind: ContractKind, + /// Precalculated address of the contract + pub deploy_address: String, } impl OnChainEvmGenesisConfig { diff --git a/types/src/on_chain_config/mod.rs b/types/src/on_chain_config/mod.rs index 5ecb4d50e56..e3ade280f2c 100644 --- a/types/src/on_chain_config/mod.rs +++ b/types/src/on_chain_config/mod.rs @@ -27,6 +27,7 @@ mod automation_registry; mod chain_id; mod commit_history; mod consensus_config; +mod evm_config; mod evm_genesis_config; mod execution_config; mod gas_schedule; @@ -38,7 +39,6 @@ mod timed_features; mod timestamp; mod transaction_fee; mod validator_set; -mod evm_config; pub use self::{ approved_execution_hashes::ApprovedExecutionHashes, aptos_features::*, @@ -56,8 +56,12 @@ pub use self::{ LeaderReputationType, OnChainConsensusConfig, ProposerAndVoterConfig, ProposerElectionType, ValidatorTxnConfig, }, + evm_config::{ + EvmContractName, EvmScalarConfigKey, OnChainEvmConfig, OnChainEvmContractsDetails, + }, evm_genesis_config::{ - GenesisEvmContract, GenesisEvmEOA, OnChainEvmGenesisConfig, EVM_GENESIS_EVENT_MOVE_TYPE_TAG, + ContractKind, GenesisEvmContract, GenesisEvmEOA, OnChainEvmGenesisConfig, + EVM_GENESIS_EVENT_MOVE_TYPE_TAG, }, execution_config::{ BlockGasLimitType, ExecutionConfigV1, ExecutionConfigV2, ExecutionConfigV4, @@ -75,7 +79,6 @@ pub use self::{ timestamp::CurrentTimeMicroseconds, transaction_fee::TransactionFeeBurnCap, validator_set::{ConsensusScheme, ValidatorSet}, - evm_config::{EvmScalarConfigKey, EvmContractName, OnChainEvmConfig, OnChainEvmContractsDetails}, }; /// To register an on-chain config in Rust: From a881a313a16798402401dc6d3dc87ef46d9caf11 Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <> Date: Fri, 1 May 2026 14:28:38 +0400 Subject: [PATCH 09/12] Fixed evm config initializtion function name --- aptos-move/vm-genesis/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aptos-move/vm-genesis/src/lib.rs b/aptos-move/vm-genesis/src/lib.rs index e03be918bbc..87dc49df8ae 100644 --- a/aptos-move/vm-genesis/src/lib.rs +++ b/aptos-move/vm-genesis/src/lib.rs @@ -643,7 +643,7 @@ fn initialize_evm_config( exec_function( session, GENESIS_MODULE_NAME, - "initialize_evm_contracts_details", + "initialize_evm_config", vec![], serialize_values(&vec![ MoveValue::Signer(CORE_CODE_ADDRESS), From 2eafa3a8d04a1f386fadf61ea12321beddec7f8d Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <> Date: Fri, 1 May 2026 15:56:13 +0400 Subject: [PATCH 10/12] Fixed the evm-address length value in evm_config.move --- .../framework/supra-framework/doc/evm_config.md | 2 +- .../sources/configs/evm_config.move | 16 +++++++++++++++- aptos-move/vm-genesis/src/lib.rs | 4 ++-- types/src/on_chain_config/evm_config.rs | 17 +++++++++++++++++ 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/aptos-move/framework/supra-framework/doc/evm_config.md b/aptos-move/framework/supra-framework/doc/evm_config.md index 0b0785d7ccd..9644b3bb39b 100644 --- a/aptos-move/framework/supra-framework/doc/evm_config.md +++ b/aptos-move/framework/supra-framework/doc/evm_config.md @@ -189,7 +189,7 @@ Resource already exist at address Evm and Move address length -
const EVM_ADDRESS_BYTE_LENGTH: u64 = 12;
+
const EVM_ADDRESS_BYTE_LENGTH: u64 = 20;
 
diff --git a/aptos-move/framework/supra-framework/sources/configs/evm_config.move b/aptos-move/framework/supra-framework/sources/configs/evm_config.move index d52f75c156b..a17464e9120 100644 --- a/aptos-move/framework/supra-framework/sources/configs/evm_config.move +++ b/aptos-move/framework/supra-framework/sources/configs/evm_config.move @@ -49,7 +49,7 @@ module supra_framework::evm_config { const SUPRA_EVM_GAS_USED_RATIO_DECIMAL_PRECISION: vector = b"evm_gas_used_ratio_decimal_precision"; /// Evm and Move address length - const EVM_ADDRESS_BYTE_LENGTH : u64 = 12; + const EVM_ADDRESS_BYTE_LENGTH : u64 = 20; const MOVE_ADDRESS_BYTE_LENGTH: u64 = 32; #[event] @@ -324,12 +324,26 @@ module supra_framework::evm_config { // index 1 : 0x00 // ... // index 31 : 0x00 + assert!( + is_valid_evm_address( + &@0x0000000000000000000000001000000000000000000000000000000000000001 + ), + 0 + ); + assert!( !is_valid_evm_address( &@0x1000000000000000000000000000000000000000000000000000000000000000 ), 0 ); + assert!( + !is_valid_evm_address( + &@0x0000000000000000000000011000000000000000000000000000000000000001 + ), + 0 + ); + } #[test(supra_framework = @supra_framework)] diff --git a/aptos-move/vm-genesis/src/lib.rs b/aptos-move/vm-genesis/src/lib.rs index 87dc49df8ae..0a45efde5e6 100644 --- a/aptos-move/vm-genesis/src/lib.rs +++ b/aptos-move/vm-genesis/src/lib.rs @@ -633,11 +633,11 @@ fn initialize_evm_genesis_config( fn initialize_evm_config( session: &mut SessionExt, - evm_genesis_config: OnChainEvmContractsDetails, + evm_contracts_details: OnChainEvmContractsDetails, evm_scalar_config: OnChainEvmConfig, ) { - let (contract_names, contract_addresses) = evm_genesis_config.to_move_values(); + let (contract_names, contract_addresses) = evm_contracts_details.to_move_values(); let (config_keys, config_values) = evm_scalar_config.to_move_values(); exec_function( diff --git a/types/src/on_chain_config/evm_config.rs b/types/src/on_chain_config/evm_config.rs index 2e15cbe8039..e3644621ba1 100644 --- a/types/src/on_chain_config/evm_config.rs +++ b/types/src/on_chain_config/evm_config.rs @@ -495,6 +495,23 @@ mod unit_tests { let bytes = bcs::to_bytes(&raw).unwrap(); let recovered = OnChainEvmContractsDetails::deserialize_into_config(&bytes).unwrap(); assert_eq!(recovered, original); + + let (_keys, addresses) = original.to_move_values(); + match addresses { + MoveValue::Vector(addrs) => { + assert_eq!(addrs.len(), 1); + match &addrs[0] { + MoveValue::Address(addr) => { + let recovered_evm_bytes: RawEvmAddress = addr.into_bytes()[AccountAddress::LENGTH - EVM_ADDRESS_LENGTH..] + .try_into() + .expect("slice with correct length"); + assert_eq!(recovered_evm_bytes, evm_bytes); + }, + _ => panic!("expected MoveValue::Address in values vector"), + } + } + _ => panic!("expected MoveValue::Vector"), + } } // -- Tier 2: InMemoryOnChainConfig provider -------------------------------- From 0b05d9b46005781c34e29fa1e58ab7a48661e8b7 Mon Sep 17 00:00:00 2001 From: Saurabh Joshi <106232965+sjoshisupra@users.noreply.github.com> Date: Fri, 1 May 2026 17:56:51 +0530 Subject: [PATCH 11/12] ensure nextest is installed (#358) Co-authored-by: Saurabh Joshi --- .github/workflows/aptos-framework-test.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/aptos-framework-test.yaml b/.github/workflows/aptos-framework-test.yaml index 6c29d9a2da8..aa5881e89a2 100644 --- a/.github/workflows/aptos-framework-test.yaml +++ b/.github/workflows/aptos-framework-test.yaml @@ -30,6 +30,9 @@ jobs: - name: Setup Rust uses: dtolnay/rust-toolchain@stable + - name: Install cargo-nextest + uses: taiki-e/install-action@nextest + - name: Setup SSH access run: | mkdir -p ~/.ssh From 8efdacf70d90dd005d40c11566a7c470bee35441 Mon Sep 17 00:00:00 2001 From: Aregnaz Harutyunyan <89187359+aregng@users.noreply.github.com> Date: Fri, 1 May 2026 16:31:51 +0400 Subject: [PATCH 12/12] Delete aptos-move/framework/supra-framework/doc/evm_contracts_details.md --- .../doc/evm_contracts_details.md | 194 ------------------ 1 file changed, 194 deletions(-) delete mode 100644 aptos-move/framework/supra-framework/doc/evm_contracts_details.md diff --git a/aptos-move/framework/supra-framework/doc/evm_contracts_details.md b/aptos-move/framework/supra-framework/doc/evm_contracts_details.md deleted file mode 100644 index 24cbd3fb254..00000000000 --- a/aptos-move/framework/supra-framework/doc/evm_contracts_details.md +++ /dev/null @@ -1,194 +0,0 @@ - - - -# Module `0x1::evm_contracts_details` - - - -- [Resource `EvmContractsDetails`](#0x1_evm_contracts_details_EvmContractsDetails) -- [Constants](#@Constants_0) -- [Function `initialize`](#0x1_evm_contracts_details_initialize) -- [Function `upsert_for_next_epoch`](#0x1_evm_contracts_details_upsert_for_next_epoch) -- [Function `on_new_epoch`](#0x1_evm_contracts_details_on_new_epoch) - - -
use 0x1::config_buffer;
-use 0x1::error;
-use 0x1::event;
-use 0x1::option;
-use 0x1::simple_map;
-use 0x1::string;
-use 0x1::system_addresses;
-use 0x1::vector;
-
- - - - - -## Resource `EvmContractsDetails` - - - -
#[event]
-struct EvmContractsDetails has copy, drop, store, key
-
- - - -
-Fields - - -
-
-details: simple_map::SimpleMap<string::String, address> -
-
- -
-
- - -
- - - -## Constants - - - - -Empty keys/values to update config. - - -
const EEMPTY_DATA: u64 = 1;
-
- - - - - -Input keys and values should have the same amount of data - - -
const EKEYS_VALUES_MISMATCH: u64 = 2;
-
- - - - - -## Function `initialize` - -Publishes the EvmContractInfo details. - - -
public(friend) fun initialize(supra_framework: &signer, keys: vector<string::String>, values: vector<address>)
-
- - - -
-Implementation - - -
public(friend) fun initialize(
-    supra_framework: &signer, keys: vector<String>, values: vector<address>
-) {
-    system_addresses::assert_supra_framework(supra_framework);
-    assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA));
-    assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH));
-    let contract_details = EvmContractsDetails {
-        details: simple_map::new_from(keys, values)
-    };
-    move_to(supra_framework, contract_details);
-    event::emit(contract_details);
-}
-
- - - -
- - - -## Function `upsert_for_next_epoch` - -This can be called by on-chain governance to update on-chain evm contract details for the next epoch. -Keys and values will match in length and should not be empty, otherwise the call will fail. -Example usage: -``` -supra_framework::evm_contracts_details::upsert_for_next_epoch(&framework_signer, vector["contact1_name"], vector[contract1_address]); -supra_framework::supra_governance::reconfigure(&framework_signer); -``` - - -
public fun upsert_for_next_epoch(account: &signer, keys: vector<string::String>, values: vector<address>)
-
- - - -
-Implementation - - -
public fun upsert_for_next_epoch(account: &signer, keys: vector<String>, values: vector<address>) acquires EvmContractsDetails {
-    system_addresses::assert_supra_framework(account);
-    assert!(!vector::is_empty(&keys), error::invalid_argument(EEMPTY_DATA));
-    assert!(vector::length(&keys) == vector::length(&values), error::invalid_argument(EKEYS_VALUES_MISMATCH));
-    if (!exists<EvmContractsDetails>(@supra_framework)) {
-        std::config_buffer::upsert<EvmContractsDetails>(EvmContractsDetails { details: simple_map::new_from(keys, values) });
-        return
-    };
-    let updated_config = *borrow_global<EvmContractsDetails>(@supra_framework);
-    vector::zip(keys, values, |key, value| {
-       simple_map::upsert(&mut updated_config.details, key, value);
-    });
-    std::config_buffer::upsert<EvmContractsDetails>(updated_config);
-}
-
- - - -
- - - -## Function `on_new_epoch` - -Only used in reconfigurations to apply the pending EvmContractDetails in buffer, if there is any. -If supra_framework has a EvmContractDetails, then update the new config to supra_framework. -Otherwise, move the new config to supra_framework. - - -
public(friend) fun on_new_epoch(framework: &signer)
-
- - - -
-Implementation - - -
public(friend) fun on_new_epoch(framework: &signer) acquires EvmContractsDetails {
-    system_addresses::assert_supra_framework(framework);
-    if (config_buffer::does_exist<EvmContractsDetails>()) {
-        let new_config = config_buffer::extract<EvmContractsDetails>();
-        if (exists<EvmContractsDetails>(@supra_framework)) {
-            let  old_config = borrow_global_mut<EvmContractsDetails>(@supra_framework);
-            *old_config = new_config;
-        } else  {
-            move_to(framework, new_config);
-        };
-        event::emit(new_config)
-    }
-}
-
- - - -
- - -[move-book]: https://aptos.dev/move/book/SUMMARY