soroban_sdk::deploy

Struct Deployer

Source
pub struct Deployer { /* private fields */ }
Expand description

Deployer provides access to deploying contracts.

Implementations§

Source§

impl Deployer

Source

pub fn env(&self) -> &Env

Source

pub fn with_current_contract( &self, salt: impl IntoVal<Env, BytesN<32>>, ) -> DeployerWithAddress

Get a deployer that deploys contract that derive the contract IDs from the current contract and provided salt.

Source

pub fn with_address( &self, address: Address, salt: impl IntoVal<Env, BytesN<32>>, ) -> DeployerWithAddress

Get a deployer that deploys contracts that derive the contract ID from the provided address and salt.

The deployer address must authorize all the deployments.

Source

pub fn with_stellar_asset( &self, serialized_asset: impl IntoVal<Env, Bytes>, ) -> DeployerWithAsset

Get a deployer that deploys an instance of Stellar Asset Contract corresponding to the provided serialized asset.

serialized_asset is the Stellar Asset XDR serialized to bytes. Refer to [soroban_sdk::xdr::Asset]

Source

pub fn upload_contract_wasm( &self, contract_wasm: impl IntoVal<Env, Bytes>, ) -> BytesN<32>

Upload the contract Wasm code to the network.

Returns the hash of the uploaded Wasm that can be then used for the contract deployment.

§Examples
use soroban_sdk::{BytesN, Env};

const WASM: &[u8] = include_bytes!("../doctest_fixtures/contract.wasm");

#[test]
fn test() {
    let env = Env::default();
    env.deployer().upload_contract_wasm(WASM);
}
Source

pub fn update_current_contract_wasm( &self, wasm_hash: impl IntoVal<Env, BytesN<32>>, )

Replaces the executable of the current contract with the provided Wasm.

The Wasm blob identified by the wasm_hash has to be already present in the ledger (uploaded via [Deployer::upload_contract_wasm]).

The function won’t do anything immediately. The contract executable will only be updated after the invocation has successfully finished.

Source

pub fn extend_ttl( &self, contract_address: Address, threshold: u32, extend_to: u32, )

Extend the TTL of the contract instance and code.

Extends the TTL of the instance and code only if the TTL for the provided contract is below threshold ledgers. The TTL will then become extend_to. Note that the threshold check and TTL extensions are done for both the contract code and contract instance, so it’s possible that one is bumped but not the other depending on what the current TTL’s are.

The TTL is the number of ledgers between the current ledger and the final ledger the data can still be accessed.

Source

pub fn extend_ttl_for_contract_instance( &self, contract_address: Address, threshold: u32, extend_to: u32, )

Extend the TTL of the contract instance.

Same as extend_ttl but only for contract instance.

Source

pub fn extend_ttl_for_code( &self, contract_address: Address, threshold: u32, extend_to: u32, )

Extend the TTL of the contract code.

Same as extend_ttl but only for contract code.

Trait Implementations§

Source§

impl Deployer for Deployer

Available on crate feature testutils only.
Source§

fn get_contract_instance_ttl(&self, contract: &Address) -> u32

Gets the TTL of the given contract’s instance. Read more
Source§

fn get_contract_code_ttl(&self, contract: &Address) -> u32

Gets the TTL of the given contract’s Wasm code entry. Read more

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> 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, C> Compare<&T> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare(&self, a: &&T, b: &&T) -> Result<Ordering, <C as Compare<&T>>::Error>

Source§

impl<T, U, E, C> Compare<(T, U)> for C
where C: Compare<T, Error = E, Error = E> + Compare<U>,

Source§

type Error = E

Source§

fn compare( &self, a: &(T, U), b: &(T, U), ) -> Result<Ordering, <C as Compare<(T, U)>>::Error>

Source§

impl<T, U, V, E, C> Compare<(T, U, V)> for C
where C: Compare<T, Error = E, Error = E, Error = E> + Compare<U> + Compare<V>,

Source§

impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for C
where C: Compare<T, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W>,

Source§

impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
where C: Compare<T, Error = E, Error = E, Error = E, Error = E, Error = E> + Compare<U> + Compare<V> + Compare<W> + Compare<X>,

Source§

impl<T, C> Compare<Box<T>> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare( &self, a: &Box<T>, b: &Box<T>, ) -> Result<Ordering, <C as Compare<Box<T>>>::Error>

Source§

impl<T, C> Compare<Option<T>> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare( &self, a: &Option<T>, b: &Option<T>, ) -> Result<Ordering, <C as Compare<Option<T>>>::Error>

Source§

impl<T, C> Compare<Rc<T>> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare( &self, a: &Rc<T>, b: &Rc<T>, ) -> Result<Ordering, <C as Compare<Rc<T>>>::Error>

Source§

impl<T, C> Compare<Vec<T>> for C
where C: Compare<T>,

Source§

type Error = <C as Compare<T>>::Error

Source§

fn compare( &self, a: &Vec<T>, b: &Vec<T>, ) -> Result<Ordering, <C as Compare<Vec<T>>>::Error>

Source§

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

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

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

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

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

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
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<E, T, U> IntoVal<E, T> for U
where E: Env, T: FromVal<E, U>,

Source§

fn into_val(&self, e: &E) -> T

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<E, T, U> TryIntoVal<E, T> for U
where E: Env, T: TryFromVal<E, U>,

Source§

type Error = <T as TryFromVal<E, U>>::Error

Source§

fn try_into_val(&self, env: &E) -> Result<T, <U as TryIntoVal<E, T>>::Error>

Source§

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

Source§

fn vzip(self) -> V