Paradigma: Menaikkan Batas Gas untuk Menyelesaikan Masalah Skalabilitas Ethereum Hashtag: Ethereum

Pemula5/15/2024, 2:58:42 AM
Masalah pertumbuhan historis dalam skalabilitas Ethereum menyoroti bahwa akumulasi blok dan transaksi baru adalah bottleneck terbesar. Pertumbuhan historis dibatasi oleh jaringan I/O dan ruang penyimpanan node, berbeda dari masalah pertumbuhan status. Artikel tersebut menyebutkan bahwa meskipun hard fork Dencun memperkenalkan blok untuk memperlambat pertumbuhan historis, tetap menjadi tantangan. Proposal EIP-4444 menyarankan bahwa setiap node hanya harus menyimpan satu tahun riwayat, secara signifikan mengurangi beban penyimpanan dan menstabilkan kebutuhan penyimpanan.

Apa Itu Pertumbuhan Historis?

Sejarah di Ethereum terdiri dari semua blok dan transaksi yang dieksekusi selama masa hidupnya. Data ini diperlukan untuk menyinkronkan rantai dari blok genesis ke keadaan saat ini. Pertumbuhan historis merujuk pada akumulasi blok dan transaksi baru dari waktu ke waktu.

Gambar 1 menunjukkan hubungan antara pertumbuhan historis, berbagai metrik protokol, dan batasan hardware node Ethereum. Tidak seperti pertumbuhan status, pertumbuhan historis dibatasi oleh kumpulan batasan hardware yang berbeda. Pertumbuhan ini memberi tekanan pada I/O jaringan karena blok dan transaksi baru harus ditransmisikan melintasi jaringan. Hal ini juga membebani ruang penyimpanan node, karena setiap node Ethereum menyimpan salinan lengkap dari catatan historis. Jika pertumbuhan historis melampaui batasan hardware ini, node tidak akan lagi dapat mencapai konsensus stabil dengan rekan mereka. Untuk gambaran mengenai pertumbuhan status dan bottleneck penskalaan lainnya, lihat Bagian 1dari seri ini.

Gambar 1: Ethereum bottleneck ekspansi

Hingga saat ini, sebagian besar throughput jaringan setiap node digunakan untuk mentransmisikan catatan sejarah (misalnya, blok baru dan transaksi). Hal ini berubah dengan diperkenalkannya blobs di Dencunhard fork. Blobs sekarang merupakan bagian yang signifikan dari aktivitas jaringan node. Namun, blobs tidak dianggap sebagai bagian dari catatan sejarah karena 1) node menyimpannya hanya selama 2 minggu sebelum membuangnya, dan 2) mereka tidak diperlukan untuk memutar ulang rantai dari Genesis. Karena (1), blobs tidak secara signifikan meningkatkan beban penyimpanan pada setiap node Ethereum. Kami akan membahas blobs secara lebih detail nanti dalam artikel ini.

Dalam artikel ini, kita akan fokus pada pertumbuhan data historis dan hubungannya dengan pertumbuhan negara bagian. Karena pertumbuhan negara bagian dan historis memiliki beberapa kendala perangkat keras yang tumpang tindih, mereka adalah isu yang saling terkait; menangani salah satunya dapat membantu mengurangi yang lainnya.

Seberapa Cepat Sejarah Berkembang?

Gambar 2 menunjukkan tingkat pertumbuhan historis dari waktu ke waktu sejak Genesis Ethereum. Setiap batang vertikal mewakili pertumbuhan satu bulan. Sumbu Y mewakili jumlah GB yang ditambahkan ke sejarah pada bulan tersebut. Transaksi dikategorikan berdasarkan "alamat tujuan" mereka dan ukurannya ditentukan menggunakan merekaRLPrepresentasi byte. Kontrak yang tidak dapat dengan mudah diidentifikasi diklasifikasikan sebagai "tidak dikenal." Kategori "lainnya" meliputi sekumpulan kategori kecil seperti infrastruktur dan game.

Beberapa kesimpulan kunci dapat diambil dari grafik ini:

  1. Tingkat Pertumbuhan Historis Sekitar 6 hingga 8 Kali Lebih Cepat Daripada Pertumbuhan Negara: Pertumbuhan historis baru-baru ini mencapai puncaknya pada 36,0 GiB/bulan dan saat ini 19,3 GiB/bulan. Pertumbuhan negara mencapai puncaknya sekitar 6,0 GiB/bulan dan sekarang 2,5 GiB/bulan. Perbandingan antara pertumbuhan historis dan negara, baik dalam hal tingkat maupun ukuran kumulatif, dapat ditemukan lebih lanjut dalam artikel ini.
  2. Tingkat Pertumbuhan Historis Sedang Meningkat Secara Cepat Sebelum Dencun: Sementara pertumbuhan negara telah berjalan sekitar linear selama bertahun-tahun ( lihat Bagian 1) pertumbuhan historis telah superlinier. Pertumbuhan linier menghasilkan peningkatan kuadratik dalam ukuran keseluruhan, sedangkan pertumbuhan superlinier menghasilkan peningkatan lebih cepat dari kuadratik. Akselerasi ini tiba-tiba berhenti setelah Dencun, menandai perlambatan signifikan pertama dalam pertumbuhan historis dalam sejarah Ethereum.
  3. Pertumbuhan Historis Terbaru Utamanya Berasal dari Rollups: Setiap L2 mengirim salinan transaksinya kembali ke mainnet, menghasilkan sejumlah data historis yang signifikan dan membuat rollups menjadi kontributor terbesar terhadap pertumbuhan historis dalam setahun terakhir. Namun, Dencun memungkinkan L2 untuk menggunakan blobs daripada catatan historis untuk mengirimkan data transaksi mereka, sehingga rollups tidak lagi menghasilkan sebagian besar catatan historis Ethereum. Kami akan mengkaji rollups lebih detail nanti dalam artikel ini.

Apa yang Menjadi Kontributor Terbesar dalam Sejarah Ethereum?

Jumlah data historis yang dihasilkan oleh setiap kategori kontrak mengungkap bagaimana pola penggunaan Ethereum telah berkembang dari waktu ke waktu. Gambar 3 menunjukkan kontribusi relatif dari berbagai kategori kontrak. Ini menggunakan data yang sama seperti Gambar 2, dinormalisasi menjadi 100%.

