Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Hello!

Újabban a Waves Labs bejelentett verseny a fejlesztők számára, akik a RIDE intelligens szerződéses nyelvi kiterjesztésének a decentralizált alkalmazásokhoz való Ride4Dapps teszthálózatba való kiadására törekszenek!

Azért választottuk a DAO esetet Ventuary közösségi funkciókkal rendelkező dApp-ok fejlesztését tervezi: szavazás, adománygyűjtés, bizalomkezelés stb.
Egy egyszerű példával kezdtük Kérdések és válaszok szekciók és RIDE IDE - példa vele közös pénztárca.

Nézzük meg ezt a példát, teszteljük a hipotéziseket, és nézzünk meg néhány furcsaságot:

Legyen nekünk Alice – dApp tulajdonos
Boob és Cooper Alice partnerei, az Alice-BC DAO társalapítói
Neli cégtulajdonos, akinek finanszírozásra van szüksége
Bank - tokeneket forgalmazó bank

1. szakasz. Egyenlegek inicializálása

Ahhoz, hogy tokeneket kaphasson a waves teszthálózaton, kapcsolatba kell lépnie csap és adja meg a címet, ahová a tokeneket küldeni kell.
A címet az IDE-ben találhatja meg, ha megnyitja fiókadatait.
Kiemeljük a Bank 10 WAVES-t. Ezután ellenőrizzük, hogy a blokk és tranzakció böngészőn keresztül érkeztek-e: bíráló

Most pedig osszuk ki a bank tokenjeit a többi résztvevőnek. (Megjegyzés: A waves hálózaton minden tranzakció nem ingyenes, ezért minden résztvevőnek minimális pozitív egyenleg szükséges a tranzakciók végrehajtásához).

1 WAVES = 100000000 egység (hullám), mivel az összegek csak egészek lehetnek
0.01 WAVES (Tranzakciós díj) = 1000000

Bank -> [3 WAVES] -> Alice, TransferTransaction (Típus: 4).

Ellenőrizzük, hogy az env.SEED, amelyről a tranzakciókat aláírják, megegyezik-e a bankunkkal:
Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Ha nem rendelkezik megfelelő kezdő kifejezéssel, váltson rá a Fiókok lapon, és ellenőrizze újra.
Ezt követően létrehozunk, meghirdetünk és aláírunk egy tranzakciót 3 WAVES Alice átruházására.
Alice adatait az env.accounts változón keresztül is megtudhatja. A számozás 0-tól kezdődik, így Alice env.accounts[1].
Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))

Az eredmény a böngészőben is megfigyelhető, a végrehajtás után azonnal visszaküldjük a linket tranzakciók.

Gondoskodunk arról, hogy Alice egyenlege 3 WAVE-val feltöltődjön, és a banki egyenleg 10 - 3 - 0.01 = 0.699 maradjon.
Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Boobnak és Coopernek 3-0.2, Nelinek, Xenának és Marknak egyaránt XNUMX HULLÁT küldünk.
(Megjegyzések: Egy karakteres hibát követtünk el, és Nelinek 0.02 WAVES-t küldtünk. Vigyázat!)

broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))

Az összes résztvevő egyenlegének feltöltése után a következőket látjuk:
Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

2. lépés: Hozzon létre egy dApp-fiókot

Megállapodtunk, hogy Alice lesz a decentralizált alkalmazás létrehozója és tulajdonosa.
Lépjen a Fiókok elemre, állítsa be SEED-re, és ellenőrizze, hogy az env.SEED egyezik-e Alice-szel.

Próbáljuk meg a lehető legegyszerűbb szkriptet (szerződést) telepíteni Alice fiókjába.
A Waves intelligens kapcsolatai olyan predikátumok, amelyek bizonyos feltételek mellett tiltják vagy lehetővé teszik bármilyen típusú kimenő tranzakciót. Ebben az esetben ez a feltétel MINDIG fennáll. A szerződés kódja igaz. Hívja meg a deploy().

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

SetScript-tranzakciónkénti díj 1400000/100000000 = 0.014 WAVES. Alice mérlegén 2.986 HULLÁM maradt.

Most próbáljunk meg bonyolultabb intelligens szerződési logikát telepíteni az Alice-fiókra, a leírásban leírtak szerint példa

