คำอธิบายง่ายๆ ของการต่อช่องสัญญาณ
โดยแก่นแท้แล้ว "การประกบ" เป็นแนวคิดที่เรียบง่าย นั่นคือ ความสามารถในการปรับขนาดช่องสัญญาณฟ้าผ่า แต่เมื่อเวลาผ่านไป เริ่มชัดเจนมากขึ้นว่าความสามารถในการปรับขนาดช่องสัญญาณ Lightning นี้จะนำมาซึ่งประโยชน์เพิ่มเติมมากมายที่มักไม่คาดคิดและจะปรับปรุงประสิทธิภาพของ Lightning Network โดยพื้นฐานแล้ว
การต่อช่องสัญญาณนำมาซึ่งการปรับปรุงในสองด้าน:
- การปรับปรุงที่มุ่งเน้นผู้ใช้
- ปรับปรุงสภาพคล่องของแบ็กเอนด์
การปรับปรุงที่มุ่งเน้นผู้ใช้
ประการแรกนั้นค่อนข้างอธิบายได้ง่าย: มีแอปกระเป๋าเงิน Bitcoin มากมายที่มีอยู่ ซึ่งเป็นสิ่งที่ดีอย่างแน่นอน แต่เมื่อนักพัฒนาเหล่านี้พัฒนาแอปของตัวเอง พวกเขาจะพบกับปัญหา: แอพนี้ควรทำเป็นกระเป๋าเงิน Bitcoin หรือกระเป๋าเงินสายฟ้า?
กระเป๋าเงินส่วนใหญ่จะเลือกอย่างใดอย่างหนึ่ง แต่กระเป๋าเงินที่มีความทะเยอทะยานบางประเภทจะเลือกทำทั้งสองอย่าง! จากมุมมองขั้นพื้นฐาน แน่นอนว่า การทำทั้งสองอย่างเป็นทางออกที่ดีที่สุด
แต่สิ่งนี้ทำให้เกิดปัญหา กระเป๋าเงินเหล่านี้จะมี “ยอดคงเหลือสองชุด” – ชุดแรกคือยอดคงเหลือ Bitcoin (“ออนไลน์”) และอีกชุดคือยอดคงเหลือ Bitcoin ในช่องทาง Lightning ฉันไม่รู้ว่าคุณเคยแนะนำคนใหม่ ๆ ให้กับ Bitcoin หรือไม่ แต่ฉันสามารถบอกคุณได้ว่า การมียอดคงเหลือสองชุดอาจทำให้ผู้ใช้ใหม่สับสนได้ สำหรับชาว Bitcoin ที่มีประสบการณ์ นี่ไม่ใช่ปัญหา แต่เราต้องการให้ทุกคนสามารถใช้ Bitcoin ได้
ปัญหา "ยอดคงเหลือสองชุด" นี้ไม่ใช่ปัญหาด้านการออกแบบ และเนื่องจากทั้งสองรุ่น (กองทุนออนไลน์กับช่องทาง Lightning) มีความแตกต่างโดยพื้นฐาน จึงไม่สามารถเปลี่ยนเป็น "ชุดเดียว" ได้ ไม่เช่นนั้นจะสร้างปัญหาใหม่ให้กับผู้ใช้ : อัปเดตความล่าช้าในการชำระเงินที่ยาวนานและ/หรือค่าธรรมเนียมต้องห้าม
และการต่อช่องสัญญาณหากสามารถนำมาใช้ในเครือข่ายได้ ก็จะกลายเป็นอาวุธลับ ทำให้กระเป๋าเงิน "ชุดแห่งความสมดุล" เป็นไปได้ เนื่องจากการต่อช่องสัญญาณทำให้เครื่องชั่งทั้งสองนี้ทำงานร่วมกันได้ (แปลงเป็นกันและกัน) ด้วยต้นทุนที่ต่ำ
ปรับปรุงสภาพคล่องแบ็คเอนด์
ด้านที่สอง การเพิ่มขึ้นของสภาพคล่องบนแบ็กเอนด์อาจเข้าใจได้ยาก แต่จะมีผลกระทบอย่างมีนัยสำคัญต่อ Lightning Network (เมื่อเทียบกับแอป “ชุดยอดคงเหลือ”)
Lightning Network ทำงานบนธนาคาร "ขนาดเล็ก" หลายแห่งที่กระจัดกระจายไปทั่วเครือข่าย ธนาคารเหล่านี้ให้บริการเดียวเท่านั้น: การเคลื่อนย้ายเงินไปในทิศทางที่แน่นอน
การธนาคารแบบดั้งเดิมจำเป็นต้องมีธนาคาร "ศูนย์กลาง" ขนาดใหญ่ที่อนุมัติธนาคาร "จริง" จำนวนเล็กน้อยเข้าสู่เครือข่ายที่เชื่อถือได้ แต่ Lightning Network ทำตรงกันข้าม: ทำไมเราไม่ปล่อยให้ทุกคนเปิดธนาคารของตัวเองล่ะ? ธนาคารขนาดเล็กหลายแห่งที่สามารถสื่อสารระหว่างกันสามารถกลายเป็น "ธนาคารแบบกระจายอำนาจ" ได้หรือไม่? หากมีคนทำเช่นนี้มากพอ เราก็จะสามารถสร้างสิ่งที่น่าเชื่อถือได้เท่ากับธนาคารกลาง หรือน่าเชื่อถือยิ่งกว่านั้นได้ในที่สุด!
สิ่งนี้เกิดขึ้นจริง จำนวน “ไมโครแบงก์” ใน Lightning Network เพิ่มขึ้นตลอดเวลา และในไม่ช้า เราก็จะมีไมโครแบงก์ 100,000 แห่ง ซึ่งมากกว่า 5,000 แห่งในสหรัฐอเมริกาอย่างมาก
ธนาคารขนาดเล็กเหล่านี้จะแข่งขันกันเพื่อกำหนดเส้นทางธุรกรรมของคุณและเสนอบริการที่ถูกที่สุด เพื่อให้ธนาคารดังกล่าวกำหนดเส้นทางการชำระเงินได้ จะต้องมีเงินบางส่วนเก็บไว้ใน "บัญชี Lightning" ของ Bitcoin แล้ว
ธนาคารขนาดเล็กเหล่านี้จะแข่งขันกันเพื่อกำหนดเส้นทางธุรกรรมของคุณและเสนอบริการที่ถูกที่สุด เพื่อให้ธนาคารดังกล่าวกำหนดเส้นทางการชำระเงินได้ จะต้องมีเงินบางส่วนเก็บไว้ใน "บัญชี Lightning" ของ Bitcoin แล้ว
ฉันขอบอกตัวเลขเฉพาะเจาะจงแก่คุณ: โดยทั่วไปแล้วธนาคาร lightning bank ที่ประสบความสำเร็จจะมีบัญชี lightning 100 บัญชี TA จำเป็นต้องย้ายเงินระหว่างบัญชีเหล่านี้อย่างต่อเนื่องและคาดการณ์ทิศทางที่ผู้ใช้คนต่อไปจะต้องเริ่มการชำระเงิน หากพวกเขาอยู่บนเส้นทางไปยัง "ร้านแซนด์วิชของแซลลี่" ด้วยยอดบัญชี 100,000 ซาโตชิ เมื่อคุณต้องการซื้อแซนด์วิชจากแซลลี่ คุณอาจเลือกพวกเขาเพื่อกำหนดเส้นทางการชำระเงินของคุณ
ลองจินตนาการถึงธนาคารขนาดเล็กแห่งหนึ่งที่จัดการบัญชี 100 บัญชี โดยโอนเงินระหว่างบัญชีอย่างต่อเนื่องเพื่อคาดเดาพฤติกรรมของผู้บริโภค นี่เป็นเรื่องยากมาก! เพราะความจริงก็คือ พฤติกรรมของผู้คนเป็นสิ่งที่คาดเดาไม่ได้อย่างมาก และคุณมีคู่แข่งมากมายที่ต้องการทำแบบเดียวกับคุณ
แล้ว Channel Splicing เกี่ยวอะไรกับเรื่องนี้? การเคลื่อนย้ายเงินทุนระหว่างบัญชีเหล่านี้มีราคาแพง - ในความเป็นจริงแล้ว ธนาคารสายฟ้าแลบเหล่านี้จำเป็นต้องปิดและเปิดบัญชีอย่างต่อเนื่อง พวกเขายังต้องเก็บกองทุนไว้เป็น “ทุนสำรอง” ที่สามารถนำไปใช้กับ Lightning Network ได้ หากมีความต้องการที่ไม่คาดคิดเกิดขึ้น
การต่อช่องสัญญาณช่วยลดทั้งความจำเป็นในการปิดและเปิดบัญชีที่มีค่าใช้จ่ายสูง และความจำเป็นในการรักษาเงินทุน "สำรอง" ที่ไม่ได้ใช้งาน ซึ่งจะช่วยลดต้นทุนการดำเนินงาน ความซับซ้อน และความท้าทายด้านเงินทุนที่ไม่ได้ใช้งานของไมโครแบงก์เหล่านี้ได้อย่างมาก Channel Splicing ดำเนินการทั้งหมดนี้โดยอนุญาตให้โอนเงินระหว่าง "บัญชี Lightning" ได้โดยตรง (ในขณะที่คุ้มค่าที่สุดเท่าที่จะเป็นไปได้) ยิ่งไปกว่านั้น การแยกช่องสัญญาณยังทำให้เครือข่ายทั้งหมดแข็งแกร่งขึ้นด้วยการอนุญาตให้ธนาคารขนาดเล็กเหล่านี้ยังคงเป็นอิสระ โดยไม่ต้องพึ่งพาสิ่งที่เรียกว่า "ผู้ให้บริการสภาพคล่องแบบรวมศูนย์" อีกต่อไป
สิ่งนี้น่าตื่นเต้นมากสำหรับผู้ใช้ Lightning microbanks และแน่นอนว่าผู้ใช้ Lightning Network เช่นคุณควรจะเหมือนกัน หากธนาคารขนาดเล็กเหล่านี้สามารถทำงานได้อย่างมีประสิทธิภาพมากขึ้น การประหยัดต้นทุนจะถูกส่งต่อไปยังผู้ใช้ตามธรรมชาติในรูปแบบของค่าธรรมเนียมที่ถูกกว่าและการชำระเงินที่เชื่อถือได้มากขึ้น
ภาพรวมของเทคโนโลยี Channel Splicing
Channel splicing หมายถึงการย้ายเงินทุนใน lightning channel (UTXO การระดมทุนของช่อง) ไปยัง UTXO แบบ "spliced" ใหม่ การดำเนินการเฉพาะนั้นง่ายมาก - ลงนามในธุรกรรมหลายลายเซ็นแบบ 2 ใน 2 รายการเพื่อย้ายเงินไปยังตำแหน่งใหม่ อย่างไรก็ตาม มันไม่ง่ายเลยที่จะทำให้กระบวนการนี้ไม่น่าเชื่อถือ
ก่อนที่จะย้าย UTXO ที่ได้รับทุนดั้งเดิมและธุรกรรม HTLC ย่อยใด ๆ จริง ๆ ธุรกรรมข้อผูกมัดจะต้องถูกสร้างขึ้นใหม่สำหรับ UTXO "ที่เชื่อมต่อ" ใหม่
อย่างไรก็ตาม ก่อนที่เราจะสร้างสถานะสัญญาที่คัดลอกไว้สำหรับช่องทางใหม่ เราจำเป็นต้องตรวจสอบให้แน่ใจว่าสถานะในช่องทางปัจจุบันจะไม่เปลี่ยนแปลงทันที ดังนั้นเราจึงแนะนำสถานะสายฟ้าใหม่ที่เรียกว่า "SomeThing Fundamental is Underway" ซึ่งมีตัวย่อว่า "STFU"
STFU จะห้ามการเปลี่ยนแปลงสถานะการคอมมิตของช่องปัจจุบันเป็นระยะเวลาหนึ่ง
โหนดทั้งสองที่เข้าร่วมในช่องจะเริ่มการเจรจาธุรกรรมโดยใช้โปรโตคอล Interactive-tx: แต่ละฝ่ายสามารถเพิ่มทั้งอินพุตและเอาต์พุตเมื่อถึงตาของมัน UTXO เงินทุนของช่องทางปัจจุบันจะถูกเพิ่มเป็นข้อมูลเข้าในธุรกรรมการเจรจา
ทั้งสองฝ่ายมีอิสระในการเพิ่มอินพุตและเอาต์พุตเพิ่มเติมสำหรับกิจกรรมที่ไม่เกี่ยวข้อง เช่น การเปิดช่องอื่น หรือแม้แต่การประมวลผลการต่อช่องสัญญาณอื่น กิจกรรมทั้งหมดเหล่านี้จะรวมกันเป็นธุรกรรมเดียว
หลังจากเสร็จสิ้นการเจรจาและการก่อสร้างธุรกรรม ทั้งสองฝ่ายจะตรวจสอบธุรกรรมขั้นสุดท้าย ยืนยันว่ายอดคงเหลือของธุรกรรมสอดคล้องกับความคาดหวัง และชำระค่าธรรมเนียมในจำนวนที่สมเหตุสมผลให้กับนักขุด จากนั้นพวกเขาจะลงนามในธุรกรรมและให้ลายเซ็นแก่อีกฝ่าย
หลังจากเสร็จสิ้นการเจรจาและการก่อสร้างธุรกรรม ทั้งสองฝ่ายจะตรวจสอบธุรกรรมขั้นสุดท้าย ยืนยันว่ายอดคงเหลือของธุรกรรมสอดคล้องกับความคาดหวัง และชำระค่าธรรมเนียมในจำนวนที่สมเหตุสมผลให้กับนักขุด จากนั้นพวกเขาจะลงนามในธุรกรรมและให้ลายเซ็นแก่อีกฝ่าย
หลังจากออกอากาศธุรกรรมแล้ว ทั้งสองฝ่ายจะรอให้ธุรกรรมได้รับการยืนยัน 6 บล็อก จากนั้นการประกบจะถือว่า "เสร็จสมบูรณ์" ในเวลานี้พวกเขาสามารถลบสถานะของช่องดั้งเดิมและสนใจเฉพาะสถานะของช่องที่ต่อเชื่อมเท่านั้น สิ่งนี้สามารถประหยัดพื้นที่ฐานข้อมูลได้มาก
(หมายเหตุผู้แปล: คำอธิบายที่นี่หยาบเกินไป สมมติว่าช่อง UTXO ที่มีอยู่ของทั้งสองฝ่ายคือ UTXO A และช่อง UTXO ที่ต่อกันที่พวกเขาต้องการสร้างคือ UTXO B ก่อนอื่นทั้งสองฝ่ายจะต้องสร้างช่อง UTXO สำหรับ UTXO B. ธุรกรรมที่คอมมิตจะถูกใช้เป็นสถานะแรกในช่องทางใหม่ซึ่งเป็นการรับประกันที่ปราศจากความไว้วางใจ จากนั้นทั้งสองฝ่ายจะลงนามเพื่อสร้างธุรกรรมของ UTXO B และออกอากาศ ก่อนที่ UTXO B จะได้รับการยืนยันบล็อกที่เพียงพอ ต้นฉบับ ช่องยังคงทำงานต่อไปและแต่ละฝ่ายหากคุณอัปเดตสถานะในช่องเดิมคุณต้องอัปเดตสถานะในช่องใหม่ด้วย เมื่อ UTXO B ได้รับการยืนยันการบล็อกเพียงพอคุณจะไม่สามารถอัปเดตสถานะของช่องเดิมได้อีกต่อไปหรือ ลบข้อมูลที่เกี่ยวข้องกับช่องเดิมออกไปทำให้สามารถเปลี่ยนขนาดช่องได้โดยไม่กระทบต่อการทำงานปกติของช่อง)
วิธีการใช้งานการต่อช่องสัญญาณ
มีหลายขั้นตอนในการดำเนินการ Lightning ตั้งแต่ไม่รองรับการต่อประกบไปจนถึงการรองรับการต่อประกบ
ขั้นแรก คุณต้องตัดสินใจว่าสถานะของช่องของคุณจะอนุญาตให้เขียนทับรายละเอียดเงินทุนหรือไม่ หรือสถานะของช่องที่ต่อกันจะถือเป็นสถานะใหม่ทั้งหมดหรือไม่ ทั้งสองวิธีสามารถทำงานได้ และวิธีใดเหมาะสมกว่านั้นขึ้นอยู่กับว่าการใช้งานของคุณสร้างสถานะช่องทางอย่างไร
ข้อดีของสถานะช่องสัญญาณที่จำลองแบบสองชุด:
- สถานะของช่อง (โดยทั่วไป) จะละเว้นการประกบกัน
ข้อเสียของสถานะช่องสัญญาณที่จำลองแบบสองชุด:
- รหัสข้อผูกมัดของคุณจะต้องจำลองแบบในทั้งสองชุด ซึ่งทำลายลักษณะ "กล่องดำ" ของช่องทางในการจัดการสถานะ
ข้อดีของการมีสถานะช่องเดียวเท่านั้น:
- โครงสร้างของสัญญายังคงเหมือนเดิม มีเพียงสถานะสัญญาเท่านั้นที่ต้องปรับเปลี่ยนเล็กน้อย
- สถานะของช่องสัญญาณนั้นใกล้เคียงกับสิ่งที่เกิดขึ้นโดยพื้นฐานมากขึ้น
ข้อเสียของการมีสถานะช่องเดียวเท่านั้น:
- รหัสทั้งหมดที่ตั้งค่าล่วงหน้าหรือแคชรายละเอียดการระดมทุนและข้อมูลยอดคงเหลือของช่องสัญญาณจะต้อง "เข้าใจ" การต่อช่องสัญญาณ
ไม่ว่าจะใช้แนวทางใดก็ตาม จำเป็นต้องมีการทำงานเพิ่มเติมในการจัดการ ID ช่องทางและ ID ช่องทางแบบสั้น โดยเฉพาะอย่างยิ่งเมื่อใช้เป็นคีย์ ซึ่งจำเป็นต้องประมวลผลโดยใช้โค้ดทั้งหมด
สำหรับฐานโค้ดที่กำหนด คุณควรพิจารณาถึงข้อดีและข้อเสียของแต่ละวิธี ทั้งความยากในการปรับโครงสร้างใหม่และความเสี่ยงในการเกิดข้อบกพร่อง
ถัดไป คุณจะต้องมีบล็อคส่วนประกอบธุรกรรมเชิงโต้ตอบที่นำมาใช้ซ้ำได้ โมดูลนี้จัดการข้อความประเภท TX_ADD_INPUT/TX_ADD_OUTPUT ทั้งหมด นอกจากนี้คุณยังต้องมีโมดูลนี้เพื่อรองรับการระดมทุนแบบคู่ ซึ่งเป็นเหตุผลว่าทำไมการใช้งานจำนวนมากจึงพัฒนาโมดูลดังกล่าวสำหรับการระดมทุนแบบคู่
โมดูลนี้จะมีประโยชน์ในอนาคต "ประกบเพื่อปิด" และอาจมีการเพิ่มข้อกำหนดคุณสมบัติ Lightning Network อื่น ๆ
โปรโตคอลการซื้อขายเชิงโต้ตอบนั้นคล้ายคลึงกับรูปแบบการระดมทุนแบบสองทางมาก แต่มีความแตกต่างบางประการ โปรดคำนึงถึงความแตกต่างเหล่านี้เมื่อพัฒนาเพื่อให้โมดูลดังกล่าวสามารถทำงานได้ในสถานการณ์ที่แตกต่างกัน
ขั้นตอนปกติถัดไปคือการใช้ตรรกะ "STFU" หลายๆ คนพบว่าโปรโตคอล STFU มีความซับซ้อนมากกว่าที่คิด เนื่องจากข้อความ STFU นั้นเป็นคำขอสำหรับโหมด STFU จริงๆ มันจะไม่เปิดใช้งานเว้นแต่จะได้รับ "STFU" กลับมา
ขั้นตอนปกติถัดไปคือการใช้ตรรกะ "STFU" หลายๆ คนพบว่าโปรโตคอล STFU มีความซับซ้อนมากกว่าที่คิด เนื่องจากข้อความ STFU นั้นเป็นคำขอสำหรับโหมด STFU จริงๆ มันจะไม่เปิดใช้งานเว้นแต่จะได้รับ "STFU" กลับมา
หากอีกฝ่ายกำลังยุ่งอยู่กับสิ่งอื่น เช่น การเพิ่ม HTLC และการอัปเดตธุรกรรมที่ตกลงไว้ ก็จะไม่ตอบกลับ STFU จนกว่าการดำเนินการจะเสร็จสิ้น
ในขณะที่เขียนบทความนี้ เฉพาะการต่อช่องสัญญาณเท่านั้นที่ใช้โหมด STFU แต่มีแนวโน้มที่จะเปลี่ยนแปลงในอนาคต ดังนั้น เมื่อพัฒนาโมดูล STFU ของคุณ คุณควรคำนึงถึงการใช้งานในอนาคต
มีข้อควรพิจารณาเป็นพิเศษบางประการเกี่ยวกับโหมด STFU เป็นสถานการณ์ที่เกิดขึ้นไม่บ่อยนักที่ทั้งสองฝ่ายต้องการเริ่มต้นการต่อช่องสัญญาณในเวลาเดียวกัน อย่าลืมจัดการกับสถานการณ์ที่ผูกปมเหล่านี้อย่างถูกต้อง
ในการเริ่มต้น โดยทั่วไปแล้ว คุณจะต้องจัดการ PSBT (ธุรกรรม Bitcoin ที่ลงนามบางส่วน) ซึ่งประกอบด้วยอินพุตและเอาต์พุต ผู้ใช้ของคุณอาจต้องการเพิ่มอินพุตและเอาต์พุตให้กับธุรกรรมนี้ รวมถึงจำนวนการเปลี่ยนแปลงขนาดช่องสัญญาณแบบสัมพันธ์ คุณจะต้องส่งการเปลี่ยนแปลงปริมาณสัมพัทธ์เพื่อส่ง splice และ splice_ack โปรดจำไว้ว่าทั้งสองฝ่ายสามารถระบุจำนวนรูปแบบได้ ดังนั้นอย่าลืมพัฒนาปลั๊กอินสำหรับฝ่ายที่ได้รับเพื่อแจ้งเตือนพวกเขาถึงรูปแบบ PSBT
ความคิดเห็นทั้งหมด