Add vote instructions that directly update on chain vote state (#21531)
* Add vote state instructions UpdateVoteState and UpdateVoteStateSwitch * cargo tree * extract vote state version conversion to common fn
This commit is contained in:
@@ -70,6 +70,45 @@ pub fn parse_vote(
|
||||
}),
|
||||
})
|
||||
}
|
||||
VoteInstruction::UpdateVoteState(vote_state_update) => {
|
||||
check_num_vote_accounts(&instruction.accounts, 4)?;
|
||||
let vote_state_update = json!({
|
||||
"lockouts": vote_state_update.lockouts,
|
||||
"root": vote_state_update.root,
|
||||
"hash": vote_state_update.hash.to_string(),
|
||||
"timestamp": vote_state_update.timestamp,
|
||||
});
|
||||
Ok(ParsedInstructionEnum {
|
||||
instruction_type: "updatevotestate".to_string(),
|
||||
info: json!({
|
||||
"voteAccount": account_keys[instruction.accounts[0] as usize].to_string(),
|
||||
"slotHashesSysvar": account_keys[instruction.accounts[1] as usize].to_string(),
|
||||
"clockSysvar": account_keys[instruction.accounts[2] as usize].to_string(),
|
||||
"voteAuthority": account_keys[instruction.accounts[3] as usize].to_string(),
|
||||
"voteStateUpdate": vote_state_update,
|
||||
}),
|
||||
})
|
||||
}
|
||||
VoteInstruction::UpdateVoteStateSwitch(vote_state_update, hash) => {
|
||||
check_num_vote_accounts(&instruction.accounts, 4)?;
|
||||
let vote_state_update = json!({
|
||||
"lockouts": vote_state_update.lockouts,
|
||||
"root": vote_state_update.root,
|
||||
"hash": vote_state_update.hash.to_string(),
|
||||
"timestamp": vote_state_update.timestamp,
|
||||
});
|
||||
Ok(ParsedInstructionEnum {
|
||||
instruction_type: "updatevotestateswitch".to_string(),
|
||||
info: json!({
|
||||
"voteAccount": account_keys[instruction.accounts[0] as usize].to_string(),
|
||||
"slotHashesSysvar": account_keys[instruction.accounts[1] as usize].to_string(),
|
||||
"clockSysvar": account_keys[instruction.accounts[2] as usize].to_string(),
|
||||
"voteAuthority": account_keys[instruction.accounts[3] as usize].to_string(),
|
||||
"voteStateUpdate": vote_state_update,
|
||||
"hash": hash.to_string(),
|
||||
}),
|
||||
})
|
||||
}
|
||||
VoteInstruction::Withdraw(lamports) => {
|
||||
check_num_vote_accounts(&instruction.accounts, 3)?;
|
||||
Ok(ParsedInstructionEnum {
|
||||
|
Reference in New Issue
Block a user