Kekekalan transaksi blockchain adalah berkah sekaligus kutukan.
Serangan Jaringan Phishing BAYC. Peretasan PolyNetwork. Peretasan Jembatan Harmoni. Kasus pencurian Ronin. Cryptocurrency senilai $14 miliar akan dicuri pada tahun 2021 saja. Ini - dan banyak lagi - semuanya adalah pencurian yang dikonfirmasi, tetapi tidak ada "tombol batalkan" (mis., Pembalikan pembayaran kartu kredit), dan tidak semua orang memiliki Jump Crypto untuk menyimpannya saat dibutuhkan.
Tetapi bagaimana jika ada jenis token yang dapat dibalik?
Ini adalah pertanyaan yang coba dijawab oleh beberapa peneliti kami di Stanford (Dan Boneh, Qinchen Wang, dan saya) selama beberapa bulan terakhir. Kami merancang standar token keikutsertaan yang mirip dengan ERC-20 dan ERC-721, dan mendukung transaksi terbalik (ketika ada cukup bukti untuk mendukungnya), menulis makalah tentangnya, dan menerapkan beberapa prototipe . Kami menyebut standar token ini masing-masing ERC-20R dan ERC-721R.
Sekarang, Anda mungkin berpikir: Token yang dapat dibalik? Bukankah ini mengalahkan tujuan blockchain? Sebenarnya tidak. Itu tidak dimaksudkan untuk mengganti token ERC-20 atau membuat Ethereum dapat dibalik -- itu hanya memungkinkan pencurian untuk ditantang, dan mungkin dipulihkan, untuk waktu yang singkat setelah transaksi.
Perhatikan bahwa transaksi hanya dapat dibekukan untuk jangka waktu singkat (katakanlah 3 hari) sebelum menjadi tidak dapat dibatalkan. Dana ERC-20R sebagian besar tidak dapat diubah.
reversibilitas dalam transaksi
Dalam sebuah transaksi, pertukaran antara dua token yang dapat dibalikkan bersifat instan; jika satu pihak meminta pembekuan, dimungkinkan untuk memulihkan dana dari pihak lain terlepas dari apakah periode waktu yang dapat dibalikkan telah berlalu. Namun, dimungkinkan untuk menukar token yang dapat dibalikkan dengan token yang tidak dapat diubah; untuk melindungi diri dari pembalikan, transaksi hanya dapat diselesaikan setelah periode waktu yang dapat dibalikkan. Ini berarti bahwa swap reversible→irreversible akan mengalami penundaan hingga dana tidak dapat dikembalikan. Jadi setelah dua token utama menjadi reversibel, ada banyak tekanan pada token lain untuk menjadi reversibel juga.
Bergantung pada penerapannya, dimungkinkan untuk segera melikuidasi aset yang telah melewati periode waktu reversibel (misalnya, melikuidasi aset yang Anda terima 3 hari yang lalu). Dalam hal ini, tidak perlu ada penundaan antara token Anda yang dapat dibalik dan tidak dapat diubah.
prinsip bekerja
proses membalikkan transaksi
Misalkan penyerang mencuri dana dari korban. Dana dapat ditransfer lebih lanjut ke alamat lain seperti yang ditunjukkan pada Gambar 1 di bawah ini. Berikut ini akan terjadi:
1. Korban meminta untuk membekukan dana yang dicuri. Korban mengajukan permintaan pembekuan kontrak tata kelola, bersama dengan bukti yang relevan dan sejumlah dana. Transaksi yang dipermasalahkan harus terkini (dengan jangka waktu tetap yang dapat dibalik).
2. Hakim menerima atau menolak permohonan pembekuan. Sekelompok hakim yang terdesentralisasi memberikan suara apakah akan membekukan aset. Waktu musyawarah paling lama satu atau dua hari. Jika mereka menolak permintaan tersebut, proses berhenti dan korban kehilangan dananya. Jika mereka menerima permintaan tersebut, kontrak tata kelola akan membekukan kontrak ERC-20R/ERC-721R.
3. Lakukan pembekuan. Untuk NFT, itu hanya mencegah NFT ditransfer. Untuk ERC-20R, itu akan melacak dana yang dicuri dan melarang transfer dana tersebut. Perlu diketahui bahwa selama saldo pemilik rekening lebih besar dari jumlah yang dibekukan, mereka masih dapat melakukan transaksi dengan orang lain.
4. Penghakiman. Kedua belah pihak kemudian dapat menyerahkan bukti kepada kelompok hakim yang terdesentralisasi. Pada akhirnya, juri membuat keputusan dan kemudian menginstruksikan kontrak tata kelola untuk memanggil fungsi balik atau tolak Balik pada kontrak ERC-20R atau ERC-721R yang terpengaruh. Jika rejectReverse dipanggil, pembekuan pada aset yang disengketakan dicabut. Uji coba bisa berlangsung lama, mungkin berlangsung beberapa minggu.
5. Pembalikan (jika ada). Fungsi sebaliknya mengirimkan aset yang dibekukan kembali ke korban.
Gambar 1 Diagram Contoh Transaksi
Melacak Dana yang Dicuri
Ketika aset dicuri, mereka jarang berada di satu tempat saja. Penyerang sering mentransfernya dari satu akun ke akun lainnya. Dalam kasus ini, penyerang bahkan dapat memantau mempool dan memindahkan aset dalam transaksi yang berjalan di depan saat mereka melihat permintaan pembekuan masuk. Solusi kami untuk menghindari hal ini adalah dengan melakukan pembekuan on-chain penuh (dan perhitungannya) dalam satu transaksi, sehingga penyerang tidak dapat "melewati" pembekuan tersebut.
Tapi kami tidak bisa begitu saja menonaktifkan setiap akun yang menyentuh aset ini, jadi bagaimana kami memutuskan akun mana yang akan dibekukan? Untungnya, dalam kasus NFT, pembekuan sangat sederhana: cari saja siapa yang saat ini memiliki NFT, dan bekukan akun tersebut. Namun, pembagian mata uang membuat pembekuan ERC-20 menjadi lebih rumit. Dana tersebut dapat dibagi di antara lusinan akun, ditransfer ke mixer anonim seperti Tornado, atau ditukar dengan mata uang digital lainnya. Jika melewati banyak akun, setidaknya beberapa di antaranya terkait dengan peretas. Tetapi beberapa akun kemungkinan besar tidak bersalah, atau pedagang menyediakan layanan yang sah dengan imbalan pembayaran. Tidak selalu mungkin untuk mengidentifikasi dengan benar kesalahan dari setiap akun. Oleh karena itu, kami menyediakan prosedur pembekuan default untuk melacak dan mengunci dana yang dicuri. Algoritme kami memastikan:
1. Dengan asumsi tidak ada perusakan, akan ada cukup aset yang dibekukan untuk menebus jumlah yang dicuri. (Aset yang hancur akan dikurangi dari jumlah yang dikembalikan)
2. Dana di rekening hanya akan dibekukan jika ada transaksi langsung dengan pencuri
3. Sejauh menyangkut grafik transaksi, kompleksitas waktu berjalan dari algoritme masuk akal
Kami membahas lebih detail algoritmik di koran .
Sistem Yudisial Terdesentralisasi
Bagian teka-teki yang lebih samar menyangkut "kumpulan hakim yang terdesentralisasi". Siapa para juri ini? Bagaimana mereka memilih? Bagaimana mereka dihargai?
Ini pada akhirnya tergantung pada tata kelola, yang membuat instans ERC-20R/ERC-721R. Dalam makalah kami, kami mengeksplorasi bagaimana mencegah hakim dari ketidakjujuran dan penyuapan, mekanisme penghargaan, dan banyak lagi. Kami menekankan bahwa hakim tidak dapat menambahkan transaksi atau mengubah nilai saldo seseorang secara sewenang-wenang.