Како да направите, примените и тестирате таласе РИДЕ дАпп

Здраво! У овом чланку ћу вам показати како да напишете и покренете обичан дАпп на Вавес чвору. Хајде да погледамо неопходне алате, методе и пример развоја.

Како да направите, примените и тестирате таласе РИДЕ дАпп

Шема развоја за дАппс и обичне апликације је скоро иста:

  • Писање кода
  • Писање аутоматског тестирања
  • Покретање апликације
  • Тестирање

Алат

1. docker да покренете чвор и Вавес Екплорер

Ако не желите да покренете чвор, можете прескочити овај корак. На крају крајева, постоји тестна и експериментална мрежа. Али без постављања сопственог чвора, процес тестирања може да се одужи.

  • Стално ће вам требати нови налози са пробним токенима. Пробна мрежна славина преноси 10 ТАЛАСОВА сваких 10 минута.
  • Просечно време блокаде у тест мрежи је 1 минут, у чвору 15 секунди. Ово је посебно приметно када трансакција захтева више потврда.
  • Агресивно кеширање је могуће на јавним тест чворовима.
  • Такође могу бити привремено недоступни због одржавања.

Од сада ћу претпоставити да радите са сопственим чвором.

2. Алат командне линије за сурфовање

  • Преузмите и инсталирајте Ноде.јс користећи ппа, хомебрев или еке овде: https://nodejs.org/en/download/.
  • Инсталирајте Сурфбоард, алатку која вам омогућава да покренете тестове на постојећем чвору.

npm install -g @waves/surfboard

3. Додатак Висуал Студио Цоде

Овај корак је опциони ако нисте љубитељ ИДЕ-а и преферирате уређиваче текста. Сви потребни алати су услужни програми командне линије. Ако користите вим, обратите пажњу на додатак вим-риде.

Преузмите и инсталирајте Висуал Студио Цоде: https://code.visualstudio.com/

Отворите ВС Цоде и инсталирајте додатак Вавес-риде:

Како да направите, примените и тестирате таласе РИДЕ дАпп

Екстензија за прегледач Вавес Кеепер: https://wavesplatform.com/products-keeper

Готово!

Покрените чвор и Вавес Екплорер

1. Покрените чвор:

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

Уверите се да је чвор покренут преко РЕСТ АПИ-ја http://localhost:6869:

Како да направите, примените и тестирате таласе РИДЕ дАпп
Сваггер РЕСТ АПИ за чвор

2. Покрените инстанцу Вавес Екплорер-а:

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

Отворите претраживач и идите на http://localhost:3000. Видећете колико брзо се гради празно коло локалног чвора.

Како да направите, примените и тестирате таласе РИДЕ дАпп
Вавес Екплорер приказује инстанцу локалног чвора

РИДЕ структура и алат за даску за сурфовање

Направите празан директоријум и покрените команду у њему

surfboard init

Команда иницијализује директоријум са структуром пројекта, "здраво свет" апликацијама и тестовима. Ако отворите ову фасциклу са ВС кодом, видећете:

Како да направите, примените и тестирате таласе РИДЕ дАпп
Сурфбоард.цонфиг.јсон

  • У фасцикли ./риде/ наћи ћете једну датотеку валлет.риде - директоријум у коме се налази дАпп код. Укратко ћемо анализирати дАппс у следећем блоку.
  • У фасцикли ./тест/ пронаћи ћете *.јс датотеку. Овде се чувају тестови.
  • ./сурфбоард.цонфиг.јсон – конфигурациони фајл за покретање тестова.

Енвс је важан одељак. Свако окружење је овако конфигурисано:

  • РЕСТ АПИ крајња тачка чвора која ће се користити за покретање дАпп и ЦХАИН_ИД мреже.
  • Тајна фраза за налог са токенима који ће бити извори ваших тестних токена.

Као што видите, сурфбоард.цонфиг.јсон подразумевано подржава више окружења. Подразумевано је локално окружење (кључ дефаултЕнв је променљив параметар).

Валлет-демо апликација

Овај одељак није референца на РИДЕ језик. Уместо тога, погледајте апликацију коју примењујемо и тестирамо да бисмо боље разумели шта се дешава у блокчејну.

Погледајмо једноставну апликацију Валлет-демо. Свако може да пошаље токене на адресу дАпп. Можете повући само своје ТАЛАСОВЕ. Две функције @Цаллабле су доступне преко ИнвокеСцриптТрансацтион:

  • deposit()што захтева приложену уплату у ТАЛАСИМА
  • withdraw(amount: Int)који враћа жетоне

Током животног циклуса дАпп-а, структура (адреса → износ) ће се одржавати:

акција
Резултирајуће стање

почетни
празан

Алиса полаже 5 ТАЛАСА
алице-адреса → 500000000

