"Onion Routing" ในเครือข่าย Lightning และวิธีการทำงาน

ผู้เขียน: LORENZO

คอมพิวเตอร์ในเครือข่ายสื่อสารกันตามโปรโตคอล ในที่นี้ "โปรโตคอล" หมายถึงระบบของกฎที่ระบุวิธีการส่งและตีความข้อความ ส่วนการส่งข้อความการชำระเงินของโปรโตคอลเครือข่ายฟ้าผ่าอธิบายโดย BOLT#4 หรือที่เรียกว่า "Onion Routing Protocol (Onion Routing Protocol)"

Onion Routing เป็นเทคโนโลยีที่เกิดก่อน Lightning Network ถึง 25 ปี นอกจากนี้ยังใช้ใน Tor ซึ่งเป็นที่มาของชื่อ "Tor" ("The Onion Router") Lightning Network ใช้เวอร์ชันที่ปรับเปลี่ยนเล็กน้อยซึ่งเรียกว่า "การกำหนดเส้นทางหัวหอมตามต้นทาง" ซึ่งเรียกโดยย่อว่า "SPHINX" ในบทความนี้ เราจะพูดถึงวิธีการทำงานของการกำหนดเส้นทางหัวหอม

ทำไมต้องใช้การกำหนดเส้นทางหัวหอม?

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

หาก Lightning Network ใช้โปรโตคอลเดียวกันกับอินเทอร์เน็ต คนกลางทุกคนจะรู้ว่าใครเป็นผู้ส่งการชำระเงิน ใครคือผู้รับ และใครคือตัวกลางอื่นๆ ตามเส้นทาง การกำหนดเส้นทาง Onion เป็นทางเลือกที่ดีเนื่องจากลักษณะเฉพาะรับประกันโหนดกลาง:

  • รู้เฉพาะโหนดก่อนหน้าของคุณ (ที่ส่งข้อความถึงคุณ) และโหนดถัดไป (ที่คุณต้องการส่งต่อข้อความ)
  • ไม่ทราบความยาวของเส้นทางทั้งหมด
  • ไม่ทราบว่าคุณอยู่ที่ไหนในเส้นทาง

ภาพรวมของการกำหนดเส้นทางหัวหอม

ลองใช้พัสดุเป็นตัวเปรียบเทียบเพื่ออธิบายว่าการกำหนดเส้นทางหัวหอมทำงานอย่างไร

สมมติว่าอลิซต้องการจ่ายเงินให้กับดีน่า อันดับแรก อลิซต้องหาเส้นทางที่เป็นไปได้สำหรับการชำระเงินของเธอ:

อลิซ→บ็อบ→ชาน→ดีน่า

จากนั้นเธอก็สร้าง "หัวหอม" เธอเริ่มต้นด้วย Dina (จากจุดสิ้นสุดของเส้นทาง) เธอใส่ข้อความลับ (เนื้อหาการชำระเงิน) ในพัสดุที่ส่งถึงดีน่า และล็อคมันด้วยกุญแจที่มีเพียงเธอและดีน่าเท่านั้นที่รู้ ตอนนี้เธอใส่พัสดุนี้ไว้ในอีกห่อหนึ่งเพื่อส่งไปให้ Chan และล็อคพัสดุให้ Chan ด้วยกุญแจที่มีเพียงเธอและ Chan เท่านั้นที่รู้ ถูกต้องและอื่นๆ

อลิซส่งหัวหอมชิ้นสุดท้าย (บรรจุภัณฑ์) ให้กับคนกลางคนแรกบนเส้นทาง Bob บ็อบไขกล่องของเขาด้วยกุญแจของเขาเอง และเห็นว่ากล่องต่อไปเป็นของชาน เขาจึงส่งพัสดุไปให้จัน Chan ก็เช่นกัน หลังจากแกะกล่องพัสดุออกแล้วเขาก็ส่งต่อพัสดุข้างในให้ Dina ในที่สุด ดีน่าก็เปิดกล่องพัสดุของเธอเองและพบข้อความการชำระเงินอยู่ข้างใน

