Skip to content
JozsaErik edited this page Mar 5, 2021 · 3 revisions

Utopia fund

Az Utopia fund egy yield aggregátor a PancakeSwap syrup pooljaihoz.

Használata

Befektetés előtt meg kell hívni a Cake token approve függvényét. A spender legyen a Vault address-e az amount pedig nagyobb mint a befektetni kívánt összeg. Ezután deposit függvény használható. Fontos, hogy a kapott yCake tokent tartsuk meg mert a befektetett összeget csak azzal tudjuk kivenni.

A getPendingReward függvény mondja meg, hogy pontosan mennyi profit jár nekünk. Ez az összeg csak harvest után frissül.

Tőke kivétel előtt, hasonló módon a befektetéshez itt is approve-ot kell hívni csak most a yCake tokenét. Ez esetben is a spender a Vault address-e az amount pedig legyen több mint a kivenni kívánt tőke. Fontos, hogy legalább annyi yCake-el rendelkezzünk mint amennyi Cake-t szeretnénk kivenni. Ebbe a kapott profit nem tartozik bele.

A userHarvest elküldi a jelenlegi pending revardot és lenullázza azt. Nem igényel approve-ot és nem éget yCake tokent.

Fejlesztése

Amire szükség van:

A forráskód letöltése után le kell tölteni a dependency-ket is amihez az alábbi parancsot kell végre hajtani a projekt mappájában.

npm install

Ez minden szükséges fájlt letölt a node_modules mappába.

A használathoz két tárcára van szükség egy Owner és egy Strategist. Az Owner az amelyik deploy-ol és felügyeli a contractokat amíg a Strategist a hatékony profitszerzésért felelős. Fontos, hogy a Strategist és az Owner külön entitás legyen biztonsági okokból.

A projekt magját 3 smart contract alkotja. A Controller, a Vault és a Strategy. Valamint egy script fájl ami segítségével a Strategist meghatározza a legjövedelmezőbb poolokat.

  • A Controller-ből minden körülmények között csak egy van és az köti össze a Strategy-ket a Vault-tal.
  • A Vault-ból igény szerint lehet több is, de minden vault csak egy fajta tokent tud fogadni mint befektetési alap.
  • Minden Strategy külön pool-t reprezentál és több is tartozhat egy Vaulthoz viszont mindig csak egy aktív lehet. Azt, hogy melyik az aktív mindig a Strategist dönti el.

Strategy váltáskor minden befektetett tőke az aktív Strategybe kerül. A jövőben tervezünk lehetőséget biztosítani több aktív Strategyre is amik között arányosan van elosztva a tőke.

Deploy előtt létre kell hozni egy .secret fájlt a projekt mappájában amibe a 12 szóból álló MetaMask biztonsági kulcsot kell bemásolni. Különösen oda kell figyelni, hogy ez a fájl ne kerüljön ki publikus helyre mert akkor maga a tárca és minden benne tárolt tőke is veszélybe kerül.

Mainnet-re történő deploy előtt a truffle-config.js fájlban a "bsc:{}" részen belül a "from:" mellett található címet át kell írni a kívánt Owner címére. A deploy erről a címről fog történni ezért fontos, hogy rendelkezzen elegendő fedezettel.

A deploy a 2_deploy_contracts.js fájlon keresztül történik. Itt kell megadni, hogy melyik contractokat milyen sorrendben szeretnénk deploy-olni és a konstruktorok kívánt értékeit is.

Deploy az alábbi két parancs egyikével halytható végre.

Mainnet

truffle deploy --network bsc

Testnet

truffle deploy --network testnet

Amennyiben azt az üzentet adja fel, hogy "Network is up to date" a parancs után oda kell írni, hogy --reset

Deploy után a Vault-ot és legalább egy Strategy-t hozzá kell adni a Controller-hez. Erre csak az Owner képes. Ez után approve-olni kell a Strategy-t, hogy használható legyen. Erre csak a Strategist képes. Miután a Vault és legalább egy Strategy is hozzá lett adva, a cahangeStrategy-t legalább egyszer meg kell hívni. Ezek után az alkalmazás működőképes lesz.

Ahhoz, hogy a script rendesen fusson az app/src/crypto_helper.js fájlon belül hozzá kell adni minden maphoz a megfelelő kulcs-érték párokat majd az index.js fájl pools változójához hozzá adni a megfelelő poolt reprezentáló kollekciót. Ez a folyamat a jövőben egy adatbázison keresztűl fog történni.

Clone this wiki locally