Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል

ሀሎ! በዚህ ጽሑፍ ውስጥ መደበኛ dApp በ Waves node ላይ እንዴት እንደሚጽፉ እና እንደሚያካሂዱ አሳይዎታለሁ። አስፈላጊዎቹን መሳሪያዎች, ዘዴዎች እና የእድገት ምሳሌን እንመልከት.

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል

ለdApps እና ለመደበኛ መተግበሪያዎች የዕድገት እቅድ ከሞላ ጎደል ተመሳሳይ ነው፡-

  • ኮድ መጻፍ
  • ራስ-ሰር ሙከራን መፃፍ
  • ማመልከቻውን በማስጀመር ላይ
  • በመሞከር ላይ

መሳሪያዎች

1. docker መስቀለኛ መንገድን እና Waves Explorerን ለማስኬድ

መስቀለኛ መንገድ መጀመር ካልፈለግክ ይህን ደረጃ መዝለል ትችላለህ። ከሁሉም በላይ, የሙከራ እና የሙከራ አውታር አለ. ነገር ግን የራስዎን መስቀለኛ መንገድ ሳያሰማሩ፣ የፈተና ሂደቱ ሊቀጥል ይችላል።

  • ከሙከራ ቶከኖች ጋር ያለማቋረጥ አዲስ መለያዎች ያስፈልጉዎታል። የሙከራ አውታር ቧንቧ በየ10 ደቂቃው 10 WAVES ያስተላልፋል።
  • በሙከራ አውታር ውስጥ ያለው አማካይ የማገጃ ጊዜ 1 ደቂቃ ነው, በመስቀለኛ መንገድ - 15 ሰከንድ. ይህ በተለይ አንድ ግብይት ብዙ ማረጋገጫዎችን ሲፈልግ የሚታይ ነው።
  • በሕዝብ የሙከራ አንጓዎች ላይ ኃይለኛ መሸጎጫ ማድረግ ይቻላል.
  • እንዲሁም በጥገና ምክንያት ለጊዜው ላይገኙ ይችላሉ።

ከአሁን ጀምሮ በራስዎ መስቀለኛ መንገድ እየሰሩ እንደሆነ እገምታለሁ.

2. ሰርፍቦርድ ትዕዛዝ መስመር መሣሪያ

  • ppa፣ homebrew ወይም exe በመጠቀም Node.js ያውርዱ እና ይጫኑ እዚህ፡ https://nodejs.org/en/download/.
  • አሁን ባለው መስቀለኛ መንገድ ላይ ሙከራዎችን እንዲያካሂዱ የሚያስችልዎ ሰርፍቦርድን ይጫኑ።

npm install -g @waves/surfboard

3. ቪዥዋል ስቱዲዮ ኮድ ተሰኪ

የ IDE አድናቂ ካልሆኑ እና የጽሑፍ አርታኢዎችን ከመረጡ ይህ እርምጃ አማራጭ ነው። ሁሉም አስፈላጊ መሳሪያዎች የትእዛዝ መስመር መገልገያዎች ናቸው. ቪም የሚጠቀሙ ከሆነ, ለተሰኪው ትኩረት ይስጡ vim-ride.

ቪዥዋል ስቱዲዮ ኮድ አውርድና ጫን፡- https://code.visualstudio.com/

VS ኮድን ይክፈቱ እና የ waves-ride ተሰኪን ይጫኑ፡-

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል

Waves Keeper አሳሽ ቅጥያ፡- https://wavesplatform.com/products-keeper

ተጠናቋል!

መስቀለኛ መንገድን እና Waves Explorerን ጀምር

1. መስቀለኛ መንገድን ይጀምሩ:

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

መስቀለኛ መንገድ በREST API in መጀመሩን ያረጋግጡ http://localhost:6869:

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል
Swagger REST ኤፒአይ ለኖድ

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. ባዶ የአካባቢያዊ መስቀለኛ መንገድ ምን ያህል በፍጥነት እንደተገነባ ያያሉ።

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል
Waves Explorer የአካባቢያዊ መስቀለኛ መንገድን ያሳያል

RIDE መዋቅር እና ሰርፍቦርድ መሳሪያ

ባዶ ማውጫ ይፍጠሩ እና ትዕዛዙን በእሱ ውስጥ ያሂዱ

surfboard init

