Carane Mbangun, Nyebar lan Test Waves RIDE dApp

Hello! Ing artikel iki aku bakal nuduhake sampeyan carane nulis lan mbukak dApp biasa ing simpul Waves. Ayo goleki alat sing dibutuhake, metode lan conto pangembangan.

Carane Mbangun, Nyebar lan Test Waves RIDE dApp

Skema pangembangan kanggo dApps lan aplikasi biasa meh padha:

  • Nulis kode
  • Nulis testing otomatis
  • Bukak aplikasi
  • Testing

Piranti

1. docker kanggo mbukak simpul lan Waves Explorer

Yen sampeyan ora pengin miwiti simpul, sampeyan bisa ngliwati langkah iki. Sawise kabeh, ana jaringan tes lan eksperimen. Nanging tanpa nggunakake simpul sampeyan dhewe, proses tes bisa uga terus.

  • Sampeyan bakal mbutuhake akun anyar kanthi token uji coba. Faucet jaringan test ngirim 10 GELOMBANG saben 10 menit.
  • Wektu pamblokiran rata-rata ing jaringan tes yaiku 1 menit, ing simpul - 15 detik. Iki utamanΓ© katon nalika transaksi mbutuhake sawetara konfirmasi.
  • Caching agresif bisa ditindakake ing simpul uji umum.
  • Bisa uga ora kasedhiya kanggo sementara amarga pangopΓ¨nan.

Wiwit saiki aku bakal nganggep yen sampeyan nggarap simpul sampeyan dhewe.

2. Surfboard Command Line Tool

  • Ngundhuh lan nginstal Node.js nggunakake ppa, homebrew utawa exe ing kene: https://nodejs.org/en/download/.
  • Instal Surfboard, alat sing ngidini sampeyan nganakake tes ing simpul sing ana.

npm install -g @waves/surfboard

3. Plugin Visual Studio Code

Langkah iki opsional yen sampeyan dudu penggemar IDE lan luwih seneng editor teks. Kabeh alat sing dibutuhake yaiku utilitas baris perintah. Yen sampeyan nggunakake vim, mbayar manungsa waΓ© menyang plugin vim-numpak.

Ngundhuh lan nginstal Visual Studio Code: https://code.visualstudio.com/

Bukak Kode VS lan pasang plugin waves-ride:

Carane Mbangun, Nyebar lan Test Waves RIDE dApp

Ekstensi browser Waves Keeper: https://wavesplatform.com/products-keeper

Rampung!

Miwiti simpul lan Waves Explorer

1. Miwiti simpul:

docker run -d -p 6869:6869 wavesplatform/waves-private-node

Priksa manawa simpul kasebut diluncurake liwat REST API ing http://localhost:6869:

Carane Mbangun, Nyebar lan Test Waves RIDE dApp
Swagger REST API kanggo simpul

2. Miwiti conto Waves Explorer:

docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer

Bukak browser banjur pindhah menyang http://localhost:3000. Sampeyan bakal weruh carane cepet sirkuit simpul lokal kosong dibangun.

Carane Mbangun, Nyebar lan Test Waves RIDE dApp
Waves Explorer nampilake conto simpul lokal

Struktur RIDE lan alat Surfboard

Nggawe direktori kosong lan mbukak printah ing

surfboard init

Printah kasebut miwiti direktori kanthi struktur proyek, aplikasi lan tes "hello world". Yen sampeyan mbukak folder iki nganggo VS Code, sampeyan bakal weruh:

Carane Mbangun, Nyebar lan Test Waves RIDE dApp
Surfboard.config.json

  • Ing folder ./ride/ sampeyan bakal nemokake siji file wallet.ride - direktori ngendi kode dApp dumunung. Kita bakal nganalisis dApps ing blok sabanjure.
  • Ing folder ./test/ sampeyan bakal nemokake file *.js. Tes disimpen ing kene.
  • ./surfboard.config.json – file konfigurasi kanggo tes mlaku.

Envs minangka bagean penting. Saben lingkungan dikonfigurasi kaya iki:

  • Titik pungkasan API REST saka simpul sing bakal digunakake kanggo miwiti dApp lan CHAIN_ID jaringan.
  • Frasa rahasia kanggo akun kanthi token sing bakal dadi sumber token tes sampeyan.

