ckb_testtool::context

Struct Context

Source
pub struct Context {
    pub cells: HashMap<OutPoint, (CellOutput, Bytes)>,
    pub transaction_infos: HashMap<OutPoint, TransactionInfo>,
    pub headers: HashMap<Byte32, HeaderView>,
    pub epoches: HashMap<Byte32, EpochExt>,
    pub block_extensions: HashMap<Byte32, Bytes>,
    pub cells_by_data_hash: HashMap<Byte32, OutPoint>,
    pub cells_by_type_hash: HashMap<Byte32, OutPoint>,
    /* private fields */
}
Expand description

Verification Context

Fields§

§cells: HashMap<OutPoint, (CellOutput, Bytes)>§transaction_infos: HashMap<OutPoint, TransactionInfo>§headers: HashMap<Byte32, HeaderView>§epoches: HashMap<Byte32, EpochExt>§block_extensions: HashMap<Byte32, Bytes>§cells_by_data_hash: HashMap<Byte32, OutPoint>§cells_by_type_hash: HashMap<Byte32, OutPoint>

Implementations§

Source§

impl Context

Source

pub fn new_with_deterministic_rng() -> Self

Create a new context with a deterministic random number generator, which can be used to generate deterministic out point of deployed contract

Source

pub fn add_contract_dir(&mut self, path: &str)

Source

pub fn deploy_contract(&mut self, data: Bytes) -> OutPoint

👎Deprecated since 0.1.1: Please use the deploy_cell function instead
Source

pub fn deploy_cell(&mut self, data: Bytes) -> OutPoint

Deploy a cell return the out-point of the cell

Source

pub fn deploy_cell_by_name(&mut self, filename: &str) -> OutPoint

Source

pub fn insert_header(&mut self, header: HeaderView)

Insert a block header into context

Link a cell with a block to make the load_header_by_cell syscalls works

Source

pub fn get_contract_out_point(&self, data_hash: &Byte32) -> Option<OutPoint>

👎Deprecated since 0.1.1: Please use the get_cell_by_data_hash function instead
Source

pub fn get_cell_by_data_hash(&self, data_hash: &Byte32) -> Option<OutPoint>

Get the out-point of a cell by data_hash the cell must has deployed to this context

Source

pub fn create_cell(&mut self, cell: CellOutput, data: Bytes) -> OutPoint

Create a cell with data return the out-point

Source

pub fn create_cell_with_out_point( &mut self, out_point: OutPoint, cell: CellOutput, data: Bytes, )

Create cell with specified out-point and cell data

Source

pub fn insert_cell( &mut self, out_point: OutPoint, cell: CellOutput, data: Bytes, )

👎Deprecated since 0.1.1: Please use the create_cell_with_out_point function instead
Source

pub fn get_cell(&self, out_point: &OutPoint) -> Option<(CellOutput, Bytes)>

Get cell output and data by out-point

Source

pub fn build_script_with_hash_type( &mut self, out_point: &OutPoint, hash_type: ScriptHashType, args: Bytes, ) -> Option<Script>

Build script with out_point, hash_type, args return none if the out-point is not exist

Source

pub fn build_script( &mut self, out_point: &OutPoint, args: Bytes, ) -> Option<Script>

Build script with out_point, args and hash_type(ScriptHashType::Type) return none if the out-point is not exist

Source

pub fn complete_tx(&mut self, tx: TransactionView) -> TransactionView

Complete cell deps for a transaction this function searches context cells; generate cell dep for referenced scripts.

Source

pub fn capture_debug(&self) -> bool

Source

pub fn set_capture_debug(&mut self, capture_debug: bool)

Capture debug output, default value is false

Source

pub fn captured_messages(&self) -> Vec<Message>

return captured messages

Source

pub fn verify_tx( &self, tx: &TransactionView, max_cycles: u64, ) -> Result<Cycle, CKBError>

Verify the transaction in CKB-VM

Source

pub fn dump_tx( &self, tx: &TransactionView, ) -> Result<ReprMockTransaction, CKBError>

Dump the transaction in mock transaction format, so we can offload it to ckb debugger

Trait Implementations§

Source§

impl CellDataProvider for Context

Source§

fn load_cell_data(&self, cell: &CellMeta) -> Option<Bytes>

Load cell_data from memory, fallback to storage access
Source§

fn get_cell_data(&self, out_point: &OutPoint) -> Option<Bytes>

Fetch cell_data from storage
Source§

fn get_cell_data_hash(&self, out_point: &OutPoint) -> Option<Byte32>

Fetch cell_data_hash from storage, please note that loading a large amount of cell data and calculating hash may be a performance bottleneck, so here is a separate fn designed to facilitate caching. Read more
Source§

fn load_cell_data_hash(&self, cell: &CellMeta) -> Option<Byte32>

Load cell_data_hash from memory, fallback to storage access
Source§

impl Clone for Context

Source§

fn clone(&self) -> Context

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for Context

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl ExtensionProvider for Context

Source§

fn get_block_extension(&self, hash: &Byte32) -> Option<Bytes>

Get the extension field of the given block hash
Source§

impl HeaderProvider for Context

Source§

fn get_header(&self, block_hash: &Byte32) -> Option<HeaderView>

Get the header of the given block hash

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Cast to trait Any
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V