Blockchain/Tahap IX · Kelajuan dan tontonan/9.2 Pasaran yang adil/Pelajaran 2
Kunci pentadbiran dan ketidakbolehubahan
Akar umbi kecurian kontrak, dan peti besi yang mengakhirinya
BahanPeneroka blok dengan keupayaan memeriksa kontrak (contohnya Solscan atau Etherscan)Dokumentasi SPL Token mengenai medan kuasaDokumentasi naik taraf proksi OpenZeppelinKod sumber kontrak pintar yang telah diaudit
Ingin tahu
- Apakah itu kuasa mint (mint authority), dan apakah yang boleh dilakukan oleh pemegangnya?
- Mengapakah proksi yang boleh dinaik taraf boleh menjadi ciri keselamatan dan juga pintu belakang?
- Jika membuang kunci pentadbir menghapuskan serangan tetapi juga menghalang pembetulan, siapakah yang menentukan risiko mana yang diterima oleh sesebuah komuniti?
Teroka
- Banyak rug pull berpunca daripada kuasa yang dikekalkan. Kuasa mint membolehkan pemegangnya mencetak token tanpa had dan menjualnya ke pasaran sesuka hati. Kuasa pembekuan atau senarai hitam menghalang pemegang tertentu daripada memindahkan baki mereka. Cukai yang boleh ditetapkan oleh pemilik boleh menaikkan yuran jualan hingga seratus peratus, lalu memerangkap kecairan di tempatnya. Setiap satu daripadanya ialah kunci yang dipegang oleh seseorang, dan setiap satunya boleh digunakan terhadap orang yang sepatutnya dilayaninya.
- Proksi yang boleh dinaik taraf memisahkan storan daripada logik: keadaan (state) disimpan di satu alamat manakala kod dilaksanakan dari alamat lain yang boleh ditukar oleh pentadbir pada bila-bila masa. Ini membolehkan tampalan apabila pepijat ditemui, tetapi ia juga bermakna peraturan sesuatu token boleh berubah secara retrospektif bagi setiap pemegang. Dalam eksploit DeFi, naik taraf proksi telah disalahgunakan untuk mengalihkan dana atau mengubah tingkah laku protokol selepas deployment. Token Squid Game (November 2021) menunjukkan ke mana kawalan yang dikekalkan membawa: kontraknya membenarkan sesiapa sahaja membeli tetapi menghalang pemegang biasa daripada menjual, dan apabila penciptanya menunaikan keuntungan, harganya jatuh hampir ke sifar dalam beberapa minit.
- Pertukaran (trade-off) ini bersifat struktur. Buang kunci mint dan tiada sesiapa boleh mencetak token tambahan; buang laluan pengeluaran daripada kecairan kolam dan tiada sesiapa boleh mengeluarkan rizab. Kosnya ialah tiada pembangun, juruaudit atau ahli komuniti yang boleh membetulkan pepijat, bertindak balas terhadap kecemasan atau melaraskan parameter apabila keadaan berubah. Dalam pasaran tanpa kebenaran, setiap kuasa pentadbir ialah permukaan serangan dan alat penyelenggaraan pada masa yang sama. Pihak mana yang dilayaninya bergantung pada sama ada pemegang kunci bertindak dengan niat baik dan menyimpan kunci itu dengan selamat.
- Pertahanan lapisan dompet tidak dapat menggantikan reka bentuk pada peringkat kontrak. Pengguna boleh membatalkan kelulusan token, mengelak daripada menandatangani transaksi yang tidak dikenali dan mengesahkan alamat kontrak sebelum berinteraksi, tetapi amalan ini tidak berkesan terhadap kuasa mint yang sedang digunakan secara aktif atau naik taraf proksi yang mengubah peraturan di tengah-tengah dagangan. Dalam token SPL, kuasa mint sentiasa ditetapkan semasa penciptaan dan kekal sehingga ditetapkan kepada None; kuasa pembekuan pula adalah pilihan dan, jika tidak ditetapkan, tidak boleh ditambah kemudian. Walau apa pun, kuasa yang masih aktif tetap berfungsi tanpa mengira sejauh mana pengguna berhati-hati.
- Dokumentasi proksi OpenZeppelin menjelaskan seni binanya secara terang: kontrak pelaksanaan menyimpan logik, manakala proksi menyimpan keadaan dan memajukan setiap panggilan kepadanya menggunakan delegatecall. Naik taraf bermakna menghalakan proksi kepada alamat pelaksanaan yang baharu. Inilah cara pasukan menghantar pembetulan, tetapi ia juga bermakna sesiapa yang memegang kuasa naik taraf boleh menggantikan keseluruhan set peraturan dalam satu transaksi. Perbezaan antara tampalan dan kecurian semata-mata dari segi tingkah laku, bukan teknikal.
- Memeriksa kontrak sesuatu token mendedahkan kunci mana yang masih aktif. Pada rangkaian EVM, periksa sama ada kontrak mempunyai peranan pemilik dan sama ada ia berada di belakang proksi yang boleh dinaik taraf; pada Solana, periksa kuasa mint dan kuasa pembekuan serta sebarang sambungan Token-2022 seperti permanent delegate, transfer hook atau transfer fee. Setiap kuasa yang tiada atau telah dibatalkan menghapuskan kelas serangannya. Risiko yang tinggal beralih kepada manusia: phishing, penyamaran dan manipulasi sosial berlaku sepenuhnya di luar kod.
- Banyak kontrak pintar boleh diubah selepas dilancarkan. Di Solana, program boleh dinaik taraf secara lalai melalui kunci ‘upgrade authority’; di rantaian EVM seperti Ethereum, kontrak tidak boleh diubah kecuali dibina dengan corak proxy yang memajukan pelaksanaan kepada kontrak pelaksanaan yang boleh diganti. Reka bentuk ini membolehkan pembetulan pepijat dan penambahan ciri baharu, tetapi ia juga bermakna kod yang digunakan oleh pengguna hari ini mungkin bukan kod yang sama yang mereka baca semalam.
- Risiko kebolehubahan ialah kepercayaan yang tertumpu. Jika seorang pembangun memegang kunci pentadbiran, secara teorinya dia boleh mengubah bekalan token, membekukan akaun pengguna, atau mengosongkan kolam kecairan pada bila-bila masa. Ini mewujudkan “mod dewa” yang bertentangan dengan etos desentralisasi blockchain. Apabila The DAO digodam pada Jun 2016, komuniti Ethereum berdebat sama ada perlu melakukan hard fork untuk membalikkan kecurian tersebut—satu tindakan yang memecahkan rantaian kepada Ethereum dan Ethereum Classic. Peristiwa itu menunjukkan bahawa perubahan pada peringkat rangkaian sekalipun membawa risiko tadbir urus yang mendalam.
- Ketidakbolehubahan menghapuskan risiko ini sepenuhnya. Dengan membatalkan semua kuasa pentadbiran—seperti kuasa mint, kuasa bekuan (freeze) dan kuasa naik taraf program di Solana, atau dengan melakukan deployment tanpa proxy atau peranan pemilik di rantaian EVM—kontrak tersebut menjadi peti besi bermeterai. Tiada sesiapa boleh mengubah peraturannya selepas deployment. Kod yang aktif boleh disemak sekali sahaja berbanding kod yang telah diaudit, dan ia kekal begitu. Ini menghapuskan ancaman penyalahgunaan oleh pihak dalaman, tetapi juga membekukan sebarang pepijat yang mungkin wujud secara kekal.
- Kos ketidakbolehubahan ialah kekekalan. Jika terdapat pepijat kritikal, tiada patch yang boleh digunakan; hanya migrasi ke kontrak baharu atau fork rangkaian yang dapat menanganinya. Ini meningkatkan taruhan bagi pengesahan sebelum pelancaran. Pasukan perlu melabur dengan banyak dalam pengesahan formal, ujian fuzz yang menyeluruh dan audit berbilang pihak sebelum deployment. Beban beralih daripada penyelenggaraan selepas pelancaran kepada ketelitian sebelum pelancaran. Satu kes pinggir (edge case) yang terlepas pandang menjadi ciri kekal sistem tersebut.
- Bitcoin berfungsi sebagai titik rujukan untuk ‘keneutralan yang boleh dipercayai’. Peraturannya hanya berubah melalui konsensus luas dalam kalangan ribuan nod bebas, bukan oleh satu entiti. Tidak wujud kunci pentadbiran yang boleh mengubah ganjaran blok atau kesahan transaksi. Ketegaran inilah sebahagian besar sebab ramai menganggap Bitcoin neutral secara boleh dipercayai: tiada satu pihak pun yang boleh menulis semula peraturannya.
- Bagi pereka token, memilih ketidakbolehubahan menandakan komitmen terhadap ketelusan. Pengguna boleh mengesahkan bahawa kod yang telah di-deploy tidak boleh berubah. Namun, pilihan ini memerlukan penerimaan bahawa kesilapan tidak boleh dibalikkan. Komprominya jelas: memperoleh kebolehramalan yang boleh disahkan oleh pengguna, atau mengekalkan fleksibiliti dengan kos mewujudkan titik kegagalan tunggal dan potensi penyalahgunaan.
Bahagian IKunci pentadbir: punca kecurian kontrak
Bahagian IIKetidakbolehubahan dan ketiadaan kunci pentadbiran
Fakta utama
- Kuasa mint membolehkan pemegangnya mencipta token baharu; jika dikekalkan, ia boleh digunakan untuk mencairkan pegangan semua pemegang sedia ada.
- Token Squid Game (2021) membenarkan sesiapa sahaja membeli tetapi menghalang pemegang biasa daripada menjual.
- Proksi yang boleh dinaik taraf menyimpan keadaan secara berasingan daripada logik, membolehkan tampalan dan juga perubahan peraturan secara retrospektif oleh kunci pentadbir.
- Menetapkan cukai jualan yang dikawal pemilik kepada seratus peratus berfungsi sebagai honeypot: pemegang tidak dapat keluar tanpa mencetuskan yuran tersebut.
- Melepaskan kuasa mint, pembekuan dan naik taraf semasa deployment menghapuskan kelas serangan tersebut, tetapi juga menghilangkan semua keupayaan penyelenggaraan pada masa hadapan.
- Kuasa mint SPL kekal aktif sehingga ditetapkan kepada None; kuasa pembekuan, jika ditetapkan semasa penciptaan, kekal sehingga dibatalkan.
- Di Solana, sesebuah program menjadi tidak boleh diubah apabila kuasa naik tarafnya (upgrade authority) dibatalkan; kuasa mint dan kuasa bekuan (freeze) sesuatu token boleh dibatalkan secara berasingan.
- Kontrak EVM yang di-deploy tanpa corak proxy tidak boleh dinaik taraf selepas deployment.
- Penggodaman The DAO pada Jun 2016 membawa kepada hard fork yang memecahkan Ethereum kepada dua rantaian.
- Peraturan Bitcoin hanya berubah melalui konsensus luas dalam kalangan nod teragih, bukan melalui kunci pentadbiran.
- Ketidakbolehubahan menghilangkan risiko penyalahgunaan oleh pihak dalaman, tetapi menjadikan pembaikan ralat mustahil selepas pelancaran.
- Pengesahan formal dan ujian yang menyeluruh adalah penting untuk kontrak yang tidak boleh diubah disebabkan sifat kekalnya.
Latihan sembilan, enam, tiga, satu
9KumpulSenaraikan 9 kontrak token atau deployment protokol. Bagi setiap satu, nyatakan sama ada kuasa mint, kuasa pembekuan dan proksi naik taraf diberikan kepada sesuatu alamat atau telah dilepaskan (renounced).
6KelompokkanKumpulkan 9 itu kepada 6 mengikut kuasa pentadbir yang dikekalkan oleh setiap satu.
3SaringKurangkan 6 kumpulan itu kepada 3 kategori berdasarkan sama ada mana-mana kuasa yang dikekalkan boleh digunakan terhadap pemegang tanpa sebarang jalan penyelesaian sosial atau undang-undang.
1KristalkanTulis 1 ayat tentang apa, jika ada, yang secara teknikal membezakan kuasa penyelenggaraan daripada permukaan serangan.
Semakan fakta
Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.
- Solana Program Library, SPL Token documentation
- OpenZeppelin, 'Proxy Upgrade Pattern' documentation
- Contemporary reporting on the Squid Game token collapse (November 2021)
- Chainalysis, Crypto Crime Report (2024)
- Solana documentation: deploying programs (upgrade authority)
- V. Buterin, 'Credible Neutrality as a Guiding Principle' (2020)