Hemûyan re merheba!
Herî dawî, Waves Labs
Me doza DAO hilbijart ji ber ku
Me bi mînakek hêsan dest pê kir
Ka em li vê nimûneyê binêrin, hîpotezan biceribînin û li hin xerîban binêrin:
Bila Alice - Xwediyê dAppê hebe
Boob û Cooper hevkarên Alice, hev-damezrînerên Alice-BC DAO ne
Nelî xwediyê karsaziyek e ku hewceyê fînansê ye
Bank - bankek ku nîşanan belav dike
Qonaxa 1. Destpêkirina hevsengiyan
Ji bo ku hûn nîşanekan li ser tora ceribandina pêlan bistînin, hûn hewce ne ku têkilî daynin
Hûn dikarin navnîşana di IDE-ê de bi vekirina hûrguliyên hesabê xwe bibînin.
Em Bank 10 WAVES ronî dikin. Dûv re em kontrol dikin ku ew bi geroka blok û danûstendinê gihîştine:
Naha em nîşanekan ji bankê li beşdarên mayî belav bikin. (Têbînî: Hemî danûstendinên li ser tora pêlan ne belaş in, ji ber vê yekê balansek erênî ya herî kêm hewce ye ku hemî beşdaran danûstendinan bikin).
1 WAVES = 100000000 yekîneyên (pêl), ji ber ku mîqdar tenê dikarin jimarek bêkêmasî bin
0.01 WAVES (Heqê Danûstendinê) = 1000000
Bank -> [3 WAVES] -> Alice, bi rêya TransferTransaction (Tîp: 4).
Em kontrol dikin ku env.SEED ya ku danûstendinên jê têne îmze kirin bi Bankeya me re têkildar e:

