💻Intégration Avec Alpaca Finance
Intégration avec Alpaca Finance
Alpaca Finance permet aux applications DeFi et aux utilisateurs finaux de s'intégrer à son protocole principal. À titre d'exemple simple, un développeur pourrait créer un protocole de composition automatique qui dépose les fonds des utilisateurs dans les coffres de dépôt d'Alpaca Finance et compose les rendements des utilisateurs pour l'efficacité et la commodité du gaz. Le but de ce document est d'aider les développeurs à s'intégrer à notre protocole pour assurer la sécurité globale de l'écosystème.
L'intégration avec l'API Alpaca nécessite une authentification, veuillez donc nous contacter à request@alpacafinance.org si vous souhaitez utiliser ce service.
Intégration de contrat intelligent
Cette section décrit comment s'intégrer à Alpaca Finance directement à partir d'un contrat intelligent.
Prêt
Alpaca Finance permet aux utilisateurs de gagner des intérêts sur les actifs cryptographiques en les déposant dans nos coffres-forts. Ces actifs sont ensuite offerts aux agriculteurs de rendement pour tirer parti de leurs positions. Tout contrat intelligent compatible EVM et déployé sur BNB Chain peut s'intégrer au protocole de prêt d'Alpaca Finance.
Pour déposer le jeton de base dans les coffres d'Alpaca Finance, la liste des coffres disponibles et leurs jetons de base correspondants doivent d'abord être acquis.
Veuillez voir ici pour la liste détaillée de toutes les adresses de contrat de coffre-fort.
Avant qu'un dépôt puisse être effectué dans un coffre-fort, le contrat intelligent qui agit en tant que déposant doit d'abord approuver l'allocation de dépenses du jeton de base à déposer. Cela donnera au contrat intelligent d'Alpaca la possibilité d'obtenir des jetons de l'expéditeur.
L'extrait de code JavaScript ci-dessus est un flux de travail simplifié sur la façon d'approuver l'allocation de dépenses de jetons avec le montant maximum possible. Veuillez noter que l'utilisation de MaxUint256
peut introduire un risque de sécurité, il est recommandé d'utiliser le montant exact du jeton saisi par l'utilisateur.
Effectuer un dépôt se fait en appelant la méthode de deposit
et en spécifiant le montant du dépôt dans le paramètre amountToken
. Le type de données amountToken
est uint256
et ce paramètre doit être formaté avec les décimales du jeton de dépôt (par exemple, BNB utilise 18 décimales, 1 BNB = 10000000000000000000
or 1 * 1e18
). Dans le cas où le jeton de dépôt est du BNB, le coffre-fort gérera l'emballage du BNB dans le wBNB, mais la transaction doit inclure suffisamment de BNB envoyé en tant que jeton natif.
Si le dépôt est réussi, le coffre-fort frappera des jetons portant intérêt (ibTokens) et renverra ces jetons frappés à l'appelant. Veuillez noter que le montant du jeton portant intérêt retourné ne sera pas égal au montant du jeton de base fourni en raison de la conception des jetons portant intérêt. L'appelant de la méthode de deposit
doit suivre correctement les actions des utilisateurs pour les dépôts dans les coffres, veuillez consulter la section Calcul du jeton portant intérêt pour une explication détaillée.
Les intérêts du prêt reviendront aux ibTokens. Pour réaliser les gains du prêt, les ibTokens doivent être retirés, en rachetant le jeton de base + les intérêts collectés. Vous remarquerez que le prix d'échange de l'ibToken serait plus élevé au retrait, ce qui indique que les intérêts ont déjà couru. Par conséquent, vous recevrez des jetons de base supplémentaires lors du retrait.
Pour échanger les jetons de base du coffre-fort, le montant des ibTokens à retirer doit être fourni à la méthode de withdraw
dans le contrat du Vault
.
Calcul du jeton portant intérêt
Un jeton portant intérêt (ibToken) est le jeton qui représente la part du coffre-fort du déposant. Les ibTokens accumuleront les intérêts reçus des prêts au fil du temps. Tout protocole DeFi souhaitant utiliser les coffres d'Alpaca Finance doit comprendre et implémenter correctement le calcul des ibTokens pour refléter les parts réelles des utilisateurs du coffre.
Par conséquent, le rapport entre un ibToken et le jeton de base réel ne sera que de 1:1 lors de la première ouverture du coffre-fort, après quoi la valeur de l'ibToken continuera d'augmenter à mesure que les intérêts de prêt s'accumuleront (la valeur d'un ibToken par rapport au jeton de base ne aller dans un sens vers le haut. La valeur ne peut pas diminuer). Par exemple, supposons le prix : 1 ibBNB = 1.0292 BNB
, ce qui signifie qu'un dépôt de 1,0292 BNB obtiendra 1 ibBNB en retour. D'un autre côté, le rachat de 1 ibBNB obtiendra 1,0292 BNB en retour. Les BNB supplémentaires provenant du rachat d'ibBNB proviennent des intérêts courus.
Comprendre ce mécanisme fondamental des valeurs d'ibTokens est crucial, car un protocole DeFi s'intégrant aux coffres-forts de prêt d'Alpaca Finance pourrait avoir besoin de calculer avec précision les parts des utilisateurs dans le dépôt du coffre-fort. Ne pas le faire pourrait entraîner des risques pour la sécurité et des pertes financières. Ce fut le cas pour les attaques sur bEarn.fi et ValueDeFi dans lesquelles ces protocoles traitaient toujours les ibTokens comme ayant un rapport 1:1 avec le token sous-jacent (lire l'analyse des attaques sur bEarn.fi et ValueDefi).
De plus, bien qu'Alpaca ne fonctionne pas avec les prêts flash, dans un coffre externe non-Alpaca, il pourrait y avoir un risque de manipulation du prix d'ibToken suite à une attaque telle qu'une attaque de prêt flash. S'il n'est pas préparé, le prix d'un ibToken pourrait être radicalement modifié dans le cadre de la transaction d'un attaquant. C'est pourquoi, s'appuyer sur le prix ibToken du calcul du contrat intelligent seul ne suffit pas. Nous recommandons au projet d'avoir un oracle de prix alimentant le ratio actuel d'ibTokens par rapport à son jeton de base pour empêcher une telle attaque mentionnée ci-dessus.
Par conséquent, nous vous montrerons le moyen le plus sûr et le plus correct de calculer les prix des ibTokens.
Calcul direct à partir d'un contrat intelligent
Le calcul du prix du jeton ibToken à partir du contrat intelligent est le moyen le plus simple, mais pour plus de robustesse, il ne doit pas être la seule méthode sur laquelle vous comptez.
L'extrait de code ci-dessus illustre un calcul de prix ibToken à partir de la récupération de la valeur de totalToken
et de totalSupply
à partir du coffre-fort correspondant.
Récupération du prix ibToken à partir de l'API Alpaca
Alpaca Finance a fourni une API pour récupérer les prix ibToken actuels en envoyant une demande GET
REST au point de terminaison /ibTokens
pour récupérer n'importe quel prix ibToken. L'intégration avec l'API Alpaca nécessite une authentification, veuillez donc nous contacter à request@alpacafinance.org si vous souhaitez utiliser ce service.
L'exemple de résultat de l'API est le suivant :
Le prix récupéré de l'API d'Alpaca doit être fourni au contrat intelligent à l'aide d'un oracle de prix. La fourniture des prix via une entrée à un appel de contrat intelligent sera vulnérable à une attaque par injection du client. Nous vous déconseillons fortement de le faire. Un exemple d'oracle de prix simple pourrait être vu ici. En utilisant un oracle de prix de confiance, vous pouvez garantir l'intégrité et la fiabilité des données de prix ibToken.
Nous vous recommandons fortement de récupérer le prix ibToken à partir du calcul du contrat intelligent et de l'API Alpaca. Ces deux sources de données sur les prix doivent être comparées pour éviter toute éventuelle anomalie de données. Si la comparaison entre les deux sources diffère de manière significative, les données sur les prix doivent être rejetées.
En résumé, le processus le plus sûr pour calculer les prix ibToken est le suivant :
Calculez les prix ibToken dans vos propres contrats.
Utilisez un oracle hors chaîne pour les prix ibToken ou extrayez ces prix de l'API d'Alpaca.
Comparez 1 et 2. Si la différence est supérieure à n %, annulez la transaction. L'API d'Alpaca est actuellement en liste blanche uniquement pour les protocoles et les institutions.
Pour demander un accès, veuillez nous envoyer un courriel à request@alpacafinance.org
Jalonnement
Alpaca Finance offre des opportunités de jalonnement aux utilisateurs. Des jetons portant intérêt et des jetons LP sélectionnés sont disponibles pour jalonnement dans nos pools de jalonnement afin de recevoir des rendements supplémentaires sous la forme de jetons ALPACA. Si vous avez déposé des fonds et reçu des ibTokens, nous vous recommandons de mettre ces jetons dans ces pools pour gagner le maximum de récompenses disponibles.
Pour placer les jetons dans les pools de staking d'Alpaca Finance, la liste des pools et leurs jetons de staking correspondants doivent d'abord être acquis. Veuillez voir ici pour une liste détaillée de toutes les adresses de contrat de piscine. Le contrat des pools est généralement appelé Fairlaunch
dans notre base de code. Le jalonnement se fait en appelant la méthode de dépôt. Les paramètres sont les suivants :
Le jalonnement se fait en appelant la méthode de deposit
. Les paramètres sont les suivants :
_for
est l'adresse du déposant._pid
est l'identifiant du pool de jalonnement._amount
est le montant du token à déposer dansuint256
exprimé dans ses décimales (par exemple, ibBNB utilise 18 décimales, 1 ibBNB =10000000000000000000
ou1 * 1e18
ts decimals (for example, ibBNB uses 18 decimals, 1 ibBNB = 10000000000000000000Les informations de la part de jalonnement seront stockées dans l'état du contrat intelligent. Il n'y aura pas de jeton issu du jalonnement. Le partage d'un utilisateur peut être récupéré en appelant la méthode userInfo
à partir du contrat Fairlaunch
.
Les récompenses du jalonnement ne sont pas automatiquement créditées et doivent être récoltées manuellement. Cependant, effectuer un dépôt ou un retrait sur les pools mis en jeu récoltera automatiquement toutes les récompenses en attente pour l'appelant. Pour récolter les récompenses d'un pool de jalonnement, l'appelant doit appeler la méthode de harvest
du contrat Fairlaunch
et fournir l'identifiant du pool.
Pour retirer les jetons de jalonnement du pool, le montant de la part de l'utilisateur doit être fourni à la méthode de withdraw
dans le contrat Fairlaunch
.
Les jetons de jalonnement seront rendus à l'appelant et toutes les récompenses en attente seront également automatiquement récoltées.
Environnement Testnet
Avant les déploiements de préparation et de production sur Mainnet, les contrats Alpaca Finance sont d'abord déployés sur le Testnet de BNB Chain. Ces contrats Testnet sont principalement conçus pour être utilisés à des fins de tests internes pour le développement d'Alpaca Finance uniquement.
Cependant, nous sommes ouverts aux tiers intéressés à tester leur intégration avec nos contrats. Les jetons utilisés par les contrats Testnet sont créés en interne par nous. Si vous souhaitez avoir certains de ces tokens à des fins de test, veuillez contacter request@alpacafinance.org. Pour la liste des adresses dans le Testnet, veuillez voir ici.
Last updated