Data mengungkap empat era pola penggunaan Ethereum yang berbeda:

Era Awal (Ungu): Pada tahun-tahun awal Ethereum, aktivitas on-chain sangat minim. Sebagian besar kontrak awal ini sekarang sulit diidentifikasi dan ditandai sebagai "tidak diketahui" dalam grafik.

Era ERC-20 (Hijau): The standar ERC-20Telah diselesaikan pada akhir 2015 tetapi tidak mendapat perhatian signifikan hingga tahun 2017 dan 2018. Pada tahun 2019, kontrak ERC-20 menjadi kategori terbesar dalam pertumbuhan historis.

Era DEX/DeFi (Cokelat): Kontrak DEX dan DeFi muncul on-chain sejak tahun 2016 dan mulai menarik perhatian pada tahun 2017. Namun, mereka tidak menjadi kategori sejarah terbesarhingga Musim DeFi tahun 2020Kontrak DeFi dan DEX mencapai puncak pertumbuhan historis di atas 50% pada berbagai waktu pada tahun 2021 dan 2022.

Era Rollup (abu-abu): Pada awal 2023, L2 Rollups mulai secara konsisten melakukanlebih banyak transaksi daripada mainnet.Hal ini bersamaan dengan kontrak mereka menghasilkan sebagian besar data historis, menyumbang sekitar dua pertiga pertumbuhan historis Ethereum dalam beberapa bulan menjelang Dencun.

Setiap era mewakili pola penggunaan yang semakin kompleks di Ethereum. Seiring waktu, kompleksitas ini dapat dilihat sebagai bentuk penskalaan Ethereum, bukan hanya ditangkap oleh metrik sederhana seperti transaksi per detik.

Dalam data terbaru (April 2024), rollups tidak lagi menghasilkan sebagian besar catatan historis. Belum jelas apakah pertumbuhan historis di masa depan akan didominasi oleh DEX dan DeFi atau jika pola penggunaan baru akan muncul.

Apa tentang blob?

Pengenalan blob dalam hard fork Dencun secara signifikan mengubah dinamika pertumbuhan historis, memungkinkan Rollups menggunakan blob murah daripada catatan historis untuk memposting data. Gambar 4 memperbesar laju pertumbuhan historis di sekitar tanggal upgrade Dencun. Grafik ini mirip dengan Gambar 2, tetapi setiap batang vertikal mewakili satu hari alih-alih satu bulan.

Beberapa kesimpulan kunci dapat diambil dari grafik ini:

Pertumbuhan Historis dari Rollups Telah Menurun sekitar Dua Pertiga Sejak Dencun: Sebagian besar rollups telah beralih dari penggunaan data panggilan ke blob, yang secara signifikan mengurangi jumlah data historis yang mereka hasilkan. Namun, pada April 2024, beberapa rollupsBelum beralih dari data panggilan ke blob.

Total Pertumbuhan Historis Telah Menurun sekitar sepertiga Sejak Dencun: Dencun secara utama telah mengurangi pertumbuhan historis dari rollups. Pertumbuhan historis dari kategori kontrak lainnya sedikit meningkat. Bahkan setelah Dencun, pertumbuhan historis tetap sekitar delapan kali lipat dari pertumbuhan status (rincian di bagian berikutnya).

Meskipun pertumbuhan historis menurun, blob tetap menjadi tambahan baru untuk Ethereum. Saat ini belum jelas di mana pertumbuhan historis akan menstabilkan diri dalam kehadiran blob.

Berapa Pertumbuhan Historis yang Dapat Diterima?

Meningkatkan batas gas akan meningkatkan tingkat pertumbuhan historis. Oleh karena itu, proposal untuk meningkatkan batas gas (seperti Memompa Gas) harus mempertimbangkan hubungan antara pertumbuhan historis dan bottleneck perangkat keras pada setiap node.

Untuk menentukan tingkat pertumbuhan historis yang dapat diterima, berguna untuk pertama-tama memeriksa seberapa lama jaringan node modern dan perangkat keras node penyimpanan dapat mempertahankan keadaan saat ini. Perangkat keras jaringan mungkin dapat mempertahankan status quo secara tidak terbatas karena tingkat pertumbuhan historis tidak mungkin kembali ke tingkat sebelum peningkatan batas gas. Namun, beban penyimpanan catatan historis meningkat dari waktu ke waktu. Menurut kebijakan penyimpanan saat ini, drive penyimpanan setiap node pada akhirnya akan terisi dengan sejarah.

Gambar 5 menggambarkan beban penyimpanan node Ethereum dari waktu ke waktu dan juga memprediksi bagaimana beban ini dapat berkembang dalam 3 tahun ke depan. Prediksi dibuat menggunakan tingkat pertumbuhan dari April 2024. Tingkat ini dapat meningkat atau menurun di masa depan karena perubahan pola penggunaan atau batasan gas.

Beberapa kesimpulan kunci dapat diambil dari grafik ini:

Ruang Penyimpanan yang Digunakan oleh Sejarah Sekitar Tiga Kali Lipat dari Negara: Ketimpangan ini akan meningkat seiring waktu karena laju pertumbuhan sejarah kira-kira delapan kali lipat dari negara.

Ambang Kritis Sekitar 1,8 TiB: Banyak node akan terpaksa meningkatkan drive penyimpanan mereka pada titik ini. Sebuah drive 2TB, ukuran umum, hanya menyediakan ruang yang dapat digunakan sebanyak 1,8 TiB. Perlu diingat bahwa TB (terabyte) dan TiB (tebibyte, = 1024^4 byte) adalah unit yang berbeda. Bagi banyak operator node, ambang kritis 'sebenarnya' bahkan lebih rendah karena validator harus menjalankan klien konsensus bersama dengan klien eksekusi setelah penggabungan.

Batasan Tercapai dalam 2-3 Tahun: Setiap peningkatan dalam batas gas akan mempercepat jadwal ini. Mencapai ambang batas ini akan memberikan beban pemeliharaan yang signifikan bagi operator node, membutuhkan pembelian perangkat keras tambahan, seperti sebuah $300 NVME drive.

Penyimpanan Terpisah untuk Data Historis: Berbeda dengan data status, data historis hanya ditambahkan dan diakses jauh lebih jarang. Oleh karena itu, secara teoritis dapat disimpan secara terpisah dari data status pada media penyimpanan yang lebih murah. Beberapa klien, seperti Geth, sudah mendukung pemisahan ini.