ትዕዛዙ በፕሮጄክት መዋቅር ፣ “ሄሎ ዓለም” መተግበሪያዎች እና ሙከራዎች ማውጫን ይጀምራል። ይህን አቃፊ በVS Code ከከፈቱት ያያሉ፡-

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል
ሰርፍቦርድ.config.json

  • በ./ride/ ፎልደር ስር አንድ ነጠላ ፋይል ታገኛለህ wallet.ride - የ dApp ኮድ የሚገኝበት ማውጫ። በሚቀጥለው ብሎክ ውስጥ dAppsን በአጭሩ እንመረምራለን።
  • በ./test/ ፎልደር ስር *.js ፋይል ያገኛሉ። ሙከራዎች እዚህ ተከማችተዋል።
  • ./surfboard.config.json - ሙከራዎችን ለማስኬድ የውቅር ፋይል።

Envs አስፈላጊ ክፍል ነው. እያንዳንዱ አካባቢ እንደሚከተለው ተዋቅሯል፡-

  • የአውታረ መረብ dApp እና CHAIN_IDን ለማስጀመር የሚያገለግለው የመስቀለኛ መንገድ REST API መጨረሻ ነጥብ።
  • ለሙከራ ቶከኖችዎ ምንጭ የሚሆኑ ቶከኖች ላለው መለያ ሚስጥራዊ ሀረግ።

እንደምታየው፣ surfboard.config.json በነባሪነት በርካታ አካባቢዎችን ይደግፋል። ነባሪው የአካባቢ አካባቢ ነው (ነባሪውEnv ቁልፍ ሊለወጥ የሚችል መለኪያ ነው)።

የWallet-demo መተግበሪያ

ይህ ክፍል የ RIDE ቋንቋ ማጣቀሻ አይደለም። ይልቁንም እኛ የምናሰማራውን መተግበሪያ ተመልከት እና በብሎክቼይን ውስጥ ምን እየተከሰተ እንዳለ በደንብ ለመረዳት እንሞክራለን።

ቀላል የWallet-demo መተግበሪያን እንመልከት። ማንኛውም ሰው ቶከኖችን ወደ dApp አድራሻ መላክ ይችላል። የእርስዎን WAVES ብቻ ነው ማውጣት የሚችሉት። ሁለት @የሚጠሩ ተግባራት በ InvokeScriptTransaction በኩል ይገኛሉ፡-

  • deposit()በ WAVES ውስጥ የተያያዘ ክፍያ ያስፈልገዋል
  • withdraw(amount: Int)ምልክቶችን የሚመልስ

በ dApp የሕይወት ዑደት ውስጥ፣ አወቃቀሩ (አድራሻ → መጠን) ይቆያል፡-

እርምጃ
የውጤት ሁኔታ

የመጀመሪያ
ባዶ

አሊስ ተቀማጭ 5 WAVES
አሊስ-አድራሻ → 500000000

ቦብ 2 WAVES ያስቀምጣል።

አሊስ-አድራሻ → 500000000
ቦብ-አድራሻ → 200000000

ቦብ 7 WAVES ያወጣል።
ተከልክሏል!

አሊስ 4 WAVESን አወጣች።
አሊስ-አድራሻ → 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

የናሙና ኮድ በ ላይም ይገኛል። የፊልሙ.

የVSCode ፕለጊን ፋይልን በሚያርትዑበት ጊዜ ቀጣይነት ያለው ማጠናቀርን ይደግፋል። ስለዚህ በPROBLEMS ትር ውስጥ ሁል ጊዜ ስህተቶችን መከታተል ይችላሉ።

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል
ፋይሉን ሲያጠናቅቁ የተለየ የጽሑፍ አርታኢ መጠቀም ከፈለጉ ይጠቀሙ

surfboard compile ride/wallet.ride

ይህ ተከታታይ ቤዝ64 የተጠናቀረ RIDE ኮድ ያወጣል።

የ'wallet.ride' ስክሪፕት ሞክር

እስቲ እንመልከት የሙከራ ፋይል. በጃቫስክሪፕት ሞቻ ማዕቀፍ የተጎላበተ። “በፊት” ተግባር እና ሶስት ሙከራዎች አሉ፡-

  • "በፊት" በ MassTransferTransaction በኩል ብዙ መለያዎችን ፈንድ፣ ስክሪፕቱን አጠናቅሮ ወደ blockchain ያሰማራል።
  • "ማስቀመጥ ይችላል" InvokeScriptTransaction ወደ አውታረ መረቡ ይልካል, ለእያንዳንዱ ሁለት መለያዎች የተቀማጭ () ተግባርን በማግበር.
  • ማንም ሰው የሌሎችን ምልክቶች ሊሰርቅ የማይችለውን "ከተቀማጭ ገንዘብ ማውጣት አይቻልም" ሙከራዎች።
  • መውጣቶች በትክክል መሰራታቸውን "ማስቀመጥ ይችላል" ቼኮች።