ในการกำหนดเส้นทางหัวหอม พ่อค้าคนกลางอย่าง Bob และ Chan ไม่ทราบเนื้อหาของข้อความที่ส่งถึง Dina และไม่ทราบความยาวของเส้นทางการชำระเงินทั้งหมด สิ่งเดียวที่พวกเขารู้คือใครเป็นคนส่งต่อพัสดุให้พวกเขา และใครจะได้รับต่อไป สิ่งนี้รับประกันความเป็นส่วนตัวของข้อความและความลับของเส้นทาง ตัวกลางแต่ละรายสามารถสัมผัสเลเยอร์ของข้อความที่สร้างขึ้นเป็นพิเศษสำหรับ TA เท่านั้น

ในการกำหนดเส้นทาง Onion ตามแหล่งที่มาของเครือข่าย Lightning ผู้ส่งจะเลือกเส้นทางการชำระเงินและสร้างหัวหอมที่สมบูรณ์สำหรับเส้นทางนั้น ซึ่งสามารถดูได้ว่าเป็นช่องโหว่ความเป็นส่วนตัว (หมายเหตุของผู้แปล: ตำแหน่งเครือข่ายของผู้รับจะต้องเปิดเผยต่อผู้ส่ง) แผนการกำหนดเส้นทางอื่นๆ เช่น "blind routing" (การแปลเป็นภาษาจีน) แก้ปัญหานี้ด้วยการทำให้เส้นทางการชำระเงินบางส่วนสับสนไปยังผู้ส่ง อย่างไรก็ตาม ในบทความนี้ เรามุ่งเน้นไปที่ SPHINX โดยเฉพาะ

ใส่ต้นหอมซอย

ตอนนี้ มาดูข้อกำหนดของการกำหนดเส้นทางหัวหอม ในตอนแรกเราต้องกำหนดสิ่งเหล่านี้:

  • ผู้ส่งคือ "โหนดเริ่มต้น" (อลิซ);
  • ผู้รับคือ "โหนดสุดท้าย" (Dina);
  • ทุกโหนดกลางบนเส้นทางการชำระเงินคือ "กระโดด" (บ็อบและชาน);
  • ข้อมูลการสื่อสารระหว่างแต่ละฮอปเรียกว่า "โหลดฮอป"

สร้างการกระโดดโหลด

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

ในการสร้าง HTLC ที่เหมาะสม แต่ละ hop จะต้อง:

  • จำนวนที่ต้องการส่งต่อ;
  • ค่าความลับจ่าย;
  • รหัสของช่องทางการชำระเงินที่ส่งหัวหอมต่อไป
  • ความยาวของล็อคเวลา

ข้อมูลนี้ส่วนใหญ่มาจากข้อความ "การอัปเดตช่องทาง" ซึ่งมีข้อมูลเกี่ยวกับค่าธรรมเนียมการกำหนดเส้นทาง คำขอกิจกรรม และรหัสช่องทางการชำระเงิน จำนวนเงินทั้งหมดที่ต้องส่งต่อคือผลรวมของจำนวนเงินที่ชำระบวกค่าธรรมเนียมการจัดการที่เรียกเก็บสำหรับแต่ละ hop ที่ตามมา ในขณะที่ Dina จะคำนวณมูลค่าลับของการชำระเงินและฝังอยู่ในใบแจ้งหนี้การชำระเงิน (แจ้งโดยข้อความหัวหอมสำหรับแต่ละรายการ กระโดด).

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

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

