@solana/web3.js(レガシー)、@solana/wallet-adapter-*、または以前のframework-kitパッケージ(@solana/client、@solana/react-hooks、@solana/web3-compat)から移行する場合は、@solana/kitプラグインまたは@solana/web3.js v3(以降)への移行をお勧めします。
このページでは、すでにご存知の概念をKitの対応する概念に対応付けています。
概念の対応表
| web3.js(レガシー)/ wallet-adapter | Kit |
|---|---|
new Connection(url) | createSolanaRpc(url)、またはクライアント上の.use(solanaRpc({ rpcUrl })) |
PublicKey | Address — address("...")で文字列を変換 |
Keypair | generateKeyPairSigner() または@solana/kit-plugin-signerプラグイン |
SystemProgram.transfer(...) | @solana-program/systemのgetTransferSolInstruction(...) |
LAMPORTS_PER_SOL 演算 | @solana/kitのlamports(...) |
Transaction / VersionedTransaction | トランザクションプランナーによって構築・パックされるトランザクションメッセージ |
sendAndConfirmTransaction(...) | client.sendTransaction([...])(プランナーが署名・送信・確認を行う) |
@solana/wallet-adapter-* | @solana/kit-plugin-wallet + Wallet Standard検出 |
web3.js v3は、上記のクラスベースの名前(Connection、Keypair、Transaction、PublicKey)を、Kit内部の薄いラッパーとして維持しています。そのため、Kitの列は、v3でこれらのクラスが内部で行っている処理も示しています。
web3.jsからの移行
@solana/web3.js(レガシー)の大規模なコードベースを保守していて、Kitへの全面的な書き換えが現実的でない場合、web3.js v3が橋渡しとなります。@solana/web3.js@3でインストールしてください。従来のクラスベースAPI(Connection、Keypair、Transaction、PublicKey)を@solana/kitの内部の上に再構築したものです。Kitを基盤としているため、相互運用性が高く、PublicKeyは主要なアドレス型であり、その.toBase58()はKitのブランド型Address文字列を返します。また、v3のKeypairはKitのKeyPairSignerを実装しているため、Kit API、プラグイン、Codama生成クライアントに直接渡すことができます。
v1トランザクションとweb3.js(レガシー)
web3.jsでv1トランザクションを送信する場合は、v3以降を使用する必要があります。
移行自体については、公式のweb3.js v1 → v3 移行ガイドをご覧ください。
ウォレット
Kitはwallet-adapterを使用しません。@solana/kit-plugin-walletはWallet
Standardウォレットを検出し、client.walletと
Reactフックを通じて公開します。最新のウォレット(Phantom、Solflare、Backpack、その他)はWallet
Standardを通じて自身を通知するため、ウォレットごとのアダプターパッケージは不要です。
@solana/connectorのような既成ツールを使用することもできます。このツールはKitのプリミティブを直接使用してウォレットに接続します。
まだwallet-adapterをお使いですか?
@solana/wallet-adapter-*で構築されたアプリを管理しており、まだ移行の準備ができていない場合は、wallet-adapter
リポジトリがそのスタックのリファレンスとして引き続き利用できます。新しいものにはKitウォレットプラグインをお勧めします。
次のステップ
- Kitクライアント — プラグインからクライアントを構築する。
- React —
@solana/reactバインディングとウォレットフック。 - Next.jsチュートリアル — フルアプリのエンドツーエンド。
Is this page helpful?