Salah satu cara yang kurang dibahas, namun sangat penting, di mana Ethereum mempertahankan keamanan dan desentralisasinya adalah filosofi multi-kliennya. Ethereum secara sengaja tidak memiliki "klien referensi" yang dijalankan semua orang secara default: sebagai gantinya, ada spesifikasi yang dikelola secara kolaboratif (saat ini ditulis dalam bahasa Python yang sangat mudah dibaca tetapi sangat lambat) dan ada beberapa tim yang membuat implementasi spesifikasi (juga disebut "klien"), yang merupakan apa yang sebenarnya dijalankan oleh para pengguna.
Setiap node Ethereum menjalankan klien konsensus dan klien eksekusi. Hingga hari ini, tidak ada klien konsensus atau eksekusi yang mencapai lebih dari 2/3 jaringan. Jika klien dengan kurang dari 1/3 bagian dalam kategorinya memiliki bug, jaringan akan terus berjalan seperti biasa. Jika klien dengan antara 1/3 dan 2/3 bagian dalam kategorinya (jadi, Prysm, Lighthouse atau Geth) memiliki bug, chain akan terus menambahkan blok, tetapi akan berhenti menyelesaikan blok, memberikan waktu bagi pengembang untuk melakukan intervensi.
Salah satu transisi besar yang belum banyak dibahas, namun sangat penting, yang akan datang dalam cara rantai Ethereum divalidasi adalah munculnya ZK-EVM. SNARK yang membuktikan eksekusi EVM telah dikembangkan selama bertahun-tahun, dan teknologi ini secara aktif digunakan oleh protokol lapisan 2 yang disebut rollup ZK. Beberapa dari rollup ZK ini sudah aktif di mainnet saat ini, dan akan segera menyusul. Namun dalam jangka panjang, ZK-EVM tidak hanya akan digunakan untuk rollup; kami ingin menggunakannya untuk memverifikasi eksekusi pada layer 1 juga (lihat juga: the Verge).
Setelah itu terjadi, ZK-EVM secara de-facto menjadi jenis klien Ethereum ketiga, sama pentingnya dengan keamanan jaringan seperti halnya klien eksekusi dan klien konsensus saat ini. Dan hal ini tentu saja menimbulkan pertanyaan: bagaimana ZK-EVM berinteraksi dengan filosofi multi-klien? Salah satu bagian yang sulit telah selesai: kami telah memiliki beberapa implementasi ZK-EVM yang sedang dikembangkan secara aktif. Namun, masih ada bagian sulit lainnya: bagaimana kita membuat ekosistem "multi-klien" untuk ZK yang membuktikan kebenaran blok Ethereum? Pertanyaan ini membuka beberapa tantangan teknis yang menarik - dan tentu saja pertanyaan yang membayangi, apakah pengorbanannya sepadan atau tidak.
Filosofi multi-klien Ethereum adalah sebuah jenis desentralisasi, dan seperti <a href="https://medium.com/@VitalikButerin/arti-desentralisasi-a0c92b76a274"> desentralisasi secara umum, seseorang dapat berfokus pada manfaat teknis dari desentralisasi arsitektural atau manfaat sosial dari desentralisasi politik. Pada akhirnya, filosofi multi-klien dimotivasi oleh keduanya dan melayani keduanya.
Manfaat utama dari desentralisasi teknis adalah sederhana: mengurangi risiko bahwa satu bug pada satu perangkat lunak akan menyebabkan kerusakan besar pada seluruh jaringan. Situasi historis yang mencontohkan risiko ini adalah bug overflow Bitcoin pada tahun 2010. Pada saat itu, kode klien Bitcoin tidak memeriksa bahwa jumlah output dari sebuah transaksi tidak meluap (membungkus ke nol dengan menjumlahkan ke atas bilangan bulat maksimum264-1), sehingga seseorang melakukan transaksi yang melakukan hal tersebut, dan memberikan miliaran bitcoin kepada dirinya sendiri. Bug ditemukan dalam beberapa jam, dan perbaikan segera dilakukan dan dengan cepat disebarkan ke seluruh jaringan, tetapi seandainya ada ekosistem yang matang pada saat itu, koin-koin tersebut akan diterima oleh bursa, jembatan, dan bangunan lainnya, dan para penyerang dapat lolos dengan banyak uang. Jika ada lima klien Bitcoin yang berbeda, sangat tidak mungkin jika semuanya memiliki bug yang sama, sehingga akan terjadi pemisahan langsung, dan sisi yang mengalami bug kemungkinan besar akan kalah.
Ada tradeoff dalam menggunakan pendekatan multi-klien untuk meminimalkan risiko bug yang sangat besar: sebagai gantinya, Anda akan mendapatkan bug kegagalan konsensus. Artinya, jika Anda memiliki dua klien, ada risiko bahwa klien memiliki interpretasi yang berbeda secara halus tentang beberapa aturan protokol, dan meskipun kedua interpretasi tersebut masuk akal dan tidak mengizinkan pencurian uang, ketidaksepakatan tersebut akan menyebabkan rantai terbelah menjadi dua. Perpecahan serius seperti itu pernah terjadi sekali dalam sejarah Ethereum (ada beberapa perpecahan lain yang jauh lebih kecil di mana sebagian kecil jaringan yang menjalankan versi kode lama bercabang). Para pembela pendekatan klien tunggal menunjukkan kegagalan konsensus sebagai alasan untuk tidak memiliki banyak implementasi: jika hanya ada satu klien, satu klien tersebut tidak akan berselisih dengan dirinya sendiri. Model mereka tentang bagaimana jumlah klien diterjemahkan ke dalam risiko mungkin terlihat seperti ini:
Saya, tentu saja, tidak setuju dengan analisis ini. Inti dari ketidaksepakatan saya adalah bahwa (i) bug bencana gaya 2010 juga penting, dan (ii) Anda tidak pernah hanya memiliki satu klien. Poin terakhir ini paling jelas terlihat pada fork Bitcoin tahun 2013: perpecahan rantai terjadi karena ketidaksepakatan antara dua versi klien Bitcoin yang berbeda, yang salah satunya ternyata memiliki batas yang tidak disengaja dan tidak terdokumentasi pada jumlah objek yang dapat dimodifikasi dalam satu blok. Oleh karena itu, satu klien dalam teori sering kali adalah dua klien dalam praktik, dan lima klien dalam teori mungkin menjadi enam atau tujuh klien dalam praktik - jadi kita harus mengambil risiko dan berada di sisi kanan kurva risiko, dan memiliki setidaknya beberapa klien yang berbeda.
Pengembang klien monopoli berada dalam posisi yang memiliki banyak kekuatan politik. Jika pengembang klien mengusulkan perubahan, dan pengguna tidak setuju, secara teoritis mereka dapat menolak untuk mengunduh versi yang diperbarui, atau membuat fork tanpa perubahan, tetapi dalam praktiknya sering kali sulit bagi pengguna untuk melakukannya. Bagaimana jika perubahan protokol yang tidak disetujui dibundel dengan pembaruan keamanan yang diperlukan? Bagaimana jika tim utama mengancam untuk berhenti jika mereka tidak mendapatkan apa yang mereka inginkan? Atau, yang lebih berbahaya, bagaimana jika tim klien monopoli akhirnya menjadi satu-satunya kelompok yang memiliki keahlian protokol terbesar, meninggalkan sisa ekosistem dalam posisi yang buruk untuk menilai argumen teknis yang diajukan oleh tim klien, sehingga tim klien memiliki banyak ruang untuk mendorong tujuan dan nilai mereka sendiri, yang mungkin tidak sesuai dengan komunitas yang lebih luas?
Kekhawatiran tentang politik protokol, terutama dalam konteks perang OP_RETURN Bitcoin 2013-14 di mana beberapa peserta secara terbuka mendukung diskriminasi terhadap penggunaan rantai tertentu, merupakan faktor penting yang berkontribusi pada adopsi awal Ethereum terhadap filosofi multi-klien, yang bertujuan untuk mempersulit sekelompok kecil orang untuk mengambil keputusan semacam itu. Kekhawatiran khusus terhadap ekosistem Ethereum - yaitu, menghindari konsentrasi kekuasaan di dalam Ethereum Foundation itu sendiri - memberikan dukungan lebih lanjut untuk arah ini. Pada tahun 2018, sebuah keputusan dibuat untuk secara sengaja membuat Yayasan tidak membuat implementasi protokol PoS Ethereum (yaitu. yang sekarang disebut "klien konsensus"), menyerahkan tugas itu sepenuhnya kepada tim luar.
Saat ini, ZK-EVM digunakan dalam rollup. Hal ini meningkatkan penskalaan dengan memungkinkan eksekusi EVM yang mahal terjadi hanya beberapa kali secara off-chain, dan semua orang cukup memverifikasi SNARK yang diposting secara on-chain yang membuktikan bahwa eksekusi EVM telah dikomputasi dengan benar. Hal ini juga memungkinkan beberapa data (terutama tanda tangan) untuk tidak disertakan secara on-chain, sehingga menghemat biaya gas. Hal ini memberikan kami banyak manfaat skalabilitas, dan kombinasi komputasi yang dapat diskalakan dengan ZK-EVM dan data yang dapat diskalakan dengan <a href="https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling"> data-availability-sampling memungkinkan kami untuk melakukan skalabilitas yang sangat jauh.
Akan tetapi, jaringan Ethereum saat ini juga memiliki masalah yang berbeda, masalah yang tidak dapat diselesaikan oleh penskalaan lapisan 2 dengan sendirinya: lapisan 1 sulit untuk diverifikasi, sampai-sampai tidak banyak pengguna yang menjalankan node mereka sendiri. Sebaliknya, sebagian besar pengguna hanya mempercayai penyedia pihak ketiga. Klien ringan seperti Helios dan Succinct mengambil langkah untuk menyelesaikan masalah, tetapi klien ringan jauh dari simpul yang memverifikasi sepenuhnya: klien ringan hanya memverifikasi tanda tangan dari subset acak validator yang disebut komite sinkronisasi, dan tidak memverifikasi bahwa rantai tersebut benar-benar mengikuti aturan protokol. Untuk membawa kita ke dunia di mana pengguna benar-benar dapat memverifikasi bahwa rantai pasok mengikuti aturan, kita harus melakukan sesuatu yang berbeda.
Seiring waktu, kami dapat mengurangi target gas per blok layer 1 dari 15 juta menjadi 1 juta, cukup untuk satu blok yang berisi satu SNARK dan beberapa operasi setoran dan penarikan, tetapi tidak lebih dari itu, dan dengan demikian memaksa hampir semua aktivitas pengguna untuk pindah ke protokol layer 2. Desain seperti itu masih dapat mendukung banyak rollup yang dilakukan di setiap blok: kita dapat menggunakan protokol agregasi off-chain yang dijalankan oleh pembangun yang disesuaikan untuk mengumpulkan SNARK dari beberapa protokol layer 2 dan menggabungkannya menjadi satu SNARK. Dalam dunia seperti itu, satu-satunya fungsi lapisan 1 adalah menjadi lembaga kliring untuk protokol lapisan 2, memverifikasi bukti-bukti mereka dan kadang-kadang memfasilitasi transfer dana dalam jumlah besar di antara mereka.
Pendekatan ini bisa saja berhasil, tetapi memiliki beberapa kelemahan penting:
Oleh karena itu, tampaknya lebih masuk akal untuk mencoba menemukan cara menggunakan ZK-SNARK untuk memverifikasi lapisan 1 itu sendiri.
ZK-EVM tipe 1 (sepenuhnya setara dengan Ethereum) dapat digunakan untuk memverifikasi eksekusi EVM dari sebuah blok Ethereum (lapisan 1). Kita dapat menulis lebih banyak kode SNARK untuk memverifikasi sisi konsensus dari sebuah blok. Ini akan menjadi masalah teknik yang menantang: saat ini, ZK-EVM membutuhkan waktu beberapa menit hingga beberapa jam untuk memverifikasi blok Ethereum, dan menghasilkan bukti secara real time akan membutuhkan satu atau lebih dari (i) peningkatan pada Ethereum itu sendiri untuk menghapus komponen yang tidak ramah SNARK, (ii) peningkatan efisiensi yang besar dengan perangkat keras khusus, dan (iii) peningkatan arsitektur dengan paralelisasi yang lebih banyak. Namun, tidak ada alasan teknologi yang mendasar mengapa hal ini tidak dapat dilakukan - dan saya berharap bahwa, meskipun membutuhkan waktu bertahun-tahun, hal ini akan terlaksana.
Di sinilah kita melihat titik temu dengan paradigma multi-klien: jika kita menggunakan ZK-EVM untuk memverifikasi lapisan 1, ZK-EVM mana yang kita gunakan?
Saya melihat ada tiga pilihan:
Bagi saya, (3) tampaknya ideal, setidaknya sampai dan kecuali teknologi kita meningkat ke titik di mana kita dapat secara resmi membuktikan bahwa semua implementasi ZK-EVM setara satu sama lain, di mana pada saat itu kita dapat memilih mana yang paling efisien. (1) akan mengorbankan manfaat dari paradigma multi-klien, dan (2) akan menutup kemungkinan untuk mengembangkan klien baru dan mengarah pada ekosistem yang lebih terpusat. (3) memiliki tantangan, tetapi tantangan tersebut tampaknya lebih kecil dibandingkan dengan tantangan dari dua opsi lainnya, setidaknya untuk saat ini.
Menerapkan (3) tidak akan terlalu sulit: seseorang dapat memiliki sub-jaringan p2p untuk setiap jenis bukti, dan klien yang menggunakan salah satu jenis bukti akan mendengarkan pada sub-jaringan yang sesuai dan menunggu sampai mereka menerima bukti yang dikenali oleh verifikator mereka sebagai bukti yang valid.
Dua tantangan utama dari (3) kemungkinan adalah sebagai berikut:
Tantangan latensi dapat diatasi dengan berhati-hati saat merancang protokol finalitas slot tunggal. Protokol finalitas slot tunggal kemungkinan akan membutuhkan lebih dari dua putaran konsensus per slot, dan dengan demikian, seseorang dapat meminta putaran pertama untuk menyertakan blok, dan hanya membutuhkan node untuk memverifikasi bukti sebelum menandatangani di putaran ketiga (atau terakhir). Hal ini memastikan bahwa jendela waktu yang signifikan selalu tersedia antara tenggat waktu penerbitan blok dan waktu yang diharapkan untuk bukti-bukti yang tersedia.
Masalah efisiensi data harus diatasi dengan memiliki protokol terpisah untuk mengumpulkan data terkait verifikasi. Untuk tanda tangan, kita dapat menggunakan agregasi BLS, yang sudah didukung oleh ERC-4337. Kategori utama lain dari data terkait verifikasi adalah ZK-SNARK yang digunakan untuk privasi. Untungnya, ini sering kali cenderung memiliki protokol agregasi sendiri.
Perlu juga disebutkan bahwa verifikasi SNARK pada lapisan 1 memiliki manfaat penting: fakta bahwa eksekusi EVM on-chain tidak perlu lagi diverifikasi oleh setiap node sehingga memungkinkan untuk meningkatkan jumlah eksekusi EVM yang terjadi. Hal ini dapat terjadi, baik dengan meningkatkan batas gas lapisan 1 secara drastis, atau dengan memperkenalkan rollup yang diabadikan, atau keduanya.
Membuat ekosistem ZK-EVM multi-klien terbuka bekerja dengan baik akan membutuhkan banyak pekerjaan. Tetapi kabar baiknya adalah bahwa sebagian besar dari pekerjaan ini sedang atau akan terjadi:
Dengan adanya teknologi ini, masa depan terlihat sangat cerah. Blok Ethereum akan lebih kecil daripada saat ini, siapa pun dapat menjalankan node yang sepenuhnya memverifikasi di laptop atau bahkan ponsel mereka atau di dalam ekstensi browser, dan ini semua akan terjadi sambil mempertahankan manfaat filosofi multi-klien Ethereum.
Dalam jangka waktu yang lebih panjang, tentu saja apa pun bisa terjadi. Mungkin AI akan meningkatkan verifikasi formal ke titik di mana ia dapat dengan mudah membuktikan implementasi ZK-EVM yang setara dan mengidentifikasi semua bug yang menyebabkan perbedaan di antara keduanya. Proyek semacam itu bahkan mungkin merupakan sesuatu yang praktis untuk mulai dikerjakan sekarang. Jika pendekatan berbasis verifikasi formal seperti itu berhasil, mekanisme yang berbeda perlu dilakukan untuk memastikan desentralisasi politik yang berkelanjutan dari protokol tersebut; mungkin pada saat itu, protokol tersebut akan dianggap "lengkap" dan norma-norma keabadian akan menjadi lebih kuat. Tetapi meskipun itu adalah masa depan jangka panjang, dunia ZK-EVM multi-klien yang terbuka tampaknya seperti batu loncatan alami yang kemungkinan besar akan terjadi.
Dalam waktu dekat, ini masih merupakan perjalanan yang panjang. ZK-EVM sudah ada di sini, tetapi ZK-EVM menjadi benar-benar layak di lapisan 1 akan mengharuskannya menjadi tipe 1, dan membuat pembuktian yang cukup cepat sehingga dapat terjadi secara real time. Dengan paralelisasi yang cukup, hal ini dapat dilakukan, tetapi masih banyak pekerjaan yang harus dilakukan untuk mencapainya. Perubahan konsensus seperti menaikkan biaya gas KECCAK, SHA256 dan precompile fungsi hash lainnya juga akan menjadi bagian penting dalam gambaran ini. Meskipun demikian, langkah pertama dari transisi ini dapat terjadi lebih cepat dari yang kita harapkan: setelah kita beralih ke pohon Verkle dan klien tanpa kewarganegaraan, klien dapat mulai secara bertahap menggunakan ZK-EVM, dan transisi ke dunia "multi-ZK-EVM terbuka" dapat mulai terjadi dengan sendirinya.
Salah satu cara yang kurang dibahas, namun sangat penting, di mana Ethereum mempertahankan keamanan dan desentralisasinya adalah filosofi multi-kliennya. Ethereum secara sengaja tidak memiliki "klien referensi" yang dijalankan semua orang secara default: sebagai gantinya, ada spesifikasi yang dikelola secara kolaboratif (saat ini ditulis dalam bahasa Python yang sangat mudah dibaca tetapi sangat lambat) dan ada beberapa tim yang membuat implementasi spesifikasi (juga disebut "klien"), yang merupakan apa yang sebenarnya dijalankan oleh para pengguna.
Setiap node Ethereum menjalankan klien konsensus dan klien eksekusi. Hingga hari ini, tidak ada klien konsensus atau eksekusi yang mencapai lebih dari 2/3 jaringan. Jika klien dengan kurang dari 1/3 bagian dalam kategorinya memiliki bug, jaringan akan terus berjalan seperti biasa. Jika klien dengan antara 1/3 dan 2/3 bagian dalam kategorinya (jadi, Prysm, Lighthouse atau Geth) memiliki bug, chain akan terus menambahkan blok, tetapi akan berhenti menyelesaikan blok, memberikan waktu bagi pengembang untuk melakukan intervensi.
Salah satu transisi besar yang belum banyak dibahas, namun sangat penting, yang akan datang dalam cara rantai Ethereum divalidasi adalah munculnya ZK-EVM. SNARK yang membuktikan eksekusi EVM telah dikembangkan selama bertahun-tahun, dan teknologi ini secara aktif digunakan oleh protokol lapisan 2 yang disebut rollup ZK. Beberapa dari rollup ZK ini sudah aktif di mainnet saat ini, dan akan segera menyusul. Namun dalam jangka panjang, ZK-EVM tidak hanya akan digunakan untuk rollup; kami ingin menggunakannya untuk memverifikasi eksekusi pada layer 1 juga (lihat juga: the Verge).
Setelah itu terjadi, ZK-EVM secara de-facto menjadi jenis klien Ethereum ketiga, sama pentingnya dengan keamanan jaringan seperti halnya klien eksekusi dan klien konsensus saat ini. Dan hal ini tentu saja menimbulkan pertanyaan: bagaimana ZK-EVM berinteraksi dengan filosofi multi-klien? Salah satu bagian yang sulit telah selesai: kami telah memiliki beberapa implementasi ZK-EVM yang sedang dikembangkan secara aktif. Namun, masih ada bagian sulit lainnya: bagaimana kita membuat ekosistem "multi-klien" untuk ZK yang membuktikan kebenaran blok Ethereum? Pertanyaan ini membuka beberapa tantangan teknis yang menarik - dan tentu saja pertanyaan yang membayangi, apakah pengorbanannya sepadan atau tidak.
Filosofi multi-klien Ethereum adalah sebuah jenis desentralisasi, dan seperti <a href="https://medium.com/@VitalikButerin/arti-desentralisasi-a0c92b76a274"> desentralisasi secara umum, seseorang dapat berfokus pada manfaat teknis dari desentralisasi arsitektural atau manfaat sosial dari desentralisasi politik. Pada akhirnya, filosofi multi-klien dimotivasi oleh keduanya dan melayani keduanya.
Manfaat utama dari desentralisasi teknis adalah sederhana: mengurangi risiko bahwa satu bug pada satu perangkat lunak akan menyebabkan kerusakan besar pada seluruh jaringan. Situasi historis yang mencontohkan risiko ini adalah bug overflow Bitcoin pada tahun 2010. Pada saat itu, kode klien Bitcoin tidak memeriksa bahwa jumlah output dari sebuah transaksi tidak meluap (membungkus ke nol dengan menjumlahkan ke atas bilangan bulat maksimum264-1), sehingga seseorang melakukan transaksi yang melakukan hal tersebut, dan memberikan miliaran bitcoin kepada dirinya sendiri. Bug ditemukan dalam beberapa jam, dan perbaikan segera dilakukan dan dengan cepat disebarkan ke seluruh jaringan, tetapi seandainya ada ekosistem yang matang pada saat itu, koin-koin tersebut akan diterima oleh bursa, jembatan, dan bangunan lainnya, dan para penyerang dapat lolos dengan banyak uang. Jika ada lima klien Bitcoin yang berbeda, sangat tidak mungkin jika semuanya memiliki bug yang sama, sehingga akan terjadi pemisahan langsung, dan sisi yang mengalami bug kemungkinan besar akan kalah.
Ada tradeoff dalam menggunakan pendekatan multi-klien untuk meminimalkan risiko bug yang sangat besar: sebagai gantinya, Anda akan mendapatkan bug kegagalan konsensus. Artinya, jika Anda memiliki dua klien, ada risiko bahwa klien memiliki interpretasi yang berbeda secara halus tentang beberapa aturan protokol, dan meskipun kedua interpretasi tersebut masuk akal dan tidak mengizinkan pencurian uang, ketidaksepakatan tersebut akan menyebabkan rantai terbelah menjadi dua. Perpecahan serius seperti itu pernah terjadi sekali dalam sejarah Ethereum (ada beberapa perpecahan lain yang jauh lebih kecil di mana sebagian kecil jaringan yang menjalankan versi kode lama bercabang). Para pembela pendekatan klien tunggal menunjukkan kegagalan konsensus sebagai alasan untuk tidak memiliki banyak implementasi: jika hanya ada satu klien, satu klien tersebut tidak akan berselisih dengan dirinya sendiri. Model mereka tentang bagaimana jumlah klien diterjemahkan ke dalam risiko mungkin terlihat seperti ini:
Saya, tentu saja, tidak setuju dengan analisis ini. Inti dari ketidaksepakatan saya adalah bahwa (i) bug bencana gaya 2010 juga penting, dan (ii) Anda tidak pernah hanya memiliki satu klien. Poin terakhir ini paling jelas terlihat pada fork Bitcoin tahun 2013: perpecahan rantai terjadi karena ketidaksepakatan antara dua versi klien Bitcoin yang berbeda, yang salah satunya ternyata memiliki batas yang tidak disengaja dan tidak terdokumentasi pada jumlah objek yang dapat dimodifikasi dalam satu blok. Oleh karena itu, satu klien dalam teori sering kali adalah dua klien dalam praktik, dan lima klien dalam teori mungkin menjadi enam atau tujuh klien dalam praktik - jadi kita harus mengambil risiko dan berada di sisi kanan kurva risiko, dan memiliki setidaknya beberapa klien yang berbeda.
Pengembang klien monopoli berada dalam posisi yang memiliki banyak kekuatan politik. Jika pengembang klien mengusulkan perubahan, dan pengguna tidak setuju, secara teoritis mereka dapat menolak untuk mengunduh versi yang diperbarui, atau membuat fork tanpa perubahan, tetapi dalam praktiknya sering kali sulit bagi pengguna untuk melakukannya. Bagaimana jika perubahan protokol yang tidak disetujui dibundel dengan pembaruan keamanan yang diperlukan? Bagaimana jika tim utama mengancam untuk berhenti jika mereka tidak mendapatkan apa yang mereka inginkan? Atau, yang lebih berbahaya, bagaimana jika tim klien monopoli akhirnya menjadi satu-satunya kelompok yang memiliki keahlian protokol terbesar, meninggalkan sisa ekosistem dalam posisi yang buruk untuk menilai argumen teknis yang diajukan oleh tim klien, sehingga tim klien memiliki banyak ruang untuk mendorong tujuan dan nilai mereka sendiri, yang mungkin tidak sesuai dengan komunitas yang lebih luas?
Kekhawatiran tentang politik protokol, terutama dalam konteks perang OP_RETURN Bitcoin 2013-14 di mana beberapa peserta secara terbuka mendukung diskriminasi terhadap penggunaan rantai tertentu, merupakan faktor penting yang berkontribusi pada adopsi awal Ethereum terhadap filosofi multi-klien, yang bertujuan untuk mempersulit sekelompok kecil orang untuk mengambil keputusan semacam itu. Kekhawatiran khusus terhadap ekosistem Ethereum - yaitu, menghindari konsentrasi kekuasaan di dalam Ethereum Foundation itu sendiri - memberikan dukungan lebih lanjut untuk arah ini. Pada tahun 2018, sebuah keputusan dibuat untuk secara sengaja membuat Yayasan tidak membuat implementasi protokol PoS Ethereum (yaitu. yang sekarang disebut "klien konsensus"), menyerahkan tugas itu sepenuhnya kepada tim luar.
Saat ini, ZK-EVM digunakan dalam rollup. Hal ini meningkatkan penskalaan dengan memungkinkan eksekusi EVM yang mahal terjadi hanya beberapa kali secara off-chain, dan semua orang cukup memverifikasi SNARK yang diposting secara on-chain yang membuktikan bahwa eksekusi EVM telah dikomputasi dengan benar. Hal ini juga memungkinkan beberapa data (terutama tanda tangan) untuk tidak disertakan secara on-chain, sehingga menghemat biaya gas. Hal ini memberikan kami banyak manfaat skalabilitas, dan kombinasi komputasi yang dapat diskalakan dengan ZK-EVM dan data yang dapat diskalakan dengan <a href="https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling"> data-availability-sampling memungkinkan kami untuk melakukan skalabilitas yang sangat jauh.
Akan tetapi, jaringan Ethereum saat ini juga memiliki masalah yang berbeda, masalah yang tidak dapat diselesaikan oleh penskalaan lapisan 2 dengan sendirinya: lapisan 1 sulit untuk diverifikasi, sampai-sampai tidak banyak pengguna yang menjalankan node mereka sendiri. Sebaliknya, sebagian besar pengguna hanya mempercayai penyedia pihak ketiga. Klien ringan seperti Helios dan Succinct mengambil langkah untuk menyelesaikan masalah, tetapi klien ringan jauh dari simpul yang memverifikasi sepenuhnya: klien ringan hanya memverifikasi tanda tangan dari subset acak validator yang disebut komite sinkronisasi, dan tidak memverifikasi bahwa rantai tersebut benar-benar mengikuti aturan protokol. Untuk membawa kita ke dunia di mana pengguna benar-benar dapat memverifikasi bahwa rantai pasok mengikuti aturan, kita harus melakukan sesuatu yang berbeda.
Seiring waktu, kami dapat mengurangi target gas per blok layer 1 dari 15 juta menjadi 1 juta, cukup untuk satu blok yang berisi satu SNARK dan beberapa operasi setoran dan penarikan, tetapi tidak lebih dari itu, dan dengan demikian memaksa hampir semua aktivitas pengguna untuk pindah ke protokol layer 2. Desain seperti itu masih dapat mendukung banyak rollup yang dilakukan di setiap blok: kita dapat menggunakan protokol agregasi off-chain yang dijalankan oleh pembangun yang disesuaikan untuk mengumpulkan SNARK dari beberapa protokol layer 2 dan menggabungkannya menjadi satu SNARK. Dalam dunia seperti itu, satu-satunya fungsi lapisan 1 adalah menjadi lembaga kliring untuk protokol lapisan 2, memverifikasi bukti-bukti mereka dan kadang-kadang memfasilitasi transfer dana dalam jumlah besar di antara mereka.
Pendekatan ini bisa saja berhasil, tetapi memiliki beberapa kelemahan penting:
Oleh karena itu, tampaknya lebih masuk akal untuk mencoba menemukan cara menggunakan ZK-SNARK untuk memverifikasi lapisan 1 itu sendiri.
ZK-EVM tipe 1 (sepenuhnya setara dengan Ethereum) dapat digunakan untuk memverifikasi eksekusi EVM dari sebuah blok Ethereum (lapisan 1). Kita dapat menulis lebih banyak kode SNARK untuk memverifikasi sisi konsensus dari sebuah blok. Ini akan menjadi masalah teknik yang menantang: saat ini, ZK-EVM membutuhkan waktu beberapa menit hingga beberapa jam untuk memverifikasi blok Ethereum, dan menghasilkan bukti secara real time akan membutuhkan satu atau lebih dari (i) peningkatan pada Ethereum itu sendiri untuk menghapus komponen yang tidak ramah SNARK, (ii) peningkatan efisiensi yang besar dengan perangkat keras khusus, dan (iii) peningkatan arsitektur dengan paralelisasi yang lebih banyak. Namun, tidak ada alasan teknologi yang mendasar mengapa hal ini tidak dapat dilakukan - dan saya berharap bahwa, meskipun membutuhkan waktu bertahun-tahun, hal ini akan terlaksana.
Di sinilah kita melihat titik temu dengan paradigma multi-klien: jika kita menggunakan ZK-EVM untuk memverifikasi lapisan 1, ZK-EVM mana yang kita gunakan?
Saya melihat ada tiga pilihan:
Bagi saya, (3) tampaknya ideal, setidaknya sampai dan kecuali teknologi kita meningkat ke titik di mana kita dapat secara resmi membuktikan bahwa semua implementasi ZK-EVM setara satu sama lain, di mana pada saat itu kita dapat memilih mana yang paling efisien. (1) akan mengorbankan manfaat dari paradigma multi-klien, dan (2) akan menutup kemungkinan untuk mengembangkan klien baru dan mengarah pada ekosistem yang lebih terpusat. (3) memiliki tantangan, tetapi tantangan tersebut tampaknya lebih kecil dibandingkan dengan tantangan dari dua opsi lainnya, setidaknya untuk saat ini.
Menerapkan (3) tidak akan terlalu sulit: seseorang dapat memiliki sub-jaringan p2p untuk setiap jenis bukti, dan klien yang menggunakan salah satu jenis bukti akan mendengarkan pada sub-jaringan yang sesuai dan menunggu sampai mereka menerima bukti yang dikenali oleh verifikator mereka sebagai bukti yang valid.
Dua tantangan utama dari (3) kemungkinan adalah sebagai berikut:
Tantangan latensi dapat diatasi dengan berhati-hati saat merancang protokol finalitas slot tunggal. Protokol finalitas slot tunggal kemungkinan akan membutuhkan lebih dari dua putaran konsensus per slot, dan dengan demikian, seseorang dapat meminta putaran pertama untuk menyertakan blok, dan hanya membutuhkan node untuk memverifikasi bukti sebelum menandatangani di putaran ketiga (atau terakhir). Hal ini memastikan bahwa jendela waktu yang signifikan selalu tersedia antara tenggat waktu penerbitan blok dan waktu yang diharapkan untuk bukti-bukti yang tersedia.
Masalah efisiensi data harus diatasi dengan memiliki protokol terpisah untuk mengumpulkan data terkait verifikasi. Untuk tanda tangan, kita dapat menggunakan agregasi BLS, yang sudah didukung oleh ERC-4337. Kategori utama lain dari data terkait verifikasi adalah ZK-SNARK yang digunakan untuk privasi. Untungnya, ini sering kali cenderung memiliki protokol agregasi sendiri.
Perlu juga disebutkan bahwa verifikasi SNARK pada lapisan 1 memiliki manfaat penting: fakta bahwa eksekusi EVM on-chain tidak perlu lagi diverifikasi oleh setiap node sehingga memungkinkan untuk meningkatkan jumlah eksekusi EVM yang terjadi. Hal ini dapat terjadi, baik dengan meningkatkan batas gas lapisan 1 secara drastis, atau dengan memperkenalkan rollup yang diabadikan, atau keduanya.
Membuat ekosistem ZK-EVM multi-klien terbuka bekerja dengan baik akan membutuhkan banyak pekerjaan. Tetapi kabar baiknya adalah bahwa sebagian besar dari pekerjaan ini sedang atau akan terjadi:
Dengan adanya teknologi ini, masa depan terlihat sangat cerah. Blok Ethereum akan lebih kecil daripada saat ini, siapa pun dapat menjalankan node yang sepenuhnya memverifikasi di laptop atau bahkan ponsel mereka atau di dalam ekstensi browser, dan ini semua akan terjadi sambil mempertahankan manfaat filosofi multi-klien Ethereum.
Dalam jangka waktu yang lebih panjang, tentu saja apa pun bisa terjadi. Mungkin AI akan meningkatkan verifikasi formal ke titik di mana ia dapat dengan mudah membuktikan implementasi ZK-EVM yang setara dan mengidentifikasi semua bug yang menyebabkan perbedaan di antara keduanya. Proyek semacam itu bahkan mungkin merupakan sesuatu yang praktis untuk mulai dikerjakan sekarang. Jika pendekatan berbasis verifikasi formal seperti itu berhasil, mekanisme yang berbeda perlu dilakukan untuk memastikan desentralisasi politik yang berkelanjutan dari protokol tersebut; mungkin pada saat itu, protokol tersebut akan dianggap "lengkap" dan norma-norma keabadian akan menjadi lebih kuat. Tetapi meskipun itu adalah masa depan jangka panjang, dunia ZK-EVM multi-klien yang terbuka tampaknya seperti batu loncatan alami yang kemungkinan besar akan terjadi.
Dalam waktu dekat, ini masih merupakan perjalanan yang panjang. ZK-EVM sudah ada di sini, tetapi ZK-EVM menjadi benar-benar layak di lapisan 1 akan mengharuskannya menjadi tipe 1, dan membuat pembuktian yang cukup cepat sehingga dapat terjadi secara real time. Dengan paralelisasi yang cukup, hal ini dapat dilakukan, tetapi masih banyak pekerjaan yang harus dilakukan untuk mencapainya. Perubahan konsensus seperti menaikkan biaya gas KECCAK, SHA256 dan precompile fungsi hash lainnya juga akan menjadi bagian penting dalam gambaran ini. Meskipun demikian, langkah pertama dari transisi ini dapat terjadi lebih cepat dari yang kita harapkan: setelah kita beralih ke pohon Verkle dan klien tanpa kewarganegaraan, klien dapat mulai secara bertahap menggunakan ZK-EVM, dan transisi ke dunia "multi-ZK-EVM terbuka" dapat mulai terjadi dengan sendirinya.