Ger hevokek tovê lihevhatî tune be, tenê di tabloya Hesaban de biguherînin û dîsa kontrol bikin.
Piştî vê yekê, em ji bo veguheztina 3 WAVES Alice danûstendinek diafirînin, ragihandin û îmze dikin.
Her weha hûn dikarin daneyên Alice bi navgîniya guhêrbar env.accounts bibînin. Jimarkirin ji 0 dest pê dike, lewra Alice env.accounts[1] ye.
broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))
Encam dikare di gerokê de jî were dîtin, girêdanek jê re dê tavilê piştî darvekirinê ji me re were vegerandin
Em piştrast dikin ku balansa Alice ji hêla 3 WAVES ve tê dagirtin, û balansa bankê li 10 - 3 - 0.01 = 0.699 dimîne.
Em her yek Boob û Cooper 3 WAVES, û Neli, Xena û Mark 0.2 WAVES her yek bi heman rengî dişînin.
(Têbînî: Me xeletiyek yek karakter çêkir û Neli 0.02 WAVES şandin. Hişyar bin!)
broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))
Piştî dagirtina hevsengiyên hemî beşdaran, em dibînin:
Qonaxa 2. Hesabek dApp çêbikin
Me li hev kir ku Alice dê bibe afirîner û xwedan serîlêdana nenavendî.
Herin Hesaban, wê wekî SEED saz bikin û lihevhatina env.SEED Alice kontrol bikin.
Ka em hewl bidin ku li ser hesabê Alice skrîpta herî hêsan (peyman) saz bikin.
Têkiliyên biaqil ên di Waves de pêşdaraz in ku her cûre danûstendina derketinê di bin hin mercan de qedexe dikin an dihêlin. Di vê rewşê de, ev şert HERDEM e. Koda peymanê rast e. Banga deploy().
Xerca her danûstendina setScript 1400000/100000000 = 0.014 PÊL. Li ser hevsengiya wê Alice 2.986 PÊL hene.
Ka em naha hewl bidin ku li ser hesabê Alice, ku tê de hatî destnîşan kirin, mantiqa peymana hişmend a tevlihevtir saz bikin
Ride4Dapps naha 2 celebên annotasyonê yên nû vedihewîne:
- @Callable(ez) - wekî parameter i, daneyên li ser kîjan hesabê ku danûstendinê gazî kiriye/îmza kiriye digire. Ew encama vê fonksiyonê ye ku guhartina di rewşa hesabê dApp de diyar dike. Hesabên din dikarin bi vê annotationê ve danûstandinan biafirînin û fonksiyonan bikin û rewşa hesabê dApp biguhezînin.
- @Verifier(tx) - Verastkera danûstendinê bi parametreya tx-ya danûstendinê. Bi mantiqa pêşdarazê ya RIDE re têkildar e. Di vê gotinê de ye ku hûn dikarin guheztinên din ên mantiqa peymanên biaqil ên li ser hesabê dApp-ê destûr bidin an qedexe bikin.
Werin em bikin dApp hesab ji bo hemî beşdaran wekî walletek hevpar.
Ji bo ku hûn kontrol bikin ka kîjan peyman niha li ser hesabê we çalak e, hûn dikarin koda bingehîn64 ya peymana jîr di nav lêkolerê blokê de kopî bikin û bi karanîna decompiler nas bikin (
Em piştrast dikin ku mantiqa peymana biaqil bi ya ku em hêvî dikin li hev dike.
Alice li ser hevsengiya wê 2.972 PÊL mane.
Ev dApp dişopîne ka her beşdarek bi mekanîzmayek çiqas beşdarî fona hevpar dibe danûstendina daneyê - Ketina Daneyê (Kîpa niha, Hejmara nû), ku currentKey ew hesabê ye ku gazî fonksiyona depoyê dike, û newAmount nirxa hevsengiya dagirtî ye.
Boob û Cooper bi 1 WAVES ve depoyên xwe didin hesabê dApp.
Em xeletiyekê dikin û danûstandin derbas nabe. Ji ber ku, tevî ku em pê bawer bûn ku em li ser navê Bob danûstendinê dikin, me di navnîşan de xeletiyek kir û hesabek Bankê ya ku peymanek jîr nîne destnîşan kir. Hêjayî balkişandinê ye li vir xalek girîng - ji bo hewldanên neserkeftî yên destpêkirina danûstendinan xercek heye nayê rakirin! Alice li ser hevsengiya wê 2.972 PÊL mane. Bob 3 PÊL hene.
Bob 1 WAVES ji Hesabê dApp re şand.
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
Bob heye 1.99 WAVES maye. Ango, Bob 0.01 komîsyona WAVES da
Alice li ser hevsengiya wê 2.972 PÊL hebûn, niha ew 3.972 ye. Li ser hesabê Alice jî danûstendinek hate tomar kirin, lê ji Hesabê dApp (Alice) komîsyonek nehat barkirin.
Piştî ku Cooper jî hesabê nû da, balansa Alice bû 4.972 WAVES.
Hûn dikarin di tabloya Daneyê de di geroka blokê de zanibin ku xwediyê çend WAVES di berîka hevpar de ye.
Cooper hişê xwe guhert ku mîqdara 1 WAVES li ser berîka giştî bihêle û biryar da ku nîvê hevbendiyê vekişîne. Ji bo vê yekê, divê ew fonksiyona vekişînê bang bike.
Lêbelê, em dîsa xelet bûn, ji ber ku fonksiyona vekişînê bi tevahî pîvanên cûda û îmzeyek cûda heye. Dema ku hûn li ser RIDE4DAPPS peymanên biaqil sêwirînin divê hûn bala xwe bidin vê xalê
Cooper niha di bîlançoya xwe de 2.48 WAVES heye. Li gorî vê yekê, 3 WAVES - 1 - 0.01, û paşê + 0.5 - 0.01. Li gorî vê yekê, her bangek ji bo depokirin û vekişandinê 0.01 WAVES lêçû. Wekî encamek, navnîşên di tabloya xwedan dApps de wiha guherî.
Bob jî biryar da ku hinek pere ji berîka hevpar vekişîne, lê xeletiyek kir û hewl da ku 1.5 WAVES vekişîne.
Lêbelê, peymana hişmend ji bo vê rewşê kontrolek hebû.
Xena xapînokek e, wê hewl da ku 1 WAVES ji hesabê giştî vekişîne.
Ji wê re jî bi ser neket.
Di beşa paşîn de, em ê li pirsgirêkên tevlihevtir ên ku bi bêkêmasîbûna Hesabê Alice dApp ve girêdayî ne binêrin.
Source: www.habr.com