-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
メタマスクを使用して私のDAPPのチェーンの変更を処理する方法は?
"Handle MetaMask chain changes in dApps by listening for the `chainChanged` event and updating your provider and contracts accordingly."
2025/07/02 21:01
ダップのチェーンの変化を理解する
分散型アプリケーション(DAPP)を開発または相互作用する場合、ユーザーと開発者が直面する最も一般的な課題の1つは、チェーンの変更を処理することです。最も広く使用されている暗号通貨ウォレットの1つであるメタマスクは、ユーザーが異なるブロックチェーンネットワークを切り替えることができます。ただし、このようなチェーンの変更を検出および応答するようにDAPPが適切に構成されていない場合、これは混乱を引き起こす可能性があります。これには、Ethereum MainnetからBinance Smartチェーンまたはテストネット環境への切り替えなどのシナリオが含まれます。
コアの問題は、メタマスクで選択されたネットワークが変更されたときにDAPPが正しく反応するようにすることを中心に展開します。これは、チェーンIDまたはRPCエンドポイントが誤っていないため、ユーザーエクスペリエンスを維持し、トランザクションエラーを防ぐために重要です。
メタマスクのネットワークの変更を検出します
Metamaskは、 chainChangedと呼ばれるイベントリスナーを提供します。これは、ユーザーが別のネットワークに切り替えるたびにトリガーされます。これを処理するには、DappのJavaScriptコード内にチェーン変更されたイベントリスナーを実装する必要があります。
これがあなたがそれをセットアップする方法です:
- Web3をインポートするか、window.ethereumから注入プロバイダーを使用します。
-
chainChangedのイベントリスナーを追加します:window.ethereum.on('chainChanged', handleChainChanged); -
handleChainChanged関数を定義して、新しいチェーンIDに基づいてDAPPをリロードまたは再構成します。
これにより、DAPPは常にユーザーが現在接続しているネットワークを認識し、それに応じて適応できるようになります。
チェーンIDとネットワーク識別子の取り扱い
各ブロックチェーンネットワークには、チェーンIDとして知られる一意の識別子があります。たとえば、Ethereum MainnetはチェーンID 1を使用し、Rinkebyは4使用します。ユーザーがチェーンを切り替えると、 chainChangedイベントは新しいチェーンIDを16進形式で返します。
互換性を確保するために、あなたのdappは次のようにする必要があります
parseInt(chainId, 16)を使用して、返されたチェーンIDを16進数から小数点に変換します。- サポートされているチェーンIDのリストに対して、結果の値を比較します。
- 適切なUIフィードバックを表示するか、選択したチェーンがサポートされていない場合にユーザーをリダイレクトします。
チェーンがサポートされていない場合、DAPPはユーザーにバックバックを切り替えるか、メタマスクを介してカスタムネットワークを追加する方法の指示を提供するように促す必要があります。
プロバイダーの更新と契約の再接続
チェーンの変更を検出した後、プロバイダーを更新し、スマートコントラクトインスタンスを再接続することが不可欠です。そうしないと、データの取得が誤っていないか、トランザクションが失敗する可能性があります。
従うべきステップ:
- チェーンが変更された後、
window.ethereumを使用してWeb3の新しいインスタンスを作成します。 - 更新されたプロバイダーを使用して、すべての契約インスタンスを再接続します。
- アカウントのバランスと契約状態を再評価して、現在のネットワークを反映します。
このプロセスにより、すべての相互作用が正しいチェーンで発生し、ネットワークスイッチに関係なくDAPPが応答性があり正確なままであることが保証されます。
ユーザーにカスタムチェーンを追加するように促します
場合によっては、DAPPがユーザーがMetamaskでデフォルトで利用できないネットワークに接続する必要がある場合があります。そのような場合、 wallet_addEthereumChainメソッドを使用してカスタムネットワークを追加するように求めることができます。
このアクションをトリガーする方法は次のとおりです。
- ターゲットネットワークのRPC URL、チェーンID、通貨シンボル、およびブロックエクスプローラーURLを準備します。
- 次の方法を呼び出します。
await window.ethereum.request({ method: 'wallet_addEthereumChain', params: [{chainId: '0x...', rpcUrls: ['https://...'], chainName: 'Custom Network', nativeCurrency: { name: 'Token', symbol: 'TKN', decimals: 18 }, blockExplorerUrls: ['https://...']}] });
これにより、メタマスク確認ダイアログが開き、ユーザーがネットワークを安全に追加できます。
よくある質問
チェーンチェンジされたイベントはどのくらいの頻度で発火しますか?
チェーンチェンジされたイベントは、ユーザーがメタマスクで手動でネットワークを切り替えるたびに、または別のDAPPがネットワークの変更をトリガーするたびに発射されます。初期ページのロード中に発生するのではなく、ネットワークが開始後に変更された場合にのみ発生します。
メタマスクでプログラムでチェーンを切り替えることはできますか?
はい、 wallet_switchEthereumChainメソッドを使用してチェーンスイッチをリクエストできます。目的のチェーンIDを16進形式で渡す必要があります。チェーンがまだ追加されていない場合、メタマスクはユーザーに最初に追加するように促します。
なぜ私のDAPPはチェーンをすぐに検出しないのですか?
window.ethereum.on('chainChanged', callback)を使用して、 chainChangedイベントを積極的に聞く必要があります。このリスナーが実行時に登録されていない場合、または実行中に削除された場合、DAPPはチェーンの変更を検出しません。
ユーザーがサポートされていないチェーンを選択するとどうなりますか?
DAPPが選択したチェーンをサポートしていない場合、現在のネットワークがサポートされていないことを示す警告メッセージを表示する必要があります。また、正しいネットワークを追加するか、サポートされているネットワークに切り替えることにより、ユーザーをガイドするボタンを提供することもできます。
免責事項:info@kdj.com
提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。
このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。
- アイリス・エナジーとビットコイン・マイニング迷路:第4四半期の収益不足は業界の逆風を示唆
- 2026-02-06 13:10:02
- 暗号通貨の冷ややかな歓迎: AI が加熱する中、ビットコインの急落でアイレンの懐が圧迫される
- 2026-02-06 12:50:02
- スーパーボウルのコイントスの呪い:鉄格子の賭けか、それともギャンブラーの幽霊か?
- 2026-02-06 13:10:02
- アルトコインシーズン指数が急落、市場変化の中でビットコインの優位性を示唆
- 2026-02-06 13:05:01
- 市場のボラティリティとFRBの不確実性の中でビットコインはトランプ大統領選挙後の安値に急落
- 2026-02-06 13:05:01
- ETF流出とFRBの懸念の中でビットコイン価格急落:市場はリセット?
- 2026-02-06 09:40:02
関連知識
Bitcoin のプライバシーを保護するための新しい受信アドレスを生成するにはどうすればよいですか?
2026-01-28 13:00:19
Bitcoin アドレスの再利用リスクを理解する1. 複数のトランザクションにわたって同じ Bitcoin アドレスを再利用すると、トランザクション履歴がパブリック ブロックチェーン分析ツールに公開されます。 2. 再利用されたアドレスにリンクされたすべてのトランザクションを集計して、ウォレット残高...
ウォレットリンク経由でEtherscanの取引履歴を表示するにはどうすればよいですか?
2026-01-29 02:40:09
ウォレットの取引履歴へのアクセス1. 安全で更新された Web ブラウザを使用して、Etherscan の公式 Web サイトに移動します。 2. ホームページの上部中央に目立つ位置にある検索バーを見つけます。 3. 「0x」で始まる 42 文字の英数字で構成される完全な Ethereum ウォレッ...
新しいデバイスで Trezor ウォレットを復元するにはどうすればよいですか?
2026-01-28 06:19:47
回復プロセスを理解する1. Trezor デバイスは、初期セットアップ中に生成された 12 ワードまたは 24 ワードのリカバリ シードに依存します。このシードは、ウォレットの秘密鍵の唯一の暗号表現です。 2. 回復フレーズは Trezor サーバーやクラウドには保存されません。ユーザーが物理的に書...
Temple Wallet で Tezos (XTZ) ステーキングを委任するにはどうすればよいですか?
2026-01-28 11:00:31
ステーキングインターフェイスへのアクセス1. Temple Wallet ブラウザ拡張機能またはモバイル アプリケーションを開き、ウォレットのロックが解除されていることを確認します。 2. XTZ 残高が目立つように表示されているメイン ダッシュボードに移動します。 3. XTZ 残高の横にある[ス...
非保管ウォレットで定期購入を設定するにはどうすればよいですか?
2026-01-28 15:19:33
非保管ウォレットの制限について1. 非保管ウォレットは秘密鍵を集中サーバーに保存しないため、ユーザーは資産と署名権限を完全に制御できます。 2. これらのウォレットには、スケジューリング インフラストラクチャが組み込まれていません。MetaMask、Trust Wallet、または Exodus に...
クリップボードをハイジャックするマルウェアからウォレットを守るにはどうすればよいでしょうか?
2026-01-27 22:39:55
暗号通貨ウォレットにおけるクリップボードのハイジャックについて1. クリップボード ハイジャック マルウェアは、システム クリップボードで暗号通貨ウォレット アドレスを監視します。 2. ユーザーが正規のウォレット アドレスをコピーすると、マルウェアはそれを攻撃者が制御するアドレスに置き換えます。 ...
Bitcoin のプライバシーを保護するための新しい受信アドレスを生成するにはどうすればよいですか?
2026-01-28 13:00:19
Bitcoin アドレスの再利用リスクを理解する1. 複数のトランザクションにわたって同じ Bitcoin アドレスを再利用すると、トランザクション履歴がパブリック ブロックチェーン分析ツールに公開されます。 2. 再利用されたアドレスにリンクされたすべてのトランザクションを集計して、ウォレット残高...
ウォレットリンク経由でEtherscanの取引履歴を表示するにはどうすればよいですか?
2026-01-29 02:40:09
ウォレットの取引履歴へのアクセス1. 安全で更新された Web ブラウザを使用して、Etherscan の公式 Web サイトに移動します。 2. ホームページの上部中央に目立つ位置にある検索バーを見つけます。 3. 「0x」で始まる 42 文字の英数字で構成される完全な Ethereum ウォレッ...
新しいデバイスで Trezor ウォレットを復元するにはどうすればよいですか?
2026-01-28 06:19:47
回復プロセスを理解する1. Trezor デバイスは、初期セットアップ中に生成された 12 ワードまたは 24 ワードのリカバリ シードに依存します。このシードは、ウォレットの秘密鍵の唯一の暗号表現です。 2. 回復フレーズは Trezor サーバーやクラウドには保存されません。ユーザーが物理的に書...
Temple Wallet で Tezos (XTZ) ステーキングを委任するにはどうすればよいですか?
2026-01-28 11:00:31
ステーキングインターフェイスへのアクセス1. Temple Wallet ブラウザ拡張機能またはモバイル アプリケーションを開き、ウォレットのロックが解除されていることを確認します。 2. XTZ 残高が目立つように表示されているメイン ダッシュボードに移動します。 3. XTZ 残高の横にある[ス...
非保管ウォレットで定期購入を設定するにはどうすればよいですか?
2026-01-28 15:19:33
非保管ウォレットの制限について1. 非保管ウォレットは秘密鍵を集中サーバーに保存しないため、ユーザーは資産と署名権限を完全に制御できます。 2. これらのウォレットには、スケジューリング インフラストラクチャが組み込まれていません。MetaMask、Trust Wallet、または Exodus に...
クリップボードをハイジャックするマルウェアからウォレットを守るにはどうすればよいでしょうか?
2026-01-27 22:39:55
暗号通貨ウォレットにおけるクリップボードのハイジャックについて1. クリップボード ハイジャック マルウェアは、システム クリップボードで暗号通貨ウォレット アドレスを監視します。 2. ユーザーが正規のウォレット アドレスをコピーすると、マルウェアはそれを攻撃者が制御するアドレスに置き換えます。 ...
すべての記事を見る














