Cover photo

Smart Contract Indexing ผู้ที่ช่วยให้คุณสร้างตารางข้อมูลใหม่ขึ้นได้ โดยอ้างอิงจากอีเวนต์บน smart contract

Smart Contract Indexing

  • สร้างตารางข้อมูลที่กำหนดเองได้จากอีเวนต์บน smart contract ของคุณ Space and Time ประกาศการเปิดตัวระบบ smart contract indexing: ซึ่งเป็นฟีเจอร์ใหม่บนบริการ blockchain indexing ของเรา ที่ช่วยให้คุณสร้างตารางข้อมูลใหม่ขึ้นได้ โดยอ้างอิงจากอีเวนต์บน smart contract ของคุณ เพียงแค่ระบุ contract address

ระบบนี้คืออะไร และถูกสร้างมันขึ้นมาทำไม

  • เวลาที่คุณพัฒนาโปรเจกต์ด้วย Space and Time คุณจะเข้าถึงข้อมูลบน blockchain ได้อย่างครอบคลุม ที่เราได้ทำการ ZK-indexed จากบล็อกเชนหลักๆ ไว้แล้วแบบเรียลไทม์ เมื่อเทียบกับระบบ indexing อื่นๆ แล้วของเราจะเร็วกว่า มีเสถียรภาพกว่า ปรับขนาดได้ รองรับ ZK และสำคัญที่สุดคือมีความสามารถในการ index ทั้งเชนได้เลย เนื่องจากเราใช้ระบบคลัสเตอร์ของ data warehouse ขนาดใหญ่ (ไม่ใช่แค่ระบบ PostgreSQL) เราจึงสามารถเก็บข้อมูลได้หลายสิบเทราไบต์ต่อคลัสเตอร์ อย่าง Ethereum เองก็สร้างข้อมูลสำคัญประมาณ 2TB ต่อปีแล้ว และ Ethereum ยังถือว่าเป็นบล็อกเชนที่เล็กมากเมื่อเทียบด้านปริมาณข้อมูลกับเชนอื่น

  • ระบบ indexing ของเราให้บริการทั้ง chain-level data (ข้อมูลเช่น wallets, transactions, contracts, blocks, token transfers ฯลฯ ซึ่งเป็นข้อมูลทุกอย่างของเชนตั้งแต่บล็อกแรกสุดจนการทำ indexing เสร็จสมบูรณ์) ที่ถูกจัดเก็บไว้ใน “core” tables รวมถึงชุดข้อมูลจากโปรโตคอลต่างๆ เช่น Aave, Uniswap, Opensea, dYdX, หรือ price feeds แต่เราก็เข้าใจว่าบางครั้งนักพัฒนาต้องการเข้าถึงข้อมูลเกี่ยวกับอีเวนต์ที่เกิดบน smart contracts ของตัวเอง และเราอยากทำให้กระบวนการนี้ง่ายขึ้น ไม่ต้องไปยุ่งกับ core tables ของเรา

  • วันนี้เราจึงขอประกาศการเปิดตัว ระบบ smart contract indexing นอกเหนือจากระบบ SxT indexing ปัจจุบัน ผู้ใช้งานสามารถระบุลิสต์ของ smart contracts เพื่อทำการ index และ Space and Time จะสร้างชุดตารางข้อมูลใหม่ ขึ้นมาจากอีเวนต์ของ smart contracts ที่เลือกไว้ อีเวนต์ที่เกิดขึ้นจะถูกเขียนไว้ในตารางข้อมูลใหม่ และสามารถทำการ query ร่วมกับข้อมูลอื่นๆ หรือแม้แต่ offchain data รวมถึงยังทำ ZK proven ได้อย่างรวดเร็วภายในเสี้ยววินาที ระบบนี้ทำให้นักพัฒนาสร้างแอปพลิเคชั่นที่ปรับแต่งได้อย่างละเอียด มีประสิทธิภาพ และซับซ้อน โดยดึงเอา chain-level data, protocol-specific data, offchain data และข้อมูลจาก smart contract events ของเรา ไปใช้ได้อย่างรวดเร็ว และมีรูปแบบ ZK-proven

ระบบทำงานอย่างไร

  • การดึงข้อมูลจาก smart contract events ของคุณเอง การ index smart contract ของคุณทำได้ง่ายๆ เพียงระบุ contract address ใน Space and Time Studio

    1. ล็อกอินเข้า Studio และไปที่ปุ่ม “Get data from chain” ภายใต้แท็บ “Smart Contracts” ในเมนูหลัก

    2. เลือกเชนที่ contract อยู่ และใส่ address เข้าไป

    3. ตรวจสอบตารางข้อมูลที่ถูกสร้างขึ้นมาโดยข้อมูลบนเชนช่วงล่าสุด และเลือกเพื่อทำการ index

  • แค่นี้เอง! เราจะดึง ABI มาใช้ โดยจะสร้างตารางสำหรับแต่ละ smart contract event ขึ้นมาอัตโนมัติ และจะคอยอัปเดตข้อมูลไปเรื่อยๆ

