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!

A Waves Labs nemrégiben... bejelentett Egy fejlesztői verseny, amely egybeesik a RIDE intelligens szerződésnyelv-kiterjesztés decentralizált alkalmazásokhoz, a Ride4Dapps teszthálózati kiadásával!

Azért választottuk a DAO esetet, mert Ventuary egy közösségi funkciókkal rendelkező dApp fejlesztését tervezi: szavazás, adománygyűjtés, vagyonkezelés stb.
Egy egyszerű példával kezdtük, Kérdések és válaszok ülések és RIDE IDE - példa a következővel: közös erszény.

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

Tegyük fel, hogy van Alice - dApp Tulajdonosunk
Boob és Cooper Alice partnerei és az Alice-BC DAO társalapítói.
Neli egy vállalkozó, akinek finanszírozásra van szüksége.
Bank – tokeneket kiosztó bank

1. lépés. Mérlegek inicializálása

Ahhoz, hogy tokeneket kapjon a Waves teszthálózaton, fel kell vennie a kapcsolatot a következővel: csap és adja meg azt a címet, ahová a tokeneket küldeni kell.
A cím az IDE-ben a fiókadatok megnyitásával található meg.
Kiválasztjuk a Bank 10 WAVES-t. Ezután ellenőrizzük, hogy megérkeztek-e a blokk- és tranzakcióböngészőn keresztül: bíráló

Most osszuk szét a tokeneket a bankból a fennmaradó résztvevők között. (Megjegyzések: A Waves hálózaton végzett összes tranzakció nem ingyenes, ezért minimális pozitív egyenleg szükséges ahhoz, hogy minden résztvevő tranzakciókat hajtson végre.)

1 HULLÁM = 100 000 000 egység (wavelet), mivel a mennyiségek csak egész számok lehetnek
0.01 WAVES (tranzakciós díj) = 1000000

Bank -> [3 HULLÁM] -> Alice, TransferTransaction-ön keresztül (Típus: 4).

Ellenőrizzük, hogy az env.SEED, amelyből a tranzakciókat aláírjuk, 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 nincs egyező kezdőbetű-kifejezésed, egyszerűen válts rá a Fiókok lapon, és ellenőrizd újra.
Ezután létrehozunk, bejelentünk és aláírunk egy tranzakciót 3 WAVES Alice-nek történő átvitelére.
Alice adatait az env.accounts változón keresztül is megtalálhatod. A számozás 0-val kezdődik, tehát Alice az 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 látható, a végrehajtás után azonnal kapunk egy linket hozzá. tranzakciók.

Gondoskodunk arról, hogy Alice egyenlege 3 HULLÁMMAL töltődjön fel, és a bankszámlaegyenleg 10 - 3 - 0.01 = 0.699 legyen.
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 fejenként 3 HULLÁMOT, Nelinek, Xenának és Marknak pedig fejenként 0.2 HULLÁMOT küldünk ugyanígy.
(Megjegyzések: Hibáztunk egy karakterrel, és Nelinek 0.02 HULLÁMOT küldtünk. Vigyázz!)

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

Miután feltöltöttük az összes résztvevő egyenlegét, 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: Hozz létre egy dApp fiókot

Megegyeztünk, hogy Alice lesz a decentralizált alkalmazás létrehozója és tulajdonosa.
A Fiókok részben válaszd a SEED telepítését, és ellenőrizd, hogy az env.SEED megegyezik-e Alice-szel.

Próbáljuk meg telepíteni a lehető legegyszerűbb szkriptet (szerződést) Alice fiókjára.
A Waves intelligens kontaktusai olyan predikátumok, amelyek bizonyos feltételek teljesülése esetén megakadályozzák vagy engedélyezik egy bizonyos típusú kimenő tranzakció létrejöttét. Ebben az esetben ez a feltétel MINDIG teljesül. A szerződéskód igaz. Meghívjuk a deploy() 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)

A setScript tranzakció díja 1400000/100000000 = 0.014 WAVES. Alice egyenlegén 2.986 WAVES maradt.

