ในบทความที่แล้ว Alice และ Bob ได้สร้างช่องทางการชำระเงินแบบสองทาง ตอนนี้ Alice ต้องการจ่าย 1 btc ให้กับ Carol บุคคลที่สาม

โดยทั่วไปแล้ว อลิซและแครอลจำเป็นต้องเปิดช่องทางการชำระเงินระหว่างกัน แต่ในความเป็นจริงมันไม่จำเป็น เนื่องจากมีช่องทางระหว่างบ๊อบกับแครอลอยู่แล้ว อลิซจึงสามารถจ่ายแครอลผ่านบ๊อบได้

โดยเฉพาะอย่างยิ่ง อลิซสามารถจ่าย Bob 1 btc และ Bob จ่าย 1 btc ให้กับ Carol

อย่างไรก็ตาม อลิซไม่เชื่อใจบ๊อบ หรือแครอลไม่เชื่อใจบ๊อบ เธอกังวลว่าหลังจากที่มอบเงินให้บ๊อบแล้ว บ็อบจะไม่ให้แครอล หรือเขาให้เงินแก่แครอล แต่แครอลโกหกว่าเขาไม่เห็นเงินเลย และอลิซไม่รู้ว่าจะไล่ตามใคร .

ดังนั้น อลิซต้องการให้แน่ใจว่าเฉพาะเมื่อ Bob ให้ Carol 1 btc เธอต้องจ่าย Bob 1 btc

เมื่ออลิซต้องการจ่ายแครอล 1 btc เธอขอให้แครอลสร้างค่าลับก่อน (ชุดตัวเลขสุ่ม) และส่งค่าแฮชที่สอดคล้องกันให้เธอ อลิซยังบอกแครอลว่าเขาสามารถแลกเปลี่ยน 1 btc กับ Bob ด้วยมูลค่าลับนี้ได้

ในเวลาเดียวกัน อลิซส่งค่าแฮชที่ได้รับจากแครอลให้บ็อบ และบอกบ๊อบว่าถ้าบ็อบสามารถให้ค่าดั้งเดิมที่สอดคล้องกับค่าแฮชนี้ เธอจะให้บ๊อบ 1 btc (แน่นอนว่าค่าดั้งเดิมนี้เป็นของแครอลเท่านั้น) ).

ดังนั้น Bob จึงหา Carol และแลกเปลี่ยน 1 btc เป็นค่าเริ่มต้นของ Carol

จากนั้น Bob เรียก Alice และระบุค่าเริ่มต้นนี้ อลิซจึงรู้ว่าบ๊อบต้องให้เงิน นั่นคือ แครอลต้องได้รับ 1 btc ดังนั้นเธอจึงมอบเงินให้บ๊อบ

ทุกคนมีความสุข

เกือบ อ่า เกือบทุกคนมีความสุข

ในสถานการณ์ “ละครเวที” นี้ บ๊อบคนกลางยังคงต้องการอลิซและแครอลที่มาใหม่ บ็อบต้องเชื่อว่าสิ่งที่แครอลมอบให้เขาเป็นค่าที่มีประโยชน์จริงๆ (ไม่เช่นนั้นเงินจะไม่ได้รับคืน) และเขาต้องเชื่อว่าอลิซจะให้ 1 btc แก่เขาจริงๆ หากเขาสามารถให้ภาพต้นฉบับที่สอดคล้องกับค่าแฮชได้

ในขณะนี้ เราต้องการ Hash Time Lock Contract (HTLC)

สัญญาล็อคเวลาแฮช

การล็อกเวลาแฮชทำให้ Alice และ Bob สามารถแลกเปลี่ยน btc ด้วยค่าลับได้ (แน่นอนว่า Bob และ Carol ก็ต้องการสิ่งนี้เช่นกัน แต่เราจะไม่พูดถึงมันก่อน)

เพื่อที่จะใช้การล็อกเวลาแฮช อลิซต้องการส่ง 1 btc ไปยังที่อยู่แบบหลายลายเซ็นใหม่ แทนที่จะส่งไปยัง Bob โดยตรง btc ที่ถูกล็อคในที่อยู่นี้สามารถปลดล็อคได้สองวิธี

