💻Berintegrasi dengan Alpaca Finance
Berintegrasi Dengan Alpaca Finance
Alpaca Finance memungkinkan aplikasi DeFi dan pengguna untuk berintegrasi dengan protokol intinya. Sebagai contoh sederhana, pengembang dapat membangun protokol auto-compounding yang menyetor dana pengguna ke brankas penyimpanan Alpaca Finance dan meng-coumpound bunga bagi pengguna untuk efisiensi dan kenyamanan gas. Tujuan dari dokumen ini adalah untuk membantu pengembang dalam mengintegrasikan dengan protokol kami untuk memastikan keamanan keseluruhan ekosistem.
Jika Anda ingin memahami terlebih dahulu protokol kami, Anda dapat meninjau dokumentasi kontrak kami di sini.
The integration with Alpaca API requires authentication, so please reach out to us Integrasi dengan API Alpaca memerlukan otentikasi, jadi silakan hubungi kami di request@alpacafinance.org jika Anda ingin menggunakan layanan ini.
Integrasi Smart Contract
Bagian ini mendeskripsikan bagaimana caranya berintegrasi langsung dengan Alpaca Finance dari smart contract.
Pemberian Pinjaman (Lending)
Alpaca Finance memungkinkan pengguna untuk memperoleh pendapatan bunga atas aset kripto dengan menyetorkannya ke brankas deposit kami. Aset-aset ini kemudian ditawarkan kepada yield farmer untuk melakukan leverage pada posisi mereka. Smart contract apa pun yang kompatibel dengan EVM dan digunakan di BNB Chain dapat berintegrasi dengan protokol pinjaman Alpaca Finance.
Untuk menyimpan token dasar ke brankas Alpaca Finance, daftar brankas yang tersedia dan token dasar yang sesuai harus diperoleh terlebih dahulu.
Silakan lihat di sini untuk list detail brankas alamat kontrak
Sebelum penyetoran ke brankas, smart contract yang bertindak sebagai penyimpan harus terlebih dahulu menyetujui pengeluaran tunjangan token dasar yang akan disetorkan. Ini akan memberikan Smart Contract Alpaca kemampuan untuk mendapatkan token dari pengirim
Cuplikan kode JavaScript di atas adalah alur kerja yang disederhanakan tentang cara menyetujui tunjangan pengeluaran token dengan jumlah maksimum yang memungkinkan. Harap dicatat bahwa menggunaka MaxUint256
dapat menimbulkan risiko keamanan, disarankan menggunakan input jumlah token yang tepat oleh pengguna.
Melakukan deposit dilakukan dengan memanggil metode deposit
dan menentukan jumlah deposit dalam parameter amountToken.
Tipe data amountToken
adalah uint256
dan parameter ini harus diformat ke desimal dari token deposit (misalnya, BNB menggunakan 18 desimal, 1 BNB = 10000000000000000000
atau 1 * 1e18
). Untuk kasus di mana token setoran adalah BNB, brangkas akan menangani wrapping BNB ke dalam wBNB, tetapi transaksi harus menyertakan cukup BNB yang dikirim sebagai token asli.
Jika setoran berhasil, brankas akan mint token berbunga (ibTokens) dan mengembalikan token yang dimint itu kembali ke pemanggil. Harap dicatat bahwa jumlah token berbunga yang dikembalikan tidak akan sama dengan jumlah token dasar yang diberikan karena desain token berbunga. Pemanggil metodedeposit
harus melacak dengan benar saham pengguna untuk deposit di brankas, silakan lihat bagian Perhitungan Token Berbunga untuk penjelasan rinci.
Bunga dari pinjaman akan bertambah ke ibTokens. Untuk merealisasikan keuntungan dari pinjaman, ibTokens harus ditarik, menebus kembali token dasar + bunga yang dikumpulkan. Anda akan melihat bahwa harga pertukaran ibToken akan lebih tinggi saat penarikan, yang menunjukkan bahwa bunga telah diperoleh. Oleh karena itu, Anda akan menerima token dasar tambahan saat melakukan penarikan.
Untuk menebus token dasar dari brankas, jumlah ibToken yang akan ditarik harus disuplai ke metode withdraw
dalam kontrakVault.
Token dasar kemudian akan dikembalikan ke pemanggil. Jika token yang dikembalikan adalah BNB, kontrak Vault akan membuka kembali WBNB ke dalam BNB.
Perhitungan Token Berbunga
Token Berbunga (ibToken) adalah token yang mewakili bagian brankas depositor. ibTokens akan memperoleh bunga yang diterima dari pinjaman dari waktu ke waktu. Setiap protokol DeFi yang ingin menggunakan brankas Alpaca Finance harus memahami dan menerapkan perhitungan ibTokens dengan benar untuk mencerminkan bagian pengguna yang sebenarnya dari brankas.
Oleh karena itu, rasio antara ibToken dan token dasar aktual hanya akan menjadi 1:1 saat brankas pertama kali dibuka, setelah itu nilai ibToken akan terus meningkat seiring dengan bertambahnya bunga pinjaman (Nilai ibToken relatif terhadap token dasar hanya akan bergerak satu arah ke atas. Nilai tidak dapat berkurang). Sebagai contoh, mari kita asumsikan harga: 1 ibBNB = 1.0292 BNB
yang berarti deposit 1,0292 BNB akan mendapatkan 1 ibBNB sebagai imbalannya. Di sisi lain, menukarkan 1 ibBNB akan mendapatkan 1,0292 BNB sebagai imbalannya. BNB tambahan dari penukaran ibBNB berasal dari bunga yang masih harus dibayar.
Memahami satu mekanisme dasar nilai ibTokens ini sangat penting, karena protokol DeFi yang terintegrasi dengan brankas pinjaman Alpaca Finance mungkin perlu menghitung secara akurat bagian pengguna di deposit brankas. Jika terjadi kegagalan dapat menimbulkan risiko keamanan dan kerugian finansial. Ini adalah kasus serangan terhadap bEarn.fi dan ValueDeFi di mana protokol ini selalu memperlakukan ibTokens sebagai rasio 1:1 dengan token yang mendasarinya (baca analisis serangan terhadap bEarn.fi dan ValueDefi).
Selain itu, meskipun Alpaca tidak bekerja dengan flash loans, di brankas eksternal non-Alpaca, mungkin ada risiko manipulasi harga ibToken dari serangan seperti serangan flash loans. Jika tidak siap, harga ibToken dapat berubah secara drastis di dalam lingkup transaksi penyerang. Itu sebabnya, mengandalkan harga ibToken dari perhitungan smart contract saja tidak cukup. Kami merekomendasikan proyek untuk memiliki oracle harga yang dapat menginfokan rasio ibTokens saat ini vs token dasarnya untuk mencegah serangan seperti yang disebutkan di atas.
Oleh karena itu, kami akan menunjukkan kepada Anda cara teraman dan benar untuk menghitung harga ibTokens.
Perhitungan langsung dari smart contract
Menghitung harga token ibToken dari smart contract adalah cara paling sederhana, tetapi untuk ketahanan, itu tidak boleh menjadi satu-satunya metode yang Anda andalkan.
Cuplikan kode di atas menunjukkan perhitungan harga ibToken dari mengambil nilai totalToken
dan totalSupply
dari brankas yang sesuai.
Mengambil harga ibToken dari API Alpaca
Alpaca Finance telah menyediakan API untuk mengambil harga ibToken saat ini dengan mengirimkan permintaan GET
REST ke titik akhir /ibTokens
untuk mengambil harga ibToken apa pun. Integrasi dengan Alpaca API memerlukan otentikasi, jadi silakan hubungi kami di request@alpacafinance.org jika Anda ingin menggunakan layanan ini..
Contoh hasil dari API adalah sebagai berikut:
Harga yang diambil dari API Alpaca harus dipasok ke smart contract menggunakan oracle harga. Memasok harga melalui input ke panggilan smart contract akan rentan terhadap serangan injeksi dari klien. Kami sangat menyarankan untuk tidak melakukan itu. Contoh oracle harga sederhana dapat dilihat di sini. Dengan menggunakan oracle harga tepercaya, Anda dapat memastikan integritas dan keandalan data harga ibToken.
Kami sangat menyarankan untuk mengambil harga ibToken dari perhitungan smart contract dan API Alpaca. Kedua sumber data harga ini harus dibandingkan untuk mencegah kemungkinan anomali data. Jika perbandingan antara kedua sumber berbeda secara signifikan, data harga harus ditolak.
Singkatnya, proses paling aman untuk menghitung harga ibToken adalah sebagai berikut:
Hitung harga ibToken dalam kontrak Anda sendiri.
Gunakan oracle off-chain untuk harga ibToken atau tarik harga tersebut dari API Alpaca.
Bandingkan 1 dan 2. Jika perbedaannya lebih dari n%, kembalikan transaksi.
API Alpaca saat ini hanya diizinkan untuk protokol dan institusi. Untuk meminta akses, silakan kirim email kepada kami di request@alpacafinance.org
Menyimpan (Staking)
Alpaca Finance memberikan kesempatan menyimpan kepada pengguna. Token berbunga dan token LP terpilih tersedia untuk ditaruh di pool penyimpanan kami untuk menerima bunga tambahan dalam bentuk token ALPACA. Jika Anda telah menyetor dana dan menerima ibTokens, kami menyarankan Anda untuk menyimpan token tersebut ke dalam pool ini untuk mendapatkan hadiah maksimum yang tersedia.
Untuk menyimpan token ke dalam staking pool Alpaca Finance, daftar pool dan token staking yang sesuai harus didapatkan terlebih dahulu. Silakan lihat here untuk daftar mendalam dari semua alamat kontrak pool. Kontrak pool umumnya disebut Fairlaunch
di basis kode kami.
Melakukan staking dilakukan dengan memanggil metode deposit
. Parameternya adalah sebagai berikut:
_for
adalah alamat depositor._pid
adalah id dari pool penyimpanan._amount
adalah jumlah token yang akan disimpan dalamuint256
yang dinyatakan dalam desimalnya (misalnya, ibBNB menggunakan 18 desimal, 1 ibBNB =10000000000000000000
atau1 * 1e18
)
Informasi pembagian penyimpanan akan disimpan di dalam status smart contract. Tidak akan ada token yang dikeluarkan dari penyimpanan. Bagian pengguna dapat diambil dengan memanggil metode userInfo
dari kontrak Fairlaunch
.
Hadiah dari penyimpanan tidak secara otomatis dikreditkan dan harus diambil secara manual. Namun, melakukan setoran atau penarikan pada pool penyimpanan akan secara otomatis memanen hadiah yang tertunda kepada pemanggil. Untuk memanen hadiah dari staking pool, pemanggil harus memanggil metode harvest
dari kontrak Fairlaunch
dan menyediakan id pool.
Untuk menarik token penyimpanan dari pool, jumlah bagian pengguna harus dipasok ke metode withdraw
dalam kontrak Fairlaunch
Token penyimpanan akan dikembalikan ke pemanggil dan hadiah yang tertunda juga akan diambil secara otomatis.
Token penyimpanan akan dikembalikan ke pemanggil dan hadiah yang tertunda juga akan diambil secara otomatis.
Lingkungan Testnet
Sebelum menampilkan dan menyebarkan produksi di Mainnet, kontrak Alpaca Finance pertama kali diterapkan ke Testnet dari BNB Chain. Kontrak Testnet ini terutama dirancang untuk digunakan untuk pengujian internal untuk pengembangan Alpaca Finance saja.
Namun, kami terbuka untuk pihak ketiga yang tertarik untuk menguji integrasi mereka dengan kontrak kami. Token yang digunakan oleh kontrak Testnet dibuat secara internal oleh kami. Jika Anda ingin memiliki beberapa token ini untuk tujuan pengujian, silakan hubungi requests@alpacafinance.org. Untuk daftar alamat di Testnet, silakan lihat di sini.
Last updated