Sui Dart SDK
Note: This branch is in active development and may introduce breaking changes. If you don’t need Transaction v2 feature, use the
v1branch.
Installation
dependencies:
sui: ^0.3.10
Demo
Usage
Connecting to Sui Network
/// connect to devnet
final devnetClient = SuiClient(SuiUrls.devnet);
/// connect to testnet
final testnetClient = SuiClient(SuiUrls.testnet);
/// connect to mainnet
final mainnetClient = SuiClient(SuiUrls.mainnet);
Getting coins from the faucet
Faucet V0
final faucet = FaucetClient(SuiUrls.faucetDev);
await faucet.requestSuiFromFaucetV0('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');
Faucet V1
final faucet = FaucetClient(SuiUrls.faucetDev);
await faucet.requestSuiFromFaucetV1('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');
Sui Account
Create account with private key
/// Ed25519 account
final ed25519 = SuiAccount.ed25519Account();
final ed25519Import = SuiAccount.fromPrivateKey(ed25519.privateKey());
/// Secp256k1 account
final secp256k1 = SuiAccount.secp256k1Account();
final sepc256k1Import = SuiAccount.fromPrivateKey(secp256k1.privateKey());
/// Secp256r1 account
final secp256r1 = SuiAccount.secp256r1Account();
final sepc256r1Import = SuiAccount.fromPrivateKey(secp256r1.privateKey());
Create account with mnemonic
/// create mnemonics
final mnemonics = SuiAccount.generateMnemonic();
/// Ed25519 account
final ed25519 = SuiAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
/// Secp256k1 account
final secp256k1 = SuiAccount.fromMnemonics(mnemonics, SignatureScheme.Secp256k1);
/// Secp256r1 account
final secp256r1 = SuiAccount.fromMnemonics(mnemonics, SignatureScheme.Secp256r1);
Writing APIs
Transfer Object
final account = SuiAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = SuiClient(SuiUrls.devnet);
final tx = Transaction();
tx.transferObjects(
[tx.objectId('0x2619f581cb1864d07c89453a69611202669fdc4784fb59b9cb4278ec60756011')],
account.getAddress()
);
final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);
Split and Transfer Coins
final account = SuiAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = SuiClient(SuiUrls.devnet);
final tx = Transaction();
final coin = tx.splitCoins(tx.gas, [1000]);
tx.transferObjects(
[coin],
account.getAddress()
);
final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);
Merge Coins
final account = SuiAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = SuiClient(SuiUrls.devnet);
final tx = Transaction();
tx.mergeCoins(tx.objectId('0x922ec73939b3288f6da39ebefb0cb88c6c54817441254d448bd2491ac4dd0cbd'),
[tx.objectId('0x8dafc96dec7f8d635e052a6da9a4153e37bc4d59ed44c45006e4e9d17d07f80d')]
);
final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);
Move Call
final account = SuiAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = SuiClient(SuiUrls.devnet);
const packageObjectId = '0x...';
final tx = Transaction();
tx.moveCall('$packageObjectId::nft::mint', arguments: [tx.pureString('Example NFT')]);
final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);
Publish Modules
final account = SuiAccount.fromMnemonics(mnemonics, SignatureScheme.Ed25519);
final client = SuiClient(SuiUrls.devnet);
const moduels = <String>[];
const dependencies = <String>[];
final tx = Transaction();
final upgradeCap = tx.publish(moduels, dependencies);
tx.transferObjects([upgradeCap], account.getAddress());
final result = await client.signAndExecuteTransactionBlock(account, tx);
print(result.digest);
Reading APIs
Get Owned Objects
final client = SuiClient(SuiUrls.devnet);
final objects = await client.getOwnedObjects('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');
Get Objects
final client = SuiClient(SuiUrls.devnet);
final obj = await client.getObject('0x0d49dbda185cd0941b71315edb594276731f21b2232d8713f319b02c462a2da7',
options: SuiObjectDataOptions(showContent: true)
);
final objs = await client.multiGetObjects([
'0x0d49dbda185cd0941b71315edb594276731f21b2232d8713f319b02c462a2da7',
'0x922ec73939b3288f6da39ebefb0cb88c6c54817441254d448bd2491ac4dd0cbd'
], options: SuiObjectDataOptions(showType: true));
Get Transaction
final client = SuiClient(SuiUrls.devnet);
final txn = await client.getTransactionBlock('6oH779AUs2WpwW77xCVGbYqK1FYVamRqHjV6A5wCV8Qj',
options: SuiTransactionBlockResponseOptions(showEffects: true)
);
final txns = await client.multiGetTransactionBlocks([
'9znMGToLRRa8yZvjCUfj1FJmq4gpb8QwpibFAUffuto1',
'4CEFMajEtM62MthwY1xR3Bcddoh2h5wc7jeKEy7WWsbv'
], options: SuiTransactionBlockResponseOptions(showInput: true, showEffects: true));
Get Checkpoints
final client = SuiClient(SuiUrls.devnet);
final checkpoint = await client.getCheckpoint('338000');
final checkpoints = await client.getCheckpoints(descendingOrder: true);
Get Coins
final client = SuiClient(SuiUrls.devnet);
final coins = await client.getCoins(
'0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2',
coinType: '0x2::sui::SUI');
final allCoins = await client.getAllCoins('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');
final suiBalance = await client.getBalance('0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2');
Events APIs
Querying events
final client = SuiClient(SuiUrls.devnet);
final events = await client.queryEvents(
{"Sender": "0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2"},
limit: 2
);
/// Or with EventFilter
final events = await client.queryEventsByFilter(
EventFilter(sender: "0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2"),
limit: 2
);
WebsocketClient subscribeEvent
final client = WebsocketClient(SuiUrls.webSocketDevnet);
final subscription = client.subscribeEvent({"Sender": "0xa2d8bb82df40770ac5bc8628d8070b041a13386fef17db27b32f3b0f316ae5a2"})
.listen((event) {
print(event);
}, onError: (e) {
print(e.toString());
});
Libraries
- bcs/sui_bcs
- bcs/sui_effects
- bcs/sui_pure
- bcs/type_tag_serializer
- builder/commands
- builder/hash
- builder/inputs
- builder/pure
- builder/serializer
- builder/transaction
- builder/transaction_block_data
- builder/transaction_resolver
- builder/transactions
- builder/v1
- constants
- cryptography/ed25519_keypair
- cryptography/ed25519_publickey
- cryptography/helper
- cryptography/intent
- cryptography/keypair
- cryptography/mnemonics
- cryptography/multisig
- cryptography/secp256
- cryptography/secp256_publickey
- cryptography/secp256k1_keypair
- cryptography/secp256r1_keypair
- cryptography/signature
- grpc/client
- grpc/core
- grpc/generated/google/protobuf/any.pb
- grpc/generated/google/protobuf/any.pbenum
- grpc/generated/google/protobuf/any.pbjson
- grpc/generated/google/protobuf/duration.pb
- grpc/generated/google/protobuf/duration.pbenum
- grpc/generated/google/protobuf/duration.pbjson
- grpc/generated/google/protobuf/empty.pb
- grpc/generated/google/protobuf/empty.pbenum
- grpc/generated/google/protobuf/empty.pbjson
- grpc/generated/google/protobuf/field_mask.pb
- grpc/generated/google/protobuf/field_mask.pbenum
- grpc/generated/google/protobuf/field_mask.pbjson
- grpc/generated/google/protobuf/struct.pb
- grpc/generated/google/protobuf/struct.pbenum
- grpc/generated/google/protobuf/struct.pbjson
- grpc/generated/google/protobuf/timestamp.pb
- grpc/generated/google/protobuf/timestamp.pbenum
- grpc/generated/google/protobuf/timestamp.pbjson
- grpc/generated/google/rpc/error_details.pb
- grpc/generated/google/rpc/error_details.pbenum
- grpc/generated/google/rpc/error_details.pbjson
- grpc/generated/google/rpc/status.pb
- grpc/generated/google/rpc/status.pbenum
- grpc/generated/google/rpc/status.pbjson
- grpc/generated/sui/rpc/v2/argument.pb
- grpc/generated/sui/rpc/v2/argument.pbenum
- grpc/generated/sui/rpc/v2/argument.pbjson
- grpc/generated/sui/rpc/v2/balance_change.pb
- grpc/generated/sui/rpc/v2/balance_change.pbenum
- grpc/generated/sui/rpc/v2/balance_change.pbjson
- grpc/generated/sui/rpc/v2/bcs.pb
- grpc/generated/sui/rpc/v2/bcs.pbenum
- grpc/generated/sui/rpc/v2/bcs.pbjson
- grpc/generated/sui/rpc/v2/checkpoint.pb
- grpc/generated/sui/rpc/v2/checkpoint.pbenum
- grpc/generated/sui/rpc/v2/checkpoint.pbjson
- grpc/generated/sui/rpc/v2/checkpoint_contents.pb
- grpc/generated/sui/rpc/v2/checkpoint_contents.pbenum
- grpc/generated/sui/rpc/v2/checkpoint_contents.pbjson
- grpc/generated/sui/rpc/v2/checkpoint_summary.pb
- grpc/generated/sui/rpc/v2/checkpoint_summary.pbenum
- grpc/generated/sui/rpc/v2/checkpoint_summary.pbjson
- grpc/generated/sui/rpc/v2/effects.pb
- grpc/generated/sui/rpc/v2/effects.pbenum
- grpc/generated/sui/rpc/v2/effects.pbjson
- grpc/generated/sui/rpc/v2/epoch.pb
- grpc/generated/sui/rpc/v2/epoch.pbenum
- grpc/generated/sui/rpc/v2/epoch.pbjson
- grpc/generated/sui/rpc/v2/error_reason.pb
- grpc/generated/sui/rpc/v2/error_reason.pbenum
- grpc/generated/sui/rpc/v2/error_reason.pbjson
- grpc/generated/sui/rpc/v2/event.pb
- grpc/generated/sui/rpc/v2/event.pbenum
- grpc/generated/sui/rpc/v2/event.pbjson
- grpc/generated/sui/rpc/v2/executed_transaction.pb
- grpc/generated/sui/rpc/v2/executed_transaction.pbenum
- grpc/generated/sui/rpc/v2/executed_transaction.pbjson
- grpc/generated/sui/rpc/v2/execution_status.pb
- grpc/generated/sui/rpc/v2/execution_status.pbenum
- grpc/generated/sui/rpc/v2/execution_status.pbjson
- grpc/generated/sui/rpc/v2/gas_cost_summary.pb
- grpc/generated/sui/rpc/v2/gas_cost_summary.pbenum
- grpc/generated/sui/rpc/v2/gas_cost_summary.pbjson
- grpc/generated/sui/rpc/v2/input.pb
- grpc/generated/sui/rpc/v2/input.pbenum
- grpc/generated/sui/rpc/v2/input.pbjson
- grpc/generated/sui/rpc/v2/jwk.pb
- grpc/generated/sui/rpc/v2/jwk.pbenum
- grpc/generated/sui/rpc/v2/jwk.pbjson
- grpc/generated/sui/rpc/v2/ledger_service.pb
- grpc/generated/sui/rpc/v2/ledger_service.pbenum
- grpc/generated/sui/rpc/v2/ledger_service.pbgrpc
- grpc/generated/sui/rpc/v2/ledger_service.pbjson
- grpc/generated/sui/rpc/v2/move_package.pb
- grpc/generated/sui/rpc/v2/move_package.pbenum
- grpc/generated/sui/rpc/v2/move_package.pbjson
- grpc/generated/sui/rpc/v2/move_package_service.pb
- grpc/generated/sui/rpc/v2/move_package_service.pbenum
- grpc/generated/sui/rpc/v2/move_package_service.pbgrpc
- grpc/generated/sui/rpc/v2/move_package_service.pbjson
- grpc/generated/sui/rpc/v2/name_service.pb
- grpc/generated/sui/rpc/v2/name_service.pbenum
- grpc/generated/sui/rpc/v2/name_service.pbgrpc
- grpc/generated/sui/rpc/v2/name_service.pbjson
- grpc/generated/sui/rpc/v2/object.pb
- grpc/generated/sui/rpc/v2/object.pbenum
- grpc/generated/sui/rpc/v2/object.pbjson
- grpc/generated/sui/rpc/v2/object_reference.pb
- grpc/generated/sui/rpc/v2/object_reference.pbenum
- grpc/generated/sui/rpc/v2/object_reference.pbjson
- grpc/generated/sui/rpc/v2/owner.pb
- grpc/generated/sui/rpc/v2/owner.pbenum
- grpc/generated/sui/rpc/v2/owner.pbjson
- grpc/generated/sui/rpc/v2/protocol_config.pb
- grpc/generated/sui/rpc/v2/protocol_config.pbenum
- grpc/generated/sui/rpc/v2/protocol_config.pbjson
- grpc/generated/sui/rpc/v2/signature.pb
- grpc/generated/sui/rpc/v2/signature.pbenum
- grpc/generated/sui/rpc/v2/signature.pbjson
- grpc/generated/sui/rpc/v2/signature_scheme.pb
- grpc/generated/sui/rpc/v2/signature_scheme.pbenum
- grpc/generated/sui/rpc/v2/signature_scheme.pbjson
- grpc/generated/sui/rpc/v2/signature_verification_service.pb
- grpc/generated/sui/rpc/v2/signature_verification_service.pbenum
- grpc/generated/sui/rpc/v2/signature_verification_service.pbgrpc
- grpc/generated/sui/rpc/v2/signature_verification_service.pbjson
- grpc/generated/sui/rpc/v2/state_service.pb
- grpc/generated/sui/rpc/v2/state_service.pbenum
- grpc/generated/sui/rpc/v2/state_service.pbgrpc
- grpc/generated/sui/rpc/v2/state_service.pbjson
- grpc/generated/sui/rpc/v2/subscription_service.pb
- grpc/generated/sui/rpc/v2/subscription_service.pbenum
- grpc/generated/sui/rpc/v2/subscription_service.pbgrpc
- grpc/generated/sui/rpc/v2/subscription_service.pbjson
- grpc/generated/sui/rpc/v2/system_state.pb
- grpc/generated/sui/rpc/v2/system_state.pbenum
- grpc/generated/sui/rpc/v2/system_state.pbjson
- grpc/generated/sui/rpc/v2/transaction.pb
- grpc/generated/sui/rpc/v2/transaction.pbenum
- grpc/generated/sui/rpc/v2/transaction.pbjson
- grpc/generated/sui/rpc/v2/transaction_execution_service.pb
- grpc/generated/sui/rpc/v2/transaction_execution_service.pbenum
- grpc/generated/sui/rpc/v2/transaction_execution_service.pbgrpc
- grpc/generated/sui/rpc/v2/transaction_execution_service.pbjson
- grpc/types
- http/http
- http/http_native
- http/http_web
- http/interceptor
- models/checkpoint
- models/dev_inspect_results
- models/dynamic_field
- models/object_read
- models/paged
- models/sui_event
- models/validators_apys
- multisig/multsig_publickey
- providers/json_rpc_provider
- rpc/client
- rpc/faucet_client
- rpc/websocket_client
- signers/raw_signer
- signers/signer_with_provider
- signers/txn_data_serializers/rpc_txn_data_serializer
- signers/txn_data_serializers/txn_data_serializer
- sui
- sui_account
- sui_client
- sui_urls
- types/coins
- types/common
- types/event_filter
- types/events
- types/faucet
- types/framework
- types/normalized
- types/objects
- types/sui_bcs
- types/transactions
- types/validator
- types/version
- utils/bech32/bech32
- utils/bech32/exception
- utils/dynamic_field
- utils/ed25519_hd_key
- utils/error
- utils/hex
- utils/sha
- utils/suins
- zklogin/address
- zklogin/bcs
- zklogin/jwt_utils
- zklogin/publickey
- zklogin/signature
- zklogin/types
- zklogin/utils
- zklogin/zklogin