Hello kulħadd!
Aktar reċentement, Waves Labs
Aħna għażilna l-każ DAO għaliex
Bdejna b’eżempju sempliċi fi
Ejja nħarsu lejn dan l-eżempju, ittestja l-ipoteżi u nħares lejn xi strambi:
Ejjew ikollna Alice - dApp Owner
Boob u Cooper huma msieħba ta 'Alice, ko-fundaturi ta' Alice-BC DAO
Neli huwa sid ta’ negozju li għandu bżonn finanzjament
Bank - bank li jqassam tokens
Stadju 1. Inizjalizzazzjoni tal-bilanċi
Sabiex tirċievi tokens fuq in-netwerk tat-test tal-mewġ, għandek bżonn tikkuntattja
Tista' ssib l-indirizz fl-IDE billi tiftaħ id-dettalji tal-kont tiegħek.
Aħna nenfasizzaw Bank 10 WAVES. Imbagħad niċċekkjaw li waslu permezz tal-blokk u l-browser tat-tranżazzjonijiet:
Issa ejja nqassmu tokens mill-bank lill-bqija tal-parteċipanti. (Noti: It-tranżazzjonijiet kollha fuq in-netwerk tal-mewġ mhumiex ħielsa, għalhekk huwa meħtieġ bilanċ pożittiv minimu għall-parteċipanti kollha biex jagħmlu tranżazzjonijiet).
1 WAVES = 100000000 unità (wavelets), peress li l-ammonti jistgħu jkunu biss numru sħiħ
0.01 WAVES (Ħlas tat-Tranżazzjoni) = 1000000
Bank -> [3 WAVES] -> Alice, permezz ta’ TransferTransaction (Tip: 4).
Aħna niċċekkjaw li l-env.SEED li minnu jiġu ffirmati t-tranżazzjonijiet jaqbel mal-Bank tagħna:

