Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp

Helo! Yn yr erthygl hon byddaf yn dangos i chi sut i ysgrifennu a rhedeg dApp rheolaidd ar nod Waves. Gadewch i ni edrych ar yr offer angenrheidiol, dulliau ac enghraifft o ddatblygiad.

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp

Mae’r cynllun datblygu ar gyfer dApps a chymwysiadau rheolaidd bron yr un fath:

  • Ysgrifennu cod
  • Ysgrifennu profion awtomataidd
  • Lansio'r cais
  • Profi

Offer

1. docker i redeg y nod a Waves Explorer

Os nad ydych am ddechrau nod, gallwch hepgor y cam hwn. Wedi'r cyfan, mae rhwydwaith prawf ac arbrofol. Ond heb ddefnyddio'ch nod eich hun, efallai y bydd y broses brofi yn llusgo ymlaen.

  • Bydd angen cyfrifon newydd arnoch gyda thocynnau prawf yn gyson. Mae'r faucet rhwydwaith prawf yn trosglwyddo 10 TON bob 10 munud.
  • Yr amser bloc ar gyfartaledd yn y rhwydwaith prawf yw 1 munud, yn y nod - 15 eiliad. Mae hyn yn arbennig o amlwg pan fydd angen cadarnhad lluosog ar drafodiad.
  • Mae caching ymosodol yn bosibl ar nodau prawf cyhoeddus.
  • Efallai hefyd na fyddant ar gael dros dro oherwydd gwaith cynnal a chadw.

O hyn ymlaen byddaf yn cymryd yn ganiataol eich bod yn gweithio gyda'ch nod eich hun.

2. Offeryn Llinell Reoli Surfboard

  • Lawrlwythwch a gosodwch Node.js gan ddefnyddio ppa, homebrew neu exe yma: https://nodejs.org/en/download/.
  • Gosodwch Surfboard, teclyn sy'n eich galluogi i redeg profion ar nod sy'n bodoli eisoes.

npm install -g @waves/surfboard

3. Visual Studio Cod ategyn

Mae'r cam hwn yn ddewisol os nad ydych chi'n gefnogwr o IDEs ac mae'n well gennych olygyddion testun. Mae'r holl offer angenrheidiol yn gyfleustodau llinell orchymyn. Os ydych chi'n defnyddio vim, rhowch sylw i'r ategyn vim-ride.

Lawrlwythwch a gosodwch Visual Studio Code: https://code.visualstudio.com/

Agorwch VS Code a gosodwch yr ategyn tonnau-reidio:

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp

Estyniad porwr Waves Keeper: https://wavesplatform.com/products-keeper

Wedi'i wneud!

Dechreuwch y nod a Waves Explorer

1. Dechreuwch y nod:

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

Gwnewch yn siŵr bod y nod yn cael ei lansio trwy'r API REST yn http://localhost:6869:

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp
Swagger REST API ar gyfer nod

2. Dechreuwch enghraifft o Waves Explorer:

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

Agorwch borwr ac ewch i http://localhost:3000. Fe welwch pa mor gyflym y caiff cylched nodau lleol gwag ei ​​hadeiladu.

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp
Mae Waves Explorer yn dangos enghraifft nod lleol

Strwythur RIDE ac offeryn Bwrdd Syrffio

Creu cyfeiriadur gwag a rhedeg y gorchymyn ynddo

surfboard init

Mae'r gorchymyn yn cychwyn cyfeiriadur gyda strwythur y prosiect, cymwysiadau a phrofion “helo world”. Os byddwch chi'n agor y ffolder hon gyda Chod VS, fe welwch:

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp
Bwrdd syrffio.config.json

  • O dan y ffolder ./ride/ fe welwch wallet.ride ffeil sengl - y cyfeiriadur lle mae'r cod dApp wedi'i leoli. Byddwn yn dadansoddi dApps yn fyr yn y bloc nesaf.
  • O dan y ffolder ./test/ fe welwch ffeil *.js. Mae profion yn cael eu storio yma.
  • ./surfboard.config.json – ffeil ffurfweddu ar gyfer rhedeg profion.

Mae Envs yn adran bwysig. Mae pob amgylchedd wedi'i ffurfweddu fel hyn:

  • Terfynbwynt REST API y nod a ddefnyddir i lansio dApp a CHAIN_ID y rhwydwaith.
  • Ymadrodd cyfrinachol ar gyfer cyfrif gyda thocynnau a fydd yn ffynonellau eich tocynnau prawf.

Fel y gallwch weld, mae surfboard.config.json yn cefnogi amgylcheddau lluosog yn ddiofyn. Y rhagosodiad yw'r amgylchedd lleol (mae'r allwedd defaultEnv yn baramedr cyfnewidiol).

Cais waled-demo

Nid yw'r adran hon yn gyfeiriad at yr iaith RIDE. Yn hytrach, edrychwch ar y cymhwysiad rydyn ni'n ei ddefnyddio a'i brofi i ddeall yn well beth sy'n digwydd yn y blockchain.

Gadewch i ni edrych ar gymhwysiad demo Wallet syml. Gall unrhyw un anfon tocynnau i gyfeiriad dApp. Dim ond eich WAVES y gallwch chi ei dynnu'n ôl. Mae dwy swyddogaeth @Callable ar gael trwy InvokeScriptTransaction:

  • deposit()sy'n gofyn am daliad atodedig mewn TONNAU
  • withdraw(amount: Int)sy'n dychwelyd tocynnau

Trwy gydol cylch bywyd dApp, bydd y strwythur (cyfeiriad → swm) yn cael ei gynnal:

Gweithred
Cyflwr canlyniadol

cychwynnol
gwag

Alice yn dyddodi 5 TON
alice-cyfeiriad → 500000000