Nalika sampeyan bisa ndeleng, surfboard.config.json ndhukung macem-macem lingkungan minangka standar. Default yaiku lingkungan lokal (kunci defaultEnv minangka parameter sing bisa diganti).

Aplikasi dompet-demo

Bagian iki dudu referensi kanggo basa RIDE. Luwih, deleng aplikasi sing kita pasang lan nyoba kanggo luwih ngerti apa sing kedadeyan ing pamblokiran.

Ayo goleki aplikasi Dompet-demo sing prasaja. Sapa wae bisa ngirim token menyang alamat dApp. Sampeyan mung bisa mbatalake WAVES sampeyan. Loro fungsi @Callable kasedhiya liwat InvokeScriptTransaction:

  • deposit()sing mbutuhake pembayaran ditempelake ing WAVES
  • withdraw(amount: Int)sing ngasilake token

Sajrone siklus urip dApp, struktur (alamat β†’ jumlah) bakal dijaga:

Tindakan
negara asil

dhisikan
Kosong

Alice celengan 5 WAVES
alice-alamat β†’ 500000000

Bob simpenan 2 WAVES

alice-alamat β†’ 500000000
bob-alamat β†’ 200000000

Bob mundur 7 GELOMBANG
ORA ULIH!

Alice mundur 4 GELOMBANG
alice-alamat β†’ 100000000
bob-alamat β†’ 200000000

Iki kode kanggo ngerti kahanan kasebut:

