RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ

Сайн уу? Энэ нийтлэлд би Waves зангилаа дээр энгийн dApp-г хэрхэн бичиж, ажиллуулахыг харуулах болно. Шаардлагатай хэрэгсэл, арга, хөгжлийн жишээг авч үзье.

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ

dApps болон ердийн програмуудыг хөгжүүлэх схем нь бараг ижил байна:

  • Бид код бичдэг
  • Автомат тест бичих
  • Програмыг ажиллуулна уу
  • Туршилт хийх

Хэрэгсэл

1. docker зангилаа болон Waves Explorer ажиллуулах

Хэрэв та зангилаа эхлүүлэхийг хүсэхгүй байгаа бол энэ алхамыг алгасаж болно. Эцсийн эцэст, туршилтын болон туршилтын сүлжээ байдаг. Гэхдээ өөрийн зангилааг байршуулахгүйгээр туршилтын үйл явц удаан үргэлжилж магадгүй юм.

  • Танд туршилтын жетон бүхий шинэ данс байнга хэрэгтэй болно. Туршилтын сүлжээний усны цорго нь 10 минут тутамд 10 долгионыг дамжуулдаг.
  • Туршилтын сүлжээнд блоклох дундаж хугацаа 1 минут, зангилаанд 15 секунд байна. Энэ нь гүйлгээг олон удаа баталгаажуулах шаардлагатай үед ялангуяа мэдэгдэхүйц юм.
  • Олон нийтийн тестийн зангилаанууд дээр түрэмгий кэш хийх боломжтой.
  • Тэд мөн засвар үйлчилгээний улмаас түр ажиллахгүй байж болно.

Одооноос эхлэн би таныг өөрийн зангилаатай ажиллаж байна гэж таамаглах болно.

2. Surfboard Command Line Tool

  • Node.js-г ppa, homebrew эсвэл exe ашиглан эндээс татаж аваад суулгана уу: https://nodejs.org/en/download/.
  • Одоо байгаа зангилаа дээр туршилт хийх боломжийг олгодог Surfboard хэрэгслийг суулгана уу.

npm install -g @waves/surfboard

3. Visual Studio Code залгаас

Хэрэв та IDE фэн биш, текст засварлагчийг илүүд үздэг бол энэ алхам нь сонголттой. Шаардлагатай бүх хэрэгслүүд нь командын шугамын хэрэгслүүд юм. Хэрэв та vim ашигладаг бол залгаас руу анхаарлаа хандуулаарай вим-унадаг.

Visual Studio кодыг татаж аваад суулгана уу: https://code.visualstudio.com/

VS кодыг нээж, waves-ride залгаасыг суулгана уу:

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ

Waves Keeper хөтчийн өргөтгөл: https://wavesplatform.com/products-keeper

Дууссан!

Зангилаа болон Waves Explorer-г эхлүүлнэ үү

1. Зангилаа эхлүүлнэ үү:

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

REST API-ээр дамжуулан зангилаа эхлүүлсэн эсэхийг шалгаарай http://localhost:6869:

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ
Зангилааны Swagger REST API

2. Waves Explorer-ийн жишээг эхлүүлнэ үү:

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

Хөтөч нээгээд хаяг руу очно уу http://localhost:3000. Орон нутгийн зангилааны хоосон сүлжээ хэр хурдан баригдаж байгааг та харах болно.

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ
Waves Explorer нь локал зангилааны жишээг харуулдаг

RIDE бүтэц болон Surfboard хэрэгсэл

Хоосон сан үүсгээд доторх командыг ажиллуулна уу

surfboard init

Энэ тушаал нь төслийн бүтэц, "Сайн уу ертөнц" програмууд болон тестүүд бүхий лавлахыг эхлүүлдэг. Хэрэв та энэ фолдерыг VS кодоор нээвэл дараахь зүйлийг харах болно.

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ
Surfboard.config.json

  • ./ride/ хавтасны доор та wallet.ride нэг файлыг олох болно - dApp код байрладаг лавлах. Бид дараагийн блок дээр dApps-д товч дүн шинжилгээ хийх болно.
  • ./test/ хавтаснаас та *.js файлыг олох болно. Туршилтуудыг энд хадгалдаг.
  • ./surfboard.config.json – туршилт хийх тохиргооны файл.

