Saber: Continuation Router

นั่งแงะ Continuation Router ของ Saber สนุกมาก…

ปกติงานหนักบน Solana คือ คือที่ทุกๆ Instruction (ix) ต้องระบุ accounts ที่จะต้องถูก Read/Write ให้หมด (แม้ต่อ protocol คนอื่นก็ต้อง list accounts ด้วย) จะไม่มีส่วนใหญ่ที่เป็น blackbox, จำนวน accounts+addresses ต้องเป็น deterministic ตั้งแต่ตอน craft instruction ดังนั้นความยากมันคือการกำหนด จำนวน accounts ตอนสร้าง instruction แล้วแต่ละ DEX ก็อาจจะมี accounts จำนวนต่างกันอีก

แต่ Saber เขียน router ออกมาได้ค่อนข้าง generic ดีเลย program interface เดียวรองรับการ execute DEXes ได้น่าจะทุกรูปแบบ จะ wrap แล้ว implement เฉพาะ action logic เองก็ได้ เพราะ processor กับ router account จะ deserialized accounts ต่างๆ ที่จำเป็นต่อ DEX นั่นๆ ให้ (เราจะ declare ตอนทำเฉพาะส่วนของ actoin) หรือจะ pass_through เลยก็ได้ มันโยน remaining_accounts ออกไปต่อให้ได้เลย…