pub trait VMExecution:
Send
+ Sync
+ 'static {
Show 25 methods
// Required methods
fn create_state_transition<I: Iterator<Item = Transaction>>(
&self,
transition_data: &StateTransitionData,
mempool_txs: I,
) -> Result<(Vec<SpentTransaction>, Vec<Transaction>, StateTransitionResult), StateTransitionError>;
fn verify_state_transition(
&self,
prev_state: [u8; 32],
blk: &Block,
cert_voters: &[Voter],
) -> Result<(), StateTransitionError>;
fn accept_state_transition(
&self,
prev_state: [u8; 32],
blk: &Block,
cert_voters: &[Voter],
) -> Result<(Vec<SpentTransaction>, Vec<ContractTxEvent>), StateTransitionError>;
fn finalize_state(
&self,
commit: [u8; 32],
to_merge: Vec<[u8; 32]>,
) -> Result<()>;
fn preverify(&self, tx: &Transaction) -> Result<PreverificationResult>;
fn get_provisioners(&self, base_commit: [u8; 32]) -> Result<Provisioners>;
fn get_changed_provisioners(
&self,
base_commit: [u8; 32],
) -> Result<Vec<(PublicKey, Option<Stake>)>>;
fn get_provisioner(&self, pk: &BlsPublicKey) -> Result<Option<Stake>>;
fn get_state_root(&self) -> Result<[u8; 32]>;
fn move_to_commit(&self, commit: [u8; 32]) -> Result<()>;
fn get_finalized_state_root(&self) -> Result<[u8; 32]>;
fn get_block_gas_limit(&self) -> u64;
fn revert(&self, state_hash: [u8; 32]) -> Result<[u8; 32]>;
fn revert_to_finalized(&self) -> Result<[u8; 32]>;
fn gas_per_deploy_byte(&self) -> u64;
fn min_deployment_gas_price(&self) -> u64;
fn min_gas_limit(&self) -> u64;
fn min_deploy_points(&self) -> u64;
fn gas_per_blob(&self) -> u64;
fn blob_active(&self, block_height: u64) -> bool;
fn wasm64_disabled(&self, block_height: u64) -> bool;
fn wasm32_disabled(&self, block_height: u64) -> bool;
fn third_party_disabled(&self, block_height: u64) -> bool;
fn shade_3rd_party(&self, contract_id: ContractId) -> Result<()>;
fn enable_3rd_party(&self, contract_id: ContractId) -> Result<()>;
}Required Methods§
fn create_state_transition<I: Iterator<Item = Transaction>>( &self, transition_data: &StateTransitionData, mempool_txs: I, ) -> Result<(Vec<SpentTransaction>, Vec<Transaction>, StateTransitionResult), StateTransitionError>
fn verify_state_transition( &self, prev_state: [u8; 32], blk: &Block, cert_voters: &[Voter], ) -> Result<(), StateTransitionError>
fn accept_state_transition( &self, prev_state: [u8; 32], blk: &Block, cert_voters: &[Voter], ) -> Result<(Vec<SpentTransaction>, Vec<ContractTxEvent>), StateTransitionError>
fn finalize_state( &self, commit: [u8; 32], to_merge: Vec<[u8; 32]>, ) -> Result<()>
fn preverify(&self, tx: &Transaction) -> Result<PreverificationResult>
fn get_provisioners(&self, base_commit: [u8; 32]) -> Result<Provisioners>
fn get_changed_provisioners( &self, base_commit: [u8; 32], ) -> Result<Vec<(PublicKey, Option<Stake>)>>
fn get_provisioner(&self, pk: &BlsPublicKey) -> Result<Option<Stake>>
fn get_state_root(&self) -> Result<[u8; 32]>
fn move_to_commit(&self, commit: [u8; 32]) -> Result<()>
Sourcefn get_finalized_state_root(&self) -> Result<[u8; 32]>
fn get_finalized_state_root(&self) -> Result<[u8; 32]>
Returns last finalized state root
Sourcefn get_block_gas_limit(&self) -> u64
fn get_block_gas_limit(&self) -> u64
Returns block gas limit
fn revert(&self, state_hash: [u8; 32]) -> Result<[u8; 32]>
fn revert_to_finalized(&self) -> Result<[u8; 32]>
fn gas_per_deploy_byte(&self) -> u64
fn min_deployment_gas_price(&self) -> u64
fn min_gas_limit(&self) -> u64
fn min_deploy_points(&self) -> u64
fn gas_per_blob(&self) -> u64
fn blob_active(&self, block_height: u64) -> bool
fn wasm64_disabled(&self, block_height: u64) -> bool
fn wasm32_disabled(&self, block_height: u64) -> bool
fn third_party_disabled(&self, block_height: u64) -> bool
fn shade_3rd_party(&self, contract_id: ContractId) -> Result<()>
fn enable_3rd_party(&self, contract_id: ContractId) -> Result<()>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.