MSTR Cat

Blockchain/Tahap VI · Selepas bitcoin/6.3 Ethereum dan kontrak pintar/Pelajaran 3

Penggodaman The DAO dan Ethereum Classic

Pepijat reentrancy yang memecahkan rantaian dan membentuk perdebatan mengenai ketidakbolehubahan

BahanAntaramuka peneroka blok (contohnya, Etherscan)Kod sumber kontrak pintar The DAO (versi sebelum fork)Buku nota untuk merekod perubahan pembolehubah keadaan

Ingin tahu

  1. Mengapakah sebaris kod yang dilaksanakan sebelum keadaan dikemas kini membolehkan penyerang mengosongkan dana secara berulang kali?
  2. Apa yang berlaku apabila sebuah komuniti mengundi untuk menulis semula sejarah dan bukannya memeliharanya?
  3. Siapa yang mempunyai kuasa muktamad: mekanisme konsensus atau para pembangun yang menyelenggarakannya?

Teroka

  1. The DAO dilancarkan pada April 2016 sebagai dana teroka autonomi, dengan mengumpul kira-kira 12.7 juta ETH daripada lebih 11,000 pelabur. Jumlah ini mewakili kira-kira 14% daripada keseluruhan ether yang beredar pada masa itu. Projek ini beroperasi sepenuhnya melalui kontrak pintar, membolehkan pemegang token mengundi projek mana yang akan dibiayai tanpa pengurusan berpusat atau struktur tadbir urus korporat tradisional.
  2. Pada 17 Jun 2016, seorang penyerang mengeksploitasi kelemahan reentrancy dalam fungsi split The DAO. Pepijat ini membolehkan kontrak tersebut dipanggil semula sebelum baki dalamannya dikemas kini. Penyerang tersebut mengalirkan kira-kira 3.6 juta ETH ke dalam sebuah ‘child DAO’, di mana tempoh pegangan selama 28 hari membekukan dana tersebut. Eksploit ini menunjukkan bahawa mesin lengkap-Turing membawa risiko pengurusan keadaan yang kompleks, yang tidak wujud dalam sistem yang lebih ringkas seperti Bitcoin.
  3. Komuniti Ethereum berdepan dilema segera: menghormati ketidakbolehubahan lejar atau melindungi pelabur daripada kegagalan kod yang kritikal. Para pembangun berhujah bahawa pepijat tersebut merupakan kesilapan pelaksanaan, bukan tingkah laku yang dimaksudkan, dan membiarkan dana terkunci akan menjejaskan kepercayaan terhadap kegunaan platform tersebut. Pengkritik pula membalas bahawa mengubah sejarah rantaian melanggar janji teras konsensus terdesentralisasi, lalu mewujudkan preseden berbahaya bagi campur tangan tadbir urus pada masa depan.
  4. Pada 20 Julai 2016, Ethereum melaksanakan hard fork pada blok 1,920,000 untuk membalikkan serangan tersebut dan memindahkan dana ke kontrak bayaran balik. Pemegang token DAO kemudian boleh menuntut semula ether mereka daripada kontrak bayaran balik itu. Sebilangan kecil pihak menolak campur tangan ini dan terus melombong rantaian asal yang tidak diubah suai. Kumpulan ini membentuk Ethereum Classic (ETC), dengan berpegang teguh pada prinsip ‘code is law’ (kod ialah undang-undang) dan bahawa tiada entiti sepatutnya mempunyai kuasa untuk menulis semula sejarah.
  5. Fork tersebut mewujudkan dua realiti selari daripada satu lejar yang sama. Sementara Ethereum terus berkembang menjadi platform kontrak pintar utama, Ethereum Classic kekal sebagai rangkaian yang lebih kecil, yang sebahagian besarnya berfungsi sebagai pernyataan falsafah mengenai desentralisasi. Insiden ini mempengaruhi pembangunan protokol seterusnya merentasi pelbagai mata wang kripto.
  6. Cari blok 1,920,000 pada peneroka blok Ethereum dan pada peneroka blok Ethereum Classic: kedua-dua rantaian adalah sama sehingga blok 1,919,999 dan berbeza bermula dari blok 1,920,000. Fork tersebut tidak memindahkan ether The DAO melalui sebarang transaksi; perisian klien baharu menggunakan perubahan keadaan luar biasa (irregular state change) pada blok tersebut, dan itulah sebabnya pembalikan itu muncul dalam kod dan bukannya dalam mana-mana senarai transaksi.

Fakta utama

  • The DAO mengumpul kira-kira 12.7 juta ETH, iaitu kira-kira 14% daripada keseluruhan ether yang beredar semasa pelancarannya.
  • Pepijat reentrancy membolehkan penyerang mengalirkan kira-kira 3.6 juta ETH ke dalam sebuah child DAO pada 17 Jun 2016.
  • Ethereum melakukan hard fork pada 20 Julai 2016, pada blok 1,920,000, untuk membalikkan serangan tersebut dan memulangkan dana.
  • Sebilangan kecil terus melombong rantaian asal, yang kemudian menjadi Ethereum Classic (ETC), dengan berpegang pada prinsip ‘code is law’.
  • Fork tersebut menyebabkan pemegang memiliki kedua-dua ETH pada rantaian baharu dan ETC pada rantaian lama.
  • Insiden tersebut mencetuskan perdebatan berpanjangan mengenai ketidakbolehubahan, kuasa pembangun, dan definisi konsensus.

Latihan sembilan, enam, tiga, satu

9KumpulSenaraikan 9 kes di mana kemas kini perisian atau perubahan protokol mengubah data pengguna sedia ada atau sejarah transaksi. Catat siapa yang memulakan perubahan tersebut dan alasan apa yang diberikan.
6KelompokkanKumpulkan 9 item tersebut kepada 6 kategori berdasarkan sama ada perubahan itu merupakan pembetulan pepijat, penambahan ciri, rollback keselamatan, naik taraf konsensus, hard fork, atau soft fork.
3SaringKurangkan 6 kategori tersebut kepada 3 jenis kuasa yang akhirnya memutuskan perubahan-perubahan ini.
1KristalkanTulis 1 ayat tentang apa yang dijanjikan oleh ‘code is law’ dan apa yang dikorbankannya apabila kod gagal.

Semakan fakta

Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.

Buka dalam akademi interaktif →

EN PT ES ZH JA KO RU DE FR