---
title: "最適なOptimismノードは?パブリック vs プライベート vs セルフホスト"
description: "セルフホストノード、パブリックRPCエンドポイント、プライベートRPCエンドポイントを比較"
---

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

Optimismからデータを取得するために、dAppはRPCノードを通じてリクエストを送信する必要があります。この記事では、[Optimism](https://www.alchemy.com/layer2/optimism)上での[web3開発](https://www.alchemy.com/overviews/how-to-learn-web3-development)をサポートするために利用可能な各種ノードについて解説します。

## Optimismとは

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

1. Simplicity（シンプルさ）
1. Pragmatism（実用性）
1. Sustainability（持続可能性）
1. Optimism（楽観性）

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

[オプティミスティックロールアップ](https://www.alchemy.com/overviews/optimistic-rollups)は、Ethereumのセキュリティを利用しつつ、計算処理とデータストレージをオフチェーンに移すことで、Ethereumのベースレイヤーのスループットとレイテンシを改善する仕組みです。Optimismはレイヤー2チェーン上で行われた多数のトランザクションをロールアップとしてまとめ、1つにバンドルします。その後、[ロールアッププロトコル](https://community.optimism.io/docs/protocol/2-rollup-protocol/)はこれらのトランザクションの正当性を楽観的に前提とし、ロールアップをEthereum L1チェーンに送信します。

## Optimismノードとは

Optimismノードは、1台のコンピュータ上で動作し、ビルダーやトレーダーがOptimismブロックチェーンネットワークの他の部分と接続できるようにするプログラムです。Optimismノードには、Data Transport LayerとClient Softwareという2つの主要コンポーネントが関わっています。

### **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クライアント](https://www.alchemy.com/overviews/execution-layer-and-consensus-layer-node-clients)である[Geth](https://www.alchemy.com/overviews/what-is-a-geth-node-and-how-to-run-one)（Go Ethereum）のバニラ版とほぼ同一です。そのため、内部的にOptimismはEthereumと非常に似ており、EVM、同一のアカウンティング構造、ガスメータリングなどを共有しています。

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

## なぜOptimismノードが必要なのか

Optimismアプリケーションを構築するには、オプティミスティックロールアップを通じてCTCにトランザクションを公開する必要があります。さらに、Optimismノードは[アプリ](https://www.alchemy.com/dapps/top/defi-dapps)がOptimismのブロックに関するデータを取得することを可能にします。Optimism上で高性能なdAppをサポートするには、正常に機能するノードが不可欠です。

## Optimismノードの種類

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

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

### 1. 公開Optimismノード

Alchemyは[Optimismの主要な公開エンドポイント](https://community.optimism.io/docs/useful-tools/networks/#optimism-mainnet)を管理しており、次のエンドポイントURLからアクセスできます: https://mainnet.optimism.io。

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

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

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

Optimismの公開ノードのスループット不足がアプリケーションやトレーディングの制約になっている場合、[専門のOptimismノードプロバイダ](https://www.alchemy.com/overviews/blockchain-node-providers)によるプライベートOptimism RPCエンドポイントを使えば、信頼性が高くスケーラブルなOptimismノードにアクセスできます。

Alchemyは[Optimismが推奨するノードプロバイダ](https://community.optimism.io/docs/useful-tools/providers/#)です。web3において最も信頼性の高いOptimismノードのパフォーマンスに加え、AlchemyはOptimism開発者に対し、Alchemy Build、Monitor、[Optimism webhooks](https://www.alchemy.com/overviews/optimism-webhooks)をはじめとする豊富な開発ツール群を提供しており、これらはすべて最良のOptimism開発者体験を実現するために設計されています。

#### AlchemyでプライベートOptimism RPCエンドポイントを使い始める方法

Alchemyは充実した無料プランを提供しており、信頼性の高い[プライベートOptimism RPCエンドポイント](https://www.alchemy.com/overviews/private-rpc-endpoint)をすぐに使い始めることができます。

Alchemyで新しいOptimismアプリを作成する手順:

1. [無料アカウントを作成](https://dashboard.alchemy.com/signup/?a=2b2fa82d19)するか、既存のアカウントにサインインします
1. ダッシュボード右上の「Create App」ボタンをクリックします

<ImageBlock
  src="https://media.alchemy.com/1704294287-alchemy-developer-platform-dashboard.png"
  alt="Alchemy開発者プラットフォームのダッシュボード。"
  width={1600}
  height={214}
  caption="Alchemy開発者プラットフォームのダッシュボード。"
/>

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

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

Optimismの[Goerliテストネット上でアプリケーションを作成または移行](https://www.alchemy.com/overviews/migrate-from-kovan-to-goerli-on-optimism)したい場合は、「Network」のドロップダウンメニューでテストネットを選択できます。

<ImageBlock
  src="https://media.alchemy.com/1704294609-create-optimism-rpc-alchemy.jpeg"
  alt="Alchemyダッシュボード:プライベートRPCエンドポイント用のOptimismアプリを作成"
  width={1218}
  height={448}
  caption="Alchemyを使ってプライベートなOptimism RPCエンドポイントを作成する。"
/>

次に、ダッシュボード上で**「View Key」ボタンをクリック**してHTTPSキーを確認し、新しいノードへのリクエスト送信を開始してください。

<ImageBlock
  src="https://media.alchemy.com/1704294644-view-key-alchemy-dashboard.jpeg"
  alt="Alchemyアプリケーションダッシュボードから、Optimism RPCエンドポイントのURLをコピーする。"
  width={1253}
  height={547}
  caption="Alchemyアプリケーションダッシュボードから、Optimism RPCエンドポイントのURLをコピーする。"
/>

あとは、アプリケーション内のOptimism RPC URLを置き換えれば、Alchemyが提供する専用のOptimismエンドポイントを通じてトラフィックを送信できるようになります。

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

ノードの構成や実装を完全にコントロールしたい開発者は、[自前でOptimismノードを運用する](https://www.alchemy.com/overviews/running-your-own-node)（すなわちセルフホストノード）ことを選ぶ場合があります。

Optimismノードのセットアップにおける最初のステップは、ノードのハードウェアを決めることです。この点についてOptimismが推奨する構成は以下の通りです。

1. RAM 16GB以上
1. 空き容量100GB以上のSSD（Solid State Drive）

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

以下は、Optimismノードをセットアップする2つのアプローチの概要です。実際にノードをセットアップする場合は、Optimismの[ノード構成手順](https://community.optimism.io/docs/developers/build/run-a-node/)に従ってください。

#### 1. Docker構成

Optimismがセルフホストノードのセットアップ方法として推奨しているのは、提供されている[Dockerイメージ](https://hub.docker.com/u/ethereumoptimism)を使う方法です。

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

**Docker構成を使った手順の概要は以下の通りです:**

1. ノードのGithub [リポジトリ](https://github.com/smartcontracts/simple-optimism-node)を自分のマシンにクローンする
1. ノードの設定を行う
1. セルフホストのOptimismノードを起動する

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

補助的なL2 Optimismノードは、自分のOptimismノードがその正当性を検証するために使用され、Ethereum\(L1\)RPCノードは、ノードのステートルートを確認したり、CTC\(_CanonicalTransactionChain_\)経由でL1からL2ブロックをダウンロードしたりするために使用されます。

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

このDocker構成を使うことで、ノードの運用・保守に役立つ複数の追加機能の恩恵を受けられます。

##### healthcheckサービスの仕組み

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

#### 2. Docker非使用の構成

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

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

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

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

- ‍**Libusb** - Gethがハードウェアウォレットの確認に使用するライブラリ
- **Node.js** - JavaScriptランタイム
- ‍**Yarn** - 広く使われているNode.jsパッケージマネージャ
- **Go** - プログラミング言語

2. **Data Transport Layerをセットアップする**

DTLは、ノードソフトウェアの最初の構成要素です。ここでは、ソースコードをダウンロードし、設定を編集し、レイヤーを起動します。

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

起動後は、DTLがOptimismと正しく同期していることを確認しながら管理します。

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

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

セルフホストノードの運用は、自分のOptimismノード構成をより細かくコントロールしたい上級web3開発者にとっての選択肢の一つです。ただし、セルフホストノードの立ち上げと管理を選ぶ場合、Alchemyのようなノードプロバイダ兼開発者プラットフォームを利用するよりもコストと手間がかかります。

## 自分にはどのタイプのOptimismノードが適しているか

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

Optimism上のカジュアルなトレーダーやdAppユーザーであっても、[MetaMaskウォレットを専用のOptimismエンドポイントで更新する](https://www.alchemy.com/docs/reference/optimism-api-quickstart#optimism-tutorials)ことで、より高速で信頼性の高いサービスを利用できます。

市場で最も充実した無料のOptimismノードプロバイダプランを、今すぐ[こちら](https://www.alchemy.com/layer2/optimism/?a=2b2fa82d19)から始めて、Alchemyでdappの力を最大限に引き出しましょう。
