このページの内容
トランザクション
以下の署名例では、はじめにで説明する 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 },
})最終更新日