คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
ไดอารี่การพัฒนาสัญญาสมาร์ทสนิม (3)
BlockSec
特邀专栏作者
2022-03-29 10:29
บทความนี้มีประมาณ 4130 คำ การอ่านทั้งหมดใช้เวลาประมาณ 6 นาที
การปรับใช้ตามสัญญา การเรียกใช้ฟังก์ชัน และการใช้งาน explorer

บทความที่เกี่ยวข้อง:

ไดอารี่การพัฒนาสัญญาสมาร์ทสนิม (2) การเขียนการทดสอบหน่วยสัญญาสมาร์ทสนิม

ในบล็อกการพัฒนาสัญญาอัจฉริยะของ Rust ฉบับนี้ BlockSec จะแนะนำวิธีการปรับใช้สัญญาอัจฉริยะตัวอย่างอย่างง่ายกับเครือข่ายทดสอบ NEAR (TestNet) ดำเนินการตามสัญญา และสืบค้นผลการดำเนินการตามสัญญา

เมื่อผู้พัฒนาสัญญาได้ปรับใช้ลอจิกหลักของสัญญาและดำเนินการทดสอบหน่วย นักพัฒนาสามารถรวบรวมโครงการสัญญาเป็น WASM bytecode และปรับใช้กับเชนทดสอบของ NEAR เพื่อปรับใช้ขั้นสุดท้ายกับเมนเน็ต (MainNet) ที่เตรียมไว้

1. รู้เบื้องต้นเกี่ยวกับเครือข่าย NEAR

NEAR Protocol เป็นโปรโตคอลหมายความว่าสามารถมีเครือข่ายอิสระหลายเครือข่ายตามโปรโตคอลนี้ ข้อมูลจำเพาะและมาตรฐานโปรโตคอล NEAR ข้อมูลจำเพาะและมาตรฐานที่กำหนดขึ้นโดยโปรโตคอล NEAR ระบุเชนที่แตกต่างกันตามโปรโตคอล NEAR และ chain_id ใน GenesisConfig ของการกำหนดค่าบล็อกการสร้างนั้นแตกต่างกัน

  • TestNet

    โดยทั่วไปมีเครือข่ายสามประเภทที่เราใช้กันทั่วไป:

  • MainNet

    ในที่สุดโครงการสัญญาอัจฉริยะทุกโครงการจำเป็นต้องทำงานบนเครือข่ายบล็อกเชนเพื่อให้ทราบถึงฟังก์ชันของโครงการ อย่างไรก็ตาม สำหรับโครงการใหม่ ทีมงานโครงการมักจะปรับใช้โครงการบนเครือข่ายทดสอบ (TestNet) เพื่อทดสอบฟังก์ชันและตรรกะทางธุรกิจที่เกี่ยวข้องของโครงการสัญญาอัจฉริยะ

  • LocalNet

    หลังจากที่สัญญาได้ผ่านการทดสอบหลายรอบและการตรวจสอบความปลอดภัยโดยอิสระ (หากจำเป็น) ในเครือข่ายทดสอบ ทีมพัฒนาสามารถเลือกที่จะปรับใช้สัญญาอย่างเป็นทางการกับเครือข่ายหลัก (MainNet)

LocalNet แตกต่างจาก TestNet LocalNet ทำงานภายในเครื่อง ดังนั้นสัญญาและข้อมูลการทำธุรกรรมที่ใช้งานบนเครือข่ายจะไม่ถูกเปิดเผยต่อเครือข่ายภายนอก หากผู้พัฒนาไม่ต้องการให้ข้อมูลสำคัญรั่วไหลเกี่ยวกับโครงการสัญญาก่อนที่จะนำไปใช้กับ TestNet หรือ MainNet LocalNet จะเป็นตัวเลือกที่ดี

2. ใกล้การติดตั้ง CLI

$ sudo npm install -g near-cli

NEAR CLI (Command Line Interface) เป็นอินเทอร์เฟซบรรทัดคำสั่ง NodeJS ซึ่งใช้ Near-api-js เพื่อเชื่อมต่อและโต้ตอบกับเครือข่ายที่อธิบายไว้ข้างต้น ดังนั้นก่อนการติดตั้ง เราจำเป็นต้องติดตั้ง npm (ชื่อเต็ม Node Package Manager) จากนั้นเราจะใช้ npm เพื่อรันคำสั่งการติดตั้งต่อไปนี้ใน Linux เพื่อติดตั้ง NEAR CLI

$ near --version

ดำเนินการคำสั่งต่อไปนี้เพื่อดูเวอร์ชันที่ติดตั้งของ NEAR CLI และตรวจสอบว่าการติดตั้งสำเร็จหรือไม่

3. ปรับใช้สัญญาใน TestNet

3.1 ลงทะเบียนสำหรับบัญชี TestNethttps://wallet.testnet.near.orgผู้ใช้ใหม่สามารถไปที่

ในการลงทะเบียนกระเป๋าเงิน TestNet ใหม่บนหน้านี้ คุณเพียงแค่ป้อนชื่อผู้ใช้เพื่อทำการลงทะเบียนให้เสร็จสมบูรณ์ เช่น statusmessage.testnethttps://explorer.testnet.near.orgจากนั้นใน

เราสามารถค้นหาและดูข้อมูลที่เกี่ยวข้องกับบัญชีใน TestNet ได้ดังนี้:

ใน TestNet บัญชีที่สร้างขึ้นใหม่แต่ละบัญชีจะมียอดคงเหลือ 200Ⓝ

3.2 เข้าสู่บัญชีใน NEAR CLI

$ near login

เนื่องจากเราได้ติดตั้ง NEAR CLI และสมัครบัญชีผู้ใช้ใน NEAR TestNet คุณสามารถลองเข้าสู่บัญชีใน NAER CLI ได้ดังนี้:

หลังจากการดำเนินการตามคำสั่งข้างต้น NEAR CLI จะเรียกใช้ลิงก์และกำหนดให้ผู้ใช้คลิกด้วยตนเองเพื่อเข้าสู่บัญชี statusmessage.testnet ข้างต้น

3.3 ดูข้อมูลที่เกี่ยวข้องกับบัญชี

$ near state statusmessage.testnet
Account statusmessage.testnet
{    amount: '199999959035075000000000000',
     block_hash: '8iomNEFNa4LQB54ehTPBGu8bBfotistoWrBcYJfxm8vA',
     block_height: 68318068,
     code_hash: '11111111111111111111111111111111',
     locked: '0',
     storage_paid_at: 0,
     storage_usage: 264,
     formattedAmount: '199.999959035075' 
}

ในขณะเดียวกัน เราสามารถค้นหาข้อมูลที่เกี่ยวข้องของบัญชีใดบัญชีหนึ่งผ่าน NEAR CLI

3.4 การรวบรวมสัญญาและการปรับใช้

$ RUSTFLAGS='-C link-arg=-s' cargo +stable build --target wasm32-unknown-unknown --release

ก่อนใช้งานสัญญา เราต้องคอมไพล์สัญญาก่อน คำสั่งต่อไปนี้สามารถใช้เพื่อคอมไพล์ไฟล์ WASM status_message.wasm ที่มีสินค้า ซึ่งมักจะอยู่ในไดเร็กทอรี target/wasm32-unknown-unknown/release/ ของ โครงการ.

$ cd target/wasm32-unknown-unknown/release
$ export MASTER_ACCOUNT=statusmessage.testnet
$ near create-account contract01.$MASTER_ACCOUNT
                          --initialBalance 10
                          --masterAccount $MASTER_ACCOUNT
Account contract01.statusmessage.testnet for network "testnet" was created.

ในขณะเดียวกัน เราสามารถสร้างบัญชีย่อยสำหรับ statusmessage.testnet ชื่อ contract01.statusmessage.testnet สำหรับการปรับใช้สัญญา

