Ինչպես կառուցել, տեղակայել և փորձարկել ալիքները RIDE dApp

Բարեւ Ձեզ! Այս հոդվածում ես ձեզ ցույց կտամ, թե ինչպես գրել և գործարկել սովորական dApp Waves հանգույցի վրա: Եկեք նայենք անհրաժեշտ գործիքներին, մեթոդներին և զարգացման օրինակին:

Ինչպես կառուցել, տեղակայել և փորձարկել ալիքները RIDE dApp

dApps-ի և սովորական հավելվածների զարգացման սխեման գրեթե նույնն է.

  • Կոդ գրելը
  • Ավտոմատացված թեստավորում գրելը
  • Գործարկեք հավելվածը
  • Փորձարկում

Գործիքներ

1. docker հանգույցը և Waves Explorer-ը գործարկելու համար

Եթե ​​դուք չեք ցանկանում սկսել հանգույց, կարող եք բաց թողնել այս քայլը: Ի վերջո, կա փորձնական և փորձնական ցանց: Բայց առանց ձեր սեփական հանգույցի տեղակայման, փորձարկման գործընթացը կարող է ձգձգվել:

  • Ձեզ անընդհատ անհրաժեշտ կլինեն նոր հաշիվներ՝ թեստային նշաններով: Փորձնական ցանցի ծորակը յուրաքանչյուր 10 րոպեն մեկ փոխանցում է 10 ԱԼԻՔ:
  • Թեստային ցանցում արգելափակման միջին ժամանակը 1 րոպե է, հանգույցում՝ 15 վայրկյան: Սա հատկապես նկատելի է, երբ գործարքը պահանջում է բազմաթիվ հաստատումներ:
  • Հանրային փորձարկման հանգույցներում հնարավոր է ագրեսիվ քեշավորում:
  • Դրանք կարող են նաև ժամանակավորապես անհասանելի լինել սպասարկման պատճառով:

Այսուհետ ես կենթադրեմ, որ դուք աշխատում եք ձեր սեփական հանգույցով։

2. Surfboard Command Line գործիք

  • Ներբեռնեք և տեղադրեք Node.js-ը՝ օգտագործելով ppa, homebrew կամ exe այստեղ՝ https://nodejs.org/en/download/.
  • Տեղադրեք Surfboard-ը՝ գործիք, որը թույլ է տալիս թեստեր կատարել գոյություն ունեցող հանգույցի վրա:

npm install -g @waves/surfboard

3. Visual Studio Code հավելված

Այս քայլը պարտադիր չէ, եթե դուք IDE-ների երկրպագու չեք և նախընտրում եք տեքստային խմբագրիչներ: Բոլոր անհրաժեշտ գործիքները հրամանի տող կոմունալ ծառայություններ են: Եթե ​​դուք օգտագործում եք vim, ուշադրություն դարձրեք plugin-ին vim-ride.

Ներբեռնեք և տեղադրեք Visual Studio կոդը. https://code.visualstudio.com/

Բացեք VS Code-ը և տեղադրեք waves-ride plugin-ը.

Ինչպես կառուցել, տեղակայել և փորձարկել ալիքները 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 Code-ով, կտեսնեք.

Ինչպես կառուցել, տեղակայել և փորձարկել ալիքները RIDE dApp
Surfboard.config.json

  • ./ride/ թղթապանակի տակ դուք կգտնեք մեկ ֆայլ wallet.ride՝ գրացուցակը, որտեղ գտնվում է dApp կոդը: Հաջորդ բլոկում մենք համառոտ կվերլուծենք dApps-ը:
  • ./test/ թղթապանակի տակ դուք կգտնեք *.js ֆայլ: Թեստերը պահվում են այստեղ:
  • ./surfboard.config.json – կազմաձևման ֆայլ՝ թեստերի իրականացման համար:

Envs-ը կարևոր բաժին է: Յուրաքանչյուր միջավայր կազմաձևված է այսպես.

  • Հանգույցի REST API վերջնակետը, որը կօգտագործվի ցանցի dApp-ը և CHAIN_ID-ը գործարկելու համար:
  • Գաղտնի արտահայտություն խորհրդանիշներով հաշվի համար, որը կլինի ձեր փորձարկման նշանների աղբյուրները:

Ինչպես տեսնում եք, surfboard.config.json-ը լռելյայն աջակցում է բազմաթիվ միջավայրեր: Կանխադրվածը տեղական միջավայրն է (defaultEnv ստեղնը փոփոխվող պարամետր է):

Դրամապանակ-դեմո հավելված