Most próbáljunk meg bonyolultabb intelligens szerződéses logikát telepíteni Alice fiókjára, a következőben leírtak szerint: példa

Ride4Dapps mostantól 2 új annotációtípust tartalmaz:

  1. @Callable(i) — paraméterként az i fiókot veszi fel, amely meghívta/aláírta a tranzakciót. A függvény eredménye határozza meg a fiók dApp állapotának változását. Más fiókok tranzakciókat hozhatnak létre és függvényeket hajthatnak végre ezzel az annotációval, megváltoztatva a fiók dApp állapotát.
  2. @Verifier(tx) — Egy tranzakció-ellenőrző a tx tranzakciós paraméterrel. Megfelel a RIDE predikátumlogikájának. Ez a kifejezés használható a dApp-fiók intelligens szerződéses logikájának további módosításainak engedélyezéséhez vagy letiltásához.

Csináljuk DAPP számla, mint 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 melyik szerződés aktív egy adott számlán, kimásolhatja az intelligens szerződés base64 kódját a blokkböngészőben, és felismerheti azt egy dekompilátorral (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ásainknak.
Alice egyenlegén 2.972 ​​HULLÁM maradt.

Ez a dApp egy mechanizmuson keresztül nyomon követi, hogy az egyes résztvevők mennyivel járulnak hozzá a közös alaphoz adat tranzakció — DataEntry(aktuálisKulcs, újÖsszeg), ahol a currentKey a befizetési függvényt meghívó számla, az newAmount pedig a feltöltött egyenleg értéke.

Boob és Cooper egyaránt 1 WAVES-t fizetnek be a dApp számlá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ó sikertelen. Ez azért van, mert annak ellenére, hogy biztosítottuk a tranzakció végrehajtását Bob nevében, elgépeltük az indexet, és olyan bankszámlát adtunk meg, amelyhez nem tartozik intelligens szerződés. Fontos megjegyezni: a sikertelen tranzakcióindítási kísérletekért díjat számítunk fel. azt nem lehet eltávolítani! Alice egyenlegén 2.972 ​​HULLÁM maradt. Bobnak 3 HULLÁM 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-e maradt. Ez azt jelenti, hogy Bob 0.01 WAVES-t fizetett díjként.

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

Alice egyenlege 2.972 ​​WAVES volt, most 3.972. Egy tranzakciót regisztráltak Alice számláján is, de a dApp számlán (Alice) nem számítottak fel díjat.
Miután Cooper is feltöltötte Alice számláját, az egyenlege 4.972 HULLÁM lett.

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

A blokkböngésző Adatok fülén megtudhatod, hogy ki hány WAVE-t birtokol a megosztott tárcában.

Cooper meggondolta magát, és úgy döntött, hogy 1 WAVES-t hagy a megosztott tárcában, és kiveszi az affinitásai felét. Ehhez meg kell hívnia a withdraw 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, mivel a withdraw függvénynek teljesen más paraméterei és eltérő aláírása van. Amikor okos szerződéseket tervezel a RIDE4DAPPS-on, erre a pontra érdemes odafigyelni.

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

Cooper egyenlege most 2.48 WAVES. Ez 3 WAVES-t jelent - 1 - 0.01, majd + 0.5 - 0.01. Következésképpen minden befizetés és kifizetés 0.01 WAVES-be kerül. Ennek eredményeként a dApp tulajdonos tábla bejegyzései a következőképpen változtak.

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

Bob úgy döntött, hogy kivesz valamennyit a megosztott tárcából, de hibázott, és megpróbált kivenni 1.5 WAVES-t.

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 tartalmazott egy ellenőrzést erre a helyzetre.

Xena egy csaló, aki 1 WAVES-t próbált kivenni az általános 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)

Ő is kudarcot vallott.

A következő részben az Alice dApp fiók tökéletlenségeivel kapcsolatos összetettebb problémákat vizsgáljuk meg.

Forrás: will.com

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster