Dandelion++ คือวิธีส่งต่อธุรกรรมใหม่ผ่านเครือข่าย peer-to-peer เพื่อให้ผู้เฝ้าดูเครือข่ายระบุคอมพิวเตอร์ต้นทางได้ยาก คู่มือนี้อธิบายปัญหาที่แก้ วิธีทำงานของช่วง stem และ fluff สิ่งที่งานวิจัยปี 2018 เพิ่มจากการออกแบบเดิม และการใช้กับทุกการจ่ายของ Blocknet
Dandelion++ คืออะไร?
Dandelion++ คือโปรโตคอลส่งต่อธุรกรรมที่ซ่อนว่าโหนดใดสร้างธุรกรรม ธุรกรรมใหม่เดินทางตาม “stem” ก่อน โดยส่งจากโหนดหนึ่งไปโหนดถัดไปเพียงตัวเดียวหลายช่วง แล้วจึงเข้าสู่ “fluff” และกระจายทั่วเครือข่าย ดูเหมือนเริ่มจากโหนดที่ห่างจากผู้ส่งจริง
ชื่อมาจากรูปทรงเส้นทาง: ก้านเรียวแล้วเป็นปุยเมล็ดปลิวไปทุกทิศ Dandelion++ เผยแพร่ในปี 2018 โดย Giulia Fanti, Shaileshh Bojja Venkatakrishnan, Surya Bakshi, Bradley Denby, Shruti Bhargava, Andrew Miller และ Pramod Viswanath ใน Proceedings of the ACM on Measurement and Analysis of Computing Systems (ฉบับก่อนตีพิมพ์บน arXiv) และนำเสนอที่ ACM SIGMETRICS 2018 โดยปรับปรุงข้อเสนอ Dandelion ปี 2017 ของกลุ่มเดียวกัน
ทำไมการกระจายธุรกรรมจึงเผยต้นทาง?
ข้อความธุรกรรมไม่มีที่อยู่ IP ของคุณ แต่วิธีแพร่กระจายเผยได้ ในเครือข่ายคริปโตทั่วไป โหนดที่สร้างธุรกรรมส่งให้พีร์ทั้งหมด พีร์ส่งให้พีร์ของตัวเอง แล้วแผ่ออกจากต้นทางเป็นวง
นักวิจัยแสดงว่าการแผ่นี้วัดได้ ในปี 2014 Biryukov, Khovratovich และ Pustogarov กับอีกทีมคือ Koshy, Koshy และ McDaniel เปิด “supernode” ที่เชื่อมกับโหนด Bitcoin เกือบทุกตัวที่เข้าถึงได้ แล้วบันทึกเวลาที่แต่ละธุรกรรมมาถึงจากแต่ละพีร์ โหนดที่ส่งมาถึงก่อนมักเป็นตัวที่สร้าง งาน Dandelion++ เรียกวิธีนี้ว่า first-spy estimator: เดาว่าโหนดสุจริตตัวแรกที่ส่งธุรกรรมมาคือต้นทาง วิธีนี้เรียบง่ายและได้ผลดีกับการกระจายแบบ flooding
การเพิ่มเวลาหน่วงสุ่มก่อนโหนดส่งต่อ ซึ่ง Bitcoin Core ใช้ในวิธี diffusion ทำให้ข้อมูลเวลามีสัญญาณรบกวนมากขึ้น งานวิจัย Dandelion ใช้อีกทาง โดยเปลี่ยนรูปทรงเส้นทางเอง
ช่วง stem และ fluff ทำงานอย่างไร?
ในช่วง stem แต่ละโหนดส่งธุรกรรมให้พีร์เพียงตัวเดียว แต่ละช่วงโหนดสุ่มแบบถ่วงน้ำหนัก: ส่วนใหญ่ส่ง stem ต่อ บางครั้งเปลี่ยนเป็น fluff ในช่วง fluff ธุรกรรมกระจายให้ทุกพีร์ตามปกติ ผู้สังเกตจึงเห็นการแพร่จากโหนดที่เริ่ม fluff
ทีละขั้นตอน:
- โหนดคุณเริ่ม stem ส่งธุรกรรมใหม่ให้พีร์ตัวเดียว
- ตัวส่งต่อแต่ละตัวตัดสินใจ พีร์ส่งต่อให้อีกตัวเดียว (stem) หรือกระจายออก (fluff)
- fluff แพร่ไปทุกที่ จากโหนดที่เริ่ม fluff ธุรกรรมกระจายทั่วเครือข่ายตามปกติและถึงนักขุด
สายสืบที่เฝ้าดูหลายโหนดจึงเห็นการแผ่เริ่มจากโหนด fluff ซึ่งอาจห่างจากคุณหลายช่วง ความยาว stem สุ่ม จึงนับย้อนจำนวนช่วงคงที่ไม่ได้ งานวิจัยให้ความยาว stem คาดหวังเป็น 1/q โดย q คือโอกาสเข้าสู่ fluff ต่อช่วง เมื่อ q = 0.1 เฉลี่ยแล้ว stem ยาวประมาณสิบช่วง
Dandelion++ เปลี่ยนอะไรจาก Dandelion?
การออกแบบ Dandelion ปี 2017 ส่ง stem ตามแนวตัวส่งต่อเส้นเดียวและพิสูจน์ผลที่แข็งแรงภายใต้สามสมมติฐาน: ทุกโหนดทำตามกฎ แต่ละโหนดส่งหนึ่งธุรกรรม และทุกโหนดใช้ Dandelion งานปี 2018 แสดงว่าสายสืบที่ไม่ทำตามสมมติฐานเหล่านี้เรียนรู้ได้มากขึ้น แล้วปรับการออกแบบให้รับประกันได้แม้เผชิญพวกเขา ระบบแบ่งเป็น epoch โดยแต่ละโหนดเปลี่ยน epoch ใหม่ “ในระดับประมาณ 10 นาที” และใช้สี่กลไกภายในแต่ละ epoch:
| กลไก | การทำงาน |
|---|---|
| กราฟส่งต่อประมาณ 4-regular | แต่ละโหนดเลือกการเชื่อมต่อขาออกสูงสุดสองตัวเป็นตัวส่งต่อ สร้างเส้นทางสานกันแทนเส้นเดียว |
| เส้นเชื่อมเดียวสำหรับธุรกรรมตัวเอง | โหนดส่งทุกธุรกรรมที่สร้างตามเส้นขาออกเดียวกัน การส่งหลายธุรกรรมจึงไม่เผยข้อมูลเพิ่ม |
| การส่งต่อแบบ pseudorandom | ในแต่ละ epoch โหนดเป็นตัวส่งต่อหรือ diffuser สำหรับทุกธุรกรรม stem ที่รับ และจับคู่เส้นขาเข้าแต่ละเส้นกับขาออก |
| ตัวจับเวลา fail-safe | โหนดที่ส่งหรือส่งต่อธุรกรรม stem รอเวลาสุ่มเพื่อดู fluff และกระจายเองหากไม่พบ |
ในการเลือก q การจำลองพบว่าการคง q ที่ 0.2 หรือต่ำกว่าจำกัดสิ่งที่สายสืบได้จากการบิดกราฟส่งต่อ ผู้เขียนทดสอบการใช้งานบนเครือข่าย Bitcoin จริงและเลือก q = 0.1 หรือ q = 0.2 เพื่อให้การแพร่กระจายอยู่ในเป้าหมาย 4.5 วินาที
Dandelion ถูกเสนอสำหรับ Bitcoin เป็น BIP 156 ส่วน Monero เพิ่ม Dandelion++ ในเวอร์ชัน 0.16 ที่เผยแพร่พฤษภาคม 2020
Blocknet ใช้ Dandelion++ อย่างไร?
ทุกโหนด Blocknet ส่งต่อธุรกรรมด้วย Dandelion++ โดยไม่ต้องเปิดการตั้งค่า เมื่อส่ง BNT โหนดตรวจธุรกรรมและเพิ่มใน memory pool ของตัวเองก่อน แล้วส่งให้เราเตอร์ Dandelion++ ค่าที่ใช้ใน daemon คือ:
| การตั้งค่า | ค่า | ความหมาย |
|---|---|---|
| ความน่าจะเป็น stem | 0.9 | ตัวส่งต่อส่ง stem ต่อ 90% และเข้า fluff 10% (q = 0.1) เป็น q เดียวกับที่งานวิจัยทดสอบ |
| Epoch | 10 นาที | สลับเส้นทาง stem ทุก 10 นาที |
| ตัวจับเวลา embargo | 45 วินาที | หากธุรกรรมไม่กลับถึงโหนดในช่วง fluff ภายในเวลานี้ โหนดจะกระจายเอง |
การจ่าย Blocknet เดินทางดังนี้:
- โหนดคุณเลือกพีร์ stem หนึ่งตัวสำหรับ epoch ส่งทุกธุรกรรมที่สร้างให้พีร์เดิมจนถึง epoch 10 นาทีถัดไป ตรงกับกฎในงานวิจัยสำหรับธุรกรรมของโหนดเอง
- ตัวส่งต่อเลือกใหม่แต่ละครั้ง โหนดที่รับธุรกรรม stem เข้า fluff ด้วยโอกาส 10% มิฉะนั้นส่งต่อให้พีร์สุ่มที่ไม่ใช่ต้นทาง ด้วย q = 0.1 stem เฉลี่ยประมาณสิบช่วง
- ข้อความ stem ดูเหมือนกันจากทุกโหนด โหนดใช้ข้อความเดียวกันทั้งเริ่ม stem และส่งต่อ พีร์ที่รับจึงบอกไม่ได้ว่าคุณสร้างธุรกรรมเองหรือส่งต่อ
- ธุรกรรมถึงปลายทางเสมอ หากส่งช่วง stem ไม่ได้ โหนดเข้า fluff ทันที และ embargo 45 วินาทีดูแลกรณีที่ค้าง
- ตัวส่งต่อตรวจข้อมูลที่ส่ง โหนดยืนยันว่า payload ของ stem เป็นธุรกรรมรูปแบบถูกต้องก่อนส่งต่อ และลงโทษพีร์ที่ส่งข้อมูลขยะ
Dandelion++ ทำงานร่วมกับความเป็นส่วนตัวอื่นของ Blocknet อย่างไร?
Dandelion++ ทำงานในชั้นเครือข่าย ปกป้องความเชื่อมโยงระหว่างธุรกรรมกับคอมพิวเตอร์ที่ส่ง ส่วนความเป็นส่วนตัวบนเชนที่ทำให้ Blocknet เป็นเหรียญเพื่อความเป็นส่วนตัว ปกป้องเนื้อหาธุรกรรม: วง CLSAG 16 รายการในทุกอินพุตซ่อนผู้ส่ง stealth address แบบใช้ครั้งเดียวซ่อนผู้รับ และ Pedersen commitment พร้อม Bulletproofs range proof ซ่อนจำนวนเงิน การป้องกันเหล่านี้บังคับใช้ ทุกธุรกรรมจึงดูเหมือนกันก่อนที่ Dandelion++ จะนำส่งด้วยซ้ำ
สองชั้นช่วยเสริมกัน ลายเซ็นแบบวงซ่อนว่าเอาต์พุตใดเป็นผู้จ่าย และ Dandelion++ ซ่อนว่าโหนดใดกระจายการจ่าย Blocknet รักษาการจ่ายให้เป็นส่วนตัวอย่างไร อธิบายแต่ละชั้นบนเชน ส่วน Blocknet คืออะไร? ให้ภาพรวม รวมการจ่ายด้วยชื่อ Blocknet ID
หากต้องการ BNT ของตัวเองเพื่อส่ง คุณขุดที่บ้านได้ ทำตามคู่มือการขุด Blocknet เพื่อดาวน์โหลด seine ชี้ไป bntpool.com แล้วรับเงินที่ที่อยู่กระเป๋าเงินหรือ @name
คำถามที่พบบ่อย
Dandelion++ ซ่อนที่อยู่ IP ของฉันไหม?
ซ่อนว่าโหนดใดเริ่มธุรกรรมจากผู้สังเกตที่กระจายทั่วเครือข่าย ธุรกรรมจะแพร่กว้างเมื่อเข้าสู่ fluff หลังผ่านหลายช่วงจากคุณ พีร์ stem ตัวแรกเห็นธุรกรรมมาจากโหนดคุณ แต่ข้อความ stem เหมือนกันไม่ว่าโหนดสร้างธุรกรรมเองหรือส่งต่อ จึงแยกไม่ได้ว่าเป็นแบบใด
Dandelion ต่างจาก Dandelion++ อย่างไร?
Dandelion ปี 2017 เสนอช่วง stem และ fluff บนแนวส่งต่อเส้นเดียว Dandelion++ ปี 2018 คงสองช่วงไว้และเสริมความแข็งแกร่งต่อสายสืบที่ไม่ทำตามกฎ ใช้กราฟที่แต่ละโหนดเลือกตัวส่งต่อสองตัว ส่งธุรกรรมตัวเองตามเส้นเชื่อมคงที่หนึ่งเส้น เลือกตัวส่งต่อใหม่ทุก epoch และเพิ่มตัวจับเวลา fail-safe
คริปโตเคอร์เรนซีใดใช้ Dandelion++?
Monero เพิ่ม Dandelion++ ในเวอร์ชัน 0.16 ที่ออกเดือนพฤษภาคม 2020 และ Blocknet ส่งต่อทุกธุรกรรมด้วยโปรโตคอลนี้ กลุ่มวิจัยเดียวกันเสนอ Dandelion สำหรับ Bitcoin ครั้งแรกเป็น BIP 156 เหรียญใดที่ใช้เครือข่าย peer-to-peer ก็รับไปใช้ได้ เพราะเปลี่ยนเพียงวิธีที่โหนดส่งธุรกรรมใหม่หากัน
Blocknet ใช้ค่า Dandelion++ อะไร?
โหนด Blocknet ส่ง stem ต่อด้วยความน่าจะเป็น 0.9 ในแต่ละช่วง ธุรกรรมจึงเข้าสู่ fluff ด้วยโอกาส 10% ที่ตัวส่งต่อแต่ละตัว เส้นทาง stem เปลี่ยนทุก 10 นาที หากธุรกรรมของคุณไม่กลับมาในช่วง fluff ภายใน 45 วินาที โหนดจะกระจายเองเพื่อให้ถึงเครือข่ายเสมอ