Add token_program.rs to sdk/

This commit is contained in:
Michael Vines 2018-12-03 22:30:52 -08:00
parent e6fa74fe69
commit a594f56c02
4 changed files with 18 additions and 15 deletions

View File

@ -10,6 +10,7 @@ pub mod signature;
pub mod system_instruction; pub mod system_instruction;
pub mod system_program; pub mod system_program;
pub mod timing; pub mod timing;
pub mod token_program;
pub mod transaction; pub mod transaction;
extern crate bincode; extern crate bincode;

11
sdk/src/token_program.rs Normal file
View File

@ -0,0 +1,11 @@
//! An ERC20-like Token
use pubkey::Pubkey;
const TOKEN_PROGRAM_ID: [u8; 32] = [
131, 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 id() -> Pubkey {
Pubkey::new(&TOKEN_PROGRAM_ID)
}

View File

@ -31,6 +31,7 @@ use solana_sdk::signature::Signature;
use solana_sdk::system_instruction::SystemInstruction; use solana_sdk::system_instruction::SystemInstruction;
use solana_sdk::system_program; use solana_sdk::system_program;
use solana_sdk::timing::{duration_as_us, timestamp}; use solana_sdk::timing::{duration_as_us, timestamp};
use solana_sdk::token_program;
use solana_sdk::transaction::Transaction; use solana_sdk::transaction::Transaction;
use std; use std;
use std::collections::{BTreeMap, HashMap, HashSet, VecDeque}; use std::collections::{BTreeMap, HashMap, HashSet, VecDeque};
@ -428,13 +429,13 @@ impl Bank {
// Erc20 token program // Erc20 token program
let erc20_account = Account { let erc20_account = Account {
tokens: 1, tokens: 1,
owner: runtime::erc20_id(), owner: token_program::id(),
userdata: b"solana_erc20".to_vec(), userdata: b"solana_erc20".to_vec(),
executable: true, executable: true,
loader: native_loader::id(), loader: native_loader::id(),
}; };
accounts.store(&runtime::erc20_id(), &erc20_account); accounts.store(&token_program::id(), &erc20_account);
} }
/// Return the last entry ID registered. /// Return the last entry ID registered.
@ -2158,7 +2159,7 @@ mod tests {
130, 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, 130, 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, 0, 0, 0, 0,
]); ]);
let erc20 = Pubkey::new(&[ let token = Pubkey::new(&[
131, 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, 131, 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, 0, 0, 0, 0,
]); ]);
@ -2172,7 +2173,7 @@ mod tests {
assert_eq!(bpf_loader::id(), bpf); assert_eq!(bpf_loader::id(), bpf);
assert_eq!(budget_program::id(), budget); assert_eq!(budget_program::id(), budget);
assert_eq!(storage_program::id(), storage); assert_eq!(storage_program::id(), storage);
assert_eq!(runtime::erc20_id(), erc20); assert_eq!(token_program::id(), token);
assert_eq!(vote_program::id(), vote); assert_eq!(vote_program::id(), vote);
} }
@ -2185,7 +2186,7 @@ mod tests {
bpf_loader::id(), bpf_loader::id(),
budget_program::id(), budget_program::id(),
storage_program::id(), storage_program::id(),
runtime::erc20_id(), token_program::id(),
vote_program::id(), vote_program::id(),
]; ];
assert!(ids.into_iter().all(move |id| unique.insert(id))); assert!(ids.into_iter().all(move |id| unique.insert(id)));

View File

@ -21,16 +21,6 @@ pub fn is_legacy_program(program_id: &Pubkey) -> bool {
|| vote_program::check_id(program_id) || vote_program::check_id(program_id)
} }
// TODO: Rename and find a better home for this in the sdk/
pub fn erc20_id() -> Pubkey {
const ERC20_PROGRAM_ID: [u8; 32] = [
131, 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,
];
Pubkey::new(&ERC20_PROGRAM_ID)
}
/// Process an instruction /// Process an instruction
/// This method calls the instruction's program entrypoint method /// This method calls the instruction's program entrypoint method
fn process_instruction( fn process_instruction(