Split rewards_program.rs

This commit is contained in:
Greg Fitzgerald
2019-03-02 08:10:27 -07:00
parent d32f5b6cca
commit 7b849b042c
7 changed files with 41 additions and 36 deletions

View File

@ -83,14 +83,15 @@ fn entrypoint(
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use solana_rewards_api::rewards_program; use solana_rewards_api;
use solana_rewards_api::rewards_state::RewardsState;
use solana_sdk::account::Account; use solana_sdk::account::Account;
use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::vote_program::{self, Vote}; use solana_sdk::vote_program::{self, Vote};
fn create_rewards_account(tokens: u64) -> Account { fn create_rewards_account(tokens: u64) -> Account {
let space = rewards_program::get_max_size(); let space = RewardsState::max_size();
Account::new(tokens, space, rewards_program::id()) Account::new(tokens, space, solana_rewards_api::id())
} }
fn redeem_vote_credits_( fn redeem_vote_credits_(

View File

@ -1,4 +1,4 @@
use solana_rewards_api::rewards_program; use solana_rewards_api;
use solana_rewards_api::rewards_transaction::RewardsTransaction; use solana_rewards_api::rewards_transaction::RewardsTransaction;
use solana_runtime::bank::{Bank, Result}; use solana_runtime::bank::{Bank, Result};
use solana_sdk::genesis_block::GenesisBlock; use solana_sdk::genesis_block::GenesisBlock;
@ -14,7 +14,7 @@ struct RewardsBank<'a> {
impl<'a> RewardsBank<'a> { impl<'a> RewardsBank<'a> {
fn new(bank: &'a Bank) -> Self { fn new(bank: &'a Bank) -> Self {
bank.add_native_program("solana_rewards_program", &rewards_program::id()); bank.add_native_program("solana_rewards_program", &solana_rewards_api::id());
Self { bank } Self { bank }
} }

View File

@ -1,3 +1,18 @@
pub mod rewards_instruction; pub mod rewards_instruction;
pub mod rewards_program; pub mod rewards_state;
pub mod rewards_transaction; pub mod rewards_transaction;
use solana_sdk::pubkey::Pubkey;
pub const REWARDS_PROGRAM_ID: [u8; 32] = [
133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
];
pub fn check_id(program_id: &Pubkey) -> bool {
program_id.as_ref() == REWARDS_PROGRAM_ID
}
pub fn id() -> Pubkey {
Pubkey::new(&REWARDS_PROGRAM_ID)
}

View File

@ -1,4 +1,4 @@
use crate::rewards_program; use crate::id;
use serde_derive::{Deserialize, Serialize}; use serde_derive::{Deserialize, Serialize};
use solana_sdk::pubkey::Pubkey; use solana_sdk::pubkey::Pubkey;
use solana_sdk::transaction_builder::BuilderInstruction; use solana_sdk::transaction_builder::BuilderInstruction;
@ -11,7 +11,7 @@ pub enum RewardsInstruction {
impl RewardsInstruction { impl RewardsInstruction {
pub fn new_redeem_vote_credits(vote_id: Pubkey, rewards_id: Pubkey) -> BuilderInstruction { pub fn new_redeem_vote_credits(vote_id: Pubkey, rewards_id: Pubkey) -> BuilderInstruction {
BuilderInstruction::new( BuilderInstruction::new(
rewards_program::id(), id(),
&RewardsInstruction::RedeemVoteCredits, &RewardsInstruction::RedeemVoteCredits,
vec![(vote_id, true), (rewards_id, false)], vec![(vote_id, true), (rewards_id, false)],
) )

View File

@ -1,25 +0,0 @@
use bincode::serialized_size;
use serde_derive::{Deserialize, Serialize};
use solana_sdk::pubkey::Pubkey;
pub const REWARDS_PROGRAM_ID: [u8; 32] = [
133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
];
pub fn check_id(program_id: &Pubkey) -> bool {
program_id.as_ref() == REWARDS_PROGRAM_ID
}
pub fn id() -> Pubkey {
Pubkey::new(&REWARDS_PROGRAM_ID)
}
#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq)]
struct RewardsState {}
/// Upper limit on the size of the Rewards State.
pub fn get_max_size() -> usize {
let rewards_state = RewardsState::default();
serialized_size(&rewards_state).unwrap() as usize
}

View File

@ -0,0 +1,13 @@
use bincode::serialized_size;
use serde_derive::{Deserialize, Serialize};
#[derive(Debug, Default, Serialize, Deserialize, PartialEq, Eq)]
pub struct RewardsState {}
impl RewardsState {
/// Upper limit on the serialized size of RewardsState.
pub fn max_size() -> usize {
let rewards_state = RewardsState::default();
serialized_size(&rewards_state).unwrap() as usize
}
}

View File

@ -1,8 +1,9 @@
//! The `rewards_transaction` module provides functionality for creating a global //! The `rewards_transaction` module provides functionality for creating a global
//! rewards account and enabling stakers to redeem credits from their vote accounts. //! rewards account and enabling stakers to redeem credits from their vote accounts.
use crate::id;
use crate::rewards_instruction::RewardsInstruction; use crate::rewards_instruction::RewardsInstruction;
use crate::rewards_program; use crate::rewards_state::RewardsState;
use solana_sdk::hash::Hash; use solana_sdk::hash::Hash;
use solana_sdk::pubkey::Pubkey; use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::signature::{Keypair, KeypairUtil};
@ -26,8 +27,8 @@ impl RewardsTransaction {
rewards_id, rewards_id,
last_id, last_id,
num_tokens, num_tokens,
rewards_program::get_max_size() as u64, RewardsState::max_size() as u64,
rewards_program::id(), id(),
fee, fee,
) )
} }