ในเพย์โหลดของ Chan อลิซเพิ่ม ID ช่องของ Chan และ Dina เธอยังเพิ่มจำนวนการส่งต่อและค่าการล็อกเวลา สุดท้าย อลิซสร้างภาระให้บ็อบ Chan เรียกเก็บเงิน 100 Satoshi สำหรับการชำระเงินผ่านช่องทางระหว่างเธอกับ Dina ดังนั้น Alice จึงจำเป็นต้องบอก Bob ว่าจำนวนเงินที่ส่งต่อคือการชำระเงินบวกค่าธรรมเนียมการจัดการ ตามข้อความอัปเดตช่องของ Chan ค่าการล็อกเวลาก็เพิ่มขึ้น 20 (ในบล็อก) สุดท้าย อลิซยังพิจารณาค่าธรรมเนียมการจัดการและข้อกำหนดการล็อคเวลาของ Bob และให้ HTLC แก่เขาด้วยระยะเวลาการล็อคเวลา 700040 และมูลค่า 100200 Satoshi

ค่าความลับที่ใช้ร่วมกันและการสร้างคีย์

ต่อไป อลิซเตรียมหัวหอมโดยสร้างความลับร่วมกันสำหรับแต่ละฮอป (รวมถึงโหนดสุดท้าย) ค่าความลับที่ใช้ร่วมกันนี้สามารถสร้างโดย Alice และ Hop เป้าหมายตามลำดับโดยการคูณรหัสส่วนตัวของเธอกับรหัสสาธารณะของอีกฝ่าย

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

เพื่อปกป้องความเป็นส่วนตัวของอลิซ เธอสร้างคีย์เซสชันแบบใช้ครั้งเดียวสำหรับหัวหอม แทนที่จะใช้คีย์สาธารณะของโหนดของเธอเอง เพื่อรับค่าความลับที่ใช้ร่วมกัน เธอใช้คีย์เซสชันนี้สำหรับฮอปแรก จากนั้นสำหรับแต่ละฮอปที่ตามมา อลิซจะสุ่มคีย์ตามกำหนดโดยการคูณคีย์ล่าสุดด้วยปัจจัยที่ทำให้ไม่เห็น สิ่งเหล่านี้ใช้เพื่อสร้างคีย์ค่าความลับที่ใช้ร่วมกัน ซึ่งเราเรียกว่า "คีย์ชั่วคราว"

บ็อบ ชาน และดีน่าต่างต้องได้รับค่าความลับเช่นเดียวกับอลิซ ดังนั้นพวกเขาจึงจำเป็นต้องรู้คีย์ชั่วคราวเพื่อใช้ในเซสชั่นของพวกเขา อลิซใส่เฉพาะปุ่มแรกในหัวหอมเพื่อบันทึกขนาดข้อความ แต่ละฮอปจะคำนวณคีย์ชั่วคราวถัดไปและฝังไว้ในหัวหอมสำหรับโหนดถัดไป แต่ละฮอปสามารถใช้คีย์สาธารณะของตัวเองและค่าลับที่ใช้ร่วมกันเพื่อคำนวณปัจจัยที่ทำให้ไม่เห็นซึ่งอลิซใช้เพื่อกำหนดคีย์ชั่วคราวถัดไป

ดังที่ได้กล่าวไว้ก่อนหน้านี้ ค่าความลับที่ใช้ร่วมกันจะถูกใช้เพื่อสร้างคีย์บางคีย์ และอลิซและการข้ามที่สอดคล้องกันสามารถใช้คีย์เหล่านี้เพื่อดำเนินการบางอย่างกับหัวหอมได้ มาดูกันว่าแต่ละคีย์ทำหน้าที่อะไร

โรคีย์

อลิซใช้คีย์ Rho เพื่อเข้ารหัสเลเยอร์ของหัวหอม ซึ่งจะทำให้เนื้อหาของเพย์โหลดสับสนจนคนนอกไม่สามารถถอดรหัสได้ เฉพาะเจ้าของคีย์ rho เท่านั้นที่สามารถถอดรหัสเพย์โหลดได้ นั่นคือสิ่งที่โหนดที่ได้รับหัวหอมต้องทำ: ใช้ค่าความลับที่แชร์กับอลิซเพื่อรับคีย์ rho จากนั้นถอดรหัสหัวหอมและอ่านเนื้อหา

มูกี้

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

แป้นพิม

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

กุญแจ

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

การห่อหุ้มชั้นหัวหอม

