วิธีสร้าง ปรับใช้ และทดสอบ Waves RIDE dApp

สวัสดี! ในบทความนี้ ฉันจะแสดงวิธีการเขียนและเรียกใช้ dApp ปกติบนโหนด Waves มาดูเครื่องมือ วิธีการ และตัวอย่างการพัฒนาที่จำเป็นกัน

วิธีสร้าง ปรับใช้ และทดสอบ Waves RIDE dApp

รูปแบบการพัฒนาสำหรับ dApps และแอปพลิเคชันทั่วไปเกือบจะเหมือนกัน:

  • เราเขียนรหัส
  • การเขียนการทดสอบอัตโนมัติ
  • เปิดตัวแอปพลิเคชั่น
  • การทดสอบ

เครื่องมือ

1. docker เพื่อรันโหนดและ Waves Explorer

หากคุณไม่ต้องการเริ่มโหนด คุณสามารถข้ามขั้นตอนนี้ได้ ท้ายที่สุดแล้วก็มีเครือข่ายการทดสอบและการทดลอง แต่หากไม่มีการปรับใช้โหนดของคุณเอง กระบวนการทดสอบอาจใช้เวลานาน

  • คุณจะต้องมีบัญชีใหม่ที่มีโทเค็นทดสอบอยู่ตลอดเวลา faucet เครือข่ายทดสอบจะถ่ายโอน 10 WAVES ทุก ๆ 10 นาที
  • เวลาบล็อกโดยเฉลี่ยในเครือข่ายทดสอบคือ 1 นาที ในโหนด – 15 วินาที สิ่งนี้จะสังเกตได้ชัดเจนเป็นพิเศษเมื่อธุรกรรมต้องมีการยืนยันหลายครั้ง
  • การแคชเชิงรุกสามารถทำได้บนโหนดทดสอบสาธารณะ
  • นอกจากนี้ยังอาจไม่สามารถใช้งานได้ชั่วคราวเนื่องจากการบำรุงรักษา

จากนี้ไป ฉันจะถือว่าคุณกำลังทำงานกับโหนดของคุณเอง

2. เครื่องมือบรรทัดคำสั่งกระดานโต้คลื่น

  • ดาวน์โหลดและติดตั้ง Node.js โดยใช้ ppa, homebrew หรือ exe ที่นี่: https://nodejs.org/en/download/.
  • ติดตั้ง Surfboard ซึ่งเป็นเครื่องมือที่ช่วยให้คุณสามารถรันการทดสอบบนโหนดที่มีอยู่ได้

npm install -g @waves/surfboard

3. ปลั๊กอินรหัส Visual Studio

ขั้นตอนนี้เป็นทางเลือกหากคุณไม่ใช่แฟนของ IDE และชอบโปรแกรมแก้ไขข้อความ เครื่องมือที่จำเป็นทั้งหมดคือยูทิลิตี้บรรทัดคำสั่ง หากคุณใช้เป็นกลุ่ม ให้ใส่ใจกับปลั๊กอิน เป็นกลุ่มขี่.

ดาวน์โหลดและติดตั้งรหัส Visual Studio: https://code.visualstudio.com/

เปิด VS Code และติดตั้งปลั๊กอิน wave-ride:

วิธีสร้าง ปรับใช้ และทดสอบ Waves RIDE dApp

ส่วนขยายเบราว์เซอร์ Waves Keeper: https://wavesplatform.com/products-keeper

Done!

เรียกใช้โหนดและ Waves Explorer

1. เริ่มต้นโหนด:

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

ตรวจสอบให้แน่ใจว่าโหนดถูกเปิดใช้งานผ่าน REST API http://localhost:6869:

วิธีสร้าง ปรับใช้ และทดสอบ Waves 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. คุณจะเห็นว่าวงจรโหนดในพื้นที่ว่างเปล่าถูกสร้างขึ้นเร็วแค่ไหน

วิธีสร้าง ปรับใช้ และทดสอบ Waves RIDE dApp
Waves Explorer แสดงอินสแตนซ์โหนดในเครื่อง

โครงสร้าง RIDE และเครื่องมือเซิร์ฟบอร์ด

สร้างไดเร็กทอรีว่างและรันคำสั่งในนั้น

surfboard init

คำสั่งเริ่มต้นไดเร็กทอรีด้วยโครงสร้างโปรเจ็กต์ แอปพลิเคชัน "hello world" และการทดสอบ หากคุณเปิดโฟลเดอร์นี้ด้วย VS Code คุณจะเห็น:

วิธีสร้าง ปรับใช้ และทดสอบ Waves RIDE dApp
เซิร์ฟบอร์ด.config.json

  • ภายใต้โฟลเดอร์ ./ride/ คุณจะพบไฟล์เดียว wallet.ride ซึ่งเป็นไดเร็กทอรีที่มีโค้ด dApp อยู่ เราจะวิเคราะห์ dApps สั้นๆ ในบล็อกถัดไป
  • ภายใต้โฟลเดอร์ ./test/ คุณจะพบไฟล์ *.js การทดสอบจะถูกเก็บไว้ที่นี่
  • ./surfboard.config.json – ไฟล์กำหนดค่าสำหรับการรันการทดสอบ

