ลองใช้งาน Viem เปรียบเทียบกับ Ethers.js
เนื่องจากผมเห็น Twitter เกี่ยวกับ Viem ผ่านๆ เมื่ออาทิตย์ที่ผ่านมา ยังไม่ได้มีเวลาลอง วันนี้ก็เลยถือโอกาสลองเล่นดูว่าจะทดแทน Ethers.js ได้หรือไม่ และดี หรือไม่ดียังไง อย่างนึงที่ผมไม่ค่อยชอบสำหรับ Ethers.js คือ Docs ไม่ค่อยน่าอ่านเท่าไหร่ 🤣
Viem
Viem เป็น Client Library สำหรับต่อกับ Ethereum Blockchain แบบเดียวกับ Ethers.js features ที่เด่นๆ คือ
- TypeScript - รองรับ TypeScript มี type safety
- Bundle Size - มีขนาดเล็กกว่า Ethers.js
- Performance - ตัว Viem เคลมว่า Performance ดีสุด ดูผลเทสที่นี่
- number จะ return เป็น bigint
บทความนี้ ผมลอง interact กับ blockchain แบบเดียวกันกับ ethers.js นะครับ
การติดตั้ง
ติดตั้งผ่าน npm
การ Connect JSON RPC
ทดลอง get block number
เนื่องจาก การทำงานคล้ายๆกันคือ createPublicClient ด้วย chain และ RPC_URL
ฉะนั้น ผมขอข้ามโค๊ดตรงนั้นไป และแสดงโค๊ดที่ใช้งานละกัน
ดู balance ของ wallet address
การ format unit
การต่อ Contract
อ่าน ABI แบบ human-readable จะใช้ parseAbi
แบบนี้
การ read contract จะใช้ client.readContract
ตัวอย่าง อ่าน total supply ของ USDT บน Ethereum mainnet
เอาจริงๆ สำหรับความคิดเห็นผมคือ ถ้าเราเคยใช้ web.js / Ethers.js มาก่อน มาใช้ Viem ก็ไม่ได้ยุ่งยาก หรือซับซ้อนอะไรเท่าไหร่ อาจจะมีการเขียนต่างกันเล็กน้อย แต่อ่าน Docs แปปเดียว ก็เข้าใจแล้ว ลองไปเล่นกันดูนะครับ
ตัวอย่างอื่นๆ สามารถไปอ่านเพิ่มเติมที่ Migrate from Ethers v5 to Viem และ Examples ได้ครับ
Happy Coding ❤️
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust