Skip to Content
dApps

Transactions

Les exemples de signature ci-dessous utilisent connectSuiAccount() depuis Premiers pas. Il renvoie un compte Wallet Standard et sa chaîne active. Les exemples utilisent @mysten/[email protected]. Même les anciennes méthodes *TransactionBlock déclarent désormais des entrées Transaction dans @mysten/[email protected].

Demandez l’autorisation avant de signer, sélectionnez un compte connecté et lisez la chaîne active. Ces exemples utilisent @mysten/[email protected], qui correspond à @mysten/[email protected] accepté par le fournisseur actuel.

Découvrez comment signer et exécuter des transactions sur Sui.

Initialisez le contexte du compte avant les exemples suivants :

const { account, chain } = await connectSuiAccount()

Signer et exécuter un bloc de transaction

Le fournisseur injecté actuel ne transmet pas options dans signAndExecuteTransactionBlock. Interrogez l’empreinte renvoyée avec un client Sui sur la même chaîne pour demander les effets, événements ou changements d’objets.

import { Transaction } from '@mysten/sui/transactions' // Create transaction block const txb = new Transaction() // Add a transfer txb.transferObjects( [txb.object('0xobject_id')], txb.pure.address('RECIPIENT_SUI_ADDRESS') ) // Or send SUI const [coin] = txb.splitCoins(txb.gas, [txb.pure.u64(1000000000)]) // 1 SUI txb.transferObjects([coin], txb.pure.address('RECIPIENT_SUI_ADDRESS')) // Sign and execute const result = await provider.signAndExecuteTransactionBlock({ account, chain, transactionBlock: txb, }) console.log({ digest: result.digest, })

Signer un bloc de transaction (sans l’exécuter)

const txb = new Transaction() // ... build transaction const signedTxb = await provider.signTransactionBlock({ account, chain, transactionBlock: txb, }) console.log({ transactionBlockBytes: signedTxb.transactionBlockBytes, signature: signedTxb.signature, }) // Execute later using Sui SDK // const result = await suiClient.executeTransactionBlock({ // transactionBlock: signedTxb.transactionBlockBytes, // signature: signedTxb.signature, // })

Signer et exécuter une transaction (nouvelle API)

// Using the newer signAndExecuteTransaction method import { Transaction } from '@mysten/sui/transactions' const transaction = new Transaction() const [coin] = transaction.splitCoins(transaction.gas, [transaction.pure.u64(100000000)]) transaction.transferObjects([coin], transaction.pure.address('RECIPIENT_SUI_ADDRESS')) const result = await provider.signAndExecuteTransaction({ account, chain, transaction, })

Signer une transaction (nouvelle API)

const signedTxn = await provider.signTransaction({ account, chain, transaction, })

Interaction avec un contrat intelligent

Appel Move

const txb = new Transaction() // Call a Move function txb.moveCall({ target: '0xpackage::module::function', arguments: [ txb.pure.string('arg1'), txb.object('0xobject_id'), ], typeArguments: ['0x2::sui::SUI'], }) const result = await provider.signAndExecuteTransactionBlock({ account, chain, transactionBlock: txb, })

Publier un paquet

const txb = new Transaction() const [upgradeCap] = txb.publish({ modules: compiledModules, dependencies: [ '0x1', // Move stdlib '0x2', // Sui framework ], }) txb.transferObjects([upgradeCap], txb.pure.address(account.address)) const result = await provider.signAndExecuteTransactionBlock({ account, chain, transactionBlock: txb, })

Utilisation avec le SDK Sui

import { SuiClient } from '@mysten/sui/client' const client = new SuiClient({ url: 'https://fullnode.mainnet.sui.io' }) // Get balance const balance = await client.getBalance({ owner: accountAddress, }) // Get objects const objects = await client.getOwnedObjects({ owner: accountAddress, }) // Get transaction const txn = await client.getTransactionBlock({ digest: txDigest, options: { showEffects: true }, })
Dernière mise à jour le