Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Helo bawb!

Yn fwy diweddar, Waves Labs cyhoeddi cystadleuaeth i ddatblygwyr sy'n ymroddedig i ryddhau estyniad iaith contract smart RIDE ar gyfer cymwysiadau datganoledig Ride4Dapps i'r rhwydwaith prawf!

Dewisasom yr achos DAO oherwydd Ventuary cynlluniau i ddatblygu dApps gyda swyddogaethau cymdeithasol: pleidleisio, codi arian, rheoli ymddiriedolaeth, ac ati.
Dechreuasom gydag enghraifft syml yn Sesiynau holi ac ateb a RIDE IDE - enghraifft gyda waled a rennir.

Gadewch i ni edrych ar yr enghraifft hon, rhoi prawf ar ddamcaniaethau ac edrych ar rai rhyfeddodau:

Gadewch inni gael Alice - Perchennog dApp
Mae Boob a Cooper yn bartneriaid Alice, cyd-sylfaenwyr Alice-BC DAO
Mae Neli yn berchennog busnes sydd angen cyllid
Banc - banc sy'n dosbarthu tocynnau

Cam 1. Cychwyn balansau

Er mwyn derbyn tocynnau ar y rhwydwaith prawf tonnau, mae angen i chi gysylltu faucet a nodi'r cyfeiriad i anfon tocynnau iddo.
Gallwch ddod o hyd i'r cyfeiriad yn y DRhA trwy agor manylion eich cyfrif.
Rydym yn amlygu Banc 10 TON. Yna byddwn yn gwirio eu bod wedi cyrraedd trwy'r porwr bloc a thrafodion: adolygydd

Nawr, gadewch i ni ddosbarthu tocynnau o'r banc i weddill y cyfranogwyr. (Nodiadau: Nid yw'r holl drafodion ar y rhwydwaith tonnau yn rhad ac am ddim, felly mae angen isafswm cydbwysedd cadarnhaol er mwyn i'r holl gyfranogwyr wneud trafodion).

1 TONAU = 100000000 o unedau (tonfeddi), gan mai dim ond cyfanrif y gall symiau fod
0.01 TONAU (TΓ’l Trafodion) = 1000000

Banc -> [3 TON] -> Alice, trwy TransferTransaction (Math: 4).

Rydym yn gwirio bod yr env.SEED y llofnodwyd trafodion ohono yn cyfateb i'n Banc:
Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)
οΏΌ
Os nad oes gennych ymadrodd hadau cyfatebol, dim ond newid iddo yn y tab Cyfrifon a gwirio eto.
Ar Γ΄l hyn, rydym yn creu, yn cyhoeddi ac yn llofnodi trafodiad ar gyfer trosglwyddo 3 TONAU Alice.
Gallwch hefyd ddarganfod data Alice trwy'r newidyn cyfrifon env. Mae'r rhifo yn dechrau o 0, felly mae Alice yn cyfrif amlen[1].
Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

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

Gellir gweld y canlyniad hefyd yn y porwr, bydd dolen iddo yn cael ei ddychwelyd atom yn syth ar Γ΄l ei weithredu trafodion.

Rydym yn gwneud yn siΕ΅r bod balans Alice yn cael ei ailgyflenwi gan 3 TON, ac mae balans y banc yn aros ar 10 - 3 - 0.01 = 0.699.
Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Dan ni'n anfon 3 TON yr un i Boob a Cooper, a Neli, Xena a Mark 0.2 TON yr un yn yr un ffordd.
(Nodiadau: Fe wnaethom gamgymeriad un nod ac anfon Neli 0.02 TONAU. Byddwch yn ofalus!)

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

Ar Γ΄l ailgyflenwi balansau'r holl gyfranogwyr, gwelwn:
Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Cam 2. Creu cyfrif dApp

Fe wnaethom gytuno mai Alice fyddai creawdwr a pherchennog y cais datganoledig.
Ewch i'r Cyfrifon, gosodwch ef fel SEED a gwiriwch env.SEED yn cyfateb i Alice.

Gadewch i ni geisio gosod y sgript (contract) symlaf posibl ar gyfrif Alice.
Mae cysylltiadau clyfar yn Waves yn rhagfynegiadau sy'n gwahardd neu'n caniatΓ‘u i unrhyw fath o drafodiad sy'n mynd allan ddigwydd o dan amodau penodol. Yn yr achos hwn, mae'r cyflwr hwn BOB AMSER. Mae cod y contract yn wir. Gosod galwadau ().

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Ffi fesul trafodiad setScript 1400000/100000000 = 0.014 TONNAU. Mae gan Alice 2.986 TON ar Γ΄l ar ei balans.

Gadewch i ni nawr geisio gosod rhesymeg contract smart mwy cymhleth ar gyfrif Alice, a ddisgrifir yn enghraifft

