ข้ามไปยังเนื้อหา

Atomic Swap

Atomic swap ประสานการรับสินทรัพย์แบบมีเงื่อนไขและการขอคืนภายหลังระหว่างสองเชน แต่ไม่ได้ทำให้การยืนยันเกิดพร้อมกันหรือขจัดค่าธรรมเนียม ความเสี่ยงด้านราคา การเฝ้าติดตาม และความเสี่ยงจากเวลาหมดอายุ

อัปเดต

จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

คำตอบโดยตรง

Atomic swap เป็นโปรโตคอลแบบไม่พร้อมกันสำหรับแลกเปลี่ยนสินทรัพย์โดยไม่ให้อำนาจควบคุมธุรกรรมทั้งสองฝั่งแก่ผู้รับฝากรายเดียว ในการออกแบบ hashed timelock contract (HTLC) แบบดั้งเดิม preimage เดียวใช้รับสินทรัพย์ได้ทั้งสองฝั่ง และกำหนดเวลาที่ไม่เท่ากันช่วยรักษาเส้นทางขอคืนในภายหลัง Atomicity เป็นเงื่อนไขว่าฝ่ายที่ซื่อสัตย์ไม่ควรสูญเสียเงินต้นให้อีกฝ่ายเพียงเพราะการแลกเปลี่ยนยุติลง ไม่ได้หมายความว่าการยืนยันเกิดพร้อมกัน การคืนเงินเป็นอัตโนมัติหรือไม่มีต้นทุน ราคาตลาดยุติธรรม สภาพคล่องต่อเนื่อง หรือไม่เปิดเผยตัวตน

แต่ละ implementation ต้องผูกเชนหรือเครือข่าย สินทรัพย์และสัญญา จำนวนดิบและทศนิยม กุญแจผู้รับและกุญแจขอคืน โครงสร้าง hash ไบต์ preimage ที่ถูกต้อง สคริปต์หรือ bytecode และความหมายของ timelock ให้ชัดเจน ระบบสองระบบไม่ได้เข้ากันได้โดยอัตโนมัติเพียงเพราะมี hash และนาฬิกาทั้งคู่ absolute lock และ relative lock ของ Bitcoin, timestamp ของ EVM และ finality ของเชนอื่นอาจมีกฎต่างกันอย่างมีนัยสำคัญ

การสวอป HTLC แบบดั้งเดิมยังมอบ optionality ด้านราคาให้ฝ่ายที่ดำเนินการทีหลัง โดยฝ่ายนั้นอาจรอเพื่อตัดสินใจว่าการดำเนินการยังได้เปรียบหรือไม่ Adaptor signature และโปรโตคอลแบบ scriptless อื่นเปลี่ยนร่องรอยและสมมติฐานบนเชน แต่ไม่ได้ขจัดความจำเป็นในการตรวจสอบตัวตน เวลา ค่าธรรมเนียม liveness และการกู้คืน

