Sur cette page
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 },
})