Ride4Dapps bellach yn cynnwys 2 fath o anodiad newydd:

  1. @galadwy(i) β€” yn cymryd fel paramedr i, data am ba gyfrif a alwodd/arwyddodd y trafodiad. Canlyniad y swyddogaeth hon sy'n pennu'r newid yng nghyflwr y cyfrif dApp. Gall cyfrifon eraill greu trafodion a gweithredu swyddogaethau gyda'r anodiad hwn a newid cyflwr y cyfrif dApp.
  2. @Gwiriwr(tx) β€” Dilyswr trafodiad gyda'r paramedr trafodiad tx. Yn cyfateb i'r rhesymeg rhagfynegiad o RIDE. Yn yr ymadrodd hwn y gallwch ganiatΓ‘u neu wahardd newidiadau pellach i resymeg contractau smart ar y cyfrif dApp.

Gadewch i ni wneud dApp cyfrif fel waled gyffredin ar gyfer yr holl gyfranogwyr.
Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

I wirio pa gontract sy'n weithredol ar eich cyfrif ar hyn o bryd, gallwch gopΓ―o cod base64 y contract smart yn yr archwiliwr bloc a'i adnabod gan ddefnyddio dadgrynhoi (er enghraifft,)
Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)
Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)
Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Rydyn ni'n gwneud yn siΕ΅r bod rhesymeg y contract smart yn cyfateb i'r hyn rydyn ni'n ei ddisgwyl.
Mae gan Alice 2.972 TONNAU ar Γ΄l ar ei balans.

Mae'r dApp hwn yn cadw golwg ar faint mae pob cyfranogwr yn ei gyfrannu at y gronfa gyffredin trwy fecanwaith trafodiad data β€” DataEntry(currentKey, newSwm), lle currentKey yw'r cyfrif sy'n galw'r swyddogaeth blaendal, a newAmount yw gwerth y balans wedi'i ailgyflenwi.

Mae Boob a Cooper yn gwneud eu hadneuon i'r cyfrif dApp gyda 1 TONNAU.
Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Rydym yn gwneud camgymeriad ac nid yw'r trafodiad yn mynd drwodd. Ers, er gwaethaf y ffaith ein bod yn argyhoeddedig ein bod yn gwneud trafodiad ar ran Bob, gwnaethom gamgymeriad yn y mynegai a nodi cyfrif Banc nad oes ganddo gontract smart. Mae'n werth nodi pwynt pwysig yma - mae ffi am ymdrechion aflwyddiannus i gychwyn trafodion ni ellir ei ddileu! Mae gan Alice 2.972 TONNAU ar Γ΄l ar ei balans. Mae gan Bob 3 TON.

Anfonodd Bob 1 TONNAU i dApp Account.

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

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Mae gan Bob 1.99 TONNAU ar Γ΄l. Hynny yw, talodd Bob 0.01 comisiwn TONNAU

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Roedd gan Alice 2.972 TONAU ar ei balans, nawr mae'n 3.972. Cofrestrwyd trafodiad hefyd ar gyfrif Alice, ond ni chodwyd unrhyw gomisiwn o'r Cyfrif dApp (Alice).
Ar Γ΄l i Cooper ailgyflenwi'r cyfrif hefyd, daeth balans Alice yn 4.972 TONNAU.

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Gallwch ddarganfod pwy sy'n berchen ar faint o TONAU yn y waled gyffredin yn yr archwiliwr bloc yn y tab Data.

Newidiodd Cooper ei feddwl am adael y swm o 1 TONNAU ar y waled gyffredinol a phenderfynodd dynnu hanner yr affinedd yn Γ΄l. I wneud hyn, rhaid iddo alw'r swyddogaeth tynnu'n Γ΄l.

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Fodd bynnag, roeddem yn anghywir eto, gan fod gan y swyddogaeth tynnu'n Γ΄l baramedrau hollol wahanol a llofnod gwahanol. Pan fyddwch chi'n dylunio contractau smart ar RIDE4DAPPS dylech dalu sylw i'r pwynt hwn

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Bellach mae gan Cooper 2.48 TON ar ei fantolen. Yn unol Γ’ hynny, 3 TONNAU - 1 - 0.01, ac yna + 0.5 - 0.01. Yn unol Γ’ hynny, mae pob galwad i adneuo a thynnu'n Γ΄l yn costio 0.01 TONNAU. O ganlyniad, newidiodd y cofnodion yn nhabl perchnogion dApps fel a ganlyn.

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Penderfynodd Bob hefyd dynnu rhywfaint o arian o'r waled a rennir, ond gwnaeth gamgymeriad a cheisiodd dynnu 1.5 TONNAU yn Γ΄l.

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Fodd bynnag, roedd gan y contract smart siec ar gyfer y sefyllfa hon.

Mae Xena yn dwyllwr, ceisiodd dynnu 1 TONNAU o gyfanswm y cyfrif.

Dysgu ysgrifennu contractau smart Waves ar RIDE a RIDE4DAPPS. Rhan 1 (waled aml-ddefnyddiwr)

Wnaeth o ddim gweithio allan iddi chwaith.

Yn y rhan nesaf, byddwn yn edrych ar faterion mwy cymhleth yn ymwneud ag amherffeithrwydd Alice dApp Account.

Ffynhonnell: hab.com

Ychwanegu sylw