ลองเขียน web3 + bsc ส่องเงินในกระเป๋า interact with smart contract


ในบทความนี้มีเนื้อหาเกี่ยวกับ blockchain และการใช้งาน web3 เพื่อ interact with smart contract ตัวอย่างทั้งหมดในบทความนี้อยู่บน binance smart chain ครับ
สิ่งที่ควรรู้มาก่อน
- nodejs
- reactjs
การทำงานแบบง่าย ๆ คือเริ่มจากผู้ใช้งานกรอก wallet address แล้วกดปุ่ม Enter ในช่องค้นหาจากนั้นโปรแกรมจะเรียกใช้งาน web3 function getBalance() ในฟังก์ชั่นนี้ web3 จะส่งคำสั่งไปที่ provider หรือ blockcain node เพื่อขอข้อมูล balances ใน wallet address
web3
หากเราต้องการเรียกฟังก์ชั่นบน smart contract เราสามารถใช้ Web3.js ติดต่อกับโหนดของ Ethereum หรือ Binance ได้
จากที่กล่าว web3 ต้องเชื่อมต่อไปยัง node ของ Ethereum หรือ Binance แล้วเราจะเชื่อมต่อ node ที่ไหน ทางเลือกคือตั้ง node เองหรือใช้บริการของเว็บต่าง ๆ ที่เขาเปิดให้เชื่อมต่อฟรี ในบทความนี้ผมคงไม่ตั้ง node เองแน่นอนครับผมใช้ที่เขาแจกฟรีนี้แหละ
- node provider binance mainnet: https://bsc-dataseed1.binance.org:443
- node provider ethereum mainnet: https://mainnet.infura.io/v3/api ต้องสมัครเว็บ infura แล้วเราจะได้ api ใช้งานฟรี
หลังจากได้ node เชื่อต่อได้แล้วเรียกใช้งานฟังก์ชั่น getBalance() ก็รู้จำนวนเหรียญของ wallet address ว่ามีเท่าไหร่ จากนั้นส่วนของราคาที่จะใช้คำนวนมูลค่าผมใช้ api ของ coingecko ครับข้อดีคือสามารถใช้งานฟรีไม่ต้องสมัครอะไรเลย ดึงราคาได้หลาย exchange อีกต่างหาก https://www.coingecko.com/en/api/documentation
เรียกใช้ api ดูข้อมูลเหรียญ BNB จาก https://api.coingecko.com/api/v3/coins/binancecoin ในส่วนของ tickers จะเป็นข้อมูลแต่ละ exchange จะสังเกตุได้ว่าราคาของแต่ละตลาดไม่เคยเท่ากันเลยเราต้องใช้สูตรการหาค่าเฉลี่ยของแต่ละตลาดเอาครับ
git clone https://github.com/apisit110/deefu.git สุดท้าย ก็หวังว่าบทความนี้จะเป็นประโยชน์กับใครหลาย ๆ คนนะครับ