Ditulis oleh: Lab Tanpa Kepercayaan
Setelah mempelajari secara mendalam kode dan mekanisme BRC-20, kami menemukan bahwa ada kemungkinan serangan terhadap pemegang saham besar selama fase transfer. Untuk membantu bursa memeriksa apakah ada masalah spesifikasi proses, dan pada saat yang sama mempraktikkan semangat topi putih, kami mencoba menggunakan metode yang telah teruji untuk mengunci aset dompet panas Binance ORDI, menyebabkan Binance menangguhkan penarikan ORDI. Kami segera memberi tahu tim Binance dan mengomunikasikan rincian operasional untuk membantu Binance melanjutkan penarikan sesegera mungkin. Tiga jam kemudian, Binance melanjutkan penarikan ORDI. Artikel ini akan mulai dari prinsip desain BRC-20, menganalisis secara sistematis alasan mengapa Binance menangguhkan penarikan ORDI, dan membantu semua orang memahami mengapa siapa pun dapat mengunci saldo BRC-20 Anda.
Pertama, mari kita lihat apa yang terjadi pada rantai di UniSat.
Ini adalah saldo hot wallet Binance ORDI yang ditampilkan di UniSat pada saat penulisan, dibagi menjadi tiga bagian Dapat Dipindahtangankan, Tersedia, dan Saldo. Hal ini melibatkan tiga konsep dasar dalam BRC-20: Saldo yang dapat dipindahtangankan, Saldo yang tersedia, dan Saldo keseluruhan. Saldo yang dapat ditransfer mengacu pada saldo yang dapat ditransfer secara langsung, Saldo yang tersedia mengacu pada saldo yang dapat diubah menjadi Saldo yang dapat ditransfer, dan Saldo keseluruhan adalah jumlah dari dua saldo sebelumnya, yang menunjukkan total saldo alamat saat ini. Melihat hal ini, Anda mungkin bertanya, karena hot wallet Binance ORDI saat ini memiliki saldo yang sangat banyak, mengapa tidak dapat ditarik dan ditransfer keluar? Jangan khawatir, mari lanjutkan membaca.
Pemindahan BRC-20 memerlukan dua langkah. Langkah pertama adalah menuliskan Prasasti transfer, dan langkah kedua adalah mentransfer Prasasti kepada penerima untuk menyelesaikan transfer BRC-20. Karena transfer Prasasti didasarkan pada UTXO, artinya, berapa banyak Prasasti amt yang ditulis pada langkah pertama, hanya berapa amt BRC-20 yang dapat ditransfer keluar pada langkah kedua, sehingga saldo yang dapat ditransfer yang disebutkan di atas juga didasarkan pada UTXO. Mari kita ambil contoh untuk memudahkan pemahaman semua orang. Misalkan A adalah alamat yang baru dibuat, lalu Anda mencetak m ORDI ke alamat A, atau mentransfer m ORDI dari alamat lain ke alamat A. Saat ini, Saldo tersedia dan Saldo keseluruhan dari alamat A Keduanya m dan Saldo yang dapat ditransfer adalah 0. Kemudian kita transfer n ORDI dari alamat A ke alamat B. Langkah pertama adalah menuliskan Prasasti dengan amt n ke alamat A (jika dan hanya jika n <= m, Prasasti tersebut sah). saldo adalah n, Saldo yang tersedia adalah m - n, dan Saldo keseluruhan adalah m; pada langkah kedua, pindahkan Prasasti dengan amt n ke alamat B. Saat ini, Saldo Tersedia dan Saldo keseluruhan alamat A adalah m - n, dan Saldo yang dapat ditransfer adalah 0, Saldo yang tersedia dan Saldo keseluruhan alamat B keduanya n, Saldo yang dapat ditransfer adalah 0, dan transfer selesai.
Ambil daftar transaksi hot wallet Binance ORDI yang ditampilkan di UniSat sebagai contoh. Metode pada gambar adalah inscribe-transfer, yang sesuai dengan langkah pertama yang disebutkan di atas, Metode adalah menerima atau mengirim, yang sesuai dengan langkah kedua, dan metodenya adalah menerima atau mengirim. dua transaksi terakhir pada gambar adalah Transaksi bersama membentuk transfer BRC-20 lengkap. Tiga transaksi transfer-penulisan lainnya menuliskan tiga Prasasti dengan jumlah masing-masing 8.210.108, 6.099, dan 2.683. Ketiga Prasasti ini bersama-sama membentuk saldo yang Dapat Dipindahtangankan. Jadi jika Anda ingin mentransfer ORDI dari hot wallet Binance ORDI sekarang, Anda hanya dapat mentransfer tiga ORDI yang sesuai dengan amt, yang tentu saja tidak dapat memenuhi beragam kebutuhan penarikan pengguna.
Alasan dari situasi ini adalah siapa pun dapat menuliskan Prasasti sewenang-wenang ke alamat mana pun, sehingga siapa pun dapat mengunci saldo BRC-20 di alamat mana pun dengan melakukan langkah pertama transfer BRC-20. Jadi bagaimana seharusnya Binance mengatasi masalah yang dihadapinya saat ini? Sebenarnya caranya sangat sederhana, selama Anda mentransfer ketiga Prasasti yang disebutkan di atas kepada diri Anda sendiri, Anda dapat mengubah Saldo yang Dapat Dipindahtangankan kembali ke Saldo Tersedia, lalu mentransfer Prasasti yang sesuai dengan jumlah sesuai dengan kebutuhan penarikan pengguna. Namun, hal ini hanya dapat meringankan kebutuhan yang mendesak, tetapi tidak dapat menyelesaikan masalah secara mendasar. Hanya dengan memperbaiki protokol itu sendiri dan mengatasi kekurangan pada desain BRC-20 saat ini, masalah tersebut dapat diselesaikan untuk selamanya.