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

最適なOptimismノードとは?パブリック vs プライベート vs セルフホスト

Alchemy team headshot

執筆者 Alchemy

2022年9月6日 公開読了時間 1 分

Optimismからデータを取得するには、dAppはRPCノードを通してリクエストを送信する必要があります。この記事では、Optimism上のweb3開発をサポートする、さまざまな種類のノードについて解説します。

Optimismとは

Optimismは、オプティミスティックロールアップの仕組みを活用し、最大2,000トランザクション/秒を実現するEthereumのレイヤー2(L2)スケーラビリティソリューションです。Optimismは明確なコア設計思想に基づいて、自らのブロックチェーンを設計・維持しています。

  1. シンプルさ
  2. プラグマティズム
  3. 持続可能性
  4. Optimism

オプティミスティックロールアップとは

オプティミスティックロールアップは、Ethereumのセキュリティを活用しながら、計算とデータストレージをオフチェーンに移すことで、Ethereumのベースレイヤーにおけるスループットとレイテンシを改善する仕組みです。Optimismはレイヤー2チェーン上で行われた多数のトランザクションをまとめてロールアップを作成します。その後、ロールアッププロトコルはこれらのトランザクションの妥当性を楽観的に仮定し、ロールアップをEthereumのL1チェーンに送信します。

Optimismノードとは

Optimismノードは、単一のコンピュータ上で動作し、ビルダーやトレーダーがOptimismブロックチェーンネットワークの他の部分と接続できるようにするプログラムです。Optimismノードには主に2つの構成要素があります。Data Transport LayerとClient Softwareです。

Data Transport Layer(DTL)

Data Transport Layerは、OptimismとEthereumの間の連絡役として機能します。Ethereum上には、Optimismブロックチェーンに公開されたすべてのブロックのリストを保持するスマートコントラクト — CanonicalTransactionChain(CTC)コントラクト — がホストされています。

DTLは、以前にCTCへ公開されたブロックを取得することで、ノード上に定期的にOptimismブロックチェーンを構築します。DTLがなければ、OptimismノードはL2オプティミスティックロールアップによって構築されるブロックの最新状態を維持できません。

Client Software

Data Transport Layerと並行して動作するのが、Optimism client softwareです。Optimismクライアントは、最も広く使われているEthereumクライアントであるGeth(Go Ethereum)のバニラ版とほぼ同一です。そのため、内部的にはOptimismはEthereumと非常によく似ており、EVMの共有、同一のアカウンティング構造、ガスメータリングなどが可能になっています。

Optimism上での開発の大きな利点は、Ethereum上で動作するツールのほとんどが、コードをほとんど、あるいは全く変更することなくOptimism上でも動作することです。

Optimismノードが必要な理由

Optimismアプリケーションを構築するには、オプティミスティックロールアップを通してトランザクションをCTCに公開する必要があります。さらに、OptimismノードによってOptimismのブロックに関するデータをアプリが取得できるようになります。Optimism上で高性能なdAppをサポートするには、正常に機能するノードが必須です。

Optimismノードの種類

dAppをOptimismノードに接続する方法には、プライベートOptimismノード、Optimismの公開RPCノードエンドポイントの利用、そして自前でホストするノードの運用など、いくつかの選択肢があります。

ほとんどのOptimism開発者は、Alchemyのようなプロバイダーが提供するプライベートRPCエンドポイントを利用します。というのも、公開エンドポイントや自前ホストのノードには、低いスループット、高いセットアップコスト、より多くのエンジニアリング保守対応の必要性など、数多くのデメリットがあるためです。

1. 公開Optimismノード

AlchemyはOptimismの主要な公開エンドポイントを管理しており、次のエンドポイントURLからアクセスできます: https://mainnet.optimism.io。

公開エンドポイントのサポートはあるものの、Optimismは公開RPCエンドポイントが本番用途にはまったく適さないことを強調しています。

Optimismの公開エンドポイントはアプリケーションにレート制限をかけ、多くの場合サポートするJSON-RPCメソッドも限定的です。

2. プライベートOptimismノードプロバイダー

Optimismの公開ノードのスループット不足がアプリケーションやトレーディングの制約になっている場合、専用のOptimismノードプロバイダーによるプライベートOptimism RPCエンドポイントを利用することで、信頼性が高くスケーラブルなOptimismノードにアクセスできます。

AlchemyはOptimismが推奨するノードプロバイダーです。web3において最も信頼性の高いOptimismノード性能に加え、AlchemyはOptimism開発者向けにAlchemy Build、Monitor、Optimism webhooksなど幅広い開発ツール群を提供しており、これらはすべて最高のOptimism開発者体験を実現するために設計されています。

Alchemyでプライベート Optimism RPCエンドポイントの利用を始める方法

Alchemyは充実した無料プランを提供しており、信頼性の高いプライベートOptimism RPCエンドポイントをすぐに利用開始できます。

Alchemyで新しいOptimismアプリを作成するには:

  1. 無料アカウントを作成するか、既存のアカウントにサインインします
  2. ダッシュボード右上の「Create App」ボタンをクリックします
Alchemy開発者プラットフォームのダッシュボード。
Alchemy開発者プラットフォームのダッシュボード。

次に、以下の項目を入力します:

  1. アプリの名前を入力
  2. 説明を記入
  3. 「Chain」で「Optimism」を選択
  4. 「Network」で「Optimism Mainnet」を選択

Optimism SepoliaテストネットにアプリケーションをOptimismを作成したい場合は、「Network」ドロップダウンメニューでテストネットを選択できます。

