สร้าง Smart Contract และ Backend บน REI chain ด้วย GO

บทความนี้จะเป็นการต่อยอดจาก บทความเดิม การพัฒนา Ethereum Smart Contract และ Backend ด้วยภาษา Go โดยใช้ Ganache ซึ่งทำงานอยู่บน Blockchain เฉพาะเครื่องตนเองเท่านั้น

วันนี้เลยจะทดลองเปลี่ยนไปใช้ Blockchain จริงๆ โดยในบทความนี้ใช้เป็น REI chain ใครยังไม่เคยใช้สามารถเข้าไปลอง HelloWorld ได้ ตาม บทความนี้ ครับ

โดยบทความในนี้จะมีเนื้อหาดังต่อไปนี้

- ติดตั้ง Metamask

- ตั้งค่า Network เป็น REI testnet

- ขอ tREI จาก kururu

- Deploy Smart Contract ไปที่ REI chain

- รัน backend เชื่อมต่อกับ REI chain

- ทดลอง backend

ติดตั้ง Metamask

ผมจะใช้ Metamask เป็นกระเป๋า (wallet) สำหรับบริหารจัดการ REI Chain โดยสามารถติดตั้งได้ที่ metamask.io จากนั้นติดตั้งตามขั้นตอน

ตั้งค่า Network

เมื่อได้ account เรียบร้อย ต่อมาเป็นการตั้งค่า Network สำหรับ REI chain ในบทความนี้เราจะใช้เป็น testnet ครับ

จากนั้นให้ไปที่ Network ด้านบน > Show/Hide Test networks ดังนี้

ในหัวข้อ Show test networks ให้กด On ดังนี้

จากนั้นกลับเพิ่ม Network ใหม่ โดยไปที่ Network ด้านบน > Add Network ดังต่อไปนี้

ให้ตั้งค่าต่างๆ ดังนี้ครับ

● Network Name: Rei Testnet

● New RPC URL: https://rei-testnet-rpc.moonrhythm.io

● Chain ID : 55556

● Currency Symbol : tREI

● Block Explorer URL : https://testnet.reiscan.com

จากนั้น save

ขอ tREI จาก kururu

ทั้งนี้บน REI chain testnet จะใช้ tREI สำหรับใช้จ่ายค่าธรรมเนียมการใช้งาน chain ซึ่งเราสามารถขอได้ฟรีๆ โดยเข้าไปที่ kururu.finance จะปรากฏหน้าจอดังนี้

กด Submit > Sign จากนั้นให้เข้าไปดูที่กระเป๋าจะพบว่าได้รับ 10 tREI มาฟรีๆเลย ดังนี้

Deploy Smart Contract ไปที่ REI chain

ต่อมาเราจะ deploy ไปที่ REI chain โดยใช้ code เดิมเลยจากบทความที่แล้ว สิ่งที่เราต้องเปลี่ยนมี 2 ที่ คือ 1. Private Key ของกระเป๋าใหม่ใน Metamask 2. แก้ไข code deploy.go

1. เริ่มจากเอา Private Key จาก Metamask โดยทำตามขั้นตอนดังรูป

***หมายเหตุ Private Key อันนี้สำคัญมากห้ามส่งให้ใครเด็ดขาด

2. แก้ไข code deploy.go จากบทความที่แล้ว โดยแก้ไขดังนี้

บรรทัดที่ 16: แก้ไขเป็น RPC URL ของ REI chain คือ https://rei-testnet-rpc.moonrhythm.io

บรรทัดที่ 21: ใส่ Private Key ที่ได้จาก Metamask

บรรทัดที่ 50: ใส่ GasPrice เป็น 1 gwei

จากนั้น deploy ด้วยคำสั่งเดิมได้เลย ดังนี้

> go run ./deploy/deploy.go

เมื่อรันสำเร็จเราจะได้เลข Contract Address

รัน backend เชื่อมต่อกับ REI chain

จากนั้นให้แก้ code ใน main.go ใน folder script

บรรทัดที่ 17: แก้ไขเป็น RPC URL ของ REI chain คือ https://rei-testnet-rpc.moonrhythm.io

บรรทัดที่ 22: เป็น Private Key จาก Metamask

บรรทัดที่ 37: เป็น Contract Address ที่ deploy ไปบน REI chain

จากนั้นรัน backend ด้วยคำสั่งต่อไปนี้

> go run ./script/main.go

ซึ่งจะได้ผลลัพธ์ดังต่อไปนี้

ทดลอง backend

เริ่มผมลองเปิด Browser แล้ว เรียกไปที่ http://localhost:1324/greet จะได้ผลลัพธ์ดังนี้

ซึ่งจะแสดงผลลัพธ์เป็นคำว่า smartcontactgo

จากนั้นผมลอง set ค่า greeting เป็นคำว่า helloworldrei ใหม่โดยเรียกไปที่ http://localhost:1324/greet/helloworldrei จะได้ผลลัพธ์ดังนี้

จากนั้นผมลองรับไปเรียกที่ http://localhost:1324/greet จะได้ผลลัพธ์ดังนี้

ซึ่งจะแสดงผลลัพธ์เป็นคำว่า helloworldrei แสดงว่าเราสามารถ set ค่าไปที่ blockchain ได้สำเร็จผ่านทาง backend ที่สร้างขึ้นครับ

นอกจากนี้จริงทาง REI chain มี Block Explorer ให้เราสามารถเข้าไปตรวจสอบธุรกรรมต่างๆได้ โดยนำไปเลขกระเป๋า หรือ contract address ไปค้นที่ด้านซ่ายบนได้ดังนี้

สรุป

ในบทความนี้ต่อยอดจากบทความเดิมการพัฒนา Ethereum Smart Contract และ Backend ด้วยภาษา Go โดยนำไปเชื่อมกับ REI chain

สุดท้ายนี้ เนื้อหาในบทความนี้ผิดพลาดประการใดต้องขออภัยมา ณ ที่นี้ด้วยนะครับ

บทความโดย อ.ผศ.ดร.ธรรณพ อารีพรรค

วิทยาลัยนวัตกรรมดิจิทัลเทคโนโลยี มหาวิทยาลัยรังสิต