Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

ВсСм ΠŸΡ€ΠΈΠ²Π΅Ρ‚!

Paling anyar, Waves Labs diumumake kompetisi kanggo pangembang darmabakti kanggo release saka extension basa kontrak pinter RIDE kanggo aplikasi desentralisasi Ride4Dapps menyang jaringan test!

Kita milih kasus DAO amarga Ventuary rencana ngembangake dApps kanthi fungsi sosial: voting, penggalangan dana, manajemen kepercayaan, lsp.
Kita miwiti karo conto prasaja ing sesi Q&A lan ing Numpak IDE - contone karo dompet bareng.

Ayo goleki conto iki, uji hipotesis lan deleng sawetara keanehan:

Ayo duwe Alice - Pemilik dApp
Boob lan Cooper minangka mitra Alice, pendiri Alice-BC DAO
Neli minangka pengusaha sing butuh pendanaan
Bank - bank sing nyebarke token

Tahap 1. Initialization saka saldo

Kanggo nampa token ing jaringan test ombak, sampeyan kudu ngubungi kran banyu lan nuduhake alamat kanggo ngirim token.
Sampeyan bisa nemokake alamat ing IDE kanthi mbukak rincian akun.
Kita nyorot Bank 10 WAVES. Banjur kita priksa manawa dheweke teka liwat browser blok lan transaksi: panaliti

Saiki ayo disebarake token saka bank menyang peserta liyane. (Cathetan: Kabeh transaksi ing jaringan ombak ora gratis, supaya imbangan positif minimal dibutuhake kanggo kabeh peserta kanggo nggawe transaksi).

1 GELOMBANG = 100000000 unit (wavelet), amarga jumlah mung bisa integer
0.01 GELOMBANG (Biaya Transaksi) = 1000000

Bank -> [3 GELOMBANG] -> Alice, liwat TransferTransaction (Tipe: 4).

Kita mriksa yen env.SEED saka transaksi sing ditandatangani cocog karo Bank kita:
Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)
οΏΌ
Yen sampeyan ora duwe frasa wiji sing cocog, pindhah menyang tab Akun banjur priksa maneh.
Sawise iki, kita nggawe, ngumumake lan mlebu transaksi kanggo transfer 3 WAVES Alice.
Sampeyan uga bisa ngerteni data Alice liwat variabel env.accounts. Nomer diwiwiti saka 0, mula Alice env.accounts[1].
Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

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

Asil uga bisa diamati ing browser, link menyang bakal bali menyang kita sanalika sawise eksekusi transaksi.

Kita priksa manawa imbangan Alice diisi maneh kanthi 3 GELOMBANG, lan imbangan bank tetep ing 10 - 3 - 0.01 = 0.699.
Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Kita ngirim Boob lan Cooper 3 WAVES saben, lan Neli, Xena lan Mark 0.2 WAVES saben ing cara sing padha.
(Cathetan: Kita nggawe kesalahan siji karakter lan ngirim Neli 0.02 GELOMBANG. Ati-ati!)

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

Sawise ngisi saldo kabeh peserta, kita ndeleng:
Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Tahap 2. Nggawe akun dApp

Kita sarujuk yen Alice bakal dadi pencipta lan pemilik aplikasi desentralisasi.
Pindhah menyang Akun, atur minangka SEED lan priksa env.SEED cocog karo Alice.

Ayo nyoba nginstal skrip (kontrak) sing paling gampang ing akun Alice.
Kontak cerdas ing Waves minangka predikat sing nglarang utawa ngidini samubarang jinis transaksi metu kedadeyan ing kahanan tartamtu. Ing kasus iki, kondisi iki tansah. Kode kontrak bener. Telpon nyebarake ().

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Ragad saben setScript transaksi 1400000/100000000 = 0.014 GELOMBANG. Alice duwe sisa 2.986 WAVES ing imbangan.

Saiki ayo nyoba nginstal logika kontrak cerdas sing luwih rumit ing akun Alice, sing diterangake ing contone

