マイニング
前提知識
このページをよりよく理解するために、まずはトランザクション、ブロック、およびプルーフ・オブ・ワーク (PoW)について読むことをお勧めします。
イーサリアムのマイニングとは?
マイニングとは、現在では非推奨となったイーサリアムのプルーフ・オブ・ワーク (PoW) アーキテクチャにおいて、イーサリアムのブロックチェーンに追加されるトランザクションのブロックを作成するプロセスのことです。
マイニングという言葉は、暗号資産を金に例える文脈から生まれました。金や貴金属が希少であるように、デジタルトークンも希少であり、プルーフ・オブ・ワーク・システムにおいて総量を増やす唯一の方法がマイニングです。プルーフ・オブ・ワーク版のイーサリアムでは、唯一の発行方法がマイニングでした。しかし、金や貴金属とは異なり、イーサリアムのマイニングは、ブロックチェーン上でブロックを作成、検証、公開、伝播させることでネットワークを保護する方法でもありました。
イーサのマイニング = ネットワークの保護
マイニングは、あらゆるプルーフ・オブ・ワーク・ブロックチェーンの生命線です。イーサリアムのマイナー(ソフトウェアを実行するコンピュータ)は、プルーフ・オブ・ステーク (PoS) への移行前、時間と計算能力を使ってトランザクションを処理し、ブロックを生成していました。
なぜマイナーが存在するのか?
イーサリアムのような分散型システムでは、全員がトランザクションの順序に合意することを保証する必要があります。マイナーは、計算が困難なパズルを解いてブロックを生成することでこれを支援し、攻撃からネットワークを保護していました。
以前は、誰でも自分のコンピュータを使ってイーサリアム・ネットワークでマイニングを行うことができました。しかし、誰もが利益を上げてイーサ (ETH) をマイニングできたわけではありません。ほとんどの場合、マイナーは専用のコンピュータハードウェアを購入し、安価なエネルギー源にアクセスする必要がありました。一般的なコンピュータでは、マイニングに関連するコストをカバーするのに十分なブロック報酬を得ることは困難でした。
マイニングのコスト
- マイニングリグの構築と維持に必要なハードウェアの潜在的コスト
- マイニングリグを稼働させるための電気代
- プールでマイニングを行う場合、通常、プールが生成した各ブロックに対して一定の割合(%)の手数料が請求された
- マイニングリグをサポートする設備の潜在的コスト(換気、エネルギー監視、電気配線など)
マイニングの収益性についてさらに詳しく調べるには、Etherscan (opens in a new tab)が提供しているようなマイニング計算機を使用してください。
イーサリアムのトランザクションはどのようにマイニングされたか
以下は、イーサリアムのプルーフ・オブ・ワーク (PoW) においてトランザクションがどのようにマイニングされたかの概要です。イーサリアムのプルーフ・オブ・ステーク (PoS) におけるこのプロセスの同様の説明は、こちらにあります。
- ユーザーは、あるアカウントの秘密鍵を使用してトランザクションリクエストを作成し、署名します。
- ユーザーは、あるノードからイーサリアム・ネットワーク全体にトランザクションリクエストをブロードキャストします。
- 新しいトランザクションリクエストを受信すると、イーサリアム・ネットワーク内の各ノードは、そのリクエストをローカルのメンプールに追加します。メンプールとは、受信したものの、まだブロックとしてブロックチェーンにコミットされていないすべてのトランザクションリクエストのリストです。
- ある時点で、マイニングノードは数十から数百のトランザクションリクエストを集約し、ブロックのガス・リミット内に収めつつ、獲得するトランザクション手数料を最大化するように、候補となるブロックを作成します。その後、マイニングノードは以下の処理を行います。
- 各トランザクションリクエストの有効性を検証し(例:署名を作成していないアカウントからイーサを送金しようとしていないか、リクエストの形式が不正でないかなど)、リクエストのコードを実行して、ローカルのEVMコピーの状態を変更します。マイナーは、そのような各トランザクションリクエストのトランザクション手数料を自身のアカウントに付与します。
- ブロック内のすべてのトランザクションリクエストが検証され、ローカルのEVMコピー上で実行されると、候補となるブロックのプルーフ・オブ・ワークによる「正当性の証明書」を生成するプロセスを開始します。
- 最終的に、あるマイナーが特定のトランザクションリクエストを含むブロックの証明書の生成を完了します。その後、マイナーは完成したブロックをブロードキャストします。これには、証明書と、主張する新しいEVM状態のチェックサムが含まれます。
- 他のノードは新しいブロックを受信します。ノードは証明書を検証し、ブロック上のすべてのトランザクション(ユーザーが最初にブロードキャストしたトランザクションを含む)を自身で実行し、すべてのトランザクション実行後の新しいEVM状態のチェックサムが、マイナーのブロックが主張する状態のチェックサムと一致することを検証します。これらが確認されて初めて、ノードはこのブロックを自身のブロックチェーンの末尾に追加し、新しいEVM状態を正規の状態として受け入れます。
- 各ノードは、新しいブロックに含まれるすべてのトランザクションを、未処理のトランザクションリクエストのローカルメンプールから削除します。
- ネットワークに参加する新しいノードは、対象のトランザクションを含むブロックを含め、すべてのブロックを順番にダウンロードします。ローカルのEVMコピー(初期状態のEVMとして開始)を初期化し、ローカルのEVMコピー上で各ブロックのすべてのトランザクションを実行するプロセスを経て、途中の各ブロックで状態のチェックサムを検証します。
すべてのトランザクションは一度だけマイニング(新しいブロックに含まれ、初めて伝播される)されますが、正規のEVM状態を進めるプロセスにおいて、すべての参加者によって実行および検証されます。これは、ブロックチェーンの中心的なマントラの1つである「信じるな、検証せよ (Don’t trust, verify)」を強調しています。
オマー(アンクル)・ブロック
プルーフ・オブ・ワーク (PoW) におけるブロックのマイニングは確率的であったため、ネットワークの遅延により、2つの有効なブロックが同時に公開されることがありました。この場合、プロトコルは最も長い(したがって最も「有効な」)チェーンを決定すると同時に、提案されたものの含まれなかった有効なブロックに対して部分的に報酬を与えることで、マイナーに対する公平性を確保する必要がありました。これにより、遅延が大きくなりがちな小規模なマイナーでもの報酬を通じて利益を得ることができたため、ネットワークのさらなる分散化が促進されました。
「オマー (ommer)」という用語は、親ブロックの兄弟ブロックを指すジェンダーニュートラルな用語として推奨されていますが、「アンクル (uncle)」と呼ばれることもあります。**イーサリアムがプルーフ・オブ・ステーク (PoS) に移行して以来、各スロットで選出されるプロポーザーは1人だけになったため、オマー(アンクル)・ブロックはマイニングされなくなりました。**マイニングされたオマー(アンクル)・ブロックの履歴チャート (opens in a new tab)を見ることで、この変化を確認できます。
視覚的なデモ
オースティンがマイニングとプルーフ・オブ・ワーク (PoW) ブロックチェーンについて解説する動画をご覧ください。
マイニングアルゴリズム
イーサリアム・メインネットで使用されたマイニングアルゴリズムは、「イーサッシュ」の1つだけです。イーサッシュは、「Dagger-Hashimoto」として知られる初期の研究開発アルゴリズムの後継でした。