Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Hallo jiddereen!

Méi kuerzem, Waves Labs ugekënnegt Konkurrenz fir Entwéckler gewidmet fir d'Verëffentlechung vun der RIDE Smart Kontrakt Sproochverlängerung fir dezentraliséiert Uwendungen Ride4Dapps an den Testnetz!

Mir hunn den DAO Fall gewielt well Ventuaire Pläng dApps mat sozialen Funktiounen z'entwéckelen: Voting, Fundraising, Vertrauensmanagement, etc.
Mir ugefaang mat engem einfache Beispill an Q&A Sessiounen an a RIDE IDE - Beispill mat gedeelt Portemonnaie.

Loosst eis dëst Beispill kucken, Hypothesen testen an e puer Komeschheeten kucken:

Loosst eis Alice hunn - dApp Besëtzer
Boob a Cooper sinn Alice Partner, Matgrënner vum Alice-BC DAO
Neli ass e Geschäftsbesëtzer dee Finanzéierung brauch
Bank - eng Bank déi Tokens verdeelt

Etapp 1. Initialiséierung vun Gläichgewiicht

Fir Tokens am Wellen Testnetz ze kréien, musst Dir kontaktéieren Krunn a gitt d'Adress un déi Tokens schécken.
Dir kënnt d'Adress an der IDE fannen andeems Dir Är Kontdetailer opmaacht.
Mir Highlight Bank 10 WAVES. Da kontrolléiere mir datt se duerch de Block- an Transaktiounsbrowser ukomm sinn: Rezensor

Loosst eis elo Tokens vun der Bank un de Rescht vun de Participanten verdeelen. (Notiz: All Transaktiounen am Wellennetz sinn net gratis, sou datt e Minimum positive Gläichgewiicht fir all Participanten néideg ass fir Transaktiounen ze maachen).

1 WAVES = 100000000 Unitéiten (Wavelets), well Betrag kann nëmmen eng ganz Zuel sinn
0.01 WAVES (Transaktiounsgebühr) = 1000000

Bank -> [3 WAVES] -> Alice, iwwer Transfertransaktioun (Typ: 4).

Mir kontrolléieren ob den env.SEED aus deem Transaktiounen ënnerschriwwen sinn eis Bank entsprécht:
Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Wann Dir keng passende Seed Phrase hutt, wiesselt einfach op de Konten Tab a kontrolléiert nach eng Kéier.
Duerno erstellen, annoncéieren an ënnerschreiwen mir eng Transaktioun fir den Transfer vun 3 WAVES Alice.
Dir kënnt och d'Alice Daten duerch d'env.accounts Variabel erausfannen. Nummering fänkt vun 0 un, also ass Alice env.accounts[1].
Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

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

D'Resultat kann och am Browser observéiert ginn, e Link op et gëtt direkt no der Ausféierung un eis zréckginn Transaktiounen.

Mir suergen dofir datt dem Alice säi Gläichgewiicht duerch 3 WAVES ersat gëtt, an d'Bankbalance bleift bei 10 - 3 - 0.01 = 0.699.
Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Mir schécken Boob a Cooper 3 WAVES all, an Neli, Xena a Mark 0.2 WAVES all op déiselwecht Manéier.
(Notiz: Mir hunn e Charakterfehler gemaach an den Neli 0.02 WAVES geschéckt. Sidd virsiichteg!)

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

Nodeems mir d'Balancen vun all de Participanten ersat hunn, gesi mir:
Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Etapp 2. Schafen eng dApp Kont

Mir hunn eis ausgemaach datt d'Alice de Schëpfer a Besëtzer vun der dezentraliséierter Applikatioun wier.
Gitt op Konten, setzt se als SEED a kontrolléiert env.SEED passt Alice.

Loosst eis probéieren déi einfachst méiglech Skript (Kontrakt) op dem Alice säi Kont ze installéieren.
Smart Kontakter a Waves si Prädikater déi all Zort vun erausginn Transaktioun verbidden oder erlaben ënner bestëmmte Konditiounen ze geschéien. An dësem Fall ass dës Konditioun ËMMER. De Kontrakt Code ass richteg. Call deploy ().

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Gebühr pro setScript Transaktioun 1400000/100000000 = 0.014 WAVES. D'Alice huet nach 2.986 WAVES op hirem Balance.

Loosst eis elo probéieren méi komplex Smart Kontrakt Logik op der Alice Kont ze installéieren, beschriwwen an Beispill