ከሰርፍቦርድ ሙከራዎችን ያሂዱ እና ውጤቶችን በ Waves Explorer ውስጥ ይተንትኑ

ፈተናውን ለማሄድ፣ ሩጡ

surfboard test

ብዙ ስክሪፕቶች ካሉዎት (ለምሳሌ፣ የተለየ የማሰማሪያ ስክሪፕት ያስፈልግዎታል)፣ ማሄድ ይችላሉ።

surfboard test my-scenario.js

ሰርፍቦርድ የሙከራ ፋይሎችን በ./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)

ሆራይ! ፈተናዎች አልፈዋል። አሁን ዋቭስ ኤክስፕሎረርን ስንጠቀም ምን እንደሚፈጠር እንመልከት፡ ብሎኮችን ተመልከት ወይም በፍለጋው ውስጥ ከላይ ካሉት አድራሻዎች አንዱን ለጥፍ (ለምሳሌ፡ ተጓዳኝ wallet#. እዚያ የግብይት ታሪክን ፣ dApp ሁኔታን ፣ የተበላሸ ሁለትዮሽ ፋይልን ማግኘት ይችላሉ።

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል
ሞገዶች አሳሽ. አሁን ስራ ላይ የዋለ መተግበሪያ።

አንዳንድ የሰርፍ ሰሌዳ ምክሮች፡-

1. በ testnet አካባቢ ውስጥ ለመሞከር፣ ይጠቀሙ፡-

surfboard test --env=testnet

የሙከራ ምልክቶችን ያግኙ

2. የJSON የግብይቶች ስሪቶችን እና እንዴት በመስቀለኛ መንገድ እንደሚስተናገዱ ማየት ከፈለጉ፣ ፈተናውን በ -v ያሂዱ (ማለትም 'verbose')፡

surfboard test -v

መተግበሪያዎችን ከ Waves Keeper ጋር መጠቀም

1. Waves Keeper እንዲሰራ ያዋቅሩ፡- http://localhost:6869

Waves 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. በ "ተቀማጭ" መስኩ ውስጥ ትንሽ መጠን ያስገቡ እና አዝራሩን ጠቅ ያድርጉ:

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል
Waves Keeper 10 WAVES በመክፈል InvokeScriptTransaction ለመፈረም ፍቃድ ጠይቋል።

6. ግብይቱን ያረጋግጡ፡-

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል
ግብይቱ ተፈጥሯል እና ወደ አውታረ መረቡ ይሰራጫል። አሁን መታወቂያዋን ማየት ይችላሉ።

7. Waves Explorerን በመጠቀም ግብይቱን ይቆጣጠሩ። በፍለጋ መስክ ውስጥ መታወቂያ አስገባ

Waves RIDE dApp እንዴት መገንባት፣ ማሰማራት እና መሞከር እንደሚቻል

መደምደሚያ እና ተጨማሪ መረጃ

በ Waves Platform ላይ ቀላል dAppsን ለማዳበር፣ ለመሞከር፣ ለማሰማራት እና ለመጠቀም መሳሪያዎችን ተመልክተናል፡-

  • የራይድ ቋንቋ
  • VS ኮድ አርታዒ
  • ሞገድ አሳሽ
  • ስፌትቦርድ
  • ሞገዶች ጠባቂ

RIDE መማር ለመቀጠል ለሚፈልጉ አገናኞች፡-

ተጨማሪ ምሳሌዎች
የመስመር ላይ IDE ከምሳሌዎች ጋር
ሞገዶች ሰነድ
በቴሌግራም ውስጥ የገንቢ ውይይት
ሞገዶች እና RIDE በተደራራቢ ፍሰት ላይ
አዲስ! በ Waves Platform ላይ dApps ስለመፍጠር የመስመር ላይ ኮርሶች

ወደ RIDE ርዕስ ዘልቆ መግባትዎን ይቀጥሉ እና የመጀመሪያዎን dApp ይፍጠሩ!

TL; DR: bit.ly/2YCFnwY

ምንጭ: hab.com

አስተያየት ያክሉ