Боб депонује 2 ТАЛАСА

алице-адреса → 500000000
боб-адреса → 200000000

Боб повлачи 7 ТАЛАСОВА
ДЕНИЕД!

Алиса повлачи 4 ТАЛАСА
алице-адреса → 100000000
боб-адреса → 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

Пример кода се такође може наћи на ГитХуб.

Додатак ВСЦоде подржава континуирану компилацију током уређивања датотеке. Због тога увек можете пратити грешке на картици ПРОБЛЕМИ.

Како да направите, примените и тестирате таласе РИДЕ дАпп
Ако желите да користите други уређивач текста приликом компајлирања датотеке, користите

surfboard compile ride/wallet.ride

Ово ће дати серију РИДЕ кода компајлираног басе64.

Тест скрипта за 'валлет.риде'

Хајде да погледамо тест фајл. Покреће ЈаваСцрипт-ов Моцха оквир. Постоји функција „Пре“ ​​и три теста:

  • „Пре“ ​​финансира више налога преко МассТрансферТрансацтион, компајлира скрипту и примењује је у блок ланцу.
  • „Може депоновати“ шаље ИнвокеСцриптТрансацтион мрежи, активирајући функцију депозит() за сваки од два налога.
  • „Не могу повући више него што је депоновано“ тестови да нико не може украсти туђе токене.
  • „Може уплатити“ проверава да ли су исплате правилно обрађене.

Покрените тестове са Сурфбоард-а и анализирајте резултате у Вавес Екплорер-у

Да бисте покренули тест, покрените

surfboard test

Ако имате више скрипти (на пример, потребна вам је посебна скрипта за примену), можете да покренете

surfboard test my-scenario.js

Сурфбоард ће прикупити тест датотеке у фасцикли ./тест/ и покренути скрипту на чвору који је конфигурисан у сурфбоард.цонфиг.јсон. После неколико секунди видећете нешто овако:

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)

Ура! Тестови су прошли. Хајде сада да погледамо шта се дешава када користите Вавес Екплорер: погледајте блокове или налепите једну од горе наведених адреса у претрагу (на пример, одговарајућу wallet#. Тамо можете пронаћи историју трансакција, статус дАпп-а, декомпилирану бинарну датотеку.

Како да направите, примените и тестирате таласе РИДЕ дАпп
Вавес Екплорер. Апликација која је управо постављена.

Неки савети за даску за сурфовање:

1. Да бисте тестирали у тестнет окружењу, користите:

surfboard test --env=testnet

Набавите тестне токене

2. Ако желите да видите ЈСОН верзије трансакција и како их чвор обрађује, покрените тест са -в (значи 'опширно'):

surfboard test -v

Коришћење апликација са Вавес Кеепер-ом

1. Подесите Вавес Кеепер да ради: http://localhost:6869

Како да направите, примените и тестирате таласе РИДЕ дАпп
Подешавање Вавес Кеепер-а за рад са локалним чвором

2. Да увезете тајну фразу са токенима за мрежу? Ради једноставности, користите почетно семе свог чвора: waves private node seed with waves tokens. Адреса: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.

3. Можете сами да покренете једностраничну апликацију без сервера користећи нпм. Или идите на постојећи: цхроме-ект.ввсервицес.цом/дапп-валлет.хтмл

4. Унесите адресу новчаника из пробног рада (подвучено изнад) у текстуални оквир за адресу апликације

5. Унесите мали износ у поље „Депозит“ и кликните на дугме:

Како да направите, примените и тестирате таласе РИДЕ дАпп
Вавес Кеепер тражи дозволу да потпише ИнвокеСцриптТрансацтион уз плаћање од 10 ВАВЕС.

6. Потврдите трансакцију:

Како да направите, примените и тестирате таласе РИДЕ дАпп
Трансакција се креира и емитује на мрежу. Сада можете видети њену идентификацију

7. Пратите трансакцију користећи Вавес Екплорер. Унесите ИД у поље за претрагу

Како да направите, примените и тестирате таласе РИДЕ дАпп

Закључци и додатне информације

Погледали смо алате за развој, тестирање, примену и коришћење једноставних дАппс-а на Вавес платформи:

  • РИДЕ језик
  • ВС Цоде Едитор
  • Вавес Екплорер
  • Сурфање
  • Вавес Кеепер

Линкови за оне који желе да наставе да уче РИДЕ:

Још примера
Онлине ИДЕ са примерима
Вавес Доцументатион
Ћаскање програмера у Телеграму
Вавес и РИДЕ на стацковерфлов
НОВА! Онлајн курсеви о креирању дАппс-а на Вавес платформи

Наставите да се бавите темом РИДЕ и креирајте своју прву дАпп!

ТЛ; ДР: бит.ли/2ИЦФнвИ

Извор: ввв.хабр.цом

Додај коментар