Struct Contract

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

Represents a Soroban smart contract

Provides functionality to deploy and interact with Soroban smart contracts. A Contract instance can represent either an undeployed contract (with just WASM bytecode) or a deployed contract (with client configuration for interacting with it).

Implementations§

Source§

impl Contract

Source

pub fn new( wasm_path: &str, client_configs: Option<ClientContractConfigs>, ) -> Result<Self, SorobanHelperError>

Creates a new Contract instance from a WASM file path

§Parameters
  • wasm_path - Path to the contract’s WASM file
  • client_configs - Optional configuration for interacting with an already deployed instance
§Returns

A new Contract instance or an error if the file couldn’t be read

Source

pub fn from_configs(client_configs: ClientContractConfigs) -> Self

Creates a new Contract instance from a deployed contract

§Parameters
  • client_configs - Configuration for interacting with the deployed contract
§Returns

A new Contract instance

Source

pub fn new_with_reader<T: FileReader>( wasm_path: &str, client_configs: Option<ClientContractConfigs>, file_reader: T, ) -> Result<Self, SorobanHelperError>

Creates a new Contract instance from a WASM file path and custom file reader

§Parameters
  • wasm_path - Path to the contract’s WASM file
  • client_configs - Optional configuration for interacting with an already deployed instance
  • file_reader - Custom file reader for reading the WASM file adopting the FileReader trait.
§Returns

A new Contract instance or an error if the file couldn’t be read

Source

pub async fn deploy( self, env: &Env, account: &mut Account, constructor_args: Option<Vec<ScVal>>, ) -> Result<Self, SorobanHelperError>

Deploys the contract to the Soroban network

This method performs two operations:

  1. Uploads the contract WASM bytecode if it doesn’t exist on the network
  2. Creates a contract instance with the uploaded WASM

If the contract has a constructor function, the provided constructor arguments will be passed to it during deployment.

§Parameters
  • env - The environment to use for deployment
  • account - The account that will deploy the contract and pay for the transaction
  • constructor_args - Optional arguments to pass to the contract’s constructor
§Returns

The Contract instance updated with client configuration for the deployed contract

Source

pub fn contract_id(&self) -> Option<ContractId>

Returns the contract ID if the contract has been deployed

§Returns

The contract ID or None if the contract has not been deployed

Source

pub async fn invoke( &mut self, function_name: &str, args: Vec<ScVal>, ) -> Result<SorobanTransactionResponse, SorobanHelperError>

Invokes a function on the deployed contract

§Parameters
  • function_name - The name of the function to invoke
  • args - The arguments to pass to the function
§Returns

The transaction response from the network

§Errors

Returns an error if the contract has not been deployed or if there’s an issue with the invocation

Trait Implementations§

Source§

impl Clone for Contract

Source§

fn clone(&self) -> Self

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

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

Performs copy-assignment from source. 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> CloneToUninit for T
where T: Clone,

Source§

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

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSend for T
where T: Send,