Alchemyダッシュボード:プライベートRPCエンドポイント用のOptimismアプリを作成
Alchemyを使ってプライベートなOptimism RPCエンドポイントを作成する。

次に、ダッシュボードで**「View Key」ボタンをクリックし**、HTTPSキーを表示して、新しいノードへのリクエスト送信を開始します。

AlchemyアプリケーションダッシュボードからOptimism RPCエンドポイントURLをコピーする。
AlchemyアプリケーションダッシュボードからOptimism RPCエンドポイントURLをコピーする。

あとは、アプリケーション内のOptimism RPC URLを置き換えるだけで、Alchemyが提供する専用のOptimismエンドポイント経由でトラフィックの送信を開始できます。

3. 自前ホストのOptimismノード

ノードの構成や実装を完全に制御したい開発者は、自分自身でOptimismノードを運用する(すなわち自前ホストのノード)ことを選択する場合があります。

Optimismノードのセットアップの最初のステップは、ノードのハードウェアを決定することです。この点について、Optimismは以下のシステムを推奨しています:

  1. 最低16GBのRAM
  2. 少なくとも100GBの空き容量を持つSSD(Solid State Drive)

ハードウェアを決定した後、Optimismは自前ホストのノードをセットアップするための2つの方法の手順を提供しています。Dockerを使用する構成と、Dockerを使用しない構成です。

以下は、Optimismノードをセットアップする2つの方法の概要です。ノードをセットアップすることを決めた場合は、Optimismのノード構成手順に従ってください。

1. Docker構成

自前ホストのノードをセットアップする際にOptimismが推奨する方法は、提供されているDockerイメージを使用することです。

ノードのセットアップにDockerイメージを使用することで、イメージにはすでにほとんどの設定項目が含まれているため、多くの構成手順を省略できます。

Docker構成を使用する手順の概要は以下の通りです:

  1. ノードのGitHubリポジトリをマシンにクローンする
  2. ノードの設定を構成する
  3. 自前ホストのOptimismノードを実行する

ステップ2では、別のL2 Optimismノードと1つのL1 RPCノードという、複数の他のノードを用意する必要があります。

セカンダリのL2 Optimismノードは、あなたのOptimismノードがその正当性を検証するために使用され、Ethereum(L1)RPCノードはノードの状態ルートを確認するため、またCTC(CanonicalTransactionChain)を介してL1からL2ブロックをダウンロードするために使用されます。

Optimismは、これらの補助ノードをRPCプロバイダーから調達することを推奨しています。

このDocker構成を使用すると、ノードの保守を支援する追加機能をいくつか利用できます。

ヘルスチェックサービスの仕組み

ヘルスチェックサービスは、あなたのノードの状態をリファレンスノードの状態と定期的に比較し、ノードが正しく同期していることを確認します。フォルト検出機能は、Optimismシーケンサーからのトランザクションをスキャンし、その結果をあなたのノード上で計算された結果と比較します。最後に、ローカルでホストされるダッシュボードにより、フォルトデータ、DTLの同期状況などの基本的なノードメトリクスに簡単にアクセスできます。

2. 非Docker構成

事前構成されたDockerイメージでは十分なカスタマイズができない場合、Optimismはノードを独自にセットアップするためのフレームワークについても説明しています。ただし、この方法でのセットアップは推奨されていません。

これらの手順はテスト済みですが、Docker構成ほど堅牢ではありません。この方法では、正常に機能しないノードをセットアップしてしまうリスクがあります。以下は手順の概要です。

  1. Optimismノードの実行に必要なパッケージとツールをインストールする

インストールが必要なパッケージとツールは以下の通りです:

  • Libusb - Gethがハードウェアウォレットを確認するために使用するライブラリ
  • Node.js - JavaScriptランタイム
  • Yarn - 人気のあるNode.jsパッケージマネージャー
  • Go - プログラミング言語
  1. Data Transport Layerをセットアップする

DTLはノードソフトウェアの最初の部分です。ここでソースコードをダウンロードし、設定を編集し、レイヤーを実行します。

Docker構成の場合と同様に、ここでも自前ホストのOptimismノードがブロックを同期できるよう、別のノードを用意する必要があります。

実行後は、DTLがOptimismと正しく同期していることを確認するために管理を行います。

  1. Optimismクライアントをセットアップする

Optimismクライアントのセットアップは、自前ホストノードの2番目の構成要素です。ソースコードをコンパイルし、Optimismのジェネシスから状態をダウンロード・検証し、環境を作成・構成し、その構成を実行し、最後にクライアントを起動する必要があります。

自前ホストのノードを運用することは、Optimismノードの構成についてより多くの制御を望むエキスパートのweb3開発者にとっての代替手段です。ただし、自前ホストのノードを立ち上げて運用することを選択すると、Alchemyのようなノードプロバイダー兼開発者プラットフォームを利用する場合に比べ、コストと時間がより多くかかります。

どの種類のOptimismノードが自分に適しているか

ほとんどの場合、Alchemyを通じたプライベートOptimismエンドポイントの利用が最善の選択肢です。公開Optimismエンドポイントは本番トラフィックに使用すべきではなく、インフラエンジニアリングのエキスパートでない限り、自前でOptimismノードを管理すべきではありません。

Optimism上でカジュアルにトレードを行う人やdAppユーザーであっても、MetaMaskウォレットを専用のOptimismエンドポイントで更新することで、より速く信頼性の高いサービスを利用できます。

市場で最も充実した無料のOptimismノードプロバイダーの無料プランを使って、今日から始めて、Alchemyとともにあなたのdappの力を最大限に引き出しましょう。

Background gradient

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

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