Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

Hello kulħadd!

Aktar reċentement, Waves Labs ħabbar kompetizzjoni għall-iżviluppaturi ddedikati għar-rilaxx tal-estensjoni tal-lingwa tal-kuntratt intelliġenti RIDE għal applikazzjonijiet deċentralizzati Ride4Dapps fin-netwerk tat-test!

Aħna għażilna l-każ DAO għaliex Ventwarju tippjana li tiżviluppa dApps b'funzjonijiet soċjali: votazzjoni, ġbir ta' fondi, ġestjoni tal-fiduċja, eċċ.
Bdejna b’eżempju sempliċi fi Sessjonijiet ta’ Q&A u RIDE IDE - eżempju ma kartiera maqsuma.

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 faucet u indika l-indirizz fejn tibgħat it-tokens.
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: reviżur

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:
Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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].
Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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 transazzjonijiet.

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.
Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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:
Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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().

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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 eżempju

Ride4Dapps issa jinkludi 2 tipi ġodda ta' annotazzjoni:

  1. @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.
  2. @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.
Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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 (per eżempju)
Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)
Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)
Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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.
Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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 }]}))

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

Bob fadallu 1.99 WAVES. Jiġifieri, Bob ħallas kummissjoni 0.01 WAVES

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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.

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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.

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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.

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

Bob iddeċieda wkoll li jirtira xi flus mill-kartiera maqsuma, iżda għamel żball u pprova jirtira 1.5 WAVES.

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

Madankollu, il-kuntratt intelliġenti kellu kontroll għal din is-sitwazzjoni.

Xena hija scammer, ippruvat tirtira 1 WAVES mill-kont totali.

Titgħallem tikteb kuntratti intelliġenti Waves fuq RIDE u RIDE4DAPPS. Parti 1 (Kartiera b'ħafna utenti)

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

Żid kumment