ดึง transaction ของ contract ลง Google Sheet แบบง่าย ๆ ใคร ๆ ก็ทำได้ ไม่ต้องโค้ดเอง
เรื่องของเรื่อง คือ มีคนลองดึง transaction มา analyze ข้อมูลต่อ แต่ว่าต้องกด export เป็น csv ออกมาทุกครั้งที่อัพเดตข้อมูล แล้วทำยังไงดีให้เราไม่ต้องเหนื่อยทำแบบนี้ซํ้า ๆ
ตอนนี้ก็จบกันไปแล้ว สำหรับกิจกรรม Lucky Box รอบแรกของทาง Tripster ที่เราสามารถซื้อกล่องเพิ่มเติมได้บนเชน Optimism และ Arbitrum
แล้วหนุ่ม ๆ ทีม contribute ลองดึง transaction data มาดู ซึ่งต้อง download csv มา analyze data แบบ manual บน Excel แถมมีการเอาไปใช้กับ Power BI ด้วย ทางเราก็เลยหาวิธีทำแบบ auto เอา จะได้ไม่ต้องกด export ออกมาบ๊อยบ่อย
ตอนแรกก็คิดเวย์แบบดึง API แล้ว plug ใส่ไหม พออ่าน document แล้วรู้สึกมีวิธีที่ง่ายกว่านั้นมาก แค่เข้าใจการทำงานนิดหน่อยก็ทำได้เลย แล้วทำยังไงล่ะ ไปดู
ขั้นตอน
- สมัคร account ของเชนต่าง ๆ ที่เราต้องการ ในที่นี้ Optimism และ Arbitrum คือคนละเชนกัน ดังนั้นสมัครทั้งสองเว็บเลย สามารถอ่านได้ที่นี่เลย
- create API key เพื่อเอามาเรียกใช้ในการดึงข้อมูลต่าง ๆ จาก API วิธีการสร้าง ดูจากอันนี้
- สร้าง Google Sheet และใส่โค้ดตามตัวอย่างใน document
- เรียก API เส้นที่เราต้องการ
ปล. document ของ Optimism และ Arbitrum คือแทบจะเหมือนกันเลยนะ มีต่างกันแค่ url endpoint เท่านั้น
สร้าง Google Sheet ขึ้นมา
วิธีการเราสรุปจาก document จะประมาณนี้
- สร้าง Google Sheet มาอันนึง
- ไปที่
Extensions
→Apps Script
- เพิ่มไฟล์ใหม่ copy code
importJSON.gs
มา กดเซฟ - เพิ่มอีกไฟล์นึง copy code
AutoRefresh.gs
แล้วกดเซฟ - สร้าง trigger ขึ้นมา เรียกใช้ function importJSON ให้มัน refresh ทุกนาที ซึ่งเจ้า function นี้เราจะใช้ใน Google Sheet ต่อไป
สำหรับ document ดูได้ที่นี่
เรียกใช้ API ที่เราต้องการ บน Google Sheet
วิธีการทำ
- สร้างชีทขึ้นมาใหม่
- ใส่คำสั่ง
=importJSON
โดยเปลี่ยนเป็นเส้น API ที่เราต้องการใน parameter แรก ของคำสั่งนี้
ในที่นี้เราจะดึง transaction ของ contract ที่กดซื้อ Lucky Box ขึ้นมา อ้างอิงจากอันนี้ ซึ่งของ OP และ ARB ต่างกันแค่ API route เท่านั้น ที่เหลือเหมือนเดิม
อันนี้ตัว endpoint url ของอันนี้
https://api-optimistic.etherscan.io/api
?module=account
&action=txlist
&address=0x2479B47559f85B79894553f776529847E5bB389A
&startblock=0
&endblock=99999999
&page=1
&offset=10
&sort=asc
&apikey=YourApiKeyToken
แล้ว parameter แต่ละตัว คืออะไร
- address: ในที่นี้คือ address ของ smart contract ที่เราต้องการ ค่าในที่นี้คือ
0x1966d22d2906FD61e8C2C5A9819f5b6d3CfB86dc
- startBlock: เราจะดึงข้อมูล transaction เริ่มจาก block ไหน
- endBlock: เราอยากจะจบที่ block ไหน / ซึ่งในที่นี้เราไม่ใส่สองอันนี้ เพราะตอนแรกที่ทำไม่รู้ว่าจบที่ block ไหน
- offset: จะ return ข้อมูล max ที่ 10,000 นะ เราใส่เอาว่าอยากได้เท่าไหร่
- sort: การเรียงข้อมูล ค่าที่ใส่ได้จะมี asc เก่าสุดอยู่บน desc ใหม่สุดอยู่บน
- apiKey: ค่า
YourApiKeyToken
อันนี้ก็ใส่ API key ที่เราสร้างไว้ตอนแรกลงไป
ดังนั้น cell แรกของชีทใหม่ เราเอาเส้น API มาใส่ใน parameter ช่องแรก แบบนี้
=ImportJSON("https://api-optimistic.etherscan.io/api?module=account&action=txlist&address=0x1966d22d2906FD61e8C2C5A9819f5b6d3CfB86dc&page=1&offset=5000&sort=desc&apikey=YourApiKeyToken", "/result", "allHeaders", AutoRefresh!$A$1)
สามารถเอาข้อมูล transaction ที่ได้ มา analyze ด้วย Pivot Table
พอเราได้ข้อมูลที่เกือบจะ real-time มาแล้วนั้น เราจะต้องลอง analyze ข้อมูลที่เราต้องการคร่าว ๆ ว่า แต่ละเชนมีคนกดทั้งหมดกี่ transaction ใครกดเยอะสุด กดกันเท่าไหร่ แต่เรายังไม่ได้คำนวณค่าใช้จ่ายในการกดกล่องของแต่ละคน และ แต่ละคนได้ไปทั้งหมดกี่กล่อง แหะ ๆ
ตัวตารางเราใช้ Pivot Table มาลองสรุปดูแหละ ว่าแต่มีคนเข้าร่วมเท่าไหร่ กด transaction กันไปกี่ครั้ง โดยให้ Row เป็น From คือมาจาก address ไหน และ Value เรานับ count ของ timestamp เป็นจำนวน และเปอร์เซ็นต์ เป็น grand total ทั้งหมด
และก็สรุปเป็นกราฟออกมาแบบนี้แหละ ใครมีวิธีดี ๆ ก็มาบอกกันได้เนอะ
ส่วนจำนวนการเข้าร่วม Lucky Box รอบแรกของ Tripster เป็นดังนี้
- Optimism: 4246 transaction, 194 address
- Arbitrum: 247 transaction, 101 address
ทั้งหมดก็จะประมาณนี้เนอะ ที่ลองทำ
ไฟล์ Google Sheet สามารถดูได้ที่นี่เลย
สามารถกด report ที่ทวิตนี้ได้เลย แนะนำให้ติดตาม เพื่อไม่พลาดเนื้อหาดี ๆ ก่อนใคร
ติดตามข่าวสารตามช่องทางต่าง ๆ และทุกช่องทางโดเนทกันไว้ที่นี่เลย
ติดตามข่าวสารแบบไว ๆ มาที่ Twitter เลย บางอย่างไม่มีในบล็อก และหน้าเพจนะ