ห่อหัวหอมสุดท้ายมีลักษณะดังนี้:

ตอนนี้อลิซมี payload สำหรับแต่ละ hop และค่าลับที่ใช้ร่วมกันสำหรับแต่ละ hop มาดูกันว่าอลิซแปลงข้อมูลนี้ให้เป็นหัวหอมสุดท้ายได้อย่างไร เธอเริ่มต้นด้วยโหนดสุดท้ายและย้อนกลับไปทีละขั้นตอน

อันดับแรก เธอสร้างฟิลด์ว่างที่มีความยาว 1300 ไบต์ ซึ่งเป็นความยาวรวมของเพย์โหลดหัวหอมทั้งหมด จากนั้นเธอใช้แป้นแพ็ดเพื่อสร้างสตริงสุ่มที่มีความยาว 1300 ไบต์ ซึ่งเป็นขยะที่ไม่มีประโยชน์สำหรับการกระโดดใดๆ ขั้นตอนนี้ทำขึ้นเพื่อให้แน่ใจว่าแต่ละชั้นของหัวหอมมีลักษณะเหมือนกัน ดังนั้นคุณจึงมองไม่เห็นความยาวทั้งหมดของเส้นทาง (จำนวนการกระโดด) หรือใครเป็นผู้ส่งและใครเป็นผู้รับ

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

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

เนื่องจากโหนดที่รับหัวหอมสามารถได้รับคีย์ rho เดียวกัน จึงสามารถสร้างสตริงไบต์สุ่มแบบเดียวกับอลิซได้ นี่คือวิธีที่โหนดแต่ละโหนดสามารถคลี่คลายความสับสนและอ่านเนื้อหาได้

หลังจากเตรียมหัวหอมที่สับสนสำหรับการกระโดดหนึ่งครั้ง Alice ทำซ้ำขั้นตอนเดิมสำหรับโหนดถัดไป ข้อแตกต่างที่สำคัญคือ เมื่อ Dina หั่นหัวหอมเสร็จแล้ว เธอไม่ต้องสร้างขยะอีกต่อไป เธอเพิ่งต่อท้ายหัวหอมที่ยุ่งเหยิงจากขั้นตอนก่อนหน้าหลังจากโหลดและตรวจสอบผลรวมที่เป็นประโยชน์ และตัดส่วนที่เกิน 1300 ไบต์ออก

ในที่สุด อลิซก็นำหัวหอมชิ้นสุดท้ายที่คลุมเครือแล้วเพิ่มการตรวจสอบเพื่อให้บ็อบสามารถตรวจสอบความสมบูรณ์ของหัวหอมได้ จากนั้นอลิซจึงเพิ่มคีย์สาธารณะของเซสชันเพื่อให้ Bob สามารถใช้คีย์สาธารณะนี้เพื่อคำนวณค่าความลับที่ใช้ร่วมกันได้ สุดท้าย เธอยังเพิ่มไบต์ที่เป็นตัวแทนของเวอร์ชัน โดยบอกโหนดอื่นๆ ถึงวิธีตีความข้อมูลในนั้น สำหรับเวอร์ชันที่อธิบายโดย BOLT #4 ไบต์ของเวอร์ชันจะเป็น 0

ส่งหัวหอม

ในการส่งแพ็คเกจหัวหอมนี้ ผู้ส่งสร้างข้อความ update_add_htlc พร้อมฟิลด์ต่อไปนี้:

  • Channel ID: ช่องทางเฉพาะที่เกี่ยวข้องกับข้อความนี้
  • ID: ตัวระบุของ HTLC นี้
  • จำนวน: มูลค่าของ HTLC นี้
  • แฮชการชำระเงิน: สร้างโดยผู้รับการชำระเงิน
  • เวลาหมดอายุ: HTLC นี้จะหมดอายุหลังจากการบล็อกหนึ่งๆ
  • พัสดุหัวหอม: หัวหอมที่สร้างขึ้นสำหรับการชำระเงินนี้ ซึ่งเป็นสิ่งที่กล่าวมาข้างต้น
  • ข้อมูลเพิ่มเติม: ใช้เพื่อระบุข้อมูลเพิ่มเติม

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

