ZMINE BLOG

English English   ไทย ไทย

ขั้นตอนการใช้ ZMN เพื่อโหวต second round ด้วย Smart contract

Share this article

ภาพรวม

การโหวตสำหรับ Second round โทเคนจำนวน 500,000,000 ZMN ตามที่ได้เคยกล่าวไว้ว่าจะมีการเปิดให้โหวตโดยผู้ถือครองโทเคน เพื่อตัดสินใจว่าจะทำอย่างไรต่อไป ระหว่าง

  1. BURN เผาโทเคนในส่วนนี้ทิ้งทั้งหมด
  2. KEEP เก็บไว้เพื่อนำมาใช้ประโยชน์แก่ผู้ถือโทเคนเดิม เช่น การนำมาเปิดระดมทุนรอบสอง หรือนำมาเป็นโทเคนบริษัท เป็นต้น

ขั้นตอนการโหวตเปิดให้โหวต 2 ทาง ได้แก่

  1. Website https://zmine.com
  2. Smart contract

สำหรับบทความนี้เป็นการอธิบายขั้นตอนการโหวตผ่านทาง smart contract รายละเอียดดังนี้

 

Smart contract details

การโหวตจะเกี่ยวเนื่องกับ smart contract 3 ตัวได้แก่

ZMINE Token

Vote for BURN

Vote for KEEP

***********************

ห้ามทำการ Transfer ZMN Token จาก Exchance หรือ Wallet ใดๆ

ไปยัง Contract Address ดังกล่าวตรงๆ โดยเด็ดขาด

***********************

 

How to vote via smart contract

ขั้นตอนการเรียกใช้มี 4 ขั้นตอนดังนี้

  1. Connect Metamask wallet to etherscan.io (optional)
  2. Allowance and prepare ZMN token into wallet
  3. Vote
  4. Reclaim token back into your wallet

 


 

1. Connect Metamask wallet to etherscan.io (optional)

การเรียกใช้งาน smart contract สามารถทำได้หลายวิธี รวมถึง wallet ก็มีหลากหลายประเภท ในบทความนี้จะนำเสนอตัวอย่างการเรียกใช้งานที่ง่ายที่สุดคือ การใช้ Metamask (wallet) ร่วมกับ etherscan.io (Explorer + Smart contract interface)

 

รายละเอียดของ Metamask และการใช้งานสามารถดูได้จาก Official website https://metamask.io/

 

ทำการ connect Metamask บน etherscan.io โดยการเข้าไปยัง ZMINE Token ในส่วนของ Write Contract จากนั้น เลือก “Write Contract Connect with Metamask” และกดปุ่ม “Connect”

 

ทาง etherscan.io จะมีการแจ้งเตือนว่า feature นี้ยังเป็นรุ่นทดลองอยู่ ให้กด OK

 

เมื่อทำการ connect แล้วจากปุ่มสีแดงจะกลายเป็นปุ่มสีเขียวดังรูป

 

2. Allowance and prepare ZMN token into wallet

ตามหลักการโหวตคือ ผู้ถือโทเคนจะมีสิทธิโหวตได้ตามจำนวนโทเคนที่ถืออยู่ ในการโหวตผู้ถือโทเคนต้องโอนโทเคนไปเก็บไว้ใน smart contract เพื่อเป็นหลักประกัน (collateral)  ดังนั้นในการโหวตผู้ถือโทเคนจึงต้องทำการอนุญาตให้ smart contract สามารถโอนโทเคนของตนเองออกจาก wallet เพื่อไปเก็บไว้ใน smart contract ได้ นั่นคือการ approve นั่นเอง (allow someone to transfer on your behalf)

มีขั้นตอนดังนี้

 

 

จากขั้นตอนที่แล้วเมื่อทำการ connect แล้ว ให้เลือก 1. approve แล้วกรอกข้อมูลดังนี้

_spender (address) ใส่ Contract address ที่ต้องการเรียกใช้

  • กรณีต้องการโหวต BURN ให้ใส่ 0xd67069d5c76028c81cbcba7c8fa0253d6aad3601
  • กรณีต้องการโหวต KEEP ให้ใส่ 0x7ed0226b939f43efe0fc37537566cb642cb1da59

_value (uint256) ใส่จำนวนโทเคนที่ต้องการนำมาใช้โหวตในหน่วย wei เช่น หากต้องการใช้ 100 ZMN ในการโหวต ให้ใส่ 100000000000000000000 (100 ตามด้วยเลข 0 จำนวน 18 ตัว)

 

เมื่อทำการ approve และ transaction ได้รับการ confirm แล้ว สามารถตรวจสอบได้จากส่วน Read Contract ในข้อ 7. allowance แล้วกรอกข้อมูลดังนี้

_owner (address) ใส่ Wallet address ของตัวเองที่ถือ ZMN อยู่

_spender (address) ใส่ Contract address ที่ต้องการเรียกใช้

  • กรณีต้องการโหวต BURN ให้ใส่ 0xd67069d5c76028c81cbcba7c8fa0253d6aad3601
  • กรณีต้องการโหวต KEEP ให้ใส่ 0x7ed0226b939f43efe0fc37537566cb642cb1da59

จากนั้นกด “Query” จะได้ค่า remaining เป็นจำนวน ZMN ที่เราทำการ allowance ให้แก่ Smart contract ซึ่งในกรณีนี้ก็คือ 100000000000000000000  นั่นเอง

 

 

ทำการตรวจสอบ ZMN ที่ถืออยู่ใน Wallet จากส่วน Read Contract ในข้อ 4. balanceOf แล้วกรอกข้อมูลดังนี้

_owner (address) ใส่ Wallet address ของตัวเองที่ถือ ZMN อยู่

จากนั้นกด “Query” จะได้ค่า balance เป็นจำนวน ZMN ที่มีอยู่ใน Wallet ซึ่งในตัวอย่างนี้มีอยู่จำนวน 999990000000000000000  หรือ 999.99 ZMN นั่นเอง

 

3. Vote

ทำการโหวตโดยการไปยังหน้าของ Contract ที่ต้องการโหวต

 

จากตัวอย่างต่อไปนี้จะเป็นการแสดงตัวอย่างของการโหวต BURN 

 

ในส่วนของ Read Contract ข้อ 8. isVotable ต้องมีค่าเป็น True ซึ่งหมายถึงอยู่ในช่วงเวลาที่เปิดให้มีการโหวต

ช่วงเวลาที่เปิดให้โหวตคือ ตั้งแต่ May 22, 2019 GMT ถึง May 28, 2019 GMT

 

ไปยังส่วน Write Contract แล้วทำการ Connect with Metamask เหมือนขั้นตอนที่ผ่านมา ในข้อ 3. voteBurn กรอกข้อมูลดังนี้

amount (uint256) ใส่จำนวน ZMN ที่ต้องการใช้โหวต ซึ่งในตัวอย่างนี้มีอยู่จำนวน 100000000000000000000  หรือ 100 ZMN นั่นเอง

กดปุ่ม “Write” จะพบหน้าต่างยืนยันการทำธุรกรรมจาก Metamask

สังเกตได้ว่าค่า Transaction Fee ที่ Metamask คำนวณให้เป็นจำนวนที่ค่อนข้างสูง คือ 0.0304 ETH หรือประมาณ 5.26 USD ณ อัตราแลกเปลี่ยนขณะนั้น ผู้ทำการโหวตสามารถเข้าไปแก้ไข  Transaction Fee ได้โดยการกดปุ่ม “Edit”

 

การแก้ไขค่า Transaction Fee สามารถทำได้ทั้งแบบ Basic และ Advanced ให้เลือกแบบ Advanced

 

ทำการแก้ไขค่าดังนี้

  • Gas Price (GWEI) ใส่ 3 GWEI – 10 GWEI ยิ่งใส่ค่ามาก Transaction ก็จะยิ่งได้รับการ Confirm เร็วขึ้น ค่านี้แนะนำให้ใส่ 4 GWEI
  • Gas Limit คือจำนวน gas สูงสุดที่ยอมให้ใช้ ซึ่งจะเห็นได้ว่า Metamask มีการประมาณค่านี้ไว้สูงมาก ทำให้ค่า Transaction Fee สูงมากตามไปด้วย แก้ไขเป็น 250000

