Ethereumはどのように機能しますか? (1つ)

Ethereumはどのように機能しますか? (1つ)

編集者注: この記事は Lanhu Notes (ID: lanhubiji) からの引用です。原著者: Preethi Kasireddy、翻訳: Leo。

はじめに: この記事は主に、現在の Ethereum の具体的な動作原理について説明しています。これは、Ethereum の背後にあるさまざまな概念と動作を理解するのに役立ち、初心者が読むのに適しています。

導入

それが何であるか知っているかどうかに関わらず、おそらくイーサリアム ブロックチェーンについて聞いたことがあるでしょう。頻繁にニュースになるから。 Ethereum の基本的な知識がない場合、この記事を読むのは少し混乱するかもしれません。では、Ethereum とは何でしょうか?本質的には、デジタル取引の記録を永久に保存する公開データベースです。重要なのは、このデータベースのセキュリティを維持および保護するために中央機関を必要としないことです。代わりに、これは「トラストレス」な取引システムとして機能し、第三者や互いの信頼を必要とせずに個人がピアツーピア取引を行うことができるフレームワークです。

まだ混乱していますか?ここでこの記事が役に立ちます。私の目標は、複雑な数学や恐ろしい数式を使わずに、技術的な観点から Ethereum がどのように機能するかを説明することです。プログラマーでなくても、この記事から何かを得られたら幸いです。一部の部分が技術的すぎてわかりにくい場合でも、問題ありません。すべての詳細を知る必要はありません。とりあえず高レベルで理解することをお勧めします。

この記事で言及されているトピックはすべて、Ethereum Yellow Paper の概念分析です。わかりやすくするために、独自の説明と図を追加しました。技術的な課題に興味がある場合は、イエローペーパーを直接読むこともできます。

ブロックチェーンの定義

ブロックチェーンは、「共有状態を持つ、暗号化された安全なシングルトントランザクションマシン」です。詳しく見ていきましょう。

「暗号化セキュリティ」とは、作成されたデジタル通貨が、解読が困難な複雑な数学的アルゴリズムによって保護されることを意味します。さまざまなファイアウォールについて考えてみましょう。偽の取引を作成したり、取引記録を削除したりするなど、システムを不正に操作することはほぼ不可能です。

「トランザクションのシングルトン」とは、システム内で作成されたすべてのトランザクションを担当する単一の標準インスタンスが存在することを意味します。言い換えれば、誰もが信じている唯一の世界的な真実が存在するのです。

「共有状態を持つ」とは、このマシンに保存されている状態が共有され、誰でも利用できることを意味します。

Ethereum はこのブロックチェーンパラダイムを実装します。

イーサリアムブロックチェーンのパラダイム説明

Ethereum ブロックチェーンは本質的にトランザクションベースのステートマシンです。コンピューター サイエンスでは、ステート マシンとは、一連の入力を読み取り、それらの入力に基づいて新しい状態に遷移するものです。

Ethereum のステートマシンでは、「Genesis State」から始まります。これは、ネットワーク上でトランザクションが一切行われない白紙の状態と似ています。トランザクションが実行されると、ジェネシス状態が何らかの最終状態に変換されます。どの時点でも、最終状態は Ethereum の現在の状態を表します。

Ethereum の状態には数百万件のトランザクションがあります。これらのトランザクションはブロックにグループ化されます。ブロックには一連のトランザクションが含まれており、各ブロックは前のブロックにリンクされています。

ある状態から次の状態に移行するには、トランザクションが有効である必要があります。トランザクションが有効であると認識されるためには、マイニングと呼ばれる検証プロセスを経る必要があります。ノード (コンピューター) のグループは、コンピューティング リソースを消費して、有効なトランザクションを含むブロックを作成します。これをマイニングと呼びます。

ネットワーク上のどのノードも、自身をマイナーノードとして宣言し、ブロックの作成と検証を試みることができます。世界中には、同時にブロックの作成と検証を試みているマイナーがたくさんいます。ブロックをブロックチェーンに送信する際、各マイナーは保証として機能する数学的な「証明」を提供します。証明が存在すれば、ブロックは有効であるはずです。

ブロックをメインチェーンに追加するには、マイナーが他の競争相手よりも早くそれを証明する必要があります。マイナーに数学的証明を提供させて各ブロックを検証するプロセスは、「プルーフ・オブ・ワーク」と呼ばれます。

