Split rewards_program.rs
This commit is contained in:
@ -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_(
|
||||||
|
@ -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 }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
@ -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)],
|
||||||
)
|
)
|
||||||
|
@ -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
|
|
||||||
}
|
|
13
programs/native/rewards_api/src/rewards_state.rs
Normal file
13
programs/native/rewards_api/src/rewards_state.rs
Normal 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
|
||||||
|
}
|
||||||
|
}
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user