Analisis Komprehensif tentang ERC-4626 dan DeFi

Lanjutan2/22/2024, 5:56:11 AM
Artikel ini menganalisis prinsip-prinsip dasar ERC-4626 dan aplikasinya dalam DeFi secara menyeluruh.

01 Apa itu ERC-4626

ERC-4626 adalah sebuah brankas ter-tokenisasi dengan satu token dasar EIP-20.

Pertama-tama, ini adalah proposal berbasis ERC-20 dan sepenuhnya kompatibel dengannya.

Kedua, pahami konsep vault, yang bukanlah sebuah perbendaharaan. Perbendaharaan yang saat ini ada di pasar pada dasarnya adalah dompet kontrak, sebagian besar adalah Gnosis Safe, yang utamanya menyediakan fungsi masuk dan keluar dana yang aman. Tetapi bagi sebuah organisasi, selain dari arus masuk dan keluar dana, arus dana juga dapat menghasilkan pendapatan.

Motivasi dari proposal ini: Kurangnya standar untuk vault ter-tokenisasi telah mengakibatkan berbagai detail implementasi dari banyak vault di pasar, seperti pasar peminjaman, agregator, token yang menghasilkan bunga, dll. Hal ini membuat integrasi agregator dan plugin pada tingkat protokol menjadi sulit, rentan terhadap kesalahan, dan pemborosan sumber daya pengembangan.

Ketika status saat ini dari proposal ini adalah Final, itu berarti itu adalah standar yang relatif stabil.

02 Spesifikasi

Token yang mengikuti ERC-4626 harus sepenuhnya mengimplementasikan ERC-20, yang digunakan untuk mewakili saham. Berikut adalah beberapa konsep sederhana.

  • Aset: Token yang mendasari dikelola oleh vault, mengikuti standar ERC-20.
  • Bagikan: token Vault, juga dikenal sebagai vToken. Ini memiliki hubungan proporsional dengan aset.
  • Biaya: Sejumlah yang dibebankan oleh brankas ketika aset atau saham berubah. Ini bisa berupa deposit, pendapatan, pengelolaan aset, penarikan, dll.
  • Slippage: Perbedaan antara harga deposito dan penarikan saham yang dipublikasikan dan ekonomi aktual. Di bawah ini adalah penjelasan lebih lanjut tentang konsep slippage di bidang DeFi.

Slippage adalah perbedaan antara harga perdagangan yang diharapkan dan harga eksekusi aktual. Slippage terjadi ketika ada penundaan antara menempatkan perdagangan dan mengeksekusinya, dan harga aset yang diperdagangkan berubah.

Sebagai contoh, jika Anda menemukan 20 ETH dan 80 USDT di kolam AMM, harga ETH yang diharapkan adalah 4 USDT/ETH. Namun, jika Anda berencana menghabiskan 20 USDT untuk swap di kolam, Anda hanya akan mendapatkan 4 ETH daripada 5 ETH yang diharapkan, yang berarti Anda mengalami kerugian slippage sebesar 1 USDT/ETH. Harga pembelian aktual Anda akan menjadi 5 USDT, bukan 4 USDT yang diharapkan.

Selip terutama umum terjadi di pasar yang bergerak cepat atau aset dengan volatilitas tinggi, serta aset ekor panjang dengan likuiditas terbatas. Terlepas dari itu, hal ini memiliki dampak signifikan pada kinerja perdagangan dan penting untuk mempertimbangkan selip saat melakukan perdagangan.

03 Analisis Kontrak

Kode kontrak berasal dari perpustakaan kode kontrak pintar OpenZeppelin:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/ERC4626.sol

Kontrak ERC-4626 mewarisi dari ERC-20. Bagian ini tidak akan diringkas. Ini juga merupakan kontrak abstrak itu sendiri. Antarmuka yang harus diterapkan kontrak adalah sebagai berikut:

Antarmuka sangat kaya, sebagian besar relatif sederhana dan dapat dibagi menjadi dua kategori: baca dan tulis.

Menulis