กลไกการทำงาน

  1. ระบุเครือข่ายทั้งสอง สินทรัพย์ จำนวน อัตราแลกเปลี่ยน กุญแจ การเข้ารหัส hash และ preimage ไบต์ของสัญญาหรือสคริปต์ หน่วยเวลา ผู้จ่ายค่าธรรมเนียม และนโยบายการยืนยันหรือ finality
  2. สร้าง secret ใช้ครั้งเดียวที่มี entropy สูง x คำนวณ h = H(x) แบบ offline และให้ implementation ทั้งสองสร้าง digest เดียวกันจากไบต์ดิบชุดเดียวกัน
  3. ผู้เริ่มต้นให้เงินทุนฝั่งที่มีเวลาหมดอายุยาวกว่า ผู้เข้าร่วมตรวจสอบเชน สินทรัพย์ จำนวน กุญแจ hash โค้ด และกำหนดเวลา แล้วรอระดับความปลอดภัยที่ตกลงกัน
  4. ผู้เข้าร่วมให้เงินทุนฝั่งที่มีเวลาหมดอายุสั้นกว่า ผู้เริ่มต้นตรวจสอบรายการเดิมซ้ำและรอการยืนยันหรือ finality ที่กำหนด
  5. ก่อนถึงจุดตัดการดำเนินงานที่เร็วกว่า ผู้เริ่มต้นรับสินทรัพย์ฝั่งสั้นด้วย x ทำให้ preimage ที่ถูกต้องเปิดเผยในข้อมูลธุรกรรมแบบมาตรฐาน
  6. ผู้เข้าร่วมสังเกตการรับนั้น ตรวจสอบ H(x) = h แล้วรับสินทรัพย์ฝั่งยาวโดยเหลือเวลาพอสำหรับสร้างธุรกรรม broadcast กู้คืนค่าธรรมเนียม และรอ finality
  7. หากด่านใดไม่ผ่าน ให้หยุดเพิ่มความเสี่ยง หลัง timelock ที่เกี่ยวข้องครบกำหนด ต้องสร้างหรือ broadcast ธุรกรรมขอคืนด้วยตนเอง และกระทบยอดเงินต้น ค่าธรรมเนียม ระยะเวลาที่ถูกล็อก และหลักฐานจากเชน

งบเวลาหลักคือ T_long - T_short >= observation + construction + broadcast + confirmation/finality + reorg/operations buffer ค่าอย่าง 48 และ 24 ชั่วโมงเป็นเพียงตัวอย่าง ไม่ใช่พารามิเตอร์ปลอดภัยสากล Timelock เพียงเปิดใช้เส้นทางขอคืน ไม่ได้ broadcast ธุรกรรมขอคืนหรือจ่ายค่าธรรมเนียมให้

ตัวอย่าง

  • ไบต์สำหรับ hash เพื่อการสอนเท่านั้น UTF-8 abc คือไบต์ดิบ 0x616263 และ SHA-256(0x616263) = ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad การ hash ข้อความที่แสดงว่า 0x616263 จะให้ digest ต่างกัน secret ที่ใช้งานจริงต้องมี entropy เชิงเข้ารหัสและห้ามใช้ซ้ำ
  • งบเวลาหมดอายุ สมมติการขอคืนฝั่งยาวครบกำหนดที่ 48.0 h และฝั่งสั้นที่ 24.0 h หากส่งคำขอรับฝั่งสั้นที่ 22.0 h การสังเกตใช้ 0.5 h การสร้างและ broadcast ใช้ 0.5 h และการยืนยันบนเชนฝั่งยาวใช้ 1.5 h เวลาที่คาดว่าจะเสร็จคือ 24.5 h ระยะเผื่อฝั่งยาวที่เหลือตามแบบจำลองคือ 48.0 - 24.5 = 23.5 h ไม่ใช่การรับประกันการผลิตบล็อก
  • Optionality ด้านราคา ตอนตกลง 1 BTC ที่ $60,000 เท่ากับ 20 ETH ที่ $3,000 ตอนรับสินทรัพย์ BTC อยู่ที่ $63,000 และ ETH อยู่ที่ $2,800 Alice ส่งมอบ $63,000 และรับ 20 x $2,800 = $56,000 ซึ่งต่างจากตลาดขณะนั้น -$7,000 ก่อนค่าธรรมเนียม Atomicity ของโปรโตคอลไม่ได้ล็อกมูลค่าทางเศรษฐกิจ
  • บัญชีเมื่อยุติ Alice จ่าย 0.00020 BTC เพื่อให้เงินทุนและ 0.00025 BTC เพื่อขอคืน รวม 0.00045 BTC หรือ $27 ที่ $60,000/BTC Bob จ่าย 0.006 ETH เพื่อให้เงินทุนและ 0.004 ETH เพื่อขอคืน รวม 0.010 ETH หรือ $30 ที่ $3,000/ETH เงินต้นกลับมาในภายหลัง แต่ต้นทุนเครือข่ายรวมที่ขอคืนไม่ได้คือ $57 บวกค่าเสียโอกาส

