ITransactionBuilder
Namespace: IotaSdk
A builder for creating transactions. Use finish to finalize the
transaction data.
public interface ITransactionBuilder
Attributes NullableContextAttribute
Methods
ExecuteWithGasStation(TransactionSigner)
Execute the transaction using the gas station and return the JSON
transaction effects. This will fail unless data is set with the
gas_station_sponsor function.
NOTE: These effects are not necessarily compatible with
TransactionEffects
Task<string> ExecuteWithGasStation(TransactionSigner signer)
Parameters
signer TransactionSigner
Returns
Exceptions
Expiration(UInt64)
Set the expiration of the transaction to be a specific epoch.
TransactionBuilder Expiration(ulong epoch)
Parameters
epoch UInt64
Returns
Finish()
Convert this builder into a transaction.
Transaction Finish()
Returns
Exceptions
Gas(ObjectReference[])
Add gas coins that will be consumed. Optional.
TransactionBuilder Gas(ObjectReference[] objectRefs)
Parameters
objectRefs ObjectReference[]
Returns
GasBudget(UInt64)
Set the gas budget for the transaction.
TransactionBuilder GasBudget(ulong budget)
Parameters
budget UInt64
Returns
GasPrice(UInt64)
Set the gas price for the transaction.
TransactionBuilder GasPrice(ulong price)
Parameters
price UInt64
Returns
GasStationSponsor(String, TimeSpan?, Dictionary<String, String[]>)
Set the gas station sponsor.
TransactionBuilder GasStationSponsor(string url, TimeSpan? duration = null, Dictionary<string, String[]>? headers = null)
Parameters
url String
duration TimeSpan?
headers Dictionary<String, String[]>?
Returns
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.
TransactionBuilder MakeMoveVec(MoveArg[] elements, TypeTag typeTag, string name)
Parameters
elements MoveArg[]
typeTag TypeTag
name String
Returns
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.
TransactionBuilder MergeCoins(PtbArgument primaryCoin, PtbArgument[] consumedCoins)
Parameters
primaryCoin PtbArgument
consumedCoins PtbArgument[]
Returns
MoveCall(Address, Identifier, Identifier, PtbArgument[], TypeTag[], String[])
Call a Move function with the given arguments.
TransactionBuilder 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
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
TransactionBuilder::pay_iota() instead.
For a single recipient, consider using
TransactionBuilder::send_coins() or TransactionBuilder::send_iota()
instead.
TransactionBuilder Pay(PtbArgument[] coins, Payment[] payments)
Parameters
coins PtbArgument[]
payments Payment[]
Returns
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
TransactionBuilder::pay(). For a single recipient, consider using
TransactionBuilder::send_iota() instead.
TransactionBuilder PayIota(Payment[] payments)
Parameters
payments Payment[]
Returns
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 publisheddependencies: is the list of IDs of the transitive dependencies of the package
TransactionBuilder PublishPackage(MovePackageData packageData, string upgradeCapName)
Parameters
packageData MovePackageData
upgradeCapName String
Returns
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.
TransactionBuilder SendCoins(PtbArgument[] coins, Address recipient, PtbArgument? amount = null)
Parameters
coins PtbArgument[]
recipient Address
amount PtbArgument?
Returns
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.
TransactionBuilder SendIota(Address recipient, PtbArgument amount)
Parameters
recipient Address
amount PtbArgument
Returns
SetSender(Address)
Set the sender address.
void SetSender(Address sender)
Parameters
sender Address
SplitCoins(PtbArgument, PtbArgument[], String[])
Split a coin by the provided amounts.
TransactionBuilder SplitCoins(PtbArgument coin, PtbArgument[] amounts, String[] names = null)
Parameters
coin PtbArgument
amounts PtbArgument[]
names String[]
Returns
Sponsor(Address)
Set the sponsor of the transaction.
TransactionBuilder Sponsor(Address sponsor)
Parameters
sponsor Address
Returns
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.
TransactionBuilder Stake(PtbArgument stake, Address validatorAddress)
Parameters
stake PtbArgument
validatorAddress Address
Returns
TransferObjects(Address, PtbArgument[])
Transfer a list of objects to the given address, without producing any result.
TransactionBuilder TransferObjects(Address recipient, PtbArgument[] objects)
Parameters
recipient Address
objects PtbArgument[]
Returns
Unstake(PtbArgument)
Withdraw stake from a validator's staking pool.
TransactionBuilder Unstake(PtbArgument stakedIota)
Parameters
stakedIota PtbArgument
Returns
Upgrade(ObjectId, MovePackageData, PtbArgument, String)
Upgrade a Move package.
modules: is the modules' bytecode for the modules to be publisheddependencies: is the list of IDs of the transitive dependencies of the package to be upgradedpackage: is the ID of the current package being upgradedticket: 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.
TransactionBuilder Upgrade(ObjectId packageId, MovePackageData packageData, PtbArgument upgradeTicket, string? name = null)
Parameters
packageId ObjectId
packageData MovePackageData
upgradeTicket PtbArgument
name String?
Returns
WithClient(GraphQlClient)
ClientTransactionBuilder WithClient(GraphQlClient client)
Parameters
client GraphQlClient