Докато 2017 г. бе белязана от ICO бума и 2021 г. от бързия растеж на сектора DeFi и NFTs, в настоящия цикъл водещи са меме токените. През януари 2024 г. проектът pump.fun бе стартиран на блокчейна Solana, позволявайки на потребителите да създават токени възможно най-бързо и евтино. Въпреки това, повечето меми токени изпитват бърз растеж, последван от още по-бързи спадове. При прехвърляне на ликвидност от пусковия панел към DEX и с нарастването на общността ценовата тенденция обикновено следва следния модел: Но в действителност се оказва така: Според мен това се дължи на факта, че пазарът работи на принципа на играта с нулева сума.Въпреки това, с използването на ликвидни басейни на DEX и способността да се продава без съответстващо контрапореждане, балансът между предлагането и търсенето се изкривява. Идеи за това как това може да се подобри дойде при мен след анализ на алгоритмични stablecoins, по-специално 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. Въпреки това, цялата екосистема се сблъсква с така наречената „спирала на смъртта“, вкоренена в ендогенната (на веригата) природа на нейното обезпечение.Въпреки различията в алгоритмите, проекти като Basis Cash и Empty Set Dollar повтарят същата грешка – разчитането на вътрешно обезпечение ги води до подобни проблеми и евентуален колапс. Напротив, примерът на DAI показва, че екзогенните (извън веригата) обезпечения също могат да бъдат уязвими: когато ETH се срине с почти 50% за един ден, системата е изложена на риск. 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 Алгоритъм на издаване Закрила на крипто активи Exchange rate adjustment Арбитражният обмен Динамични разходи за стабилност Risk Смъртната спирала Ликвидация на колатералите След като сравнявах двата вида обезпечения, стигнах до заключението, че за да подкрепя цената, е необходимо да се създаде отделен пул с къса ликвидност, независим от дългия пул. Тя може да работи по следния начин: заедно с прехвърлянето на ликвидност към DEX, ликвидността също се добавя към протокола специално за отваряне на къси позиции. Оттук нататък са възможни няколко сценария: 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. За да може алгоритъмът за балансиране да работи, са необходими следните неща: Определяне на какъв процент от промяната на цените през даден период от време ще се счита за "ненормално" колебание на пазара; - непрекъснат мониторинг на цените; Когато са изпълнени определените условия, извършване на ребалансиране, ограничаване на размера му до един цикъл до определен процент, за да се предпази системата от манипулация. В тази статия ще разгледам по-отблизо един от ключовите компоненти на този механизъм - създаването на кратък ликвиден басейн за съвместими с EVM блокчейн с Solidity. Подготовката Протоколът ще се занимава с потребителски средства, ние ще импортираме OpenZeppelin и договори, както и договор за събиране на цените на активите от Chainlink. Ownable ReentrancyGuard За опростяване ще използваме токени WBTC и WETH в Ethereum Mainnet, въпреки че в идеалния случай списъкът на наличните токени трябва да бъде определен при разгръщането на интелигентния договор. За да направим договора по-продължителен, ще добавим за поддържани токени, където ключът е адресът на токена и стойността е адресът на съответния договор за ценообразуване на Chainlink. mapping Също така ще използваме функцията за добавяне на стойности към За да подобрим сигурността, ще предотвратим актуализирането на адреса на договора на Oracle за токен, който вече е добавен. mapping За да съхраняваме позиции, ще използваме където ключът е адресът на потребителя, а стойността е масив от структури, съдържащи: mapping Токен адрес Цени за отваряне и затваряне Размер на позицията Текущо състояние (отворено, затворено или ликвидирано) Откриване на позиция В този протокол цените ще бъдат деноминирани в щатски долари, така че ще ни е необходима вътрешна функция за нормализиране на стойността. За да получим отварящата цена в щатски долари, първо задаваме заявка на оракула за текущата цена на ETH и цената на токена, нормализираме двете стойности и след това изчисляваме размера на позицията. и излъчва събитие, което използва . mapping emit Затваряне на позиция За да обединим логиката за затваряне и ликвидиране на позиции, ще създадем модификатор, който проверява текущото състояние на позицията. Също така ще създадем помощна функция за изчисляване на сумата за теглене и цената за затваряне. След това, когато затваряте позиция, има два възможни сценария: 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. като място на затваряне на цената в случай на ликвидация, максималната Стойността може да се използва. uint256 Това изпълнение е опростено, така че би било по-добре да се добави автоматизация с помощта на Chainlink или Gelato за периодични проверки на цените и автоматична ликвидация, когато е необходимо. За да подкрепи това, функцията за ликвидация трябва да приеме адреса на потребителя като параметър, за да посочи коя позиция трябва да бъде ликвидирана. Заключението В тази статия споделих хипотеза за кратък ликвиден басейн и предложих основно изпълнение в Solidity за блокчейна на Ethereum. Пълният код е достъпен на . GitHub