新しいブロックを検証するマイナーには、この作業に対するインセンティブとして、一定の価値が報酬として与えられます。どのような価値ですか? Ethereum ブロックチェーンは、「Ether」と呼ばれるネイティブデジタルトークンを使用します。マイナーがブロックを証明するたびに、新しい Ether トークンが生成され、マイナーに報酬が与えられます。

「全員が同じチェーン上にいることをどうやって保証するのか?」と疑問に思うかもしれません。マイナーのサブセットが独自のチェーンを作成することを決定しないことをどうすれば確信できるでしょうか?

前述のように、ブロックチェーンは共有状態を持つ単一のトランザクションインスタンスとして定義されます。この定義を使用すると、正しい現在の状態は、誰もが受け入れなければならない単一のグローバルな事実であることがわかります。複数の状態 (または複数のチェーン) があると、どの状態が正しいかについて合意することが不可能になるため、システム全体が破壊されます。チェーンが複数ある場合は、1 つのチェーンに 10 個のトークン、別のチェーンに 20 個のトークン、さらに別のチェーンに 40 個のトークンが存在する可能性があります。この場合、どのチェーンが最も「効率的」であるかを判断する方法はありません。

パスが複数ある場合は必ず「分岐」が発生します。フォークはシステムを破壊し、人々に信頼するチェーンを 1 つ選択するよう強制するため、通常はフォークを避けます。

どのパスが最も効率的かを決定し、複数のチェーンが作成されないようにするために、Ethereum は「GHOST プロトコル」と呼ばれるメカニズムを使用します。 「GHOST」 = 「貪欲な最も重い観測サブツリー」

簡単に言えば、GHOST プロトコルでは、最も多くの計算能力を消費するパスを選択する必要があるとされています。そのパスを決定する 1 つの方法は、最新のブロック (「リーフ ブロック」) のブロック番号を使用することです。これは、現在そのパス上にあるブロックの合計数 (ジェネシス ブロックを除く) を表します。ブロック番号が大きくなるほど、パスが長くなり、「リーフ ブロック」に到達するために必要なマイニング作業が増えます。この論理的思考法を用いることで、現在の状態の標準的なバージョンについて合意することができます。


ブロックチェーンの基本を理解したところで、イーサリアム システムの主なコンポーネントを詳しく見ていきましょう。

アカウント

状態

ガスと手数料

トレーディング

ブロック

トランザクションの実行

鉱業

捕虜

始める前に注意すべき点が 1 つあります。この記事で X の「ハッシュ」と言及する場合、通常は Ethereum で使用される KECCAK-256 ハッシュを指します。

アカウント

Ethereum のグローバルな「共有状態」は、メッセージ パッシング フレームワークを通じて相互にやり取りする多数の小さなオブジェクト (アカウント) で構成されています。各アカウントには、関連付けられた状態と 20 バイトのアドレスがあります。 Ethereum のアドレスは、アカウントを識別するために使用される 160 ビットの識別子です。

アカウントには 2 つの種類があります。

秘密鍵によって制御される外部アカウントには、関連付けられたコードはありません。

l 契約コードによって制御され、コードが関連付けられている契約アカウント。

外部アカウント対契約アカウント

外部アカウントと契約アカウントの基本的な違いを理解することは非常に重要です。外部アカウントは、秘密鍵を使用してトランザクションを作成し、署名することで、他の外部アカウントまたは他の契約アカウントにメッセージを送信できます。 2 つの外部アカウント間のメッセージは、単純に価値の転送です。ただし、外部アカウントからコントラクト アカウントに送信されたメッセージは、コントラクト アカウントのコードをアクティブ化し、さまざまな操作 (トークンの転送、内部ストレージへの書き込み、新しいコインの発行、計算の実行、新しいコントラクトの作成など) を実行できるようになります。

外部アカウントとは異なり、契約アカウントは独自に新しいトランザクションを開始することはできません。代わりに、契約アカウントは、受信した他のトランザクションに応じて、独自のトランザクションをトリガーすることしかできません。たとえば、外部アカウントまたは他の契約アカウントからのトランザクションによってトリガーされる可能性があります。コントラクト間のリクエストについては、「トランザクションとメッセージ」セクションで詳しく説明します。

したがって、Ethereum ブロックチェーン上で発生するすべての操作は、常に外部アカウントによってトリガーされるトランザクションによって開始されます。

アカウントステータス

アカウント ステータスは、アカウントの種類に関係なく存在する 4 つの部分で構成されます。

Nonce: アカウントが外部アカウントの場合、この数値はこのアカウント アドレスから送信されたトランザクションの数を表します。アカウントが契約アカウントの場合、nonce はアカウントによって作成された契約番号になります。

残高: アドレスが所有する Wei の数。各エーテルには 1e+18 Wei があります。

StorageRoot: Merkle Patricia ツリーのルート ノードのハッシュ値 (Merkle ツリーについては後で説明します)。 Merkle ツリーは、アカウントのストレージ コンテンツのハッシュをエンコードし、デフォルトでは空です。

CodeHash: このアカウントの EVM コードのハッシュ。契約アカウントの場合、これはハッシュ化され、CodeHash として保存されるコードです。外部アカウントの場合、codehash フィールドは空の文字列のハッシュです。

世界の状態

Ethereum のグローバル状態には、アカウント アドレスとアカウント状態間のマッピングが含まれていることがわかっています。このマッピングは、Merkle Patricia ツリー データ構造に保存されます。

マークル木は、次のような一連のノードで構成されるバイナリ ツリーです。

ツリーの下部にある多数のリーフノードには基礎となるデータが含まれています

中間ノードのセット。各ノードは2つの子ノードのハッシュです。

ルートノードは、2つの子ノードのハッシュによって形成され、ツリーの最上部を表します。

ツリーの一番下のデータは、保存するデータをブロックに分割し、ブロックをバケットに分割し、各バケットのハッシュを取得して、残りのハッシュの合計数がルート ハッシュの 1 つだけになるまで同じプロセスを繰り返すことによって生成されます。

Merkle ツリーでは、そこに格納される各値にキーが必要です。ツリーのルート ノードから開始して、キーは、リーフ ノードに格納されている対応する値を取得するためにどの子ノードに従うべきかを示します。 Ethereum の場合、状態ツリーのキー/値マッピングは、アドレスとそれに関連付けられたアカウントの間で行われ、各アカウントの残高、nonce、codeHash、StorageRoot (StorageRoot 自体はツリー) が含まれます。

(出典: イーサリアムホワイトペーパー)

同じトライ構造は、トランザクションと領収書の保存にも使用されます。具体的には、各ブロックには「ブロック ヘッダー」があり、次の 3 つの異なる Merkle トライ構造のルート ノード ハッシュが格納されます。

l 状態トライ

トランザクショントライ

l 領収書トライ

これらすべての情報を Merkle トライに効率的に保存する機能は、Ethereum では「軽量クライアント」と「軽量ノード」があるため、非常に便利です。ブロックチェーンは多数のノードによって維持されていることを覚えておいてください。大まかに言えば、ノードにはフルノードとライトノードの 2 種類があります。

フルノードは、ジェネシスブロックから現在のブロックまでのチェーンデータ全体をダウンロードし、そこに含まれるすべてのトランザクションを実行してブロックチェーンを同期します。通常、マイナーはマイニング操作を実行するために必要なため、データ全体をアーカイブ ノードに保存します。何もアクションを起こさずにフルノードをダウンロードすることは可能です。いずれにしても、フルノードにはすべてのチェーンが含まれます。

ただし、ノードがすべてのトランザクションを実行する必要があるか、履歴データのクエリを容易にする必要がある場合を除き、チェーン全体のデータを保存する必要はありません。これはライトノードの概念の起源でもあります。ライトノードは、チェーン全体のデータをダウンロードして保存し、すべてのトランザクションを実行する代わりに、ジェネシスブロックから現在のブロックのヘッダーまでのチェーンヘッダーのみをダウンロードし、トランザクションを実行したり、関連する状態を取得したりすることはありません。ライトノードは、3 つの試行のハッシュを含むブロック ヘッダーにアクセスできるため、トランザクション、イベント、残高などに関する検証可能な回答を簡単に生成して受信できます。

