前回の記事「イーサリアムの仕組み(パート1)」の続き ガスと支払いEthereum における非常に重要な概念は手数料の概念です。イーサリアム ネットワーク上のトランザクションによって消費されるすべてのコンピューティングには料金が発生します。諺にあるように、世の中にただ飯はないのです。支払われる手数料は「ガス」で計算されます。 ガスは、特定の計算を実行するコストを測定するために使用される測定単位です。ガス価格とは、ガス 1 単位あたりに費やすことができる Ether の合計量であり、「gwei」で測定されます。 「Wei」は Ether の最小単位で、1^018 Wei が 1 Ether を表します。 1 gwei は 1,000,000,000 wei です。 各トランザクションごとに、送信者(転送者)がガス制限とガス価格を設定します。ガス価格とガス制限は、送信者がトランザクションに対して支払う意思のある Wei の最大額を表します。たとえば、送信者がガス制限を 50,000 に設定し、ガス価格を 20 gwei に設定するとします。これは、トランザクションの送信者がトランザクションを実行するために最大 50,000*20gwei=1,000,000,000,000,000 Wei、つまり 0.001 Ether を支払う意思があることを意味します。 ガス制限は、トランザクションの送信者が支払う意思のある最大手数料を表すことに注意してください。口座残高がこの上限額をカバーできる場合は、問題はありません。取引の終了時に、送信者は未使用のガス資金の払い戻しを受け取り、取引は元の価格で完了します。 トランザクションの送信者がトランザクションを実行するために十分なガスを提供しない場合、トランザクションはガス不足になり、トランザクションは無効になります。この場合、トランザクション プロセスは中止され、発生した状態の変更はすべて元に戻されるため、トランザクションは終了し、トランザクション前の Ethereum の状態に戻ります。さらに、トランザクションの失敗がログに記録され、どのトランザクションが試行され、どこで失敗したかが示されます。同時に、ガスがなくなる前にマシンはすでに計算に労力を費やしているため、論理的に言えば、消費されたガスはトランザクションの送信者に返金されません。 ガス資金はどこへ行ったのでしょうか?トランザクションの送信者が費やしたすべてのガス資金は、「受益者」アドレス(通常はマイナーのアドレス)に送信されます。マイナーはトランザクションの計算と検証に労力を費やすため、報酬としてガス料金を受け取ります。 一般的に、トランザクションの送信者が支払うガス価格が高ければ高いほど、マイナーがトランザクションから得る価値は高くなります。したがって、マイナーも価格の高い取引を選択することになります。このようにして、マイナーは検証するトランザクションを自由に選択できます。トランザクションの送信者がガス価格を設定できるようにするために、マイナーはトランザクションを実行する最小ガス価格を宣伝することを選択できます。 保管にもお金がかかります。 ガスは計算ステップの支払いだけでなく、ストレージコストにも使用されます。ストレージの全体的なコストは、使用される 32 バイトの最小の倍数に比例します。 ストレージのコストには微妙な違いがあります。たとえば、ストレージを増やすと、すべてのノードの Ethereum 状態データベースのサイズが増加するため、保存されるデータの量を小さく保つインセンティブがあります。したがって、トランザクションにストレージ内のエントリをクリアできるステップがある場合、その操作を実行するための手数料は免除され、ストレージスペースを解放するために手数料を払い戻すことができます。 料金の目的は何ですか? Ethereum の動作の重要な側面は、ネットワークによって実行されるすべてのアクションがすべてのフルノードに同時に影響されることです。ただし、Ethereum 仮想マシンでの計算手順は非常にコストがかかります。 その結果、Ethereum スマート コントラクトは、ネットワークに負荷をかけるファイル ストレージ、電子メール、機械学習などの複雑な用途ではなく、単純なビジネス ロジックの実行や署名やその他の暗号化オブジェクトの検証などの単純なタスクに最適です。料金を課すことで、ユーザーによるネットワークの過剰使用を防ぐことができます。 Ethereum はチューリング完全な言語です。簡単に言えば、チューリング マシンは、あらゆるコンピューター アルゴリズムをシミュレートできるマシンです。これによりループが発生し、Ethereum は停止問題、つまりプログラムが無期限に実行されるかどうかがわからない問題の影響を受けやすくなります。手数料がなければ、悪意のある人物はコストを気にせずにトランザクションの無限ループを実行し、簡単にネットワークを混乱させようとすることができます。したがって、手数料はネットワークを悪意のある攻撃から保護します。 「なぜストレージに料金を支払う必要があるのか」と思うかもしれません。そうですね、計算と同じように、Ethereum ネットワーク上のストレージにもコストがかかり、ネットワーク全体がその負担を負わなければなりません。 取引とメッセージEthereum はトランザクションベースのステートマシンであることに注意してください。言い換えれば、異なるアカウント間のトランザクションによって、Ethereum のグローバル状態が 1 つの状態から別の状態へと変化します。 最も基本的な意味では、トランザクションは、外部アカウントによって生成され、シリアル化されてブロックチェーンに送信される、暗号化された署名付きの命令です。トランザクションには、メッセージ呼び出しとコントラクト作成(新しい Ethereum コントラクトを作成するトランザクション)の 2 種類があります。 すべてのトランザクションには、そのタイプに関係なく、次のコンポーネントが含まれます。
アカウントの章では、メッセージ呼び出しや契約作成トランザクションなどのトランザクションは常に外部アカウントによって開始され、ブロックチェーンに送信されることを学びました。別の考え方としては、これらのトランザクションが外の世界と Ethereum の内部をつなぐ橋渡しの役割を果たしていると言えます。 しかし、これはこれらの契約が他の契約と通信できないことを意味するものではありません。 Ethereum 状態の範囲内に存在するコントラクトは、同じ範囲内に存在する他のコントラクトと通信できます。通信方法は「メッセージ」または「内部トランザクション」を介して行われます。メッセージや内部トランザクションはトランザクションに似ていると考えることができますが、主な違いは、外部アカウントによって生成されないことです。代わりに、それらは契約によって生成されます。これらは仮想オブジェクトであり、トランザクションとは異なりシリアル化されておらず、Ethereum 実行環境にのみ存在します。 コントラクトが別のコントラクトに内部トランザクションを送信すると、受信側のコントラクト アカウントに関連付けられたコードが実行されます。 内部トランザクションまたはメッセージにはガス制限が含まれていないことに注意することが重要です。ガス制限は、元の契約の外部作成者、つまり外部アカウントによって決定されるためです。外部アカウントによって設定されたガス制限は、トランザクションによって引き起こされるサブ実行を含め、トランザクションを実行するのに十分な高さである必要があります。たとえば、契約間のメッセージなどです。 トランザクションとメッセージのチェーンで、特定のメッセージ実行のガスが不足した場合、そのメッセージの実行は、その実行によってトリガーされた後続のメッセージとともに元に戻されます。ただし、親の実行を復元する必要はありません。 ブロックすべてのトランザクションはブロックにグループ化されます。ブロックチェーンは、相互にリンクされた一連のブロックで構成されています。 Ethereum では、ブロックには次のものが含まれます。
オマーズについて ommer とは何でしょうか? Ommer は、親ブロックが現在のブロックの親ブロックの親ブロックと同等であるブロックです。 ommer が何に使用されているか、またブロックのヘッダーに ommer が含まれているのはなぜかを簡単に説明します。 イーサリアムの構築方法により、ブロック時間は他のブロックチェーンよりも短くなっています。たとえば、ビットコインのブロック時間は 1 ブロックあたり 10 分であるのに対し、イーサリアムでは約 15 秒/ブロックです。これにより、より高速な取引が可能になります。ただし、ブロック時間が短くなると、マイナーが競合するブロックが増えるという欠点があります。これらの競合ブロックは「孤立ブロック」とも呼ばれます (つまり、マイニングされたブロックはメイン チェーンに入らなかった)。 ommers の目的は、これらの孤立ブロックを含めるマイナーに報酬を与えることです。マイナーによって組み込まれるオマーは「有効」である必要があります。つまり、現在のブロックから 6 世代以内である必要があります。 6 世代後、古いトランザクションを含めると状況が複雑になるため、古い孤立ブロックは参照されなくなります。 オマー ブロックは、フル ブロックよりも少ない報酬を受け取ります。それにもかかわらず、マイナーにとってこれらの孤立ブロックを含めて報酬を得るインセンティブはまだあります。 ブロックヘッダー ブロックに戻りましょう。前に述べたように、各ブロックにはブロック ヘッダーがあります。それは正確には何ですか? ブロック ヘッダーはブロックの一部であり、次のものが含まれます。
各ブロック ヘッダーに 3 つのトライ構造が含まれていることに注目してください。
これらのトライ構造は、前述の Merkle Patricia トライと同じです。さらに、上記の説明の一部の用語は明確にする必要があります。 ログ Ethereum では、さまざまなトランザクションやメッセージの追跡を容易にするためにログを使用できます。契約では、「イベント」を定義することでログを明確に生成できます。ここで、「イベント」とはログに記録するものです。 ログエントリには次の内容が含まれます。
ログは、無限のログ データを効率的に保存するブルーム フィルターに保存されます。 取引受領書 ブロック ヘッダーに保存されるログは、トランザクション レシートに含まれるログ情報から派生します。お店で何かを購入したときにレシートを受け取るのと同じように、Ethereum はすべての取引に対してレシートを生成します。ご想像のとおり、各領収書には取引に関する情報が含まれています。領収書には次の内容が記載されています。
ブロック難易度 ブロックの「難易度」は一貫性を実現するために使用され、これによりブロックの検証にかかる時間がほぼ一定になります。ジェネシスブロックの難易度は131,072で、その後の各ブロックのマイニング難易度を計算するために特別な計算式が使用されます。ブロックが前のブロックよりも早く検証された場合、Ethereum プロトコルはブロックの難易度を上げます。 ブロックの難易度は、ブロックをマイニングするときにマイナーが PoW アルゴリズムを使用して計算する必要があるハッシュ値である nonce に影響します。ブロックの難易度と nonce の関係は、次のように数学的に形式化できます。 ここで、Hd は難易度です。 難易度しきい値を満たす nonce を見つける唯一の方法は、PoW アルゴリズムを使用してすべての可能性を尽くすことです。解決策を見つけるのに予想される時間は難易度に比例します。難易度が高いほど、ナンスを見つけるのが難しくなり、ブロックを検証するのが難しくなり、新しいブロックの検証にかかる時間が長くなります。したがって、ブロックの難易度を調整することで、プロトコルはブロックの検証にかかる時間を制御できます。 一方、検証時間が長くなると、プロトコルは難易度を下げます。このようにして、検証時間は一定速度(平均して 15 秒ごとに 1 ブロック)を維持するように調整されます。 取引執行ここで、Ethereum プロトコルの最も複雑な部分の一つであるトランザクションの実行について説明します。処理のためにトランザクションを Ethereum ネットワークに送信するとします。 Ethereum の状態が変換されてトランザクションが含まれるようになると何が起こりますか? まず、すべての取引は、実行される前に、一連の初期設定要件を満たす必要があります。これらには以下が含まれます:
1. トランザクションを実行するための21,000ガスの事前定義されたコスト 2. トランザクションで送信されたデータのガス料金(ゼロのデータまたはコード1バイトあたり4ガス、ゼロ以外のデータまたはコード1バイトあたり68ガス) 3. 取引が契約作成取引である場合、さらに32,000ガスが追加されます。
取引が上記の有効性要件をすべて満たしている場合は、次のステップに進みます。 まず、送信者の残高から所定の実行コストを差し引き、現在のトランザクションを考慮して送信者のアカウント nonce を 1 増やします。この時点で、残りのガスを計算できます。残りのガスは、トランザクションの合計ガス制限から使用された固有のガスを差し引いたものです。 次に、トランザクションの実行が開始されます。トランザクションの実行中、Ethereum は「サブ状態」を追跡します。このサブステートは、トランザクションが完了した直後に必要となる、トランザクション中に生成された情報を記録する方法です。具体的には、次のものが含まれます。
次に、トランザクションに必要なさまざまな計算が処理されます。 トランザクションに必要なすべてのステップが処理されると、無効な状態がないと仮定して、送信者に払い戻される未使用のガスの量を決定することによって最終状態が達成されます。未使用ガスに加えて、送信者は上記の「払い戻し残高」からいくらかの手当を受け取ることもできます。 送信者が払い戻しを受けたら:
最後に、新しい状態とトランザクションによって作成されたログのセットが残ります。トランザクション実行の基本について説明したので、次はトランザクションと、契約を作成するメッセージ呼び出しの違いについて見ていきましょう。 - つづく - - この記事の著者は、medium.com の Preethi Kasireddy 氏で、Blue Fox Notes コミュニティの「Leo」氏が翻訳しました。 |
<<: 1.3兆ドル!ビットコインの年間取引量が再びPayPalを上回る
>>: Innosilicon Grin ASIC マイナーの先行販売開始
ビットコインは昨日、45,000ドルを下回り、新たな安値を記録しました。ビットコインは過去2日間で2...
The Block Researchのデータによると、イーサリアムのマイニング収益は11月に7か月連...
2016年1月、大手銀行やテクノロジー企業が、ブロックチェーン関連技術を活用してビジネスモデルを革...
著者: テイラー W DeFiの普及により、イーサリアムは非常に混雑していますが、興味深いのは、ガス...
カナダを拠点とするビットコイン取引所Cointraderは、ハッカー攻撃を理由に今週初めに閉鎖を発表...
ドバイのスカイライン。昨年9月、英国の億万長者ダグラス・バロウマン氏と恋人の「ランジェリーの女王」ミ...
原作者: マルクス・アウレリウス編集者注:証券市場に参入した最初のビットコインマイニングマシンメーカ...
Blockbeatsによると、8月7日、複数のBCHノード開発者が共同声明を発表し、2020年11...
10月10日、胡潤研究院とLEXUSが共同で「2019年LEXUS胡潤富豪リスト」を発表した。ブロ...
Innosilicon T3 ビットコイン マイナーは 43T を標準として設計されています。実際...
世界で唯一の量産型イーサリアムASICモデル - Innosilicon A11初レビュー世界で唯一...
著者の Jacek Czarnecki 氏は、Wardynski & Partners の弁...
なぜテラはビットコインを買うために数十億ドルを費やしているのでしょうか?ここ数週間でビットコインを最...
イーサリアムの開発者は最近、3000万ドルの予算で、信じられないほど高速なプロセッサを実現する何百万...
暗号通貨分野におけるクラウドファンディングの取り組みは、今のところ目新しいものではありません。有望な...