ทำ subscribe event ง่ายๆ เมื่อมีคนโอน token (USDT)
สวัสดีครับ บทความนี้เป็นตัวอย่างการทำ Subscribe events Token หรือจะใช้กับ NFT ก็ได้ โดยเมื่อเราได้รับ event เราก็สามารถแจ้งเตือน Push Notification, ส่ง email, Post Slack , Discord, Telegram หรือ LINE ก็แล้วแต่เราเลย
บทความนี้ ผมใช้ Viem นะครับ เนื่องจากลองเปลี่ยน Tool จาก Ethers.js ดู โดยการเชื่อมต่อผ่าน JSON RPC
ตัวอย่าง ผมจะลองทำการ subscribe event ของ token ผมเลือกเป็น USDT
- Contract Address : 0xdac17f958d2ee523a2206206994597c13d831ec7
โดยปกติ ERC-20 หรือ ERC-721 มักจะมี event Transfer
อยู่แล้ว ตัว ABI ด้านล่าง คือ สิ่งที่เราจะต้องใช้เวลา subscribe event.
ทำการ Connect JSON RPC ด้วย createPublicClient
ทำการ subscribe event Transfer
โดยผมทำการ log เอาเฉพาะ _from
, _to
และ _value
มาแสดง (ค่า args คือ argument ของ event ABI เรา)
แต่ละ block ก็จะมี transaction ของ USDT ประมาณนี้ ( _value
ของ USDT ใช้ 6 decimal places)
ซึ่งตัว log จริงๆ มันจะไม่ได้มีแค่ args มี address
, topics
, data
, txHash
, blockHash
เป็นต้น
ถ้าไม่มี args
result มาให้ เราสามารถ decode event log ได้ ประมาณนี้
เมื่อลองเทียบ Viem กับก่อนหน้านี้ที่ใช้ Ethers.js ในการ subscribe events ก็จะเป็นแบบด้านล่าง
สรุป
ก็เป็นตัวอย่างง่ายๆ ในการ subscribe event ของ Contract ที่เราต้องการ โดยใช้ Viem เนื่องจากช่วงนี้กำลังลองหัดใช้อยู่
นอกจากนี้เรายังสามารถ subscribe event NFT หรือพวก Dex, Router ต่างๆ ได้ เช่น Uniswap แล้วเลือก filter event swap เป็นต้น หรืออย่าง NFT ก็เลือก event Mint (จริงๆ ก็คือ Transfer) สิ่งที่ต้องรู้ก็คือ Contract Address, Event ที่ต้องการ แค่นั้น
Happy Coding ❤️
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust