ClientTransactionBuilderProtocol
ClientTransactionBuilderProtocol Objects
class ClientTransactionBuilderProtocol(typing.Protocol)
A builder for creating transactions which uses a GraphQL client to
automatically resolve inputs. Use finish to finalize the transaction data.
dry_run
async def dry_run(skip_checks: bool = False) -> DryRunResult
Dry run the transaction.
execute
async def execute(
signer: TransactionSigner,
wait_for: typing.Union[object, typing.Optional[WaitForTx]] = _DEFAULT
) -> TransactionEffects
Execute the transaction and optionally wait for finalization.
execute_with_sponsor
async def execute_with_sponsor(
signer: TransactionSigner,
sponsor_signer: TransactionSigner,
wait_for: typing.Union[object, typing.Optional[WaitForTx]] = _DEFAULT
) -> TransactionEffects
Execute the transaction and optionally wait for finalization.
expiration
def expiration(epoch: int) -> ClientTransactionBuilder
Set the expiration of the transaction to be a specific epoch.
finish
async def finish() -> Transaction
Convert this builder into a transaction.
gas
def gas(object_ids: typing.List[ObjectId]) -> ClientTransactionBuilder
Add gas coins that will be consumed. Optional.
gas_budget
def gas_budget(budget: int) -> ClientTransactionBuilder
Set the gas budget for the transaction.
gas_price
def gas_price(price: int) -> ClientTransactionBuilder
Set the gas price for the transaction.
gas_station_sponsor
def gas_station_sponsor(
url: str,
duration: typing.Union[object, typing.Optional[Duration]] = _DEFAULT,
headers: typing.Union[object,
typing.Optional[dict[str,
typing.List[str]]]] = _DEFAULT
) -> ClientTransactionBuilder
Set the gas station sponsor.
make_move_vec
def make_move_vec(elements: typing.List[MoveArg], type_tag: TypeTag,
name: str) -> ClientTransactionBuilder
Make a move vector from a list of elements. The elements must all be of
the type indicated by type_tag.
merge_coins
def merge_coins(
primary_coin: PtbArgument,
consumed_coins: typing.List[PtbArgument]) -> ClientTransactionBuilder
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.
move_call
def move_call(
package: Address,
module: Identifier,
function: Identifier,
arguments: typing.Union[object, typing.List[PtbArgument]] = _DEFAULT,
type_args: typing.Union[object, typing.List[TypeTag]] = _DEFAULT,
names: typing.Union[object, typing.List[str]] = _DEFAULT
) -> ClientTransactionBuilder
Call a Move function with the given arguments.
pay
def pay(coins: typing.List[PtbArgument],
payments: typing.List[Payment]) -> ClientTransactionBuilder
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.
pay_iota
def pay_iota(payments: typing.List[Payment]) -> ClientTransactionBuilder
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.
publish_package
def publish_package(package_data: MovePackageData,
upgrade_cap_name: str) -> ClientTransactionBuilder
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
send_coins
def send_coins(
coins: typing.List[PtbArgument],
recipient: Address,
amount: typing.Union[object, typing.Optional[PtbArgument]] = _DEFAULT
) -> ClientTransactionBuilder
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.
send_iota
def send_iota(recipient: Address,
amount: PtbArgument) -> ClientTransactionBuilder
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.
set_sender
def set_sender(sender: Address) -> None
Set the sender address.
split_coins
def split_coins(
coin: PtbArgument,
amounts: typing.List[PtbArgument],
names: typing.Union[object, typing.List[str]] = _DEFAULT
) -> ClientTransactionBuilder
Split a coin into many.
sponsor
def sponsor(sponsor: Address) -> ClientTransactionBuilder
Set the sponsor of the transaction.
stake
def stake(stake: PtbArgument,
validator_address: Address) -> ClientTransactionBuilder
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.
transfer_objects
def transfer_objects(
recipient: Address,
objects: typing.List[PtbArgument]) -> ClientTransactionBuilder
Transfer a list of objects to the given address, without producing any result.
unstake
def unstake(staked_iota: PtbArgument) -> ClientTransactionBuilder
Withdraw stake from a validator's staking pool.
upgrade
def upgrade(
package_id: ObjectId,
package_data: MovePackageData,
upgrade_ticket: PtbArgument,
name: typing.Union[object, typing.Optional[str]] = _DEFAULT
) -> ClientTransactionBuilder
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.