# In this example multiple accounts can deposit their funds and safely take them back. No one can interfere with this.
# An inner state is maintained as mapping `address=>waves`.
{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
@Callable(i)
func deposit() = {
 let pmt = extract(i.payment)
 if (isDefined(pmt.assetId))
    then throw("works with waves only")
    else {
     let currentKey = toBase58String(i.caller.bytes)
     let currentAmount = match getInteger(this, currentKey) {
       case a:Int => a
       case _ => 0
     }
     let newAmount = currentAmount + pmt.amount
     WriteSet([DataEntry(currentKey, newAmount)]) 
   }
 }
@Callable(i)
func withdraw(amount: Int) = {
 let currentKey = toBase58String(i.caller.bytes)
 let currentAmount = match getInteger(this, currentKey) {
   case a:Int => a
   case _ => 0
 }
 let newAmount = currentAmount - amount
 if (amount < 0)
   then throw("Can't withdraw negative amount")
   else if (newAmount < 0)
     then throw("Not enough balance")
     else ScriptResult(
       WriteSet([DataEntry(currentKey, newAmount)]),
       TransferSet([ScriptTransfer(i.caller, amount, unit)])
      )
 }
@Verifier(tx)
func verify() = false

Kode sampel uga bisa ditemokake ing GitHub.

Plugin VSCode ndhukung kompilasi terus-terusan nalika nyunting file. Mulane, sampeyan bisa tansah ngawasi kasalahan ing tab MASALAH.

Carane Mbangun, Nyebar lan Test Waves RIDE dApp
Yen sampeyan pengin nggunakake editor teks sing beda nalika nyusun file, gunakake

surfboard compile ride/wallet.ride

Iki bakal ngasilake seri kode RIDE kompilasi base64.

Skrip tes kanggo 'wallet.ride'

Ayo kang katon ing file tes. Didhukung dening kerangka Mocha JavaScript. Ana fungsi "Sadurunge" lan telung tes:

  • "Sadurunge" mbiayai pirang-pirang akun liwat MassTransferTransaction, nyusun skrip lan nyebarake menyang blokchain.
  • "Bisa simpenan" ngirim InvokeScriptTransaction kanggo jaringan, ngaktifake simpenan () fungsi kanggo saben loro akun.
  • "Ora bisa mbatalake luwih saka setor" tes sing ora ana sing bisa nyolong token wong liya.
  • "Bisa setor" mriksa yen penarikan diproses kanthi bener.

Jalanake tes saka Surfboard lan analisa asil ing Waves Explorer

Kanggo mbukak test, mbukak

surfboard test

Yen sampeyan duwe sawetara skrip (contone, sampeyan butuh skrip penyebaran sing kapisah), sampeyan bisa mbukak

surfboard test my-scenario.js

Surfboard bakal ngumpulake file test ing folder ./test/ lan mbukak script ing simpul sing diatur ing surfboard.config.json. Sawise sawetara detik sampeyan bakal weruh kaya iki:

wallet test suite
Generating accounts with nonce: ce8d86ee
Account generated: foofoofoofoofoofoofoofoofoofoofoo#ce8d86ee - 3M763WgwDhmry95XzafZedf7WoBf5ixMwhX
Account generated: barbarbarbarbarbarbarbarbarbar#ce8d86ee - 3MAi9KhwnaAk5HSHmYPjLRdpCAnsSFpoY2v
Account generated: wallet#ce8d86ee - 3M5r6XYMZPUsRhxbwYf1ypaTB6MNs2Yo1Gb
Accounts successfully funded
Script has been set
   √ Can deposit (4385ms)
   √ Cannot withdraw more than was deposited
   √ Can withdraw (108ms)
3 passing (15s)

Hore! Tes lulus. Saiki ayo goleki apa sing kedadeyan nalika nggunakake Waves Explorer: deleng blok utawa tempel salah sawijining alamat ing ndhuwur menyang telusuran (contone, sing cocog wallet#. Ing kana sampeyan bisa nemokake riwayat transaksi, status dApp, file binar sing dikompilasi.

Carane Mbangun, Nyebar lan Test Waves RIDE dApp
Waves Explorer. Aplikasi sing lagi wae disebarake.

Sawetara Tips Surfboard:

1. Kanggo nyoba ing lingkungan testnet, gunakake:

surfboard test --env=testnet

Entuk token tes

2. Yen sampeyan pengin ndeleng versi JSON saka transaksi lan carane lagi diproses dening simpul, mbukak test karo -v (tegese 'verbose'):

surfboard test -v

Nggunakake app karo Waves Keeper

1. Setel Waves Keeper kanggo nggarap: http://localhost:6869

Carane Mbangun, Nyebar lan Test Waves RIDE dApp
Nggawe Waves Keeper kanggo nggarap simpul lokal

2. Impor tembung rahasia karo token kanggo jaringan? Kanggo kesederhanaan, gunakake wiji awal simpul sampeyan: waves private node seed with waves tokens. alamat: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Sampeyan bisa mbukak aplikasi siji kaca tanpa server dhewe nggunakake npm. Utawa pindhah menyang sing wis ana: chrome-ext.wvservices.com/dapp-wallet.html

4. Ketik alamat dompet saka test run (digaris ndhuwur) menyang kothak teks alamat dApp

5. Ketik jumlah cilik ing kolom "Simpenan" banjur klik tombol:

Carane Mbangun, Nyebar lan Test Waves RIDE dApp
Waves Keeper njaluk ijin kanggo mlebu InvokeScriptTransaction kanthi mbayar 10 WAVES.

6. Konfirmasi transaksi:

Carane Mbangun, Nyebar lan Test Waves RIDE dApp
Transaksi digawe lan dikirim menyang jaringan. Saiki sampeyan bisa ndeleng ID dheweke

7. Ngawasi transaksi nggunakake Waves Explorer. Ketik ID ing kolom telusuran

Carane Mbangun, Nyebar lan Test Waves RIDE dApp

Kesimpulan lan informasi tambahan

Kita ndeleng alat kanggo ngembangake, nguji, nyebarake lan nggunakake dApps sing prasaja ing Platform Waves:

  • basa RIDE
  • Editor Kode VS
  • Waves Explorer
  • Surfboard
  • Penjaga Ombak

Link kanggo sing pengin terus sinau RIDE:

Contone liyane
IDE online kanthi conto
Dokumentasi Gelombang
Pangembang chatting ing Telegram
Ombak lan RIDE ing stackoverflow
ANYAR! Kursus online babagan nggawe dApps ing Platform Waves

Terus nyilem menyang topik RIDE lan nggawe dApp pisanan sampeyan!

TL; DR: bit.ly/2YCFnwY

Source: www.habr.com

Add a comment