Halló allir!
Nýlega, Waves Labs
Við völdum DAO málið vegna þess
Við byrjuðum á einföldu dæmi í
Skoðum þetta dæmi, prófum tilgátur og skoðum nokkra undarlega hluti:
Leyfðu okkur að hafa Alice - dApp eiganda
Boob og Cooper eru samstarfsaðilar Alice, meðstofnendur Alice-BC DAO
Neli er fyrirtækiseigandi sem þarf fjármögnun
Banki - banki sem dreifir táknum
Stig 1. Frumstilling jafnvægis
Til þess að fá tákn á bylgjuprófanetinu þarftu að hafa samband
Þú getur fundið heimilisfangið í IDE með því að opna reikningsupplýsingarnar þínar.
Við leggjum áherslu á Bank 10 WAVES. Síðan athugum við hvort þeir hafi komið í gegnum blokka- og viðskiptavafrann:
Nú skulum við dreifa táknum frá bankanum til annarra þátttakenda. (Athugasemdir: Allar færslur á waves netinu eru ekki ókeypis, þannig að lágmarks jákvæð jafnvægi er krafist fyrir alla þátttakendur til að gera viðskipti).
1 BYLGJUR = 100000000 einingar (bylgjur), þar sem upphæðir geta aðeins verið heiltölur
0.01 BYLGJUR (viðskiptagjald) = 1000000
Banki -> [3 BYLGJUR] -> Alice, í gegnum TransferTransaction (Tegund: 4).
Við athugum að env.SEED sem viðskipti eru undirrituð úr passi við bankann okkar:

Ef þú ert ekki með samsvarandi upphafssetningu skaltu bara skipta yfir í það á Reikningar flipanum og athuga aftur.
Eftir þetta búum við til, tilkynnum og undirritum færslu fyrir flutning á 3 WAVES Alice.
Þú getur líka fundið út gögn Alice í gegnum env.accounts breytuna. Tölun byrjar á 0, þannig að Alice er env.accounts[1].
broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))
Niðurstöðuna er einnig hægt að sjá í vafranum, hlekkur á hana verður skilað til okkar strax eftir framkvæmd
Við sjáum til þess að inneign Alice sé endurnýjuð með 3 BYLGJUM og bankastaðan haldist 10 - 3 - 0.01 = 0.699.
Við sendum Boob og Cooper 3 WAVES hvor, og Neli, Xena og Mark 0.2 WAVES hvor á sama hátt.
(Athugasemdir: Við gerðum villu með einum staf og sendum Neli 0.02 WAVES. Vertu varkár!)
broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))
Eftir að hafa endurnýjað stöður allra þátttakenda sjáum við:
Stig 2. Búðu til dApp reikning
Við vorum sammála um að Alice yrði skapari og eigandi dreifða forritsins.
Farðu í Accounts, stilltu það sem SEED og athugaðu env.SEED passar við Alice.
Við skulum reyna að setja upp einfaldasta mögulega forskrift (samning) á reikning Alice.
Snjalltengiliðir í Waves eru forsendur sem banna eða leyfa hvers kyns sendandi viðskipti að eiga sér stað við ákveðnar aðstæður. Í þessu tilviki er þetta ástand ALLTAF. Samningskóði er satt. Call deploy().
Gjald á setScript færslu 1400000/100000000 = 0.014 BYLGJUR. Alice á 2.986 WAVES eftir á voginni.
Við skulum nú reyna að setja upp flóknari snjallsamningsrökfræði á Alice reikningnum, sem lýst er í
Ride4Dapps inniheldur nú 2 nýjar athugasemdagerðir:
- @Callable(i) — tekur sem færibreytu i, gögn um hvaða reikningur kallaði/undirritaði færsluna. Það er afleiðing þessarar aðgerðar sem ákvarðar breytinguna á stöðu dApp reikningsins. Aðrir reikningar geta búið til viðskipti og framkvæmt aðgerðir með þessari athugasemd og breytt stöðu dApp reikningsins.
- @Verifier(tx) — Færslu sannprófandi með breytu viðskipta tx. Samsvarar forsagnarrökfræðinni frá RIDE. Það er í þessari tjáningu sem þú getur leyft eða bannað frekari breytingar á rökfræði snjallsamninga á dApp reikningnum.
Gerum það dApp reikning sem sameiginlegt veski fyrir alla þátttakendur.
Til að athuga hvaða samningur er virkur á reikningnum þínum, geturðu afritað base64 kóðann á snjallsamningnum í blokkarkönnuðinum og þekkt hann með því að nota afþýðanda (
Við tryggjum að rökfræði snjallsamningsins passi við það sem við búumst við.
Alice á 2.972 BYLGJUR eftir á voginni.
Þetta dApp heldur utan um hversu mikið hver þátttakandi leggur til sameiginlega sjóðsins með kerfi gagnaflutningur — DataEntry(currentKey, newAmount), þar sem currentKey er reikningurinn sem kallar á innborgunaraðgerðina og newAmount er verðmæti endurnýjuðrar stöðu.
Boob og Cooper leggja inn á dApp reikninginn með 1 WAVES.
Við gerum mistök og viðskiptin ganga ekki í gegn. Þar sem við gerðum mistök í vísitölunni, þrátt fyrir að við værum sannfærð um að við værum að gera viðskipti fyrir hönd Bob, og bentum á bankareikning sem er ekki með snjallsamning. Það er rétt að taka fram mikilvægan punkt hér - það er gjald fyrir misheppnaðar tilraunir til að hefja viðskipti ekki hægt að fjarlægja! Alice á 2.972 BYLGJUR eftir á voginni. Bob er með 3 BYLGJUR.
Bob sendi 1 WAVES á dApp reikning.
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
Bob á 1.99 WAVES eftir. Það er, Bob borgaði 0.01 WAVES þóknun
Alice var með 2.972 WAVES á voginni, nú er hún 3.972. Færsla var einnig skráð á Alice reikninginn en engin þóknun var innheimt af dApp reikningnum (Alice).
Eftir að Cooper fyllti einnig á reikninginn varð innstæða Alice 4.972 WAVES.
Þú getur fundið út hver á hversu margar BYLGJUR í sameiginlega veskinu í blokkarkönnuðinum á Data flipanum.
Cooper skipti um skoðun um að skilja eftir upphæðina 1 WAVES á almenna veskinu og ákvað að taka helminginn af skyldleikanum til baka. Til að gera þetta verður hann að hringja í afturköllunaraðgerðina.
Hins vegar höfðum við rangt fyrir okkur aftur, þar sem afturköllunaraðgerðin hefur allt aðrar breytur og aðra undirskrift. Þegar þú hannar snjalla samninga á RIDE4DAPPS ættir þú að taka eftir þessu atriði
Cooper er nú með 2.48 WAVES á efnahagsreikningi sínum. Í samræmi við það, 3 BYLGJUR - 1 - 0.01, og síðan + 0.5 - 0.01. Í samræmi við það kostar hvert símtal til að leggja inn og taka út 0.01 BYLGJA. Fyrir vikið breyttust færslurnar í dApps eigendatöflunni sem hér segir.
Bob ákvað líka að taka peninga úr sameiginlega veskinu en gerði mistök og reyndi að taka út 1.5 WAVES.
Hins vegar hafði snjallsamningurinn ávísun á þetta ástand.
Xena er svindlari, hún reyndi að taka 1 WAVES út af heildarreikningnum.
Það gekk heldur ekki upp hjá henni.
Í næsta hluta munum við skoða flóknari mál sem tengjast ófullkomleika Alice dApp reikningsins.
Heimild: www.habr.com