Record vote account commission with voting/staking rewards and surface in RPC

This commit is contained in:
Michael Vines
2021-07-10 23:18:42 -07:00
parent e322bc90cc
commit 4098af3b5b
17 changed files with 90 additions and 26 deletions

View File

@ -88,6 +88,7 @@ message Reward {
int64 lamports = 2;
uint64 post_balance = 3;
RewardType reward_type = 4;
string commission = 5;
}
message Rewards {

View File

@ -89,6 +89,7 @@ impl From<Reward> for generated::Reward {
Some(RewardType::Staking) => generated::RewardType::Staking,
Some(RewardType::Voting) => generated::RewardType::Voting,
} as i32,
commission: reward.commission.map(|c| c.to_string()).unwrap_or_default(),
}
}
}
@ -107,6 +108,7 @@ impl From<generated::Reward> for Reward {
4 => Some(RewardType::Voting),
_ => None,
},
commission: reward.commission.parse::<u8>().ok(),
}
}
}
@ -841,6 +843,7 @@ mod test {
lamports: 123,
post_balance: 321,
reward_type: None,
commission: None,
};
let gen_reward: generated::Reward = reward.clone().into();
assert_eq!(reward, gen_reward.into());

View File

@ -23,6 +23,8 @@ pub struct StoredExtendedReward {
post_balance: u64,
#[serde(deserialize_with = "default_on_eof")]
reward_type: Option<RewardType>,
#[serde(deserialize_with = "default_on_eof")]
commission: Option<u8>,
}
impl From<StoredExtendedReward> for Reward {
@ -32,12 +34,14 @@ impl From<StoredExtendedReward> for Reward {
lamports,
post_balance,
reward_type,
commission,
} = value;
Self {
pubkey,
lamports,
post_balance,
reward_type,
commission,
}
}
}
@ -49,13 +53,14 @@ impl From<Reward> for StoredExtendedReward {
lamports,
post_balance,
reward_type,
..
commission,
} = value;
Self {
pubkey,
lamports,
post_balance,
reward_type,
commission,
}
}
}