これが機能する理由は、Merkle ツリーのハッシュが上方向に伝播するためです。悪意のあるユーザーが Merkle ツリーの下部に偽のトランザクションを配置しようとすると、その変更によって上のノードのハッシュが変更され、さらにその上のノードのハッシュが変更され、最終的にツリーのルートのハッシュが変更されます。

データを検証したいノードは、「Merkle 証明」を使用して検証できます。マークル証明には以下が含まれます:

l 証明すべきデータとそのハッシュ

ツリーのルートハッシュ

「ブランチ」(ブロックからルートまでのパスをたどるすべてのパートナーハッシュ)

証明を読めば誰でも、ブランチ ハッシュがツリー全体にわたって一貫していること、したがって特定のブロックが実際にツリー内のその位置にあることを確認できます。

要約すると、Merkle Patricia ツリーを使用する利点は、構造のルート ノードがツリーに格納されているデータに暗号的に依存しているため、ルート ノード ハッシュを使用してそのデータを安全に識別できることです。ブロック ヘッダーには状態、トランザクション、および受信ツリーのルート ハッシュが含まれているため、すべての状態を保存する必要がなく、どのノードでも Ethereum 状態の小さな部分を検証できます。すべての状態を保存すると、フル ノードが非常に大きくなります。

- つづく - -

<<:  ビットフィネックスが失った27ビットコインは米国政府によって回収された

>>:  ビットコインの4つの強気相場を振り返ると、これらの経験はネギのように何度も切られるのを避けるのに役立つ

推薦する

LCoin: Node.JS で書かれた最初の Litecoin フルノード ツール

BCoin開発チームがLCoinをリリース、ライトコイン決済の大規模商用化への道を開く概要: 多くの...

Bitcoin ランサムウェア ウイルス システム Microsoft 公式脆弱性修復パッチのダウンロード アドレス (完全版)

5月12日夕方、「ビットコインランサムウェア」ウイルスが世界中で発生した。攻撃を受けた側のコンピュ...

スノーデン氏:匿名のZcashプロジェクトはビットコインの監視リスクに対処できる可能性がある

先週、世界的に有名な政府内部告発者エドワード・スノーデン氏は、ビットコインの公開取引記録の監視リスク...

曹鋒博士:「Brexit」と「DAO盗難」からブロックチェーンについて語る - コンセンサス、フォーク、分散化、セキュリティについて

ブレグジットとDAOハッキング2016年6月23日、英国は国民投票の結果、欧州連合からの離脱を決定し...

チャーリー・リー:推測するのはやめてください、私はサトシ・ナカモトではありません

事態が手に負えなくなる前に…いいえ、私は絶対にサトシ・ナカモトではありません。ライトコイン(LTC)...

四川省康定市の違法鉱山が是正される中、採掘は危険にさらされているのか?

今日、チャットのスクリーンショットがさまざまなWeChatグループチャットや友人間で狂ったように転送...

ビットコインの急騰のニュースがインターネットを席巻し、専門家は投資家に投資の分散を促した。

ビットコインは最近、金融ニュースのトップページで話題になっています。ビットコインの価格は繰り返し最高...

グラフィック カードの計算能力が 5% 低下しました。誰が私のグラフィック カードの計算能力に触れたのでしょうか?

最近、Kuaikuai は読者からグラフィック カード マイニングの計算能力の低下に関する質問を受け...

マイニングか暗号通貨投機か、それが問題だ。

歴史は常に驚くべき類似点を伴って繰り返される。一般大衆は常に簡単に説得され、時代の憶測の波に何度も参...

ビットコインブロックチェーンは最後の経済の砦であり、銀行口座を持たない人々に雇用を創出する

ビットコインは商人にとって使いやすく、安全で安心であるため、経済的自由を実現する手段として使用できま...

海外メディア:モンタナ州政府がビットコイン採掘企業に資金提供

海外メディアtrustnodes.comによると、ビットコインの価格が史上最高の3,000ドルに上昇...

BNPパリバによると、クラウドファンディングがブロックチェーンから恩恵を受ける3つの理由

BNPパリバはブロックチェーン技術を使った独自の公開実験を開始する準備ができているが、あまり議論され...

中央銀行デジタル通貨が現実になるかもしれない、中国はどう対応するのか?

国際通貨基金(IMF)の目から見れば、中央銀行デジタル通貨(CBDC)はすでに未来の一部となっている...