IO Jaringan sebagai Batasan Perangkat Keras: Selain kapasitas penyimpanan, IO jaringan adalah kendala perangkat keras utama lainnya untuk pertumbuhan historis. Tidak seperti kapasitas penyimpanan, batasan IO jaringan tidak akan menimbulkan masalah langsung bagi node-node namun akan menjadi signifikan untuk peningkatan batas gas di masa depan.

Untuk memahami seberapa besar pertumbuhan historis kapasitas jaringan dari sebuah node Ethereum biasa dapat mendukung, diperlukan untuk menjelaskan hubungan antara pertumbuhan historis dan berbagai metrik kesehatan jaringan, seperti tingkat reorganisasi, slot yang terlewat, kurangnya finalitas, kurangnya atestasi, ketinggalan komite sinkronisasi, dan keterlambatan proposal blok. Menganalisis metrik-metrik ini berada di luar cakupan artikel ini namun dapat ditemukan dalam penyelidikan sebelumnya tentang kesehatan lapisan konsensus [1] [2] [3] 4]. Selain itu, Yayasan Ethereum @ethpandaops/xatu-overview">Proyek Xatu telah membangun kumpulan data publik untuk memudahkan analisis tersebut.

Bagaimana Menyelesaikan Pertumbuhan Historis?

Pertumbuhan historis adalah masalah yang lebih mudah diatasi daripada pertumbuhan negara. Yang diusulkan EIP-4444hampir sepenuhnya menyelesaikan masalah ini. EIP ini mengubah persyaratan untuk setiap node dari menyimpan seluruh sejarah Ethereum menjadi hanya menyimpan satu tahun sejarah. Setelah EIP-4444 diimplementasikan, bahkan dengan peningkatan batas gas yang signifikan dalam jangka panjang, penyimpanan data tidak akan lagi menjadi bottleneck untuk peningkatan skala Ethereum. EIP-4444 sangat penting untuk keberlanjutan jangka panjang jaringan, karena jika tidak, data historis akan tumbuh dengan cukup cepat untuk memerlukan upgrade hardware reguler untuk node jaringan.

Gambar 6 menunjukkan bagaimana EIP-4444 akan memengaruhi beban penyimpanan setiap node selama 3 tahun ke depan. Ini sama dengan Gambar 4, dengan tambahan garis yang lebih halus yang mewakili beban penyimpanan setelah implementasi EIP-4444.

Beberapa kesimpulan kunci dapat ditarik dari grafik ini:

EIP-4444 Akan Mengurangi Beban Penyimpanan Saat Ini: Beban penyimpanan akan berkurang dari 1,2 TiB menjadi 633 GiB.

EIP-4444 Akan Menstabilkan Beban Penyimpanan Historis: Dengan asumsi tingkat pertumbuhan historis yang konstan, data historis akan dibuang dengan tingkat yang sama dengan yang dihasilkan.

Setelah EIP-4444, Dibutuhkan Banyak Tahun bagi Beban Penyimpanan untuk Mencapai Tingkat Saat Ini: Hal ini karena pertumbuhan status, yang lebih lambat dari pertumbuhan historis, akan menjadi satu-satunya faktor yang meningkatkan beban penyimpanan.

EIP-4444 Masih Akan Menimbulkan Beban Penyimpanan Karena Satu Tahun Data Historis: Namun, beban ini akan dapat dikelola meskipun Ethereum berskala secara global. Begitu metode penanganan data historis terbukti dapat diandalkan, periode retensi satu tahun dalam EIP-4444 bisa dipersingkat menjadi beberapa bulan, minggu, atau bahkan lebih sedikit.

Bagaimana Cara Menjaga Sejarah Ethereum?

EIP-4444 menimbulkan pertanyaan: jika node Ethereum itu sendiri tidak mempertahankan sejarah, bagaimana seharusnya itu dipertahankan? Sejarah sangat penting untuk verifikasi, akuntansi, dan analisis Ethereum, sehingga harus dipertahankan. Untungnya, mempertahankan sejarah itu mudah, hanya memerlukan 1/n penyedia data jujur, dibandingkan dengan masalah konsensus state, yang memerlukan partisipan jujur 1/3 hingga 2/3. Operator node dapat memverifikasi keaslian set data historis apa pun dengan: 1) memutar ulang semua transaksi dari Genesis; dan 2) memeriksa apakah transaksi-transaksi ini menghasilkan state root yang sama dengan ujung rantai saat ini.

Ada beberapa metode untuk melestarikan sejarah, masing-masing harus diterapkan secara paralel untuk memaksimalkan peluang pelestarian:

Torrents / P2P: Torrentadalah metode yang paling sederhana dan paling kokoh. Node Ethereum dapat secara berkala mengemas bagian-bagian dari sejarah dan membagikannya sebagai file torrent publik. Sebagai contoh, sebuah node mungkin membuat file torrent sejarah baru setiap 100.000 blok. Beberapa klien node, seperti Erigon, sudah melakukan proses ini dengan cara yang tidak standar. Untuk menstandarkan proses ini, semua klien node harus menggunakan format data yang sama, parameter, dan jaringan P2P. Node dapat memilih untuk berpartisipasi dalam jaringan ini berdasarkan kapasitas penyimpanan dan bandwidth mereka. Keuntungan dari torrent adalah penggunaan standar terbuka yang didukung oleh ekosistem alat data yang besar.

Portal Network: The Portal Networkadalah jaringan baru yang dirancang khusus untuk menghosting data Ethereum. Pendekatan ini mirip dengan torrents tetapi menyediakan fitur tambahan untuk memudahkan verifikasi data. Keuntungan dari Portal Network adalah lapisan verifikasi tambahan ini menawarkan klien ringan utilitas verifikasi yang efisien dan kueri untuk dataset bersama.

Hosting Awan: Layanan penyimpanan awan seperti AWS S3atau CloudflareR2menawarkan pilihan yang murah dan berkinerja tinggi untuk mempertahankan sejarah. Namun, metode ini datang dengan lebih banyak risiko operasional legal dan bisnis, karena layanan cloud ini mungkin tidak selalu bersedia atau mampu untuk menyimpan data cryptocurrency.