$ near deploy --accountId contract01.$MASTER_ACCOUNT \
                        --wasmFile status_message.wasm

จากนั้นเราสามารถใช้คำสั่ง near deploy เพื่อช่วยในการปรับใช้สัญญา

Starting deployment. Account id: contract01.statusmessage.testnet, node: [https://rpc.testnet.near.org](https://rpc.testnet.near.org), helper: [https://helper.testnet.near.org](https://helper.testnet.near.org), file: status_message.wasm
Transaction Id 4oDYA8wPLJuKwDumJxEGubeJBA9Ep13MLXSf34q9ydRm
To see the transaction in the transaction explorer, please open this url in your browser[https://explorer.testnet.near.org/transactions/4oDYA8wPLJuKwDumJxEGubeJBA9Ep13MLXSf34q9ydRm](https://explorer.testnet.near.org/transactions/4oDYA8wPLJuKwDumJxEGubeJBA9Ep13MLXSf34q9ydRm) Done deploying to contract01.statusmessage.testnet

หากการปรับใช้งานสัญญาสำเร็จ เราจะได้รับข้อมูลต่อไปนี้:

3.5 ฟังก์ชั่นสัญญาการโทร

$ near call --accountId $MASTER_ACCOUNT \
      contract01.$MASTER\_ACCOUNT set\_status '{"message":"Hi!2021"}'

เมื่อเราปรับใช้สัญญากับ TestNet สำเร็จ บัญชี contract01.statusmessage.testnet ที่ปรับใช้สัญญาจะเป็นที่อยู่ของสัญญา เพื่อตรวจสอบว่าสัญญา StatusMessage ใน TestNet สามารถทำงานได้ตามปกติหรือไม่ เราสามารถเรียก set_status เพื่อตั้งค่าคุณสมบัติในตัวของสัญญา

Scheduling a call: contract01.statusmessage.testnet.set_status({"message":"Hi!2021"})
TransactTransaction Id E9dsw8H9ztDN18DDvXKTBPvBLWHew7TtuWsLgg6uvesN
To see the transaction in the transaction explorer, please open this url in your browser[https://explorer.testnet.near.org/transactions/E9dsw8H9ztDN18DDvXKTBPvBLWHew7TtuWsLgg6uvesN](https://explorer.testnet.near.org/transactions/E9dsw8H9ztDN18DDvXKTBPvBLWHew7TtuWsLgg6uvesN) ''

ต่อไปนี้เป็นข้อมูลที่ส่งคืนโดยการเรียกใช้ฟังก์ชัน set_status ในสัญญา

จะเห็นได้ว่าธุรกรรมการเรียกฟังก์ชันสัญญา StatusMessage สามารถดำเนินการได้ตามปกติ และส่งคืน ID ธุรกรรมเฉพาะ ได้แก่ E9dsw8H9ztDN18DDvXKTBPvBLWHew7TtuWsLgg6uvesN

3.6 สอบถามธุรกรรม

NEAR ให้บริการชุมชนด้วยแพลตฟอร์มแบบสอบถามการสืบค้นข้อมูล NEAR Explorer ผู้ใช้สามารถค้นหาข้อมูลออนไลน์แบบเรียลไทม์ เช่น ID บัญชี แฮชของธุรกรรม และบล็อคธุรกรรมในเครือข่ายที่ระบุบนแพลตฟอร์มhttps://explorer.testnet.near.org/transactions/E9dsw8H9ztDN18DDvXKTBPvBLWHew7TtuWsLgg6uvesN

ใช้ ID ธุรกรรมเพื่อสอบถามรายละเอียดธุรกรรมเฉพาะใน NEAR Explorer

สรุปและแสดงตัวอย่างของปัญหานี้

สัญญาที่ชาญฉลาด
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
การปรับใช้ตามสัญญา การเรียกใช้ฟังก์ชัน และการใช้งาน explorer
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android