
著者:イーサリアムの創設者、ヴィタク:シャン・オバ、ビッチン・ビジョンの領域
最近のDencunハードスプリットフォークの未知のEIPの1つは、eIP-6780です。これは、操作コードのセルフデストラクトの機能のほとんどを削除します。
>
このEIPは、イーサリアム協定開発の重要な例です。複雑さをなくし、追加することによって新しい契約の努力を簡素化するセキュリティ保証。これは、私が呼ぶ「パージ」の重要な部分です:合理化されたイーサリアムとクリアされた技術的債務プロジェクト。同様の精神を持つEIPがもっとあるので、EIP-6780の目標と、将来パージで他のEIPがどのようにクリアされるかを理解する価値があります。
EIP-6780は、イーサリアム契約をどのように簡素化しますか?
EIP-6780は、操作コードの機能を削減し、契約とストレージをクリアします。これ自体は減少していません仕様複雑さ。ただし、2つの新しい不変変数を導入することで改善します成し遂げる
1。EIP-6780の後、単一のブロックで編集できるストレージスロットの数は最大(ほぼ:ガス制限 / 5000)です。
2。トランザクションまたはブロックの開始時に契約が空でないコードを持っている場合、トランザクションの最後またはブロックの終了時に同じコードがあります。
以前は、これらの不変変数は真実ではありませんでした。
1、セルフデストラクト
大量のストレージスロットとの契約は、単一のブロックで無制限の量のストレージスロットをクリアできます。これにより、Verkleツリーの実現がより困難になり、この特別な状況を効果的に処理するために追加のコードが必要なため、Ethereumクライアントの実装がより複雑になります。
2。契約のコードは、実際には、契約を介して空虚に変更することができます。これにより、アカウントの抽象的なウォレットのトランザクションがDOSに簡単に攻撃されることなくコードライブラリを使用することが困難になります。
現在、これらは変数ではありません全てTRUEにより、イーサリアムクライアントやその他の種類のインフラストラクチャを簡単に構築できます。数年後、将来のEIPがこの作業を完了できることを願っていますセルフデストラクト
完全に排除されました。
他のどの「パージ」が進行中ですか?
-
Gethは最近、数千行のコードを削除し、事前マージPOWネットワークのサポートを削除しました。
-
このEIPは公式にそのような事実を反映しています:「空のアカウント」について心配するコードはもう必要ありません(EIP-161を参照、上海DOS攻撃修理の一部としてこの概念を紹介します)
-
Dencunのストレージウィンドウは18日間です。つまり、EthereumノードはBLOBデータを保存するのに約50 GBしか必要ありません。この数は時間の経過とともに増加しません。
最初の2つは、クライアント開発者の経験を大幅に改善しました。後者は、ノードオペレーターの寿命を大幅に改善しました。
パージを必要とする可能性のある他のものは何ですか?
プリセット(プレパイル)
補成前は、ETEREUM契約を結んでいませんが、クライアントが直接実装する必要があるロジックがあります。この考え方は、Pre -Compilationを使用して、EVMで効果的に実装できない複雑な形式を実現できるということです。
今日、プレコンパイルは非常に成功しています。特に、楕円形の曲線のプレコンパイルに基づいたアプリベースのアプリケーションです。ただし、めったに使用しない他の事前凝縮があります。
-
RIPEMD-160
:ハッシュ関数の導入は、ビットコインとのより良い互換性をサポートすることです -
身元
:入力と同じ出力の再折りたたみに戻る -
Blake2
:ハッシュ関数の導入は、ZCASHとのより良い互換性をサポートすることです -
modexp
RSAベースの暗号化をサポートするために非常に大きな金型のパワーを紹介します
事実は、これらの競合のニーズがあることを証明しました遠く離れた予想よりも以下。身元
それはデータをコピーする最も簡単な方法であるため広く使用されていますが、Dencun以降、McOPYがそれに取って代わりました。残念ながら、これらのプレコンパイルはコンセンサスエラーの大きな原因であり、ZK-SNARK回路、友好的な実現の正式な検証など、新しいEVMによって達成される大きな痛みの原因でもあります。
これらの事前競合を削除するには、次の2つの方法があります。
-
たとえば、競合前を削除するだけです。EIP-7266削除Blake2。これは簡単ですが、まだ使用しているアプリケーションを破壊します。
-
たとえば、同じ操作を実行するEVMコードブロックに、同じ操作を実行するEVMコードブロックに置き換えます。このドラフトEIPは、アイデンティティの事前比較のために行われます。これはより困難ですが、それを使用してアプリケーションを破壊することはほとんどありません(ケースが非常に少ない場合を除き、新しいEVMコードのガスのコストは、いくつかの入力ブロックガス制限のコストを超えています)
-
仕様はよりシンプルで明確です
-
現在の六角形のマークルパトリシアツリーと比較して、ほとんどの場合、マークルの証明の長さは4回短縮されています
-
最悪の場合と最悪の場合と比較して、Merkleの証明の長さは境界を掲載しています(たとえば、契約コードや長い領収書出力)
-
複雑なビット操作コードを達成する必要はありません(RLPニーズ)
-
ZK-SNARKユースケースの場合、バイナリマークルツリーの既存の実装の既存の実装を再利用できます
歴史的ブロック(EIP-4444)
今日、すべてのイーサリアムノードは、すべての履歴ブロックを永久に保存することが期待されています。長い間、人々はこれが非常に無駄な方法であると常に信じてきました。高いストレージ要件のために、イーサリアムノードを実行する必要はありません。Dencunでは、Blobを導入しました。Blobは約18日しか保存しません。EIP-4444を使用した後、一定期間後、イーサリアムブロックもデフォルトのイーサリアムノードから削除されます。
解決すべき重要な問題の1つは、古い履歴記録が各ノードによって保存されていない場合、何を使用するかです来るそれはどうですか?実際、ブロックブラウザなどの大規模なエンティティがそうします。ただし、P2Pプロトコルを保存して渡して情報を保存および渡すこともできます。これは難しくなく、タスクに対してより最適化されています。
Ethereumブロックチェーンは永続的ですが、すべてのデータを永久に保存するための各ノードは、この永続を達成するための非常に「やり過ぎ」方法であることが必要です。
1つの方法は、古い歴史の単純なポイント – ポイントトレントネットワークをターゲットにすることです。もう1つは、ポータルネットワークなど、イーサリアムの使用に関するより明確な合意です。
または、因子形式:
>
Ethereumノードのストレージを削減すると、ノードになる意思がある人の数が大幅に増加する可能性があります。EIP-4444は、ノードの同期時間を短縮することもできます。これにより、多くのノード演算子のワークフローも簡素化されます。したがって、EIP-4444は、イーサリアムノードの分散化を大幅に改善できます。潜在的に、各ノードが履歴記録のわずかな部分にデフォルトである場合、今日のようにインターネットに特定の各履歴記録のコピーを保存することもできます。
ログ改革
このEIPドラフトを引用してください:
ログの元の導入は、アプリケーションがチェーン上のイベントに関する情報を記録できるようにすることで、分散型アプリケーション(DAPP)がこれらの情報を簡単に照会できるようにすることでした。ブルームフィルターを使用して、DAPPは履歴レコードをすばやく閲覧し、そのアプリケーションに関連するログを含むいくつかのブロックを特定し、必要なログがある単一のトランザクションをすばやく識別できます。
実際、このメカニズムは遅すぎます。歴史的な記録を訪れるほとんどすべてのDappは、最終的にはイーサリアムノード(およびリモートホスティングノード)のRPC呼び出しではなく、集中化された追加プロトコルを通じて行われます。
何ができますか?ブルームフィルターを削除して簡素化できますログ
このように操作コードそれあなたがしていることは、ハッシュを状態に入れる値を作成することです。次に、ZK-SNARKとインクリメンタル増加計算(IVC)を使用して、正しい「ログツリー」を生成する別のプロトコルを構築できます。トピック
また、分散化するログとアプリケーションが必要な場合は、これらの個別のプロトコルを使用できます。
SSZに目を向けます
今日、イーサリアムのほとんどのブロック構造(トランザクションと領収書を含む)は、保管のためにRLPとMerkle Patriciaの木に基づいた時代遅れの形式を依然として使用しています。これにより、このデータを使用してアプリケーションを開発することは不必要な困難になります。
Ethereum Consensus Layerは、よりクリーンでより効率的なSimpleSeRialize(SSZ)にシフトしました。
>
出典:https://eth2book.info/altair/part2/building_blocks/merkleization/
ただし、変換を完了し、実行レイヤーを同じ構造に移動する必要があります。
SSZの主な利点は次のとおりです。
今日、イーサリアムには、SHA256バイナリツリー、SHA3 RLPハッシュリスト、および16進パトリシアツリーの3種類の暗号化されたデータ構造があります。SSZへの移行を完了すると、SHA256バイナリツリーとVerkle Treeの2つしかありません。長い目で見れば、snarkingのハッシュで十分にうまくやれば、バイナリマークルツリーを使用して、Sha256バイナリツリーとVerkleをスナークのフレンドリーハッシュ(暗号化されたデータ構造の一種であるバイナリマークルツリーに置き換える可能性があります。すべてのイーサウム)。