DeepBook The Backbone of Sui DeFi Liquidity EP.1
Understanding OrderBook Infrastructure on Sui

DeFi เคยได้ยินคำนี้ไหมครับ DeFi ย่อมาจาก Decentralized Finance เป็นระบบการเงินเเบบไร้ศูนย์กลาง ถ้าเทียบกันให้เห็นภาพ ก็เหมือนกับการใช้บริการทางด้านการเงินกับทางธนาคาร ซึ่งเราจะต้องไป ยื่นเอกสารต่างๆ เพื่อขอเปิดบัญชี อาจจะไว้ ฝาก ออม หรือกู้ ใช่ไหมโดยทั้งหมดจะดูแลผ่านธนาคาร แต่ในโลกของ Web 3.0 นั้นแตกต่างไปจากนั้น เพราะไม่มีตัวกลางนั้นเอง ขอเเค่เรามีกระเป๋าเงิน เช่น Metamask, Rabbit wallet หรือ SUI Slush เราก็สามารถเข้าถึงบริการต่างๆได้ทันที โดยไร้ตัวกลาง โดยการทำงานทุกอย่างจะถูกกำหนดผ่าน Smart Contract นั้นเอง DeFi ตอนนี้ไม่ใช่เรื่องใหม่เเล้ว แต่เป็นผลิตภัณฑ์ทางการเงินที่ได้รับการยอมรับอย่างเป็นทางการ ในระดับสถาบันทางการเงินกันเลยทีเดียว
เกริ่นไว้แค่นั้นพอเเหละ เดียวจะยาวที่พูดถึงเรื่องนี้ เพราะสัญญาเอาไว้ว่าจะเขียนบล็อคเกี่ยวกับ DeFi บน SUI network ซึ่งถ้าพูดถึงเรื่องนี้ ก็จะไม่พูดถึง DeepBook ไม่ได้ โดยที่
DeepBook คือระบบซื้อขายแบบ Decentralized Central Limit Order Book (CLOB) บน SUI Network ที่ออกเเบบมาเพื่อการทำงานที่มีประสิทธิภาพสูง มีความเร็วนั้นเอง เพราะอาศัยการประมวลผลเเบบคู่ขนาดของ SUI ในการทำงาน ควบคู่ไปกับข้อดีในเรื่องค่าธรรมเนียมที่ต่ำ ซึ่งตัว DeepBook นั้นเป็นชุดพัฒนา ไม่ได้มี Interface ให้เราใช้งานนะ แต่จะมีพวกโครงสร้างพื้นฐานต่างๆให้เราสามารถนำไปใช้งานต่อยอดได้
CLOB คือระบบจับคู่คำสั่งซื้อขายที่ใช้กันอย่างแพร่หลายในตลาดซื้อขายแบบดั้งเดิมและศูนย์ซื้อขายคริปโตทั่วๆไป (เช่นตลาดหุ้นหรือ CEX) โดยผู้ใช้งานสามารถกำหนด ราคาที่ต้องการซื้อหรือขายล่วงหน้า ได้ผ่านคำสั่งที่เรียกว่า Limit Order ระบบจะนำคำสั่งซื้อ (Bid) และคำสั่งขาย (Ask) ใครเคยเทรดหุ้นมาบ้างก็พอจะเห็นภาพเน้อ เช่น เราต้องการซื้อหุ้น A ที่ราคา 20 บาท เราก็ส่งคำสั่งซื้อเข้าไปในระบบนั้นเอง
การทำงานเเละโครงสร้างพื้นฐานของ DeepBook
DeepBook ถูกออกเเบบให้มีการทำงาน 3 องค์ประกอบดังต่อไปนี้
Pool
แทน ตลาดซื้อขายนั้นเอง เช่น SUI/USDC นั้นคือตลาดซื้อขายเเลกเปลี่ยน Token SUI กับ Stable token USDC โดยเป็น shared object ที่ผู้ใช้งานและแอปพลิเคชันต่าง ๆ สามารถเรียกใช้งานร่วมกันได้ ภายใน Pool จะรวมทุกสิ่งที่จำเป็นต่อการทำงานของ orderbook ไว้ในที่เดียว โดย Pool ถูกออกแบบให้แบ่งหน้าที่ภายในออกเป็นส่วนย่อย ได้แก่
Book: ทำหน้าที่เก็บและจัดการ orderbook ทั้งฝั่ง bid (ราคาเสนอซื้อ) และ ask (ราคาเสนอขาย) รวมถึงการจับคู่คำสั่งซื้อขาย
State: จัดการสถานะของตลาด เช่น ค่าธรรมเนียม, ประวัติการซื้อขาย และกฎต่าง ๆ ของพูล
Vault: ดูแลการ settle และการเคลื่อนย้ายสินทรัพย์จริงหลังจากคำสั่งถูกจับคู่สำเร็จแล้ว
เมื่อมีการวางคำสั่งซื้อขายหรือทำการแลกเปลี่ยน ระบบจะประมวลผลทั้งหมดภายใน Pool แบบ atomic transaction เดียว ทำให้มั่นใจได้ว่าการจับคู่คำสั่งและการเคลื่อนย้ายสินทรัพย์จะสอดคล้องกันเสมอ
PoolRegistry
ทำหน้าที่เป็น registry กลางของระบบ DeepBookV3 โดยมีบทบาทสำคัญคือ
เก็บรายการ Pool ทั้งหมดที่มีอยู่ในระบบ
เป็นจุดอ้างอิงสำหรับแอปพลิเคชันหรือ SDK ในการค้นหา pool ที่ต้องการใช้งาน
ควบคุมการสร้าง Pool ใหม่ เพื่อให้โครงสร้างของตลาดเป็นไปตามกฎของโปรโตคอล
ด้วยการมี PoolRegistry ทำให้ DeepBookV3 สามารถขยายไปสู่หลายตลาดได้อย่างเป็นระบบ และลดความซับซ้อนในการ integrate สำหรับ dApp, wallet หรือ DEX ต่าง ๆ ที่ต้องการเข้าถึงสภาพคล่องจากหลายคู่เทรดได้
BalanceManager
เป็นองค์ประกอบสำคัญที่เชื่อมระหว่างผู้ใช้งานกับ Pool โดยทำหน้าที่เป็นบัญชีสำหรับการเทรดบน DeepBook แยกออกจากกระเป๋าปกติของผู้ใช้งาน ซึ่งต้องบอกก่อนว่าใน การเทรดทุกครั้งต้องผ่าน BalanceManager ซึ่งเป็น shared object ที่เก็บยอดเงินและใช้เป็นแหล่งเงินต้นในการวาง orders หรือ swap ในแต่ละ pool (ยกเว้นบางกรณีของ swap) และเมื่อคำสั่งถูก match แล้วระบบจะโอนเงินเข้าออก BalanceManager แทนที่จะเทรดโดยตรงกับกระเป๋าของผู้ใช้งาน
บทบาทหลักของ BalanceManager ที่สำคัญๆ คือ
เก็บยอดคงเหลือของสินทรัพย์ที่ผู้ใช้งานนำมาใช้สำหรับการเทรด
ใช้เป็นแหล่งเงินในการวางคำสั่งซื้อขาย (limit order / market order)
รับผลลัพธ์จากการจับคู่คำสั่ง เช่น เหรียญที่ได้จากการเทรด หรือยอดที่เหลือหลังจาก Partial fill
การออกแบบให้ผู้ใช้งานต้องฝากสินทรัพย์เข้า BalanceManager ก่อนเทรด ช่วยให้ระบบสามารถจัดการคำสั่งซื้อขายได้อย่างมีประสิทธิภาพ ลดความซับซ้อนของ state และรองรับการทำงานแบบขนานของ Sui ได้ดียิ่งขึ้น
มาดูตัวอย่างการทำงานกัน

