หลังจากข้อเท็จจริง: GRANDPA Equivocation และกระบวนการ sysinfo ในที่สุดก็นำไปสู่การลงโทษครั้งใหญ่สำหรับ Kusama Netw
ข้อความ

คำอธิบายภาพ
“จุดบกพร่องหลายจุดในโค้ดทำให้โหนดถอนตัวออกจากเครือข่าย Kusama และสูญเสียฐานข้อมูลที่จัดเก็บบล็อกของบล็อกที่ตรวจสอบแล้ว ด้วยเหตุนี้ โหนดเดียวกันจึงลงนามบล็อกเหล่านี้สองครั้งเมื่อรีสตาร์ท การเคลื่อนไหวสภาของ Kusama ถูกกำหนดให้กับผู้ใช้ จากปัญหานี้ได้รับการชดเชย”
ในวันศุกร์ที่ 31 กรกฎาคม ตัวตรวจสอบความถูกต้องของ Kusama สองตัวที่มีรันไทม์ v2019 เริ่มหยุดทำงานทุกๆ สองสามนาที ทำให้เกิดข้อผิดพลาดที่ชัดเจน 2 รายการ และรายงานปัญหา เมื่อมองแวบแรก ปัญหาน่าจะอยู่ที่คีย์ของโปรแกรมตรวจสอบความถูกต้อง ค้นพบในภายหลังว่านี่ไม่ใช่สาเหตุเนื่องจากตัวตรวจสอบความถูกต้องที่ได้รับผลกระทบยืนยันกันเองว่าพวกเขาไม่ได้เปลี่ยนคีย์ในกระบวนการ นอกจากนี้ ดูเหมือนว่าปัญหาจะเกิดขึ้นเฉพาะในเครือข่าย Kusama ไม่ใช่ Polkadot
เจาะลึกลงไปอีกเล็กน้อย ทีมงานพบว่าปัญหาดูเหมือนจะเกิดจากความคลุมเครือของ GRANDPA ซึ่งนำไปสู่เหตุการณ์สแลชใน Kusama ซึ่งเดิมทีมีสาเหตุมาจากการรั่วไหลของ file descriptor ทำให้โหนดขัดข้อง การรั่วไหลนี้ป้องกันไม่ให้โหนดเขียนสถานะของผู้ลงคะแนน GRANDPA (การลงคะแนนในรอบที่กำหนด) ลงในดิสก์ และทำให้โหนดที่สูญเสียข้อมูลนี้ลงคะแนนอีกครั้งหลังจากรีสตาร์ท . สิ่งนี้ทำให้อัลกอริทึม GRANDPA พบกับสถานการณ์อัลกอริทึมที่ไม่ชัดเจน
https://wiki.polkadot.network/
GRANDPA Equivocation: ผู้ตรวจสอบความถูกต้องลงนามข้อมูลการลงคะแนนความตั้งใจตั้งแต่ 2 รายการขึ้นไปในเวลาบล็อกเดียวกันแต่คนละสาย
การรวมกันของสองเหตุการณ์นี้นำไปสู่สถานการณ์ที่ผู้ตรวจสอบถูกลงโทษอย่างหนักในช่วงหนึ่งหลังจาก v0.8.15 (Kusama v2015) เปิดตัวและอัปเกรดเครือข่าย การค้นพบสิทธิ์มีให้บริการมาระยะหนึ่งแล้วที่ระดับโมดูลรันไทม์ แต่ไม่ได้เปิดใช้งานตามค่าเริ่มต้นบนไคลเอ็นต์ และเวอร์ชันนี้ยังเปิดใช้งานอัลกอริทึม GRANDPA เพื่อรายงานความกำกวมสำหรับภายนอกที่ไม่ได้ลงนามhttps://github.com/
คุณสมบัติการรายงานใหม่ของ GRANDPA:
ด้วยข้อมูลนี้ สมมติฐานหลักของทีมคือความคลุมเครือที่เกิดจากการรั่วไหลของ file descriptor จริง ๆ แล้วเริ่มเกิดขึ้นตั้งแต่เนิ่น ๆ แต่ได้รับการรายงานหลังจากการอัปเกรด v0.8.15 เดือนกรกฎาคมเท่านั้น: โหนดขัดข้องกับเครือข่ายที่ใช้เวอร์ชันนี้ หลังจากนั้นจึงเริ่มรายงาน สถานะโหนดของตัวเอง ซึ่งดึงดูดความสนใจของทีมที่เกี่ยวข้อง ถึงกระนั้น การตรวจสอบบันทึกของโหนดที่เรียกใช้โดย Parity ไม่ได้เปิดเผยเหตุการณ์ "Equivocation" ที่ไม่ชัดเจนใดๆ ก่อนหน้านี้ (พวกเขาจะถูกบันทึกไปยังเทอร์มินัล)
การวิจัยเพิ่มเติมเกี่ยวกับสาเหตุของการรั่วไหลของตัวอธิบายไฟล์ชี้ไปที่สาเหตุหลักสองประการ: การค้นพบสิทธิ์และการรวบรวมเมตริก การค้นพบสิทธิ์โดยใช้ซ็อกเก็ตจำนวนมากเกินไปในการสืบค้นข้อมูลจาก DHT (เช่น การค้นพบที่อยู่ IP ของสิทธิ์อื่นๆ) สำหรับการรวบรวมเมตริกของระบบ (เช่น CPU และหน่วยความจำ) เราอาศัย sysinfo crate ซึ่งเก็บแคชของตัวอธิบายไฟล์ไว้ในกระบวนการทั้งหมดในระบบและเธรดของแต่ละกระบวนการ (ข้อมูลได้มาจากการอ่าน /proc)
วิธีแก้ปัญหาระยะสั้นคือการปิดใช้งาน Authorization Discovery ตามค่าเริ่มต้น และหยุดรวบรวมเมตริกของระบบ หากมีวิธีแก้ปัญหาสำหรับซ็อกเก็ต overcommitting โมดูล Authority Discovery จะถูกเปิดใช้งานอีกครั้งในรีลีสในอนาคต
ก่อนออกเวอร์ชันใหม่ ทีม Parity แนะนำให้ปิดใช้งาน Authority Discovery ด้วยตนเอง นอกจากนี้ ในกรณีใดก็ตามที่โหนดขัดข้อง ขอแนะนำให้ผู้ตรวจสอบความถูกต้องแนะนำการหน่วงเวลา (1-2 นาที) ก่อนเริ่มการทำงานใหม่ ซึ่งช่วยลดโอกาสที่โหนดจะมี Equivocation ใน GRANDPA หากตั๋วของโหนดไม่คงอยู่ในดิสก์
หลังจากการหารือและการพัฒนา Polkadot v0.8.22 ได้รับการเผยแพร่แล้ว รวมถึงการแก้ไขระยะสั้นตามรายละเอียดข้างต้น ตัวตรวจสอบความถูกต้องทั้งหมดควรอัปเกรดเวอร์ชันของตนและตรวจสอบผลลัพธ์ สภา Kusama ได้คืนสถานะการเฉือนทั้งหมดที่เกิดจากข้อผิดพลาด และด้วยจิตวิญญาณนี้ จึงมีการอภิปรายใหม่เกี่ยวกับการคืนสถานะการสูญเสียทางเศรษฐกิจมากกว่าการสูญเสียการเสนอชื่อผู้ตรวจสอบความถูกต้อง
เพื่อให้ทันกับการพัฒนา มีหลายวิธีในการมีส่วนร่วมกับชุมชน Kusama เข้าร่วมการสนทนาในช่อง Kusama:
https://wiki.polkadot.network/
แปลและเรียบเรียง: Shawn PolkaBase
แปลและเรียบเรียง: Shawn PolkaBase
ลิงค์ต้นฉบับ:https://polkadot.network


