Cette étude est née du défi d'obtenir des informations de prix fiables on-chain qui maximisent la sécurité tout en reflétant les prix spot actuels des actifs cibles. Nous nous concentrons spécifiquement sur les actifs de garantie de Prisma Finance (wstETH, rETH, cbETH et sfrxETH) ainsi que sur les dérivés de staking liquide basés sur Ethereum (LSD). Certains de ces actifs manquent de sources de données Chainlink (souvent considérées comme la référence en matière de données de prix fiables), ce qui a affecté leur intégration avec la plateforme Prisma.
La dernière implémentation de la piscine stable de Curve Finance inclut un Oracle de piscine interne, qui calcule la moyenne mobile exponentielle (EMA) pour dériver des données de prix résistantes à la manipulation. Alors que les intégrateurs ont commencé à explorer l'utilisation de l'Oracle dans d'autres applications DeFi, l'Oracle est principalement utilisé pour garantir la sécurité des garanties sur le marché crvUSD de Curve.
L'objectif principal de ce rapport est de déterminer si l'oracle de Curve Finance peut servir de solution fiable en remplacement de Chainlink pour les jetons ETH LSD. Cette étude implique une analyse statistique de l'efficacité de l'oracle de prix de Curve, comparant sa volatilité, sa précision et sa performance globale avec les prix de référence Uniswap (supposés être des prix précis on-chain).
L'analyse est divisée en deux études connexes:
Analyse résiduelle des oracles stETH : Une étude comparative entre Chainlink et Curve, utilisant des données historiques pour déterminer l'écart de l'oracle par rapport à la moyenne et à l'écart type du prix de référence.
Analyse de rachat stETH MEV : Une étude comparative entre Chainlink et l'Oracle on-chain, utilisant des données historiques pour examiner les événements de rachat sur Prisma et estimer la rentabilité des robots et le comportement attendu en utilisant d'autres Oracles.
Après analyse, nous fournissons des spécifications préliminaires pour l'Oracle, en attendant des améliorations dans la déviation du prix de l'Oracle tout en garantissant la fiabilité de l'Oracle. La solution proposée peut servir de plan directeur initial pour d'autres études visant à optimiser l'Oracle.
L'efficacité des oracles est évaluée dans le cadre spécifique de l'utilisation de Prisma : liquidation et rachat. (De plus, il convient de noter que les mêmes oracles sont également utilisés pour les frais d'émission de jetons et la vente des jetons acquis au « pool stable tokenisé », dont l'importance augmentera une fois lancée).
La performance de l'Oracle est cruciale pour les utilisateurs de Prisma car les arbitragistes peuvent avoir des opportunités de profit à partir des différences entre les prix de l'Oracle et les prix au comptant. S'assurer de l'utilisation du retour de prix le plus précis lors de la liquidation et du rachat, sans sacrifier la sécurité des sources de tarification, est conforme aux meilleurs intérêts du protocole Prisma et de ses dépositaires du trésor.
Deux fonctions Oracle au sein de Prisma sont décrites comme suit :
Pour protéger Gate de l'insolvabilité, où les positions de dette dépassent la valeur de leur garantie, le contrat LiquidationManager exécute la logique de liquidation sur tous les TroveManagers actifs (trésoreries Gate). La liquidation peut être déclenchée de trois manières, en fonction du ratio de garantie du compte cible et du ratio de garantie global du système.
Ratio de garantie individuelle (ICR) <= 100%: Le compte (trésorerie) dispose d'une garantie insuffisante. Toute dette et garantie sont redistribuées parmi les trésoreries actives restantes, socialisant ainsi efficacement la perte.
100% < ICR < Ratio de Collatéral Minimum (RCM) : Le trésor tombe en dessous du seuil de liquidation mais peut être liquidé en toute sécurité. Le pool stable est utilisé comme réserve pour gérer les liquidations (en incitant le pool de liquidation). Le collatéral est alloué aux déposants du pool stable. Si le solde du pool stable est insuffisant pour rembourser intégralement le trésor, la dette restante et le collatéral sont redistribués parmi les trésors actifs restants.
MCR <= ICR < Global Total Collateral Ratio (GTCR) && GTCR < 150%: Le système est en mode de récupération, ce qui signifie que les trésors peuvent être liquidés lorsque le CR est inférieur au GTCR plutôt qu'au MCR. Les dépôts dans le pool stable sont utilisés en premier pour liquider le trésor. Un collatéral équivalent à la valeur de la dette à MCR est distribué parmi les déposants du pool stable. Le reste du collatéral peut être réclamé par le propriétaire du trésor.
La possibilité de liquidation de Prisma augmente lorsque l'ETH ou l'ETH LSD connaît des fluctuations de prix significatives, en particulier des baisses, dans des conditions de marché très volatiles. Alors que les défaillances ou manipulations d'Oracle peuvent affecter le protocole à tout moment, le risque de défaillance d'Oracle peut augmenter aux moments les plus cruciaux. Il se peut que les actifs de garantie ne parviennent pas à mettre à jour les prix en temps opportun en raison de pics de frais de gaz, ou que la méthodologie de tarification d'Oracle ne parvienne pas à suivre adéquatement la volatilité accrue, ce qui entraîne une mauvaise fixation des prix. Les insolvabilités peuvent augmenter, nécessitant une redistribution parmi les trésoreries actives, ou les emprunteurs peuvent être liquidés de manière injuste (dans les cas où Oracle signale erroneusement des prix inférieurs aux prix du marché équitable).
Les arbitragistes peuvent toujours initier des rachats, en choisissant de racheter 1 mkUSD de valeur de garantie pour 1 dollar américain (+ frais de rachat dynamiques), en commençant par le trésor ayant le ratio de garantie le plus bas dans le système. Cela aide à renforcer son ancrage lorsque le prix du mkUSD tombe en dessous de 1 dollar américain. Le processus de rachat réduit le risque de garantie du trésor cible et augmente son ratio de garantie. La partie exécutant le rachat paie des frais appelés frais de rachat. La plage de frais de rachat est définie par TroveManager et est la somme du plancher des frais de rachat + du taux de base. Les variables stockées dans TroveManager augmentent proportionnellement avec l'offre totale de mkUSD rachetée et diminuent linéairement avec le temps. Ce frais dynamique, le taux de base, ajuste le taux de rachat rentable.
Alors que les liquidations sur Prisma ont historiquement été rares, les rachats sont courants et méritent une attention particulière de la part des Oracles. Les bots MEV recherchent activement de telles opportunités pour réaliser rapidement des profits grâce à des prêts flash.
En plus de l'inconvénient de la rachat forcé de leurs trésors, les utilisateurs peuvent subir une certaine extraction de valeur en raison des écarts entre l'Oracle et les prix au comptant. Une mauvaise fixation des prix peut entraîner une perte d'actifs plus importante que nécessaire pour les utilisateurs, en particulier lorsque l'Oracle signale des prix inférieurs à la valeur marchande équitable. D'autre part, des prix signalés par l'Oracle supérieurs aux prix du marché équitable peuvent entraver les rachats, annulant ainsi l'objectif du mécanisme de rachat qui impose le plancher de la peg mkUSD.
Voici un bref aperçu des principaux candidats pour les flux de prix d'Oracle sur Prisma.
Chainlink est un réseau oracle décentralisé qui agrège des données provenant d'une large gamme de sources de marché et connecte ces données à des contrats intelligents. Son architecture repose sur des opérateurs de nœuds indépendants qui récupèrent et transmettent des données provenant de divers échanges et agrégateurs de données de marché via des API, minimisant ainsi les points de défaillance uniques et renforçant la sécurité. L'intégrité des données est assurée par des méthodes cryptographiques et des mécanismes de consensus qui vérifient l'exactitude des données avant la transmission. Son approche implique une tarification des actifs pondérée par le volume (VWAP) pour agréger des valeurs marchandes équitables qui représentent au mieux les prix au comptant des actifs.
Les réseaux de nœuds poussent régulièrement (battement de cœur) ou en fonction des seuils d'écart de prix les prix sur la chaîne. Cette limitation, due aux frais de gaz élevés sur le mainnet, peut rendre les mises à jour de prix coûteuses et entraîner une latence accrue, réduisant ainsi les performances de l'Oracle. Le coût de maintenance de tels Oracles peut être élevé, surtout en période de forte volatilité, rendant les mises à jour opportunes de l'Oracle cruciales.
Les récentes implémentations des pools Curve (pools StableSwap et CryptoSwap) incluent des calculs de prix EMA exposés par des fonctions getter telles que price_oracle()
. Ces pools ne dépendent pas d'oracles externes, mais calculent plutôt les prix des actifs par rapport au jeton à l'indice 0 du pool en fonction de leurs propres activités de trading internes. L'EMA augmente les coûts de manipulation grâce à des ajustements de prix lissés, trouvant un équilibre entre la résistance à la manipulation et l'écart de prix par rapport au spot. Chaque pool a ma_exp_time
qui peut être configuré via le vote du Curve DAO.
Comme indiqué dans la documentation de l'Oracle Curve, l'Oracle EMA est activement en cours de développement :
Si vous souhaitez utiliser la fonctionnalité 'oracle de prix' de Curve ou tout oracle de prix pour fournir des données de tarification on-chain dans votre application décentralisée que vous construisez, nous vous suggérons de faire preuve d'une prudence accrue.
Différentes implémentations de pool modifient les versions du code de l'Oracle EMA, de sorte que les intégrateurs doivent comprendre l'implémentation de l'Oracle du pool cible.
En novembre 2023, une erreur affectant le pool Oracle a été découverte lors du déploiement de la mise en œuvre du pool stableswap-ng. Cette erreur a été trouvée peu de temps après le déploiement de la mise en œuvre du pool par yAudit lors d'un audit secondaire. Cela a incité à proposer une mise à niveau de la mise en œuvre et à abandonner quelques pools affectés. Aucun fonds n'était en danger, mais cet événement a mis en lumière le développement actif des oracles de pool Curve et le potentiel d'incohérences entre les pools, malgré des audits approfondis, et le potentiel d'erreurs persistantes qui pourraient rendre les oracles vulnérables à la manipulation ou aux inexactitudes.
La troisième partie de ce rapport est une analyse du rachat du gestionnaire de trésorerie wstETH TroveManager. Étant donné l'impact significatif du rachat sur les utilisateurs de Prisma, cette section présente des observations sur les rachats historiques, qui seront évalués en comparaison avec l'Oracle EMA Curve alternative dans l'analyse comparative.
Interroger les événements de rachat sur le gestionnaire de Trove wstETH révèle plus de 200 transactions de rachat au total, dont 190 transactions identifiées comme des transactions BOT (la méthode utilisée pour identifier les transactions exécutées par des BOT sera expliquée plus tard dans la même section). Ci-dessous, une visualisation montrant la fréquence de ces transactions dans le temps.
Source: Dune query_3402461
Il n'y a que 3 BOTs qui échangent fréquemment mkUSD :
Source : Dune query_3402461
Chaque BOT suit un processus général similaire d'acquisition de mkUSD et de rachat. Ci-dessous, l'une des transactions BOT, révélant quelques informations utiles :
Source: Explorateur Tx Phalcon
Le modèle de transaction BOT peut être subdivisé plus avant comme suit :
Obtenir des prêts flash de Uniswap V3: USDC.
Convertir USDC en mkUSD en utilisant le Curve.fi Factory USD Metapool : Prisma mkUSD.
Échangez mkUSD contre wstETH sur le wstETH TroveManager.
Convertir wstETH en stETH sur le wstETH.
Échangez stETH contre ETH sur le pool Curve stETH/ETH.
Envelopper ETH, rembourser le prêt et distribuer les profits et les commissions.
La rentabilité de MEV dépend des différences de prix dans les étapes 2, 3 et 5 :
2: Comme le prix du mkUSD diminue, la rentabilité de la rachat augmente.
3: Comme les frais de rachat dynamiques diminuent en fonction des quantités de rachat récentes et du temps écoulé depuis le rachat, la rentabilité du rachat augmente.
-5: Comme le glissement dans les échanges d'actifs (par exemple, stETH) augmente, la rentabilité du rachat diminue. Des actifs tels que stETH peuvent être directement échangés contre de l'ETH sous-jacent, mais ce processus nécessite une période d'attente, ce qui rend la liquidité sur le marché secondaire crucial.
Prisma utilise un mécanisme pour limiter les opportunités de profit de la conversion de mkUSD en wstETH par le biais de frais dynamiques. L'étape 3 implique des frais dynamiques pour éviter des conversions fréquentes et excessives. Malgré ce mécanisme, des conversions peuvent encore se produire en raison d'une mauvaise estimation de l'oracle pour extraire le MEV. Les cotations de l'oracle pour la conversion de mkUSD peuvent offrir aux propriétaires du trésor des taux de garantie suboptimaux, ce qui entraîne une expérience utilisateur négative.
La proposition de modification des prix de l'Oracle Prisma pour le feed stETH a été approuvée. Initialement, Prisma utilisait l'oracle stETH/USD de Chainlink, avec un seuil de déviation de 1% pour le TroveManager wstETH. Il a été constaté que l'utilisation d'une combinaison des oracles stETH/ETH et ETH/USD de Chainlink pourrait conduire à une amélioration, avec un seuil de déviation de 0,5% pour chaque oracle.
Veuillez vous référer à l'écart entre le nouvel Oracle et l'ancien Oracle avec une résolution de 15 blocs :
Source: Graphique par @wavey
Il a été observé que lorsque le prix de négociation du mkUSD tombe en dessous de son taux d'ancrage, des rachats excessifs se produisent en raison d'une déviation de l'Oracle dépassant 1 %. Dans ces cas, nous avons constaté que les frais dynamiques étaient insuffisants pour empêcher les rachats excessifs causés par des déviations de prix. Veuillez vous référer à l'ajustement des frais de rachat pour les événements de rachat inférieurs.
Source: Chart by @wavey
Ces rachats peuvent entraîner des coûts indirects pour les utilisateurs de Prisma, car ils peuvent recevoir des taux défavorables lors de la récupération de leurs coffres. L'analyse de Wavey indique que l'oracle stETH/USD est plus sujet à la déviation par rapport aux combinaisons d'oracles validées dans les données ci-dessus. Des déviations transitoires dépassant 1,2 % ont créé des opportunités pour les bots MEV pour exploiter.
La proposition de changer l'Oracle (PIP-004) a été exécutée le 17 novembre 2023 à 735 PM +UTC, ainsi que cette transaction. En se basant sur le graphique des prix en mkUSD ci-dessous et sur la date d'exécution de la proposition, on peut observer qu'après l'exécution de la proposition, le prix réel du mkUSD en USDC a diminué. La rentabilité réduite des rachats en raison des améliorations de l'oracle peut entraîner une diminution de la force de fixation.
Source: Dune query_5685458
D'autres facteurs d'influence doivent également être pris en compte, notamment les limites du modèle de taux d'intérêt du protocole, les cas d'utilisation de mkUSD et les mesures incitatives mal alignées. Une autre proposition significative qui restreint les rachats est PIP-019, exécutée le 31 janvier. Cette proposition a augmenté les frais de rachat de base pour tous les gestionnaires de trésorerie à 1%-1.5%, réduisant l'élasticité d'ancrage de mkUSD mais au prix d'une diminution du risque de rachat pour les propriétaires de trésors de Prisma.
L'analyse vise à évaluer les performances des oracles Prisma implémentés et à évaluer les performances hypothétiques des oracles Curve EMA on-chain alternatives en utilisant des données historiques. Les résultats de l'étude fourniront des aperçus initiaux sur le comportement des oracles off-chain et on-chain, permettant une évaluation plus détaillée dans les recherches ultérieures.
Le but de cette analyse est de déterminer si l'oracle actuel fournit la solution de performance la plus optimale ou si des améliorations peuvent être apportées en mettant en œuvre des solutions on-chain ou hybrides en utilisant l'oracle du pool EMA de Curve.
L'analyse portera spécifiquement sur le stETH car il s'agit du LSD le plus couramment utilisé, avec un flux de prix mature de Chainlink et une liquidité profonde dans le pool Curve. L'analyse des autres garanties répertoriées sur Prisma a été menée et les résultats sont fournis à l'appendice B du rapport à titre de référence.
L'analyse comparative consiste à évaluer le degré d'alignement entre les données d'essai et l'ensemble de données de référence. Dans ce cas, deux ensembles de données sont considérés : les données d'essai d'intérêt et l'ensemble de données de référence. Bien qu'on s'attende à ce que les données d'essai suivent de près les données de référence, des écarts peuvent se produire.
Pour quantifier l'alignement, nous examinons les résidus, qui représentent essentiellement la différence entre les données de l'essai et les données de référence. L'analyse des résidus vise à révéler des motifs ou des tendances dans ces différences.
Lors de l'analyse des résidus (écarts par rapport aux valeurs de référence), des observations sont faites en fonction de l'écart type des résidus. L'écart type (SD) est une mesure statistique utilisée pour quantifier la variabilité ou la dispersion d'un ensemble de valeurs. Il donne une indication de la répartition des valeurs autour de la moyenne (moyenne). Un écart type faible implique que les points de données ont tendance à être proches de la moyenne, tandis qu'un écart type élevé indique que les points de données sont répartis sur une plage plus large.
Dans notre cas, une moyenne proche de 0 est souhaitable car elle indique que les prix fournis ne surestiment ni ne sous-estiment les prix de référence. Cependant, une moyenne proche ou égale à 0 avec un écart type relativement élevé suggère des fluctuations significatives, qui sont indésirables car elles correspondent à des erreurs de prix sévères. Un flux oracle avec une moyenne de zéro et l'écart-type minimum est le résultat idéal, indiquant que le flux suit précisément les prix au comptant.
Pour surveiller et évaluer l'exactitude de l'activité des prix de l'oracle on-chain, les devis obtenus auprès des destinations de trading les plus liquides (à l'exclusion de Curve) servent de référence pour l'analyse des résidus. En particulier, les devis de la paire de devises LSD/ETH sur Uniswap sont les points de référence principaux dans ce scénario.
Notre analyse comprend deux stratégies pour dériver les prix de stETH Chainlink. Cela est fait car il a été constaté que l'écart de l'alimentation originale stETH/USD de Chainlink est plus élevé que l'écart en utilisant stETH/ETH + ETH/USD. Les oracles ont été mis à jour selon les propositions de gouvernance. Par la suite, l'analyse impliquant le prix amélioré de stETH/ETH Chainlink en ETH est désignée sous le nom de stETHv1, tandis que l'alimentation de combinaison stETH/USD + ETH/USD (reproduisant la performance originale de l'oracle stETH, standardisée en ETH) est désignée sous le nom de stETHv2.
À des fins d'analyse, les données du dernier trimestre de 2023 ont été obtenues pour tous les actifs respectifs (du bloc 18331000 au bloc 18931000, avec une résolution de 250 blocs pour l'ensemble de données). Cela crée un ensemble de données contenant 2401 points de données pour tous les actifs.
L'actif principal pris en considération est stETH, car c'est le type de garantie actuellement accepté par Prisma, avec à la fois l'alimentation Chainlink et le pool Curve StableSwap-ng disponibles pour référence (veuillez vous référer à l'Annexe B pour une analyse sur rETH et cbETH, qui utilise l'ancienne implémentation du pool CryptoSwap). Toutes les données ont été obtenues en interrogeant les prix pour la plage de blocs spécifiée.
Les prix d'Oracle sont analysés à partir des sources suivantes :
Courbe de pool de liquidité
Retour de prix de Chainlink
L'adresse du pool de minage Uniswap en tant qu'agent de référence du prix au comptant est la suivante :
Prix au comptant Uniswap
Pour standardiser LSD sur son ETH sous-jacent, nous utilisons le taux de change interne LSD/ETH :
Taux de change interne LSD/ETH
Dans cette section, nous comparerons l'exactitude du flux de prix Chainlink stETH avec Curve.
Feed Chainlink stETHv1 vs. Curve
Chainlink: alimentation stETH/ETH
Courbe : piscine stETH/ETH
Ci-dessous est une comparaison directe des prix de stETH de Chainlink et de Curve. En raison du cycle de battement de 24 heures de Chainlink stETH/ETH, le prix fluctue tous les quelques blocs. Comparativement, les fluctuations sont plus facilement observables dans le flux Chainlink (mieux visualisées dans le flux Chainlink stETH/USD) par rapport à Curve, car Curve utilise un temps EMA de 10 minutes (ma_exp_time) pour dériver son prix.
Si nous soustrayons le prix de Curve du prix de Chainlink, nous obtiendrons les résidus, comme indiqué ci-dessous :
La valeur moyenne de l'écart est ~-0.000305.
Une observation importante qui peut être faite ici est que Curve Oracle surestime légèrement ses données de prix par rapport à Chainlink.
Chainlink stETHv2 et Curve
Chainlink : alimentation stETH/USD / alimentation ETH/USD
Courbe: pool stETH/ETH
Voici une comparaison des prix provenant d'alternatives Chainlink normalisées en ETH (stETH/USD et ETH/USD) par rapport à la courbe stETH. Comme Chainlink stETH/USD a un seuil de déviation de 1 % (comparé à 0,5 % dans le flux stETH/ETH), le prix présente une plus grande déviation autour du prix d'ancrage.
Comme observé précédemment, les fluctuations des prix stETH/USD de Chainlink sont plus prononcées par rapport à Curve.
La valeur moyenne de l'écart est ~-0.000171.
En fonction de l'échelle, ce flux présente des résidus plus importants, c'est-à-dire plus de volatilité, que stETH/ETH.
Dans cette section, nous comparerons la précision historique du flux de prix Chainlink stETH avec le prix de référence de Uniswap.
En supposant que les données de prix de pool UniswapV3 servent de proxy fiable pour les prix au comptant, nous pouvons comparer les données de référence précédemment obtenues pour vérifier la proximité de l'alimentation de l'oracle Chainlink avec les valeurs de référence.
Uniswap Spot vs. Chainlink stETHv1
Chainlink: alimentation stETH/ETH
Uniswap: taux de change du pool wstETH/ETH / échange interne wstETH/stETH
Voici l'écart réel entre le prix spot Uniswap et Chainlink stETH/ETH :
Moyenne résiduelle = 0.000415
Écart type des différences de prix = 0,000601
Uniswap Spot vs. Chainlink stETHv2
Chainlink: alimentation stETH/USD / alimentation ETH/USD
Uniswap: taux de change interne wstETH/ETH pool / wstETH/stETH
Voici l'écart réel entre Uniswap stETH et Chainlink stETH (stETH/USD) :
Différence de prix moyenne = 0.000281
Écart type de la différence de prix = 0.002747
Ici, nous comparons Chainlink stETHv1 (c'est-à-dire stETH/ETH) et stETHv2 (c'est-à-dire stETH/USD) avec les données d'Uniswap, et les résultats indiquent que l'écart de stETHv2 est significativement plus grand que stETHv1.
La même observation a également été faite dans la proposition de gouvernance Prisma (PIP-004) lorsque l'oracle est passé de stETH/USD à stETH/ETH + ETH/USD pour réduire les écarts de cotation.
Dans cette section, nous comparerons l'exactitude historique de l'oracle stETH Curve avec le prix de référence de Uniswap.
En supposant que les données de prix du pool UniswapV3 servent de proxy fiable pour les prix au comptant, nous pouvons comparer les données de référence précédemment obtenues pour vérifier la proximité de l'alimentation de l'oracle Curve avec les valeurs de référence.
Uniswap Spot vs. Courbe
Courbe : pool stETH/ETH
Uniswap: taux de change interne du pool wstETH/ETH / wstETH/stETH
Basé sur une analyse résiduelle similaire à celle ci-dessus, nous obtenons les indicateurs suivants à comparer avec le benchmark précédemment défini :
La différence de prix moyenne = 0.000110.
L'écart type des différences de prix = 0.000141.
Tel qu'observé, le prix moyen rapporté par Curve est légèrement inférieur à celui du spot Uniswap, avec un écart type significativement inférieur par rapport à l'une ou l'autre source de Chainlink.
Lors de la comparaison de ces métriques, nous constatons que l'écart des données de Chainlink est significativement plus grand que celui de Curve lors de la référence aux données Uniswap en tant que proxy pour les prix spot.
Étant donné que les observations ci-dessus sont basées sur les écarts de chaque source de prix, il est possible que le flux de l'oracle Curve montre des écarts positifs tandis que le flux de Chainlink montre des écarts négatifs, et vice versa. Ce scénario est entièrement annulé car les plages d'écarts des flux de Chainlink et de l'oracle Curve sont plus petites par rapport aux plages d'écarts de Uniswap & Chainlink et Uniswap & Curve.
Le tableau ci-dessous affiche l'analyse des résidus effectuée sur les données collectées. La moyenne des résidus, multipliée par 100, donne le pourcentage moyen de déviation de l'actif cible par rapport à la référence (en termes de USD, par rapport aux prix de l'ETH libellés en USD).
Le tableau compare directement les performances relatives de Chainlink et Curve par rapport à la référence Uniswap en termes de moyenne et d'écart type pour chaque actif. Dans tous les cas, Curve présente des valeurs moyennes et d'écart type inférieures. Le multiplicateur de précision montre la précision relative de chaque valeur observée.
Les points principaux ici sont les suivants :
L'analyse vise à comparer les prix de mise en œuvre des événements de rachat dans le gestionnaire de trésorerie wstETH avec les prix hypothétiques cités à l'aide de données historiques par des oracles alternatifs sur chaîne. Les résultats de l'étude fourniront des premières indications sur le comportement des oracles décentralisés et centralisés, permettant une évaluation plus détaillée dans des recherches ultérieures.
Le but de cette analyse est de déterminer si l'oracle actuel fournit la meilleure solution de performance dans des scénarios spécifiques de rachat ou si des améliorations peuvent être apportées grâce à la mise en œuvre de solutions on-chain ou hybrides, en utilisant les oracles de pool EMA de Curve.
Cette analyse portera spécifiquement sur stETH, car il s'agit du LSD le plus couramment utilisé et bénéficie de flux de prix Chainlink matures et d'une liquidité profonde dans le pool Curve. L'étude agrégera tous les événements de rachat, comparant les prix oracle stETH réalisés avec plusieurs prix oracle alternatifs, libellés en USD, et utilisant le prix oracle stETH/ETH de Curve.
Pour cette analyse, le prix stETH réalisé est calculé en divisant le montant racheté de mkUSD par le montant de stETH perdu par le gestionnaire de la réserve sous forme de wstETH. Pour déterminer la quantité de stETH, nous devons prendre en compte les wstETH reçus lors du rachat plus les wstETH dépensés sous forme de frais et les convertir en stETH. Si une autre source offre constamment des profits inférieurs aux racheteurs, nous pouvons dire que leur performance de MEV est meilleure que le prix réel.
Le gestionnaire de trésorerie wstETH Trove est utilisé pour récupérer tous les hachages de transactions lors de l'obtention de mkUSD en échange. Les transactions où l'adresse qui rachète mkUSD reçoit et brûle mkUSD sont considérées comme des transactions BOT. Des requêtes détaillées pour les événements de rachat peuvent être trouvées ici : Dune query_3352919. Cette requête est essentielle pour récupérer toutes les données des transactions BOT.
La requête Dune est utilisée pour identifier les transactions BOT qui obtiennent toutes les valeurs de hash de transaction, le taux de change wstETH réalisé pour le rachat mkUSD, et le numéro de bloc des événements de rachat. Les numéros de bloc obtenus à partir de la requête sont utilisés comme entrées pour interroger les données suivantes, qui sont utilisées pour comparer la mise en œuvre actuelle avec les changements dans le prix d'alimentation Curve stETH :
Basé sur les données ci-dessus, nous pouvons construire trois flux de prix en utilisant le prix Curve Oracle stETH/ETH, et les fusionner avec ETH/USD pour dériver stETH/USD. Après cette opération, nous obtenons les données suivantes pour la visualisation :
Les données ci-dessus fournissent le prix stETH en USD, qui peut être analysé en fonction des prix stETH réalisés à partir de toutes les transactions de BOT. Le stETH réalisé (en USD) est simplement utilisé pour calculer le prix stETH pour chaque mkUSD fourni lors du rachat.
Ci-dessous, il y a 4 sources de prix stETH pour le bloc de trading BOT (1 référence et 3 alternatives discutées ci-dessus). Les flux de prix réalisés sont des prix provenant de oracles de prix implémentés (c'est-à-dire Chainlink). Cela est comparé à 3 flux utilisant Curve stETH/ETH comme noyau. Ici, une cotation plus élevée entraînera une diminution de la valeur de stETH échangée contre mkUSD et vice versa.
Basé sur les informations ci-dessus, nous pouvons modéliser la quantité relative de stETH reçue en échange de mkUSD et la normaliser en fonction de la quantité réellement reçue de l'oracle existant. Le graphique suivant affiche le stETH obtenu à partir de mkUSD avant que des frais ne soient facturés et traite les données pour éliminer les valeurs aberrantes afin d'améliorer la visualisation :
L'analyse révèle une tendance claire : lorsque l'on combine Curve stETH/ETH avec Uniswap ETH/USDC et Chainlink ETH/USD, le montant de stETH disponible pour le rachat de mkUSD diminue. Par conséquent, une réduction du nombre d'unités de stETH par rachat de mkUSD entraîne une diminution des bénéfices du BOT. La visualisation fournie illustre la comparaison entre les bénéfices du BOT sous différents prix d'alimentation supposés et le prix d'alimentation réel, frais exclus :
Il est évident que la combinaison de Curve stETH/ETH, Uniswap ETH/USDC et Chainlink ETH/USD réduit la rentabilité des rachats par rapport au prix d'alimentation réalisé.
Reconnaissant les risques inhérents liés à la seule dépendance de l'oracle Curve, notamment pendant les périodes de faible liquidité ou de fluctuations de liquidité, la solution proposée intègre de manière stratégique l'oracle Chainlink comme mesure de sauvegarde (c'est-à-dire un plan de secours) en cas de déviations. Compte tenu de la négligeable possibilité que Chainlink fournisse des données incorrectes, il peut servir de option de secours fiable.
Cette solution agit comme un filtre, en considérant à la fois les prix de Curve et de Chainlink. Des conditions sont établies au sein d'une fonction, servant de commutateur. Pour concevoir cette condition, le concept d'une plage acceptable est introduit. Cette plage représente la différence acceptable entre les prix des oracles de Chainlink et de Curve. Lorsque la différence observée dépasse cette plage, cela indique un possible biais ou une manipulation des données de l'oracle de Curve. Dans de tels cas, la fonction atténue les risques potentiels en favorisant les prix de Chainlink plus sécurisés. En revanche, lorsque la différence se situe dans la plage acceptable, la fonction s'appuie sur l'exactitude et la précision de l'oracle de Curve.
Il convient de noter que la plage acceptable peut être configurée de manière statique ou dynamique, en fonction de la volatilité des actifs sous-jacents (par exemple, ETH et LSD associé). La nature dynamique permet de s'adapter aux conditions du marché volatiles, garantissant l'élasticité et les mécanismes de réponse dans la détermination des prix. Cette stratégie à double volet réduit au minimum la dépendance à une seule source de données, renforçant ainsi la résilience et la fiabilité globale du mécanisme de tarification.
La solution introduit une méthode statique, acceptable_range, pour traiter les vulnérabilités potentielles lorsqu'on se fie uniquement à l'Oracle Curve. Alors que les prix générés par l'Oracle Curve peuvent être plus précis que Chainlink, ils pourraient être susceptibles de manipulation. Chainlink, en revanche, est robuste et testé, considéré comme un choix plus sûr dans l'industrie. Lorsque la différence entre Curve Oracle et Chainlink dépasse une valeur fixe, l'acceptable_range sert de seuil pour passer à l'alimentation Chainlink.
Stratégiquement, l'acceptable_range accepte les devises qui se situent dans une fourchette de ±1% par rapport aux devises Chainlink. Cela représente près de trois écarts-types de la différence moyenne entre Curve et Chainlink, en tenant compte des flux améliorés de stETH/ETH et ETH/USD par rapport au flux précédent de stETH/USD.
Le derived_price est une fonction ou un mécanisme conçu pour déterminer le devis final pour un actif donné, en particulier dans les scénarios impliquant l'oracle Curve et l'oracle Chainlink.
Dans la solution décrite, cette fonction évalue les devis provenant à la fois de l'oracle Curve et de l'oracle Chainlink. En fonction de la différence observée entre ces deux prix et de savoir si elle se situe dans la plage acceptée prédéfinie ou la dépasse, la fonction produit des prix dérivés différents.
Voici une comparaison de derived_price avec les autres sources de prix précédemment affichées :
Les bénéfices du BOT peuvent être visualisés par ce prix dérivé (puisque qu'il n'y a pas de déviation, ce prix sera exactement égal à Curve stETH/ETH et CL stETH/ETH) comme indiqué ci-dessous :
Analyser les bénéfices totaux peut révéler le tableau d'ensemble. Six valeurs aberrantes ont été identifiées et le bénéfice total pour chaque cas a été calculé avant et après avoir filtré les valeurs aberrantes.
Curve stETH/ETH et Uniswap ETH/USDC sont les meilleurs pour réduire le profit disponible pour les BOTs. Le prix dérivé qu'ils fournissent a le même potentiel de profit que l'implémentation actuelle de l'Oracle stETH, mais limite le profit, en supposant qu'il économise environ 35,4 ETH aux utilisateurs sur les 189 transactions analysées.
En raison de la forte dépendance aux citations des échanges décentralisés les plus liquides pour les activités on-chain et du fait que les bots MEV suivent également les mêmes citations lors de l'échange de mkUSD contre LSD, l'exactitude des citations (utilisées pour fixer les prix des rachats par l'Oracle) revêt une importance capitale.
Les données historiques suggèrent que les prix de l'Oracle du pool Curve sont plus proches de la référence (données de prix UniswapV3) par rapport aux prix Chainlink. Les données indiquent que la mise en œuvre de l'Oracle Curve réduirait le MEV pour les robots et fournirait de meilleurs taux de change pour les utilisateurs qui rachètent leurs trésors.
Bien que l'utilisation de Curve Oracle en tant qu'Oracle autonome puisse être tentante, l'efficacité de la rétroaction de prix de Curve dépend de la profondeur de liquidité des actifs spécifiques et de l'interaction avec le pool. Une solution Oracle hybride avec Curve Oracle et Chainlink Oracle peut être utilisée pour correspondre aux prix on-chain tout en conservant la fiabilité et la couverture du marché étendue héritée de Chainlink Oracle.
La solution hybride Oracle que nous proposons évalue l'écart type (SD) pour générer derived_price. Si l'écart type approche 0, cela indique une adhérence aux valeurs de référence derived_price, ce qui vaut la peine d'être considéré. Cela garantit que lorsque Curve Oracle s'écarte des seuils prédéfinis, la solution bascule dynamiquement vers la source Chainlink plus sûre. Comme cette solution produit presque toujours la cotation de stETH sur Curve, on suppose que l'activité MEV est la même que l'utilisation de stETH/ETH sur Curve, sans recours.
Annexe A: Scripts de traitement de données
Les scripts utilisés pour générer l'analyse dans ce rapport sont les suivants:
Annexe B: analyse résiduelle rETH/cbETH
Autres graphiques rETH
Chainlink et Curve
Uniswap et Curve
Uniswap et Chainlink
Vérifiez le pic rETH
Pendant la période d'observation, le prix de l'oracle rETH a atteint plusieurs fois des sommets, ce qui a entraîné une augmentation significative de l'écart de prix entre le prix de l'oracle et la référence au comptant. Voici un graphique plus détaillé montrant le comportement du ratio de pool de liquidité/token et du prix de l'oracle pendant plusieurs périodes de pic de prix.
start_block = 18824000
end_block = 18827000
interval_blocks = 100
Ratio de pool minier :
Prix Oracle :
start_block = 18850000
end_block = 18858000
interval_blocks = 100
Ratio du pool de minage :
Prix Oracle :
start_block = 18880000
end_block = 18885000
interval_blocks = 100
Ratio du pool de minage :
Prix Oracle :
Autres graphiques cbETH
Chainlink et Curve
Uniswap et Curve
Uniswap et Chainlink
Vérifiez Peak cbETH
Pendant la période d'observation, les prix de l'Oracle cbETH Curve ont connu plusieurs pics. À plusieurs reprises, cela a entraîné des pics significatifs dans l'écart de prix entre le prix de l'Oracle et la référence spot. Ci-dessous se trouve un graphique plus détaillé montrant le comportement des ratios de pool de liquidité/liquidité des jetons pendant ces périodes de poussées de prix et le comportement des prix de l'Oracle.
start_block = 18693500
end_block = 18696000
interval_blocks = 10
Ratio du pool de minage :
Prix Oracle:
start_block = 18814000
end_block = 18816500
interval_blocks = 10
Ratio de pool minier :
Prix Oracle :
start_block = 18800000
end_block = 18805000
interval_blocks = 10
Ratio du pool minier :
Prix Oracle :
Cet article est reproduit de [Gatemarsbit]], titre original "Analyse comparative des oracles optionnels Prisma", les droits d'auteur appartiennent à l'auteur original [PrismaRisk], si vous avez des objections à la réimpression, veuillez contacterÉquipe Gate Learn, l'équipe le traitera dès que possible selon les procédures pertinentes.
Avertissement : Les points de vue et opinions exprimés dans cet article ne représentent que les opinions personnelles de l'auteur et ne constituent pas des conseils en investissement.
D'autres versions linguistiques de l'article sont traduites par l'équipe Gate Learn, non mentionnées dansGate.io, l'article traduit ne peut être reproduit, distribué ou plagié.
Cette étude est née du défi d'obtenir des informations de prix fiables on-chain qui maximisent la sécurité tout en reflétant les prix spot actuels des actifs cibles. Nous nous concentrons spécifiquement sur les actifs de garantie de Prisma Finance (wstETH, rETH, cbETH et sfrxETH) ainsi que sur les dérivés de staking liquide basés sur Ethereum (LSD). Certains de ces actifs manquent de sources de données Chainlink (souvent considérées comme la référence en matière de données de prix fiables), ce qui a affecté leur intégration avec la plateforme Prisma.
La dernière implémentation de la piscine stable de Curve Finance inclut un Oracle de piscine interne, qui calcule la moyenne mobile exponentielle (EMA) pour dériver des données de prix résistantes à la manipulation. Alors que les intégrateurs ont commencé à explorer l'utilisation de l'Oracle dans d'autres applications DeFi, l'Oracle est principalement utilisé pour garantir la sécurité des garanties sur le marché crvUSD de Curve.
L'objectif principal de ce rapport est de déterminer si l'oracle de Curve Finance peut servir de solution fiable en remplacement de Chainlink pour les jetons ETH LSD. Cette étude implique une analyse statistique de l'efficacité de l'oracle de prix de Curve, comparant sa volatilité, sa précision et sa performance globale avec les prix de référence Uniswap (supposés être des prix précis on-chain).
L'analyse est divisée en deux études connexes:
Analyse résiduelle des oracles stETH : Une étude comparative entre Chainlink et Curve, utilisant des données historiques pour déterminer l'écart de l'oracle par rapport à la moyenne et à l'écart type du prix de référence.
Analyse de rachat stETH MEV : Une étude comparative entre Chainlink et l'Oracle on-chain, utilisant des données historiques pour examiner les événements de rachat sur Prisma et estimer la rentabilité des robots et le comportement attendu en utilisant d'autres Oracles.
Après analyse, nous fournissons des spécifications préliminaires pour l'Oracle, en attendant des améliorations dans la déviation du prix de l'Oracle tout en garantissant la fiabilité de l'Oracle. La solution proposée peut servir de plan directeur initial pour d'autres études visant à optimiser l'Oracle.
L'efficacité des oracles est évaluée dans le cadre spécifique de l'utilisation de Prisma : liquidation et rachat. (De plus, il convient de noter que les mêmes oracles sont également utilisés pour les frais d'émission de jetons et la vente des jetons acquis au « pool stable tokenisé », dont l'importance augmentera une fois lancée).
La performance de l'Oracle est cruciale pour les utilisateurs de Prisma car les arbitragistes peuvent avoir des opportunités de profit à partir des différences entre les prix de l'Oracle et les prix au comptant. S'assurer de l'utilisation du retour de prix le plus précis lors de la liquidation et du rachat, sans sacrifier la sécurité des sources de tarification, est conforme aux meilleurs intérêts du protocole Prisma et de ses dépositaires du trésor.
Deux fonctions Oracle au sein de Prisma sont décrites comme suit :
Pour protéger Gate de l'insolvabilité, où les positions de dette dépassent la valeur de leur garantie, le contrat LiquidationManager exécute la logique de liquidation sur tous les TroveManagers actifs (trésoreries Gate). La liquidation peut être déclenchée de trois manières, en fonction du ratio de garantie du compte cible et du ratio de garantie global du système.
Ratio de garantie individuelle (ICR) <= 100%: Le compte (trésorerie) dispose d'une garantie insuffisante. Toute dette et garantie sont redistribuées parmi les trésoreries actives restantes, socialisant ainsi efficacement la perte.
100% < ICR < Ratio de Collatéral Minimum (RCM) : Le trésor tombe en dessous du seuil de liquidation mais peut être liquidé en toute sécurité. Le pool stable est utilisé comme réserve pour gérer les liquidations (en incitant le pool de liquidation). Le collatéral est alloué aux déposants du pool stable. Si le solde du pool stable est insuffisant pour rembourser intégralement le trésor, la dette restante et le collatéral sont redistribués parmi les trésors actifs restants.
MCR <= ICR < Global Total Collateral Ratio (GTCR) && GTCR < 150%: Le système est en mode de récupération, ce qui signifie que les trésors peuvent être liquidés lorsque le CR est inférieur au GTCR plutôt qu'au MCR. Les dépôts dans le pool stable sont utilisés en premier pour liquider le trésor. Un collatéral équivalent à la valeur de la dette à MCR est distribué parmi les déposants du pool stable. Le reste du collatéral peut être réclamé par le propriétaire du trésor.
La possibilité de liquidation de Prisma augmente lorsque l'ETH ou l'ETH LSD connaît des fluctuations de prix significatives, en particulier des baisses, dans des conditions de marché très volatiles. Alors que les défaillances ou manipulations d'Oracle peuvent affecter le protocole à tout moment, le risque de défaillance d'Oracle peut augmenter aux moments les plus cruciaux. Il se peut que les actifs de garantie ne parviennent pas à mettre à jour les prix en temps opportun en raison de pics de frais de gaz, ou que la méthodologie de tarification d'Oracle ne parvienne pas à suivre adéquatement la volatilité accrue, ce qui entraîne une mauvaise fixation des prix. Les insolvabilités peuvent augmenter, nécessitant une redistribution parmi les trésoreries actives, ou les emprunteurs peuvent être liquidés de manière injuste (dans les cas où Oracle signale erroneusement des prix inférieurs aux prix du marché équitable).
Les arbitragistes peuvent toujours initier des rachats, en choisissant de racheter 1 mkUSD de valeur de garantie pour 1 dollar américain (+ frais de rachat dynamiques), en commençant par le trésor ayant le ratio de garantie le plus bas dans le système. Cela aide à renforcer son ancrage lorsque le prix du mkUSD tombe en dessous de 1 dollar américain. Le processus de rachat réduit le risque de garantie du trésor cible et augmente son ratio de garantie. La partie exécutant le rachat paie des frais appelés frais de rachat. La plage de frais de rachat est définie par TroveManager et est la somme du plancher des frais de rachat + du taux de base. Les variables stockées dans TroveManager augmentent proportionnellement avec l'offre totale de mkUSD rachetée et diminuent linéairement avec le temps. Ce frais dynamique, le taux de base, ajuste le taux de rachat rentable.
Alors que les liquidations sur Prisma ont historiquement été rares, les rachats sont courants et méritent une attention particulière de la part des Oracles. Les bots MEV recherchent activement de telles opportunités pour réaliser rapidement des profits grâce à des prêts flash.
En plus de l'inconvénient de la rachat forcé de leurs trésors, les utilisateurs peuvent subir une certaine extraction de valeur en raison des écarts entre l'Oracle et les prix au comptant. Une mauvaise fixation des prix peut entraîner une perte d'actifs plus importante que nécessaire pour les utilisateurs, en particulier lorsque l'Oracle signale des prix inférieurs à la valeur marchande équitable. D'autre part, des prix signalés par l'Oracle supérieurs aux prix du marché équitable peuvent entraver les rachats, annulant ainsi l'objectif du mécanisme de rachat qui impose le plancher de la peg mkUSD.
Voici un bref aperçu des principaux candidats pour les flux de prix d'Oracle sur Prisma.
Chainlink est un réseau oracle décentralisé qui agrège des données provenant d'une large gamme de sources de marché et connecte ces données à des contrats intelligents. Son architecture repose sur des opérateurs de nœuds indépendants qui récupèrent et transmettent des données provenant de divers échanges et agrégateurs de données de marché via des API, minimisant ainsi les points de défaillance uniques et renforçant la sécurité. L'intégrité des données est assurée par des méthodes cryptographiques et des mécanismes de consensus qui vérifient l'exactitude des données avant la transmission. Son approche implique une tarification des actifs pondérée par le volume (VWAP) pour agréger des valeurs marchandes équitables qui représentent au mieux les prix au comptant des actifs.
Les réseaux de nœuds poussent régulièrement (battement de cœur) ou en fonction des seuils d'écart de prix les prix sur la chaîne. Cette limitation, due aux frais de gaz élevés sur le mainnet, peut rendre les mises à jour de prix coûteuses et entraîner une latence accrue, réduisant ainsi les performances de l'Oracle. Le coût de maintenance de tels Oracles peut être élevé, surtout en période de forte volatilité, rendant les mises à jour opportunes de l'Oracle cruciales.
Les récentes implémentations des pools Curve (pools StableSwap et CryptoSwap) incluent des calculs de prix EMA exposés par des fonctions getter telles que price_oracle()
. Ces pools ne dépendent pas d'oracles externes, mais calculent plutôt les prix des actifs par rapport au jeton à l'indice 0 du pool en fonction de leurs propres activités de trading internes. L'EMA augmente les coûts de manipulation grâce à des ajustements de prix lissés, trouvant un équilibre entre la résistance à la manipulation et l'écart de prix par rapport au spot. Chaque pool a ma_exp_time
qui peut être configuré via le vote du Curve DAO.
Comme indiqué dans la documentation de l'Oracle Curve, l'Oracle EMA est activement en cours de développement :
Si vous souhaitez utiliser la fonctionnalité 'oracle de prix' de Curve ou tout oracle de prix pour fournir des données de tarification on-chain dans votre application décentralisée que vous construisez, nous vous suggérons de faire preuve d'une prudence accrue.
Différentes implémentations de pool modifient les versions du code de l'Oracle EMA, de sorte que les intégrateurs doivent comprendre l'implémentation de l'Oracle du pool cible.
En novembre 2023, une erreur affectant le pool Oracle a été découverte lors du déploiement de la mise en œuvre du pool stableswap-ng. Cette erreur a été trouvée peu de temps après le déploiement de la mise en œuvre du pool par yAudit lors d'un audit secondaire. Cela a incité à proposer une mise à niveau de la mise en œuvre et à abandonner quelques pools affectés. Aucun fonds n'était en danger, mais cet événement a mis en lumière le développement actif des oracles de pool Curve et le potentiel d'incohérences entre les pools, malgré des audits approfondis, et le potentiel d'erreurs persistantes qui pourraient rendre les oracles vulnérables à la manipulation ou aux inexactitudes.
La troisième partie de ce rapport est une analyse du rachat du gestionnaire de trésorerie wstETH TroveManager. Étant donné l'impact significatif du rachat sur les utilisateurs de Prisma, cette section présente des observations sur les rachats historiques, qui seront évalués en comparaison avec l'Oracle EMA Curve alternative dans l'analyse comparative.
Interroger les événements de rachat sur le gestionnaire de Trove wstETH révèle plus de 200 transactions de rachat au total, dont 190 transactions identifiées comme des transactions BOT (la méthode utilisée pour identifier les transactions exécutées par des BOT sera expliquée plus tard dans la même section). Ci-dessous, une visualisation montrant la fréquence de ces transactions dans le temps.
Source: Dune query_3402461
Il n'y a que 3 BOTs qui échangent fréquemment mkUSD :
Source : Dune query_3402461
Chaque BOT suit un processus général similaire d'acquisition de mkUSD et de rachat. Ci-dessous, l'une des transactions BOT, révélant quelques informations utiles :
Source: Explorateur Tx Phalcon
Le modèle de transaction BOT peut être subdivisé plus avant comme suit :
Obtenir des prêts flash de Uniswap V3: USDC.
Convertir USDC en mkUSD en utilisant le Curve.fi Factory USD Metapool : Prisma mkUSD.
Échangez mkUSD contre wstETH sur le wstETH TroveManager.
Convertir wstETH en stETH sur le wstETH.
Échangez stETH contre ETH sur le pool Curve stETH/ETH.
Envelopper ETH, rembourser le prêt et distribuer les profits et les commissions.
La rentabilité de MEV dépend des différences de prix dans les étapes 2, 3 et 5 :
2: Comme le prix du mkUSD diminue, la rentabilité de la rachat augmente.
3: Comme les frais de rachat dynamiques diminuent en fonction des quantités de rachat récentes et du temps écoulé depuis le rachat, la rentabilité du rachat augmente.
-5: Comme le glissement dans les échanges d'actifs (par exemple, stETH) augmente, la rentabilité du rachat diminue. Des actifs tels que stETH peuvent être directement échangés contre de l'ETH sous-jacent, mais ce processus nécessite une période d'attente, ce qui rend la liquidité sur le marché secondaire crucial.
Prisma utilise un mécanisme pour limiter les opportunités de profit de la conversion de mkUSD en wstETH par le biais de frais dynamiques. L'étape 3 implique des frais dynamiques pour éviter des conversions fréquentes et excessives. Malgré ce mécanisme, des conversions peuvent encore se produire en raison d'une mauvaise estimation de l'oracle pour extraire le MEV. Les cotations de l'oracle pour la conversion de mkUSD peuvent offrir aux propriétaires du trésor des taux de garantie suboptimaux, ce qui entraîne une expérience utilisateur négative.
La proposition de modification des prix de l'Oracle Prisma pour le feed stETH a été approuvée. Initialement, Prisma utilisait l'oracle stETH/USD de Chainlink, avec un seuil de déviation de 1% pour le TroveManager wstETH. Il a été constaté que l'utilisation d'une combinaison des oracles stETH/ETH et ETH/USD de Chainlink pourrait conduire à une amélioration, avec un seuil de déviation de 0,5% pour chaque oracle.
Veuillez vous référer à l'écart entre le nouvel Oracle et l'ancien Oracle avec une résolution de 15 blocs :
Source: Graphique par @wavey
Il a été observé que lorsque le prix de négociation du mkUSD tombe en dessous de son taux d'ancrage, des rachats excessifs se produisent en raison d'une déviation de l'Oracle dépassant 1 %. Dans ces cas, nous avons constaté que les frais dynamiques étaient insuffisants pour empêcher les rachats excessifs causés par des déviations de prix. Veuillez vous référer à l'ajustement des frais de rachat pour les événements de rachat inférieurs.
Source: Chart by @wavey
Ces rachats peuvent entraîner des coûts indirects pour les utilisateurs de Prisma, car ils peuvent recevoir des taux défavorables lors de la récupération de leurs coffres. L'analyse de Wavey indique que l'oracle stETH/USD est plus sujet à la déviation par rapport aux combinaisons d'oracles validées dans les données ci-dessus. Des déviations transitoires dépassant 1,2 % ont créé des opportunités pour les bots MEV pour exploiter.
La proposition de changer l'Oracle (PIP-004) a été exécutée le 17 novembre 2023 à 735 PM +UTC, ainsi que cette transaction. En se basant sur le graphique des prix en mkUSD ci-dessous et sur la date d'exécution de la proposition, on peut observer qu'après l'exécution de la proposition, le prix réel du mkUSD en USDC a diminué. La rentabilité réduite des rachats en raison des améliorations de l'oracle peut entraîner une diminution de la force de fixation.
Source: Dune query_5685458
D'autres facteurs d'influence doivent également être pris en compte, notamment les limites du modèle de taux d'intérêt du protocole, les cas d'utilisation de mkUSD et les mesures incitatives mal alignées. Une autre proposition significative qui restreint les rachats est PIP-019, exécutée le 31 janvier. Cette proposition a augmenté les frais de rachat de base pour tous les gestionnaires de trésorerie à 1%-1.5%, réduisant l'élasticité d'ancrage de mkUSD mais au prix d'une diminution du risque de rachat pour les propriétaires de trésors de Prisma.
L'analyse vise à évaluer les performances des oracles Prisma implémentés et à évaluer les performances hypothétiques des oracles Curve EMA on-chain alternatives en utilisant des données historiques. Les résultats de l'étude fourniront des aperçus initiaux sur le comportement des oracles off-chain et on-chain, permettant une évaluation plus détaillée dans les recherches ultérieures.
Le but de cette analyse est de déterminer si l'oracle actuel fournit la solution de performance la plus optimale ou si des améliorations peuvent être apportées en mettant en œuvre des solutions on-chain ou hybrides en utilisant l'oracle du pool EMA de Curve.
L'analyse portera spécifiquement sur le stETH car il s'agit du LSD le plus couramment utilisé, avec un flux de prix mature de Chainlink et une liquidité profonde dans le pool Curve. L'analyse des autres garanties répertoriées sur Prisma a été menée et les résultats sont fournis à l'appendice B du rapport à titre de référence.
L'analyse comparative consiste à évaluer le degré d'alignement entre les données d'essai et l'ensemble de données de référence. Dans ce cas, deux ensembles de données sont considérés : les données d'essai d'intérêt et l'ensemble de données de référence. Bien qu'on s'attende à ce que les données d'essai suivent de près les données de référence, des écarts peuvent se produire.
Pour quantifier l'alignement, nous examinons les résidus, qui représentent essentiellement la différence entre les données de l'essai et les données de référence. L'analyse des résidus vise à révéler des motifs ou des tendances dans ces différences.
Lors de l'analyse des résidus (écarts par rapport aux valeurs de référence), des observations sont faites en fonction de l'écart type des résidus. L'écart type (SD) est une mesure statistique utilisée pour quantifier la variabilité ou la dispersion d'un ensemble de valeurs. Il donne une indication de la répartition des valeurs autour de la moyenne (moyenne). Un écart type faible implique que les points de données ont tendance à être proches de la moyenne, tandis qu'un écart type élevé indique que les points de données sont répartis sur une plage plus large.
Dans notre cas, une moyenne proche de 0 est souhaitable car elle indique que les prix fournis ne surestiment ni ne sous-estiment les prix de référence. Cependant, une moyenne proche ou égale à 0 avec un écart type relativement élevé suggère des fluctuations significatives, qui sont indésirables car elles correspondent à des erreurs de prix sévères. Un flux oracle avec une moyenne de zéro et l'écart-type minimum est le résultat idéal, indiquant que le flux suit précisément les prix au comptant.
Pour surveiller et évaluer l'exactitude de l'activité des prix de l'oracle on-chain, les devis obtenus auprès des destinations de trading les plus liquides (à l'exclusion de Curve) servent de référence pour l'analyse des résidus. En particulier, les devis de la paire de devises LSD/ETH sur Uniswap sont les points de référence principaux dans ce scénario.
Notre analyse comprend deux stratégies pour dériver les prix de stETH Chainlink. Cela est fait car il a été constaté que l'écart de l'alimentation originale stETH/USD de Chainlink est plus élevé que l'écart en utilisant stETH/ETH + ETH/USD. Les oracles ont été mis à jour selon les propositions de gouvernance. Par la suite, l'analyse impliquant le prix amélioré de stETH/ETH Chainlink en ETH est désignée sous le nom de stETHv1, tandis que l'alimentation de combinaison stETH/USD + ETH/USD (reproduisant la performance originale de l'oracle stETH, standardisée en ETH) est désignée sous le nom de stETHv2.
À des fins d'analyse, les données du dernier trimestre de 2023 ont été obtenues pour tous les actifs respectifs (du bloc 18331000 au bloc 18931000, avec une résolution de 250 blocs pour l'ensemble de données). Cela crée un ensemble de données contenant 2401 points de données pour tous les actifs.
L'actif principal pris en considération est stETH, car c'est le type de garantie actuellement accepté par Prisma, avec à la fois l'alimentation Chainlink et le pool Curve StableSwap-ng disponibles pour référence (veuillez vous référer à l'Annexe B pour une analyse sur rETH et cbETH, qui utilise l'ancienne implémentation du pool CryptoSwap). Toutes les données ont été obtenues en interrogeant les prix pour la plage de blocs spécifiée.
Les prix d'Oracle sont analysés à partir des sources suivantes :
Courbe de pool de liquidité
Retour de prix de Chainlink
L'adresse du pool de minage Uniswap en tant qu'agent de référence du prix au comptant est la suivante :
Prix au comptant Uniswap
Pour standardiser LSD sur son ETH sous-jacent, nous utilisons le taux de change interne LSD/ETH :
Taux de change interne LSD/ETH
Dans cette section, nous comparerons l'exactitude du flux de prix Chainlink stETH avec Curve.
Feed Chainlink stETHv1 vs. Curve
Chainlink: alimentation stETH/ETH
Courbe : piscine stETH/ETH
Ci-dessous est une comparaison directe des prix de stETH de Chainlink et de Curve. En raison du cycle de battement de 24 heures de Chainlink stETH/ETH, le prix fluctue tous les quelques blocs. Comparativement, les fluctuations sont plus facilement observables dans le flux Chainlink (mieux visualisées dans le flux Chainlink stETH/USD) par rapport à Curve, car Curve utilise un temps EMA de 10 minutes (ma_exp_time) pour dériver son prix.
Si nous soustrayons le prix de Curve du prix de Chainlink, nous obtiendrons les résidus, comme indiqué ci-dessous :
La valeur moyenne de l'écart est ~-0.000305.
Une observation importante qui peut être faite ici est que Curve Oracle surestime légèrement ses données de prix par rapport à Chainlink.
Chainlink stETHv2 et Curve
Chainlink : alimentation stETH/USD / alimentation ETH/USD
Courbe: pool stETH/ETH
Voici une comparaison des prix provenant d'alternatives Chainlink normalisées en ETH (stETH/USD et ETH/USD) par rapport à la courbe stETH. Comme Chainlink stETH/USD a un seuil de déviation de 1 % (comparé à 0,5 % dans le flux stETH/ETH), le prix présente une plus grande déviation autour du prix d'ancrage.
Comme observé précédemment, les fluctuations des prix stETH/USD de Chainlink sont plus prononcées par rapport à Curve.
La valeur moyenne de l'écart est ~-0.000171.
En fonction de l'échelle, ce flux présente des résidus plus importants, c'est-à-dire plus de volatilité, que stETH/ETH.
Dans cette section, nous comparerons la précision historique du flux de prix Chainlink stETH avec le prix de référence de Uniswap.
En supposant que les données de prix de pool UniswapV3 servent de proxy fiable pour les prix au comptant, nous pouvons comparer les données de référence précédemment obtenues pour vérifier la proximité de l'alimentation de l'oracle Chainlink avec les valeurs de référence.
Uniswap Spot vs. Chainlink stETHv1
Chainlink: alimentation stETH/ETH
Uniswap: taux de change du pool wstETH/ETH / échange interne wstETH/stETH
Voici l'écart réel entre le prix spot Uniswap et Chainlink stETH/ETH :
Moyenne résiduelle = 0.000415
Écart type des différences de prix = 0,000601
Uniswap Spot vs. Chainlink stETHv2
Chainlink: alimentation stETH/USD / alimentation ETH/USD
Uniswap: taux de change interne wstETH/ETH pool / wstETH/stETH
Voici l'écart réel entre Uniswap stETH et Chainlink stETH (stETH/USD) :
Différence de prix moyenne = 0.000281
Écart type de la différence de prix = 0.002747
Ici, nous comparons Chainlink stETHv1 (c'est-à-dire stETH/ETH) et stETHv2 (c'est-à-dire stETH/USD) avec les données d'Uniswap, et les résultats indiquent que l'écart de stETHv2 est significativement plus grand que stETHv1.
La même observation a également été faite dans la proposition de gouvernance Prisma (PIP-004) lorsque l'oracle est passé de stETH/USD à stETH/ETH + ETH/USD pour réduire les écarts de cotation.
Dans cette section, nous comparerons l'exactitude historique de l'oracle stETH Curve avec le prix de référence de Uniswap.
En supposant que les données de prix du pool UniswapV3 servent de proxy fiable pour les prix au comptant, nous pouvons comparer les données de référence précédemment obtenues pour vérifier la proximité de l'alimentation de l'oracle Curve avec les valeurs de référence.
Uniswap Spot vs. Courbe
Courbe : pool stETH/ETH
Uniswap: taux de change interne du pool wstETH/ETH / wstETH/stETH
Basé sur une analyse résiduelle similaire à celle ci-dessus, nous obtenons les indicateurs suivants à comparer avec le benchmark précédemment défini :
La différence de prix moyenne = 0.000110.
L'écart type des différences de prix = 0.000141.
Tel qu'observé, le prix moyen rapporté par Curve est légèrement inférieur à celui du spot Uniswap, avec un écart type significativement inférieur par rapport à l'une ou l'autre source de Chainlink.
Lors de la comparaison de ces métriques, nous constatons que l'écart des données de Chainlink est significativement plus grand que celui de Curve lors de la référence aux données Uniswap en tant que proxy pour les prix spot.
Étant donné que les observations ci-dessus sont basées sur les écarts de chaque source de prix, il est possible que le flux de l'oracle Curve montre des écarts positifs tandis que le flux de Chainlink montre des écarts négatifs, et vice versa. Ce scénario est entièrement annulé car les plages d'écarts des flux de Chainlink et de l'oracle Curve sont plus petites par rapport aux plages d'écarts de Uniswap & Chainlink et Uniswap & Curve.
Le tableau ci-dessous affiche l'analyse des résidus effectuée sur les données collectées. La moyenne des résidus, multipliée par 100, donne le pourcentage moyen de déviation de l'actif cible par rapport à la référence (en termes de USD, par rapport aux prix de l'ETH libellés en USD).
Le tableau compare directement les performances relatives de Chainlink et Curve par rapport à la référence Uniswap en termes de moyenne et d'écart type pour chaque actif. Dans tous les cas, Curve présente des valeurs moyennes et d'écart type inférieures. Le multiplicateur de précision montre la précision relative de chaque valeur observée.
Les points principaux ici sont les suivants :
L'analyse vise à comparer les prix de mise en œuvre des événements de rachat dans le gestionnaire de trésorerie wstETH avec les prix hypothétiques cités à l'aide de données historiques par des oracles alternatifs sur chaîne. Les résultats de l'étude fourniront des premières indications sur le comportement des oracles décentralisés et centralisés, permettant une évaluation plus détaillée dans des recherches ultérieures.
Le but de cette analyse est de déterminer si l'oracle actuel fournit la meilleure solution de performance dans des scénarios spécifiques de rachat ou si des améliorations peuvent être apportées grâce à la mise en œuvre de solutions on-chain ou hybrides, en utilisant les oracles de pool EMA de Curve.
Cette analyse portera spécifiquement sur stETH, car il s'agit du LSD le plus couramment utilisé et bénéficie de flux de prix Chainlink matures et d'une liquidité profonde dans le pool Curve. L'étude agrégera tous les événements de rachat, comparant les prix oracle stETH réalisés avec plusieurs prix oracle alternatifs, libellés en USD, et utilisant le prix oracle stETH/ETH de Curve.
Pour cette analyse, le prix stETH réalisé est calculé en divisant le montant racheté de mkUSD par le montant de stETH perdu par le gestionnaire de la réserve sous forme de wstETH. Pour déterminer la quantité de stETH, nous devons prendre en compte les wstETH reçus lors du rachat plus les wstETH dépensés sous forme de frais et les convertir en stETH. Si une autre source offre constamment des profits inférieurs aux racheteurs, nous pouvons dire que leur performance de MEV est meilleure que le prix réel.
Le gestionnaire de trésorerie wstETH Trove est utilisé pour récupérer tous les hachages de transactions lors de l'obtention de mkUSD en échange. Les transactions où l'adresse qui rachète mkUSD reçoit et brûle mkUSD sont considérées comme des transactions BOT. Des requêtes détaillées pour les événements de rachat peuvent être trouvées ici : Dune query_3352919. Cette requête est essentielle pour récupérer toutes les données des transactions BOT.
La requête Dune est utilisée pour identifier les transactions BOT qui obtiennent toutes les valeurs de hash de transaction, le taux de change wstETH réalisé pour le rachat mkUSD, et le numéro de bloc des événements de rachat. Les numéros de bloc obtenus à partir de la requête sont utilisés comme entrées pour interroger les données suivantes, qui sont utilisées pour comparer la mise en œuvre actuelle avec les changements dans le prix d'alimentation Curve stETH :
Basé sur les données ci-dessus, nous pouvons construire trois flux de prix en utilisant le prix Curve Oracle stETH/ETH, et les fusionner avec ETH/USD pour dériver stETH/USD. Après cette opération, nous obtenons les données suivantes pour la visualisation :
Les données ci-dessus fournissent le prix stETH en USD, qui peut être analysé en fonction des prix stETH réalisés à partir de toutes les transactions de BOT. Le stETH réalisé (en USD) est simplement utilisé pour calculer le prix stETH pour chaque mkUSD fourni lors du rachat.
Ci-dessous, il y a 4 sources de prix stETH pour le bloc de trading BOT (1 référence et 3 alternatives discutées ci-dessus). Les flux de prix réalisés sont des prix provenant de oracles de prix implémentés (c'est-à-dire Chainlink). Cela est comparé à 3 flux utilisant Curve stETH/ETH comme noyau. Ici, une cotation plus élevée entraînera une diminution de la valeur de stETH échangée contre mkUSD et vice versa.
Basé sur les informations ci-dessus, nous pouvons modéliser la quantité relative de stETH reçue en échange de mkUSD et la normaliser en fonction de la quantité réellement reçue de l'oracle existant. Le graphique suivant affiche le stETH obtenu à partir de mkUSD avant que des frais ne soient facturés et traite les données pour éliminer les valeurs aberrantes afin d'améliorer la visualisation :
L'analyse révèle une tendance claire : lorsque l'on combine Curve stETH/ETH avec Uniswap ETH/USDC et Chainlink ETH/USD, le montant de stETH disponible pour le rachat de mkUSD diminue. Par conséquent, une réduction du nombre d'unités de stETH par rachat de mkUSD entraîne une diminution des bénéfices du BOT. La visualisation fournie illustre la comparaison entre les bénéfices du BOT sous différents prix d'alimentation supposés et le prix d'alimentation réel, frais exclus :
Il est évident que la combinaison de Curve stETH/ETH, Uniswap ETH/USDC et Chainlink ETH/USD réduit la rentabilité des rachats par rapport au prix d'alimentation réalisé.
Reconnaissant les risques inhérents liés à la seule dépendance de l'oracle Curve, notamment pendant les périodes de faible liquidité ou de fluctuations de liquidité, la solution proposée intègre de manière stratégique l'oracle Chainlink comme mesure de sauvegarde (c'est-à-dire un plan de secours) en cas de déviations. Compte tenu de la négligeable possibilité que Chainlink fournisse des données incorrectes, il peut servir de option de secours fiable.
Cette solution agit comme un filtre, en considérant à la fois les prix de Curve et de Chainlink. Des conditions sont établies au sein d'une fonction, servant de commutateur. Pour concevoir cette condition, le concept d'une plage acceptable est introduit. Cette plage représente la différence acceptable entre les prix des oracles de Chainlink et de Curve. Lorsque la différence observée dépasse cette plage, cela indique un possible biais ou une manipulation des données de l'oracle de Curve. Dans de tels cas, la fonction atténue les risques potentiels en favorisant les prix de Chainlink plus sécurisés. En revanche, lorsque la différence se situe dans la plage acceptable, la fonction s'appuie sur l'exactitude et la précision de l'oracle de Curve.
Il convient de noter que la plage acceptable peut être configurée de manière statique ou dynamique, en fonction de la volatilité des actifs sous-jacents (par exemple, ETH et LSD associé). La nature dynamique permet de s'adapter aux conditions du marché volatiles, garantissant l'élasticité et les mécanismes de réponse dans la détermination des prix. Cette stratégie à double volet réduit au minimum la dépendance à une seule source de données, renforçant ainsi la résilience et la fiabilité globale du mécanisme de tarification.
La solution introduit une méthode statique, acceptable_range, pour traiter les vulnérabilités potentielles lorsqu'on se fie uniquement à l'Oracle Curve. Alors que les prix générés par l'Oracle Curve peuvent être plus précis que Chainlink, ils pourraient être susceptibles de manipulation. Chainlink, en revanche, est robuste et testé, considéré comme un choix plus sûr dans l'industrie. Lorsque la différence entre Curve Oracle et Chainlink dépasse une valeur fixe, l'acceptable_range sert de seuil pour passer à l'alimentation Chainlink.
Stratégiquement, l'acceptable_range accepte les devises qui se situent dans une fourchette de ±1% par rapport aux devises Chainlink. Cela représente près de trois écarts-types de la différence moyenne entre Curve et Chainlink, en tenant compte des flux améliorés de stETH/ETH et ETH/USD par rapport au flux précédent de stETH/USD.
Le derived_price est une fonction ou un mécanisme conçu pour déterminer le devis final pour un actif donné, en particulier dans les scénarios impliquant l'oracle Curve et l'oracle Chainlink.
Dans la solution décrite, cette fonction évalue les devis provenant à la fois de l'oracle Curve et de l'oracle Chainlink. En fonction de la différence observée entre ces deux prix et de savoir si elle se situe dans la plage acceptée prédéfinie ou la dépasse, la fonction produit des prix dérivés différents.
Voici une comparaison de derived_price avec les autres sources de prix précédemment affichées :
Les bénéfices du BOT peuvent être visualisés par ce prix dérivé (puisque qu'il n'y a pas de déviation, ce prix sera exactement égal à Curve stETH/ETH et CL stETH/ETH) comme indiqué ci-dessous :
Analyser les bénéfices totaux peut révéler le tableau d'ensemble. Six valeurs aberrantes ont été identifiées et le bénéfice total pour chaque cas a été calculé avant et après avoir filtré les valeurs aberrantes.
Curve stETH/ETH et Uniswap ETH/USDC sont les meilleurs pour réduire le profit disponible pour les BOTs. Le prix dérivé qu'ils fournissent a le même potentiel de profit que l'implémentation actuelle de l'Oracle stETH, mais limite le profit, en supposant qu'il économise environ 35,4 ETH aux utilisateurs sur les 189 transactions analysées.
En raison de la forte dépendance aux citations des échanges décentralisés les plus liquides pour les activités on-chain et du fait que les bots MEV suivent également les mêmes citations lors de l'échange de mkUSD contre LSD, l'exactitude des citations (utilisées pour fixer les prix des rachats par l'Oracle) revêt une importance capitale.
Les données historiques suggèrent que les prix de l'Oracle du pool Curve sont plus proches de la référence (données de prix UniswapV3) par rapport aux prix Chainlink. Les données indiquent que la mise en œuvre de l'Oracle Curve réduirait le MEV pour les robots et fournirait de meilleurs taux de change pour les utilisateurs qui rachètent leurs trésors.
Bien que l'utilisation de Curve Oracle en tant qu'Oracle autonome puisse être tentante, l'efficacité de la rétroaction de prix de Curve dépend de la profondeur de liquidité des actifs spécifiques et de l'interaction avec le pool. Une solution Oracle hybride avec Curve Oracle et Chainlink Oracle peut être utilisée pour correspondre aux prix on-chain tout en conservant la fiabilité et la couverture du marché étendue héritée de Chainlink Oracle.
La solution hybride Oracle que nous proposons évalue l'écart type (SD) pour générer derived_price. Si l'écart type approche 0, cela indique une adhérence aux valeurs de référence derived_price, ce qui vaut la peine d'être considéré. Cela garantit que lorsque Curve Oracle s'écarte des seuils prédéfinis, la solution bascule dynamiquement vers la source Chainlink plus sûre. Comme cette solution produit presque toujours la cotation de stETH sur Curve, on suppose que l'activité MEV est la même que l'utilisation de stETH/ETH sur Curve, sans recours.
Annexe A: Scripts de traitement de données
Les scripts utilisés pour générer l'analyse dans ce rapport sont les suivants:
Annexe B: analyse résiduelle rETH/cbETH
Autres graphiques rETH
Chainlink et Curve
Uniswap et Curve
Uniswap et Chainlink
Vérifiez le pic rETH
Pendant la période d'observation, le prix de l'oracle rETH a atteint plusieurs fois des sommets, ce qui a entraîné une augmentation significative de l'écart de prix entre le prix de l'oracle et la référence au comptant. Voici un graphique plus détaillé montrant le comportement du ratio de pool de liquidité/token et du prix de l'oracle pendant plusieurs périodes de pic de prix.
start_block = 18824000
end_block = 18827000
interval_blocks = 100
Ratio de pool minier :
Prix Oracle :
start_block = 18850000
end_block = 18858000
interval_blocks = 100
Ratio du pool de minage :
Prix Oracle :
start_block = 18880000
end_block = 18885000
interval_blocks = 100
Ratio du pool de minage :
Prix Oracle :
Autres graphiques cbETH
Chainlink et Curve
Uniswap et Curve
Uniswap et Chainlink
Vérifiez Peak cbETH
Pendant la période d'observation, les prix de l'Oracle cbETH Curve ont connu plusieurs pics. À plusieurs reprises, cela a entraîné des pics significatifs dans l'écart de prix entre le prix de l'Oracle et la référence spot. Ci-dessous se trouve un graphique plus détaillé montrant le comportement des ratios de pool de liquidité/liquidité des jetons pendant ces périodes de poussées de prix et le comportement des prix de l'Oracle.
start_block = 18693500
end_block = 18696000
interval_blocks = 10
Ratio du pool de minage :
Prix Oracle:
start_block = 18814000
end_block = 18816500
interval_blocks = 10
Ratio de pool minier :
Prix Oracle :
start_block = 18800000
end_block = 18805000
interval_blocks = 10
Ratio du pool minier :
Prix Oracle :
Cet article est reproduit de [Gatemarsbit]], titre original "Analyse comparative des oracles optionnels Prisma", les droits d'auteur appartiennent à l'auteur original [PrismaRisk], si vous avez des objections à la réimpression, veuillez contacterÉquipe Gate Learn, l'équipe le traitera dès que possible selon les procédures pertinentes.
Avertissement : Les points de vue et opinions exprimés dans cet article ne représentent que les opinions personnelles de l'auteur et ne constituent pas des conseils en investissement.
D'autres versions linguistiques de l'article sont traduites par l'équipe Gate Learn, non mentionnées dansGate.io, l'article traduit ne peut être reproduit, distribué ou plagié.