[][src]Struct solana_runtime::bank::Bank

pub struct Bank { /* fields omitted */ }

Manager for the state of all accounts and programs after processing its entries.

Methods

impl Bank[src]

pub fn new(genesis_block: &GenesisBlock) -> Self[src]

pub fn new_with_paths(
    genesis_block: &GenesisBlock,
    paths: Option<String>
) -> Self
[src]

pub fn new_from_parent(
    parent: &Arc<Bank>,
    collector_id: &Pubkey,
    slot: u64
) -> Self
[src]

Create a new bank that points to an immutable checkpoint of another bank.

pub fn collector_id(&self) -> Pubkey[src]

pub fn slot(&self) -> u64[src]

pub fn hash(&self) -> Hash[src]

pub fn is_frozen(&self) -> bool[src]

pub fn freeze(&self)[src]

pub fn squash(&self)[src]

squash the parent's state up into this Bank, this Bank becomes a root

pub fn parent(&self) -> Option<Arc<Bank>>[src]

Return the more recent checkpoint of this bank instance.

pub fn add_native_program(&self, name: &str, program_id: &Pubkey)[src]

pub fn last_blockhash(&self) -> Hash[src]

Return the last block hash registered.

pub fn clear_signatures(&self)[src]

Forget all signatures. Useful for benchmarking.

pub fn get_confirmation_timestamp(
    &self,
    slots_and_stakes: Vec<(u64, u64)>,
    supermajority_stake: u64
) -> Option<u64>
[src]

Looks through a list of tick heights and stakes, and finds the latest tick that has achieved confirmation

pub fn register_tick(&self, hash: &Hash)[src]

Tell the bank which Entry IDs exist on the ledger. This function assumes subsequent calls correspond to later entries, and will boot the oldest ones once its internal cache is full. Once boot, the bank will reject transactions using that hash.

pub fn process_transaction(&self, tx: &Transaction) -> Result<()>[src]

Process a Transaction. This is used for unit tests and simply calls the vector Bank::process_transactions method.

pub fn lock_accounts(&self, txs: &[Transaction]) -> Vec<Result<()>>[src]

pub fn unlock_accounts(&self, txs: &[Transaction], results: &[Result<()>])[src]

pub fn load_and_execute_transactions(
    &self,
    txs: &[Transaction],
    lock_results: Vec<Result<()>>,
    max_age: usize
) -> (Vec<Result<(Vec<Account>, Vec<Vec<(Pubkey, Account)>>)>>, Vec<Result<()>>)
[src]

pub fn commit_transactions(
    &self,
    txs: &[Transaction],
    loaded_accounts: &[Result<(Vec<Account>, Vec<Vec<(Pubkey, Account)>>)>],
    executed: &[Result<()>]
) -> Vec<Result<()>>
[src]

#[must_use]
pub fn load_execute_and_commit_transactions(
    &self,
    txs: &[Transaction],
    lock_results: Vec<Result<()>>,
    max_age: usize
) -> Vec<Result<()>>
[src]

Process a batch of transactions.

#[must_use]
pub fn process_transactions(&self, txs: &[Transaction]) -> Vec<Result<()>>
[src]

pub fn transfer(
    &self,
    n: u64,
    keypair: &Keypair,
    to: &Pubkey,
    blockhash: Hash
) -> Result<Signature>
[src]

Create, sign, and process a Transaction from keypair to to of n lamports where blockhash is the last Entry ID observed by the client.

pub fn read_balance(account: &Account) -> u64[src]

pub fn get_balance(&self, pubkey: &Pubkey) -> u64[src]

Each program would need to be able to introspect its own state this is hard-coded to the Budget language

pub fn parents(&self) -> Vec<Arc<Bank>>[src]

Compute all the parents of the bank in order

pub fn withdraw(&self, pubkey: &Pubkey, lamports: u64) -> Result<()>[src]

pub fn deposit(&self, pubkey: &Pubkey, lamports: u64)[src]

pub fn get_account(&self, pubkey: &Pubkey) -> Option<Account>[src]

pub fn get_program_accounts_modified_since_parent(
    &self,
    program_id: &Pubkey
) -> Vec<(Pubkey, Account)>
[src]

pub fn get_account_modified_since_parent(
    &self,
    pubkey: &Pubkey
) -> Option<Account>
[src]

pub fn transaction_count(&self) -> u64[src]

pub fn get_signature_status(&self, signature: &Signature) -> Option<Result<()>>[src]

pub fn has_signature(&self, signature: &Signature) -> bool[src]

pub fn ticks_per_slot(&self) -> u64[src]

Return the number of ticks per slot

pub fn tick_height(&self) -> u64[src]

Return the number of ticks since genesis.

pub fn get_slots_in_epoch(&self, epoch: u64) -> u64[src]

Return the number of slots per epoch for the given epoch

pub fn get_stakers_epoch(&self, slot: u64) -> u64[src]

returns the epoch for which this bank's stakers_slot_offset and slot would need to cache stakers

pub fn vote_accounts(&self) -> impl Iterator<Item = (Pubkey, Account)>[src]

current vote accounts for this bank

pub fn epoch_vote_accounts(
    &self,
    epoch: u64
) -> Option<&HashMap<Pubkey, Account>>
[src]

vote accounts for the specific epoch

pub fn get_epoch_and_slot_index(&self, slot: u64) -> (u64, u64)[src]

given a slot, return the epoch and offset into the epoch this slot falls e.g. with a fixed number for slots_per_epoch, the calculation is simply:

( slot/slots_per_epoch, slot % slots_per_epoch )

Trait Implementations

impl Default for Bank[src]

Auto Trait Implementations

impl Send for Bank

impl Sync for Bank

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Typeable for T where
    T: Any

fn get_type(&self) -> TypeId

Get the TypeId of this object.

impl<T> Same for T

type Output = T

Should always be Self

impl<T> Erased for T