BigShort Docs

Migration et AMM externe

Migration atomique sur l'achat de courbe finale, conversion de précision USDC, verrouillage LP, limites de donation et prix des produits constants externes.

Lorsque les Token vendables de la courbe atteignent zéro, BigShortProtocol-EVM établit la liquidité externe avec les Token réservés + réserves nettes réelles d’USDC de la courbe, tout en lançant le Short Engine propre au Token. La migration n’utilise pas d’USDC virtuels, ne mélange pas les fonds des courbes d’autres Token et ne traite pas la réserve de prêt comme liquidité externe initiale.

1. Déclenchement et ordre d’exécution

OrdreActionRésultat métier
1Déterminer l’achat finalSolde vendable de Token à zéro, état Complete
2Distribuer les Token de l’achat et rembourser le trop-payéLe bénéficiaire du remboursement est l’émetteur de la transaction
3Émettre les événements de transaction interne et de finEnregistrement de l’instantané final des réserves internes
4Revérifier l’instantané de configuration du Token et l’adresse Engine attendueAucun basculement vers un Profile par défaut défini ultérieurement
5Passer à Migrating et valider la Pair principaleVérification de l’identité, du code d’exécution, des réserves et des soldes
6Transférer 206,900,000 Token et les USDC réels représentablesConstitution de liquidité externe réelle
7Frapper les LP de migration à l’adresse zéro et vérifierVérification que l’adresse zéro détient tous les LP initiaux
8Déployer et initialiser le Short EngineLiaison avec les réserves réelles de la Pair et le stock de prêt existant
9Vérifier les liaisons et ouvrir le trading de la Pair principaleexternalTradingEnabled devient vrai
10Annuler le solde réel d’USDC de cette courbe et enregistrer la migrationÉtat final Migrated

2. De native18 à l’USDC ERC-20 à six décimales

Le solde USDC natif Arc et l’interface USDC ERC-20 externe représentent le même actif de cotation à des précisions différentes. Le code actuel utilise :

ScénarioPrécisionUne unité USDC
Paiements internes, comptabilité Factory, comptabilité interne Enginenative1810¹⁸
Interface USDC ERC-20 de la Pair externeexternal610⁶
Rapport de conversion s—10¹²

Soit Q18:

Q6=⌊Q181012⌋Qmigrated,18=Q6⋅1012,D=Q18mod1012

Ici donc, Q6 est le nombre de plus petites unités ERC-20 USDC transférées dans la paire, et D est un reste en dessous de 0.000001 USDC. Le contrat n’arrondit pas ce reste ni ne l’inclut silencieusement dans les réserves de Pair.

Attribution du reliquat de migration

La migration retire le Q18 complet de cette courbe du total des dettes des courbes non migrées, puis ajoute la dette de reliquat D. Les réserves des courbes d’autres Token ne diminuent pas du fait de cette migration.

3. Exemple d’épuisement à l’échelle complète et trois valorisations

Exemple D : achat de tout le stock initial en une fois, sans taxe ni don

pour acheter les 793,100,000 Token, le net entrant dans la courbe est :

Q18=⌈(4,292×1018)⋅(793,100,000×1018)(1,073,000,000−793,100,000)×1018⌉
ÉlémentRésultat exact
USDC nets dans la courbe12,161.433369060378706681
Token ajoutés à la Pair206,900,000 Token
USDC ajoutés à la Pair12,161.433369 USDC
Entier USDC external612,161,433,369
Reliquat de migration0.000000060378706681 USDC

Ces exemples uniques partent d’un état initial explicite. Ils ne promettent pas que tous les parcours d’achats/ventes multiples cumulent exactement le même résultat à la plus petite unité ; les arrondis par transaction et le point d’entrée à budget exact créent des différences.

Ne pas confondre fin de courbe, valeur externe réelle et ancrage idéal

IndicateurValeur de cet exempleUsage
USDC virtuels internes après le dernier achat16,453.433369060378706681Réserve virtuelle enregistrée à la fin de la courbe
Token virtuels à la fin de la courbe279,900,000Réserve virtuelle enregistrée à la fin de la courbe
Capitalisation du protocole à la fin de la courbe58,783.256052377201524405 USDCCalculée à partir des réserves virtuelles internes
USDC externes initiaux réels12,161.433369Fonds réels de la Pair
Token externes initiaux réels206,900,000Fonds réels de la Pair
Capitalisation externe initiale réelle du protocole58,779.281628806186563557 USDCactualStartMarketCap
Paramètre fixe d’USDC idéaux de migration12,161.433370Paramètre de risque, pas un montant de transfert imposé
Capitalisation idéale fixe de migration58,779.281633639439342677 USDCstartMarketCap, ancrage des courbes de risque/marge

Le prix externe initial réel est d’environ 0.000058779281628806186564 USDC/Token. Les paramètres actuels n’imposent pas une « continuité parfaite du prix marginal à la plus petite unité avant et après migration ». Les réserves virtuelles internes et les réserves réelles de migration sont deux ensembles de valeurs distincts.

L’ancrage idéal fixe fournit une base reproductible au modèle de risque ; les réserves réelles de la Pair déterminent le prix spot, le coût de rachat de dette et chaque swap réel. Le paramètre de modèle de 12,161.433370 USDC ne doit pas être présenté comme un montant reçu nécessairement à chaque migration.

4. Précréation de Pair, dons et protection contre la contamination

Quels états préalables sont acceptables ?

Au début de la migration, il faut :

  • Réserve Token de la Pair à 0.
  • Solde réel de Token de la Pair à 0.
  • Offre totale de LP de la Pair à 0 ; aucun ancien LP détenu par autrui.
  • Réserve USDC de la Pair inférieure ou égale à son solde réel d’USDC.
  • Validation par le Profile de l’adresse Pair, de la composition en tokens, du lieu de négociation associé et de l’identité du code.

Après transfert, la migration vérifie aussi l’ajout réel d’USDC. Après frappe LP, la réserve Token doit être égale à l’allocation migrée, et la réserve USDC au solde réel d’USDC avant migration + USDC ajoutés cette fois. Une différence déclenche PairContaminated ou l’erreur de validation concernée et annule la transaction.

La vérification de l’instantané de configuration ne se limite pas à un numéro de version. La migration revalide les hashes de code et les relations du déployeur Engine, de l’implémentation Engine et de la Factory/Router du lieu de négociation ; elle contrôle le hash des paramètres Engine et la configuration Oracle. Elle dérive l’adresse attendue via le hash du code d’initialisation Pair et vérifie la Pair réelle via son hash de code d’exécution. Si le code d’exécution du déployeur ou de l’implémentation diffère de la valeur enregistrée, le dernier achat est annulé atomiquement au lieu d’utiliser silencieusement une implémentation modifiée.

Ces règles ne garantissent pas l’acceptation de dons de toute taille. Les plages entières des réserves Pair, la frappe LP et les autres contraintes restent applicables. Un don non intégré aux réserves peut aussi être retiré par des opérations normales de Pair avant migration ; il faut donc retenir le solde au moment de son exécution.

Où vont les dons ?

Soit Qpre,6:

Qactual,6=Qpre,6+Q6

Cette courbe ajoute toujours 206,900,000 Token. Les dons d’USDC conservés à la migration entrent dans le pool réel et ne sont remboursés ni au donateur ni au dernier acheteur. Ils augmentent le prix initial réel et actualStartMarketCap, ne réécrivent pas l’ancrage idéal fixe de migration. La libération de capacité pondérée dans le temps n’est pas non plus immédiatement achevée par un don créant un prix élevé à l’instant de migration.

Exemple E : 170 USDC supplémentaires conservés dans la Pair de l’exemple D

ÉlémentSans donAvec don supplémentaire de 170 USDC
Réserve externe Token206,900,000206,900,000
Réserve externe USDC12,161.43336912,331.433369
Capitalisation initiale réelle du protocole58,779.28162880618656355759,600.934601256645722571
Capitalisation idéale fixe de migration58,779.28163363943934267758,779.281633639439342677

Transférer directement des USDC à la Factory est différent : cela n’augmente pas automatiquement les realNativeReserves d’un Token et ne devient donc pas automatiquement ses fonds de migration. Solde comptable de la courbe, solde total de Factory et solde réel de Pair sont distincts.

5. Destination finale des LP et du stock de prêt

Aucun LP initial n’est rachetable par un détenteur ordinaire

LPBalancezero=LPTotalSupply

Les LP frappés cette fois doivent aussi être supérieurs à 0, et le total LP supérieur à la liquidité retournée par cet appel, afin de couvrir la structure de liquidité minimale initiale V2. Ni créateur, ni exploitant, ni portefeuille du protocole, ni dernier acheteur ne reçoit ces LP de migration.

« Brûler les LP » signifie ici que l’adresse zéro détient les LP et qu’un compte ordinaire ne peut pas les récupérer pour les racheter. Cela ne signifie pas que Offre totale ERC-20 devient 0, ni que les Token de la Pair sont brûlés. Le contrôle de migration porte sur l’instant initial ; il ne permet pas d’affirmer que l’AMM externe n’acceptera jamais de nouvelle liquidité ni ne frappera d’autres LP.

La réserve de prêt reste indépendante

Les 199,861,071 Token sont déjà détenus à l’adresse précalculée de l’Engine. La migration ne fait que déployer et initialiser l’Engine, sans nouvelle frappe ni transfert de ce principal à la Pair. L’initialisation lit les réserves réelles de Pair et suit le principal de prêt disponible dans une comptabilité séparée.

BigShort Protocol · ARCÉmettre · Échanger · Vendre à découvert