Bob dyddodi 2 TONAU

alice-cyfeiriad → 500000000
bob-cyfeiriad → 200000000

Bob yn tynnu'n ôl 7 TON
GWRTHOD!

Alice yn tynnu 4 TON yn ôl
alice-cyfeiriad → 100000000
bob-cyfeiriad → 200000000

Dyma'r cod i ddeall y sefyllfa yn llawn:

# 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

Gellir dod o hyd i god enghreifftiol hefyd yn GitHub.

Mae'r ategyn VSCode yn cefnogi crynhoad parhaus wrth olygu ffeil. Felly, gallwch chi bob amser fonitro gwallau yn y tab PROBLEMS.

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp
Os ydych chi am ddefnyddio golygydd testun gwahanol wrth lunio'r ffeil, defnyddiwch

surfboard compile ride/wallet.ride

Bydd hyn yn allbwn cyfres o god RIDE a luniwyd gan base64.

Sgript brawf ar gyfer 'wallet.ride'

Gadewch i ni edrych ar ffeil prawf. Wedi'i bweru gan fframwaith Mocha JavaScript. Mae yna swyddogaeth “Cyn” a thri phrawf:

  • Mae “Cyn” yn ariannu cyfrifon lluosog trwy MassTransferTransaction, yn llunio'r sgript a'i ddefnyddio i'r blockchain.
  • Mae “Can deposit” yn anfonTransaction InvokeScript i'r rhwydwaith, gan actifadu'r swyddogaeth blaendal() ar gyfer pob un o'r ddau gyfrif.
  • “Methu tynnu mwy nag a adneuwyd” profion na all neb ddwyn tocynnau pobl eraill.
  • Mae “Gallu adneuo” yn gwirio bod codi arian yn cael ei brosesu'n gywir.

Rhedeg profion o Surfboard a dadansoddi canlyniadau yn Waves Explorer

I redeg y prawf, rhedeg

surfboard test

Os oes gennych chi sgriptiau lluosog (er enghraifft, mae angen sgript defnyddio ar wahân arnoch chi), gallwch chi redeg

surfboard test my-scenario.js

Bydd Surfboard yn casglu'r ffeiliau prawf yn y ffolder ./test/ ac yn rhedeg y sgript ar y nod sydd wedi'i ffurfweddu yn surfboard.config.json. Ar ôl ychydig eiliadau fe welwch rywbeth fel hyn:

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)

Hwre! Profion wedi eu pasio. Nawr gadewch i ni edrych ar yr hyn sy'n digwydd wrth ddefnyddio Waves Explorer: edrychwch ar y blociau neu gludwch un o'r cyfeiriadau uchod i'r chwiliad (er enghraifft, y cyfatebol wallet#. Yno gallwch ddod o hyd i'r hanes trafodion, statws dApp, ffeil ddeuaidd wedi'i dadgrynhoi.

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp
Archwiliwr Tonnau. Cais sydd newydd gael ei ddefnyddio.

Rhai awgrymiadau bwrdd syrffio:

1. I brofi yn yr amgylchedd testnet, defnyddiwch:

surfboard test --env=testnet

Cael tocynnau prawf

2. Os ydych chi am weld fersiynau JSON o drafodion a sut maen nhw'n cael eu prosesu gan y nod, rhedeg y prawf gyda -v (yn golygu 'verbose'):

surfboard test -v

Defnyddio apiau gyda Waves Keeper

1. Sefydlu Waves Keeper i weithio: http://localhost:6869

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp
Sefydlu Waves Keeper i weithio gyda nod lleol

2. Mewnforio ymadrodd cyfrinachol gyda thocynnau ar gyfer y rhwydwaith? Er mwyn symlrwydd, defnyddiwch hedyn cychwynnol eich nod: waves private node seed with waves tokens. Cyfeiriad: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Gallwch redeg rhaglen un dudalen heb weinydd eich hun gan ddefnyddio npm. Neu ewch i'r un presennol: chrome-ext.wvservices.com/dapp-wallet.html

4. Rhowch y cyfeiriad waled o'r rhediad prawf (wedi'i danlinellu uchod) i mewn i'r blwch testun cyfeiriad dApp

5. Rhowch swm bach yn y maes “Adneuo” a chliciwch ar y botwm:

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp
Mae Waves Keeper yn gofyn am ganiatâd i arwyddoTransaction InvokeScript gyda thaliad o 10 TON.

6. Cadarnhewch y trafodiad:

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp
Mae'r trafodiad yn cael ei greu a'i ddarlledu i'r rhwydwaith. Nawr gallwch chi weld ei ID

7. Monitro'r trafodiad gan ddefnyddio Waves Explorer. Rhowch ID yn y maes chwilio

Sut i adeiladu, defnyddio a phrofi'r Waves RIDE dApp

Casgliadau a gwybodaeth ychwanegol

Gwnaethom edrych ar yr offer ar gyfer datblygu, profi, defnyddio a defnyddio dApps syml ar Lwyfan y Tonnau:

  • RIDE iaith
  • Golygydd Cod VS
  • Archwiliwr Tonnau
  • Syrffio
  • Ceidwad Tonnau

Dolenni ar gyfer y rhai sydd am barhau i ddysgu RIDE:

Mwy o enghreifftiau
DRhA ar-lein gydag enghreifftiau
Dogfennaeth Tonnau
Sgwrs datblygwr yn Telegram
Tonnau a RIDE ar stackoverflow
NEWYDD! Cyrsiau ar-lein ar greu dApps ar Lwyfan y Waves

Parhewch i blymio i bwnc RIDE a chreu eich dApp cyntaf!

TL; DR: bit.ly/2YCFnwY

Ffynhonnell: hab.com

Ychwanegu sylw