コンテンツへスキップ
0%

Ethereumノードとは?

Alchemy team headshot

執筆者 Alchemy

2022年4月18日 公開読了時間 1 分

定義と用途

Ethereumノードとは、Ethereumネットワークに接続するために必要なソフトウェアを実行しているコンピュータのことです。ノード同士が接続し合い、トランザクションの検証やブロックチェーンの状態に関するデータの保存のために情報をやり取りします。

これらの用語はしばしば同じ意味で使われますが、厳密には、接続されたコンピュータがノードであり、そこで実行されているソフトウェアがクライアントと呼ばれます。

なぜノードはWeb3にとって重要なのか?

Ethereumネットワーク全体でブロックチェーンノードが接続する様子のアニメーション

ノードはブロックチェーンネットワークを構成する要素であり、ネットワークにアクセスする唯一の手段です。

各ノードはブロックチェーンのコピーを個別に保持し、それが他のすべてのノードが持つコピーと一致していることを確認する役割を担います。何らかの操作によって新しいブロックがブロックチェーンに追加される必要があるとき、ネットワーク上のすべてのノードがそれを処理しなければなりません。

ブロックチェーンノードが新しいブロックについてコンセンサスに達する様子のアニメーション

各ノードは、署名とトランザクションの正当性に基づいて、最新のブロックを受理するか拒否するかを判断します。ブロックが受理されると、コンセンサスに達しすべてのノードが同期するまで、他のノードへと共有され続けます。ノードは不正なブロックを迅速に拒否し、ルールを破ろうとする不正なノードを特定することができます。ノードのネットワークが常に通信し続けることによって、単一の情報源に依存する必要がなくなり、それに伴う諸問題も回避できます。

この異なるノード間でのコンセンサスによってブロックチェーンネットワークは分散化され、これがWeb3の基盤となっています。稼働するノードの数が増えるほど、ブロックチェーンはより強固になります。

ノードにはどのような種類があるのか?

ノードには3つの種類があります。

  • ライトノード
  • フルノード
  • アーカイブノード

_ライトノード_はブロックヘッダーのみをダウンロードします。これはネットワーク上でトランザクションを行うために必要な最小限のデータです。ライトノードはこのデータを使って必要な特定のブロックを再生成できるため、トランザクションを検証することができます。

これによりライトノードはネットワークと効率的にやり取りでき、数メガバイトの帯域幅と数ギガバイトのストレージを節約できます。そのためライトノードは、スマートフォンやノートパソコンのようなメモリリソースが限られた一般的なデバイス上でも動作させることができます。

しかしライトノードには限界もあります。ライトノードはアクセスできないデータを取得するためにフルノードに問い合わせる必要が生じることがあり、その場合フルノードがトランザクションを検証するよりも時間がかかることがあります。

ライトノードはノードを実行する最も簡単な方法ですが、それでもクライアントのインストール、変数の設定、ブロックヘッダーのダウンロード、正常に動作しているかの確認には時間と知識が必要です。

Light Node
Full Node

Block Headers

Block Headers

Full Block State

Full Block State

_フルノード_は、ネットワーク上のブロックが正しいことを検証するために必要なすべてを保持しています。任意のスマートコントラクトとやり取りしたり、自身でデプロイしたりすることができます。

フルにデータを利用・保存するため、フルノードにはより多くの計算リソースと帯域幅が必要になります。フルノードはブロックゼロから最新のブロック(現在1,000万を超えて増加中)まで、ブロックチェーンの状態全体をダウンロード・保存・検証するため、同期に数週間かかることもあります。

_アーカイブノード_はフルノードよりもさらに一歩進んだものです。フルノードは検証にもう必要ないエントリ、つまりチェーンとの最新のやり取り以外のエントリを削除しますが、アーカイブノードはすべて(数テラバイトに及ぶ追加データ)を保持します。この詳細情報は情報をより効率的にクエリするのに優れており、一部のアプリケーションでは重宝しますが、ほとんどの場合は過剰です。

なぜノードの実行は難しいのか?

ノードを立ち上げて稼働させることは、長く困難なプロセスになり得ます。特にWeb3の世界に不慣れで技術的な専門知識を持っていない場合はなおさらです(少なくとも今のところは)。

フルノードが現在のブロックチェーンの状態について1,000万を超えるすべてのノードと同期するのに数週間かかる可能性があるというだけでも、多くの人がこの分野で開発することをためらう要因になります。

コストも要因の一つであり、あっという間に積み重なります。ハードウェア購入のための初期投資の高さや、電気代・サーバーホスティングの継続的なコストが含まれます。ノードを運用する際は、それが常時稼働していることも確認しなければなりません。インターネットの遅延、停電、ハードウェアの不具合はコストのかかるダウンタイムにつながります。

