Ethereum menggabungkan testnet Kintsugi dibagi oleh bug, inilah alasannya

Peristiwa penggabungan pada jaringan Ethereum adalah transisi ke model konsensus Proof-of-Stake dari model Proof-of-Work yang saat ini digunakan. Penggabungan ini berarti bahwa sistem mainnet Ethereum saat ini dan rantai Beacon baru, yang sering disebut sebagai Ethereum 2.0, akan bergabung menjadi satu blockchain.

Untuk menguji penggabungan, testnet Kintsugi dikerahkan pada bulan Desember. Tujuan dari testnet adalah untuk menjalankan kasus tepi yang berbeda dan mengamati bagaimana sistem berperilaku. Salah satu pengembang yang terlibat dalam menjalankan tes di Kintsugi adalah Marius van der Wijden, Pengembang inti Ethereum bekerja dengan tim klien Geth (Go-Ethereum).

“Tesnet berjalan dengan sempurna selama beberapa minggu. Minggu lalu saya membuat fuzzer yang akan mengirim blok yang tidak valid. Satu blok berisi banyak informasi, seperti transaksi, hash dari blok sebelumnya, batas gas, dan lain-lain,” kata Marius van der Wijden.

Beberapa implementasi tidak mengeksekusi dan memverifikasi blok

Fuzzer adalah jenis alat pengujian umum yang digunakan di antara pengembang untuk menghasilkan input acak ke fungsi atau potongan kode lainnya, dan mencoba membuatnya rusak dalam beberapa cara atau lainnya. Ini tentang menghasilkan input yang salah bentuk dan tidak terduga dan mengamati apa yang terjadi pada sistem.

Fuzzer yang dibuat oleh van der Wijden menghasilkan blok yang valid dan mengubah satu elemen untuk membuatnya tidak valid. Salah satu teknik yang digunakannya adalah mengubah elemen ke elemen lainnya. Dalam hal ini, fuzzer mengubah blockhash menjadi hash induk.

“Node harus menolak blok yang diubah seperti itu. Namun, karena hash induk menunjuk ke blok yang valid itu sendiri, beberapa implementasi tidak benar-benar mengeksekusi dan memverifikasi blok tetapi mencarinya di cache. Karena blok sebelumnya valid dan dalam cache, mereka menganggap blok baru juga valid,” jelas van der Wijden.

Jaringan terbelah dua kali

Hasilnya adalah separuh jaringan, klien Geth, menolak blok, sementara separuh lainnya, klien Nethermind- dan Besu, menerimanya, menyebabkan rantai terpecah karena kami sekarang memiliki dua pandangan berbeda tentang status yang benar. Untuk memperburuk keadaan, ada masalah lain di atas.

Menurut van der Wijden, node rantai Geth, pada gilirannya, yang terdiri dari Lighthouse-Geth, Prysm-Geth, Lodestar-Geth, Nimbus-Get dan Teku-Get, juga terbelah di antara mereka.

“Pemisahan ini masih diselidiki, tetapi sepertinya Teku mungkin juga memiliki beberapa mekanisme caching yang gagal,” kata van der Wijden.

Karena beberapa garpu berbeda dari testnet Kintsugi ada pada saat penulisan, dan setiap node berpikir bahwa mereka berada pada garpu yang benar, jaringan tidak menyelesaikan lagi.

“Kami akan memikirkan sesuatu untuk menyatukan kembali jaringan. Kami telah memperbarui klien Nethermind dan node tersebut berada di rantai yang benar sekarang. Kami masih membutuhkan perbaikan untuk Teku, karena lebih dari 33 persen node adalah Teku, jika tidak, rantai tidak akan selesai,” kata van der Wijden.

Insiden membawa beberapa kebaikan

Menurut van der Wijden, insiden ini tidak melarang atau menunda pengujian lebih lanjut dari penggabungan Ethereum, juga tidak menunda penggabungan itu sendiri. Faktanya, van der Wijden mengatakan insiden itu sebenarnya membantu untuk menguji kasus tepi yang akan sulit untuk diuji jika jaringan berjalan dengan benar.

“Periode non-finalisasi yang lama merupakan tantangan bagi node dan sangat penting bagi kami untuk melihat bagaimana mereka berperilaku saat ini. Kami berpikir bahwa testnet pada akhirnya akan kembali bersama lagi, tetapi saya tidak berpikir bahwa kami akan mencoba memperbaikinya secara manual, karena ini memberi kami kesempatan untuk menguji kasus tepi yang menarik.”

“Saya kira ini tidak akan menunda penggabungan, karena penggabungan belum dijadwalkan. Tapi itu menunjukkan betapa pentingnya pengujian. Saya pikir penggabungan berjalan dengan sangat baik. Kami membutuhkan beberapa minggu lagi untuk mendapatkan perangkat lunak dalam kondisi yang dapat diterima dan kemudian kami membutuhkan beberapa bulan untuk mengujinya, ”kata van der Wijden.

Bagaimana jika ini terjadi di mainnet?

Pertanyaan yang menarik adalah apa yang akan terjadi jika bug seperti ini terjadi di rantai utama.

“Kami sudah mulai menguji cukup awal, jadi kami mengharapkan beberapa bug seperti ini. Bug seperti itu di mainnet akan sangat buruk, karena kita perlu menemukan dan memperbaiki bug, yang kita cukup kuasai, melepaskan kodenya dan kemudian memberi tahu semua pemangku kepentingan bahwa mereka harus memperbarui node mereka. Bagian terakhir adalah bagian yang sulit menurut saya, karena beberapa pengguna tidak mengikuti perkembangan terlalu dekat, ”kata van der Wijden.

Untuk lebih jelasnya, pembaca yang tertarik didorong untuk membaca karya Marius van der Wijden tweet atas insiden tersebut.

Newsletter CryptoSlate

Menampilkan ringkasan kisah harian terpenting di dunia crypto, DeFi, NFT, dan lainnya.

Mendapatkan tepi di pasar aset kripto

Akses lebih banyak wawasan dan konteks kripto di setiap artikel sebagai anggota berbayar Tepi CryptoSlate.

Analisis rantai

Cuplikan harga

Lebih banyak konteks

Bergabunglah sekarang dengan $19/bulan Jelajahi semua manfaat

Sumber: https://cryptoslate.com/ethereum-merge-testnet-kintsugi-split-by-bug-heres-why/