Begini Proses Serangan DAO Yang Terjadi Dua Hari Lalu – Penjelasan Adam B Levine
Proses Serangan DAO. Adam adalah pendiri dan sekaligus editor di komunitas Let’sTalk Bitcoin. Adam juga telah mencoba membuat sebuah token dari Bitcoin. Lalu, pada tahun 2014 ia meluncurkan LTBCoin. Yang berfungsi sebagai sebuah program token reward pertama cryptocurrency. Jika anda sering berkunjung di komunitas ini, maka LTBCoin pasti sudah tidak asing lagi.
Dalam penjelasannya, dijabarkan pula seperti yang disebutkan dalam surat terbuka kemarin oleh penyerang DAO. Bahwa dia tidak melakukan pelanggaran atau tindakan yang melanggar hukum. Padahal DAO ini telah menjadi cukup besar dan begitu sukses. Namun, akibat kesalahan fatal yang mengakibatkan terjadinya serangan yang lalu, menunjukkan betapa rentannya DAO.
Insiden tersebut kini telah menjungkirbalikkan fakta, bahwa ada celah besar di dalam sistemnya. Padahal, beberapa waktu sebelumnya, telah ada saran untuk melakukan Moratorium DAO sementara. Lalu apa dasar peringatan yang telah muncul sebelumnya?
Dino Mark, Vlad Zamfir, and Emin Gün Sirer, didalam usulannya tentang Moratorium DAO telah menyebutkan bahwa mekanisme pemisahan diri pemilik token dari kontrak utama DAO ini cukup riskan.
Karena pemisahan itu berlangsung di Blockchain, maka ada resiko bahwa penyerang dapat menargetkan sub kontrak itu untuk diserang. Dan pada proses serangan DAO yang terjadi kemarin, juga dengan memanfaatkan penggunaan fitur Splitting ini.
Lalu bagaimana sebetulnya proses yang dilakukan? Adam Levine menjelaskan, bahwa pada dasarnya DAO dirancang secara khusus dengan membiarkan organisasi didalamnya untuk dapat di split menjadi bagian-bagian kecil yang lebih khusus. Sehingga setiap pemilik token dapat membuat bagian kecil dari miliknya.
Artinya, pada split bagian kecil itu, maka tentu resikonya menjadi meningkat. Selain itu, dengan pemisahan atau split terjadi tersebut, membuat kontrol di pool utama menjadi berkurang.
Dari penjelasan Adam B Levine di LetsTalk Bitcoin, proses Splitting yang dilakukan waktu itu terjadi melalui tiga langkah.
- Verifikasi bahwa user adalah benar-benar pemilik token yang hendak di Split.
- Transfer ether dari DAO ke split baru dalam jumlah yang sama, sesuai token yang akan di Split.
- Membakar token (burn token) yang telah di split.
Adam pun mengambil sebuah contoh. Misalkan saja kita akan split 1 Ethereum dari DAO. Maka yang akan dilakukan adalah:
- Sistem akan memvalidasi langkah yang kita lakukan, yakni memeriksa apakah kita benar-benar memiliki token yang hendak kita split. Jika benar, maka tidak akan ada hambatan.
- Kedua, sistem DAO mengirimkan ether dari pool utama pada grup baru yang kita kontrol. Pada kondisi ini, setelah proses kedua selesai, namun langkah 3 belum dilakukan, kembali ke awal. Dengan Split lagi di langkah pertama.
- Mengulang lagi ke langkah pertama, sistem kembali memverifikasi kepemilikan token, lanjut ke langkah kedua.
- Dalam hal ini langkah ke tiga untuk burn token tidak pernah terjadi. Sehingga dari langkah 1 dan langkah 2 berhasil dilakukan berulang, maka reward yang diperoleh juga dua kali.
- Langkah ini dilakukan berulang-ulang, dan langkah 3 tidak pernah dilakukan. Disitulah letak permasalahan besarnya.
Permasalahan besarnya adalah seharusnya saat split itu terjadi, harus juga melibatkan proses burning token. Namun hal itu tidak bisa dilakukan, sehingga menjadi celah. Menurut Adam, smart contract DAO bukanlah karena desain sistemnya yang buruk, namun karena memang desain itu adalah pertama kalinya membangun smart contract. Selama ini, masih belum ada cara yang palling baik untuk membangun smart contract.