Skip to main content

GraphQlClient

GraphQlClient Objects

class GraphQlClient(GraphQlClientProtocol)

The GraphQL client for interacting with the IOTA blockchain.

new_devnet

@classmethod
def new_devnet(cls) -> GraphQlClient

Create a new GraphQL client connected to the devnet GraphQL server: {DEVNET_HOST}.

new_localnet

@classmethod
def new_localnet(cls) -> GraphQlClient

Create a new GraphQL client connected to the localhost GraphQL server: {DEFAULT_LOCAL_HOST}.

new_mainnet

@classmethod
def new_mainnet(cls) -> GraphQlClient

Create a new GraphQL client connected to the mainnet GraphQL server: {MAINNET_HOST}.

new_testnet

@classmethod
def new_testnet(cls) -> GraphQlClient

Create a new GraphQL client connected to the testnet GraphQL server: {TESTNET_HOST}.

active_validators

async def active_validators(
epoch: typing.Union[object, typing.Optional[int]] = _DEFAULT,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> ValidatorPage

Get the list of active validators for the provided epoch, including related metadata. If no epoch is provided, it will return the active validators for the current epoch.

balance

async def balance(
address: Address,
coin_type: typing.Union[object, typing.Optional[str]] = _DEFAULT
) -> typing.Optional[int]

Get the balance of all the coins owned by address for the provided coin type. Coin type will default to 0x2::coin::Coin<0x2::iota::IOTA> if not provided.

chain_id

async def chain_id() -> str

Get the chain identifier.

checkpoint

async def checkpoint(
digest: typing.Union[object, typing.Optional[CheckpointDigest]] = _DEFAULT,
seq_num: typing.Union[object, typing.Optional[int]] = _DEFAULT
) -> typing.Optional[CheckpointSummary]

Get the CheckpointSummary for a given checkpoint digest or checkpoint id. If none is provided, it will use the last known checkpoint id.

checkpoints

async def checkpoints(
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> CheckpointSummaryPage

Get a page of CheckpointSummary for the provided parameters.

coin_metadata

async def coin_metadata(coin_type: str) -> typing.Optional[CoinMetadata]

Get the coin metadata for the coin type.

coins

async def coins(
owner: Address,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT,
coin_type: typing.Union[object, typing.Optional[StructTag]] = _DEFAULT
) -> CoinPage

Get the list of coins for the specified address.

If coin_type is not provided, all coins will be returned. For IOTA coins, pass in the coin type: 0x2::iota::IOTA.

dry_run_tx

async def dry_run_tx(tx: Transaction,
skip_checks: bool = False) -> DryRunResult

Dry run a Transaction and return the transaction effects and dry run error (if any).

skipChecks optional flag disables the usual verification checks that prevent access to objects that are owned by addresses other than the sender, and calling non-public, non-entry functions, and some other checks. Defaults to false.

dry_run_tx_kind

async def dry_run_tx_kind(tx_kind: TransactionKind,
tx_meta: TransactionMetadata,
skip_checks: bool = False) -> DryRunResult

Dry run a TransactionKind and return the transaction effects and dry run error (if any).

skipChecks optional flag disables the usual verification checks that prevent access to objects that are owned by addresses other than the sender, and calling non-public, non-entry functions, and some other checks. Defaults to false.

tx_meta is the transaction metadata.

dynamic_field

async def dynamic_field(address: Address, type_tag: TypeTag,
name: Value) -> typing.Optional[DynamicFieldOutput]

Access a dynamic field on an object using its name. Names are arbitrary Move values whose type have copy, drop, and store, and are specified using their type, and their BCS contents, Base64 encoded.

The name argument is a json serialized type.

This returns DynamicFieldOutput which contains the name, the value as json, and object.

dynamic_fields

async def dynamic_fields(
address: Address,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> DynamicFieldOutputPage

Get a page of dynamic fields for the provided address. Note that this will also fetch dynamic fields on wrapped objects.

This returns a page of DynamicFieldOutputs.

dynamic_object_field

async def dynamic_object_field(
address: Address, type_tag: TypeTag,
name: Value) -> typing.Optional[DynamicFieldOutput]

Access a dynamic object field on an object using its name. Names are arbitrary Move values whose type have copy, drop, and store, and are specified using their type, and their BCS contents, Base64 encoded.

The name argument is a json serialized type.

This returns DynamicFieldOutput which contains the name, the value as json, and object.

epoch

async def epoch(
epoch: typing.Union[object, typing.Optional[int]] = _DEFAULT
) -> typing.Optional[Epoch]

Return the epoch information for the provided epoch. If no epoch is provided, it will return the last known epoch.

epoch_total_checkpoints

async def epoch_total_checkpoints(
epoch: typing.Union[object, typing.Optional[int]] = _DEFAULT
) -> typing.Optional[int]

Return the number of checkpoints in this epoch. This will return Ok(None) if the epoch requested is not available in the GraphQL service (e.g., due to pruning).

epoch_total_transaction_blocks

async def epoch_total_transaction_blocks(
epoch: typing.Union[object, typing.Optional[int]] = _DEFAULT
) -> typing.Optional[int]

Return the number of transaction blocks in this epoch. This will return Ok(None) if the epoch requested is not available in the GraphQL service (e.g., due to pruning).

events

async def events(
filter: typing.Union[object, typing.Optional[EventFilter]] = _DEFAULT,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> EventPage

Return a page of tuple (event, transaction digest) based on the (optional) event filter.

events_subscription

async def events_subscription(
filter: typing.Union[object,
typing.Optional[SubscriptionEventFilter]] = _DEFAULT,
start_after: typing.Union[object, typing.Optional[str]] = _DEFAULT
) -> EventSubscription

Subscribe to a live stream of events matching the (optional) filter.

start_after optionally resumes from the transaction immediately following the given transaction digest; thereafter the subscription tracks its own resume point across reconnects.

Note: subscriptions are served over a WebSocket and are currently supported on devnet and localnet only. They are unavailable altogether in the wasm build, where next raises.

execute_tx

async def execute_tx(
signatures: typing.List[UserSignature],
tx: Transaction,
wait_for: typing.Union[object, typing.Optional[WaitForTx]] = _DEFAULT
) -> TransactionEffects

Execute a transaction.

gas_coins

async def gas_coins(
owner: Address,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> CoinPage

Get the list of gas coins for the specified address.

iota_names_default_name

async def iota_names_default_name(
address: Address,
format: typing.Optional[NameFormat]) -> typing.Optional[Name]

Get the default name pointing to this address, if one exists.

iota_names_lookup

async def iota_names_lookup(name: str) -> typing.Optional[Address]

Return the resolved address for the given name.

iota_names_registrations

async def iota_names_registrations(
address: Address,
pagination_filter: PaginationFilter) -> NameRegistrationPage

Find all registration NFTs for the given address.

is_tx_finalized

async def is_tx_finalized(digest: TransactionDigest) -> bool

Returns whether the transaction for the given digest has been included in a checkpoint (finalized).

is_tx_indexed_on_node

async def is_tx_indexed_on_node(digest: TransactionDigest) -> bool

Returns whether the transaction for the given digest has been indexed on the node. This means that it can be queried by its digest and its effects will be usable for subsequent transactions. To check for full finalization, use is_tx_finalized.

latest_checkpoint_sequence_number

async def latest_checkpoint_sequence_number() -> typing.Optional[int]

Return the sequence number of the latest checkpoint that has been executed.

max_page_size

async def max_page_size() -> int

Lazily fetch the max page size

move_object_contents

async def move_object_contents(
object_id: ObjectId,
version: typing.Union[object, typing.Optional[Version]] = _DEFAULT
) -> typing.Optional[Value]

Return the contents' JSON of an object that is a Move object.

If the object does not exist (e.g., due to pruning), this will return Ok(None). Similarly, if this is not an object but an address, it will return Ok(None).

move_object_contents_bcs

async def move_object_contents_bcs(
object_id: ObjectId,
version: typing.Union[object, typing.Optional[Version]] = _DEFAULT
) -> typing.Optional[bytes]

Return the BCS of an object that is a Move object.

If the object does not exist (e.g., due to pruning), this will return Ok(None). Similarly, if this is not an object but an address, it will return Ok(None).

move_view_call

async def move_view_call(
function_name: str,
type_arguments: typing.Union[
object, typing.Optional[typing.List[TypeTag]]] = _DEFAULT,
arguments: typing.Union[
object, typing.Optional[typing.List[MoveViewArg]]] = _DEFAULT
) -> MoveViewResult

Execute a Move View Function.

A View Function is a function in a Move module with a return type that does not alter the state of the ledger. When using this interface, no transactions are submitted to the network for inclusion into the ledger.

This method allows calling nearly any Move function with a return type and any arguments. The function's result values are provided and decoded using the appropriate Move type, then formatted in JSON.

The use of this interface does not require signature checks (even for functions that take Owned Objects as input) or gas coins, as it does not alter ledger state. Spam attacks are dealt with at the RPC level rather than execution level.

Arguments

  • function_name - The Move function fully qualified name as
  • __<package_id>__::<module_name>::<function_name>, e.g.,
  • __0x2__::hash::blake2b256
  • type_arguments - The type arguments of the Move function
  • arguments - The typed arguments to be passed into the Move function

Returns

A MoveViewResult containing either execution results (return values) or an error.

move_view_call_json

async def move_view_call_json(
function_name: str,
type_arguments: typing.Union[object,
typing.Optional[typing.List[str]]] = _DEFAULT,
arguments: typing.Union[object,
typing.Optional[typing.List[Value]]] = _DEFAULT
) -> MoveViewResult

Execute a Move View Function with raw JSON arguments.

This is an alternative to [GraphQLClient::move_view_call] that accepts raw JSON values instead of typed arguments.

A View Function is a function in a Move module with a return type that does not alter the state of the ledger. When using this interface, no transactions are submitted to the network for inclusion into the ledger.

Arguments

  • function_name - The Move function fully qualified name as
  • __<package_id>__::<module_name>::<function_name>, e.g.,
  • __0x2__::hash::blake2b256
  • type_arguments - The type arguments of the Move function
  • arguments - The arguments to be passed into the Move function, in JSON format

Returns

A MoveViewResult containing either execution results (return values) or an error.

normalized_move_function

async def normalized_move_function(
package: Address,
module: str,
function: str,
version: typing.Union[object, typing.Optional[Version]] = _DEFAULT
) -> typing.Optional[MoveFunction]

Return the normalized Move function data for the provided package, module, and function.

normalized_move_module

async def normalized_move_module(
package: Address,
module: str,
version: typing.Union[object, typing.Optional[Version]] = _DEFAULT,
pagination_filter_enums: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT,
pagination_filter_friends: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT,
pagination_filter_functions: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT,
pagination_filter_structs: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> typing.Optional[MoveModule]

Return the normalized Move module data for the provided module.

object

async def object(
object_id: ObjectId,
version: typing.Union[object, typing.Optional[Version]] = _DEFAULT
) -> typing.Optional[Object]

Return an object based on the provided Address.

If the object does not exist (e.g., due to pruning), this will return Ok(None). Similarly, if this is not an object but an address, it will return Ok(None).

object_bcs

async def object_bcs(object_id: ObjectId) -> typing.Optional[bytes]

Return the object's bcs content Vec<u8> based on the provided Address.

objects

async def objects(
filter: typing.Union[object, typing.Optional[ObjectFilter]] = _DEFAULT,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> ObjectPage

Return a page of objects based on the provided parameters.

Use this function together with the ObjectFilter::owner to get the objects owned by an address.

package

async def package(
address: Address,
version: typing.Union[object, typing.Optional[Version]] = _DEFAULT
) -> typing.Optional[MovePackage]

The package corresponding to the given address (at the optionally given version). When no version is given, the package is loaded directly from the address given. Otherwise, the address is translated before loading to point to the package whose original ID matches the package at address, but whose version is version. For non-system packages, this might result in a different address than address because different versions of a package, introduced by upgrades, exist at distinct addresses.

Note that this interpretation of version is different from a historical object read (the interpretation of version for the object query).

package_latest

async def package_latest(address: Address) -> typing.Optional[MovePackage]

Fetch the latest version of the package at address. This corresponds to the package with the highest version that shares its original ID with the package at address.

package_versions

async def package_versions(
address: Address,
after_version: typing.Union[object, typing.Optional[Version]] = _DEFAULT,
before_version: typing.Union[object, typing.Optional[Version]] = _DEFAULT,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> MovePackagePage

Fetch all versions of package at address (packages that share this package's original ID), optionally bounding the versions exclusively from below with afterVersion, or from above with beforeVersion.

packages

async def packages(
after_checkpoint: typing.Union[object, typing.Optional[int]] = _DEFAULT,
before_checkpoint: typing.Union[object, typing.Optional[int]] = _DEFAULT,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> MovePackagePage

The Move packages that exist in the network, optionally filtered to be strictly before beforeCheckpoint and/or strictly after afterCheckpoint.

This query returns all versions of a given user package that appear between the specified checkpoints, but only records the latest versions of system packages.

protocol_config

async def protocol_config(
version: typing.Union[object, typing.Optional[int]] = _DEFAULT
) -> ProtocolConfigs

Get the protocol configuration.

reference_gas_price

async def reference_gas_price(
epoch: typing.Union[object, typing.Optional[int]] = _DEFAULT
) -> typing.Optional[int]

Get the reference gas price for the provided epoch or the last known one if no epoch is provided.

This will return Ok(None) if the epoch requested is not available in the GraphQL service (e.g., due to pruning).

run_query

async def run_query(query: Query) -> Value

Run a query.

service_config

async def service_config() -> ServiceConfig

Get the GraphQL service configuration, including complexity limits, read and mutation limits, supported versions, and others.

set_rpc_server

async def set_rpc_server(server: str) -> None

Set the server address for the GraphQL client. It should be a valid URL with a host and optionally a port number.

total_supply

async def total_supply(coin_type: str) -> typing.Optional[int]

Get total supply for the coin type.

total_transaction_blocks

async def total_transaction_blocks() -> typing.Optional[int]

The total number of transaction blocks in the network by the end of the last known checkpoint.

total_transaction_blocks_by_digest

async def total_transaction_blocks_by_digest(
digest: CheckpointDigest) -> typing.Optional[int]

The total number of transaction blocks in the network by the end of the provided checkpoint digest.

total_transaction_blocks_by_seq_num

async def total_transaction_blocks_by_seq_num(
seq_num: int) -> typing.Optional[int]

The total number of transaction blocks in the network by the end of the provided checkpoint sequence number.

transaction

async def transaction(
digest: TransactionDigest) -> typing.Optional[SignedTransaction]

Get a transaction by its digest.

transaction_builder

def transaction_builder(sender: Address) -> ClientTransactionBuilder

Create a new TransactionBuilder with the given sender address.

transaction_data_effects

async def transaction_data_effects(
digest: TransactionDigest) -> typing.Optional[TransactionDataEffects]

Get a transaction's data and effects by its digest.

transaction_effects

async def transaction_effects(
digest: TransactionDigest) -> typing.Optional[TransactionEffects]

Get a transaction's effects by its digest.

transactions

async def transactions(
filter: typing.Union[object,
typing.Optional[TransactionsFilter]] = _DEFAULT,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> SignedTransactionPage

Get a page of transactions based on the provided filters.

transactions_data_effects

async def transactions_data_effects(
filter: typing.Union[object,
typing.Optional[TransactionsFilter]] = _DEFAULT,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> TransactionDataEffectsPage

Get a page of transactions' data and effects based on the provided filters.

transactions_effects

async def transactions_effects(
filter: typing.Union[object,
typing.Optional[TransactionsFilter]] = _DEFAULT,
pagination_filter: typing.Union[
object, typing.Optional[PaginationFilter]] = _DEFAULT
) -> TransactionEffectsPage

Get a page of transactions' effects based on the provided filters.

transactions_subscription

async def transactions_subscription(
filter: typing.Union[
object, typing.Optional[SubscriptionTransactionFilter]] = _DEFAULT,
start_after: typing.Union[object, typing.Optional[str]] = _DEFAULT
) -> TransactionSubscription

Subscribe to a live stream of transactions matching the (optional) filter.

start_after optionally resumes from the transaction immediately following the given digest; thereafter the subscription tracks its own resume point across reconnects.

Note: subscriptions are served over a WebSocket and are currently supported on devnet and localnet only. They are unavailable altogether in the wasm build, where next raises.

wait_for_tx

async def wait_for_tx(
digest: TransactionDigest,
wait_for: WaitForTx,
timeout: typing.Union[object,
typing.Optional[Duration]] = _DEFAULT) -> None

Wait for the indexing (on the node, not the indexer) or finalization of a transaction by its digest. An optional timeout can be provided, which, if exceeded, will return an error (default 60s).