Envs เป็นส่วนสำคัญ แต่ละสภาพแวดล้อมได้รับการกำหนดค่าดังนี้:

  • ตำแหน่งข้อมูล REST API ของโหนดที่จะใช้ในการเปิดใช้ dApp และ CHAIN_ID ของเครือข่าย
  • วลีลับสำหรับบัญชีที่มีโทเค็นที่จะเป็นแหล่งที่มาของโทเค็นทดสอบของคุณ

อย่างที่คุณเห็น surfboard.config.json รองรับหลายสภาพแวดล้อมตามค่าเริ่มต้น ค่าเริ่มต้นคือสภาพแวดล้อมภายในเครื่อง (คีย์ defaultEnv เป็นพารามิเตอร์ที่เปลี่ยนแปลงได้)

แอปพลิเคชั่น Wallet-สาธิต

ส่วนนี้ไม่ใช่การอ้างอิงถึงภาษา RIDE แต่ให้ดูที่แอปพลิเคชันที่เราปรับใช้และทดสอบเพื่อทำความเข้าใจกับสิ่งที่เกิดขึ้นในบล็อกเชนให้ดียิ่งขึ้น

มาดูแอปพลิเคชัน Wallet-demo ง่ายๆ กัน ใครๆ ก็สามารถส่งโทเค็นไปยังที่อยู่ dApp ได้ คุณสามารถถอนได้เฉพาะ WAVES ของคุณเท่านั้น ฟังก์ชัน @Callable สองฟังก์ชันมีให้ใช้งานได้ผ่าน 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

สามารถดูโค้ดตัวอย่างได้ที่ GitHub.

ปลั๊กอิน VSCode รองรับการคอมไพล์อย่างต่อเนื่องในขณะที่แก้ไขไฟล์ ดังนั้น คุณสามารถตรวจสอบข้อผิดพลาดได้ตลอดเวลาในแท็บปัญหา

วิธีสร้าง ปรับใช้ และทดสอบ Waves RIDE dApp
หากคุณต้องการใช้โปรแกรมแก้ไขข้อความอื่นเมื่อรวบรวมไฟล์ ให้ใช้

surfboard compile ride/wallet.ride

สิ่งนี้จะส่งออกชุดรหัส RIDE ที่คอมไพล์แล้ว base64

สคริปต์ทดสอบสำหรับ 'wallet.ride'

มาดูกัน ไฟล์ทดสอบ. ขับเคลื่อนโดยเฟรมเวิร์ก Mocha ของ JavaScript มีฟังก์ชัน “Before” และการทดสอบ XNUMX แบบ:

  • “ก่อน” ระดมทุนหลายบัญชีผ่าน 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 ไฟล์ไบนารีที่ถอดรหัสแล้ว

วิธีสร้าง ปรับใช้ และทดสอบ 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. นำเข้าวลีลับพร้อมโทเค็นสำหรับเครือข่ายหรือไม่ เพื่อความง่าย ให้ใช้ seed เริ่มต้นของโหนดของคุณ: 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 ร้องขอการอนุญาตให้ลงนามใน InvokeScriptTransaction โดยชำระเงิน 10 WAVES

6. ยืนยันการทำรายการ:

วิธีสร้าง ปรับใช้ และทดสอบ Waves RIDE dApp
ธุรกรรมถูกสร้างขึ้นและออกอากาศไปยังเครือข่าย ตอนนี้คุณสามารถดู ID ของเธอได้แล้ว

7. ตรวจสอบธุรกรรมโดยใช้ Waves Explorer ป้อน ID ในช่องค้นหา

วิธีสร้าง ปรับใช้ และทดสอบ Waves RIDE dApp

บทสรุปและข้อมูลเพิ่มเติม

เราพิจารณาเครื่องมือสำหรับการพัฒนา ทดสอบ ปรับใช้ และใช้งาน dApps อย่างง่ายบนแพลตฟอร์ม Waves:

  • ภาษาขี่
  • โปรแกรมแก้ไขรหัส VS
  • นักสำรวจคลื่น
  • กระดานโต้คลื่น
  • ผู้ดูแลคลื่น

ลิงค์สำหรับผู้ที่ต้องการเรียนรู้ RIDE ต่อไป:

ตัวอย่างเพิ่มเติม
IDE ออนไลน์พร้อมตัวอย่าง
เอกสารเกี่ยวกับคลื่น
การแชทของนักพัฒนาใน Telegram
Waves และ RIDE บนสแต็คโอเวอร์โฟลว์
ใหม่! หลักสูตรออนไลน์เกี่ยวกับการสร้าง dApps บนแพลตฟอร์ม Waves

ดำดิ่งสู่หัวข้อ RIDE ต่อไปและสร้าง dApp แรกของคุณ!

TL; DR: bit.ly/2YCFnwY

ที่มา: will.com

เพิ่มความคิดเห็น