diff --git a/Cargo.lock b/Cargo.lock index 4a5d49c224..7c0c4ce266 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -836,6 +836,14 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "change_bid_public_key" +version = "0.1.0" +dependencies = [ + "casper-contract", + "casper-types", +] + [[package]] name = "clap" version = "2.34.0" @@ -5995,14 +6003,6 @@ dependencies = [ "casper-types", ] -[[package]] -name = "transfer_validator" -version = "0.1.0" -dependencies = [ - "casper-contract", - "casper-types", -] - [[package]] name = "try-lock" version = "0.2.4" diff --git a/execution_engine/src/runtime/mod.rs b/execution_engine/src/runtime/mod.rs index 95b224b8dd..5b81b90567 100644 --- a/execution_engine/src/runtime/mod.rs +++ b/execution_engine/src/runtime/mod.rs @@ -994,16 +994,15 @@ where CLValue::from_t(()).map_err(Self::reverter) })(), - auction::METHOD_TRANSFER_VALIDATOR => (|| { - runtime.charge_system_contract_call(auction_costs.transfer_validator)?; + auction::METHOD_CHANGE_BID_PUBLIC_KEY => (|| { + runtime.charge_system_contract_call(auction_costs.change_bid_public_key)?; - let validator_public_key = - Self::get_named_argument(runtime_args, auction::ARG_VALIDATOR)?; - let new_validator_public_key = - Self::get_named_argument(runtime_args, auction::ARG_NEW_VALIDATOR)?; + let public_key = Self::get_named_argument(runtime_args, auction::ARG_PUBLIC_KEY)?; + let new_public_key = + Self::get_named_argument(runtime_args, auction::ARG_NEW_PUBLIC_KEY)?; runtime - .transfer_validator(validator_public_key, new_validator_public_key) + .change_bid_public_key(public_key, new_public_key) .map_err(Self::reverter)?; CLValue::from_t(()).map_err(Self::reverter) diff --git a/execution_engine_testing/tests/src/test/system_contracts/auction/bids.rs b/execution_engine_testing/tests/src/test/system_contracts/auction/bids.rs index 35137984cc..16473cb456 100644 --- a/execution_engine_testing/tests/src/test/system_contracts/auction/bids.rs +++ b/execution_engine_testing/tests/src/test/system_contracts/auction/bids.rs @@ -21,6 +21,7 @@ use casper_execution_engine::{ }; use casper_storage::data_access_layer::GenesisRequest; +use casper_types::system::auction::ARG_NEW_PUBLIC_KEY; use casper_types::{ self, account::AccountHash, @@ -48,7 +49,7 @@ const CONTRACT_WITHDRAW_BID: &str = "withdraw_bid.wasm"; const CONTRACT_DELEGATE: &str = "delegate.wasm"; const CONTRACT_UNDELEGATE: &str = "undelegate.wasm"; const CONTRACT_REDELEGATE: &str = "redelegate.wasm"; -const CONTRACT_TRANSFER_VALIDATOR: &str = "transfer_validator.wasm"; +const CONTRACT_CHANGE_BID_PUBLIC_KEY: &str = "change_bid_public_key.wasm"; const TRANSFER_AMOUNT: u64 = MINIMUM_ACCOUNT_CREATION_BALANCE + 1000; @@ -4354,7 +4355,7 @@ fn should_increase_existing_delegation_when_limit_exceeded() { #[ignore] #[test] -fn should_fail_transfer_if_conflicting_validator_bid_exists() { +fn should_fail_bid_public_key_change_if_conflicting_validator_bid_exists() { let system_fund_request = ExecuteRequestBuilder::standard( *DEFAULT_ACCOUNT_ADDR, CONTRACT_TRANSFER_TO_ACCOUNT, @@ -4450,10 +4451,10 @@ fn should_fail_transfer_if_conflicting_validator_bid_exists() { let validator_1_transfer_request = ExecuteRequestBuilder::standard( *NON_FOUNDER_VALIDATOR_1_ADDR, - CONTRACT_TRANSFER_VALIDATOR, + CONTRACT_CHANGE_BID_PUBLIC_KEY, runtime_args! { - ARG_VALIDATOR => NON_FOUNDER_VALIDATOR_1_PK.clone(), - ARG_NEW_VALIDATOR => NON_FOUNDER_VALIDATOR_2_PK.clone() + ARG_PUBLIC_KEY => NON_FOUNDER_VALIDATOR_1_PK.clone(), + ARG_NEW_PUBLIC_KEY => NON_FOUNDER_VALIDATOR_2_PK.clone() }, ) .build(); @@ -4464,12 +4465,12 @@ fn should_fail_transfer_if_conflicting_validator_bid_exists() { assert!(matches!( error, Error::Exec(execution::Error::Revert(ApiError::AuctionError(auction_error))) - if auction_error == AuctionError::TransferValidatorBid as u8)); + if auction_error == AuctionError::ChangeBidPublicKey as u8)); } #[ignore] #[test] -fn should_transfer_validator_bid() { +fn should_change_validator_bid_public_key() { let system_fund_request = ExecuteRequestBuilder::standard( *DEFAULT_ACCOUNT_ADDR, CONTRACT_TRANSFER_TO_ACCOUNT, @@ -4582,10 +4583,10 @@ fn should_transfer_validator_bid() { let validator_1_transfer_request = ExecuteRequestBuilder::standard( *NON_FOUNDER_VALIDATOR_1_ADDR, - CONTRACT_TRANSFER_VALIDATOR, + CONTRACT_CHANGE_BID_PUBLIC_KEY, runtime_args! { - ARG_VALIDATOR => NON_FOUNDER_VALIDATOR_1_PK.clone(), - ARG_NEW_VALIDATOR => NON_FOUNDER_VALIDATOR_2_PK.clone() + ARG_PUBLIC_KEY => NON_FOUNDER_VALIDATOR_1_PK.clone(), + ARG_NEW_PUBLIC_KEY => NON_FOUNDER_VALIDATOR_2_PK.clone() }, ) .build(); diff --git a/resources/local/chainspec.toml.in b/resources/local/chainspec.toml.in index 0d838b76ca..057ab9fcde 100644 --- a/resources/local/chainspec.toml.in +++ b/resources/local/chainspec.toml.in @@ -287,7 +287,7 @@ withdraw_validator_reward = 10_000 read_era_id = 10_000 activate_bid = 10_000 redelegate = 2_500_000_000 -transfer_validator = 2_500_000_000 +change_bid_public_key = 2_500_000_000 [system_costs.mint_costs] mint = 2_500_000_000 diff --git a/resources/production/chainspec.toml b/resources/production/chainspec.toml index 40ce6431f9..cb638a44d6 100644 --- a/resources/production/chainspec.toml +++ b/resources/production/chainspec.toml @@ -298,7 +298,7 @@ withdraw_validator_reward = 10_000 read_era_id = 10_000 activate_bid = 10_000 redelegate = 2_500_000_000 -transfer_validator = 2_500_000_000 +change_bid_public_key = 2_500_000_000 [system_costs.mint_costs] mint = 2_500_000_000 diff --git a/resources/test/valid/0_9_0/chainspec.toml b/resources/test/valid/0_9_0/chainspec.toml index e8ed32aaa8..cd02443c1c 100644 --- a/resources/test/valid/0_9_0/chainspec.toml +++ b/resources/test/valid/0_9_0/chainspec.toml @@ -165,7 +165,7 @@ withdraw_validator_reward = 10_000 read_era_id = 10_000 activate_bid = 10_000 redelegate = 10_000 -transfer_validator = 10_000 +change_bid_public_key = 10_000 [system_costs.mint_costs] mint = 2_500_000_000 diff --git a/resources/test/valid/0_9_0_unordered/chainspec.toml b/resources/test/valid/0_9_0_unordered/chainspec.toml index a5ee6e6055..47d6bb5665 100644 --- a/resources/test/valid/0_9_0_unordered/chainspec.toml +++ b/resources/test/valid/0_9_0_unordered/chainspec.toml @@ -163,7 +163,7 @@ withdraw_validator_reward = 10_000 read_era_id = 10_000 activate_bid = 10_000 redelegate = 10_000 -transfer_validator = 10_000 +change_bid_public_key = 10_000 [system_costs.mint_costs] mint = 2_500_000_000 diff --git a/resources/test/valid/1_0_0/chainspec.toml b/resources/test/valid/1_0_0/chainspec.toml index 9505b595a2..877dc6cee7 100644 --- a/resources/test/valid/1_0_0/chainspec.toml +++ b/resources/test/valid/1_0_0/chainspec.toml @@ -166,7 +166,7 @@ withdraw_validator_reward = 10_000 read_era_id = 10_000 activate_bid = 10_000 redelegate = 10_000 -transfer_validator = 10_000 +change_bid_public_key = 10_000 [system_costs.mint_costs] mint = 2_500_000_000 diff --git a/smart_contracts/contracts/client/transfer_validator/Cargo.toml b/smart_contracts/contracts/client/change_bid_public_key/Cargo.toml similarity index 80% rename from smart_contracts/contracts/client/transfer_validator/Cargo.toml rename to smart_contracts/contracts/client/change_bid_public_key/Cargo.toml index 870e852b2e..d6f5efaf26 100644 --- a/smart_contracts/contracts/client/transfer_validator/Cargo.toml +++ b/smart_contracts/contracts/client/change_bid_public_key/Cargo.toml @@ -1,11 +1,11 @@ [package] -name = "transfer_validator" +name = "change_bid_public_key" version = "0.1.0" authors = ["Maciej Wójcik "] edition = "2018" [[bin]] -name = "transfer_validator" +name = "change_bid_public_key" bench = false doctest = false test = false diff --git a/smart_contracts/contracts/client/change_bid_public_key/src/main.rs b/smart_contracts/contracts/client/change_bid_public_key/src/main.rs new file mode 100644 index 0000000000..be0a8547f5 --- /dev/null +++ b/smart_contracts/contracts/client/change_bid_public_key/src/main.rs @@ -0,0 +1,32 @@ +#![no_std] +#![no_main] + +extern crate alloc; + +use casper_contract::contract_api::{runtime, system}; +use casper_types::{ + runtime_args, + system::auction::{ARG_NEW_PUBLIC_KEY, ARG_PUBLIC_KEY, METHOD_CHANGE_BID_PUBLIC_KEY}, + PublicKey, +}; + +fn change_bid_public_key(public_key: PublicKey, new_public_key: PublicKey) { + let contract_hash = system::get_auction(); + let args = runtime_args! { + ARG_PUBLIC_KEY => public_key, + ARG_NEW_PUBLIC_KEY => new_public_key + }; + runtime::call_contract::<()>(contract_hash, METHOD_CHANGE_BID_PUBLIC_KEY, args); +} + +// Change validator bid public key. +// +// Accepts current bid's public key and new public key. +// Updates existing validator bid and all related delegator bids with +// the new public key. +#[no_mangle] +pub extern "C" fn call() { + let public_key = runtime::get_named_arg(ARG_PUBLIC_KEY); + let new_public_key = runtime::get_named_arg(ARG_NEW_PUBLIC_KEY); + change_bid_public_key(public_key, new_public_key); +} diff --git a/smart_contracts/contracts/client/transfer_validator/src/main.rs b/smart_contracts/contracts/client/transfer_validator/src/main.rs deleted file mode 100644 index eb8d079b62..0000000000 --- a/smart_contracts/contracts/client/transfer_validator/src/main.rs +++ /dev/null @@ -1,32 +0,0 @@ -#![no_std] -#![no_main] - -extern crate alloc; - -use casper_contract::contract_api::{runtime, system}; -use casper_types::{ - runtime_args, - system::auction::{ARG_NEW_VALIDATOR, ARG_VALIDATOR, METHOD_TRANSFER_VALIDATOR}, - PublicKey, -}; - -fn transfer_validator(validator: PublicKey, new_validator: PublicKey) { - let contract_hash = system::get_auction(); - let args = runtime_args! { - ARG_VALIDATOR => validator, - ARG_NEW_VALIDATOR => new_validator - }; - runtime::call_contract::<()>(contract_hash, METHOD_TRANSFER_VALIDATOR, args); -} - -// Transfer validator. -// -// Accepts current validator's public key and new validator's public key. -// Updates existing validator bid and all related delegator bids with -// the new validator's public key. -#[no_mangle] -pub extern "C" fn call() { - let validator = runtime::get_named_arg(ARG_VALIDATOR); - let new_validator = runtime::get_named_arg(ARG_NEW_VALIDATOR); - transfer_validator(validator, new_validator); -} diff --git a/storage/src/system/auction.rs b/storage/src/system/auction.rs index 383f350237..bdc98d9d9d 100644 --- a/storage/src/system/auction.rs +++ b/storage/src/system/auction.rs @@ -700,39 +700,38 @@ pub trait Auction: } } - /// Updates a `ValidatorBid` and all related delegator bids to use a new validator public key. + /// Updates a `ValidatorBid` and all related delegator bids to use a new public key. /// - /// This in effect "transfers" a validator along with its stake and all delegators + /// This in effect "transfers" a validator bid along with its stake and all delegators /// from one public key to another. - /// This method can only be called by the existing validator. + /// This method can only be called by the account associated with the current `ValidatorBid`. /// - /// The arguments are the existing validator's key and the new validator's key. - fn transfer_validator( + /// The arguments are the existing bids's 'validator_public_key' and the new public key. + fn change_bid_public_key( &mut self, - validator_public_key: PublicKey, - new_validator_public_key: PublicKey, + public_key: PublicKey, + new_public_key: PublicKey, ) -> Result<(), Error> { - let validator_account_hash = - AccountHash::from_public_key(&validator_public_key, |x| self.blake2b(x)); + let validator_account_hash = AccountHash::from_public_key(&public_key, |x| self.blake2b(x)); - // check that the caller is the existing validator + // check that the caller is the current bid's owner if !self.is_allowed_session_caller(&validator_account_hash) { return Err(Error::InvalidContext); } - // verify that a bid for existing validator exists - let validator_bid_addr = BidAddr::from(validator_public_key.clone()); + // verify that a bid for given public key exists + let validator_bid_addr = BidAddr::from(public_key.clone()); let mut validator_bid = read_validator_bid(self, &validator_bid_addr.into())?; - // verify that a bid for new validator does not exist yet - let new_validator_bid_addr = BidAddr::from(new_validator_public_key.clone()); + // verify that a bid for the new key does not exist yet + let new_validator_bid_addr = BidAddr::from(new_public_key.clone()); if self.read_bid(&new_validator_bid_addr.into())?.is_some() { - return Err(Error::TransferValidatorBid); + return Err(Error::ChangeBidPublicKey); } debug!("transferring validator bid from {validator_bid_addr} to {new_validator_bid_addr}"); - validator_bid.with_validator_public_key(new_validator_public_key.clone()); + validator_bid.with_validator_public_key(new_public_key.clone()); self.write_bid( new_validator_bid_addr.into(), BidKind::Validator(validator_bid), @@ -741,18 +740,16 @@ pub trait Auction: debug!("pruning validator bid {}", validator_bid_addr); self.prune_bid(validator_bid_addr); - debug!("transferring delegator bids from validator {validator_bid_addr} to {new_validator_bid_addr}"); - let delegators = read_delegator_bids(self, &validator_public_key)?; + debug!("transferring delegator bids from validator bid {validator_bid_addr} to {new_validator_bid_addr}"); + let delegators = read_delegator_bids(self, &public_key)?; for mut delegator in delegators { let delegator_public_key = delegator.delegator_public_key().clone(); let delegator_bid_addr = - BidAddr::new_from_public_keys(&validator_public_key, Some(&delegator_public_key)); + BidAddr::new_from_public_keys(&public_key, Some(&delegator_public_key)); - delegator.with_validator_public_key(new_validator_public_key.clone()); - let new_delegator_bid_addr = BidAddr::new_from_public_keys( - &new_validator_public_key, - Some(&delegator_public_key), - ); + delegator.with_validator_public_key(new_public_key.clone()); + let new_delegator_bid_addr = + BidAddr::new_from_public_keys(&new_public_key, Some(&delegator_public_key)); self.write_bid( new_delegator_bid_addr.into(), diff --git a/types/src/chainspec/vm_config/auction_costs.rs b/types/src/chainspec/vm_config/auction_costs.rs index 16648a2e88..fe101ffe90 100644 --- a/types/src/chainspec/vm_config/auction_costs.rs +++ b/types/src/chainspec/vm_config/auction_costs.rs @@ -38,8 +38,8 @@ pub const DEFAULT_WITHDRAW_VALIDATOR_REWARD_COST: u32 = 10_000; pub const DEFAULT_READ_ERA_ID_COST: u32 = 10_000; /// Default cost of the `activate_bid` auction entry point. pub const DEFAULT_ACTIVATE_BID_COST: u32 = 10_000; -/// Default cost of the `transfer_validator` auction entry point. -pub const DEFAULT_TRANSFER_VALIDATOR_COST: u32 = 2_500_000_000; +/// Default cost of the `change_bid_public_key` auction entry point. +pub const DEFAULT_CHANGE_BID_PUBLIC_KEY_COST: u32 = 2_500_000_000; /// Description of the costs of calling auction entrypoints. #[derive(Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Debug)] @@ -74,8 +74,8 @@ pub struct AuctionCosts { pub activate_bid: u32, /// Cost of calling the `redelegate` entry point. pub redelegate: u32, - /// Cost of calling the `transfer_validator` entry point. - pub transfer_validator: u32, + /// Cost of calling the `change_bid_public_key` entry point. + pub change_bid_public_key: u32, } impl Default for AuctionCosts { @@ -95,7 +95,7 @@ impl Default for AuctionCosts { read_era_id: DEFAULT_READ_ERA_ID_COST, activate_bid: DEFAULT_ACTIVATE_BID_COST, redelegate: DEFAULT_REDELEGATE_COST, - transfer_validator: DEFAULT_TRANSFER_VALIDATOR_COST, + change_bid_public_key: DEFAULT_CHANGE_BID_PUBLIC_KEY_COST, } } } @@ -119,7 +119,7 @@ impl ToBytes for AuctionCosts { read_era_id, activate_bid, redelegate, - transfer_validator, + change_bid_public_key, } = self; ret.append(&mut get_era_validators.to_bytes()?); @@ -136,7 +136,7 @@ impl ToBytes for AuctionCosts { ret.append(&mut read_era_id.to_bytes()?); ret.append(&mut activate_bid.to_bytes()?); ret.append(&mut redelegate.to_bytes()?); - ret.append(&mut transfer_validator.to_bytes()?); + ret.append(&mut change_bid_public_key.to_bytes()?); Ok(ret) } @@ -157,7 +157,7 @@ impl ToBytes for AuctionCosts { read_era_id, activate_bid, redelegate, - transfer_validator, + change_bid_public_key, } = self; get_era_validators.serialized_length() @@ -174,7 +174,7 @@ impl ToBytes for AuctionCosts { + read_era_id.serialized_length() + activate_bid.serialized_length() + redelegate.serialized_length() - + transfer_validator.serialized_length() + + change_bid_public_key.serialized_length() } } @@ -194,7 +194,7 @@ impl FromBytes for AuctionCosts { let (read_era_id, rem) = FromBytes::from_bytes(rem)?; let (activate_bid, rem) = FromBytes::from_bytes(rem)?; let (redelegate, rem) = FromBytes::from_bytes(rem)?; - let (transfer_validator, rem) = FromBytes::from_bytes(rem)?; + let (change_bid_public_key, rem) = FromBytes::from_bytes(rem)?; Ok(( Self { get_era_validators, @@ -211,7 +211,7 @@ impl FromBytes for AuctionCosts { read_era_id, activate_bid, redelegate, - transfer_validator, + change_bid_public_key, }, rem, )) @@ -236,7 +236,7 @@ impl Distribution for Standard { read_era_id: rng.gen(), activate_bid: rng.gen(), redelegate: rng.gen(), - transfer_validator: rng.gen(), + change_bid_public_key: rng.gen(), } } } @@ -264,7 +264,7 @@ pub mod gens { read_era_id in num::u32::ANY, activate_bid in num::u32::ANY, redelegate in num::u32::ANY, - transfer_validator in num::u32::ANY, + change_bid_public_key in num::u32::ANY, ) -> AuctionCosts { AuctionCosts { get_era_validators, @@ -281,7 +281,7 @@ pub mod gens { read_era_id, activate_bid, redelegate, - transfer_validator, + change_bid_public_key, } } } diff --git a/types/src/system/auction/constants.rs b/types/src/system/auction/constants.rs index 2032909dda..b3cc177eaa 100644 --- a/types/src/system/auction/constants.rs +++ b/types/src/system/auction/constants.rs @@ -20,8 +20,10 @@ pub const BLOCK_REWARD: u64 = 1_000_000_000_000; pub const ARG_AMOUNT: &str = "amount"; /// Named constant for `delegation_rate`. pub const ARG_DELEGATION_RATE: &str = "delegation_rate"; -/// Named constant for `account_hash`. +/// Named constant for `public_key`. pub const ARG_PUBLIC_KEY: &str = "public_key"; +/// Named constant for `new_public_key`. +pub const ARG_NEW_PUBLIC_KEY: &str = "new_public_key"; /// Named constant for `validator`. pub const ARG_VALIDATOR: &str = "validator"; /// Named constant for `delegator`. @@ -81,8 +83,8 @@ pub const METHOD_DISTRIBUTE: &str = "distribute"; pub const METHOD_READ_ERA_ID: &str = "read_era_id"; /// Named constant for method `activate_bid`. pub const METHOD_ACTIVATE_BID: &str = "activate_bid"; -/// Named constant for method `transfer_validator`. -pub const METHOD_TRANSFER_VALIDATOR: &str = "transfer_validator"; +/// Named constant for method `change_bid_public_key`. +pub const METHOD_CHANGE_BID_PUBLIC_KEY: &str = " change_bid_public_key"; /// Storage for `EraId`. pub const ERA_ID_KEY: &str = "era_id"; diff --git a/types/src/system/auction/entry_points.rs b/types/src/system/auction/entry_points.rs index 3252677a85..3ad223383c 100644 --- a/types/src/system/auction/entry_points.rs +++ b/types/src/system/auction/entry_points.rs @@ -10,7 +10,7 @@ use crate::{ PublicKey, U512, }; -use super::{ARG_REWARDS_MAP, METHOD_TRANSFER_VALIDATOR}; +use super::{ARG_NEW_PUBLIC_KEY, ARG_REWARDS_MAP, METHOD_CHANGE_BID_PUBLIC_KEY}; /// Creates auction contract entry points. pub fn auction_entry_points() -> EntryPoints { @@ -139,10 +139,10 @@ pub fn auction_entry_points() -> EntryPoints { entry_points.add_entry_point(entry_point); let entry_point = EntryPoint::new( - METHOD_TRANSFER_VALIDATOR, + METHOD_CHANGE_BID_PUBLIC_KEY, vec![ - Parameter::new(ARG_VALIDATOR, PublicKey::cl_type()), - Parameter::new(ARG_NEW_VALIDATOR, PublicKey::cl_type()), + Parameter::new(ARG_PUBLIC_KEY, PublicKey::cl_type()), + Parameter::new(ARG_NEW_PUBLIC_KEY, PublicKey::cl_type()), ], CLType::Unit, EntryPointAccess::Public, diff --git a/types/src/system/auction/error.rs b/types/src/system/auction/error.rs index 770ca98f35..2c57a823f2 100644 --- a/types/src/system/auction/error.rs +++ b/types/src/system/auction/error.rs @@ -327,12 +327,12 @@ pub enum Error { /// assert_eq!(49, Error::TransferToAdministrator as u8); /// ``` TransferToAdministrator = 49, - /// Failed to transfer validator bid to new public key. + /// Failed to change validator bid public key. /// ``` /// # use casper_types::system::auction::Error; - /// assert_eq!(50, Error::TransferValidatorBid as u8); + /// assert_eq!(50, Error::ChangeBidPublicKey as u8); /// ``` - TransferValidatorBid = 50, + ChangeBidPublicKey = 50, } impl Display for Error { @@ -388,7 +388,7 @@ impl Display for Error { Error::AuctionBidsDisabled => formatter.write_str("Auction bids are disabled"), Error::GetAccumulationPurse => formatter.write_str("Get accumulation purse error"), Error::TransferToAdministrator => formatter.write_str("Transfer to administrator error"), - Error::TransferValidatorBid => formatter.write_str("Validator bid transfer error"), + Error::ChangeBidPublicKey => formatter.write_str("Validator bid transfer error"), } } } @@ -470,7 +470,7 @@ impl TryFrom for Error { d if d == Error::AuctionBidsDisabled as u8 => Ok(Error::AuctionBidsDisabled), d if d == Error::GetAccumulationPurse as u8 => Ok(Error::GetAccumulationPurse), d if d == Error::TransferToAdministrator as u8 => Ok(Error::TransferToAdministrator), - d if d == Error::TransferValidatorBid as u8 => Ok(Error::TransferValidatorBid), + d if d == Error::ChangeBidPublicKey as u8 => Ok(Error::ChangeBidPublicKey), _ => Err(TryFromU8ForError(())), } }