Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Hello everyone!

Mear resint, Waves Labs oankundige konkurrinsje foar ûntwikkelders wijd oan 'e frijlitting fan' e RIDE-tûke kontrakttaalútwreiding foar desintralisearre applikaasjes Ride4Dapps yn it testnetwurk!

Wy hawwe de DAO-saak keazen omdat Ventuary plannen om dApps te ûntwikkeljen mei sosjale funksjes: stimmen, fundraising, fertrouwenbehear, ensfh.
Wy begûnen mei in ienfâldich foarbyld yn Q&A sesjes en yn RIDE IDE - foarbyld mei dielde beurs.

Litte wy nei dit foarbyld sjen, hypotezen testen en wat nuverheden besjen:

Lit ús hawwe Alice - dApp Eigner
Boob en Cooper binne Alice-partners, mei-oprjochters fan Alice-BC DAO
Neli is in bedriuwseigner dy't finansiering nedich is
Bank - in bank dy't ferspriedt tokens

Stage 1. Inisjalisaasje fan saldo

Om tokens te ûntfangen op it weagentestnetwurk, moatte jo kontakt opnimme kraan en jou it adres oan dêr't tokens nei stjoere wurde.
Jo kinne it adres fine yn 'e IDE troch jo akkountgegevens te iepenjen.
Wy markearje Bank 10 WAVES. Dan kontrolearje wy dat se oankommen binne fia de blok- en transaksjebrowser: resinsint

Litte wy no tokens fan 'e bank ferspriede nei de rest fan' e dielnimmers. (Opmerkingen: Alle transaksjes op it weagennetwurk binne net fergees, dus in minimum posityf saldo is nedich foar alle dielnimmers om transaksjes te meitsjen).

1 WAVES = 100000000 ienheden (wavelets), om't bedraggen allinich in heule getal kinne wêze
0.01 WAVES (Transaksje Fee) = 1000000

Bank -> [3 WAVES] -> Alice, fia TransferTransaction (Type: 4).

Wy kontrolearje dat de env.SEED wêrfan transaksjes wurde tekene oerienkomt mei ús Bank:
Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

As jo ​​​​gjin oerienkommende siedfrase hawwe, skeakel dan gewoan nei it ljepblêd Accounts en kontrolearje it nochris.
Hjirnei meitsje, kundigje en tekenje wy in transaksje foar de oerdracht fan 3 WAVES Alice.
Jo kinne ek de gegevens fan Alice fine fia de fariabele env.accounts. Nûmering begjint fan 0, dus Alice is env.accounts[1].
Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

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

It resultaat kin ek wurde beoardiele yn 'e browser, in keppeling nei it sil nei de útfiering nei ús weromjûn wurde transaksjes.

Wy soargje derfoar dat it lykwicht fan Alice wurdt oanfolle troch 3 WAVES, en it banksaldo bliuwt op 10 - 3 - 0.01 = 0.699.
Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Wy stjoere Boob en Cooper 3 WAVES elk, en Neli, Xena en Mark 0.2 WAVES elk op deselde wize.
(Opmerkingen: Wy makken in flater fan ien karakter en stjoerde Neli 0.02 WAVES. Wês foarsichtich!)

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

Nei it oanfoljen fan de saldo's fan alle dielnimmers, sjogge wy:
Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Stage 2. Meitsje in dApp akkount

Wy hawwe ôfpraat dat Alice de skepper en eigner fan 'e desintralisearre applikaasje soe wêze.
Gean nei Accounts, set it as SEED en kontrolearje env.SEED komt oerien mei Alice.

Litte wy besykje it ienfâldichst mooglike skript (kontrakt) te ynstallearjen op Alice's akkount.
Slimme kontakten yn Waves binne predikaten dy't elk type útgeande transaksje ferbiede of tastean ûnder bepaalde betingsten. Yn dit gefal is dizze betingst ALTYD. De kontraktkoade is wier. Call deploy ().

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Fergoeding per setScript transaksje 1400000/100000000 = 0.014 WAVES. Alice hat 2.986 WAVES oer op har lykwicht.

Litte wy no besykje om kompleksere tûke kontraktlogika te ynstallearjen op it Alice-akkount, beskreaun yn foarbyld

Ride4Dapps omfettet no 2 nije annotaasjetypen:

  1. @Callable(i) - nimt as parameter i, gegevens oer hokker akkount neamd / tekene de transaksje. It is it resultaat fan dizze funksje dy't de feroaring yn 'e steat fan it dApp-akkount bepaalt. Oare akkounts kinne transaksjes meitsje en funksjes útfiere mei dizze annotaasje en de steat fan it dApp-akkount feroarje.
  2. @Verifier(tx) - Transaksjeverifier mei de transaksje tx-parameter. Komt oerien mei de predikaatlogika fan RIDE. It is yn dizze útdrukking dat jo fierdere feroaringen kinne tastean of ferbiede oan 'e logika fan tûke kontrakten op it dApp-akkount.

Litte wy dwaan dApp account as in mienskiplike beurs foar alle dielnimmers.
Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Om te kontrolearjen hokker kontrakt op it stuit aktyf is op jo akkount, kinne jo de base64-koade fan it tûke kontrakt kopiearje yn 'e blokferkenner en it werkenne mei in decompiler (bygelyks)
Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)
Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)
Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Wy soargje derfoar dat de logika fan it tûke kontrakt oerienkomt mei wat wy ferwachtsje.
Alice hat 2.972 WAVES oer op har lykwicht.

Dizze dApp hâldt by hoefolle elke dielnimmer bydraacht oan it mienskiplike fûns fia in meganisme gegevenstransaksje - DataEntry (currentKey, newAmount), wêr't currentKey it akkount is dat de boarchfunksje neamt, en newAmount is de wearde fan it oanfolle saldo.

Boob en Cooper meitsje har boarch op it dApp-akkount mei 1 WAVES.
Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Wy meitsje in flater en de transaksje giet net troch. Sûnt, nettsjinsteande it feit dat wy wiene oertsjûge dat wy wiene it meitsjen fan in transaksje út namme fan Bob, wy makken in flater yn 'e yndeks en oanjûn in Bank account dat hat gjin tûk kontrakt. It is de muoite wurdich op te merken hjir in wichtich punt - d'r is in fergoeding foar mislearre besykjen om transaksjes te begjinnen kin net fuortsmiten wurde! Alice hat 2.972 WAVES oer op har lykwicht. Bob hat 3 WAVES.

Bob stjoerde 1 WAVES nei dApp Account.

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

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Bob hat 1.99 WAVES oer. Dat is, Bob betelle 0.01 WAVES kommisje

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Alice hie 2.972 WAVES op har saldo, no is it 3.972. In transaksje waard ek registrearre op it Alice-akkount, mar gjin kommisje waard yn rekken brocht fan it dApp-akkount (Alice).
Neidat Cooper ek it akkount oanfolle, waard Alice's saldo 4.972 WAVES.

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Jo kinne útfine wa't besit hat hoefolle WAVES yn 'e mienskiplike beurs yn' e blokferkenner yn 'e ljepblêd Gegevens.

Cooper feroare syn gedachten oer it ferlitten fan it bedrach fan 1 WAVES op 'e algemiene beurs en besleat de helte fan' e affiniteit werom te lûken. Om dit te dwaan, moat hy de weromlûkfunksje neame.

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Wy wiene lykwols wer ferkeard, om't de weromlûkfunksje folslein oare parameters en in oare hantekening hat. As jo ​​​​tûke kontrakten ûntwerpe op RIDE4DAPPS, moatte jo omtinken jaan oan dit punt

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Cooper hat no 2.48 WAVES op syn balâns. Accordingly, 3 WAVES - 1 - 0.01, en dan + 0.5 - 0.01. Dêrom kostet elke oprop om te deponearje en werom te lûken 0.01 WAVES. As gefolch binne de yngongen yn 'e tabel dApps-eigners as folget feroare.

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

Bob besleat ek in lûke wat jild út de dielde beurs, mar makke in flater en besocht te lûken 1.5 WAVES.

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

It tûke kontrakt hie lykwols in sjek foar dizze situaasje.

Xena is in scammer, se besocht te lûken 1 WAVES út it totale account.

Learje om Waves smart kontrakten te skriuwen op RIDE en RIDE4DAPPS. Diel 1 (Multi-brûker portemonnee)

It slagge har ek net.

Yn it folgjende diel sille wy nei mear komplekse problemen sjen yn ferbân mei de ûnfolsleinens fan Alice dApp Account.

Boarne: www.habr.com

Add a comment