Skip to main content

ClientTransactionBuilder

Namespace: IotaSdk

A builder for creating transactions which uses a GraphQL client to automatically resolve inputs. Use finish to finalize the transaction data.

public class ClientTransactionBuilder : IClientTransactionBuilder, System.IDisposable

Inheritance ObjectClientTransactionBuilder
Implements IClientTransactionBuilder, IDisposable
Attributes NullableContextAttribute, NullableAttribute

Constructors

ClientTransactionBuilder(UInt64)

public ClientTransactionBuilder(ulong pointer)

Parameters

pointer UInt64

Methods

Destroy()

public void Destroy()

Dispose()

public void Dispose()

DryRun(Boolean)

Dry run the transaction.

public async Task<DryRunResult> DryRun(bool skipChecks = false)

Parameters

skipChecks Boolean

Returns

Task<DryRunResult>

Exceptions

SdkFfiException

Execute(TransactionSigner, WaitForTx?)

Execute the transaction and optionally wait for finalization.

public async Task<TransactionEffects> Execute(TransactionSigner signer, WaitForTx? waitFor = null)

Parameters

signer TransactionSigner

waitFor WaitForTx?

Returns

Task<TransactionEffects>

Exceptions

SdkFfiException

ExecuteWithSponsor(TransactionSigner, TransactionSigner, WaitForTx?)

Execute the transaction and optionally wait for finalization.

public async Task<TransactionEffects> ExecuteWithSponsor(TransactionSigner signer, TransactionSigner sponsorSigner, WaitForTx? waitFor = null)

Parameters

signer TransactionSigner

sponsorSigner TransactionSigner

waitFor WaitForTx?

Returns

Task<TransactionEffects>

Exceptions

SdkFfiException

Expiration(UInt64)

Set the expiration of the transaction to be a specific epoch.

public ClientTransactionBuilder Expiration(ulong epoch)

Parameters

epoch UInt64

Returns

ClientTransactionBuilder

Finish()

Convert this builder into a transaction.

public async Task<Transaction> Finish()

Returns

Task<Transaction>

Exceptions

SdkFfiException

Gas(ObjectId[])

Add gas coins that will be consumed. Optional.

public ClientTransactionBuilder Gas(ObjectId[] objectIds)

Parameters

objectIds ObjectId[]

Returns

ClientTransactionBuilder

GasBudget(UInt64)

Set the gas budget for the transaction.

public ClientTransactionBuilder GasBudget(ulong budget)

Parameters

budget UInt64

Returns

ClientTransactionBuilder

GasPrice(UInt64)

Set the gas price for the transaction.

public ClientTransactionBuilder GasPrice(ulong price)

Parameters

price UInt64

Returns

ClientTransactionBuilder

GasStationSponsor(String, TimeSpan?, Dictionary<String, String[]>)

Set the gas station sponsor.

public ClientTransactionBuilder GasStationSponsor(string url, TimeSpan? duration = null, Dictionary<string, String[]>? headers = null)

Parameters

url String

duration TimeSpan?

headers Dictionary<String, String[]>?

Returns

ClientTransactionBuilder

MakeMoveVec(MoveArg[], TypeTag, String)

Make a move vector from a list of elements. The elements must all be of the type indicated by type_tag.

public ClientTransactionBuilder MakeMoveVec(MoveArg[] elements, TypeTag typeTag, string name)

Parameters

elements MoveArg[]

typeTag TypeTag

name String

Returns

ClientTransactionBuilder

MergeCoins(PtbArgument, PtbArgument[])

Merge multiple coins into one.

This method combines the balances of multiple coins of the same coin type into a single coin. The primary_coin will receive the balances from all consumed_coins. After merging, the consumed_coins will be consumed and no longer exist.

public ClientTransactionBuilder MergeCoins(PtbArgument primaryCoin, PtbArgument[] consumedCoins)

Parameters

primaryCoin PtbArgument

consumedCoins PtbArgument[]

Returns

ClientTransactionBuilder

MoveCall(Address, Identifier, Identifier, PtbArgument[], TypeTag[], String[])

Call a Move function with the given arguments.

public ClientTransactionBuilder MoveCall(Address package, Identifier module, Identifier function, PtbArgument[] arguments = null, TypeTag[] typeArgs = null, String[] names = null)

Parameters

package Address

module Identifier

function Identifier

arguments PtbArgument[]

typeArgs TypeTag[]

names String[]

Returns

ClientTransactionBuilder

Pay(PtbArgument[], Payment[])

Send coins to multiple recipients, each paired with the amount to send.

The amounts specify quantities in the coins' smallest unit (NANOS for IOTA coins, where 1 IOTA equals 1_000_000_000 NANOS).

The coins are merged into the first one, the amounts are split off it in a single command, and each split coin is transferred to its corresponding recipient, with one transfer command per unique recipient. The remainder stays in the first coin.

All provided coins must have the same coin type. Mixing coins of different types will result in an error.

To pay IOTA directly from the gas coin, use ClientTransactionBuilder::pay_iota() instead.

For a single recipient, consider using ClientTransactionBuilder::send_coins() or ClientTransactionBuilder::send_iota() instead.

public ClientTransactionBuilder Pay(PtbArgument[] coins, Payment[] payments)

Parameters

coins PtbArgument[]

payments Payment[]

Returns

ClientTransactionBuilder

PayIota(Payment[])

Send IOTA to multiple recipients, each paired with the amount to send.

The amounts specify quantities in NANOS, where 1 IOTA equals 1_000_000_000 NANOS. They are split off the gas coin in a single command, and each split coin is transferred to its corresponding recipient, with one transfer command per unique recipient.

To pay with specific coins, or with a coin type other than IOTA, use ClientTransactionBuilder::pay(). For a single recipient, consider using ClientTransactionBuilder::send_iota() instead.

public ClientTransactionBuilder PayIota(Payment[] payments)

Parameters

payments Payment[]

Returns

ClientTransactionBuilder

PublishPackage(MovePackageData, String)

Publish a list of modules with the given dependencies. The result assigned to upgrade_cap_name is the 0x2::package::UpgradeCap Move type. Note that the upgrade capability needs to be handled after this call:

  • transfer it to the transaction sender or another address
  • burn it
  • wrap it for access control
  • discard the it to make a package immutable

The arguments required for this command are:

  • modules: is the modules' bytecode to be published
  • dependencies: is the list of IDs of the transitive dependencies of the package
public ClientTransactionBuilder PublishPackage(MovePackageData packageData, string upgradeCapName)

Parameters

packageData MovePackageData

upgradeCapName String

Returns

ClientTransactionBuilder

SendCoins(PtbArgument[], Address, PtbArgument)

Transfer some coins to a recipient address. If multiple coins are provided then they will be merged.

The amount parameter specifies the quantity in NANOS, where 1 IOTA equals 1_000_000_000 NANOS. If amount is provided, that amount is split from the provided coins and sent. If amount is None, the entire coins are transferred.

All provided coins must have the same coin type. Mixing coins of different types will result in an error.

If you intend to transfer all provided coins to another address in a single transaction, consider using TransactionBuilder::transfer_objects() instead.

public ClientTransactionBuilder SendCoins(PtbArgument[] coins, Address recipient, PtbArgument? amount = null)

Parameters

coins PtbArgument[]

recipient Address

amount PtbArgument?

Returns

ClientTransactionBuilder

SendIota(Address, PtbArgument)

Send IOTA to a recipient address.

The amount parameter specifies the quantity in NANOS, where 1 IOTA equals 1_000_000_000 NANOS. That amount is split from the gas coin and sent.

public ClientTransactionBuilder SendIota(Address recipient, PtbArgument amount)

Parameters

recipient Address

amount PtbArgument

Returns

ClientTransactionBuilder

SetSender(Address)

Set the sender address.

public void SetSender(Address sender)

Parameters

sender Address

SplitCoins(PtbArgument, PtbArgument[], String[])

Split a coin into many.

public ClientTransactionBuilder SplitCoins(PtbArgument coin, PtbArgument[] amounts, String[] names = null)

Parameters

coin PtbArgument

amounts PtbArgument[]

names String[]

Returns

ClientTransactionBuilder

Sponsor(Address)

Set the sponsor of the transaction.

public ClientTransactionBuilder Sponsor(Address sponsor)

Parameters

sponsor Address

Returns

ClientTransactionBuilder

Stake(PtbArgument, Address)

Add stake to a validator's staking pool.

This is a high-level function which will split the provided stake amount from the gas coin and then stake using the resulting coin.

public ClientTransactionBuilder Stake(PtbArgument stake, Address validatorAddress)

Parameters

stake PtbArgument

validatorAddress Address

Returns

ClientTransactionBuilder

TransferObjects(Address, PtbArgument[])

Transfer a list of objects to the given address, without producing any result.

public ClientTransactionBuilder TransferObjects(Address recipient, PtbArgument[] objects)

Parameters

recipient Address

objects PtbArgument[]

Returns

ClientTransactionBuilder

Unstake(PtbArgument)

Withdraw stake from a validator's staking pool.

public ClientTransactionBuilder Unstake(PtbArgument stakedIota)

Parameters

stakedIota PtbArgument

Returns

ClientTransactionBuilder

Upgrade(ObjectId, MovePackageData, PtbArgument, String)

Upgrade a Move package.

  • modules: is the modules' bytecode for the modules to be published
  • dependencies: is the list of IDs of the transitive dependencies of the package to be upgraded
  • package: is the ID of the current package being upgraded
  • ticket: is the upgrade ticket

To get the ticket, you have to call the 0x2::package::authorize_upgrade function, and pass the package ID, the upgrade policy, and package digest.

public ClientTransactionBuilder Upgrade(ObjectId packageId, MovePackageData packageData, PtbArgument upgradeTicket, string? name = null)

Parameters

packageId ObjectId

packageData MovePackageData

upgradeTicket PtbArgument

name String?

Returns

ClientTransactionBuilder