Ride4Dapps most 2 új megjegyzéstípust tartalmaz:

  1. @Hívható(i) — i paraméterként veszi azt az adatot, hogy melyik számla hívta/aláírta a tranzakciót. Ennek a funkciónak az eredménye, amely meghatározza a dApp-fiók állapotának változását. Más fiókok tranzakciókat hozhatnak létre és funkciókat hajthatnak végre ezzel a megjegyzéssel, és módosíthatják a dApp-fiók állapotát.
  2. @Verifier(tx) — Tranzakcióellenőrző a tranzakció tx paraméterrel. Megfelel a RIDE predikátum logikájának. Ebben a kifejezésben engedélyezheti vagy tilthatja meg az intelligens szerződések logikájának további módosításait a dApp-fiókban.

Csináljuk DAPP fiókja közös pénztárca minden résztvevő számára.
Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Annak ellenőrzéséhez, hogy jelenleg melyik szerződés aktív a fiókjában, másolja be az intelligens szerződés base64 kódját a blokkböngészőbe, és ismerje fel egy decompiler segítségével (például)
Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)
Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)
Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Gondoskodunk arról, hogy az intelligens szerződés logikája megfeleljen az elvárásoknak.
Alice mérlegén 2.972 HULLÁM maradt.

Ez a dApp nyomon követi, hogy az egyes résztvevők mennyivel járulnak hozzá a közös alaphoz egy mechanizmuson keresztül adattranzakció — DataEntry (jelenlegi kulcs, új összeg), ahol a currentKey a betéti funkciót meghívó számla, a newAmount pedig a feltöltött egyenleg értéke.

Boob és Cooper 1 WAVES-al fizeti be a dApp számlájára.
Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Hibát követünk el, és a tranzakció nem megy végbe. Mivel annak ellenére, hogy meg voltunk győződve arról, hogy Bob nevében bonyolítunk tranzakciót, hibáztunk az indexben, és olyan bankszámlát jelöltünk meg, amelyen nincs okos szerződés. Itt érdemes megjegyezni egy fontos pontot - a sikertelen tranzakciók kezdeményezésére díjat kell fizetni nem távolítható el! Alice mérlegén 2.972 HULLÁM maradt. Bobnak 3 HULLÁMA van.

Bob 1 WAVES-t küldött a dApp-fiókba.

broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Bobnak 1.99 WAVES maradt. Vagyis Bob 0.01 WAVES jutalékot fizetett

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Alice mérlegén 2.972 HULLÁM volt, most 3.972. Az Alice-számlán is regisztráltak egy tranzakciót, de a dApp-fiókból (Alice) nem számítottak fel jutalékot.
Miután Cooper is feltöltötte a számlát, Alice egyenlege 4.972 WAVES lett.

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Az Adatok lapon található blokkböngészőben megtudhatja, hogy kinek hány WAVES van a közös pénztárcában.

Cooper meggondolta magát, hogy az 1 WAVES összegét az általános pénztárcán hagyja, és úgy döntött, hogy visszavonja az affinitás felét. Ehhez meg kell hívnia a visszavonási függvényt.

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Azonban ismét tévedtünk, hiszen a visszavonási függvénynek teljesen más paraméterei és más aláírása van. Amikor intelligens szerződéseket tervez a RIDE4DAPPS-on, figyeljen erre a pontra

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

A Cooper mérlegében most 2.48 WAVES van. Ennek megfelelően 3 HULLÁM - 1 - 0.01, majd + 0.5 - 0.01. Ennek megfelelően minden befizetési és kifizetési hívás 0.01 WAVES-ba kerül. Ennek eredményeként a dApps tulajdonosok táblázatának bejegyzései az alábbiak szerint módosultak.

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Bob is úgy döntött, hogy kivesz egy kis pénzt a közös pénztárcából, de hibázott és megpróbált 1.5 WAVES-t kivenni.

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Az intelligens szerződés azonban ellenőrizte ezt a helyzetet.

Xena csaló, megpróbált 1 WAVES-t kivenni a teljes számláról.

Tanulj meg Waves intelligens szerződéseket írni RIDE és RIDE4DAPPS rendszeren. 1. rész (Többfelhasználós pénztárca)

Neki sem jött össze.

A következő részben az Alice dApp fiók tökéletlenségével kapcsolatos összetettebb problémákat fogjuk megvizsgálni.

Forrás: will.com

Hozzászólás