💻Integration Gamit ang Alpaca Finance
Integration Gamit ang Alpaca Finance
Ang Alpaca Finance ay nagbibigay-daan sa DeFi application at end user upang isama sa kanyang core protocol. Bilang isang simpleng halimbawa, ang isang developer ay maaaring bumuo ng isang auto-compounding protocol na nagde-deposito ng pondo ng mga gumagamit sa Alpaca Finance vault at pinagsasama ang mga ani para sa mga gumagamit para sa katipiran sa gas at kaginhawaan. Ang layunin ng dokumentong ito ay tulungan ang mga developer sa pagsasama-sama sa aming protocol upang matiyak ang pangkalahatang seguridad para sa ecosystem.
Ang pagsasama sa Alpaca API ay nangangailangan ng pagpapatunay, kaya mangyaring humingi ng tulong sa amin, sa requests@alpacafinance.org kung gusto mong gamitin ang serbisyong ito.
Smart Contract Integration
Ang bahaging ito ay naglalarawan kung paano isama sa Alpaca Finance direkta mula sa isang matalinong kontrata.
Lending/Pagpapahiram
Ang Alpaca Finance ay nagpapahintulot sa mga gumagamit na kumita ng interes sa mga crypto asset sa pamamagitan ng deposito ng mga ito sa aming deposito vault. Ang mga ari-ariang ito ay inaalok upang mapagbunga ng mga magsasaka (farmers) para mapataas ang leverage ng kanilang mga posisyon. Anumang smart contract na tugma sa EVM at rehistrado sa BNB Chain ay maaaring isama sa Alpaca Finance bilang lending protocol.
Upang ideposito ang base sa mga vault ng Alpaca Finance, ang listahan ng mga magagamit na vault at ang kanilang kaukulang base token ay dapat munang makuha.
.• Mangyaring tingnan dito para sa detalyadong listahan ng lahat ng vault contract address.
Bago ang isang deposito ay maaaring gawin sa isang vault, ang smart contract na gumaganap bilang isang depositor ay dapat munang aprubahan ang paggastos ng base ng token upang ideposito. Ito ay magbibigay sa Smart Contract ng Alpaca ng kakayahan upang makakuha ng mga token mula sa nagpadala.
Ang sa itaas na JavaScript code snippet ay isang pinasimpleng workflow sa kung paano aprubahan ang token allowance na may pinakamataas na posibleng halaga. Mangyaring tandaan na ang paggamit ng MaxUint256
ay maaaring magpakilala ng panganib sa seguridad, gamit ang eksaktong halaga ng input ng gumagamit ay inirerekomenda.
Ang pagsasagawa ng deposit
ay ginagawa sa pamamagitan ng pagtawag sa paraan ng deposito at pagtukoy sa halaga ng deposito sa amountToken
parameter. Ang uri ng data ng amountToken
ay uint256
at ang parameter na ito ay dapat na format sa decimals ng deposit token (halimbawa, BNB ay gumagamit ng 18 decimals, 1 BNB = 10000000000000000000
o 1 * 1e18
).Para sa kaso kung saan ang dinepositong token ay BNB, ang vault maghahawak ng pagbabalot ng BNB sa wBNB, ngunit ang transaksyon ay dapat may sapat na BNB na ipinadala bilang katutubong token.
Kung ang deposito ay matagumpay, ang vault ay magmi-mint interes-bearing token (ibTokens) at ibalik ang mga mined token pabalik sa caller. Mangyaring tandaan na ang halaga ng ibinalik na token ay hindi katumbas ng halaga ng basehan dahil sa disenyo ng interes-bearing token. Ang caller ng paraan ng deposit
ay dapat tamang subaybayan ang mga ibinahagi ng mga gumagamit para sa mga deposito sa mga vault, mangyaring tingnan ang Interest Bearing Token Calculation section para sa isang detalyadong paliwanag.
Ang interes mula sa pagpapahiram ay maiipon papunta sa ibTokens. Upang mapagtanto ang mga natamo mula sa pagpapahiram, ang mga ibTokens ay dapat na withdraw, matubos pabalik sa base token + nakolekta interes. Mapapansin mo na ang presyo ng palitan ng ibToken ay mas mataas sa withdrawal, na nagpapahiwatig na ang interes ay naipon na. Samakatuwid, ikaw ay makakatanggap ng karagdagang mga token sa withdrawal.
Upang matubos ang base token mula sa vault, ang halaga ng mga ibTokens na withdraw
ay dapat na ibinigay sa pamamaraan ng withdraw sa Vault
Contract.
Ang base token ay ibabalik sa caller. Kung ang bumalik na token ay BNB, ang Vault Contract ay magtatanggal ng balot sa WBNB upang bumalik sa BNB.
Ang pag-compute ng Interest Bearing Token
Ang Interest Bearing Token (ibToken) ay ang token na kumakatawan sa vault na bahagi ng depositor. Ang ibTokens ay magkakaroon ng interes na natanggap mula sa pagpapahiram sa paglipas ng panahon. Anumang deFi protocol na nais na gamitin ang mga vault ng Alpaca Finance ay dapat maunawaan at ipatupad ang pagkalkula ng mga ibTokens nang tama upang ipakita ang aktwal na mga gumagamit' na namamahagi ng vault.
Samakatuwid, ang ratio sa pagitan ng isang ibToken at ang aktwal na base token ay 1:1 lamang kapag ang vault ay unang bukas, pagkatapos na kung saan ang halaga ng ibToken ay patuloy na dagdagan bilang pagpapahiram ng “interes accrues” (Ang halaga ng isang ibToken relatibo sa base token ay tataas lamang. Hindi mabawasan ang halaga). Halimbawa, ipalagay natin na ang presyo: 1 ibBNB = 1.0292 BNB
na nangangahulugan ng deposito ng 1.0292 BNB ay makakakuha ng 1 iBNB bilang kapalit. Sa kabilang banda, ang pagtubos 1 iBNB ay makakakuha ng 1.0292 BNB bilang kapalit. Ang karagdagang BNB mula sa pagtubos iBNB ay mula sa naipon interes.
Pag-unawa sa isang pangunahing mekanika ng mga ibTokens 'halaga ay napakahalaga, dahil ang isang DeFi protocol pagsasama sa Alpaca Finance vaults ay maaaring kailangan upang tumpak na kalkulahin ang mga bahagi ng vault deposito. Kabiguang gawin ito ay maaaring magpataw ng panganib sa seguridad at pinansiyal na pagkawala. Ito ang kaso para sa mga pag-atake sa bEarn.f at ValueDeFi kung saan ang mga protocol na ito ay palaging tinatrato ang ibTokens bilang pagkakaroon ng isang 1:1 ratio na may pangunahing token (basahin ang pagsusuri ng mga pag-atake sa bEarn.farn.at ValueDef).
Sa karagdagan, bagaman Alpaca ay hindi gumagana sa mabilisang pautang, sa isang panlabas na hindi Alpaca vault, maaaring magkaroon ng isang panganib ng manipulasyon ng presyo ng ibToken mula sa isang pag-atake tulad ng isang “flash loan attack”. Kung hindi kapani-paniwala, ang presyo ng isang ibToken ay maaaring magkaroon ng malaking pagbabago sa loob ng saklaw ng transaksyon ng attacker.Ang pag-asa sa kaalaman ng presyo ng ibToken mula lamang sa smart contract calculation ay hindi sapat. Inirerekomenda namin ang proyekto na magkaroon ng isang “price oracle feeding” sa kasalukuyang ratio ng ibTokens vs base upang maiwasan ang tulad ng isang pag-atake na binanggit sa itaas. Samakatuwid, ipapakita namin sa iyo ang pinakaligtas at tamang paraan upang kalkulahin ang mga presyo ng mga ibTokens.
Direktang pag-kalkula mula sa smart contract
Pagkalkula ng ibToken token presyo mula sa smart kontrata ay ang pinakasimpleng paraan, ngunit para sa kabuuan, ito ay hindi dapat ang tanging paraan na inaasahan mo.
Ang code snippet sa itaas ay nagpapakita ng pag-kalkula ng presyo ng ibToken sa pamamaraan ng pagkuha pabalik ng halaga ng totalToken
at totalSupply
mula sa kaukulang vault.
Ang pagkuha ng presyo ng ibToken mula sa Alpaca API
Alpaca Finance ay ibinigay ng isang API upang makuha ang kasalukuyang mga presyo ng ibToken sa pamamagitan ng pagpapadala ng isang GET
REST na kahilingan sa dulo / /ibTokens
upang makuha ang anumang presyo ng ibToken. Ang pagsasama sa Alpaca API ay nangangailangan ng pagpapatunay, kaya maaaring humingi ng tulong sa requests@alpacafinance.org kung gusto mong gamitin ang serbisyong ito.
Ang halimbawa ng resulta mula sa API ay ang sumusunod:
Ang presyo na nakuha mula sa API ni Alpaca ay dapat ibigay sa smart contract gamit ang isang price oracle. Ang pagbibigay ng mga presyo sa pamamagitan ng isang input sa isang smart contract call ay mahina sa isang iniksyon atake mula sa client. Mahigpit naming ipinayo ang hindi paggawa nito. Isang halimbawa ng simpleng presyo o balakid ang makikita rito. Sa pamamagitan ng paggamit ng isang pinagkakatiwalaang price oracle, matitiyak mo ang integridad at pananagutan ng ibToken price data.
Mahigpit naming inirerekomenda na kunin ang ibToken price mula sa parehong smart contract calculation at Alpaca API. Ang dalawang pinagkukunan ng presyo ng data ay dapat ihambing upang maiwasan ang anumang posibleng anomalya sa data. Kung ang paghahambing sa pagitan ng dalawang pinagkukunan ay magkaiba, ang presyo ng data ay dapat tanggihan.
Sa kabuuan, ang pinaka-ligtas na proseso upang ma-kalkula ang presyo ng ibToken ay ang sumusunod:
Kalkulahin ang presyo ng ibToken sa sarili mong kontrata
Gumamit ng isang “off-chain oracle” para sa mga presyo ng ibTokens, o kunin ang mga ito mula sa API ng Alpaca
Pag-kumparahin ang 1 at 2. Kapa gang pinagkaiba nito ay mas mataas sa n%, ibalik ang transaksyon
Sa kasalukuyan, ang Alpaca API ay naka - “whitelist-only” para sa protocols at institusyon. Kung nais humiling ng permiso upang magamit ito, maaari kaming padalhan ng mensahe sa requests@alpacafinance.org
Staking/Pagtaya
Ang Alpaca Finance ay nagbibigay ng mga pagkakataong pumusta sa mga gumagamit. Interest-bearing tokens at LP tokens ay magagamit para sa pagpusta (staking) sa aming mga “staking pools” upang makatanggap ng karagdagang mga ani (yields) sa anyo ng ALPACA token. Kung nagdeposito ka ng pondo at tumanggap ng mga ibToken, inirerekomenda namin kayo na i-pusta muli ito sa mga pool na ito para kumita ng sagad na gantimpala.
Upang i-stake ang mga token sa alpaca Finance pools, ang listahan ng mga pool at ang kanilang kaukulang mga token ay dapat munang makuha. Mangyaring tingnan dito para sa isang malalim na listahan ng lahat ng mga pool contract address. Ang kontrata ng pool ay karaniwang tinatawag na Fairlaunch sa aming codebase.
Ang pagsasagawa ng staking ay ginagawa sa pamamagitan ng pagtawag sa paraan ng deposito. Ang mga parameter ay sinusundan:
_for
ang address ng depositor._pid
ay ang id ng staking pool._amount
ang halaga ng token na idinedeposito sauint256
na ipinahayag sa kanyang decimals (halimbawa, iBNB ay gumagamit ng 18 decimals, 1 ibBNB =10000000000000000000
or1 * 1e18
)
Ang impormasyon na nakuha mula sa staking ay naka-imbak sa loob ng smart contract estate.Hindi magkakaroon ng token na inisyu mula sa staking. Ang bahagi ng isang gumagamit ay maaaring makuha sa pamamagitan ng pagtawag sa userInfo
mula saFairlaunch
contract.
Ang mga gantimpala mula sa staking ay hindi awtomatikong na-credit at dapat manu-manong anihin. Gayunman, ang pagsasagawa ng deposito o pag-withdraw sa mga pool ng stake ay awtomatikong maaani ang anumang nakabinbin na gantimpala sa caller. Upang anihin ang mga gantimpala mula sa isang staking pool, ang caller ay dapat tumawag sa harvest
mehthod mula sa Fairlaunch
contract at supply ng pool id.
Upang bawiin ang mga token ng stake mula sa pool, ang halaga ng bahagi ng gumagamit ay dapat na ibigay sawithdraw
method sa Fairlaunch
contract.
Ang mga token ng staking ay ibabalik sa caller at anumang nakabinbing mga gantimpala ay awtomatiko ring aanihin.
Testnet Environment
Bago ang staging at production deployments sa Mainnet, ang mga kontrata ng Alpaca Finance ay pinapadala sa Testnet of BNB Chain. Ang mga Testnet contracts ay pangunahing dinisenyo upang magamit bilang internal testing para sa paglago ng Alpaca Finance lamang.
Gayunpaman, kami ay bukas sa mga third-parties na interesado sa pagsukat ng katibayan ng kanilang mga kontrata. Ang mga token na gamit ng Testnet contracts ay panloob na ginawa namin. Kung nais mong magkaroon ng mga token na ito para sa pagkakalkula, maaari niyo itong isangguni sa amin sa requests@alpacafinance.org. Para sa listahan ng aming Testnet address, tingnan dito.
Last updated