イーサリアムの技術入門
ブロックチェーンとは?
ブロックチェーンは、ネットワーク上の多くのコンピュータ間で更新および共有されるパブリックデータベースです。
「ブロック」とは、データと状態が「ブロック」と呼ばれる連続したグループに保存されることを指します。他の誰かにETHを送金する場合、そのトランザクションを成功させるには、トランザクションデータをブロックに追加する必要があります。
「チェーン」とは、各ブロックが暗号学的に親ブロックを参照しているという事実を指します。言い換えれば、ブロックは互いにチェーン(鎖)のようにつながっています。ブロック内のデータは、それ以降のすべてのブロックを変更することなく変更することはできません。これにはネットワーク全体のコンセンサスが必要になります。
ネットワーク内のすべてのコンピュータは、新しい各ブロックとチェーン全体について合意する必要があります。これらのコンピュータは「ノード」と呼ばれます。ノードは、ブロックチェーンとやり取りするすべての人が同じデータを持つことを保証します。この分散型の合意を達成するために、ブロックチェーンにはコンセンサス・メカニズムが必要です。
イーサリアムは、プルーフ・オブ・ステーク (PoS) ベースのコンセンサス・メカニズムを使用しています。チェーンに新しいブロックを追加したい人は誰でも、イーサリアムのネイティブ通貨であるETHを担保としてステークし、バリデータソフトウェアを実行する必要があります。これらの「バリデータ」はランダムに選ばれ、他のバリデータがチェックしてブロックチェーンに追加するためのブロックを提案します。参加者が可能な限り誠実であり、オンライン状態を保つことを強く動機付ける報酬とペナルティのシステムが存在します。
ブロックチェーンのデータがどのようにハッシュ化され、その後ブロック参照の履歴に追加されるかを確認したい場合は、Anders Brownworth氏によるこのデモ (opens in a new tab)をチェックし、以下の付属ビデオをご覧ください。
Anders氏によるブロックチェーンのハッシュに関する解説をご覧ください。
イーサリアムとは?
イーサリアムは、コンピュータが組み込まれたブロックチェーンです。分散型で、パーミッションレスかつ検閲耐性のある方法でアプリや組織を構築するための基盤です。
イーサリアムの世界には、イーサリアムネットワーク上の全員がその状態に合意する、単一の標準的なコンピュータ(イーサリアム仮想マシン、またはEVMと呼ばれます)が存在します。イーサリアムネットワークに参加するすべての人(すべてのイーサリアムノード)は、このコンピュータの状態のコピーを保持しています。さらに、どの参加者も、このコンピュータに任意の計算を実行するようにリクエストをブロードキャストできます。そのようなリクエストがブロードキャストされると、ネットワーク上の他の参加者がその計算を検証、確認し、実行します。この実行によりEVMの状態が変化し、それがコミットされ、ネットワーク全体に伝播します。
計算のリクエストはトランザクションリクエストと呼ばれます。すべてのトランザクションの記録とEVMの現在の状態はブロックチェーンに保存され、それがすべてのノードによって保存され、合意されます。
暗号化メカニズムにより、トランザクションが有効であると検証されてブロックチェーンに追加されると、後で改ざんできないことが保証されます。同じメカニズムにより、すべてのトランザクションが適切な「権限」で署名され、実行されることも保証されます(アリス自身を除き、誰もアリスのアカウントからデジタル資産を送金できないようにする必要があります)。
イーサとは?
イーサ (ETH) は、イーサリアムのネイティブな暗号資産です。ETHの目的は、計算のための市場を可能にすることです。このような市場は、参加者がトランザクションリクエストを検証および実行し、ネットワークに計算リソースを提供するための経済的インセンティブを提供します。
トランザクションリクエストをブロードキャストする参加者は、報奨金としてネットワークに一定量のETHを提供する必要があります。ネットワークは報奨金の一部をバーンし、残りをトランザクションの検証、実行、ブロックチェーンへのコミット、およびネットワークへのブロードキャストの作業を最終的に行う人に報酬として与えます。
支払われるETHの量は、計算を行うために必要なリソースに対応しています。これらの報奨金は、悪意のある参加者が無限の計算やその他のリソースを大量に消費するスクリプトの実行をリクエストして、意図的にネットワークを詰まらせることを防ぐ役割も果たします。なぜなら、これらの参加者は計算リソースの対価を支払わなければならないからです。
ETHはまた、主に3つの方法でネットワークに暗号経済的なセキュリティを提供するために使用されます。1) ブロックを提案したり、他のバリデータの不正行為を指摘したりするバリデータに報酬を与える手段として使用されます。2) バリデータによってステークされ、不正行為に対する担保として機能します。バリデータが不正行為を試みた場合、そのETHは破棄される可能性があります。3) 新しく提案されたブロックに対する「投票」の重み付けに使用され、コンセンサス・メカニズムのフォーク選択部分に反映されます。
スマート・コントラクトとは?
実際には、参加者はEVMでの計算をリクエストするたびに新しいコードを書くわけではありません。そうではなく、アプリケーション開発者がプログラム(再利用可能なコードの断片)をEVMの状態にアップロードし、ユーザーはさまざまなパラメータを使用してこれらのコードの断片を実行するようにリクエストします。ネットワークにアップロードされ、実行されるプログラムを「スマート・コントラクト」と呼びます。
非常に基本的なレベルでは、スマート・コントラクトは一種の自動販売機のように考えることができます。つまり、特定のパラメータで呼び出されたときに、特定の条件が満たされていれば、何らかのアクションや計算を実行するスクリプトです。たとえば、シンプルな販売用のスマート・コントラクトは、呼び出し元が特定の受信者にETHを送金した場合に、デジタル資産を作成して所有権を割り当てることができます。
開発者は誰でも、ネットワークに手数料を支払うことで、ブロックチェーンをデータレイヤーとして使用し、スマート・コントラクトを作成してネットワークに公開することができます。その後、ユーザーは誰でも、同じくネットワークに手数料を支払うことで、スマート・コントラクトを呼び出してそのコードを実行できます。
したがって、スマート・コントラクトを使用することで、開発者はマーケットプレイス、金融商品、ゲームなど、ユーザー向けの任意の複雑なアプリやサービスを構築してデプロイすることができます。
用語集
ブロックチェーン
ネットワークの歴史の中でイーサリアムネットワークにコミットされたすべてのブロックのシーケンスです。各ブロックには前のブロックへの参照が含まれており、これによりすべてのブロック(したがって正確な履歴)の順序を維持できるため、このように名付けられました。
ETH
イーサ (ETH) は、イーサリアムのネイティブな暗号資産です。ユーザーは、コード実行リクエストを処理してもらうために、他のユーザーにETHを支払います。
EVM
イーサリアム仮想マシン (EVM) は、イーサリアムネットワークのすべての参加者がその状態を保存し、合意するグローバルな仮想コンピュータです。どの参加者もEVM上で任意のコードの実行をリクエストできます。コードの実行によりEVMの状態が変化します。
ノード
EVMの状態を保存している現実世界の物理的なマシンです。ノードは互いに通信して、EVMの状態や新しい状態の変化に関する情報を伝播させます。また、どのユーザーもノードからコード実行リクエストをブロードキャストすることで、コードの実行をリクエストできます。イーサリアムネットワーク自体は、すべてのイーサリアムノードとその通信の集合体です。
アカウント
ETHが保存される場所です。ユーザーはアカウントを初期化し、アカウントにETHを入金し、自分のアカウントから他のユーザーにETHを送金することができます。アカウントとアカウント残高はEVM内の大きなテーブルに保存されており、これらはEVMの全体的な状態の一部です。
トランザクション
「トランザクションリクエスト」は、EVMでのコード実行リクエストの正式な用語であり、「トランザクション」は、実行されたトランザクションリクエストとそれに伴うEVMの状態の変化を指します。どのユーザーも、ノードからネットワークにトランザクションリクエストをブロードキャストできます。トランザクションリクエストが合意されたEVMの状態に影響を与えるには、別のノードによって検証、実行され、「ネットワークにコミット」される必要があります。コードの実行はEVMの状態の変化を引き起こします。コミットされると、この状態の変化はネットワーク内のすべてのノードにブロードキャストされます。トランザクションの例をいくつか示します。
- 自分のアカウントからアリスのアカウントにX ETHを送金する。
- スマート・コントラクトのコードをEVMの状態に公開する。
- EVM内のアドレスXにあるスマート・コントラクトのコードを、引数Yを使用して実行する。
ブロック
トランザクションの量は非常に多いため、トランザクションはバッチ、つまりブロック単位で「コミット」されます。ブロックには通常、数十から数百のトランザクションが含まれます。
スマート・コントラクト
開発者がEVMの状態に公開する、再利用可能なコードの断片(プログラム)です。誰でもトランザクションリクエストを行うことで、スマート・コントラクトのコードの実行をリクエストできます。開発者はスマート・コントラクトを公開することで、EVMに任意の実行可能なアプリケーション(ゲーム、マーケットプレイス、金融商品など)を記述できるため、これらは分散型アプリケーション (dapp)と呼ばれることもよくあります。
次のステップ
ほとんどの読者はドキュメントを順番に読んでいきますが、最短の道筋は構築しようとしているものによって異なります。
- イーサリアムとやり取りするdapp: アカウントとトランザクションについて学び、その後フレームワークを選択します。
- スマート・コントラクト開発: スマート・コントラクトとプログラミング言語について学びます。
- ノードとステーキング: ノードとクライアントについて学び、その後コンセンサス・メカニズムについて学びます。
参考文献
- イーサリアム・ホワイトペーパー
- How does Ethereum work, anyway? (イーサリアムはどのように機能するのか?) (opens in a new tab) - Preethi Kasireddy (注: このリソースは依然として価値がありますが、マージ以前のものであるため、イーサリアムのプルーフ・オブ・ワーク (PoW) メカニズムに言及していることに注意してください。現在、イーサリアムはプルーフ・オブ・ステーク (PoS)を使用して保護されています)
視覚的に学びたい方へ
このビデオシリーズでは、基礎的なトピックを徹底的に解説しています。
イーサリアムの基礎プレイリスト (opens in a new tab)
役に立ったコミュニティリソースをご存知ですか?このページを編集して追加してください!
関連チュートリアル
- 開発者向けイーサリアムガイド パート1 – Pythonとweb3.pyを使用した、非常に初心者向けのイーサリアムの解説