Hallo jiddereen!
Méi kuerzem, Waves Labs
Mir hunn den DAO Fall gewielt well
Mir ugefaang mat engem einfache Beispill an
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
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:
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:

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].
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
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.
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:
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 ().
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
Ride4Dapps enthält elo 2 nei Annotatiounstypen:
- @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.
- @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.
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 (
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.
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 }]}))
De Bob huet nach 1.99 WAVES. Dat ass, Bob bezuelt 0.01 WAVES Kommissioun
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.
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.
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
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.
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.
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.
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