Tantangan implementasi yang tersisa lebih bersifat sosial daripada teknis. Komunitas Ethereum perlu berkoordinasi pada detail implementasi tertentu agar dapat diintegrasikan langsung ke setiap klien node. Terutama, sinkronisasi penuh dari Genesis (bukan sinkronisasi snapshot) akan memerlukan pengambilan riwayat dari penyedia data historis daripada node Ethereum. Perubahan ini tidak memerlukan hard fork dan dapat diimplementasikan sebelum hard fork Ethereum berikutnya, Pectra.

L2 juga dapat menggunakan semua metode ini untuk mempertahankan data blob yang mereka terbitkan ke mainnet. Pemeliharaan blob lebih menantang karena volume data total yang lebih besar; kurang kritis karena blob tidak diperlukan untuk memutar ulang sejarah mainnet. Namun, pemeliharaan blob diperlukan untuk setiap L2 memutar ulang sejarahnya sendiri. Oleh karena itu, beberapa bentuk pemeliharaan blob sangat penting untuk seluruh ekosistem Ethereum. Selain itu, jika L2 mengembangkan infrastruktur penyimpanan blob yang kokoh, mereka juga dapat dengan mudah menyimpan data historis L1.

Sebuah perbandingan langsung dari kumpulan data yang disimpan oleh berbagai konfigurasi node sebelum dan setelah EIP-4444 bermanfaat. Gambar 7 menunjukkan beban penyimpanan jenis node Ethereum. Data negara termasuk akun dan kontrak, data historis mencakup blok dan transaksi, dan data arsip adalah serangkaian indeks data opsional. Jumlah byte dalam tabel didasarkan pada snapshot reth terbaru, tetapi angka-angka seharusnya sekitar sama di klien node lainnya.

Gambar 7: Beban penyimpanan jenis node Ethereum

Dalam bahasa,

  1. Node arsip menyimpan data status, data historis, dan data arsip. Mereka digunakan ketika diperlukan kueri mudah terhadap status rantai historis.
  2. Node lengkap hanya menyimpan data historis dan data status. Sebagian besar node saat ini adalah node lengkap. Beban penyimpanan node lengkap sekitar separuh dari node arsip.
  3. Setelah EIP-4444, node lengkap hanya akan menyimpan data status dan data historis tahun terakhir. Hal ini akan mengurangi beban penyimpanan dari 1,2 TiB menjadi 633 GiB dan menstabilkan penggunaan penyimpanan untuk data historis.
  4. Node-stateless, juga dikenal sebagai “node ringan,” tidak menyimpan salah satu dari kumpulan data ini dan dapat memvalidasi di ujung rantai secara instan. Jenis node ini menjadi mungkin setelah Verkle mencobaatau skema komitmen negara lain ditambahkan ke Ethereum.

Akhirnya, ada proposal ekosistem tambahan yang bertujuan untuk membatasi laju pertumbuhan historis daripada hanya beradaptasi dengan laju saat ini. Ini berguna untuk mempertahankan batas IO jaringan dalam jangka pendek dan batas penyimpanan dalam jangka panjang. Sementara EIP-4444 penting untuk keberlanjutan jangka panjang jaringan, EIP lain ini akan membantu Ethereum berkembang lebih efisien di masa depan:

EIP-7623: Usulan ini menyarankan untuk menyesuaikan ulang data panggilan sehingga transaksi dengan data panggilan berlebihan menjadi lebih mahal. Membuat pola penggunaan ini lebih mahal akan mendorong beberapa orang untuk beralih dari data panggilan ke blobs, sehingga mengurangi laju pertumbuhan historis.

EIP-4488: Proposal ini memberlakukan batasan pada total jumlah data panggilan yang dapat dimasukkan ke setiap blok, menerapkan kontrol yang lebih ketat pada laju pertumbuhan historis.

EIP ini lebih mudah untuk diimplementasikan daripada EIP-4444 dan dapat berfungsi sebagai langkah-langkah sementara sebelum EIP-4444 siap untuk produksi.

Kesimpulan

Tujuan dari artikel ini adalah untuk memberikan pemahaman yang didasarkan pada data tentang bagaimana pertumbuhan historis beroperasi dan bagaimana mengatasi masalah ini. Sebagian besar data yang disajikan dalam artikel ini secara tradisional sulit diakses, jadi kami bertujuan untuk menawarkan wawasan baru tentang masalah pertumbuhan historis.

Pertumbuhan historis sebagai hambatan bagi skalabilitas Ethereum belum menerima perhatian yang cukup. Bahkan tanpa meningkatkan batas gas, praktik saat ini untuk menyimpan sejarah di Ethereum akan memerlukan banyak node untuk mengupgrade perangkat keras mereka dalam beberapa tahun. Untungnya, ini bukan masalah yang terlalu sulit untuk dipecahkan. Solusi yang jelas telah diuraikan dalam EIP-4444. Kami percaya seharusnya ada percepatan dalam implementasi EIP ini untuk memberikan ruang bagi peningkatan batas gas di masa mendatang.

Jika Anda tertarik dalam penelitian skalabilitas Ethereum, silakan hubungi storm@paradigm.xyzdangeorgios@paradigm.xyz.Kami akan senang mendengar pandangan Anda tentang masalah ini dan menjelajahi kolaborasi potensial. Data dan kode yang digunakan dalam artikel ini dapat ditemukan padaGithub.

Pengakuan

Terima kasih besar kepada Thomas ThieryTim BeikoToni WahrstaetterOliver NordbjergdanRoman Krasiukuntuk tinjauan dan umpan balik mereka. Terima kasih kepada lAchal Srinivasanuntuk angka yang diberikan di Gambar 1 dan Gambar 7.

Penafian:

  1. Artikel ini dicetak ulang dari [ Marsbit]. Semua hak cipta milik penulis asli [Storm Slivkoff, Georgios Konstantopoulos]. Jika ada keberatan terhadap cetak ulang ini, harap hubungi Pintu Belajartim, dan mereka akan menanganinya dengan cepat.
  2. Penafian Tanggung Jawab: Pandangan dan opini yang terdapat dalam artikel ini semata-mata milik penulis dan tidak merupakan nasihat investasi apa pun.
  3. Terjemahan artikel ke dalam bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang diterjemahkan dilarang.

Paradigma: Menaikkan Batas Gas untuk Menyelesaikan Masalah Skalabilitas Ethereum Hashtag: Ethereum

Pemula5/15/2024, 2:58:42 AM
Masalah pertumbuhan historis dalam skalabilitas Ethereum menyoroti bahwa akumulasi blok dan transaksi baru adalah bottleneck terbesar. Pertumbuhan historis dibatasi oleh jaringan I/O dan ruang penyimpanan node, berbeda dari masalah pertumbuhan status. Artikel tersebut menyebutkan bahwa meskipun hard fork Dencun memperkenalkan blok untuk memperlambat pertumbuhan historis, tetap menjadi tantangan. Proposal EIP-4444 menyarankan bahwa setiap node hanya harus menyimpan satu tahun riwayat, secara signifikan mengurangi beban penyimpanan dan menstabilkan kebutuhan penyimpanan.

Apa Itu Pertumbuhan Historis?

Sejarah di Ethereum terdiri dari semua blok dan transaksi yang dieksekusi selama masa hidupnya. Data ini diperlukan untuk menyinkronkan rantai dari blok genesis ke keadaan saat ini. Pertumbuhan historis merujuk pada akumulasi blok dan transaksi baru dari waktu ke waktu.

Gambar 1 menunjukkan hubungan antara pertumbuhan historis, berbagai metrik protokol, dan batasan hardware node Ethereum. Tidak seperti pertumbuhan status, pertumbuhan historis dibatasi oleh kumpulan batasan hardware yang berbeda. Pertumbuhan ini memberi tekanan pada I/O jaringan karena blok dan transaksi baru harus ditransmisikan melintasi jaringan. Hal ini juga membebani ruang penyimpanan node, karena setiap node Ethereum menyimpan salinan lengkap dari catatan historis. Jika pertumbuhan historis melampaui batasan hardware ini, node tidak akan lagi dapat mencapai konsensus stabil dengan rekan mereka. Untuk gambaran mengenai pertumbuhan status dan bottleneck penskalaan lainnya, lihat Bagian 1dari seri ini.

Gambar 1: Ethereum bottleneck ekspansi

Hingga saat ini, sebagian besar throughput jaringan setiap node digunakan untuk mentransmisikan catatan sejarah (misalnya, blok baru dan transaksi). Hal ini berubah dengan diperkenalkannya blobs di Dencunhard fork. Blobs sekarang merupakan bagian yang signifikan dari aktivitas jaringan node. Namun, blobs tidak dianggap sebagai bagian dari catatan sejarah karena 1) node menyimpannya hanya selama 2 minggu sebelum membuangnya, dan 2) mereka tidak diperlukan untuk memutar ulang rantai dari Genesis. Karena (1), blobs tidak secara signifikan meningkatkan beban penyimpanan pada setiap node Ethereum. Kami akan membahas blobs secara lebih detail nanti dalam artikel ini.

Dalam artikel ini, kita akan fokus pada pertumbuhan data historis dan hubungannya dengan pertumbuhan negara bagian. Karena pertumbuhan negara bagian dan historis memiliki beberapa kendala perangkat keras yang tumpang tindih, mereka adalah isu yang saling terkait; menangani salah satunya dapat membantu mengurangi yang lainnya.

Seberapa Cepat Sejarah Berkembang?

Gambar 2 menunjukkan tingkat pertumbuhan historis dari waktu ke waktu sejak Genesis Ethereum. Setiap batang vertikal mewakili pertumbuhan satu bulan. Sumbu Y mewakili jumlah GB yang ditambahkan ke sejarah pada bulan tersebut. Transaksi dikategorikan berdasarkan "alamat tujuan" mereka dan ukurannya ditentukan menggunakan merekaRLPrepresentasi byte. Kontrak yang tidak dapat dengan mudah diidentifikasi diklasifikasikan sebagai "tidak dikenal." Kategori "lainnya" meliputi sekumpulan kategori kecil seperti infrastruktur dan game.

Beberapa kesimpulan kunci dapat diambil dari grafik ini:

  1. Tingkat Pertumbuhan Historis Sekitar 6 hingga 8 Kali Lebih Cepat Daripada Pertumbuhan Negara: Pertumbuhan historis baru-baru ini mencapai puncaknya pada 36,0 GiB/bulan dan saat ini 19,3 GiB/bulan. Pertumbuhan negara mencapai puncaknya sekitar 6,0 GiB/bulan dan sekarang 2,5 GiB/bulan. Perbandingan antara pertumbuhan historis dan negara, baik dalam hal tingkat maupun ukuran kumulatif, dapat ditemukan lebih lanjut dalam artikel ini.
  2. Tingkat Pertumbuhan Historis Sedang Meningkat Secara Cepat Sebelum Dencun: Sementara pertumbuhan negara telah berjalan sekitar linear selama bertahun-tahun ( lihat Bagian 1) pertumbuhan historis telah superlinier. Pertumbuhan linier menghasilkan peningkatan kuadratik dalam ukuran keseluruhan, sedangkan pertumbuhan superlinier menghasilkan peningkatan lebih cepat dari kuadratik. Akselerasi ini tiba-tiba berhenti setelah Dencun, menandai perlambatan signifikan pertama dalam pertumbuhan historis dalam sejarah Ethereum.
  3. Pertumbuhan Historis Terbaru Utamanya Berasal dari Rollups: Setiap L2 mengirim salinan transaksinya kembali ke mainnet, menghasilkan sejumlah data historis yang signifikan dan membuat rollups menjadi kontributor terbesar terhadap pertumbuhan historis dalam setahun terakhir. Namun, Dencun memungkinkan L2 untuk menggunakan blobs daripada catatan historis untuk mengirimkan data transaksi mereka, sehingga rollups tidak lagi menghasilkan sebagian besar catatan historis Ethereum. Kami akan mengkaji rollups lebih detail nanti dalam artikel ini.

Apa yang Menjadi Kontributor Terbesar dalam Sejarah Ethereum?

Jumlah data historis yang dihasilkan oleh setiap kategori kontrak mengungkap bagaimana pola penggunaan Ethereum telah berkembang dari waktu ke waktu. Gambar 3 menunjukkan kontribusi relatif dari berbagai kategori kontrak. Ini menggunakan data yang sama seperti Gambar 2, dinormalisasi menjadi 100%.

