From c6d7cd2d3358b64edeef41ac93fd43fc15674b4c Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Wed, 26 Sep 2018 17:33:18 -0600 Subject: [PATCH] Move Account into its own module Also use default Default generator, since system program ID is [0; 32]. Bank should probably be the one to set this anyway. --- programs/move_funds/src/lib.rs | 2 +- src/account.rs | 23 +++++++++++++++++++++++ src/bank.rs | 31 +------------------------------ src/budget_program.rs | 4 ++-- src/dynamic_program.rs | 4 ++-- src/lib.rs | 1 + src/request.rs | 2 +- src/rpc.rs | 3 ++- src/storage_program.rs | 2 +- src/system_program.rs | 4 ++-- src/thin_client.rs | 3 ++- src/tictactoe_program.rs | 2 +- 12 files changed, 39 insertions(+), 42 deletions(-) create mode 100644 src/account.rs diff --git a/programs/move_funds/src/lib.rs b/programs/move_funds/src/lib.rs index 6efcd3c85e..9735de52c5 100644 --- a/programs/move_funds/src/lib.rs +++ b/programs/move_funds/src/lib.rs @@ -22,7 +22,7 @@ pub extern "C" fn process(infos: &mut Vec, data: &[u8]) { mod tests { use super::*; use bincode::serialize; - use solana::bank::Account; + use solana::account::Account; use solana::signature::Pubkey; #[test] diff --git a/src/account.rs b/src/account.rs new file mode 100644 index 0000000000..3c46dda017 --- /dev/null +++ b/src/account.rs @@ -0,0 +1,23 @@ +use signature::Pubkey; + +/// An Account with userdata that is stored on chain +#[derive(Serialize, Deserialize, Debug, Clone, Default)] +pub struct Account { + /// tokens in the account + pub tokens: i64, + /// user data + /// A transaction can write to its userdata + pub userdata: Vec, + /// contract id this contract belongs to + pub program_id: Pubkey, +} + +impl Account { + pub fn new(tokens: i64, space: usize, program_id: Pubkey) -> Account { + Account { + tokens, + userdata: vec![0u8; space], + program_id, + } + } +} diff --git a/src/bank.rs b/src/bank.rs index 8c174bff00..760c7002f3 100644 --- a/src/bank.rs +++ b/src/bank.rs @@ -3,6 +3,7 @@ //! on behalf of the caller, and a low-level API for when they have //! already been signed and verified. +use account::Account; use bincode::deserialize; use bincode::serialize; use budget_program::BudgetState; @@ -31,36 +32,6 @@ use timing::{duration_as_us, timestamp}; use transaction::Transaction; use window::WINDOW_SIZE; -/// An Account with userdata that is stored on chain -#[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Account { - /// tokens in the account - pub tokens: i64, - /// user data - /// A transaction can write to its userdata - pub userdata: Vec, - /// contract id this contract belongs to - pub program_id: Pubkey, -} -impl Account { - pub fn new(tokens: i64, space: usize, program_id: Pubkey) -> Account { - Account { - tokens, - userdata: vec![0u8; space], - program_id, - } - } -} - -impl Default for Account { - fn default() -> Self { - Account { - tokens: 0, - userdata: vec![], - program_id: SystemProgram::id(), - } - } -} /// The number of most recent `last_id` values that the bank will track the signatures /// of. Once the bank discards a `last_id`, it will reject any transactions that use /// that `last_id` in a transaction. Lowering this value reduces memory consumption, diff --git a/src/budget_program.rs b/src/budget_program.rs index 37083bc545..68780e84be 100644 --- a/src/budget_program.rs +++ b/src/budget_program.rs @@ -1,5 +1,5 @@ //! budget program -use bank::Account; +use account::Account; use bincode::{self, deserialize, serialize_into, serialized_size}; use budget::Budget; use budget_instruction::Instruction; @@ -265,7 +265,7 @@ impl BudgetState { } #[cfg(test)] mod test { - use bank::Account; + use account::Account; use bincode::serialize; use budget_program::{BudgetError, BudgetState}; use budget_transaction::BudgetTransaction; diff --git a/src/dynamic_program.rs b/src/dynamic_program.rs index c226bce013..13b33b7291 100644 --- a/src/dynamic_program.rs +++ b/src/dynamic_program.rs @@ -1,7 +1,7 @@ extern crate bincode; extern crate generic_array; -use bank::Account; +use account::Account; use libc; use libloading; use signature::Pubkey; @@ -105,7 +105,7 @@ impl DynamicProgram { #[cfg(test)] mod tests { use super::*; - use bank::Account; + use account::Account; use bincode::serialize; use signature::Pubkey; use std::path::Path; diff --git a/src/lib.rs b/src/lib.rs index b2f4265c81..9ed3bcb6b9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,6 +9,7 @@ #![cfg_attr(feature = "unstable", feature(test))] #[macro_use] pub mod counter; +pub mod account; pub mod bank; pub mod banking_stage; pub mod blob_fetch_stage; diff --git a/src/request.rs b/src/request.rs index a4c7c21949..b168249637 100644 --- a/src/request.rs +++ b/src/request.rs @@ -1,6 +1,6 @@ //! The `request` module defines the messages for the thin client. -use bank::Account; +use account::Account; use hash::Hash; use signature::{Pubkey, Signature}; diff --git a/src/rpc.rs b/src/rpc.rs index ca12321ad1..bb913f4824 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -1,6 +1,7 @@ //! The `rpc` module implements the Solana RPC interface. -use bank::{Account, Bank, BankError}; +use account::Account; +use bank::{Bank, BankError}; use bincode::deserialize; use bs58; use jsonrpc_core::*; diff --git a/src/storage_program.rs b/src/storage_program.rs index 9636f070f9..50c92386ba 100644 --- a/src/storage_program.rs +++ b/src/storage_program.rs @@ -2,7 +2,7 @@ //! Receive mining proofs from miners, validate the answers //! and give reward for good proofs. -use bank::Account; +use account::Account; use bincode::deserialize; use signature::Pubkey; use transaction::Transaction; diff --git a/src/system_program.rs b/src/system_program.rs index 21922fb23d..f3af5b9bbc 100644 --- a/src/system_program.rs +++ b/src/system_program.rs @@ -1,6 +1,6 @@ //! system program -use bank::Account; +use account::Account; use bincode::deserialize; use dynamic_program::DynamicProgram; use signature::Pubkey; @@ -97,7 +97,7 @@ impl SystemProgram { } #[cfg(test)] mod test { - use bank::Account; + use account::Account; use bincode::serialize; use dynamic_program::KeyedAccount; use hash::Hash; diff --git a/src/thin_client.rs b/src/thin_client.rs index be432236c4..6fc62ea7d2 100644 --- a/src/thin_client.rs +++ b/src/thin_client.rs @@ -3,7 +3,8 @@ //! messages to the network directly. The binary encoding of its messages are //! unstable and may change in future releases. -use bank::{Account, Bank}; +use account::Account; +use bank::Bank; use bincode::{deserialize, serialize}; use crdt::{Crdt, CrdtError, NodeInfo}; use hash::Hash; diff --git a/src/tictactoe_program.rs b/src/tictactoe_program.rs index 999de85517..713a330e4e 100644 --- a/src/tictactoe_program.rs +++ b/src/tictactoe_program.rs @@ -1,6 +1,6 @@ //! tic-tac-toe program -use bank::Account; +use account::Account; use serde_cbor; use signature::Pubkey; use std;