ค่า Transaction Fee ใหม่จากตัวอย่างอยู่ที่ 0.001 ETH หรือประมาณ 0.17 USD ณ อัตราแลกเปลี่ยนขณะนั้น กดปุ่ม “Save” และกดปุ่ม “Confirm” เพื่อยืนยันการทำธุรกรรม voteBurn

 

ในส่วนของ Read Contract ข้อ 11. countVoteScore สามารถตรวจสอบจำนวน ZMN รวมที่ถูกนำมาโหวตจากทุกคนได้

 

ในส่วนของ Read Contract ข้อ 13. countVoteUser สามารถตรวจสอบจำนวน Wallet ทั้งหมดที่ถูกนำมาโหวตได้

 

หากการโหวตถูกต้อง เมื่อกลับไปยัง Contract ZmineToken 0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D ในส่วนของ Read Contract แล้วตรวจสอบจำนวน ZMN ใน Wallet จากข้อ 4. balanceOf อีกครั้ง จะพบกว่า ZMN ลดไปเท่ากับจำนวนที่ได้ทำการโหวตไป ซึ่งเกิดจากการถูกโอนออกไปเก็บไว้ใน Smart contract ที่เราทำการโหวตไป เพื่อเป็นหลักประกัน (Collateral) นั่นเอง

 

4. Reclaim token back into your wallet

เมื่อการโหวตเสร็จสิ้น Smart contract ที่ใช้โหวตจะเปิดให้ผู้ทำการโหวต ทำการเรียก ZMN ของตัวเองกลับไปยัง Wallet ของตนเอง (Reclaim ZMN token)

 

การ Reclaim ZMN token สามารถทำได้ตั้งแต่เวลา May 30, 2019 GMT เป็นต้นไป สามารถตรวจสอบได้จาก เข้าไปยังหน้า Contract  ที่ใช้โหวตบน etherscan.io ในส่วนของ Read Contract  ข้อ 4. isReclaimable ต้องมีค่าเป็น True

 

ในส่วนของ Write Contract ทำการ Connect with Metamask อีกครั้ง

 

ในส่วนของ Write Contract ข้อ 5. reclaimToken กดปุ่ม “Write” จะมีหน้าต่างยืนยัน Transaction การ Metamask ทำการแก้ไข Transaction Fee ในส่วน Advanced ดังนี้

  • Gas Price (GWEI) ใส่ 3 GWEI – 10 GWEI ยิ่งใส่ค่ามาก Transaction ก็จะยิ่งได้รับการ Confirm เร็วขึ้น ค่านี้แนะนำให้ใส่ 4 GWEI
  • Gas Limit แก้ไขเป็น 120000

 

เมื่อกลับไปยัง Contract ZmineToken 0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D ในส่วนของ Read Contract แล้วตรวจสอบจำนวน ZMN ใน Wallet จากข้อ 4. balanceOf อีกครั้งจะพบกว่า ZMN ที่ได้นำไปเป็นหลักประกัน (Collateral)  จะถูกโอนกลับไปยัง Wallet ของผู้โหวต เป็นอันเสร็จสิ้นกระบวนการโหวต

 

สรุป

กระบวนการโหวตด้วย ZMN ผ่าน Smart contract เป็นกระบวนการโหวตแบบ Decentralize เต็มรูปแบบ ซึ่งสำหรับผู้ใช้ที่ไม่เคยเรียกใช้ Smart contract มาก่อน อาจจะต้องใช้เวลาในการเรียนรู้และทำตามขั้นตอนทีละขั้นตอน อย่างไรก็ตาม กระบวนการนี้เป็นตัวอย่างที่ดีของการใช้ Smart contract เพื่อทำ Transaction ใดๆในโลก Decentralize ซึ่งมีความโปร่งใสและสามารถตรวจสอบได้นั่นเอง