Wormhole คืออะไร

Wormhole เป็น Generic Message Passing Protocol ที่คอยเชื่อมต่อ Chain ต่างๆ ให้ส่ง Message หากันได้ และด้วยความที่มันเป็น Generic Message Passing Protocol นี่แหละ ที่ทำให้มันรองรับการสื่อสารข้อมูลใดๆ ก็ได้ (arbitrary data) .ซึ่งโดยทั่วไปแล้วความยากไม่ได้อยู่ที่การ Bridge ข้อมูลเพียงแต่อย่างเดียว แต่โจทย์ที่ Wormhole ต้องการแก้ก็คือ

“อยากให้ smart contract บน chain นึง สามารถ verify ข้อมูลจาก อีก chain ได้ว่าถูกต้องจริง และจะต้องสามารถรองรับ use-case ใหม่ๆ ที่จะเกิดขึ้นบน blockchain ได้ในอนาคตโดยไม่ต้องทำ app specific ทีหลัง”

การรองรับ use-case ใหม่ๆ มันก็น่าจะได้หละเพราะดูจากการที่ protocol เปิดให้ส่ง arbitary data ได้เลย ใครเขียน dapps ใหม่แล้วต้องการ bridge ก็คง design protocol มา on-top บน wormhole เองได้เลยไม่ยาก เพราะ protocol ของ wormhole แยกออกจาก application logic ที่ยุ่งเกียวกับการจัดการ Token ต่างๆ ออกจากกันอย่างชัดเจน

image
ภาพจำลอง Concept ของการ Concensus และทำ Multisig บน Wormhole (ที่มา https://github.com/certusone/wormhole/issues/147)

ในส่วนของการ Consensus, Wormhole ใช้หลักการที่เรียกว่า External Entity Validator Action Approval (EE-VAA) ที่ถูกออกแบบสำหรับให้ Validators (หรือเรียกอีกชื่อว่า Guardians) ที่อยู่ใน Wormhole Network ทำตรวจสอบ Transaction ที่เกิดจากการส่งคำขอ Bridge ข้อมูลใดๆ จาก “Chain ต้นทาง” และเมื่อเห็นว่าข้อมูล input ถูกต้อง validator ก็ sign VAA และ broadcast ผ่าน Wormhole network ไปยัง validator คนอื่นๆ เพื่อเป็นการยันยืน multisig โดย v2 นี้จะใช้ gossip p2p ใน wormhole network แทนการ submit signed VAA ไปบน Solana แบบ v1 (เค้าให้เหตุผลว่า Solana mainnet beta มันตายบ่อย) ซึ่งเมื่อจำนวนการ confirmation ถึงระดับที่ต้องการ ข้อมูลที่ถูกร้องขอจะถูก commit ไป chain ปลายทาง (กรณีที่เราทำ application on-top บน wormhole เรากำหนดค่า confirmations นี้เองได้)

เท่าที่ดู Wormhole มาชอบท่านึงของเค้ามาก คือ ตอนที่เคยทำ wrapped token จาก ETH ไป Polygon ปกติแล้ว dev ต้องไปสร้าง wrapped token ที่ Polygon ก่อนแล้วค่อยเอา pair address (contract ของเหรียญหลัก และ Wrapped) ไปบอก minter ของ polygon ให้ whitelist คู่ pair นี้พร้อมให้สิทธ์ในการ mint กับ minter ของ polygon.แต่ของ Wormhole เราไม่ต้องเตรียม Contract เลย Wormhole จะมีวิธีการที่เรียกว่า Attest คือ ครั้งแรกของการ bridge, wormhole จะให้เราส่ง metadata ของเหรียญที่ต้องการไป attest ก่อน แล้วมันจะสร้าง smart contract ที่เป็น wrapped token ที่ปลายทางให้ (ชื่อ token จะลงท้ายด้วย “(wormhole)”) หลังจากนั้นการ transfer ในครั้งต่อๆ ไปก็ไม่ต้องส่ง metadata ละ ทำให้ payload น้อยลง ประหยัดแก็ส แล้วยังดู seemless อีก แต่อาจจะมี concern เรื่อง ownership

Wormhole ตอนนี้รองรับตอน Chain ได้ประมาณนึงได้แก่ Ethereum, Solana, Terra แล้วก็ Binance Smart Chain.ปัจจุบัน Wormhole มี use-case ของการทำ Generic Message Passing ให้เห็นแล้ว คือ การต่อยอดมาทำเป็น Token Bridge ที่สามารถรองรับการ Bridge เหรียญ ERC20, ERC721, SPL และ SPL NFTs ได้ (ในเวอร์ชั่น V2 จะสามารถ Bridge เหรียญประเภท CW20 จาก Terra ได้ด้วยเช่นเดียวกัน)

สุดท้ายนี้หากผมผิดพลาดตรงไหนต้องขออภัยด้วยครับ 😅 ส่วนใครสนใจรายละเอียดลึกๆ ลองไปอ่าน design ทั้งหมดของ Wormhole ที่นี่ได้เลย https://github.com/…/8e251f4acc2a8c0809a2e18808d…/design

Leave a Reply