Envs бол чухал хэсэг юм. Орчин бүр дараах байдлаар тохируулагдсан:

  • DApp болон сүлжээний CHAIN_ID-г эхлүүлэхэд ашиглагдах зангилааны REST API төгсгөлийн цэг.
  • Таны тестийн жетонуудын эх үүсвэр болох жетон бүхий дансны нууц хэллэг.

Таны харж байгаагаар surfboard.config.json нь анхдагчаар олон орчныг дэмждэг. Өгөгдмөл нь локал орчин (defaultEnv түлхүүр нь өөрчлөгдөж болох параметр юм).

Wallet-демо програм

Энэ хэсэг нь RIDE хэлний лавлагаа биш юм. Харин блокчейн дээр юу болж байгааг илүү сайн ойлгохын тулд бидний суулгаж, туршиж буй програмыг хараарай.

Энгийн Wallet-демо програмыг харцгаая. Хэн ч dApp хаяг руу жетон илгээх боломжтой. Та зөвхөн WAVES-ээ буцааж авах боломжтой. Хоёр @Callable функцийг InvokeScriptTransaction-аар ашиглах боломжтой:

  • deposit()WAVES-д хавсаргасан төлбөрийг шаарддаг
  • withdraw(amount: Int)энэ нь жетоныг буцаадаг

dApp-ийн амьдралын мөчлөгийн туршид бүтэц (хаяг → дүн) хадгалагдах болно:

үйл ажиллагааны
Үр дүнгийн төлөв

анхны
хоосон байна

Алис 5 ДОЛГОО-г хадгалдаг
алис хаяг → 500000000

Боб 2 долгионыг хадгалдаг

алис хаяг → 500000000
bob хаяг → 200000000

Боб 7 ДОЛГОО татаж авлаа
ҮГҮЙЛСЭН!

Алис 4 ДОЛГОО-г татав
алис хаяг → 100000000
bob хаяг → 200000000

Нөхцөл байдлыг бүрэн ойлгох код энд байна:

# 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

Жишээ кодыг мөн эндээс олж болно GitHub.

VSCode залгаас нь файлыг засварлах явцад тасралтгүй эмхэтгэлийг дэмждэг. Тиймээс та үргэлж АСУУДАЛ таб дээрээс алдааг хянах боломжтой.

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ
Хэрэв та файлыг эмхэтгэхдээ өөр текст засварлагч ашиглахыг хүсвэл ашиглана уу

surfboard compile ride/wallet.ride

Энэ нь base64 эмхэтгэсэн RIDE кодыг цувралаар гаргах болно.

'wallet.ride'-н туршилтын скрипт

Ингээд харцгаая туршилтын файл. JavaScript-н Mocha хүрээгээр дэмжигдсэн. "Өмнө" функц ба гурван тест байдаг:

  • "Өмнө" нь MassTransferTransaction-ээр дамжуулан олон дансыг санхүүжүүлж, скриптийг эмхэтгэж, блокчэйнд байршуулдаг.
  • “Can depozito” нь сүлжээнд InvokeScriptTransaction илгээж, хоёр данс тус бүрийн deposit() функцийг идэвхжүүлдэг.
  • Бусдын жетоныг хэн ч хулгайлж чадахгүй гэсэн "Хадгалсан хэмжээнээс илүүг буцааж авах боломжгүй" тест.
  • "Can байршуулах" нь мөнгө авах үйлдлийг зөв хийгдсэн эсэхийг шалгадаг.

Surfboard-аас туршилт хийж, Waves Explorer дээр дүн шинжилгээ хийнэ үү

Туршилтыг ажиллуулахын тулд ажиллуулна уу

