「ブロックチェーンの原理と技術」学習ノート (5) - イーサリアムのトランザクション、コンセンサスメカニズム、データ構造

「ブロックチェーンの原理と技術」学習ノート 第 5 部

5. イーサリアム取引

イーサリアムでは、トランザクションにはアカウントの転送、契約の作成、通話契約などの機能が含まれます。

5.1 取引内容

トランザクション内のデータは、基本トランザクション、トランザクションの実行パラメータ、トランザクションの署名の 3 つの部分に大別されます。

基本的な取引内容

  • From: トランザクションの送信者のアドレス。実際には署名内の <r, s, v> から計算されます。
  • To: トランザクション受信者のアドレス。コントラクト作成時は0x0000に設定され、コントラクト呼び出し時はコントラクトのアドレスとなります。
  • 値: トランザクションの金額。1エーテル = 10^18 ウェイ。

トランザクション実行パラメータ

  • 入力データ: トランザクションに添付されたデータ。コントラクトを作成するためのコード/コンストラクターを渡し、コントラクトの関数とパラメーターを呼び出します。
  • Nonce: トランザクション送信者の Nonce。
  • MaxFeePerGas: 送信者がトランザクションに対して支払ってもよい最大価格
  • MaxPriorityFeePerGas: マイナーに支払われる最大チップ
  • GasLimit: トランザクションで消費できる最大ガス。これにより、スマート コントラクトを停止できない問題が解決されます。

トランザクション署名

  • hash: 上記のフィールドによって生成されたハッシュ値
  • r、s、v: トランザクションのハッシュは、転送の正当性を確認するために送信者の秘密キーによってデジタル署名されます。

5.2 取引手数料

イーサリアムの取引手数料は、主に次の概念を含むガスメカニズムによって計算されます。

  • ガス: コンピューティングリソース消費の基本単位
  • GasLimit: 消費が許可される最大ガス値
  • Gas Used: 実行後に消費されたガス値
  • GasPrice: ガスあたりのイーサリアムの価格

トランザクション Gas は、基本トランザクション Gas に EVM 動作中に消費された Gas 値を加算することによって取得されます。Gas Used が GasLimit を超えると、トランザクションの実行は失敗します。
トランザクションの Gas Used*GasPrice は、トランザクションに対してユーザーが支払った手数料です。

5.3 トランザクションサイクル

ここに画像の説明を挿入

1. 始める

  • ユーザー入力 from、to、値、データ、gasPrice など。
  • ユーザーの確認がイーサリアムノードに送信されます
  • イーサリアムウォレットソフトウェアは、ユーザーのgasLimitとnonceを補完し、秘密キーを使用してr、s、vを取得し、最後にトランザクションをシリアル化してネットワークに送信します。

2.放送

  • ノードはトランザクションを受信/開始した後、トランザクションを検証します。
  • ノードは、それが正当なトランザクションであることを検証し、トランザクションをノードのトランザクション プールに追加します。
  • ノードは、P2P ネットワーク ブロードキャスト戦略に従って隣接ノードにトランザクションをブロードキャストし続けます。

3. パッケージ化と実行

  • フルノードはトランザクションをパッケージ化し、トランザクションを順番に実行します。
  • パッケージ化する必要があるすべてのトランザクションが実行された後、トランザクション、ステータス、領収書の情報がブロックにパッケージ化されます。
  • アカウンティング ノードが正当なブロックを取得した後、隣接するノードにブロードキャストします。

4. 検証と実行

  • アカウンティング権を取得していないノードは、ブロードキャストブロックを受信後、ブロックの正当性を検証し、トランザクションを実行する。

5.4 トランザクションの実行種類

toの値に応じて、トランザクションの実行は以下の3種類に分けられます。


1. to が空のコントラクト トランザクションを作成します。トランザクションは、from と nonce の値に基づいてコントラクト アドレスを生成し、データ内のスマート コントラクト コードを実行します。EVM はコードをコントラクト アドレスに保存します。

2. 契約トランザクションの呼び出し
先は、契約アカウントのトランザクションです。EVM は to アドレス内のコードを取得し、データ内のコードを実行します。
本質的には。コントラクトへの呼び出しは、コントラクト状態の変更です。