Data mengungkap empat era pola penggunaan Ethereum yang berbeda:

Era Awal (Ungu): Pada tahun-tahun awal Ethereum, aktivitas on-chain sangat minim. Sebagian besar kontrak awal ini sekarang sulit diidentifikasi dan ditandai sebagai "tidak diketahui" dalam grafik.

Era ERC-20 (Hijau): The standar ERC-20Telah diselesaikan pada akhir 2015 tetapi tidak mendapat perhatian signifikan hingga tahun 2017 dan 2018. Pada tahun 2019, kontrak ERC-20 menjadi kategori terbesar dalam pertumbuhan historis.

Era DEX/DeFi (Cokelat): Kontrak DEX dan DeFi muncul on-chain sejak tahun 2016 dan mulai menarik perhatian pada tahun 2017. Namun, mereka tidak menjadi kategori sejarah terbesarhingga Musim DeFi tahun 2020Kontrak DeFi dan DEX mencapai puncak pertumbuhan historis di atas 50% pada berbagai waktu pada tahun 2021 dan 2022.

Era Rollup (abu-abu): Pada awal 2023, L2 Rollups mulai secara konsisten melakukanlebih banyak transaksi daripada mainnet.Hal ini bersamaan dengan kontrak mereka menghasilkan sebagian besar data historis, menyumbang sekitar dua pertiga pertumbuhan historis Ethereum dalam beberapa bulan menjelang Dencun.

Setiap era mewakili pola penggunaan yang semakin kompleks di Ethereum. Seiring waktu, kompleksitas ini dapat dilihat sebagai bentuk penskalaan Ethereum, bukan hanya ditangkap oleh metrik sederhana seperti transaksi per detik.

Dalam data terbaru (April 2024), rollups tidak lagi menghasilkan sebagian besar catatan historis. Belum jelas apakah pertumbuhan historis di masa depan akan didominasi oleh DEX dan DeFi atau jika pola penggunaan baru akan muncul.

Apa tentang blob?

Pengenalan blob dalam hard fork Dencun secara signifikan mengubah dinamika pertumbuhan historis, memungkinkan Rollups menggunakan blob murah daripada catatan historis untuk memposting data. Gambar 4 memperbesar laju pertumbuhan historis di sekitar tanggal upgrade Dencun. Grafik ini mirip dengan Gambar 2, tetapi setiap batang vertikal mewakili satu hari alih-alih satu bulan.

Beberapa kesimpulan kunci dapat diambil dari grafik ini:

Pertumbuhan Historis dari Rollups Telah Menurun sekitar Dua Pertiga Sejak Dencun: Sebagian besar rollups telah beralih dari penggunaan data panggilan ke blob, yang secara signifikan mengurangi jumlah data historis yang mereka hasilkan. Namun, pada April 2024, beberapa rollupsBelum beralih dari data panggilan ke blob.

Total Pertumbuhan Historis Telah Menurun sekitar sepertiga Sejak Dencun: Dencun secara utama telah mengurangi pertumbuhan historis dari rollups. Pertumbuhan historis dari kategori kontrak lainnya sedikit meningkat. Bahkan setelah Dencun, pertumbuhan historis tetap sekitar delapan kali lipat dari pertumbuhan status (rincian di bagian berikutnya).

Meskipun pertumbuhan historis menurun, blob tetap menjadi tambahan baru untuk Ethereum. Saat ini belum jelas di mana pertumbuhan historis akan menstabilkan diri dalam kehadiran blob.

Berapa Pertumbuhan Historis yang Dapat Diterima?

Meningkatkan batas gas akan meningkatkan tingkat pertumbuhan historis. Oleh karena itu, proposal untuk meningkatkan batas gas (seperti Memompa Gas) harus mempertimbangkan hubungan antara pertumbuhan historis dan bottleneck perangkat keras pada setiap node.

Untuk menentukan tingkat pertumbuhan historis yang dapat diterima, berguna untuk pertama-tama memeriksa seberapa lama jaringan node modern dan perangkat keras node penyimpanan dapat mempertahankan keadaan saat ini. Perangkat keras jaringan mungkin dapat mempertahankan status quo secara tidak terbatas karena tingkat pertumbuhan historis tidak mungkin kembali ke tingkat sebelum peningkatan batas gas. Namun, beban penyimpanan catatan historis meningkat dari waktu ke waktu. Menurut kebijakan penyimpanan saat ini, drive penyimpanan setiap node pada akhirnya akan terisi dengan sejarah.

Gambar 5 menggambarkan beban penyimpanan node Ethereum dari waktu ke waktu dan juga memprediksi bagaimana beban ini dapat berkembang dalam 3 tahun ke depan. Prediksi dibuat menggunakan tingkat pertumbuhan dari April 2024. Tingkat ini dapat meningkat atau menurun di masa depan karena perubahan pola penggunaan atau batasan gas.

Beberapa kesimpulan kunci dapat diambil dari grafik ini:

Ruang Penyimpanan yang Digunakan oleh Sejarah Sekitar Tiga Kali Lipat dari Negara: Ketimpangan ini akan meningkat seiring waktu karena laju pertumbuhan sejarah kira-kira delapan kali lipat dari negara.

Ambang Kritis Sekitar 1,8 TiB: Banyak node akan terpaksa meningkatkan drive penyimpanan mereka pada titik ini. Sebuah drive 2TB, ukuran umum, hanya menyediakan ruang yang dapat digunakan sebanyak 1,8 TiB. Perlu diingat bahwa TB (terabyte) dan TiB (tebibyte, = 1024^4 byte) adalah unit yang berbeda. Bagi banyak operator node, ambang kritis 'sebenarnya' bahkan lebih rendah karena validator harus menjalankan klien konsensus bersama dengan klien eksekusi setelah penggabungan.

Batasan Tercapai dalam 2-3 Tahun: Setiap peningkatan dalam batas gas akan mempercepat jadwal ini. Mencapai ambang batas ini akan memberikan beban pemeliharaan yang signifikan bagi operator node, membutuhkan pembelian perangkat keras tambahan, seperti sebuah $300 NVME drive.

Penyimpanan Terpisah untuk Data Historis: Berbeda dengan data status, data historis hanya ditambahkan dan diakses jauh lebih jarang. Oleh karena itu, secara teoritis dapat disimpan secara terpisah dari data status pada media penyimpanan yang lebih murah. Beberapa klien, seperti Geth, sudah mendukung pemisahan ini.

IO Jaringan sebagai Batasan Perangkat Keras: Selain kapasitas penyimpanan, IO jaringan adalah kendala perangkat keras utama lainnya untuk pertumbuhan historis. Tidak seperti kapasitas penyimpanan, batasan IO jaringan tidak akan menimbulkan masalah langsung bagi node-node namun akan menjadi signifikan untuk peningkatan batas gas di masa depan.

Untuk memahami seberapa besar pertumbuhan historis kapasitas jaringan dari sebuah node Ethereum biasa dapat mendukung, diperlukan untuk menjelaskan hubungan antara pertumbuhan historis dan berbagai metrik kesehatan jaringan, seperti tingkat reorganisasi, slot yang terlewat, kurangnya finalitas, kurangnya atestasi, ketinggalan komite sinkronisasi, dan keterlambatan proposal blok. Menganalisis metrik-metrik ini berada di luar cakupan artikel ini namun dapat ditemukan dalam penyelidikan sebelumnya tentang kesehatan lapisan konsensus [1] [2] [3] 4]. Selain itu, Yayasan Ethereum @ethpandaops/xatu-overview">Proyek Xatu telah membangun kumpulan data publik untuk memudahkan analisis tersebut.

Bagaimana Menyelesaikan Pertumbuhan Historis?

Pertumbuhan historis adalah masalah yang lebih mudah diatasi daripada pertumbuhan negara. Yang diusulkan EIP-4444hampir sepenuhnya menyelesaikan masalah ini. EIP ini mengubah persyaratan untuk setiap node dari menyimpan seluruh sejarah Ethereum menjadi hanya menyimpan satu tahun sejarah. Setelah EIP-4444 diimplementasikan, bahkan dengan peningkatan batas gas yang signifikan dalam jangka panjang, penyimpanan data tidak akan lagi menjadi bottleneck untuk peningkatan skala Ethereum. EIP-4444 sangat penting untuk keberlanjutan jangka panjang jaringan, karena jika tidak, data historis akan tumbuh dengan cukup cepat untuk memerlukan upgrade hardware reguler untuk node jaringan.

Gambar 6 menunjukkan bagaimana EIP-4444 akan memengaruhi beban penyimpanan setiap node selama 3 tahun ke depan. Ini sama dengan Gambar 4, dengan tambahan garis yang lebih halus yang mewakili beban penyimpanan setelah implementasi EIP-4444.

Beberapa kesimpulan kunci dapat ditarik dari grafik ini:

EIP-4444 Akan Mengurangi Beban Penyimpanan Saat Ini: Beban penyimpanan akan berkurang dari 1,2 TiB menjadi 633 GiB.

EIP-4444 Akan Menstabilkan Beban Penyimpanan Historis: Dengan asumsi tingkat pertumbuhan historis yang konstan, data historis akan dibuang dengan tingkat yang sama dengan yang dihasilkan.

Setelah EIP-4444, Dibutuhkan Banyak Tahun bagi Beban Penyimpanan untuk Mencapai Tingkat Saat Ini: Hal ini karena pertumbuhan status, yang lebih lambat dari pertumbuhan historis, akan menjadi satu-satunya faktor yang meningkatkan beban penyimpanan.

EIP-4444 Masih Akan Menimbulkan Beban Penyimpanan Karena Satu Tahun Data Historis: Namun, beban ini akan dapat dikelola meskipun Ethereum berskala secara global. Begitu metode penanganan data historis terbukti dapat diandalkan, periode retensi satu tahun dalam EIP-4444 bisa dipersingkat menjadi beberapa bulan, minggu, atau bahkan lebih sedikit.

Bagaimana Cara Menjaga Sejarah Ethereum?

EIP-4444 menimbulkan pertanyaan: jika node Ethereum itu sendiri tidak mempertahankan sejarah, bagaimana seharusnya itu dipertahankan? Sejarah sangat penting untuk verifikasi, akuntansi, dan analisis Ethereum, sehingga harus dipertahankan. Untungnya, mempertahankan sejarah itu mudah, hanya memerlukan 1/n penyedia data jujur, dibandingkan dengan masalah konsensus state, yang memerlukan partisipan jujur 1/3 hingga 2/3. Operator node dapat memverifikasi keaslian set data historis apa pun dengan: 1) memutar ulang semua transaksi dari Genesis; dan 2) memeriksa apakah transaksi-transaksi ini menghasilkan state root yang sama dengan ujung rantai saat ini.

Ada beberapa metode untuk melestarikan sejarah, masing-masing harus diterapkan secara paralel untuk memaksimalkan peluang pelestarian:

Torrents / P2P: Torrentadalah metode yang paling sederhana dan paling kokoh. Node Ethereum dapat secara berkala mengemas bagian-bagian dari sejarah dan membagikannya sebagai file torrent publik. Sebagai contoh, sebuah node mungkin membuat file torrent sejarah baru setiap 100.000 blok. Beberapa klien node, seperti Erigon, sudah melakukan proses ini dengan cara yang tidak standar. Untuk menstandarkan proses ini, semua klien node harus menggunakan format data yang sama, parameter, dan jaringan P2P. Node dapat memilih untuk berpartisipasi dalam jaringan ini berdasarkan kapasitas penyimpanan dan bandwidth mereka. Keuntungan dari torrent adalah penggunaan standar terbuka yang didukung oleh ekosistem alat data yang besar.

Portal Network: The Portal Networkadalah jaringan baru yang dirancang khusus untuk menghosting data Ethereum. Pendekatan ini mirip dengan torrents tetapi menyediakan fitur tambahan untuk memudahkan verifikasi data. Keuntungan dari Portal Network adalah lapisan verifikasi tambahan ini menawarkan klien ringan utilitas verifikasi yang efisien dan kueri untuk dataset bersama.

Hosting Awan: Layanan penyimpanan awan seperti AWS S3atau CloudflareR2menawarkan pilihan yang murah dan berkinerja tinggi untuk mempertahankan sejarah. Namun, metode ini datang dengan lebih banyak risiko operasional legal dan bisnis, karena layanan cloud ini mungkin tidak selalu bersedia atau mampu untuk menyimpan data cryptocurrency.