surfboard test

Хэрэв танд олон скрипт байгаа бол (жишээлбэл, танд тусдаа байршуулах скрипт хэрэгтэй) та ажиллуулж болно

surfboard test my-scenario.js

Surfboard нь ./test/ хавтсанд тестийн файлуудыг цуглуулж, surfboard.config.json дээр тохируулагдсан зангилаа дээр скриптийг ажиллуулна. Хэдэн секундын дараа та иймэрхүү зүйлийг харах болно:

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)

Өө! Туршилтуудыг давсан. Одоо Waves Explorer-г ашиглах үед юу тохиолдохыг харцгаая: блокуудыг хараарай эсвэл дээрх хаягуудын аль нэгийг хайлтанд оруулна уу (жишээлбэл, харгалзах wallet#. Тэнд та гүйлгээний түүх, dApp статус, задалсан хоёртын файлыг олох боломжтой.

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ
Waves Explorer. Саяхан ашиглалтад орсон програм.

Surfboard-ийн зарим зөвлөмжүүд:

1. Testnet орчинд шалгахын тулд дараахыг ашиглана уу:

surfboard test --env=testnet

Туршилтын жетон авах

2. Хэрэв та гүйлгээний JSON хувилбарууд болон тэдгээрийг зангилаагаар хэрхэн боловсруулж байгааг харахыг хүсвэл -v ("дэлгэрэнгүй" гэсэн үг) ашиглан тестийг ажиллуулна уу:

surfboard test -v

Waves Keeper ашиглан програм ашиглах

1. Waves Keeper-ийг ажиллуулахын тулд тохируулна уу: http://localhost:6869

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ
Долгийн зангилаатай ажиллахын тулд Waves Keeper-ийг тохируулж байна

2. Сүлжээнд зориулсан жетон бүхий нууц хэллэгийг импортлох уу? Энгийн болгохын тулд өөрийн зангилааны эхний үрийг ашиглана уу: waves private node seed with waves tokens. Хаяг: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Та npm ашиглан сервергүй нэг хуудас програмыг өөрөө ажиллуулж болно. Эсвэл одоо байгаа зүйл рүү очно уу: chrome-ext.wvservices.com/dapp-wallet.html

4. Туршилтын түрийвчний хаягийг (дээр нь доогуур зурсан) dApp хаягийн текст талбарт оруулна уу

5. "Хадгаламж" талбарт бага хэмжээний мөнгө оруулаад товчийг дарна уу:

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ
Waves Keeper нь 10 WAVES төлж InvokeScriptTransaction-д гарын үсэг зурах зөвшөөрөл хүсч байна.

6. Гүйлгээг баталгаажуулна уу:

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ
Гүйлгээ үүсгэн сүлжээнд цацагдана. Одоо та түүний үнэмлэхийг харж болно

7. Waves Explorer ашиглан гүйлгээг хянах. Хайлтын талбарт ID-г оруулна уу

RIDE dApp долгионыг хэрхэн бүтээх, байрлуулах, турших вэ

Дүгнэлт ба нэмэлт мэдээлэл

Бид Waves платформ дээр энгийн dApps-ыг хөгжүүлэх, турших, ашиглах, ашиглах хэрэгслүүдийг авч үзсэн:

  • RIDE хэл
  • VS код засварлагч
  • Waves Explorer
  • Серфинг самбар
  • Долгион хамгаалагч

RIDE-д үргэлжлүүлэн суралцах хүсэлтэй хүмүүст зориулсан холбоосууд:

Илүү олон жишээ
Жишээ бүхий онлайн IDE
Долгионуудын баримтжуулалт
Telegram дахь хөгжүүлэгчийн чат
Давалгаа болон stackoverflow дээр RIDE
ШИНЭ! Waves платформ дээр dApps үүсгэх онлайн курсууд

RIDE сэдэв рүү үргэлжлүүлэн орж, анхны dApp-аа үүсгээрэй!

TL, DR: bit.ly/2YCFnwY

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх