เนื่องจากผมพึ่งทราบข่าวว่าทาง KillSwitch ได้สร้าง Blockchain ของตัวเองขึ้นมา และประกาศให้ทดลองใช้งาน ผมเลยติดต่อเข้าไปขอร่วมทดสอบด้วย โดยวันนี้ผมจะมาเขียน Smart Contract ง่ายๆ คือ Hello World จากนั้น deploy ไปบน KillSwitch Chain โดยจะมีเนื้อหาดังต่อไปนี้ครับ
● KillSwitch Chain คือ?
● ติดตั้ง Metamask
● ตั้งค่า Network สำหรับ KillSwtich Chain
● เขียนโค้ด compile deploy และทดลองใช้ smart contract บน Remix
● ดูธุรกรรมต่างๆที่เกิดขึ้นผ่านทาง Explorer
เนื่องจากตอนนี้ (11/9/2564) ทางผู้พัฒนายังไม่ได้เขียนรายละเอียดเชิงลึก ผมเลยแอบไปสืบมาคร่าวๆและเล่าสู่กันฟังดังนี้ครับ คือ Chain นี้ใช้เป็นของ quorum ซึ่งนำมาปรับเป็น raft consensus โดยแก้ไขเรื่อง gas ให้ค่าธรรมเนียมถูกมากๆเหมือน Matic และโค้ดต่างๆเพื่อไม่ให้ล่มบ่อยๆ ซึ่ง Chain นี้เป็น mainnet เลยนะครับ ไม่มี testnet เห็นเค้าบอกว่าเป็น mainnet ช่วงทดสอบ ตอนนี้จึงเปิดให้นักพัฒนาสามารถเข้ามาร่วมทดสอบได้แบบฟรีๆ โดยติดต่อขอเข้าร่วมผ่านทาง Telagram ของทาง KillSwitch จากนั้นส่ง wallet address ให้เค้า เค้าก็จะส่ง REI (เป็นชื่อชั่วคราวอาจมีการเปลี่ยนแปลงภายหลัง) ซึ่งเป็น Native Coin มาให้ใช้สำหรับจ่ายค่าธรรมเนียมในการทำธุรกรรมต่างๆบน KillSwitch Chain ครับ
ผมจะใช้ Metamask เป็นกระเป๋า (wallet) สำหรับบริหารจัดการ REI บน KillSwitch Chain โดยสามารถติดตั้งได้ที่ metamask.io จากนั้นติดตั้งตามขั้นตอน
เมื่อได้ account เรียบร้อย ต่อมาเป็นการตั้งค่า Network สำหรับ KillSwitch Chain
ให้ไปที่ Network ด้านบน > เลือก Custom RPC ดังรูปต่อไปนี้
จากนั้นตั้งค่าต่างๆ ดังนี้ครับ
● KSW Chain
● New RPC URL : https://rei-rpc.moonrhythm.io
● Chain ID : 55555
● Currency Symbol : REI
● Block Explorer URL : https://rei-explorer.moonrhythm.io/
จากนั้น save
พบว่าเราสามารถเพิ่ม network KSW Chain ได้เรียบร้อย
เนื่องจากผมติดต่อไปขอร่วมทดสอบทางTelagram ของทาง KillSwitchเรียบร้อยแล้ว ทางทีมงานใจดีส่งมาให้ 1 REI
ผมใช้เครื่องมือในการเขียน คือ Remix ซึ่งเป็น IDE ที่สามารถเขียน compile และ deploy และภาษาที่ใช้ คือ Solidity
โดยให้เข้าไปที่ remix.ethereum.org > เลือก Solidity > เลือก New file > ตั้งชื่อไฟล์ HelloWorldKSW.sol
จากนั้นใส่โค้ด ดังต่อไปนี้
ขออธิบายโค้ด HelloWorldKSW.sol ดังนี้
บรรทัด 1: ระบุ License ที่ใช้ ตอนนี้ไม่ได้ใช้เลยกำหนดเป็น UNLICENSED
บรรทัด 2: กำหนด version ของ solidity
บรรทัด 4: contract นี้มีชื่อว่า HelloWorldKSW
บรรทัด 5: ประกาศตัวแปรชื่อ string message กำหนดค่าเป็น "HelloWorld KillSwitch"
บรรทัด 7-9: สร้างฟังก์ชั่น setMessage สำหรับกำหนดค่าใหม่ให้กับตัวแปร message
บรรทัด 11-13: สร้างฟังก์ชั่น getMessage สำหรับคืนค่าตัวแปร message
จากนั้น compile โดยไปที่หน้า SOLIDITY COMPILE > เลือก 0.8.7+commit > กด Compile HelloWorldKSW.sol ดังรูป
จากนั้น Deploy ไปที่ KillSwitch Chain โดยไปที่หน้า DEPLOY & RUN TRANSACTIONS > เลือก Injected Web3 > เลือก Deploy
กด Confirm ค่าธรรมเนียมในการ Deploy โค้ด ซึ่งจ่ายเป็น REI ดังนี้
ซึ่งจะสังเกตว่าเค้าจะออกแบบให้ใช้ค่า gas น้อยๆ เหมือน Matic ครับ
หลังจาก Deploy Smart Contract เรียบร้อยแล้ว จะพบ Deployed Contracts (อยู่ด้านซ้ายล่างของหน้าจอ) ซึ่งจะพบฟังก์ชั่นที่เราสามารถเรียกใช้งานได้ ดังนี้
ทดลองฟังก์ชั่น getMessage เพื่อคืนค่าตัวแปร message ซึ่งจะพบข้อความ HelloWorld KillSwitch ดังนี้
ซึ่งสังเกตว่าฟังก์ชั่น getMessage นั้นไม่เสียค่าธรรมเนียมเนื่องจากเป็นการดึงข้อมูลออกมาจาก Blockchain
ต่อมาเราจะลองกำหนดข้อความใหม่ให้กับตัวแปร message โดยในตัวอย่างนี้ผมลองใส่ New Message > จากนั้นกด setMessage
เนื่องจากขั้นตอนนี้เป็นการบันทึกข้อมูลลงไปใน Blockchain จึงต้องเสียค่าธรรมเนียม > กด Confirm เหมือนเดิม
จากนั้นเมื่อ transtion สำเร็จ ให้ลองกลับไปทดลองฟังก์ชั่น getMessage อีกครั้ง จะพบว่าได้ข้อความใหม่ คือ New Message เรียบร้อยแล้วดังนี้
เราสามารถตรวจสอบรายละเอียดของธุรกรรมต่างๆที่เกิดขึ้นทั้งหมดบน KillSwitch Chain โดยเข้าไปที่ rei-explorer.moonrhythm.io/ จะพบหน้าจอดังนี้
โดยเราสามารถนำเลขของ Smart Contract หรือ Transtion มาค้นหาที่ช่องขวาบน
ซึ่งผมลองนำเลข transaction ตอนแก้ไขข้อความใหม่ จะพบว่า transaction confirm เร็วมากๆน้อยกว่า 0.0 sec ดังรูป
สรุปโดยภาพรวม KillSwtich Chain ถูกออกแบบมาให้ใช้ค่า gas น้อยมากและตอนนี้ confirm เร็วมากๆครับ แต่อย่างไรก็ตามเนื่องจากตอนนี้ยังมีผู้ทดสอบไม่มาก คงต้องลองดูในกรณีที่มีการส่ง transaction จำนวนมากๆ Network จะยังคงรวดเร็วแบบนี้อยู่ไหม คงต้องให้นักพัฒนาร่วมกันทดสอบต่อไป ซึ่งส่วนตัวมองว่าตอนนี้เป็นโอกาสที่ดีมากๆที่จะได้ทดลองใช้งาน Chain ที่อยู่บน mainnet ที่ดีกว่า testnet ครับ ^^
สุดท้ายนี้หวังว่าบทความนี้คงเป็นประโยชน์กับเพื่อนๆ โอกาสหน้าจะลอง deploy Smart Contract อื่นๆที่น่าสนใจดูครับ
บทความโดย อ.ผศ.ดร.ธรรณพ อารีพรรค
วิทยาลัยนวัตกรรมดิจิทัลเทคโนโลยี มหาวิทยาลัยรังสิต