Ride4Dapps saiki kalebu 2 jinis anotasi anyar:

  1. @bisa ditelpon(i) - njupuk minangka parameter i, data bab kang akun disebut / mlebu transaksi. Iki minangka asil saka fungsi iki sing nemtokake owah-owahan ing negara akun dApp. Akun liyane bisa nggawe transaksi lan nglakokake fungsi kanthi anotasi iki lan ngganti kahanan akun dApp.
  2. @Verifier(tx) - Verifier transaksi karo parameter tx transaksi. Cocog karo logika predikat saka RIDE. Ing ekspresi iki sampeyan bisa ngidini utawa nglarang owah-owahan luwih saka logika kontrak pinter ing akun dApp.

Ayo padha nindakake dapp akun minangka dompet umum kanggo kabeh peserta.
Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Kanggo mriksa kontrak endi sing saiki aktif ing akun sampeyan, sampeyan bisa nyalin kode base64 saka kontrak cerdas ing blok explorer lan ngenali nggunakake decompiler (contone)
Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)
Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)
Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Kita priksa manawa logika kontrak cerdas cocog karo sing dikarepake.
Alice duwe sisa 2.972 GELOMBANG ing imbangan.

DApp iki nglacak jumlah saben peserta nyumbang kanggo dana umum liwat mekanisme transaksi data - DataEntry(currentKey, newAmount), ngendi currentKey akun sing nelpon fungsi simpenan, lan newAmount punika Nilai saka imbangan replenished.

Boob lan Cooper nggawe simpenan menyang akun dApp kanthi 1 WAVES.
Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Kita nggawe kesalahan lan transaksi ora liwati. Wiwit, senadyan kasunyatan manawa kita yakin yen kita nggawe transaksi atas jenenge Bob, kita nggawe kesalahan ing indeks lan nuduhake akun Bank sing ora duwe kontrak pinter. Perlu dicathet titik penting ing kene - ana biaya kanggo upaya sing gagal kanggo miwiti transaksi ora bisa dibusak! Alice duwe sisa 2.972 GELOMBANG ing imbangan. Bob duwe 3 GELOMBANG.

Bob ngirim 1 WAVES menyang Akun dApp.

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

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Bob isih duwe 1.99 WAVES. Yaiku, Bob mbayar komisi 0.01 WAVES

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Alice duwe imbangan 2.972 WAVES, saiki dadi 3.972. Transaksi uga didaftar ing akun Alice, nanging ora ana komisi sing dikenani biaya saka Akun dApp (Alice).
Sawise Cooper uga ngisi akun kasebut, imbangan Alice dadi 4.972 GELOMBANG.

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Sampeyan bisa ngerteni sapa sing duwe pirang-pirang WAVES ing dompet umum ing panjelajah blok ing tab Data.

Cooper ngganti pikirane babagan ninggalake jumlah 1 WAVES ing dompet umum lan mutusake kanggo mbatalake setengah afinitas. Kanggo nindakake iki, dheweke kudu nelpon fungsi mundur.

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Nanging, kita padha salah maneh, wiwit fungsi mbatalake wis paramèter temen beda lan teken beda. Nalika sampeyan ngrancang kontrak pinter ing RIDE4DAPPS sampeyan kudu menehi perhatian menyang titik iki

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Cooper saiki duwe 2.48 WAVES ing neraca. Dadi, 3 GELOMBANG - 1 - 0.01, banjur + 0.5 - 0.01. Patut, saben telpon kanggo simpenan lan mbatalake biaya 0.01 WAVES. AkibatΓ©, entri ing tabel pamilik dApps diganti kaya ing ngisor iki.

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Bob uga mutusakΓ© kanggo mbatalake sawetara dhuwit saka dompet sambungan, nanging nggawe kesalahan lan nyoba kanggo mbatalake 1.5 WAVES.

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Nanging, kontrak pinter wis mriksa kahanan iki.

Xena minangka scammer, dheweke nyoba mbatalake 1 WAVES saka total akun.

Sinau nulis kontrak cerdas Waves ing RIDE lan RIDE4DAPPS. Bagean 1 (Dompet akeh pangguna)

Iku uga ora bisa kanggo dheweke.

Ing bagean sabanjure, kita bakal ndeleng masalah sing luwih rumit sing ana gandhengane karo ora sampurna Akun Alice dApp.

Source: www.habr.com

Add a comment