Այս բաժինը հղում չէ RIDE լեզվին: Ավելի շուտ, նայեք հավելվածին, որը մենք տեղադրում և փորձարկում ենք՝ ավելի լավ հասկանալու համար, թե ինչ է կատարվում բլոկչեյնում:

Եկեք նայենք մի պարզ Wallet-դեմո հավելվածին: Յուրաքանչյուր ոք կարող է նշաններ ուղարկել dApp հասցեով: Դուք կարող եք միայն հանել ձեր ալիքները: InvokeScriptTransaction-ի միջոցով հասանելի են երկու @Callable ֆունկցիաներ.

  • deposit()որը պահանջում է կից վճարում WAVES-ով
  • withdraw(amount: Int)որը վերադարձնում է նշաններ

dApp-ի կյանքի ցիկլի ընթացքում կառուցվածքը (հասցե → գումար) կպահպանվի.

գործողություն
Ստացված վիճակ

սկզբնական
դատարկ

Ալիսը ավանդում է 5 ալիքներ
ալիս-հասցե → 500000000

Bob ավանդները 2 WAVES

ալիս-հասցե → 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

Նմուշի կոդը կարելի է գտնել նաև այստեղ GitHub.

VSCode հավելվածն աջակցում է շարունակական կոմպիլյացիան ֆայլը խմբագրելիս: Հետևաբար, դուք միշտ կարող եք վերահսկել սխալները ԽՆԴԻՐՆԵՐ ներդիրում:

Ինչպես կառուցել, տեղակայել և փորձարկել ալիքները RIDE dApp
Եթե ​​ցանկանում եք ֆայլը կազմելիս օգտագործել այլ տեքստային խմբագրիչ, օգտագործեք

surfboard compile ride/wallet.ride

Սա կարտադրի base64 կազմված RIDE կոդի մի շարք:

«wallet.ride»-ի փորձնական սցենար

Եկեք նայենք թեստային ֆայլ. Աշխատում է JavaScript-ի Mocha շրջանակով: Կա «Նախքան» գործառույթը և երեք թեստ.

  • «Before»-ն ֆինանսավորում է բազմաթիվ հաշիվներ MassTransferTransaction-ի միջոցով, կազմում է սցենարը և տեղակայում այն ​​բլոկչեյնում:
  • «Կարող է ավանդ» ուղարկել InvokeScriptTransaction-ը ցանց՝ ակտիվացնելով ավանդի() ֆունկցիան երկու հաշիվներից յուրաքանչյուրի համար:
  • «Չի կարող հանել ավելին, քան ավանդադրվել է» թեստեր, որոնք ոչ ոք չի կարող գողանալ այլ մարդկանց նշանները:
  • «Կարող է ավանդադրել» ստուգում է, որ դուրսբերումները ճիշտ են մշակվում:

Կատարեք թեստեր 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-ը թույլտվություն է խնդրում ստորագրելու InvokeScriptTransaction՝ 10 WAVES վճարմամբ:

6. Հաստատեք գործարքը.

Ինչպես կառուցել, տեղակայել և փորձարկել ալիքները RIDE dApp
Գործարքը ստեղծվում և հեռարձակվում է ցանցին: Այժմ դուք կարող եք տեսնել նրա ID-ն

7. Դիտեք գործարքը Waves Explorer-ի միջոցով: Մուտքագրեք ID-ն որոնման դաշտում

Ինչպես կառուցել, տեղակայել և փորձարկել ալիքները RIDE dApp

Եզրակացություններ և լրացուցիչ տեղեկություններ

Մենք նայեցինք Waves հարթակում պարզ dApps-ների մշակման, փորձարկման, տեղակայման և օգտագործման գործիքներին.

  • RIDE լեզու
  • VS Code Editor
  • Waves Explorer
  • Ալիքասրահ
  • Ալիքների պահապան

Հղումներ նրանց համար, ովքեր ցանկանում են շարունակել սովորել RIDE.

Ավելի շատ օրինակներ
Առցանց IDE օրինակներով
Ալիքների փաստաթղթավորում
Ծրագրավորողների զրույց Telegram-ում
Ալիքներ և լողալ stackoverflow-ով
ՆՈՐՈՒՅԹ Ալիքների հարթակում dApps ստեղծելու առցանց դասընթացներ

Շարունակեք սուզվել RIDE թեմայի մեջ և ստեղծեք ձեր առաջին dApp-ը:

TL; DR. bit.ly/2YCFnwY

Source: www.habr.com

Добавить комментарий