メインコンテンツへスキップ

このページの翻訳を行う

🌏

このページの新しいバージョンがありますが、現在は英語のみです。最新バージョンの翻訳にご協力ください。

ページを翻訳する
英語を見る

ここにバグはありません!🐛

このページは翻訳されていないため、このページは英語で表示されています。

イーサリアム入門

最終編集者: , Invalid DateTime
ページ編集

ブロックチェーンとは

ブロックチェーンとは、単一のネットワークにつながる多くのコンピュータが更新・共有する公開データベースのことです。

この「ブロック」とは、データと状態が連続的にまとまったグループのこと(ブロックと呼ばれる)を意味します。 ETH を誰かに送金する場合は、その送金トランザクションデータがブロックに追加される必要があります。

「チェーン」とは、各ブロックが親ブロックを暗号化して参照しているという仕組みを指し、 各ブロックは連鎖してつながっています。 あるブロックのデータを変更するには後続のすべてのブロックを変更する必要があり、それにはネットワーク全体のコンセンサス(合意)が必要となるため事実上不可能となります。

ネットワーク上のすべてのコンピュータが、新しいブロックとチェーン全体に合意しなければなりません。 これらのコンピュータのことを「ノード」と呼びます。 ノードはブロックチェーン上で繋がるすべてのノードが、同じデータを保有することを保証します。 この分散化された合意形成を行うために、ブロックチェーンには合意メカニズムが必須となります。

イーサリアムは現在プルーフ・オブ・ステーク (PoS)合意メカニズムを使用しています。 新しいブロックをチェーンに追加するには、少なくとも 32 ETH をデポジットコントラクトにステーキングし、バリデータソフトウェアを実行する必要があります。 その後、ランダムに選択されたバリデータがブロックを提案し、他のバリデータが検証してブロックチェーンに追加します。 このモデルでは、通常、チェーンは 1 つだけになりますが、ネットワークの遅延や不正行為により、チェーンの先頭近くの同じ位置に複数のブロックが作成されることがあります。 これを解決する方法として、1 つの正しいブロックセットを選択するフォーク・チョイス・アルゴリズムが存在します。 最も重みがあるチェーンを形成するブロックが選択されます。ここでの「重み」とはブロックを承認したバリデータの数を意味します(承認したバリデータがステーキングした ETH にて加重) 。 報酬とペナルティのシステムにより、バリデータに対し、可能な限り誠実かつオンラインであるためのインセンティブが働きます。

ブロックチェーンがデータをどのようにハッシュ化するのか、1 つ前のブロックがどのように過去の全ブロックを参照するのかについては、Anders Brownworth 氏によるこちらのデモビデオをご覧下さい。

Anders 氏によるブロックチェーンのハッシュに関する説明:

イーサリアムとは

イーサリアムとは、ブロックチェーンにコンピュータが組み込まれたもので、 分散型、自由参加型かつ、検閲耐性を備えたアプリや組織を構築するための基盤となっています。

イーサリアムの世界には、イーサリアムネットワーク上の誰もがその状態に同意できる単一の正規のコンピュータ(イーサリアム仮想マシンまたは EVM と呼ばれる)があります。 イーサリアムネットワークに参加するすべての人(全イーサリアムノード)は、このコンピュータの状態のコピーを保持します。 さらに、参加者は誰でもこのコンピュータに任意の計算を実行するようにリクエストをブロードキャストできます。 リクエストが配信されると、ネットワーク上の他の参加者は、計算を確認・検証し、実行します。 実行されると EVM の状態が変更され、それが確定し、ネットワーク全体に伝播されます。

この計算作業のリクエストを「トランザクションリクエスト」と呼びます。すべてのトランザクションの記録と EVM の現在の状態はブロックチェーンに保存され、それがすべてのノードによって保存され、合意されます。

このような暗号メカニズムは、一度トランザクションが有効であると検証されてブロックチェーンに追加された後は、改ざんができないようにします。 また、このメカニズムにより、すべてのトランザクションが適切な「許可」があって、署名・実行されることが保証されます。(ここでの「許可」とは、例えば Alice のアカウントからデジタル資産を送信するのは、Alice 以外の他者にはできないという意味)。

イーサとは

イーサ(ETH)はイーサリアムのネイティブ暗号通貨です。 ETH の目的は、ブロックチェーンに必要な計算の市場を可能にすることです。 このような市場は、トランザクションリクエストを検証し、実行するための経済的なインセンティブを与え、またネットワークに計算リソースを提供します。

また、新たなトランザクションリクエストをブロードキャストする参加者は、いくらかの ETH を報酬としてネットワークに提供しなければなりません。 この報酬はトランザクションの検証、実行、ブロックチェーンへのコミット、ネットワークへのブロードキャストといった作業を最終的に行った参加者に与えられます。

支払われる ETH の額は、トランザクションリクエストの計算に必要なリソースに相当します。 計算リソースに応じて報酬を払わなければならないため、これらの報酬は無限に計算したりリソースを大量に消費するスクリプトを実行することで意図的にネットワークを詰まらせる悪意のある参加者からも守ることができます。

また、ETH は暗号経済的なセキュリティを提供するため、主に次の 3 つの方法で使用されます。1) ブロックの提案、または他のバリデータの不誠実な行為を指摘したバリデータへの報酬。 2) 不誠実な行為に対する担保(バリデータは ETH をステーキングしており、バリデータが不誠実な行為を行った場合、バリデータの ETH を破壊)。3) 新しく提案されたブロックに対する「投票」の重み付けに使われ、合意メカニズムのフォーク・チョイスで使用。

スマートコントラクトとは

参加者は EVM で計算をリクエストするたびに、新たなコードを作成するわけではありません。 アプリケーションデベロッパーがプログラム(再利用可能なコードの一部)を EVM にアップロードし、ユーザーがそのコードをさまざまなパラメータで実行するようにリクエストします。 ブロックチェーン上のネットワークにアップロードされ、実行されるプログラムをスマートコントラクトと呼びます。

スマートコントラクトは、基本的なレベルでは、自動販売機のようなものだと考えることができます。つまり、特定のパラメータで呼び出され、一定の条件が満たされた場合、何らかのアクションや計算を実行するスクリプトです。 例えば、発信者が特定の受取人に ETH を送信すると、スマートコントラクトが単純にデジタル資産の所有権を作成・割り当てるなどです。

デベロッパーであれば誰でも、スマートコントラクトを作成し、ブロックチェーンをデータ層として使ってネットワークに公開できます(ただし、フィー(手数料)が必要)。 また、すべてのユーザーはスマートコントラクトを呼び出してコードを実行できます(これにもフィーが必要)。

このように、スマートコントラクトを利用することで、デベロッパーは複雑なユーザー向けアプリや様々なサービス(マーケットプレイス、金融商品、ゲームなど)を構築し、ブロックチェーン上にデプロイできます。

用語集

ブロックチェーン

イーサリアムネットワークの過去の処理を踏まえてコミットされたすべてのブロックシークエンスのこと。 各ブロックが前のブロックへの参照を含んでいることが名前の由来。前のブロックを参照することにより、すべてのブロックの順序(つまり正確な履歴)が維持される。

ETH

イーサ(ETH)はイーサリアムのネイティブ暗号通貨。 コー ​​ ド実行リクエストが達成されるには、ユーザーは手数料として ETH を支払う必要がある。

ETH の詳細

EVM(イーサリアム仮想マシン)

EVM(イーサリアム仮想マシン)とは、イーサリアムネットワーク上のすべてのノードが同じ状態を保存し、同意するグローバルな仮想コンピュータ。 参加者は誰でも、EVM で任意のコードの実行をリクエストすることができ、コードが実行されると、EVM の状態が変更される。

EVM の詳細

ノード

EVM の状態を保存している実際のマシン。 ノードは相互に通信して、EVM の状態と新しい状態の変化に関する情報を伝達する。 あるノードからコード実行リクエストをブロードキャストすることで、コードの実行をリクエストできる。 イーサリアムネットワーク自体は、すべてのイーサリアムノードとその通信の集合体。

ノードの詳細

アカウント

ETH の保有先。 ユーザーはアカウントを初期化し、アカウントに ETH を入金したり、アカウントから他のユーザーへ ETH を送金できる。 アカウントとアカウント残高は EVM の巨大なテーブルに保存され、これらは EVM 全体の状態の一部。

アカウントの詳細

トランザクション

「トランザクションリクエスト」とは EVM 上でのコード実行リクエストの正式名称であり、「トランザクション」とは実行されたトランザクションリクエストとそれに伴う EVM 状態の変化を指す。 すべてのユーザーは、ノードからネットワークにトランザクションリクエストをブロードキャスト可能。 トランザクションリクエストが、合意された EVM の状態を変更するには、他のノードによって検証・実行され、「ネットワークにコミット」される必要がある。 コードを実行すると EVM の状態が変化し、コミットするとこの状態の変化がネットワーク内のすべてのノードにブロードキャストされる。 トランザクションの例:

  • 自分のアカウントから Alice のアカウントに X ETH を送信
  • スマートコントラクトのコードを EVM 状態に公開
  • EVM のアドレス X で、引数 Y を使用してスマートコントラクトのコードを実行

トランザクションの詳細

ブロック

トランザクション量が非常に多いため、トランザクションはバッチまたはブロック単位で「コミット」される。 ブロックには通常、数十から数百のトランザクションが含まれる。

ブロックの詳細

スマートコントラクト

デベロッパーが EVM の状態に公開する、再利用可能なコード(プログラム)の断片。 トランザクションリクエストを行うことで、誰でもスマートコントラクトコードの実行をリクエスト可能。 デベロッパーはスマートコントラクトを公開して、任意の実行可能なアプリケーション(ゲーム、マーケットプレイス、金融商品など)を EVM に書き込むことができ、これらは分散型アプリ(Dapp)と呼ばれる。

スマートコントラクトの詳細

参考文献

役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。

この記事は役に立ちましたか?