Tantangan implementasi yang tersisa lebih bersifat sosial daripada teknis. Komunitas Ethereum perlu berkoordinasi pada detail implementasi tertentu agar dapat diintegrasikan langsung ke setiap klien node. Terutama, sinkronisasi penuh dari Genesis (bukan sinkronisasi snapshot) akan memerlukan pengambilan riwayat dari penyedia data historis daripada node Ethereum. Perubahan ini tidak memerlukan hard fork dan dapat diimplementasikan sebelum hard fork Ethereum berikutnya, Pectra.

L2 juga dapat menggunakan semua metode ini untuk mempertahankan data blob yang mereka terbitkan ke mainnet. Pemeliharaan blob lebih menantang karena volume data total yang lebih besar; kurang kritis karena blob tidak diperlukan untuk memutar ulang sejarah mainnet. Namun, pemeliharaan blob diperlukan untuk setiap L2 memutar ulang sejarahnya sendiri. Oleh karena itu, beberapa bentuk pemeliharaan blob sangat penting untuk seluruh ekosistem Ethereum. Selain itu, jika L2 mengembangkan infrastruktur penyimpanan blob yang kokoh, mereka juga dapat dengan mudah menyimpan data historis L1.

Sebuah perbandingan langsung dari kumpulan data yang disimpan oleh berbagai konfigurasi node sebelum dan setelah EIP-4444 bermanfaat. Gambar 7 menunjukkan beban penyimpanan jenis node Ethereum. Data negara termasuk akun dan kontrak, data historis mencakup blok dan transaksi, dan data arsip adalah serangkaian indeks data opsional. Jumlah byte dalam tabel didasarkan pada snapshot reth terbaru, tetapi angka-angka seharusnya sekitar sama di klien node lainnya.

Gambar 7: Beban penyimpanan jenis node Ethereum

Dalam bahasa,

  1. Node arsip menyimpan data status, data historis, dan data arsip. Mereka digunakan ketika diperlukan kueri mudah terhadap status rantai historis.
  2. Node lengkap hanya menyimpan data historis dan data status. Sebagian besar node saat ini adalah node lengkap. Beban penyimpanan node lengkap sekitar separuh dari node arsip.
  3. Setelah EIP-4444, node lengkap hanya akan menyimpan data status dan data historis tahun terakhir. Hal ini akan mengurangi beban penyimpanan dari 1,2 TiB menjadi 633 GiB dan menstabilkan penggunaan penyimpanan untuk data historis.
  4. Node-stateless, juga dikenal sebagai “node ringan,” tidak menyimpan salah satu dari kumpulan data ini dan dapat memvalidasi di ujung rantai secara instan. Jenis node ini menjadi mungkin setelah Verkle mencobaatau skema komitmen negara lain ditambahkan ke Ethereum.

Akhirnya, ada proposal ekosistem tambahan yang bertujuan untuk membatasi laju pertumbuhan historis daripada hanya beradaptasi dengan laju saat ini. Ini berguna untuk mempertahankan batas IO jaringan dalam jangka pendek dan batas penyimpanan dalam jangka panjang. Sementara EIP-4444 penting untuk keberlanjutan jangka panjang jaringan, EIP lain ini akan membantu Ethereum berkembang lebih efisien di masa depan:

EIP-7623: Usulan ini menyarankan untuk menyesuaikan ulang data panggilan sehingga transaksi dengan data panggilan berlebihan menjadi lebih mahal. Membuat pola penggunaan ini lebih mahal akan mendorong beberapa orang untuk beralih dari data panggilan ke blobs, sehingga mengurangi laju pertumbuhan historis.

EIP-4488: Proposal ini memberlakukan batasan pada total jumlah data panggilan yang dapat dimasukkan ke setiap blok, menerapkan kontrol yang lebih ketat pada laju pertumbuhan historis.

EIP ini lebih mudah untuk diimplementasikan daripada EIP-4444 dan dapat berfungsi sebagai langkah-langkah sementara sebelum EIP-4444 siap untuk produksi.

Kesimpulan

Tujuan dari artikel ini adalah untuk memberikan pemahaman yang didasarkan pada data tentang bagaimana pertumbuhan historis beroperasi dan bagaimana mengatasi masalah ini. Sebagian besar data yang disajikan dalam artikel ini secara tradisional sulit diakses, jadi kami bertujuan untuk menawarkan wawasan baru tentang masalah pertumbuhan historis.

Pertumbuhan historis sebagai hambatan bagi skalabilitas Ethereum belum menerima perhatian yang cukup. Bahkan tanpa meningkatkan batas gas, praktik saat ini untuk menyimpan sejarah di Ethereum akan memerlukan banyak node untuk mengupgrade perangkat keras mereka dalam beberapa tahun. Untungnya, ini bukan masalah yang terlalu sulit untuk dipecahkan. Solusi yang jelas telah diuraikan dalam EIP-4444. Kami percaya seharusnya ada percepatan dalam implementasi EIP ini untuk memberikan ruang bagi peningkatan batas gas di masa mendatang.

Jika Anda tertarik dalam penelitian skalabilitas Ethereum, silakan hubungi storm@paradigm.xyzdangeorgios@paradigm.xyz.Kami akan senang mendengar pandangan Anda tentang masalah ini dan menjelajahi kolaborasi potensial. Data dan kode yang digunakan dalam artikel ini dapat ditemukan padaGithub.

Pengakuan

Terima kasih besar kepada Thomas ThieryTim BeikoToni WahrstaetterOliver NordbjergdanRoman Krasiukuntuk tinjauan dan umpan balik mereka. Terima kasih kepada lAchal Srinivasanuntuk angka yang diberikan di Gambar 1 dan Gambar 7.

Penafian:

  1. Artikel ini dicetak ulang dari [ Marsbit]. Semua hak cipta milik penulis asli [Storm Slivkoff, Georgios Konstantopoulos]. Jika ada keberatan terhadap cetak ulang ini, harap hubungi Pintu Belajartim, dan mereka akan menanganinya dengan cepat.
  2. Penafian Tanggung Jawab: Pandangan dan opini yang terdapat dalam artikel ini semata-mata milik penulis dan tidak merupakan nasihat investasi apa pun.
  3. Terjemahan artikel ke dalam bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang diterjemahkan dilarang.
Comece agora
Registe-se e ganhe um cupão de
100 USD
!