Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

Halló allir!

Nýlega, Waves Labs tilkynnt samkeppni fyrir forritara tileinkað útgáfu RIDE snjallsamnings tungumálaframlengingarinnar fyrir dreifð forrit Ride4Dapps inn í prófunarnetið!

Við völdum DAO málið vegna þess Ventuary ætlar að þróa dApps með félagslegum aðgerðum: atkvæðagreiðslu, fjáröflun, trauststjórnun osfrv.
Við byrjuðum á einföldu dæmi í Spurningar og svör fundur og RIDE IDE - dæmi með sameiginlegt veski.

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 blöndunartæki og tilgreinið heimilisfangið sem á að senda tákn til.
Þú 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: gagnrýnandi

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:
Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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].
Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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ðskipti.

Við sjáum til þess að inneign Alice sé endurnýjuð með 3 BYLGJUM og bankastaðan haldist 10 - 3 - 0.01 = 0.699.
Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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ð:
Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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().

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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 í dæmi

Ride4Dapps inniheldur nú 2 nýjar athugasemdagerðir:

  1. @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.
  2. @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.
Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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 (til dæmis)
Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)
Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)
Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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.
Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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 }]}))

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

Bob á 1.99 WAVES eftir. Það er, Bob borgaði 0.01 WAVES þóknun

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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.

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

Þú 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.

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

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.

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

Bob ákvað líka að taka peninga úr sameiginlega veskinu en gerði mistök og reyndi að taka út 1.5 WAVES.

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

Hins vegar hafði snjallsamningurinn ávísun á þetta ástand.

Xena er svindlari, hún reyndi að taka 1 WAVES út af heildarreikningnum.

Að læra að skrifa Waves snjalla samninga á RIDE og RIDE4DAPPS. Hluti 1 (Fjölnotendaveski)

Þ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

Bæta við athugasemd