ความเสี่ยง

  • ระบุโดเมนเชนหรือเครือข่ายผิด
  • ระบุสินทรัพย์ native สัญญาโทเค็น หรือทศนิยมผิด
  • ระบุจำนวน กุญแจรับ หรือกุญแจขอคืนผิด
  • อัลกอริทึม hash หรือการเข้ารหัสไบต์เข้ากันไม่ได้
  • secret มี entropy ต่ำ ถูกใช้ซ้ำ หรือเปิดเผยก่อนเวลา
  • เส้นทางรับ สคริปต์ หรือ bytecode บกพร่อง
  • เส้นทางขอคืนไม่ถูกต้อง ใช้งานไม่ได้ หรือไม่ได้ลงนาม
  • ลำดับเวลาหมดอายุกลับด้านหรือระยะเผื่อไม่พอ
  • อ่านความหมายของความสูง median time, timestamp หรือ relative lock ผิด
  • การรับฝั่งสั้นแข่งกับการขอคืนใกล้หมดอายุ
  • reorg ลบธุรกรรมให้เงินทุน เปิดเผย หรือรับสินทรัพย์
  • นโยบายการยืนยันหรือ finality ไม่เพียงพอ
  • ค่าธรรมเนียมพุ่ง ธุรกรรมถูกนำออกจาก mempool ถูก censor หรือเพิ่มค่าธรรมเนียมไม่ได้
  • การเฝ้าติดตาม RPC, indexer, wallet หรือกุญแจล้มเหลว
  • คู่สัญญาถ่วงเวลา griefing และ optionality ของเงินทุนที่ถูกล็อก
  • อัตราแลกเปลี่ยน basis และสภาพคล่องที่ดำเนินการได้เปลี่ยน
  • call บน EVM, reentrancy, gas, proxy หรือ upgrade บกพร่อง
  • พฤติกรรมของสินทรัพย์ wrapped ผู้ออกโทเค็น bridge, hook, rebase หรือค่าธรรมเนียมโอน
  • เชื่อมโยงข้ามเชนได้จาก hash จำนวน และเวลา
  • ภาษี การคว่ำบาตร กฎหมาย การเก็บบันทึก หรือการกู้คืนจากภัยพิบัติล้มเหลว

ความเข้าใจผิดที่พบบ่อย

  • Atomic หมายถึงพร้อมกัน สองเชนเดินหน้าอย่างอิสระผ่าน state machine แบบไม่พร้อมกันที่มีลำดับ
  • เมื่อยุติแล้วทุกอย่างคืนโดยอัตโนมัติ ปกติผู้ใช้ต้องรอ ส่งธุรกรรม และจ่ายค่าธรรมเนียม ความล้มเหลวด้านการติดตามหรือค่าธรรมเนียมอาจยืดเวลาล็อก
  • เชนสองเชนใดก็ตามที่มี hash และ timelock ใช้ร่วมกันได้ อัลกอริทึม การเข้ารหัส เวลา สคริปต์ สัญญา และ finality ต้องตรงกันจริง
  • Non-custodial หมายถึงไม่มีความเสี่ยงคู่สัญญาหรือราคา Griefing, optionality, ความผันผวน และการพึ่งพาการดำเนินงานยังคงอยู่
  • Atomic swap ให้สภาพคล่องและความเป็นส่วนตัว โปรโตคอลประสานเงื่อนไขการชำระ ไม่ได้สร้างราคา ความลึก คู่สัญญา หรือกิจกรรมที่เชื่อมโยงไม่ได้

หัวข้อที่เกี่ยวข้อง

แหล่งที่มา

การนำทาง

ค้นหาในวิกิ...