Rumah  >  Artikel  >  Apakah yang perlu dibersihkan semasa fasa Pembersihan Ethereum?

Apakah yang perlu dibersihkan semasa fasa Pembersihan Ethereum?

王林
王林ke hadapan
2024-04-08 09:25:21689semak imbas

Salah satu EIP yang kurang dikenali daripada garpu keras Dencun baru-baru ini ialah EIP-6780, yang mengalih keluar sebahagian besar fungsi opcode SELFDESTRUCT.

Apakah yang perlu dibersihkan semasa fasa Pembersihan Ethereum?

EIP ini ialah contoh utama bahagian pembangunan protokol Ethereum yang sering dipandang remeh: usaha untuk memudahkan protokol dengan mengalih keluar kerumitan dan menambah jaminan keselamatan baharu. Ini adalah bahagian penting daripada apa yang saya panggil "PURGE": projek untuk menyelaraskan Ethereum dan menjelaskan hutang teknikal. Akan ada lebih banyak EIP dalam semangat yang sama, jadi ia patut memahami cara EIP-6780 mencapai matlamatnya dan apakah EIP lain yang boleh dibersihkan dalam pembersihan akan datang.

Bagaimanakah EIP-6780 memudahkan protokol Ethereum?

EIP-6780 memperhalusi fungsi SELFESTRUCT, yang mengehadkan opcode untuk memusnahkan kontrak hanya boleh dilaksanakan apabila kontrak wujud semasa transaksi. Ini menghalang penyalahgunaan fungsi pemusnahan kontrak SELFDESTRUCT dan kemungkinan masalah yang disebabkan oleh pembersihan kod dan storan. Walaupun ini tidak menguatkuasakan spesifikasi yang lebih ketat, ia memperkenalkan dua pembolehubah baharu: sama ada ia wujud semasa urus niaga dan sama ada kontrak dipanggil. Perubahan ini memastikan bahawa kontrak hanya boleh dibuat dan perjanjian ditandatangani dalam tempoh dagangan yang sama untuk kebolehpercayaan yang lebih besar.

1 Selepas EIP-6780, terdapat bilangan maksimum slot storan yang boleh diedit dalam satu blok (kira-kira: had gas / 5000).

2. Jika kontrak mempunyai kod tidak kosong pada permulaan transaksi atau blok, ia akan mempunyai kod yang sama pada akhir transaksi atau blok tersebut.

Sebelum ini, tiada satu pun daripada invarian ini adalah Benar:

1 SELDFESTRUCTKontrak dengan sejumlah besar slot storan boleh mengosongkan bilangan slot storan yang tidak terhad dalam satu blok. Ini akan menjadikan pelaksanaan pepohon Verkle lebih sukar dan menjadikan pelaksanaan pelanggan Ethereum lebih kompleks kerana ia memerlukan kod tambahan untuk mengendalikan kes khas ini dengan cekap. 1、SELFDESTRUCT拥有大量存储槽的合约可以在单个区块内清除无限数量的存储槽。这将使Verkle树的实现变得更加困难,并且使以太坊客户端的实现变得更加复杂,因为它们需要额外的代码来有效地处理这种特殊情况。

合约的代码可以通过SELFDESTRUCT从非空变为为空,实际上合约甚至可以在之后立即使用不同的代码重新创建。这使得账户抽象中的交易验证更加困难,因为交易验证需要使用交易中的代码库而不容易受到DoS攻击的影响。

现在,这些不变量都是True,使得构建以太坊客户端和其他类型的基础设施变得更加容易。几年后,希望未来的EIP能够完成这项工作并SELFDESTRUCT完全消除。

哪些其他“purges”正在进行?

  • Geth 最近删除了数千行代码,删除了对pre-merge PoW网络的支持。

  • 这个 EIP正式体现了这样一个事实:我们不再需要代码来担心“空帐户”(请参阅:EIP-161 ,它引入了这个概念作为上海 DoS 攻击修复的一部分)

  • Dencun 中 blob 的存储窗口为 18 天,这意味着以太坊节点只需要约 50 GB 来存储 blob 数据,并且此数量不会随着时间的推移而增加

前两个显著改善了客户端开发人员的体验。后者显著提高了节点运营商的寿命。

还有哪些其他可能需要Purge的东西?

预编译(Precompiles)

预编译是以太坊合约,它没有 EVM 代码,而是具有必须由客户端自己直接实现的逻辑。这个想法是,预编译可用于实现无法在 EVM 中有效实现的复杂形式的密码学。

如今,预编译的使用非常成功,特别是通过椭圆曲线预编译启用基于 ZK-SNARK 的应用程序。然而,还有其他很少使用的预编译:

  • RIPEMD-160:引入哈希函数是为了支持与比特币更好的兼容性

  • Identity:返回与其输入相同的输出的预编译

  • BLAKE2:引入哈希函数是为了支持与 Zcash 更好的兼容性

  • MODEXP引入非常大的模幂以支持基于 RSA 的加密

事实证明,对这些预编译的需求远远低于预期。Identity

