อ้างอิงจาก
https://docs.chia.net/docs/12rpcs/rpcs
เคยสงสัยไหมครับว่า web ต่างๆ เช่น xchscan หรือ chiaexplorer เขารู้ได้ยังไงว่าตอนนี้ height มันอยู่ที่เท่าไร netspace อยู่ที่เท่าไร หรือ transaction ของแต่ล่ะ wallet id มีจำนวนเงินเข้าเงินออกกันยังไง … น่าสงสัยไหมครับว่าพวกเขารู้กันได้ยังไง … วันนี้เราจะลองทำตัวเลียนแบบพวกนี้กันดูครับ
ก่อนอื่นต้องเข้าใจตรงกันก่อนว่า full node ของ chia blockchain เป็น decentralized database 100% … node ใดๆ ก็ตามที่ต้องการจะทำกิจกรรมกับ chia blockchain จำเป็นจะต้อง sync database ให้ครบถ้วนเสียก่อน ดังนั้นตัว full node ทุกตัวบนโลกก็จะมี data เหมือนๆ กัน … นั้นคือ xchscan หรือ chiaexplorer ก็มี full node รันอยู่ด้วยก็เลยสามารถ query data ใดๆ ที่เป็นข้อมูลของ blockchain ได้นั้นเอง … หรือแม้กระทั่ง farmer อย่างเราๆ ก็สามารถดึง data จาก blockchain ที่เครื่อง farm ของเราได้เช่นกัน …
น่าสนใจ … ลองนึกดูนะครับถ้าเราจะเขียนโปรแกรมดึงข้อมูล wallet ID ของเราหรือแม้กระทั่ง check status ของเครื่อง farm สามารถทำได้โดยที่ไม่ต้องไปแกะ log file เลย … มาดูกันครับว่าสามารถทำได้ยังไง
ก่อนอื่นเรามารู้จักคำว่า API ก่อน …
API คือ Application Programming Interface เป็น interface สำหรับเอาไว้ให้ชาวบ้านเขียนโปรแกรมติดต่อกับระบบหลังบ้าน ในที่นี้คือ chia blockchain … นั้นหมายถึงว่าเราสามารถดึงข้อมูลต่างๆ ของ chia blockchain ผ่าน API ตัวนี้
มันจะมีโปรแกรมง่ายๆสำหรับเอาไว้ติดต่อ API เพื่อดึงข้อมูลหลังบ้านมาใช้ … แต่ถ้าเก่งพวก REST API ก็สบายหน่อยเขียนเป็นโปรแกรมเอามาแสดงผลทำ interface สวยๆ ได้สบายๆ … แต่บทความนี้ไม่ได้สอน programmer เราสอน ชาว farmer ดังนั้นไม่จำเป็นต้องเก่ง programming ก็ได้ … เราใช้เครื่องมือง่ายๆ ก็พอเช่น curl … ก่อนอื่น download curl สำหรับ windows ได้ที่ https://curl.se/windows/ เมื่อ load เสร็จแล้ว ลองเปิด command windows แล้วพิพม์คำสั่ง curl –version ดูครับ
มาดู document ของ chia เขาจะแบ่ง API ออกเป็น 2 ส่วน คือ chia RPC API กับ FULL node API
chia RPC API หรือ Remote Procedure Call API เป็น API ที่เราเอาไว้ติดต่อกับ API ของ server อื่นๆ ในกรณีที่เราไม่มี full node เป็นของตัวเองเช่นเราไม่ใช่ farmer หรือเราไม่ได้ลงโปรแกรม chia แต่เรายังต้องการดูข้อมูลของ chia blockchain ก็สามารถไปขอ data ก้อนนี้กับ server ที่อนุญาติให้ดึงข้อมูลได้ ... มันมีหลาย server มากเลยนะครับที่มี API ให้เราดึงข้อมูลออกมาได้ .... แต่ในที่นี้เราจะใช้ API ของ xchscan กัน .. โดย xchscan เขามีคู่มือการดึง data มาให้ที่ https://xchscan.com/rest-api ลองเปิดผ่าน browser ดูครับ ...
เราลองมาดู API ที่ชื่อ Get Chia Netspace กัน ... ซึ่ง API ตัวนี้ก็บอกอยู่แล้วว่า เอาไว้ check Netspace ของ blockchain
กลับมาที่ command windows ของเรา ... ลองพิพม์คำสั่ง
curl https://xchscan.com/api/netspace
ตัว server ก็จะ return current Netspace กลับมาให้ครับ โดยมีหน่วยเป็น bytes ... เราจะต้องแปลงเป็น EiB หรือ TiB เอาเองครับ
เราสามารถลองใช้ command อื่นๆ ดูได้ครับที่หน้า https://xchscan.com/rest-api
curl เป็นแค่ single command เพื่อดึงข้อมูลมาแค่ครั้งเดียว ... ถ้าต้องการดึงแบบ real time หรืออัตโนมัติต้องเขียนเป็นโปรแกรมและสามารถเขียนโปรแกรมโดยใช้ API ของเจ้าอื่นๆ ได้เช่น https://github.com/Chia-Mine/chia-agent หรือ https://github.com/freddiecoleman/chia-client
curl --insecure --cert ~/.chia/mainnet/config/ssl/full_node/private_full_node.crt
--key ~/.chia/mainnet/config/ssl/full_node/private_full_node.key
-d '{}' -H "Content-Type: application/json"
-X POST https://localhost:8555/get_network_info | python3 -m json.tool
curl --insecure --cert ~/.chia/mainnet/config/ssl/full_node/private_full_node.crt
--key ~/.chia/mainnet/config/ssl/full_node/private_full_node.key
-d '{}' -H "Content-Type: application/json"
-X POST https://localhost:8555/get_network_info





ไม่มีความคิดเห็น:
แสดงความคิดเห็น