ภาพรวม
การโหวตสำหรับ Second round โทเคนจำนวน 500,000,000 ZMN ตามที่ได้เคยกล่าวไว้ว่าจะมีการเปิดให้โหวตโดยผู้ถือครองโทเคน เพื่อตัดสินใจว่าจะทำอย่างไรต่อไป ระหว่าง
- BURN เผาโทเคนในส่วนนี้ทิ้งทั้งหมด
- KEEP เก็บไว้เพื่อนำมาใช้ประโยชน์แก่ผู้ถือโทเคนเดิม เช่น การนำมาเปิดระดมทุนรอบสอง หรือนำมาเป็นโทเคนบริษัท เป็นต้น
ขั้นตอนการโหวตเปิดให้โหวต 2 ทาง ได้แก่
- Website https://zmine.com
- Smart contract
สำหรับบทความนี้เป็นการอธิบายขั้นตอนการโหวตผ่านทาง smart contract รายละเอียดดังนี้
Smart contract details
การโหวตจะเกี่ยวเนื่องกับ smart contract 3 ตัวได้แก่
ZMINE Token
- Network: Mainnet
- Contract:
ZmineToken
- Contract address: 0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D
Vote for BURN
- Network: Mainnet
- Contract:
ZmineVoteBurn
- Contract address: 0xd67069d5c76028c81cbcba7c8fa0253d6aad3601
Vote for KEEP
- Network: Mainnet
- Contract:
ZmineVoteKeep
- Contract address: 0x7ed0226b939f43efe0fc37537566cb642cb1da59
***********************
ห้ามทำการ Transfer ZMN Token จาก Exchance หรือ Wallet ใดๆ
ไปยัง Contract Address ดังกล่าวตรงๆ โดยเด็ดขาด
***********************
How to vote via smart contract
ขั้นตอนการเรียกใช้มี 4 ขั้นตอนดังนี้
- Connect Metamask wallet to etherscan.io (optional)
- Allowance and prepare ZMN token into wallet
- Vote
- 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 ไปที่ 0xd67069d5c76028c81cbcba7c8fa0253d6aad3601
- กรณีต้องการโหวต KEEP ไปที่ 0x7ed0226b939f43efe0fc37537566cb642cb1da59
จากตัวอย่างต่อไปนี้จะเป็นการแสดงตัวอย่างของการโหวต 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
GWEIGas 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
GWEIGas Limit
แก้ไขเป็น120000
เมื่อกลับไปยัง Contract ZmineToken
0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D ในส่วนของ Read Contract แล้วตรวจสอบจำนวน ZMN ใน Wallet จากข้อ 4. balanceOf
อีกครั้งจะพบกว่า ZMN ที่ได้นำไปเป็นหลักประกัน (Collateral) จะถูกโอนกลับไปยัง Wallet ของผู้โหวต เป็นอันเสร็จสิ้นกระบวนการโหวต
สรุป
กระบวนการโหวตด้วย ZMN ผ่าน Smart contract เป็นกระบวนการโหวตแบบ Decentralize เต็มรูปแบบ ซึ่งสำหรับผู้ใช้ที่ไม่เคยเรียกใช้ Smart contract มาก่อน อาจจะต้องใช้เวลาในการเรียนรู้และทำตามขั้นตอนทีละขั้นตอน อย่างไรก็ตาม กระบวนการนี้เป็นตัวอย่างที่ดีของการใช้ Smart contract เพื่อทำ Transaction ใดๆในโลก Decentralize ซึ่งมีความโปร่งใสและสามารถตรวจสอบได้นั่นเอง