Ride4Dapps enthält elo 2 nei Annotatiounstypen:

  1. @Callable(i) - hëlt als Parameter i, Daten iwwer wéi ee Kont d'Transaktioun genannt / ënnerschriwwen huet. Et ass d'Resultat vun dëser Funktioun déi d'Ännerung vum Zoustand vum dApp Kont bestëmmt. Aner Konte kënnen Transaktiounen erstellen a Funktiounen mat dëser Annotatioun ausféieren an den Zoustand vum dApp Kont änneren.
  2. @Verifier(tx) - Transaktiounsverifizéierer mam Transaktioun tx Parameter. Entsprécht der Prädikatlogik vu RIDE. Et ass an dësem Ausdrock datt Dir weider Ännerunge vun der Logik vu Smart Kontrakter um dApp Kont erlaabt oder verbitt.

Loosst eis maachen dApp Kont als gemeinsam Portemonnaie fir all Participanten.
Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Fir z'iwwerpréiwen, wéi ee Kontrakt de Moment op Ärem Kont aktiv ass, kënnt Dir de Base64 Code vum Smart Kontrakt am Block Explorer kopéieren an et mat engem Decompiler erkennen (zum Beispill)
Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)
Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)
Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Mir suergen dofir datt d'Logik vum Smart Kontrakt entsprécht wat mir erwaarden.
D'Alice huet nach 2.972 WAVES op hirem Balance.

Dës dApp verfollegt wéi vill all Participant duerch e Mechanismus zum gemeinsame Fonds bäidréit Datentransaktioun - DataEntry (currentKey, newAmount), wou currentKey de Kont ass, deen d'Depositiounsfunktioun nennt, an newAmount ass de Wäert vun der erfëllter Gläichgewiicht.

Boob a Cooper maachen hir Depositioune op den dApp Kont mat 1 WAVES.
Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Mir maachen e Feeler an d'Transaktioun geet net duerch. Well, trotz der Tatsaach, datt mir iwwerzeegt waren, datt mir eng Transaktioun am Numm vum Bob maachen, hu mir e Feeler am Index gemaach an e Bankkonto uginn, deen kee Smart Kontrakt huet. Et ass derwäert e wichtege Punkt hei ze notéieren - et gëtt eng Tax fir net erfollegräich Versich fir Transaktiounen ze initiéieren kann net ewechgeholl ginn! D'Alice huet nach 2.972 WAVES op hirem Balance. Bob huet 3 WAVES.

Bob geschéckt 1 WAVES ze dApp Kont.

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

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

De Bob huet nach 1.99 WAVES. Dat ass, Bob bezuelt 0.01 WAVES Kommissioun

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

D'Alice hat 2.972 WAVES op hirem Balance, elo ass et 3.972. Eng Transaktioun gouf och um Alice Kont registréiert, awer keng Kommissioun gouf vum dApp Kont (Alice) berechent.
Nodeems Cooper och de Kont ersat huet, gouf d'Alice Gläichgewiicht 4.972 WAVES.

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Dir kënnt erausfannen, wien besëtzt wéi vill WAVES am gemeinsame Portemonnaie am Block Explorer an der Data Tab.

Cooper geännert seng Meenung iwwer de Betrag vun 1 WAVES op der allgemenger Portemonnaie ze verloossen an decidéiert d'Halschent vun der Affinitéit zréckzéien. Fir dëst ze maachen, muss hien d'Ofzuchsfunktioun nennen.

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Wéi och ëmmer, mir waren erëm falsch, well d'Réckzuchfunktioun komplett aner Parameteren an eng aner Ënnerschrëft huet. Wann Dir Smart Kontrakter op RIDE4DAPPS designt, sollt Dir op dëse Punkt oppassen

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Cooper huet elo 2.48 WAVES op sengem Bilan. Deementspriechend, 3 WAVES - 1 - 0.01, an dann + 0.5 - 0.01. Deementspriechend, all Uruff fir Depot an zréckzéien Käschten 0.01 WAVES. Als Resultat hunn d'Entréen an der dApps Besëtzer Tabelle wéi follegt geännert.

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Bob decidéiert och e puer Suen aus dem gemeinsame Portemonnaie ofgezu, mä huet e Feeler a probéiert 1.5 WAVES zréckzéien.

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Allerdéngs hat de Smart Kontrakt e Scheck fir dës Situatioun.

Xena ass e Scammer, si huet probéiert 1 WAVES aus dem Gesamtkonto zréckzezéien.

Léiert Waves Smart Kontrakter op RIDE a RIDE4DAPPS ze schreiwen. Deel 1 (Multi-Benotzer Portemonnaie)

Et huet si och net geklappt.

Am nächsten Deel kucke mir méi komplex Themen am Zesummenhang mat der Onfeelheet vum Alice dApp Account.

Source: will.com

Setzt e Commentaire