Jekk m'għandekx frażi ta' żerriegħa li taqbel, aqleb għaliha fit-tab tal-Kontijiet u erġa' iċċekkja.
Wara dan, noħolqu, inħabbru u niffirmaw transazzjoni għat-trasferiment ta '3 WAVES Alice.
Tista 'ssib ukoll id-dejta ta' Alice permezz tal-varjabbli env.accounts. In-numerazzjoni tibda minn 0, għalhekk Alice hija env.accounts[1].
broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))
Ir-riżultat jista 'jiġi osservat ukoll fil-browser, link għaliha tiġi rritornata lilna immedjatament wara l-eżekuzzjoni
Aħna niżguraw li l-bilanċ ta 'Alice jiġi rifornit bi 3 WAVES, u l-bilanċ bankarju jibqa' f'10 - 3 - 0.01 = 0.699.
Nibagħtu lil Boob u Cooper 3 WAVES kull wieħed, u Neli, Xena u Mark 0.2 WAVES kull wieħed bl-istess mod.
(Noti: Għamilna żball ta' karattru wieħed u bgħatna lil Neli 0.02 WAVES. Oqgħod attent!)
broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))
Wara li timla l-bilanċi tal-parteċipanti kollha, naraw:
Stadju 2. Oħloq kont dApp
Aħna qbilna li Alice tkun il-kreatur u s-sid tal-applikazzjoni deċentralizzata.
Mur fil-Kontijiet, issettjaha bħala SEED u ċċekkja env.SEED taqbel ma' Alice.
Ejja nippruvaw ninstallaw l-aktar skript (kuntratt) sempliċi possibbli fuq il-kont ta 'Alice.
Kuntatti intelliġenti f'Wave huma predikati li jipprojbixxu jew jippermettu li sseħħ kwalunkwe tip ta' tranżazzjoni ħerġin taħt ċerti kundizzjonijiet. F'dan il-każ, din il-kundizzjoni hija DEJJEM. Il-kodiċi tal-kuntratt huwa veru. Sejħa deploy().
Tariffa għal kull transazzjoni setScript 1400000/100000000 = 0.014 WAVES. Alice fadallu 2.986 WAVE fil-bilanċ tagħha.
Ejja issa nippruvaw ninstallaw loġika tal-kuntratt intelliġenti aktar kumplessa fuq il-kont Alice, deskritt fi
Ride4Dapps issa jinkludi 2 tipi ġodda ta' annotazzjoni:
- @Callable(i) — tieħu bħala parametru i, data dwar liema kont imsejjaħ/iffirma t-tranżazzjoni. Huwa r-riżultat ta 'din il-funzjoni li jiddetermina l-bidla fl-istat tal-kont dApp. Kontijiet oħra jistgħu joħolqu tranżazzjonijiet u jeżegwixxu funzjonijiet b'din l-annotazzjoni u jibdlu l-istat tal-kont dApp.
- @Verifikatur(tx) — Verifikatur tat-tranżazzjoni bil-parametru transazzjoni tx. Jikkorrispondi mal-loġika tal-predikat minn RIDE. Huwa f'din l-espressjoni li tista 'tippermetti jew tipprojbixxi aktar bidliet fil-loġika ta' kuntratti intelliġenti fuq il-kont dApp.
Ejja nagħmlu dApp kont bħala kartiera komuni għall-parteċipanti kollha.
Biex tiċċekkja liema kuntratt huwa attiv bħalissa fuq il-kont tiegħek, tista' tikkopja l-kodiċi base64 tal-kuntratt intelliġenti fl-esploratur tal-blokki u tagħrafha billi tuża decompiler (
Aħna niżguraw li l-loġika tal-kuntratt intelliġenti taqbel ma' dak li nistennew.
Alice fadallu 2.972 WAVE fil-bilanċ tagħha.
Din id-dApp iżżomm kont ta’ kemm kull parteċipant jikkontribwixxi għall-fond komuni permezz ta’ mekkaniżmu tranżazzjoni tad-dejta — DataEntry(Cave kurrenti, Ammont ġdid), fejn currentKey huwa l-kont li jsejjaħ il-funzjoni tad-depożitu, u newAmount huwa l-valur tal-bilanċ rifornit.
Boob u Cooper jagħmlu d-depożiti tagħhom fil-kont dApp b'1 WAVES.
Aħna nagħmlu żball u t-tranżazzjoni ma tgħaddix. Peress li, minkejja l-fatt li konna konvinti li konna qed nagħmlu tranżazzjoni f'isem Bob, għamilna żball fl-indiċi u indika kont Bankarju li m'għandux kuntratt intelliġenti. Ta 'min jinnota punt importanti hawnhekk - hemm ħlas għal tentattivi bla suċċess biex jinbdew tranżazzjonijiet ma tistax titneħħa! Alice fadallu 2.972 WAVE fil-bilanċ tagħha. Bob għandu 3 WAVES.
Bob bagħat 1 WAVES lill-Kont dApp.
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
Bob fadallu 1.99 WAVES. Jiġifieri, Bob ħallas kummissjoni 0.01 WAVES
Alice kellha 2.972 WAVE fuq il-bilanċ tagħha, issa hija 3.972. Ġiet reġistrata wkoll tranżazzjoni fuq il-kont Alice, iżda l-ebda kummissjoni ma ġiet iċċarġjata mill-Kont dApp (Alice).
Wara li Cooper imla wkoll il-kont, il-bilanċ ta 'Alice sar 4.972 WAVES.
Tista 'ssir taf min għandu kemm WAVES fil-kartiera komuni fl-esploratur tal-blokki fit-tab tad-Data.
Cooper biddel fehmtu dwar li jħalli l-ammont ta '1 WAVES fuq il-kartiera ġenerali u ddeċieda li jirtira nofs l-affinità. Biex tagħmel dan, huwa għandu jsejjaħ il-funzjoni ta 'rtirar.
Madankollu, konna żbaljati mill-ġdid, peress li l-funzjoni ta 'rtirar għandha parametri kompletament differenti u firma differenti. Meta tfassal kuntratti intelliġenti fuq RIDE4DAPPS għandek tagħti attenzjoni għal dan il-punt
Cooper issa għandu 2.48 WAVES fuq il-karta tal-bilanċ tiegħu. Għaldaqstant, 3 WAVES - 1 - 0.01, u mbagħad + 0.5 - 0.01. Għaldaqstant, kull sejħa għad-depożitu u l-irtirar tiswa 0.01 WAVES. Bħala riżultat, l-entrati fit-tabella tas-sidien tad-dApps inbidlu kif ġej.
Bob iddeċieda wkoll li jirtira xi flus mill-kartiera maqsuma, iżda għamel żball u pprova jirtira 1.5 WAVES.
Madankollu, il-kuntratt intelliġenti kellu kontroll għal din is-sitwazzjoni.
Xena hija scammer, ippruvat tirtira 1 WAVES mill-kont totali.
Ma ħadmitx lilha lanqas.
Fil-parti li jmiss, se nħarsu lejn kwistjonijiet aktar kumplessi relatati mal-imperfezzjoni tal-Kont Alice dApp.
Sors: www.habr.com