Antarmuka utama untuk menulis data adalah deposit, mint, withdraw, dan redeem.

  • Deposit menentukan jumlah aset dan mentransfernya ke brankas. Ini mencetak saham pada saat yang sama. Anda dapat menggunakan metode previewDeposit untuk melihat terlebih dahulu berapa banyak saham yang dapat dicetak.

  • Penarikan (menarik uang) menentukan jumlah aset yang akan dipindahkan keluar dari brankas, dan membakar saham pada saat yang bersamaan. Anda dapat menggunakan metode previewWithdraw untuk memeriksa sebelumnya berapa banyak saham yang telah dibakar.
  • Mint menggunakan parameter saham. Sebenarnya, metode ini ekuivalen dengan deposit, yang menentukan saham yang dicetak untuk menghitung aset yang perlu disetor. Anda dapat menggunakan metode previewMint untuk memeriksa sebelumnya berapa banyak aset yang akan diambil.
  • Redeem menggunakan parameter saham, yang setara dengan penarikan, menentukan saham yang terbakar untuk menghitung aset yang perlu ditransfer keluar. Anda dapat menggunakan metode previewRedeem untuk memeriksa terlebih dahulu berapa banyak aset yang akan ditukarkan. \

Bahkan, karena adanya slippage, menggunakan metode pratinjau untuk melihat angka yang diharapkan mungkin tidak akurat, yang juga merupakan masalah umum di industri dan dapat menyebabkan beberapa masalah keamanan, yang akan dibahas nanti.

Baca

Beberapa metode pratinjau yang disebutkan sebelumnya, serta convertToShares publik dan convertToAssets, sebenarnya memanggil metode _convertToShares dan _convertToAssets secara internal.

Kedua metode inti ini adalah untuk menghitung hubungan proporsional antara aset dan saham. Variabel yang terlibat termasuk pasokan saham, total aset saat ini, jumlah titik desimal, dan metode pembulatan titik desimal.

Di atas adalah implementasi dasar kontrak abstrak ERC-4626. Kontrak brankas aktual jauh lebih rumit daripada itu.

Untuk kontrak brankas, ada dua fungsi yang relatif penting untuk diimplementasikan. Satu adalah fungsi deposit dan penarikan, konversi aset dan saham; yang lain adalah cara untuk mendapatkan pendapatan, yang akan dijelaskan dengan contoh di bawah ini.

04 Ekologi dan Aplikasi