วิธีแรกคือให้ Bob ส่งลายเซ็นและค่าลับของเขาไปยังที่อยู่นี้

วิธีที่สองคือให้อลิซส่งลายเซ็นของเธอไปยังที่อยู่นี้ อย่างไรก็ตาม วิธีนี้มีข้อจำกัดการล็อกเวลาของ CLTV: Alice ต้องรอช่วงเวลาหนึ่ง (เช่น สองสัปดาห์) ก่อนลงนามและเผยแพร่ธุรกรรมเพื่อนำ btc ออกไป

กล่าวอีกนัยหนึ่ง Bob มีเวลาสองสัปดาห์ในการสร้างธุรกรรมที่มีลายเซ็นและมูลค่าลับ ออกอากาศธุรกรรม และส่ง btc ไปยังที่อยู่แบบหลายลายเซ็นถึงตัวเขาเอง ด้วยวิธีนี้รับประกันการทำธุรกรรม ตราบใดที่ Bob สามารถให้ข้อมูลลับได้ เขาก็สามารถเอา btc ของ Alice ออกไปได้: การแพร่ภาพธุรกรรมแบบสาธารณะบนเครือข่าย Bitcoin ทำให้ Alice มองเห็นได้

หาก Bob ไม่ได้ระบุค่าลับภายในระยะเวลาที่กำหนด อลิซสามารถเรียกข้อมูล btc ของเธอได้ มันง่ายมาก

กลับไปที่เครือข่าย เพราะนี่คือจุดเริ่มต้นของสัญญาล็อคเวลาแฮช

ดังที่กล่าวไว้ข้างต้น ไม่เพียงแต่สัญญาล็อกเวลาแฮชระหว่างอลิซกับบ็อบเท่านั้น แต่ยังรวมถึงระหว่างบ็อบกับแครอลด้วย ดังนั้น หากแครอลขอ btc ของบ๊อบ บ็อบก็สามารถรับค่าลับจากแครอลได้เช่นกัน ทั้งหมดนี้มองเห็นได้บนบล็อคเชน

ดังนั้น หากเกิดเหตุการณ์นี้ Bob จะได้รับ 1 btc จาก Alice อย่างแน่นอน บ็อบสามารถเผยแพร่ค่าลับที่ได้รับจากแครอลบนเชน แล้วส่งไปยังสัญญาล็อกเวลาแฮชระหว่างเขากับอลิซ จากนั้นนำ 1 btc ออกจากที่อยู่ที่มีลายเซ็นหลายลายเซ็น ช่องทางของรัฐทั้งสองมีการเชื่อมโยงกันอย่างมีประสิทธิภาพ

จุดสุดท้ายที่ต้องเน้นคือ Bob ต้องได้รับค่าลับจากแครอลภายในระยะเวลาที่มีผลบังคับใช้ มิฉะนั้น Alice อาจได้รับคืน 1 btc จากที่อยู่แบบหลายลายเซ็น หาก Bob ได้รับค่าลับจากแครอลหลังจากที่อลิซได้รับ 1 btc บ๊อบก็จะติดอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออก ดังนั้น สัญญาล็อกเวลาแฮชของ Bob และ Carol ต้องหมดอายุเร็วกว่าสัญญาของ Alice และ Bob (เช่น สามารถตั้งค่าขีดจำกัดเวลาของสัญญาแบบเดิมเป็น 10 วันแทนที่จะเป็นสองสัปดาห์) นี่คือเหตุผลที่สัญญาล็อกเวลาแฮชต้องใช้ CheckLockTimeVerify (ล็อกเวลาสัมบูรณ์) แทน CheckSequenceVerify (ล็อกเวลาสัมพัทธ์)

ในที่สุดก็มีปัญหาที่ต้องแก้ไข: เพื่อให้แน่ใจว่า Lightning Network พร้อมใช้งาน สิ่งเหล่านี้จะต้องทำนอกเครือข่าย วิธีการบรรลุสิ่งนี้จะถูกเปิดเผยในบทความที่สามของชุดนี้

By macca