ด้วยค่าความลับที่ใช้ร่วมกัน Bob สร้างคีย์ mu เพื่อตรวจสอบผลรวมตรวจสอบของเพย์โหลดที่ฝังอยู่ในแพ็คเกจหัวหอม หากไม่ได้แก้ไขเพย์โหลด เช็คซัมควรตรงกัน

เพื่อป้องกันไม่ให้โหนดอื่นๆ ในเส้นทางรู้ว่าเส้นทางนั้นยาวแค่ไหน Bob จึงเพิ่มฟิลด์ขนาด 1300 ไบต์ซึ่งเต็มไปด้วยเลขศูนย์ให้กับแพ็กเก็ตหัวหอม จากนั้น Bob จะสร้างสตริงไบต์สุ่มขนาดยาว 2600 ไบต์จากคีย์ rho Bob ใช้สตริงไบต์แบบสุ่มนี้เพื่อ XOR เพย์โหลดหัวหอมที่ไม่มีค่าเป็นศูนย์

จำได้ไหมว่าฉันบอกคุณเกี่ยวกับการโหลดหัวหอมที่สับสนได้อย่างไร ใช้เพย์โหลดหัวหอมที่คลุมเครือเป็นอินพุต และเรียกใช้การดำเนินการ "XOR" ด้วยสตริงไบต์เดียวกันเพื่อรับเพย์โหลดหัวหอมก่อนการทำให้ยุ่งเหยิง เนื่องจากอลิซและบ็อบใช้ค่าความลับร่วมกัน สร้างคีย์ rho เดียวกัน บ็อบจึงคลายความสับสนได้ สิ่งนี้มีโบนัสเพิ่มเติมที่จะเปลี่ยนอักขระแพดขนาดยาว 1300 ไบต์เป็นไบต์แบบสุ่ม

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

กระบวนการนี้จะดำเนินต่อไปจนกว่าข้อความจะถูกส่งไปยังโหนดสุดท้าย Dina เมื่อ Dina ได้รับข้อความ update_add_htlc เธอสามารถป้อนค่าแฮชของค่าลับที่สร้างขึ้นเอง ซึ่งหมายความว่า HTLC นี้มีไว้สำหรับเธอ ดีน่าแค่ต้องตรวจสอบลายนิ้วมือ ไขข้อความหอมหัวใหญ่ และเปิดเผยน้ำหนักบรรทุกของเธอเอง

การแก้ไขปัญหา

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

โหนดที่พบข้อผิดพลาดจะส่งข้อความกลับไปยังโหนดก่อนหน้าในเส้นทางการชำระเงิน แต่ละฮอปใช้ปุ่ม um และปุ่ม ammag เพื่อดำเนินการแบบเดียวกันจนกว่าผู้ส่งจะได้รับพัสดุ สุดท้าย ผู้ส่งใช้ปุ่ม ammag และปุ่ม um เพื่อคลายความสับสนและตรวจสอบพัสดุ

ข้อผิดพลาดอาจเกิดจากแพ็คเกจหัวหอม โหนด หรือแชนเนล หากคุณใช้ Lightning Network บ่อยครั้ง คุณอาจพบข้อผิดพลาด เช่น "ช่องไม่พร้อมใช้งาน" หรือ "ค่าธรรมเนียมไม่เพียงพอ"

ดูต้นฉบับ
เนื้อหานี้มีสำหรับการอ้างอิงเท่านั้น ไม่ใช่การชักชวนหรือข้อเสนอ ไม่มีคำแนะนำด้านการลงทุน ภาษี หรือกฎหมาย ดูข้อจำกัดความรับผิดชอบสำหรับการเปิดเผยความเสี่ยงเพิ่มเติม
  • รางวัล
  • แสดงความคิดเห็น
  • แชร์
แสดงความคิดเห็น
0/400
ไม่มีความคิดเห็น
  • ปักหมุด