クライアントのアップデートはEthereumのスケーラビリティ、セキュリティ、持続可能性を絶えず改善するのに役立ちますが、こうした変更が予期しない問題を引き起こすこともあります。そして、より大きなものを構築しようとしたときに、本当の問題が始まります。

Ethereumノードのスケーリングにはどのような問題があるのか?

Ethereumノードは、そもそもこのレベルのリクエスト数にスケールするようには設計されておらず、独特の課題を抱えています。

信頼性

一部のリクエストは、ノードにログゼロから現在のブロックまでさかのぼってクエリすることを求め、タイムアウトすることがあります。この「死のクエリ」はノードをクラッシュさせることがあり、一日のいつでも発生し得ます。標準的なノードのように信頼性が72%であっても、それはアプリケーションが年間100日以上オフラインになり得ることを意味します。

スケーラビリティ

ノードインフラのスケーリングは容易ではありません。構築しているアプリケーションがTwitterで一夜にしてバズったものの、既存のノードが突然のトラフィックとトランザクション量の急増に対応できない状況を想像してください。

新しいノードは同期に数週間かかるため、すぐに立ち上げることはできません。それに加え、新たな需要が既存のノードに過負荷をかけてクラッシュさせる可能性もあります。その結果、誰もアプリケーションを使えないダウンタイムが発生し、構築したものを信頼できないと感じるユーザーの不満につながりかねません。

データの一貫性

Web2では、上位に位置しトラフィックを区別のないサーバー群に分散させるネットワーク層であるロードバランサーを使うことで、こうしたスケーラビリティの問題を回避できます。しかしブロックチェーンは非同期であるため、ノードではこれが不可能です。2つのノードは最終的には同一の最新ブロックを共有することになりますが、ある時点においては、一方が他方より遅れていることがあります。

ロードバランシングを行うと、最新ブロックについて異なる見解を持つ別々のノードにトラフィックが振り分けられるため、まったく異なる2つの結果につながる可能性があります。長らく欲しかったNFTを購入したのに、リフレッシュしたらそれが消えてしまっているように見える、という状況を想像してみてください。

ロードバランスされたブロックチェーンノードが一貫性のないデータを返す様子の図

こうしたデータの不整合を避けようとすると、開発チームは複雑な回避策を継ぎ接ぎすることになり、結局はエラーを引き起こしアプリケーションをクラッシュさせてしまいます。これらの問題はすべて、ノードを扱う際に開発者がスケーリング、信頼性の維持、データの一貫性の確保のいずれかを選ばざるを得ないことを意味し、誰にとっても理想的とは言えない体験につながります。

Node-as-a-Serviceはいつ使うべきか?

これらすべてが少し圧倒されるように感じても、心配は要りません。始めたばかりであっても、ノードの問題に時間とお金をかけすぎていると感じていても、Node-as-a-Serviceがその解決策になり得ます。

Alchemyのようなノードプロバイダーがノードを運用することで、あなたはアプリケーションの開発に集中できます。ほとんどのプロバイダーは非常に簡単に統合でき、多くの場合、ブロックチェーンへの読み書きを始めるのに必要なのはAPIだけです。

つまり、サーバーアクセスの費用を支払い、ハードウェア要件を満たし、状態を自分ですべて維持する代わりに、AlchemyのSupernodeインフラを使うことができます。

スケーラブルなEthereumノードアクセスのためのAlchemy Supernodeインフラの図

たった1行のコードで。

Alchemy APIキーを使ってEthereumに接続するコードスニペット

Alchemyは独自のコーディネーターサービスと最高水準の信頼性により、卓越したデータの正確性を保証します。専用の分散システムによってこれを実現し、迅速かつシームレスなスケーリングを可能にすることで、より良い構築とより速い出荷を支援します。

「自前のノードやエラーの多いサービスを使うことは、自社の事業とは無関係な問題に何百時間もの貴重なエンジニアリング時間を浪費することを意味します。信頼性、速度、サポートにおいてAlchemyに匹敵するものは他にありません。」— Alex Atallah, CTO, OpenSea

OpenSea、Dapper Labs、0x、Royal、Axie Infinityをはじめとする主要なブロックチェーン企業やプロジェクト数百社が、Alchemyの非常に高い信頼性、卓越したカスタマーサービス、そしてWeb3での構築をかつてないほど身近にする充実した製品群を理由にAlchemyを選んでいます。

OpenSeaやDapper LabsをはじめとするAlchemy上で構築している企業のロゴ

Alchemyアカウントに登録して、ノードの心配をすることなく、すぐに構築を始めましょう。AlchemyがWeb3での構築の道のりをどのように支援できるかについてさらに知りたい方は、Getting Started With Alchemyのドキュメントをご覧いただくか、Alchemy Discordで24時間いつでもお気軽にお問い合わせください。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。