Skip to Content
dApps

トランザクション

以下の署名例では、はじめにで説明する connectSuiAccount() を使用します。この関数は Wallet Standard アカウントと有効なチェーンを返します。例では @mysten/[email protected] を使用します。従来の *TransactionBlock メソッドも、現在は @mysten/[email protected] で定義された Transaction を入力として宣言しています。

署名前に権限を要求し、接続済みアカウントを選択して、有効なチェーンを読み取ってください。これらの例では、現在のプロバイダーが受け入れる @mysten/[email protected] の形式に合う @mysten/[email protected] を使用します。

Sui でトランザクションに署名して実行する方法を説明します。

以下の例を実行する前に、アカウントコンテキストを初期化してください:

const { account, chain } = await connectSuiAccount()

トランザクションブロックに署名して実行

現在の注入型プロバイダーは、signAndExecuteTransactionBlock の options を転送しません。同じチェーンの Sui クライアントで返された digest を照会し、effects、events、object changes を要求します。

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, })

トランザクションブロックに署名 (実行なし)

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, // })

トランザクションに署名して実行 (新 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, })

トランザクションに署名 (新 API)

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

スマートコントラクト操作

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, })

パッケージを公開

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, })

Sui SDK との併用

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 }, })
最終更新日