อิงจากรูปนี้นะ
เราทำการฝากเงินเข้าไปที่ Balance Manager เพื่อทำการส่งคำสั่งซื้อหรือขายนั้นเอง เช่น เราบอกว่าจะขาย SUI token ก็จะเป็นการฝาก SUI เข้าไปที่ Balance Manager เป็นขั้นตอนแรก ถ้าเรายกเลิกคำสั่งซื้อเงินก็จะถูกถอนกลับมาที่กระเป๋าของเราทันที
Swap Exact/External Contract ตรงส่วนนี้จะทำให้ DEX, Router, Aggregator ต่างๆ สามารถทำการเเลกเปลี่ยนเหรียญได้ ถ้าจะให้เขาใจง่ายๆก็เหมือน Market order ละมั่ง อารมณ์แบบอยากซื้อราคาที่ตลาดตอนนี้เลย ถ้าสมมุติว่า SUI มีมูลค่า 10 บาทต่อ tokens เเล้วเรามีอยู่ 100 บาท เราไม่อยากรอให้ราคาลงมาที่ 9 บาท เราก็จะทำการ Swap Exact โดยเเค่บอกว่า เรามีเงินอยู่ 100 บาทนะ เอาไปแลก SUI ให้หน่อย ซึ่งเราอาจจะได้ SUI กลับมาไม่ถึง 10 tokens ก็เป็นได้ ไม่งงใช่ไหม
DeepBook V3 Contract ส่วนนี้จะเป็นหัวใจหลัก หน้าที่มันก็จะมีจำพวก
รับคำสั่งจากมาจาก ผู้ใช้งาน หรือ DEX ต่างๆ
จัดการ logic ของ orderbook / matching / settlement
ประสานงานกับ Pool และ Balance Manager
ทั้งหมดคือข้อมูลคร่าวๆนะ ตามไปอ่านต่อกันได้ที่ https://docs.sui.io/standards/deepbook ซึ่ง บทความถัดไปเราจะไม่เกริ่นอะไรกันละ เราจะมาเริ่มลงมือเขียนโค๊ดกัน เริ่มกันตั้งแต่ สร้าง Balance Manager การวางคำสั่งซื้อ คำสั่งขาย การอ่านค่า order book เป็นต้น ซึ่งไม่รู้จะจบในกี่ตอน ยังไงก็ฝากติดตามกันด้วยน๊า อ่อลืมบอกไปตอนนี้ DeepBook มีการเก็บคะเเนนการใช้งานด้วยนะ ซึ่งในโลกของ Web 3.0 คะแนน ย่อม หมายถึง เงินฟรี ที่อาจจะเเยกในอนาคน :P





