/VU-Blockchain-Task-4-Dapp

VU Blokų grandinių technologijų disciplinos ketvirtosios praktinės užduoties repozicija

Primary LanguageJavaScript

VU-Blockchain-Task-4-Dapp

Turinys


Užduotis

Užduoties tikslas yra sukurti išmaniąją sutartį (angl. smart contract), kuri įgyvendintų tam tikrą verslo logiką ir galėtų užtikrinti jos "saugų" ir "patikimą" funkcionavimą decentralizuotame viešąjame tinkle.

Šioje užduotyje išmanioji sutartis įgyvendinama Solidyti programavimo kalba ir turi būti adaptuota Ethereum blockchain tinklui. Šiai užduočiai atlikti reikės:

  • Išmaniosios sutarties kūrimui rekomenduojama naudoti "on-line" įrankį Remix IDE, o testavimui ir diegimui Truffle IDE, kurį reikia įdiegti į savo kompiuterį.
  • Decentralizuotos aplikacijos testavimui galite naudoti Ganache įrankį, kuris sukuria lokalų Ethereum tinklą.
  • Jums taip pat prireiks kliento MyEtherWallet arba MetaMask, kuris įgalins sąsają su Ethereum tinklu.
  • Išmaniosios sutarties testavimui naudokite ir vieną iš viešųjų Ethereum testinių tinklų (angl. testnet), pvz., Ropsten arba RinkeBy.

Realizacija

Programa realizuota kaip decentralizuota skaitmeninė piniginė, kurioje vartotojas gali stake'inti token'us ir už tai gauti premiją.

  1. Norint pradėti stake'inti, pradžioje reikia turėti piniginėje kripto valiutos. Tuo tikslu yra implementuotas mygtukas DEPOSIT 100€ TO ACCOUNT, kuris į vartotojo sąskaitą perveda 100€ sumą - šiuo būdu yra simuliuojama situacija, tarsi vartotojas pats savarankiškai persiveda kriptovaliutos į savo piniginę.
  2. Vėliau, pasirinkus valiutą, kurią norima stake'inti (chicken, cow arba goat) ir įvedus € sumą, kurią norima deleguoti, galima pradėti stake'inti. Paprastumo dėlei yra naudojamas 1:1 konversija - 1 Euras gali nupirkti 1 monetą. Programa iš karto rodo, už kurią valiutą ir kiek jos yra pervesta (staking balance lentelėje).
  3. Norint uždirbti premiją už deleguotus eurus, reikia paspausti mygtuką ISSUE - tuomet premija, lygi investuotai sumai, yra skiriama vartotojui. Aišku, šį funkcionalumą turėtų valdyti ne pats piniginės vartotojas, o fermos direktorius:) Bet anyways.
  4. Investuotus pinigus visuomet galima susigrąžinti naudojant WITHDRAW mygtuką - eurai už atitinkamą valiutą yra grąžinami į vartotojo piniginę.
  5. Jei vartotojas turi premijų už deleguotus eurus, tai jis gali tą premiją parduoti. Premijų pardavimas irgi vyksta santykiu 1:1 - 1 premijos taškas yra lygus 1 Eurui.

Na va, tokiu būdu galima ir praturtėti. Tingiu daugiau rašyti.


Developement

Back end

  1. Make sure you have truffle installed.
  2. Install and run Ganache to run Ethereum network.
  3. Compile contracts: truffle compile
  4. Migrate contracts:
    • First time: truffle migrate
    • Other times: truffle migrate --reset
  5. To test contracts in CLI, start truffle console: truffle console.

Contract tests

  1. Run truffle test to execute contract tests.

Front end

  1. Install and run Ganache to run Ethereum network.
  2. Install and run MetaMask on your browser.
  3. In MetaMask, select Ganache network. If it does not exist, Add Network:
    • Network Name: Ganache
    • New RPC URL: HTTP://127.0.0.1:7545 (should be the same as displayed in the Ganache app RPC Server section, Port should match to truffle-config.js port)
    • Chain ID: 1337
  4. In MetaMask, import new account:
    • In Ganache select the second address and click on the KEY icon on the right. Copy the Private Key.
    • In MetaMask, Import New Account and paste the private key from step 1.
  5. Change directory: cd client
  6. Run: npm run start.

Resources