diff --git a/core/src/rpc.rs b/core/src/rpc.rs index b31dcfb6f..18b25b0ca 100644 --- a/core/src/rpc.rs +++ b/core/src/rpc.rs @@ -205,8 +205,8 @@ pub struct RpcVoteAccountInfo { /// The current stake, in lamports, delegated to this vote account pub stake: u64, - /// A 32-bit integer used as a fraction (commission/MAX_U32) for rewards payout - pub commission: u32, + /// An 8-bit integer used as a fraction (commission/MAX_U8) for rewards payout + pub commission: u8, } #[rpc(server)] diff --git a/multinode-demo/fullnode.sh b/multinode-demo/fullnode.sh index c4afc32fb..863969b77 100755 --- a/multinode-demo/fullnode.sh +++ b/multinode-demo/fullnode.sh @@ -94,7 +94,7 @@ setup_validator_accounts() { # Fund the vote account from the node, with the node as the identity_pubkey $solana_wallet --keypair "$identity_keypair_path" --url "http://$entrypoint_ip:8899" \ - create-vote-account "$vote_pubkey" "$identity_pubkey" 1 --commission 65535 || return $? + create-vote-account "$vote_pubkey" "$identity_pubkey" 1 --commission 255 || return $? # Fund the stake account from the node, with the node as the identity_pubkey $solana_wallet --keypair "$identity_keypair_path" --url "http://$entrypoint_ip:8899" \ diff --git a/programs/stake_api/src/stake_state.rs b/programs/stake_api/src/stake_state.rs index 6a1425869..97e3771a8 100644 --- a/programs/stake_api/src/stake_state.rs +++ b/programs/stake_api/src/stake_state.rs @@ -695,7 +695,7 @@ mod tests { None, // would be Some((0, 2 * 1 + 1 * 2, 3)), stake.calculate_rewards(1.0, &vote_state) ); - vote_state.commission = std::u32::MAX - 1; + vote_state.commission = std::u8::MAX - 1; assert_eq!( None, // would be pSome((0, 2 * 1 + 1 * 2, 3)), stake.calculate_rewards(1.0, &vote_state) diff --git a/programs/stake_tests/tests/stake_instruction.rs b/programs/stake_tests/tests/stake_instruction.rs index c745e004b..e69bc7fa8 100644 --- a/programs/stake_tests/tests/stake_instruction.rs +++ b/programs/stake_tests/tests/stake_instruction.rs @@ -77,7 +77,7 @@ fn test_stake_account_delegate() { &mint_pubkey, &vote_pubkey, &node_pubkey, - std::u32::MAX / 2, + std::u8::MAX / 2, 10, )); bank_client diff --git a/programs/vote_api/src/vote_instruction.rs b/programs/vote_api/src/vote_instruction.rs index b98aeebaf..76662ebf1 100644 --- a/programs/vote_api/src/vote_instruction.rs +++ b/programs/vote_api/src/vote_instruction.rs @@ -17,7 +17,7 @@ use solana_sdk::system_instruction; pub enum VoteInstruction { /// Initialize the VoteState for this `vote account` /// takes a node_pubkey and commission - InitializeAccount(Pubkey, u32), + InitializeAccount(Pubkey, u8), /// Authorize a voter to send signed votes. AuthorizeVoter(Pubkey), @@ -26,7 +26,7 @@ pub enum VoteInstruction { Vote(Vec), } -fn initialize_account(vote_pubkey: &Pubkey, node_pubkey: &Pubkey, commission: u32) -> Instruction { +fn initialize_account(vote_pubkey: &Pubkey, node_pubkey: &Pubkey, commission: u8) -> Instruction { let account_metas = vec![AccountMeta::new(*vote_pubkey, false)]; Instruction::new( id(), @@ -39,7 +39,7 @@ pub fn create_account( from_pubkey: &Pubkey, vote_pubkey: &Pubkey, node_pubkey: &Pubkey, - commission: u32, + commission: u8, lamports: u64, ) -> Vec { let space = VoteState::size_of() as u64; diff --git a/programs/vote_api/src/vote_state.rs b/programs/vote_api/src/vote_state.rs index a47dc1b96..76333e6eb 100644 --- a/programs/vote_api/src/vote_state.rs +++ b/programs/vote_api/src/vote_state.rs @@ -69,9 +69,9 @@ pub struct VoteState { pub votes: VecDeque, pub node_pubkey: Pubkey, pub authorized_voter_pubkey: Pubkey, - /// fraction of std::u32::MAX that represents what part of a rewards + /// fraction of std::u8::MAX that represents what part of a rewards /// payout should be given to this VoteAccount - pub commission: u32, + pub commission: u8, pub root_slot: Option, /// current epoch @@ -88,7 +88,7 @@ pub struct VoteState { } impl VoteState { - pub fn new(vote_pubkey: &Pubkey, node_pubkey: &Pubkey, commission: u32) -> Self { + pub fn new(vote_pubkey: &Pubkey, node_pubkey: &Pubkey, commission: u8) -> Self { Self { node_pubkey: *node_pubkey, authorized_voter_pubkey: *vote_pubkey, @@ -140,9 +140,9 @@ impl VoteState { pub fn commission_split(&self, on: f64) -> (f64, f64, bool) { match self.commission { 0 => (0.0, on, false), - std::u32::MAX => (on, 0.0, false), + std::u8::MAX => (on, 0.0, false), split => { - let mine = on * f64::from(split) / f64::from(std::u32::MAX); + let mine = on * f64::from(split) / f64::from(std::u8::MAX); (mine, on - mine, true) } } @@ -306,7 +306,7 @@ pub fn authorize_voter( pub fn initialize_account( vote_account: &mut KeyedAccount, node_pubkey: &Pubkey, - commission: u32, + commission: u8, ) -> Result<(), InstructionError> { let vote_state: VoteState = vote_account.state()?; @@ -351,7 +351,7 @@ pub fn process_votes( pub fn create_account( vote_pubkey: &Pubkey, node_pubkey: &Pubkey, - commission: u32, + commission: u8, lamports: u64, ) -> Account { let mut vote_account = Account::new(lamports, VoteState::size_of(), &id()); @@ -367,7 +367,7 @@ pub fn create_account( pub fn create_bootstrap_leader_account( vote_pubkey: &Pubkey, node_pubkey: &Pubkey, - commission: u32, + commission: u8, vote_lamports: u64, ) -> (Account, VoteState) { // Construct a vote account for the bootstrap_leader such that the leader_scheduler @@ -799,10 +799,10 @@ mod tests { assert_eq!(vote_state.commission_split(1.0), (0.0, 1.0, false)); - let vote_state = VoteState::new(&Pubkey::default(), &Pubkey::default(), std::u32::MAX); + let vote_state = VoteState::new(&Pubkey::default(), &Pubkey::default(), std::u8::MAX); assert_eq!(vote_state.commission_split(1.0), (1.0, 0.0, false)); - let vote_state = VoteState::new(&Pubkey::default(), &Pubkey::default(), std::u32::MAX / 2); + let vote_state = VoteState::new(&Pubkey::default(), &Pubkey::default(), std::u8::MAX / 2); let (voter_portion, staker_portion, was_split) = vote_state.commission_split(10.0); assert_eq!( diff --git a/wallet/src/wallet.rs b/wallet/src/wallet.rs index 5797208f9..cf7cbceb5 100644 --- a/wallet/src/wallet.rs +++ b/wallet/src/wallet.rs @@ -48,7 +48,7 @@ pub enum WalletCommand { Cancel(Pubkey), Confirm(Signature), AuthorizeVoter(Pubkey, Keypair, Pubkey), - CreateVoteAccount(Pubkey, Pubkey, u32, u64), + CreateVoteAccount(Pubkey, Pubkey, u8, u64), ShowVoteAccount(Pubkey), CreateStakeAccount(Pubkey, u64), DelegateStake(Keypair, Pubkey, u64), @@ -466,7 +466,7 @@ fn process_create_vote_account( config: &WalletConfig, voting_account_pubkey: &Pubkey, node_pubkey: &Pubkey, - commission: u32, + commission: u8, lamports: u64, ) -> ProcessResult { let ixs = vote_instruction::create_account( @@ -1378,7 +1378,7 @@ pub fn app<'ab, 'v>(name: &str, about: &'ab str, version: &'v str) -> App<'ab, ' .long("commission") .value_name("NUM") .takes_value(true) - .help("The commission taken on reward redemption, default: 0"), + .help("The commission taken on reward redemption (0-255), default: 0"), ), ) .subcommand(