Zatímco rok 2017 byl poznamenán ICO boomem a rok 2021 rychlým růstem sektoru DeFi a NFT, v současném cyklu vedou meme tokeny. V lednu 2024 byl na Solana blockchain spuštěn projekt pump.fun, který umožňuje uživatelům vytvářet tokeny co nejrychleji a nejlevněji. Nicméně, většina meme tokeny zažít rychlý růst následovaný ještě rychlejších poklesů. Při přenosu likvidity z launchpad na DEX a vzhledem k tomu, že komunita roste, by vývoj cen měl obecně následovat tento vzor: Ale ve skutečnosti to vypadá takto: Podle mého názoru je to způsobeno skutečností, že trh funguje na principu nulové sumy. Avšak s použitím likviditních fondů na DEX a schopností prodávat bez odpovídajícího protistrany se rovnováha mezi nabídkou a poptávkou zkresluje. Myšlenky na to, jak by to mohlo být vylepšeno, mi přišly po analýze algoritmických stablecoins, zejména Terra Luna. 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. Nicméně, celý ekosystém čelil takzvané „smrtelné spirále“, zakořeněné v endogenní (na řetězci) povaze svého kolaterálu. Navzdory rozdílům v algoritmech, projekty jako Basis Cash a Empty Set Dollar opakovali stejnou chybu – spoléhání se na vnitřní kolaterál vedl je k podobným problémům a konečnému kolapsu. Naproti tomu příklad DAI ukazuje, že exogenní (off-chain) kolaterál může být také zranitelný: když ETH havaroval téměř o 50% za jeden den, byl systém ohrožen. 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 Algoritmické vydávání Zajištění kryptografických aktiv Exchange rate adjustment Rozhodčí výměna Dynamické stabilizační poplatky Risk Smrtící spirála Likvidace kolaterálu Po porovnání dvou typů kolaterálu jsem dospěl k závěru, že pro podporu ceny je nutné vytvořit samostatný fond s krátkou likviditou, nezávislý na dlouhém fondu. Mohlo by to fungovat následovně: spolu s převodem likvidity na DEX se do protokolu také přidává likvidita speciálně pro otevření krátkých pozic. Odtud je možné několik scénářů: 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. Aby rebalansní algoritmus fungoval, je zapotřebí následujícího: Stanovení, jaké procento změny cen v daném časovém období bude považováno za „abnormální“ kolísání trhu; neustálé sledování cen; Když jsou splněny specifikované podmínky, provádějte vyvážení, omezení jeho velikosti na jeden cyklus až do určitého procenta, aby se chránil systém před manipulací. V tomto článku se podrobněji podívám na jednu z klíčových složek tohoto mechanismu – vytvoření krátkého likviditního bazénu pro blokové řetězce kompatibilní s EVM pomocí Solidity. Příprava Protokol bude zpracovávat uživatelské fondy, budeme importovat OpenZeppelin a smlouvy, jakož i smlouvu o vyzvednutí cen aktiv od Chainlink. Ownable ReentrancyGuard Pro jednoduchost budeme používat tokeny WBTC a WETH na Ethereum Mainnet, i když v ideálním případě by měl být při nasazení chytré smlouvy definován seznam dostupných tokenů. Abychom rozšířili smlouvu, přidáme u podporovaných tokenů, kde klíčem je adresa tokenu a hodnota je adresa příslušné smlouvy o ceně Chainlink. mapping Využijte funkce pro přidání hodnot do Pro zvýšení bezpečnosti zabráníme aktualizaci adresy smlouvy Oracle pro token, který již byl přidán. mapping Pro uspořádání položek použijeme kde klíčem je adresa uživatele a hodnota je soubor struktur obsahující: mapping Tokenová adresa Otevírání a zavírání cen Velikost pozice Aktuální stav (otevřené, uzavřené nebo likvidované) Otevření pozice V tomto protokolu budou ceny denominovány v USD, takže budeme potřebovat interní funkci pro normalizaci hodnoty. Chcete-li získat otevírací cenu v USD, nejprve vyhledáme oracle pro aktuální cenu ETH a cenu tokenu, normalizujeme obě hodnoty a pak vypočítáme velikost pozice. a vysílat událost pomocí . mapping emit Uzavření pozice Abychom sjednotili logiku uzavírání a likvidace pozic, vytvoříme modifikátor, který zkontroluje aktuální stav pozice. Také vytvoříme pomocnou funkci pro výpočet výše výběru a uzavírací ceny. Dále při uzavírání pozice existují dva možné scénáře: 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. Jako držitel místa pro uzavírací cenu v případě likvidace, maximální Hodnota může být použita. uint256 Tato implementace je zjednodušena, takže by bylo lepší přidat automatizaci pomocí Chainlink nebo Gelato pro pravidelné kontroly cen a automatickou likvidaci v případě potřeby. Abychom to podpořili, likvidační funkce by měla přijmout adresu uživatele jako parametr pro určení, která pozice musí být likvidována. Závěr V tomto článku jsem sdílel hypotézu o krátkém likviditním bazénu a navrhl základní implementaci v Solidity pro blockchain Ethereum. Celý kód je k dispozici na . GitHub