În timp ce 2017 a fost marcat de boom-ul ICO și 2021 de creșterea rapidă a sectorului DeFi și a NFT-urilor, în ciclul actual, meme token-urile iau conducerea. În ianuarie 2024, proiectul pump.fun a fost lansat pe blockchain-ul Solana, permițând utilizatorilor să creeze jetoane cât mai repede și mai ieftin posibil. Cu toate acestea, cele mai multe token-uri meme se confruntă cu o creștere rapidă urmată de o scădere și mai rapidă. Atunci când se transferă lichiditatea de la lansator la un DEX și pe măsură ce comunitatea crește, evoluția prețurilor ar trebui să urmeze în general acest model: Dar, în realitate, se dovedește astfel: În opinia mea, acest lucru se datorează faptului că piața funcționează pe principiul jocului cu sumă zero. Cu toate acestea, cu utilizarea bazinelor de lichidități pe DEX și capacitatea de a vinde fără o contraordine corespunzătoare, echilibrul dintre cerere și ofertă devine distorsionat. Idei despre cum se poate îmbunătăți acest lucru mi-a venit după analizarea stablecoins algoritmice, în special Terra Luna. Pentru cei care nu sunt familiarizați cu acest proiect, aici este o scurtă explicație a modului în care funcționează: In the case of UST’s price falling below $1, the Debase algorithm was triggered, allowing traders to exchange 1 UST for 1 LUNA. During this process, UST was burned while new LUNA was minted. When UST’s price rose above $1, the Rebase algorithm activated, where LUNA was burned and, conversely, new UST was minted. Cu toate acestea, întregul ecosistem s-a confruntat cu așa-numita „spirală a morții”, înrădăcinată în natura endogenă (pe lanț) a garanției sale. În ciuda diferențelor în algoritmi, proiecte precum Basis Cash și Empty Set Dollar au repetat aceeași greșeală - bazându-se pe garanția internă le-a condus la probleme similare și eventual la colaps. În contrast, exemplul DAI arată că garanțiile exogene (în afara lanțului) pot fi, de asemenea, vulnerabile: atunci când ETH s-a prăbușit cu aproape 50% într-o singură zi, sistemul a fost pus în pericol. On-chain Off-chain Type of collateral Algorithmic issuance Collateral of crypto assets Exchange rate adjustment Arbitrage exchange Dynamic stability fees Risk Death spiral Liquidation of collateral Type of collateral Emisiunea algoritmică Colateralul activelor cripto Exchange rate adjustment Schimbul de arbitraj Taxe dinamice de stabilitate Risk Spirala morții lichidarea colaterală După compararea celor două tipuri de garanții, am ajuns la concluzia că, pentru a susține prețul, este necesar să se creeze un pool separat cu lichiditate scurtă, independent de poolul lung. Acesta ar putea funcționa după cum urmează: împreună cu transferul de lichiditate către DEX, lichiditatea este, de asemenea, adăugată la protocol în mod specific pentru deschiderea de poziții scurte. De aici, mai multe scenarii sunt posibile: Both pools grow — which means someone is opening a short position. This is where the first advantage of the idea becomes evident: increased market transparency. If demand exceeds supply, that’s a natural market situation. Similarly, when supply exceeds demand, it’s also part of normal market dynamics. In the case of a sharp change in the long pool — so drastic that even the label doesn’t fit — a rebalancing algorithm can be activated. As a result, the price returns to equilibrium through the participation of the short pool, without an seller. Pentru ca algoritmul de reechilibrare să funcționeze, sunt necesare următoarele: Definirea procentului de schimbare a prețurilor într-o anumită perioadă de timp care va fi considerat o fluctuație „anormală” a pieței; Monitorizarea continuă a prețurilor; Atunci când sunt îndeplinite condițiile specificate, efectuați reechilibrarea, limitând dimensiunea sa la un singur ciclu până la un anumit procent pentru a proteja sistemul de manipulare. În acest articol, voi lua o privire mai atentă la una dintre componentele cheie ale acestui mecanism - crearea unui bazin de lichiditate scurt pentru blockchain-urile compatibile cu EVM folosind Solidity. Pregătirea Protocolul va fi gestionarea fondurilor utilizatorilor, vom importa fondurile OpenZeppelin şi contracte, precum și un contract pentru preluarea prețurilor activelor de la Chainlink. Ownable ReentrancyGuard Pentru simplitate, vom folosi jetoanele WBTC și WETH pe Ethereum Mainnet, deși, în mod ideal, lista de jetoane disponibile ar trebui definită atunci când se implementează contractul inteligent. Pentru a face acest contract mai extins, vom adăuga un pentru tokenurile acceptate, unde cheia este adresa tokenului și valoarea este adresa contractului de prețuri Chainlink corespunzător. mapping Implementăm, de asemenea, o funcție utilitară pentru adăugarea de valori la Pentru a spori securitatea, vom împiedica actualizarea adresei contractului Oracle pentru un token care a fost deja adăugat. mapping Pentru a stoca poziții, vom folosi o unde cheia este adresa utilizatorului, iar valoarea este un set de structuri care conțin: mapping Adresă Token Prețuri de deschidere și închidere Dimensiunea poziției Starea curentă (deschisă, închisă sau lichidată) Deschiderea unei poziții În acest protocol, prețurile vor fi denominate în USD, deci vom avea nevoie de o funcție internă pentru normalizarea valorii. Pentru a obține prețul de deschidere în USD, mai întâi interogăm oracolul pentru prețul curent ETH și prețul tokenului, normalizăm ambele valori și apoi calculăm dimensiunea poziției. pentru a transmite un eveniment utilizând . mapping emit Închiderea unei poziţii Pentru a unifica logica pentru închiderea și lichidarea pozițiilor, vom crea un modificator care verifică starea actuală a poziției. De asemenea, vom crea o funcție de ajutor pentru a calcula valoarea retragerii și prețul de închidere. Apoi, atunci când închideți o poziție, există două scenarii posibile: If the user is eligible to receive funds back, we set the closing price and withdraw funds to the user. If the position must be liquidated (for example, due to insufficient collateral), the position is marked as liquidated without transferring funds. ca localizator pentru preţul de închidere în caz de lichidare, valoarea maximă Valoarea poate fi folosită. uint256 Această implementare este simplificată, deci ar fi mai bine să adăugați automatizarea folosind Chainlink sau Gelato pentru verificări periodice ale prețurilor și lichidare automată atunci când este necesar. Pentru a susține acest lucru, funcția de lichidare ar trebui să accepte adresa utilizatorului ca parametru pentru a specifica ce poziție trebuie lichidată. Concluzie În acest articol, am împărtășit o ipoteză despre un pool scurt de lichidități și am propus o implementare de bază în Solidity pentru blockchain-ul Ethereum. Codul complet este disponibil pe . GitHub