post image

ระบบ blockchain indexing ของ SxT ทำงานอย่างไร

  • เราสร้างระบบ indexer ประสิทธิภาพสูงด้วยภาษา Rust ที่ดึงข้อมูลทุก smart contract event ในแต่ละ transaction ภายในบล็อกออกมาได้ในลักษณะที่ตรวจสอบยืนยันได้ โดยเริ่มจากการ poll หลายๆ RPC node สำหรับแตล่ะเชน และตรวจสอบความถูกต้องของข้อมูลที่ได้รับจากแต่ละ RPC node จากนั้น indexer จะทำการ decode ข้อมูลผ่านทาง smart contract ABIs ที่เราเก็บไว้ จากนั้นข้อมูลจะถูกเปลี่ยนให้อยู่ในรูปแบบตารางที่สามารถ query ได้ง่าย และถูกโหลดเข้าไปใน data warehouse ซึ่งเป็นสำเนาที่ตรงเป๊ะกับข้อมูลปัจจุบันบนเชน เวลาที่คุณระบุ smart contract เพื่อทำการ indexing อีเวนต์ที่เกิดขึ้นจะถูกเขียนขึ้นในตารางใหม่ที่คุณกำหนดไว้ กระบวนการทั้งหมดจะเสร็จสิ้นภายในเวลาของแต่ละบล็อก

  • บริการ indexer ทำงานได้จาก binary เดียวซึ่งเขียนด้วย Rust ดังนั้นขณะที่ Space and Time ทำการกระจายศูนย์ เรามีแผนที่จะเพิ่ม light node เข้าไป เพื่อให้ indexers (validators) สามารถทำการ index แต่ละเชนได้ และส่ง commitments เกี่ยวกับข้อมูลที่ทำการ index ไปยัง Transaction nodes สำหรับทำ consensus สถาปัตยกรรมนี้มีรายละเอียดใน whitepaper ของเรา แต่โดยสรุปคือระดับของ Transaction node จะรับผิดชอบเรื่อง BFT consensus ส่วนระดับ indexing nodes (เรียกว่า Validators) จะทำหน้าที่ decode และเปลี่ยนข้อมูลดิบจาก blockchain ที่ดึงผ่าน RPC และสร้างข้อมูล cryptographic commitments ที่ใช้ในภายหลังเพื่อ ZK-proof verification commitments และข้อมูลที่ผ่านการ index แล้วจะถูกส่งไปยัง Transaction nodes เพื่อสร้าง consensus จาก indexing nodes (validators) ที่ทำการ index ในแต่ละเชน

ระบบนี้เปิดโอกาสให้ทำอะไรต่อได้บ้าง

  • ปรับแต่งได้ ยืดหยุ่น: นักพัฒนา Web3 มักทำงานกับ smart contracts ที่มีรูปแบบเฉพาะตัว และสร้างอีเวนต์ที่สำคัญต่อการทำงานของแอปพลิเคชั่น บริการ indexing อื่นๆ อาจไม่ครอบคลุมอีเวนต์พิเศษเหล่านี้ ซึ่งจำกัดความสามารถในการพัฒนา dapps ที่ปรับแต่งได้เต็มที่ และตอบสนองรวดเร็วเท่าที่ควร ดังนั้นการเพิ่มขอบเขต indexing ของ Space and Time จึงแก้ปัญหานี้ได้ โดยเปิดโอกาสการทำ index ของอีเวนต์เฉพาะให้เกิดขึ้น

  • ปรับขยายได้: การจัดการและประมวลผลข้อมูลบน blockchain ด้วยตัวเองอาจต้องการทรัพยากรมาก ต้องมีโครงสร้างที่ใหญ่โต และความเชี่ยวชาญเฉพาะด้าน การ outsource ข้อมูล indexing นี้ให้ Space and Time ทำให้ นักพัฒนาสามารถปรับขยายแอปพลิเคชั่นได้อย่างมีประสิทธิภาพยิ่งขึ้น

  • เข้าถึงข้อมูลได้ดีขึ้น: การเข้าถึงและ query ข้อมูลบน blockchain อาจซับซ้อนและกินเวลา บริการนี้จะทำให้กระบวนการง่ายขึ้น โดยให้ข้อมูลในรูปแบบตารางที่ query ได้ง่าย ทำให้ดึงข้อมูลออกมาใช้ รวมถึงทำการเชื่อมเข้ากับแอปพลิเคชั่นได้ดีขึ้น

แหล่งที่มาของข้อมูล:

https://www.spaceandtime.io/blog/smart-contract-indexing