3. への通常送金トランザクションは、
個人が管理するアカウント(外部アカウント)であり、からからへイーサリアムを直接送金するトランザクションです。

6. イーサリアムのコンセンサスメカニズム

6.1 イーサリアムフォークの解決: ゴーストプロトコル

アンクルブロックとは、
メインチェーンには存在しないが、メインチェーンによって記録され、難易度を満たしているブロックを指します。マイナーがブロックをパックするとき、合法的な 0 ~ 2 個のアンクル ブロックを独立して選択できます。
イーサリアムでは7世代以内に共通の祖先を持つものをアンクルブロックとみなすことが規定されています。

アンクルブロックの受け入れと報酬のルール

  • メインチェーンのブロックは、1ブロックあたり最大2個までおじさんブロックを受け入れることができ、おじさんブロックを1個受け入れるごとにメインチェーンブロックの報酬が1/32ずつ増加します。
  • 受け入れられるアンクル ブロックはメイン チェーン上の祖先の直接の子ブロックである必要があり、アンクル ブロックは繰り返し受け入れられません。
  • 受け入れられたおじさんブロックの場合、ブロック報酬は 1-(受け入れられたブロックの高さ-おじさんのブロックの高さ)/8 です。
  • アンクルブロック内のトランザクションは実行する必要はありません。

ここに画像の説明を挿入

アンクルブロックは、マイナーの熱意を維持しながら、ブロックチェーン全体のメインチェーンを可能な限り縮小し、統合することができます。

6.2 新しい合意メカニズム: PoS

プルーフ・オブ・ステーク: 保有するコインの数と保有時間によって、今回簿記の権利を取得する確率が決まります。保有すればするほど簿記取得の確率が高くなります。

PoW と比較すると、コンセンサス時間が短縮され、エネルギーが節約されますが、フォークや集中化が容易です。

7. イーサリアムマイニング難易度調整

