お客様のUSDCは、昨日のレートで利息が加算されていますQuicknode 、それを自動的に本日のベストMorpho金庫に移します。7つのチェーンで稼働中。
戦略を策定するWeb3プロバイダーの冗長性の重要性
「止められないアプリ」の構築を目指している今、Web3プロバイダーの重要性と、その冗長性の重要性を理解しなければなりません。

SOC 2 タイプ II 認証取得・ISO 27001
2021年1月27日 — 読了時間7分

Web3プロバイダー(ノードプロバイダーとも呼ばれる)は、本質的にブロックチェーンデータの管理者です。これらのプロジェクトは、数百ものブロックチェーンノードからなるネットワークを運用しており、アプリケーションに対して最新のブロックチェーンデータや過去のブロックチェーンデータを提供することを任務としています。
Web3プロバイダーは、ブロックチェーンを活用したアプリケーションにおいて不可欠な要素です。これは、TrustWallet、MetaMask、MyCryptoといったウォレットやインターフェース/ゲートウェイが、ブロックチェーンネットワークと「通信」(読み取り/書き込み)を行うために利用するものです。
MetaMaskでトークンの残高を確認したり、照会したりするたびに、MetaMaskはまずブロックチェーンにこのデータを問い合わせる必要があります。この処理は、Web3プロバイダー(通常はweb3js、ethersjs、ethereum.rb、web3pyなどのライブラリを介して)を通じて行われます。
その後、Web3プロバイダーはブロックチェーンノードにクエリを送信し、その値やデータをアプリに返して、アプリがエンドユーザーに表示できるようにします。
何千人ものユーザーが同時にトークンの残高を照会すると想像してみてください――それは膨大な数のリクエストになります!Quicknode 理由は、こうしたデータを迅速かつ効率的に提供し、アプリが大規模な環境でも正常に機能できるようにするためです。
この機能はSolana Bitcoin、Ethereum、Solana トークンの残高にとどまりませんSolana Ethereum 上のスマートコントラクトの状態はSolana ほぼ13秒ごとに更新Ethereum (MainNet 平均MainNet 時間)。スマートコントラクトのイベントに依存するアプリは、リアルタイムで更新情報を受け取る必要があります。そのため、アプリはWeb3プロバイダーを利用して、イベントの購読やポーリングを行うことができます。
さて、ノードはピア・ツー・ピア(P2P)ソフトウェアにおいて興味深い要素です。ノードは、台帳の同期された最新コピーを維持し、コンセンサスに参加し、ブロックを検証し、ライトクライアントに対応し、ピアとの接続を維持する役割を担っています。ノードにはさまざまな種類(例:eth1、eth2)があり、それぞれにメリットと課題があります。
単一のノードを運用することさえ容易ではありませんが、大規模でグローバルに負荷分散されたクラスターの運用となると、なおさらです。
- 堅牢なインフラを構築するには数ヶ月を要する
- 障害が発生すると壊滅的な影響を及ぼし、復旧に数週間を要する場合がある
- ノードでは平均して5日に1回の割合で問題が発生する:
- CPU使用率の急上昇、メモリリーク、ディスクの問題
- ピアリングの不整合、データベースの破損
- トランザクションのブロードキャストに関する問題
- 頻繁に発生するバグやリグレッション
- 「安定版リリース」の6回に1回は互換性を損なう変更が含まれているWeb3プロバイダーがなければ、アプリケーションが処理するデータは存在せず、ブロックチェーンからのデータを操作したり表示したりすることもできません。
Web3プロバイダーはノードのインフラストラクチャabstract 、開発者、チーム、企業は自社のコアアプリの開発に集中することができます。Quicknode のようなプラットフォームには、開発を加速させ、ユーザーが最高のアプリを構築できるよう支援するツールや機能Quicknode 備わっています。
Web3プロバイダーがいかに不可欠であるかがわかったところで、次は冗長性とフェイルオーバーの重要性について見ていきましょう。
単一のWeb3プロバイダーを使ってアプリを構築すると、単一障害点が生じてしまいます。私たちはデータやアプリケーションの分散化を目指していますが、ほとんどのアプリは1つのプロバイダー、しかもほとんどの場合、たった1つのプロバイダーだけで稼働しています。11月11日、その唯一のプロバイダーで障害が発生するとどうなるかを、私たちは身をもって知ることになりました。
Infuraの功績は称えるべきでしょう。同社のサービスと努力がなければ、Ethereum 、アプリ開発、開発者の活動は、決して現在の水準には達しなかったでしょう。同社はEthereum 5~10%Ethereum 運用していると推定されており、そのネットワークが1日で処理するトラフィック量は、他のすべてのノードが1か月で処理する量よりも多いと言われています。
とはいえ、ノードのバージョン管理上の見落としにより、約7時間にわたるサービス停止が発生しました。
この障害により、バイナンスやビサムなどの仮想通貨取引所も、ETHおよびERC-20トークンの出金を停止せざるを得なくなりました。人気のEthereum 「MetaMask」も、Infuraをデフォルトのサービスプロバイダーとして利用しているため、利用に支障をきたしています。
この件により、多くのWeb3アプリケーションが機能停止に陥りました。このことから、私たちは何を学べるでしょうか?
他にもWeb3プロバイダーの選択肢はたくさんあります!そのQuicknode.comで、これはInfuraの代替としてそのまま利用できます。ユーザーにはendpoint 提供され、endpoint 自身のコードやcURLに組み込んだり、Etherflowのようなツールと連携させたりすることで、自分やアプリに必要なデータを取得することができます。
Web3プロバイダーの冗長性がなぜ重要なのでしょうか?dAppをより良いものにするためには、最初からWeb3プロバイダーの冗長性を組み込んでおく必要があります。そうすれば、プライマリプロバイダーで障害が発生した場合でも、それが内部的な問題(例:システム障害)であれ、ホスティングに関する問題(例:クラウドプロバイダーのサービス停止)であれ、あるいはグローバルなネットワーク関連の問題(例:光ファイバーの切断、ネットワーク障害)であれ、バックアップ/フェイルオーバー用のプロバイダーを用意しておくことで、その影響を軽減することができます。
メインのプロバイダーが応答しなくなると、バックアップのプロバイダーが引き継ぎます。これにより、アプリのダウンタイムは最小限、あるいはゼロに抑えられます。コスト削減のため、複数のプロバイダーを利用することも検討してみてください。これは一般的な慣行のように聞こえますが、実際にはそれほど一般的ではありません!
Web3プロバイダーの冗長性の重要性が理解できたところで、これを実際にどのように実践すればよいのでしょうか?
さて、unisignals.aiやfilter.sitg.app を運営し、現在はQuicknode 私たちの友人イゴールは、サービス停止が自身のアプリに与える影響を身をもって体験しました。彼はすぐに複数のプロバイダーを導入したため、彼のアプリは以前よりはるかに堅牢になり、Web3 プロバイダーの問題に対する耐性も高まりました。
彼がそれを成し遂げた方法は次のとおりです:
unisignals.ai では、Ethereum から有益な知見を引き出しています。保留中および確定済みの取引をスキャン・解析し、オンチェーンおよびオフチェーンのデータを用いて分析を補完しています。
開発の過程で学んだことをいくつかご紹介します。
無料のRPCノードを使えば、さまざまなことができます。リストはこちらをご覧ください:https://ethereumnodes.com/
Infura を利用する場合は、アプリを us-east-1 AWS リージョンでホストするのが理にかなっています。Infura の API エンドポイントは同じ AWS データセンター内にあるため、非常に低いレイテンシが期待できます。
1つのプロバイダーだけに頼らないでください。冗長性を確保しましょう:
特に無料のプロバイダーを利用する場合は、プロバイダー間で負荷を分散させる
endpoint 頻繁endpoint 、処理が遅かったりする場合は、そのエンドポイントを無効にして、後で確認してください
制限時間のあるRPCリクエスト。1つのCPUプロセス(例:Node.js)内で着信トランザクションを処理する場合、ハングしたPromiseによってアプリがクラッシュする可能性があるため、それらを速やかに解決する必要があります。
異なるプロバイダー間で分散され、結果を取得可能で、時間制限のあるRPC操作の実装例については、こちらをご覧ください:
頻繁に必要となる定数値(例えば、シンボルやERC20トークンの供給量など)をキャッシュしておけば、RPCクエリの回数を減らすことができます。
また、リアルタイム処理を行う場合は、複数のプロバイダーに同時に加入するのも理にかなっています:
取引領収書
保留中の取引
受信したトランザクションを記憶し、重複をスキップする。
上記の内容の使用例については、こちらをご覧ください:https://github.com/kigorw/eth-utils/blob/main/index.ts
リアルタイム処理においては、処理済みのブロックを追跡しておくことも理にかなっています。サーバーが再起動した場合、見逃したブロックに含まれるトランザクションを後から処理することができるからです。
時間的制約のあるトランザクション(例えば、特定のブロックでのDEX上のスワップなど)を送信する場合は、レート制限の対象とならないRPC APIのリストを別途用意し、同じトランザクション(同じノンス)を複数のプロバイダーに同時に送信してください。また、https://taichi.network/ のプライベートトランザクションを使用することで、フロントランニングに対する防御策を講じることもできます。
イゴールからの素晴らしいアドバイス!
これは、ブロックチェーンアプリケーションにWeb3プロバイダーの冗長性を実装する方法の一つに過ぎません。
素晴らしいのは、Quicknode を使えば、堅牢で信頼性の高いバックアップサービスを無料で導入できることです(プレミアムプランはわずか49ドルから)。これはまさに最高の保険策です!
もし、すでにアプリに一定のユーザー基盤があり、リクエスト数も一定数ある場合は、Quicknodeの「Build」または「Scale」プランのご利用をご検討ください!
Quicknodeを選ぶ理由
Quicknode 、ブロックチェーンノードの運用Quicknode 、開発者は DevOps や NodeOps、稼働時間、スケーリング、セキュリティなどの心配をすることなく、開発中の素晴らしい dApp に集中することができます。
Quicknode 、ノードのメンテナンスや同期といった煩わしさを解消しつつ、市場投入までの貴重な時間をQuicknode 。これは、開発者によって開発者のために作られた、すべてのdApp開発者にとって欠かせないツールです。詳細については、Quicknode「ガイド」セクションをご覧ください。
プロジェクトについてサポートが必要だったり、ご質問がある場合は、こちらのフォーム、Twitter(Quicknode)、またはDiscordからご連絡ください!
2017年に設立されたQuicknode 、開発者や企業向けにエンタープライズグレードのブロックチェーンインフラストラクチャQuicknode 。99.99%の稼働率と80以上のチェーンへの対応により、各チームは妥協することなくオンチェーンアプリケーションを構築・拡張することができます。
最新のエンジニアリングに関する知見、製品の最新情報、Web3のニュースを、メールボックスに直接お届けします。