💻 Integrasi Dengan Alpaca Finance
Integrasi Dengan Alpaca Finance
Alpaca Finance membolehkan aplikasi DeFi dan pengguna akhir berintegrasi dengan protokol utamanya. Sebagai contoh mudah, pembangun web dapat membina protokol kompaun automatik yang memasukkan dana pengguna ke peti simpanan Alpaca Finance dan mengumpulkan hasil bagi pengguna untuk kecekapan dan kemudahan gas. Tujuan dokumen ini adalah untuk membantu pemaju menyatukan dengan protokol kami untuk memastikan keselamatan keseluruhan ekosistem.
Sekiranya anda ingin lebih memahami tentang protokol kami, anda boleh menyemak dokumentasi kontrak kami di sini.
Integrasi dengan Alpaca API memerlukan pengesahan, jadi sila hubungi kami di request@alpacafinance.org jika anda ingin menggunakan perkhidmatan ini.
Integrasi Smart Kontrak
Bahagian ini menerangkan cara mengintegrasikan dengan Alpaca Finance secara langsung dari smart kontrak.
Pinjaman
Alpaca Finance membolehkan pengguna memperoleh pendapatan faedah atas aset crypto dengan memasukkannya ke dalam simpanan kami. Aset-aset ini kemudian ditawarkan kepada para farmers untuk leveraged posisi mereka. Sebarang smart kontrak yang sesuai dengan EVM dan digunakan pada BNB Chain boleh berintegrasi dengan protokol pinjaman Alpaca Finance.
Untuk memasukkan token asas ke peti besi Alpaca Finance, senarai peti besi yang tersedia dan token asas yang sesuai harus diperoleh terlebih dahulu.
Sila lihat di sini untuk senarai terperinci semua alamat kontrak peti besi.
Sebelum deposit dapat didepositkan ke peti besi, kontrak pintar yang bertindak sebagai pendeposit mesti terlebih dahulu menyetujui elaun perbelanjaan token asas yang akan didepositkan. Ini akan memberikan Smart Kontrak Alpaca keupayaan untuk mendapatkan token dari pengirim.
Di atas coretan kod JavaScript adalah aliran kerja yang disederhanakan mengenai cara meluluskan elaun perbelanjaan token dengan jumlah maksimum yang mungkin. Harap diperhatikan bahawa menggunakan MaxUint256
dapat menimbulkan risiko keamanan, disarankan menggunakan jumlah token yang tepat oleh pengguna.
Melakukan deposit dilakukan dengan memanggil kaedah deposit
dan menentukan jumlah deposit dalam parameter amountToken
. Jenis data amountToken
adalah uint256
dan parameter ini mesti diformat hingga perpuluhan token deposit (contohnya, BNB menggunakan 18 perpuluhan, 1 BNB = 10000000000000000000
atau 1 * 1e18
). Untuk kes di mana token deposit adalah BNB, peti besi akan menangani pembungkus BNB menjadi wBNB, tetapi urus niaga mesti memasukkan cukup banyak BNB yang dikirim sebagai token asli.
Sekiranya deposit berjaya, peti besi akan mengeluarkan token faedah (ibTokens) dan mengembalikan token yang dicetak itu kepada pemanggil. Harap maklum bahawa jumlah token faedah yang dikembalikan tidak akan sama dengan jumlah token asas yang dibekalkan kerana reka bentuk token faedah. Pemanggil kaedah deposit
mesti betul-betul mengawasi saham pengguna untuk simpanan di peti besi, sila lihat bahagian Pengiraan Token Bearing Faedah untuk penjelasan terperinci.
Faedah daripada pinjaman akan dikenakan kepada ibTokens. Untuk merealisasikan keuntungan dari pinjaman, ibTokens mesti ditarik balik, menebus kembali token asas + faedah yang dikumpulkan. Anda akan melihat bahawa harga pertukaran ibToken akan lebih tinggi semasa pengeluaran, yang menunjukkan bahawa bunga telah meningkat. Oleh itu, anda akan menerima token asas tambahan semasa mengeluarkannya.
Untuk menebus token asas dari peti besi, jumlah ibTokens yang akan dikeluarkan mesti diberikan kepada kaedah withdraw
dalam kontrak Vault
.
Token asas kemudian akan dikembalikan kepada pemanggil. Sekiranya token yang dikembalikan adalah BNB, kontrak Vault akan melepaskan WBNB kembali ke BNB.
Pengiraan Token Bearing Faedah
Token Bearing Faedah (ibToken) adalah token yang mewakili bahagian peti deposit pendeposit. ibTokens akan memperoleh faedah yang diterima daripada pinjaman dari masa ke masa. Mana-mana protokol DeFi yang ingin menggunakan peti besi Alpaca Finance harus memahami dan melaksanakan pengiraan ibTokens dengan betul untuk mencerminkan bahagian peti besi pengguna yang sebenarnya.
Oleh itu, nisbah antara ibToken dan token asas sebenar hanya akan menjadi 1: 1 apabila peti besi pertama kali dibuka, selepas itu nilai ibToken akan terus meningkat apabila faedah pinjaman bertambah (Nilai ibToken berbanding token asas hanya akan bergerak satu arah ke atas. Nilai tidak boleh menurun). Sebagai contoh, mari kita anggap harganya: 1 ibBNB = 1.0292 BNB
yang bermaksud deposit 1.0292 BNB akan mendapat 1 ibBNB sebagai balasan. Sebaliknya, menebus 1 ibBNB akan mendapat 1.0292 BNB sebagai balasannya. Tambahan BNB dari menebus ibBNB adalah dari faedah terakru.
Memahami mekanisme asas nilai ibTokens ini sangat penting, kerana protokol DeFi yang berintegrasi dengan peti simpanan pinjaman Alpaca Finance mungkin perlu mengira bahagian simpanan simpanan peti simpanan pengguna dengan tepat. Kegagalan berbuat demikian boleh menyebabkan risiko keselamatan dan kerugian kewangan. Ini berlaku untuk serangan terhadap bEarn.fi dan ValueDeFi di mana protokol ini selalu menganggap ibTokens mempunyai nisbah 1: 1 dengan token yang mendasari (baca analisis serangan terhadap bEarn.fi dan ValueDefi).
Sebagai tambahan, walaupun Alpaca tidak berfungsi dengan pinjaman kilat, dalam peti besi luaran yang bukan dipunyai oleh Alpaca, mungkin ada risiko manipulasi harga ibToken dari serangan seperti serangan pinjaman kilat. Sekiranya tidak disiapkan, harga ibToken dapat diubah secara drastik dalam ruang lingkup transaksi penyerang. Itulah sebabnya, bergantung pada harga ibToken dari pengiraan kontrak pintar sahaja tidak mencukupi. Kami mengesyorkan agar projek mempunyai harga yang memberi nilai nisbah ibTokens berbanding token asasnya untuk mengelakkan serangan seperti yang disebutkan di atas.
Oleh itu, kami akan menunjukkan cara paling selamat dan betul untuk mengira harga ibTokens.
Pengiraan langsung dari kontrak pintar
Mengira harga token ibToken dari smart kontrak adalah kaedah paling mudah, tetapi untuk ketahanan, ia bukan satu-satunya kaedah yang anda andalkan.
Coretan kod di atas menunjukkan pengiraan harga ibToken dengan mengambil nilai totalToken
dan totalSupply
dari peti besi yang sesuai.
Mengambil harga ibToken dari Alpaca API
Alpaca Finance telah menyediakan API untuk mengambil harga ibToken semasa dengan menghantar permintaan GET
REST ke titik akhir / ibTokens
untuk mendapatkan harga ibToken apa pun. Integrasi dengan Alpaca API memerlukan pengesahan, jadi sila hubungi kami di request@alpacafinance.org jika anda ingin menggunakan perkhidmatan ini.
Hasil sampel dari API adalah seperti berikut:
Harga yang diambil dari Alpaca API harus diberikan kepada smart kontrak dengan menggunakan harga. Membekalkan harga melalui input ke panggilan smart kontrak akan rentan terhadap serangan suntikan dari klien. Kami sangat menyarankan agar tidak melakukan perkara itu. Contoh oracle harga sederhana dapat dilihat di sini. Dengan menggunakan oracle harga yang dipercayai, anda dapat memastikan integriti dan kebolehpercayaan data harga ibToken.
Kami sangat mengesyorkan mengambil harga ibToken dari pengiraan smart kontrak dan Alpaca API. Kedua sumber data harga ini harus dibandingkan untuk mengelakkan kemungkinan timbulnya anomali data. Sekiranya perbandingan antara kedua sumber berbeza dengan ketara, data harga harus ditolak.
Ringkasnya, proses yang paling selamat untuk mengira harga ibToken adalah seperti berikut:
Hitung harga ibToken dalam kontrak anda sendiri.
Gunakan oracle di luar rantai untuk harga ibToken atau tarik harga tersebut dari Alpaca's API.
Bandingkan 1 dan 2. Sekiranya perbezaannya lebih daripada n% maka kembalikan transaksi.
API Alpaca pada masa ini hanya disenarai putih untuk protokol dan institusi. Untuk meminta akses, sila e-mel kepada kami di request@alpacafinance.org
Staking
Alpaca Finance memberi peluang kepada pengguna. Token yang menarik dan token LP terpilih tersedia untuk stake di kumpulan stake kami untuk menerima hasil tambahan dalam bentuk token ALPACA. Sekiranya anda telah menyimpan dana dan menerima ibTokens, kami mengesyorkan anda memasukkan token tersebut ke dalam kumpulan ini untuk mendapatkan ganjaran maksimum yang ada.
Untuk stake token ke dalam kumpulan staking Alpaca Finance, senarai kumpulan dan token taruhan yang sesuai harus diperoleh terlebih dahulu. Sila lihat di sini untuk senarai secara mendalam semua alamat kontrak kumpulan. Kontrak kumpulan biasanya disebut Fairlaunch
di pangkalan data kami.
Melakukan pemerolehan dilakukan dengan memanggil kaedah deposit
. Parameternya adalah seperti berikut:
_for
alamat pendeposit._pid
adalah id kolam bertaruh._amount
adalah jumlah token yang akan disimpan dalamuint256
dinyatakan dalam perpuluhannya (contohnya, ibBNB menggunakan 18 perpuluhan, 1 ibBNB =1000000000000000000
0 atau1 * 1e18
)
Maklumat bahagian staking akan disimpan dalam keadaan smart kontrak. Tidak akan ada token yang dikeluarkan dari staking. Bahagian pengguna boleh diambil dengan memanggil kaedah userInfo
dari kontrak Fairlaunch
.
Ganjaran daripada staking tidak dikreditkan secara automatik dan mesti dituaikan secara manual. Walau bagaimanapun, melakukan deposit atau pengeluaran di staking pool akan secara automatik menuai sebarang ganjaran yang belum selesai kepada pemanggil. Untuk menuai ganjaran dari kumpulan simpanan, pemanggil mesti memanggil kaedah harvest
dari kontrak Fairlaunch
dan memberikan pool id.
Untuk mengeluarkan token staking dari pool, jumlah bahagian pengguna mesti diberikan kepada kaedah withdraw
dalam kontrak Fairlaunch
.
Token staking akan dikembalikan kepada pemanggil dan sebarang ganjaran yang belum selesai juga akan dituai secara automatik.
Persekitaran Testnet
Sebelum pementasan dan penyebaran pengeluaran di Mainnet, kontrak Alpaca Finance mula-mula digunakan di Testnet of BNB Chain. Kontrak Testnet ini terutama dirancang untuk digunakan untuk ujian dalaman untuk pengembangan Alpaca Finance sahaja.
Walau bagaimanapun, kami terbuka kepada pihak ketiga yang berminat untuk menguji integrasi mereka dengan kontrak kami. Token yang digunakan oleh kontrak Testnet dibuat secara dalaman oleh kami. Sekiranya anda ingin memiliki beberapa token ini untuk tujuan ujian, sila hubungi request@alpacafinance.org. Untuk senarai alamat di Testnet, sila lihat di sini.
Last updated