マイニング難易度の公式は次のとおりです:
H = 0 , D ( H ) = 0 D ( H ) = max ( D 0 , P ( H ) H d + x × ζ 2 ) + ϵ H=0,D(H)= 0 \\ D(H)=max(D_0,P(H)_{H_d}+x × \zeta_2)+\epsilonH=0 D ( H )=0D ( H )=マックス( D _0P ( H )Hd+バツ×g2+ϵ
ここで、P ( H ) H d P(H)_{H_d}P ( H )Hdは親ブロックの難易度です。x × ζ 2 x×\zeta_2バツ×g2ブロックの難易度ϵ \epsilonを適応的に調整するために使用されます。ϵ は難易度ボムセットを表します

基本部分には下限があり、最小値はD 0 = 131072 D_0=131072です。D0=131072

7.1 適応型難易度調整

x = ⌊ P ( H ) H d 2048 ⌋ , ζ 2 = max ( y − ⌊ H s − P ( H ) H s 9 ⌋ , − 99 ) x= \left\lfloor \frac{P(H)_{ H_d}}{2048} \right\rfloor, \ \zeta_2=max \left( y-\left\lfloor \frac{H_s-P(H)_{H_s}}{9} \right\rfloor, -99 \右)バツ=2048年P ( H )Hd g2=×( y9HsP ( H )Hs99 )
x は調整された単位、ζ 2 \zeta_2g2は調整された係数です。
親ブロックにおじさんが含まれている場合、y は 2、それ以外の場合は 1
H s H_sHsこのブロックのタイムスタンプです。P ( H ) H s P(H)_{H_s}P ( H )Hsは親ブロックのタイムスタンプであり、H s > P ( H ) H s H_s > P(H)_{H_s}であると規定されています。Hs>P ( H )Hs

7.2 難易度ボム

ϵ = ⌊ 2 ⌊ H i ’ / 100 , 000 ⌋ − 2 ⌋ , Hi ’ = max ( Hi − 30 , 000 , 000 ) \epsilon = \left\lfloor 2^{\lfloor H'_i / 100,000 \ rfloor -2} \right\rfloor, \ H'_i=max(H_i-30,000,000)ϵ=2⌊H _/100 , 000 2 H=最大( H _私は30 000 000 )
ϵ \epsilonϵは 2 の指数関数です。100,000ブロックごとに2倍

ディフィシティボムを設定する目的は、PoS プロトコルに移行する際のフォークのリスクを軽減し、マイナーが PoS に移行する意欲を持つように導くことです。

8. データ構造とストレージ

8.1 ブロックとアンクル

Ethereum ブロックのブロック ヘッダーには次のものが含まれます。

  • イーサリアムの状態を記録する状態ルート
  • 取引リスト、領収書リスト、親ブロック、叔父ブロックのハッシュ値
  • ブロック番号、難易度、マイナーアドレス、タイムスタンプ、Nonce値
  • ガス上限、トランザクションガスの合計、プルーフ・オブ・ワークの概要
  • 可変長フィールド

Ethereum ブロック本体の内容:

  • トランザクションで構成される送信リスト
  • 取引約定情報が記載された領収書の一覧
  • イーサリアムのコンセンサスプロセスを改善するために使用されるアンクルブロックのリスト

ここに画像の説明を挿入

世界の状態
イーサリアムのすべてのアカウントの状態の概要、つまりブロック ヘッダーの状態ルートは、特別なツリー状のハッシュ データ構造を通じて実現されます。

レシートは
トランザクションのデータ構造に対応し、トランザクション実行の中間状態の書き込みトランザクション実行結果などの情報を表します。
領収書の内容は次のとおりです。

  • EthereumのスマートコントラクトがEVMに出力する実行ログ
  • スマートコントラクト実行のためのガス
  • 単一トランザクションが実行された後のイーサリアムのステートルート
  • 取引により契約書が作成される場合、新しく作成された契約書の住所が領収書に記載されます。

8.2 マークル・パトリシア・トライ

イーサリアムには膨大な数の潜在的なアカウントがあるため、マークル ツリーだけではデータを保存できず、変更コストが高いため、イーサリアムはアドレスからアカウントまでのインデックスとして 16 進数の圧縮プレフィックス ツリーを使用し、マークル ツリーを使用して各層をリンクしますノードのハッシュ値を結合して計算し、最終的にルート ハッシュ値を取得します。

圧縮接頭語ツリー
通常の辞書ツリー (Trie) は各文字をツリーのノードとして使用するため、ツリーの高さが高くなりすぎて記憶領域が無駄になります; 圧縮接頭語ツリー (Patricia Trie) は共通接頭語部分をサブツリーに形成します, step by step 下向きに分割することで検索効率が向上します。

ここに画像の説明を挿入

MPT
MPTでは、「ワード」がアカウントのハッシュ値に、「ポインタ」がハッシュポインタに相当します。リーフノードレコードのハッシュ値(プレフィックス+アカウントハッシュ値)、親ノードのハッシュ値は(プレフィックス+子ブランチ)のハッシュ値となります。

次の図は例です。
H1=H(""+アカウント 1 のハッシュ値)、H3=H(d+アカウント 3 のハッシュ値) H5=
H(bc+H1+H2+""+""+... +" ")
H6=H(b+H4+...+""+H3+"+"")
H_root=H(""+...+""+H5+...+""+H6+"")

ここに画像の説明を挿入

状態ツリー
イーサリアムの状態ツリーは各アカウントの状態を記録しており、状態が変化すると対応するブランチの状態にのみ影響し、ブロックには対応する状態ツリーの状態ルートが格納されます。

コントラクト ストレージ ツリー
コントラクト アカウント ストレージ ツリーも MPT を使用して、ストレージ アドレスからストレージ値へのマッピングを記録します。マッピング テーブルのハッシュ値はストレージ ルートと呼ばれます。
コントラクトストレージ空間の単位はちょうど256ビットなので、そのままリーフノードとして使用できます。

トランザクションツリーとレシートツリー
この 2 つのツリーは、ブロック内のトランザクション/レシートのシリアル番号を通じて MPT を構築し、レシートとトランザクション情報は 1 対 1 に対応します。

8.3 ブルームフィルター

ブルーム フィルターは値がセット内にあるかどうかを取得でき、イーサリアムは受信ログのインデックス付けと検索に使用されます。
一定のエラー率が許容される場合、非常に効率的です。

原則: 複数のハッシュ関数を使用してキー値をビットマップにマッピングします。キー値の場合、同じハッシュ関数マッピングの下のビットマップにマーク ビットがない場合、キー値はセット内にあってはなりません。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_60482947/article/details/129326057
おすすめ