Skip to Content
dApps

はじめに

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

OneKey のプロバイダーを検出して接続し、Sui を操作する方法を説明します。

OneKey は Sui Wallet Standard を実装し、互換性のある wallet-standard 統合に対応しています。


プロバイダーの検出

// Detect OneKey Sui provider const provider = window.$onekey?.sui if (!provider) { throw new Error('OneKey Sui provider not detected') }

権限を確認

// Check if already connected const hasPermission = await provider.hasPermissions() if (hasPermission) { const accounts = await provider.getAccounts() console.log('Connected accounts:', accounts) }

接続を要求

// Request permissions to connect const result = await provider.requestPermissions() if (result) { const accounts = await provider.getAccounts() console.log('Connected:', accounts[0].address) }

署名用のアカウントコンテキスト

@mysten/[email protected] をインストールします。注入されたプロバイダーの getAccounts() は AccountInfo[] を返しますが、署名メソッドで必要な WalletAccount とは異なります。以下のヘルパーは Wallet Standard 経由で完全なアカウントを取得します。ウォレット登録後、ユーザー操作から呼び出してください。拒否を処理し、アカウントやネットワークが変わったら再接続してください。

import { getWallets, isWalletWithRequiredFeatureSet } from '@mysten/wallet-standard' async function connectSuiAccount() { const wallet = getWallets().get().find(wallet => wallet.name === 'OneKey Wallet') if (!wallet || !isWalletWithRequiredFeatureSet(wallet)) { throw new Error('OneKey Sui Wallet Standard is not available') } const { accounts } = await wallet.features['standard:connect'].connect() const [account] = accounts const chain = await provider.getActiveChain() if (!account || !chain || !account.chains.includes(chain)) { throw new Error('No connected Sui account for the active chain') } return { account, chain } }

アカウントを取得

const accounts = await provider.getAccounts() accounts.forEach(account => { console.log({ address: account.address, // Sui address publicKey: account.publicKey, // Public key (hex string) }) })

有効なチェーンを取得

const chain = await provider.getActiveChain() console.log('Active chain:', chain) // e.g., 'sui:testnet'

接続状態を確認

const isConnected = provider.isConnected() console.log('Connected:', isConnected)

切断

await provider.disconnect()

イベントリスナー

アカウント変更を監視

provider.onAccountChange((account) => { if (account) { console.log('Account changed:', account.address) } else { console.log('Disconnected') } })

ネットワーク変更を監視

provider.onNetworkChange((network) => { console.log('Network changed:', network) })

Sui Wallet Kit との併用

この React の例では、以下に固定した互換性のあるパッケージバージョンを使用します:

npm install @mysten/[email protected] @mysten/[email protected] @tanstack/react-query@^5
import { SuiClientProvider, WalletProvider } from '@mysten/dapp-kit' import { getFullnodeUrl } from '@mysten/sui/client' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' const queryClient = new QueryClient() const networks = { mainnet: { url: getFullnodeUrl('mainnet') }, testnet: { url: getFullnodeUrl('testnet') }, } function App() { return ( <QueryClientProvider client={queryClient}> <SuiClientProvider networks={networks} defaultNetwork="mainnet"> <WalletProvider> <YourApp /> </WalletProvider> </SuiClientProvider> </QueryClientProvider> ) }

OneKey は Sui Wallet Standard を通じて自動検出されます。

最終更新日