Kod kontrak boleh ditukar daripada tidak batal kepada kosong melalui SELFDESTRUCT, malah kontrak itu boleh dibuat semula dengan kod yang berbeza serta-merta selepas itu. Ini menjadikan pengesahan transaksi dalam pengabstrakan akaun lebih sukar, kerana pengesahan transaksi memerlukan penggunaan asas kod dalam transaksi tanpa terdedah kepada serangan DoS.

Invarian ini kini Benar, menjadikannya lebih mudah untuk membina pelanggan Ethereum dan jenis infrastruktur lain. Dalam beberapa tahun, diharapkan EIP akan datang akan menyelesaikan kerja dan menghapuskan SELFESTRUCT sepenuhnya.
  • Apakah "pembersihan" lain yang sedang berlaku?

  • Geth baru-baru ini mengalih keluar ribuan baris kod, mengalih keluar sokongan untuk rangkaian PoW pra-gabung.

    🎜🎜EIP ini secara rasminya merangkumi fakta bahawa kami tidak lagi memerlukan kod untuk bimbang tentang "akaun kosong" (lihat: EIP-161, yang memperkenalkan konsep ini sebagai sebahagian daripada pembetulan serangan DoS Shanghai) 🎜🎜🎜🎜Dencun The storage tetingkap untuk gumpalan ialah 18 hari, yang bermaksud bahawa nod Ethereum hanya memerlukan kira-kira 50 GB untuk menyimpan data gumpalan, dan jumlah ini tidak akan meningkat dari semasa ke semasa 🎜🎜
🎜Dua yang pertama adalah pengalaman pembangun Pelanggan yang dipertingkatkan dengan ketara. Yang terakhir ini dengan ketara meningkatkan jangka hayat pengendali nod. 🎜🎜Apakah perkara lain yang mungkin perlu dibersihkan? 🎜

Precompiles

🎜Precompiles ialah kontrak Ethereum yang tidak mempunyai kod EVM, tetapi mempunyai logik yang mesti dilaksanakan secara langsung oleh pelanggan itu sendiri. Ideanya ialah prakompilasi boleh digunakan untuk melaksanakan bentuk kriptografi yang kompleks yang tidak dapat dilaksanakan dengan cekap dalam EVM. 🎜🎜Penggunaan prakompilasi sangat berjaya pada hari ini, terutamanya untuk membolehkan aplikasi berasaskan ZK-SNARK melalui prapengumpulan lengkung eliptik. Walau bagaimanapun, terdapat prapenyusun lain yang jarang digunakan: 🎜🎜🎜🎜RIPEMD-160: Fungsi cincang diperkenalkan untuk menyokong keserasian yang lebih baik dengan Bitcoin 🎜🎜🎜🎜Identiti : Prapengumpulan yang mengembalikan output yang sama dengan inputnya 🎜🎜🎜🎜BLAKE2: Fungsi cincang telah diperkenalkan untuk menyokong keserasian yang lebih baik dengan Zcash 🎜🎜🎜🎜MODEXPMemperkenalkan eksponensi modular yang sangat besar untuk menyokong RSA -penyulitan berasaskan 🎜🎜🎜 Ternyata keperluan untuk prakompilasi ini jauh lebih rendah daripada yang dijangkakan. Identity digunakan secara meluas kerana ia adalah cara paling mudah untuk menyalin data, tetapi sejak Dencun, opcode MCOPY telah menggantikannya. Malangnya, prakompilasi ini merupakan sumber besar pepijat konsensus dan sumber kesakitan yang besar untuk pelaksanaan EVM baharu, termasuk litar ZK-SNARK, pelaksanaan mesra pengesahan formal, dsb. 🎜🎜Terdapat dua cara untuk mengalih keluar prapenyusun ini: 🎜🎜🎜🎜 Hanya alih keluar prakompil, cth. EIP-7266 mengalih keluar BLAKE2. Ini mudah, tetapi akan memecahkan mana-mana aplikasi yang masih menggunakannya. 🎜🎜🎜🎜Ganti prakompilasi dengan blok kod EVM yang melakukan perkara yang sama (walaupun tidak dapat dielakkan dengan kos gas yang lebih tinggi), mis. Draf EIP ini melakukan ini untuk prapengumpulan identiti. Ini lebih sukar, tetapi hampir pasti tidak akan memecahkan aplikasi menggunakannya (melainkan dalam kes yang jarang berlaku, kos gas kod EVM baharu melebihi had gas blok untuk beberapa input) 🎜

Blok Sejarah (EIP-4444)

Kini, setiap nod Ethereum dijangka menyimpan semua blok sejarah secara kekal. Ini telah lama dianggap sebagai pendekatan yang sangat membazir dan menjadikan menjalankan nod Ethereum tidak perlu sukar kerana keperluan penyimpanan yang tinggi. Di Dencun, kami memperkenalkan gumpalan, yang hanya perlu disimpan selama kira-kira 18 hari. Dengan EIP-4444, selepas satu tempoh masa, blok Ethereum juga akan dialih keluar daripada nod Ethereum lalai.