Sama seperti beberapa EIP populer lainnya, ERC-4626 juga memiliki ekosistem aliansi ( https://erc4626.info/) dikelola oleh personel yang berdedikasi, yang mengumpulkan beberapa protokol pinjaman dan aplikasi yang saat ini ada di pasaran yang kompatibel dengan ERC-4626, dan ada juga berita, perpustakaan sumber terbuka, keamanan, dan informasi lainnya. Jika vault Anda disesuaikan dengan ERC-4626, Anda juga dapat mengirimkan aplikasi di sana.

Di bawah ini kami menganalisis contoh aplikasi, brankas AladdinCRVV2 Aladdin DAOhttps://concentrator.aladdin.club/vaults/Aladdin DAO memiliki banyak kontrak vault, dan ini hanya salah satunya yang lebih aktif.

Laci AladdinCRVV2

The vault earns income by staking cvxCRV tokens.

  • Kontrak brankas adalah kontrak yang dapat ditingkatkan

(https://etherscan.io/address/0x2b95A1Dcc3D405535f9ed33c219ab38E8d7e0884. Dan Anda dapat memeriksanya melalui kode github bahwa versi sebelumnya tidak kompatibel dengan ERC-4626

  • Sebenarnya, ada banyak opsi operasi untuk deposit dan penarikan, yang cukup nyaman dan menghemat gas. Ada terlalu banyak kode, jadi saya tidak akan mempostingnya di sini.
    • Deposit: token cvxCRV akan disetorkan ke vault secara default. Selain itu, ada depositWithCRV, yang nyaman untuk CRV dan juga dapat disetorkan
    • Saat menarik, token cvxCRV akan diambil dan saham akan dibakar secara default. Selain itu, Anda juga dapat melakukan restake sendiri saat menarik, mengonversi cvxCRV menjadi CVX, dan mengonversi cvxCRV menjadi ETH

Di atas adalah analisis dasar dari kontrak vault dengan fungsi yang relatif kaya. Intinya adalah memasang aset untuk mendapatkan bunga. Mengapa ini dirancang seperti ini? Alasan utamanya terletak pada desain kontrak cvxCrvStaking. Deskripsi pendapatan dari memasang cvxCRV adalah “Dengan memasang cvxCRV, Anda akan mendapatkan imbalan biasa dari veCRV (pembagian biaya pengelolaan 3crv dari Curve + setiap airdrop), ditambah bagian dari 10% dari pendapatan CRV yang ditingkatkan dari Convex LPs, dan juga token CVX di atas itu.” Semakin banyak token, semakin besar manfaatnya.

Keamanan

Untuk vault ERC-4626, isu keamanan utama adalah perlindungan terhadap serangan inflasi.

Ketika seorang pengguna mendepositokan token, sesuai dengan formula perhitungan bagi hasil (shares = aset * totalSuplai / totalAset), hasil perhitungannya memiliki titik desimal dan umumnya dibulatkan ke bawah.

Seperti yang Anda lihat dari gambar di bawah, ketika seorang pengguna mendepositkan 500 token dalam aset, jumlah aset yang hilang karena pembulatan desimal bergantung pada nilai tukar (korespondensi antara per saham dan token aset). Jika nilai tukar adalah seperti kurva oranye, kita mendapatkan kurang dari 1 saham dan kehilangan 100%. Namun, jika nilai tukar adalah seperti kurva hijau dan kita mendapatkan 5000 saham, kerugian pembulatan terbatas hingga maksimum 0.02%.

Kemudian jika kita fokus pada membatasi kerugian maksimal hingga 0,5%, kita perlu mengakuisisi setidaknya 200 saham. Tingkat hijau hanya memerlukan 20 token, tetapi tingkat oranye memerlukan 200.000 token.

Melalui beberapa contoh, dapat dianalisis bahwa kurva biru dan hijau lebih aman daripada kurva kuning dan oranye, dan dirancang untuk menjadi brankas yang lebih aman.

Oleh karena itu, metode utama serangan inflasi adalah menggunakan cara tertentu untuk memindahkan kurva tingkat bunga ke kanan, menyebabkan sejumlah kecil deposito kehilangan bagian mereka, sehingga mencapai tujuan serangan.

Metode serangan

Serangan inflasi terutama melalui donasi.

  1. Penyerang pertama-tama menyetor 1 token ke dalam kontrak vault. Pada saat ini, saham yang diperolehnya adalah 1 dan totalSupply adalah 1.
  2. Penyerang mengirim 1e5 token langsung ke kontrak brankas. Pada saat ini, total aset telah berubah menjadi 1e5 + 1, tetapi total pasokan tetap sama.
  3. Ketika korban melakukan deposit kurang dari 1e5 token (x), saham yang diperoleh adalah: x * 1 / (1e5 + 1), dengan kata lain, selama x kurang dari 1e5, sesuai dengan prinsip pembulatan ke bawah angka desimal, saham yang diperoleh korban adalah 0. Bahkan jika token yang didapat lebih dari 1e5, karena saham penyerang sebelumnya adalah 100%, menyebabkan penurunan signifikan dalam saham yang diterima korban.

Membela diri dari serangan

Ada tiga cara untuk mempertahankan diri dari serangan:

  1. Atur slippage. Sebelumnya kami memperkenalkan konsep slippage, dengan mengatur rentang toleransi slippage, jika tidak menerima jumlah yang diharapkan dalam rentang toleransi slippage tertentu, transaksi akan dibalikkan. Ini adalah paradigma standar untuk menangani masalah slippage.
  2. Tambahkan aset awal yang cukup ke brankas untuk meningkatkan biaya serangan. Saya telah melihat metode ini dalam kontrak staking Blast. Saat menginisialisasi staking, kontrak mengharuskan jumlah ETH dan USD tidak kurang dari 1.000.
  3. Tambahkan “likuiditas virtual” ke brankas sehingga perhitungan harga berperilaku seolah-olah ada cukup aset di brankas. Metode pertahanan dibagi menjadi 2 bagian:
    • Offset presisi antara saham dan aset.
    • Menggabungkan saham virtual dan aset virtual ke dalam perhitungan nilai tukar.

Implementasi khusus adalah dengan menulis ulang metode _decimalsOffset() dari kode pustaka standar yang disediakan oleh OpenZeppelin. Metode ini tidak memerlukan pengaturan selip atau menyuntikkan dana awal yang cukup. Ini adalah cara yang sangat baik untuk melawan serangan inflasi.

05 Perpanjangan

Sebagai proposal vault yang relatif dasar, RC-4626 tidak dapat memenuhi semua kebutuhan. Beberapa proposal juga telah menskalakannya, seperti ERC-7535 dan EIP-7540.

ERC-7535

Seperti yang disebutkan sebelumnya, ERC-4626 hanya dapat menggunakan ERC-20 sebagai aset dasar. Proposal ini utamanya memungkinkan aset asli digunakan sebagai aset dasar, seperti ETH di vault.

EIP-7540

Perluasan ini untuk ERC-4626 memperkenalkan dukungan untuk proses deposit dan penarikan asinkron (yang disebut 'permintaan'). Ini mencakup metode baru untuk memulai dan memeriksa status dari permintaan ini. Metode yang sudah ada dari ERC-4626, seperti deposit, mint, withdraw, dan redeem, digunakan untuk mengeksekusi permintaan yang dapat diklaim. Tergantung pada pihak yang mengimplementasikan untuk menambahkan proses asinkron untuk deposit, penarikan, atau keduanya.

Potensi kasus penggunaan:

  1. Proses deposit dan penebusan asinkron: Dengan memperkenalkan konsep "permintaan", proses deposit dan penebusan asinkron dapat direalisasikan, memberikan metode operasi yang lebih fleksibel.
  2. Peningkatan pengalaman pengguna: Proposal ini menekankan pentingnya pengalaman pengguna dan merekomendasikan pengenalan mekanisme penemuan standar untuk membantu pengguna dan aplikasi front-end lebih memahami durasi dan latensi dari operasi asinkron.
  3. Perluasan fungsional: EIP-7540 memperluas fungsionalitas ERC-4626 dengan menambahkan metode-metode baru, sehingga memungkinkan untuk meminta deposit dan redempsi secara asinkron, dan melihat status permintaan tersebut.

06 Ringkasan

Di atas adalah analisis lengkap dari ERC-4626.

Berdasarkan alasan historis, banyak vault saat ini di pasar tidak mematuhi ERC-4626 dan terus beroperasi, seperti dForce, tetapi mereka tidak dapat diterapkan secara lebih luas. Beberapa vault sudah ditingkatkan untuk mematuhi ERC-4626, seperti beberapa kontrak dari Aladdin DAO (.https://github.com/AladdinDAO/deployments/blob/main/deployments.mainnet.md).

Selain mendapatkan bunga melalui staking, aplikasi vault juga dapat meminjamkan saham sebagai jaminan atau meng-stake mereka lagi untuk menghasilkan pendapatan. Selain itu, penggalangan dana melalui vault juga merupakan skenario aplikasi yang baik, karena beberapa fungsi dasarnya dapat memberikan dukungan yang sangat baik.

Essensi dari proposal ini adalah untuk meningkatkan efisiensi integrasi antara vault dan ekosistem DeFi, serta mengurangi biaya pengembangan. Peran dari vault itu sendiri masih memiliki lebih banyak ruang untuk eksplorasi seiring berkembangnya pasar DeFi.

Disclaimer:

  1. Artikel ini diambil dari [ LXDAO], Semua hak cipta milik penulis asli [Kahn]. Jika ada keberatan terhadap cetakan ulang ini, harap hubungi Pintu Belajartim, dan mereka akan menanganinya dengan cepat.
  2. Penolakan Tanggung Jawab: Pandangan dan opini yang diungkapkan dalam artikel ini semata-mata milik penulis dan tidak merupakan saran investasi apa pun.
  3. Terjemahan artikel ke dalam bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang diterjemahkan dilarang.

Analisis Komprehensif tentang ERC-4626 dan DeFi

Lanjutan2/22/2024, 5:56:11 AM
Artikel ini menganalisis prinsip-prinsip dasar ERC-4626 dan aplikasinya dalam DeFi secara menyeluruh.

01 Apa itu ERC-4626

ERC-4626 adalah sebuah brankas ter-tokenisasi dengan satu token dasar EIP-20.

Pertama-tama, ini adalah proposal berbasis ERC-20 dan sepenuhnya kompatibel dengannya.

Kedua, pahami konsep vault, yang bukanlah sebuah perbendaharaan. Perbendaharaan yang saat ini ada di pasar pada dasarnya adalah dompet kontrak, sebagian besar adalah Gnosis Safe, yang utamanya menyediakan fungsi masuk dan keluar dana yang aman. Tetapi bagi sebuah organisasi, selain dari arus masuk dan keluar dana, arus dana juga dapat menghasilkan pendapatan.

Motivasi dari proposal ini: Kurangnya standar untuk vault ter-tokenisasi telah mengakibatkan berbagai detail implementasi dari banyak vault di pasar, seperti pasar peminjaman, agregator, token yang menghasilkan bunga, dll. Hal ini membuat integrasi agregator dan plugin pada tingkat protokol menjadi sulit, rentan terhadap kesalahan, dan pemborosan sumber daya pengembangan.

Ketika status saat ini dari proposal ini adalah Final, itu berarti itu adalah standar yang relatif stabil.

02 Spesifikasi

Token yang mengikuti ERC-4626 harus sepenuhnya mengimplementasikan ERC-20, yang digunakan untuk mewakili saham. Berikut adalah beberapa konsep sederhana.

  • Aset: Token yang mendasari dikelola oleh vault, mengikuti standar ERC-20.
  • Bagikan: token Vault, juga dikenal sebagai vToken. Ini memiliki hubungan proporsional dengan aset.
  • Biaya: Sejumlah yang dibebankan oleh brankas ketika aset atau saham berubah. Ini bisa berupa deposit, pendapatan, pengelolaan aset, penarikan, dll.
  • Slippage: Perbedaan antara harga deposito dan penarikan saham yang dipublikasikan dan ekonomi aktual. Di bawah ini adalah penjelasan lebih lanjut tentang konsep slippage di bidang DeFi.

Slippage adalah perbedaan antara harga perdagangan yang diharapkan dan harga eksekusi aktual. Slippage terjadi ketika ada penundaan antara menempatkan perdagangan dan mengeksekusinya, dan harga aset yang diperdagangkan berubah.

Sebagai contoh, jika Anda menemukan 20 ETH dan 80 USDT di kolam AMM, harga ETH yang diharapkan adalah 4 USDT/ETH. Namun, jika Anda berencana menghabiskan 20 USDT untuk swap di kolam, Anda hanya akan mendapatkan 4 ETH daripada 5 ETH yang diharapkan, yang berarti Anda mengalami kerugian slippage sebesar 1 USDT/ETH. Harga pembelian aktual Anda akan menjadi 5 USDT, bukan 4 USDT yang diharapkan.

Selip terutama umum terjadi di pasar yang bergerak cepat atau aset dengan volatilitas tinggi, serta aset ekor panjang dengan likuiditas terbatas. Terlepas dari itu, hal ini memiliki dampak signifikan pada kinerja perdagangan dan penting untuk mempertimbangkan selip saat melakukan perdagangan.

03 Analisis Kontrak

Kode kontrak berasal dari perpustakaan kode kontrak pintar OpenZeppelin:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/ERC4626.sol

Kontrak ERC-4626 mewarisi dari ERC-20. Bagian ini tidak akan diringkas. Ini juga merupakan kontrak abstrak itu sendiri. Antarmuka yang harus diterapkan kontrak adalah sebagai berikut:

Antarmuka sangat kaya, sebagian besar relatif sederhana dan dapat dibagi menjadi dua kategori: baca dan tulis.

Menulis

Antarmuka utama untuk menulis data adalah deposit, mint, withdraw, dan redeem.

  • Deposit menentukan jumlah aset dan mentransfernya ke brankas. Ini mencetak saham pada saat yang sama. Anda dapat menggunakan metode previewDeposit untuk melihat terlebih dahulu berapa banyak saham yang dapat dicetak.

  • Penarikan (menarik uang) menentukan jumlah aset yang akan dipindahkan keluar dari brankas, dan membakar saham pada saat yang bersamaan. Anda dapat menggunakan metode previewWithdraw untuk memeriksa sebelumnya berapa banyak saham yang telah dibakar.
  • Mint menggunakan parameter saham. Sebenarnya, metode ini ekuivalen dengan deposit, yang menentukan saham yang dicetak untuk menghitung aset yang perlu disetor. Anda dapat menggunakan metode previewMint untuk memeriksa sebelumnya berapa banyak aset yang akan diambil.
  • Redeem menggunakan parameter saham, yang setara dengan penarikan, menentukan saham yang terbakar untuk menghitung aset yang perlu ditransfer keluar. Anda dapat menggunakan metode previewRedeem untuk memeriksa terlebih dahulu berapa banyak aset yang akan ditukarkan. \

Bahkan, karena adanya slippage, menggunakan metode pratinjau untuk melihat angka yang diharapkan mungkin tidak akurat, yang juga merupakan masalah umum di industri dan dapat menyebabkan beberapa masalah keamanan, yang akan dibahas nanti.

Baca

Beberapa metode pratinjau yang disebutkan sebelumnya, serta convertToShares publik dan convertToAssets, sebenarnya memanggil metode _convertToShares dan _convertToAssets secara internal.

Kedua metode inti ini adalah untuk menghitung hubungan proporsional antara aset dan saham. Variabel yang terlibat termasuk pasokan saham, total aset saat ini, jumlah titik desimal, dan metode pembulatan titik desimal.

Di atas adalah implementasi dasar kontrak abstrak ERC-4626. Kontrak brankas aktual jauh lebih rumit daripada itu.

Untuk kontrak brankas, ada dua fungsi yang relatif penting untuk diimplementasikan. Satu adalah fungsi deposit dan penarikan, konversi aset dan saham; yang lain adalah cara untuk mendapatkan pendapatan, yang akan dijelaskan dengan contoh di bawah ini.

04 Ekologi dan Aplikasi

Sama seperti beberapa EIP populer lainnya, ERC-4626 juga memiliki ekosistem aliansi ( https://erc4626.info/) dikelola oleh personel yang berdedikasi, yang mengumpulkan beberapa protokol pinjaman dan aplikasi yang saat ini ada di pasaran yang kompatibel dengan ERC-4626, dan ada juga berita, perpustakaan sumber terbuka, keamanan, dan informasi lainnya. Jika vault Anda disesuaikan dengan ERC-4626, Anda juga dapat mengirimkan aplikasi di sana.

Di bawah ini kami menganalisis contoh aplikasi, brankas AladdinCRVV2 Aladdin DAOhttps://concentrator.aladdin.club/vaults/Aladdin DAO memiliki banyak kontrak vault, dan ini hanya salah satunya yang lebih aktif.

Laci AladdinCRVV2

The vault earns income by staking cvxCRV tokens.

  • Kontrak brankas adalah kontrak yang dapat ditingkatkan

(https://etherscan.io/address/0x2b95A1Dcc3D405535f9ed33c219ab38E8d7e0884. Dan Anda dapat memeriksanya melalui kode github bahwa versi sebelumnya tidak kompatibel dengan ERC-4626

  • Sebenarnya, ada banyak opsi operasi untuk deposit dan penarikan, yang cukup nyaman dan menghemat gas. Ada terlalu banyak kode, jadi saya tidak akan mempostingnya di sini.
    • Deposit: token cvxCRV akan disetorkan ke vault secara default. Selain itu, ada depositWithCRV, yang nyaman untuk CRV dan juga dapat disetorkan
    • Saat menarik, token cvxCRV akan diambil dan saham akan dibakar secara default. Selain itu, Anda juga dapat melakukan restake sendiri saat menarik, mengonversi cvxCRV menjadi CVX, dan mengonversi cvxCRV menjadi ETH

Di atas adalah analisis dasar dari kontrak vault dengan fungsi yang relatif kaya. Intinya adalah memasang aset untuk mendapatkan bunga. Mengapa ini dirancang seperti ini? Alasan utamanya terletak pada desain kontrak cvxCrvStaking. Deskripsi pendapatan dari memasang cvxCRV adalah “Dengan memasang cvxCRV, Anda akan mendapatkan imbalan biasa dari veCRV (pembagian biaya pengelolaan 3crv dari Curve + setiap airdrop), ditambah bagian dari 10% dari pendapatan CRV yang ditingkatkan dari Convex LPs, dan juga token CVX di atas itu.” Semakin banyak token, semakin besar manfaatnya.

Keamanan

Untuk vault ERC-4626, isu keamanan utama adalah perlindungan terhadap serangan inflasi.

Ketika seorang pengguna mendepositokan token, sesuai dengan formula perhitungan bagi hasil (shares = aset * totalSuplai / totalAset), hasil perhitungannya memiliki titik desimal dan umumnya dibulatkan ke bawah.

Seperti yang Anda lihat dari gambar di bawah, ketika seorang pengguna mendepositkan 500 token dalam aset, jumlah aset yang hilang karena pembulatan desimal bergantung pada nilai tukar (korespondensi antara per saham dan token aset). Jika nilai tukar adalah seperti kurva oranye, kita mendapatkan kurang dari 1 saham dan kehilangan 100%. Namun, jika nilai tukar adalah seperti kurva hijau dan kita mendapatkan 5000 saham, kerugian pembulatan terbatas hingga maksimum 0.02%.

Kemudian jika kita fokus pada membatasi kerugian maksimal hingga 0,5%, kita perlu mengakuisisi setidaknya 200 saham. Tingkat hijau hanya memerlukan 20 token, tetapi tingkat oranye memerlukan 200.000 token.

Melalui beberapa contoh, dapat dianalisis bahwa kurva biru dan hijau lebih aman daripada kurva kuning dan oranye, dan dirancang untuk menjadi brankas yang lebih aman.

Oleh karena itu, metode utama serangan inflasi adalah menggunakan cara tertentu untuk memindahkan kurva tingkat bunga ke kanan, menyebabkan sejumlah kecil deposito kehilangan bagian mereka, sehingga mencapai tujuan serangan.

Metode serangan

Serangan inflasi terutama melalui donasi.

  1. Penyerang pertama-tama menyetor 1 token ke dalam kontrak vault. Pada saat ini, saham yang diperolehnya adalah 1 dan totalSupply adalah 1.
  2. Penyerang mengirim 1e5 token langsung ke kontrak brankas. Pada saat ini, total aset telah berubah menjadi 1e5 + 1, tetapi total pasokan tetap sama.
  3. Ketika korban melakukan deposit kurang dari 1e5 token (x), saham yang diperoleh adalah: x * 1 / (1e5 + 1), dengan kata lain, selama x kurang dari 1e5, sesuai dengan prinsip pembulatan ke bawah angka desimal, saham yang diperoleh korban adalah 0. Bahkan jika token yang didapat lebih dari 1e5, karena saham penyerang sebelumnya adalah 100%, menyebabkan penurunan signifikan dalam saham yang diterima korban.

Membela diri dari serangan

Ada tiga cara untuk mempertahankan diri dari serangan:

  1. Atur slippage. Sebelumnya kami memperkenalkan konsep slippage, dengan mengatur rentang toleransi slippage, jika tidak menerima jumlah yang diharapkan dalam rentang toleransi slippage tertentu, transaksi akan dibalikkan. Ini adalah paradigma standar untuk menangani masalah slippage.
  2. Tambahkan aset awal yang cukup ke brankas untuk meningkatkan biaya serangan. Saya telah melihat metode ini dalam kontrak staking Blast. Saat menginisialisasi staking, kontrak mengharuskan jumlah ETH dan USD tidak kurang dari 1.000.
  3. Tambahkan “likuiditas virtual” ke brankas sehingga perhitungan harga berperilaku seolah-olah ada cukup aset di brankas. Metode pertahanan dibagi menjadi 2 bagian:
    • Offset presisi antara saham dan aset.
    • Menggabungkan saham virtual dan aset virtual ke dalam perhitungan nilai tukar.

Implementasi khusus adalah dengan menulis ulang metode _decimalsOffset() dari kode pustaka standar yang disediakan oleh OpenZeppelin. Metode ini tidak memerlukan pengaturan selip atau menyuntikkan dana awal yang cukup. Ini adalah cara yang sangat baik untuk melawan serangan inflasi.

05 Perpanjangan

Sebagai proposal vault yang relatif dasar, RC-4626 tidak dapat memenuhi semua kebutuhan. Beberapa proposal juga telah menskalakannya, seperti ERC-7535 dan EIP-7540.

ERC-7535

Seperti yang disebutkan sebelumnya, ERC-4626 hanya dapat menggunakan ERC-20 sebagai aset dasar. Proposal ini utamanya memungkinkan aset asli digunakan sebagai aset dasar, seperti ETH di vault.

EIP-7540

Perluasan ini untuk ERC-4626 memperkenalkan dukungan untuk proses deposit dan penarikan asinkron (yang disebut 'permintaan'). Ini mencakup metode baru untuk memulai dan memeriksa status dari permintaan ini. Metode yang sudah ada dari ERC-4626, seperti deposit, mint, withdraw, dan redeem, digunakan untuk mengeksekusi permintaan yang dapat diklaim. Tergantung pada pihak yang mengimplementasikan untuk menambahkan proses asinkron untuk deposit, penarikan, atau keduanya.

Potensi kasus penggunaan:

  1. Proses deposit dan penebusan asinkron: Dengan memperkenalkan konsep "permintaan", proses deposit dan penebusan asinkron dapat direalisasikan, memberikan metode operasi yang lebih fleksibel.
  2. Peningkatan pengalaman pengguna: Proposal ini menekankan pentingnya pengalaman pengguna dan merekomendasikan pengenalan mekanisme penemuan standar untuk membantu pengguna dan aplikasi front-end lebih memahami durasi dan latensi dari operasi asinkron.
  3. Perluasan fungsional: EIP-7540 memperluas fungsionalitas ERC-4626 dengan menambahkan metode-metode baru, sehingga memungkinkan untuk meminta deposit dan redempsi secara asinkron, dan melihat status permintaan tersebut.

06 Ringkasan

Di atas adalah analisis lengkap dari ERC-4626.

Berdasarkan alasan historis, banyak vault saat ini di pasar tidak mematuhi ERC-4626 dan terus beroperasi, seperti dForce, tetapi mereka tidak dapat diterapkan secara lebih luas. Beberapa vault sudah ditingkatkan untuk mematuhi ERC-4626, seperti beberapa kontrak dari Aladdin DAO (.https://github.com/AladdinDAO/deployments/blob/main/deployments.mainnet.md).

Selain mendapatkan bunga melalui staking, aplikasi vault juga dapat meminjamkan saham sebagai jaminan atau meng-stake mereka lagi untuk menghasilkan pendapatan. Selain itu, penggalangan dana melalui vault juga merupakan skenario aplikasi yang baik, karena beberapa fungsi dasarnya dapat memberikan dukungan yang sangat baik.

Essensi dari proposal ini adalah untuk meningkatkan efisiensi integrasi antara vault dan ekosistem DeFi, serta mengurangi biaya pengembangan. Peran dari vault itu sendiri masih memiliki lebih banyak ruang untuk eksplorasi seiring berkembangnya pasar DeFi.

Disclaimer:

  1. Artikel ini diambil dari [ LXDAO], Semua hak cipta milik penulis asli [Kahn]. Jika ada keberatan terhadap cetakan ulang ini, harap hubungi Pintu Belajartim, dan mereka akan menanganinya dengan cepat.
  2. Penolakan Tanggung Jawab: Pandangan dan opini yang diungkapkan dalam artikel ini semata-mata milik penulis dan tidak merupakan saran investasi apa pun.
  3. Terjemahan artikel ke dalam bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang diterjemahkan dilarang.
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!