Persoalan utama yang perlu diselesaikan ialah: jika sejarah lama tidak disimpan oleh setiap nod, maka apakah yang digunakan untuk menyimpannya? Malah, entiti besar seperti penjelajah blok akan melakukan ini. Walau bagaimanapun, ia juga mungkin dan tidak sukar untuk membuat protokol p2p untuk menyimpan dan memindahkan maklumat ini, yang lebih dioptimumkan untuk tugas itu.

Rangkaian Ethereum adalah kekal, tetapi memerlukan setiap nod untuk menyimpan semua data selama-lamanya adalah cara yang sangat "terlalu banyak" untuk mencapai kekekalan ini.

Satu pendekatan ialah rangkaian torrent peer-to-peer yang mudah untuk sejarah lama. Yang lain ialah protokol yang dioptimumkan dengan lebih jelas untuk digunakan dengan Ethereum, seperti Rangkaian Portal.

Atau, dalam format meme:

Apakah yang perlu dibersihkan semasa fasa Pembersihan Ethereum?

Mengurangkan jumlah storan yang diperlukan untuk menjalankan nod Ethereum boleh meningkatkan bilangan orang yang bersedia menjadi nod. EIP-4444 juga boleh mengurangkan masa penyegerakan nod, yang turut memudahkan aliran kerja untuk banyak pengendali nod. Oleh itu, EIP-4444 boleh meningkatkan desentralisasi nod Ethereum. Berkemungkinan, jika setiap nod menyimpan sebahagian kecil sejarah secara lalai, kita juga boleh menyimpan kira-kira bilangan salinan yang sama bagi setiap sejarah khusus pada rangkaian seperti yang kita lakukan hari ini.

Pembaharuan Log

Petikan terus daripada draf EIP ini:

Log pada asalnya diperkenalkan untuk membolehkan aplikasi merekodkan maklumat tentang acara dalam rantaian supaya aplikasi terdesentralisasi (dapps) boleh menanyakan maklumat ini dengan mudah. Menggunakan penapis bloom, dapp akan dapat menyemak imbas sejarah dengan cepat, mengenal pasti beberapa blok yang mengandungi log yang berkaitan dengan aplikasinya, dan kemudian dengan cepat mengenal pasti transaksi individu yang mempunyai log yang diperlukan.

Sebenarnya mekanisme ini terlalu perlahan. Hampir semua dapps yang mengakses sejarah berakhir bukan melalui panggilan RPC ke nod Ethereum (atau bahkan nod yang dihoskan dari jauh), tetapi melalui perkhidmatan protokol tambahan terpusat.

Apa yang boleh kita lakukan? Kami boleh mengalih keluar penapis bloom dan memudahkan LOG操作码,这样它所做的就是创建一个将哈希值放入状态的值。然后,我们可以构建单独的协议,使用 ZK-SNARK 和增量可验证计算(IVC)来生成可证明正确的“日志树”,它表示给定的所有日志的易于搜索的表topic, dan aplikasi yang memerlukan pengelogan dan mahukan desentralisasi boleh menggunakan protokol berasingan ini.

Berpindah ke SSZ

Hari ini, kebanyakan struktur blok Ethereum (termasuk transaksi dan resit) masih disimpan menggunakan format lapuk berdasarkan RLP dan pokok Merkle Patricia. Ini menjadikannya sukar untuk membangunkan aplikasi yang menggunakan data ini.

Lapisan konsensus Ethereum telah beralih ke SimpleSerialize (SSZ):

Apakah yang perlu dibersihkan semasa fasa Pembersihan Ethereum?

Sumber: https://eth2book.info/altair/part2/building_blocks/merkleization/

Walau bagaimanapun, kami masih memerlukan penukaran dan alihkan lapisan pelaksanaan ke struktur yang sama.

Kelebihan utama SSZ termasuk:

  • Spesifikasinya lebih ringkas dan jelas

  • Panjang kalis Merkle adalah 4 kali lebih pendek dalam kebanyakan kes berbanding dengan status quo enam garpu pokok Merkle Patricia

  • bukti Merkle yang melampau dibatasi panjangnya berbanding dengan senario terburuk yang panjang (cth. kod kontrak bukti atau output resit yang panjang)
  • Tidak perlu melaksanakan kod manipulasi bit kompleks (diperlukan untuk RLP)
  • Untuk kegunaan ZK-SNRK kes, Selalunya mungkin untuk menggunakan semula pelaksanaan sedia ada yang dibina di sekeliling pepohon Merkle binari

Tiga jenis struktur data kriptografi wujud dalam Ethereum hari ini: pepohon perduaan SHA256, senarai cincang SHA3 RLP dan pepohon Patricia heksadesimal. Sebaik sahaja kami melengkapkan peralihan kepada SSZ, kami akan tinggal dengan hanya dua: pokok binari SHA256 dan pokok Verkle. Dalam jangka panjang, sebaik sahaja kami mendapat cukup baik dalam cincangan SNARKing, kami berkemungkinan akan menggantikan pokok binari SHA256 dan Verkle dengan pokok Merkle binari yang menggunakan cincang mesra SNARK (struktur data kriptografi yang berfungsi untuk semua Pokok Ethereum).

Atas ialah kandungan terperinci Apakah yang perlu dibersihkan semasa fasa Pembersihan Ethereum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam