คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
เพื่อสรุปเหตุการณ์ Kintsugi อย่างครอบคลุม แผนปฏิบัติการเฉพาะก่อนการควบรวม mainnet คืออะไร
ECN以太坊中国
特邀专栏作者
2022-02-10 03:18
บทความนี้มีประมาณ 3212 คำ การอ่านทั้งหมดใช้เวลาประมาณ 5 นาที
Kintsugi พบปัญหาหลายอย่างในช่วงสองสามสัปดาห์แรกของการดำเนินงาน ซึ่งเผยให้เห็นช่องโหว่หลายจุ

ผู้เขียนต้นฉบับ: parithosh

ที่มา: notes.ethereum.org

สรุป

สรุป

สรุป

สรุป

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

บล็อกแบบนี้blockHash(บล็อกแฮช) ถูกแทนที่ด้วยของมันparentHash(แฮชบล็อกพาเรนต์)engine_executePayloadมีหน่วยการสร้างและหน่วยการสร้างทั้งหมดblockHashต้องใช้พารามิเตอร์ทั้งหมด ไคลเอ็นต์ EL (execution layer) ควรสร้างบล็อกตามพารามิเตอร์เหล่านี้และblockHashรับรองความถูกต้อง บล็อกนี้ไม่ผ่านการตรวจสอบของ Geth อย่างถูกต้อง แต่ผ่านการทดสอบของ Nethermind และ Besu บล็อกได้รับการตรวจสอบอย่างไม่ถูกต้องใน Nethermind เนื่องจากปัญหาการแคช ในขณะที่ Besu ไม่มีการตรวจสอบดังกล่าวเลย ด้วยเหตุนี้ บล็อกจึงถูกเสนอโดยโหนด Lighthouse-Besu และทำให้บล็อกเชนแยกออกเป็นสองส่วน โดยมีตัวตรวจสอบความถูกต้องที่เชื่อมต่อกับ Nethermind หรือ Besu ที่ระดับการดำเนินการที่ทางแยกหนึ่ง และตัวตรวจสอบความถูกต้องที่เชื่อมต่อกับ Geth ที่ทางแยกหนึ่ง ที่อีกทางหนึ่ง .

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

ปัญหาของ Geth คือเมื่อเรียกใช้งานเพย์โหลดผิด มันจะส่งคืนข้อผิดพลาด JSON-RPC แทนINVALID(ใช้งานไม่ได้) และปัญหาของ Teku (แก้ไขแล้ว แต่ไม่ได้ปรับใช้ ณ จุดนี้) คือข้อบกพร่องเหล่านั้นสามารถผ่านได้ในโหมดการซิงค์ในแง่ดี ดังนั้นโหนด Teku-Geth จะยังคงเข้าสู่โหมดการซิงค์ในแง่ดีเมื่อพบการโหลดที่ไม่ถูกต้อง เนื่องจากตัวบล็อกนั้นถูกต้อง โหนด Geth ที่เชื่อมต่อจึงดึงข้อมูลจากเครือข่ายแทนที่จะเป็น engineAPI ดังนั้นโหนด Teku-Geth จึงอยู่บนทางแยกที่ไม่ถูกต้อง เนื่องจากโหนด Teku ยังคงเป็นเวอร์ชันเก่าที่มีข้อบกพร่องมากมาย โหนด Teku-Geth จึงยังคงอยู่ในโหมดการซิงค์ในแง่ดีและปฏิเสธที่จะเสนอบล็อกในช่วงที่บล็อกเชนหยุดการสรุป ขณะนี้เราอยู่ในสถานการณ์ที่ไคลเอนต์เลเยอร์ฉันทามติ (ประภาคาร, ไพรส์ม, นิมบัส และโลเดสตาร์) - Geth (ประมาณ 46%) และไคลเอนต์เลเยอร์ฉันทามติ - Nethermind/Besu (ประมาณ 19%) อยู่บนทางแยกที่แตกต่างกัน ตัวตรวจสอบที่เหลือทำงาน Teku-Geth (ประมาณ 35%) อยู่ในโหมดซิงค์ในแง่ดี

หลังจากค้นหาและใช้งานการแก้ไขสำหรับโหนด Nethermind และ Besu แล้ว เราก็สามารถนำการแก้ไขเหล่านั้นกลับมาใช้เชนที่ถูกต้องได้ การอัปเดตโหนด Teku-Geth ทำให้เกิดปัญหาอื่นที่เกี่ยวข้องกับการเข้าถึงหน่วยความจำที่ไม่ถูกต้อง ซึ่งเกิดจากปัญหาใน Geth ที่เกี่ยวข้องกับการตรวจสอบความถูกต้องของลำดับการบล็อก ช่องโหว่เฉพาะนี้ยังถูกกระตุ้นโดย Fuzzer ของ Marius ซึ่งสร้างparentRootถูกต้องและblock_number=1ปิดกั้น. ก่อนที่ Geth จะดำเนินการบล็อก จะต้องดูบล็อกหลักเพื่อดูว่าจำเป็นต้องซิงโครไนซ์หรือไม่ วิธีหนึ่งในการทำเช่นนี้คือการตรวจสอบในแคชparentHashและparentHashและblockNumber. เนื่องจาก Teku ดำเนินการโหลดทั้งหมดในส้อมทั้งหมดพร้อมกัน แคชจึงไม่มีอีกต่อไปparentHash. ดังนั้น Geth จึงพยายามส่งผ่าน parentHash และblockNumberค้นหาบล็อกหลัก อย่างไรก็ตาม ฐานข้อมูลไม่มีแฮชของ blockNumber นี้ (บล็อกนี้สร้างโดย fuzzer) Geth จะอนุมานว่าเนื่องจากไม่มี parent block จึงจำเป็นต้องเปิดการซิงค์ อย่างไรก็ตาม การซิงโครไนซ์ที่ถูกทริกเกอร์ด้วยวิธีนี้จะพยายามซิงโครไนซ์เชนที่สั้นกว่าเชนที่มีสิทธิ์ ซึ่งละเมิดเงื่อนไขบางประการใน Geth ซึ่งทำให้เกิดข้อผิดพลาดของกระบวนการ Geth โหนดปิด และโหนด Teku-Geth มักจะอยู่ในสถานะที่ไม่แข็งแรง

ในระหว่างการแก้ไขข้อบกพร่องของปัญหาข้างต้น ทีม Geth ยังพบสภาวะการแย่งชิงในฐานรหัสที่ผสานซึ่งก่อให้เกิดข้อผิดพลาด นอกจากนี้ เรามีปัญหาอื่น ๆ - Nimbus มีข้อบกพร่องที่เกี่ยวข้องกับการเชื่อมต่อชั้นผู้บริหารใหม่ Lodestar ได้ลดคะแนนของเพื่อนที่ปฏิเสธที่จะสร้างบล็อค

ชื่อระดับแรก

FAQ

ถาม: testnet นี้เสียหรือไม่

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

ถาม: ทำไมห่วงโซ่นี้ถึงไม่ได้รับการสรุปเป็นเวลานานนัก

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

ถาม: ตัวตรวจสอบความถูกต้องของห่วงโซ่แบบแยกจะถูกเฉือนหรือไม่

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

ถาม: สิ่งนี้จะส่งผลต่อการเปิดตัว mainnet อย่างไร จะมีความล่าช้าใหม่หรือไม่?

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

ถาม: สิ่งนี้จะส่งผลต่อแผนการทดสอบอย่างไร

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

ความหมายที่สำคัญสำหรับตัวตรวจสอบความถูกต้อง ผู้ให้บริการโครงสร้างพื้นฐาน และผู้พัฒนาเครื่องมือ:

ระยะเวลาที่ยังไม่สิ้นสุดใน testnet ช่วยเสริมข้อสันนิษฐานบางประการเกี่ยวกับข้อกำหนดด้านฮาร์ดแวร์ที่เลวร้ายที่สุด ในช่วงระยะเวลาที่ไม่ใช่การสรุป ผู้ตรวจสอบความถูกต้องควรคาดหวังว่าจะ:

  • โหลด CPU เพิ่มขึ้น (บางครั้งสูงถึง 100%) เนื่องจากต้องประเมินกฎการเลือกส้อมหลายข้อ

  • การใช้งาน HDD จะเพิ่มขึ้นในช่วงที่ยังไม่สิ้นสุดเนื่องจากจะไม่มีการตัดแต่ง

  • จะมีการใช้ RAM เพิ่มขึ้นเล็กน้อย

ซึ่งหมายความว่าเครื่องมือเพิ่มเติมหรือการมอนิเตอร์ที่ทำงานบนเครื่องเดียวกันจะเกิดการแย่งชิงทรัพยากร เครื่องมือของ Kintsugi testnet (block explorer, faucet, RPC) ทำงานบนคลัสเตอร์ Kubernetes ที่มี 3 โหนด คลัสเตอร์นี้ยังเรียกใช้โหนดสัญญาณที่ใช้โดยเครื่องมือต่างๆ เนื่องจากโหนดบีคอนใช้ทรัพยากรมากกว่าที่จัดเตรียมไว้มาก เครื่องมือของเราจึงมักทำงานในลักษณะที่ด้อยประสิทธิภาพเนื่องจากทรัพยากรไม่เพียงพอ เป็นเรื่องที่รอบคอบสำหรับผู้ให้บริการโครงสร้างพื้นฐานในการเรียกใช้ฉันทามติและเลเยอร์การดำเนินการบนเครื่องที่แยกจากกัน หรือมีข้อกำหนดการใช้ทรัพยากรที่เข้มงวด

การผสานหมายความว่าไคลเอนต์เลเยอร์ฉันทามติแต่ละรายการจำเป็นต้องเรียกใช้ไคลเอนต์เลเยอร์การดำเนินการของตนเอง ไคลเอ็นต์เลเยอร์การดำเนินการ (บน mainnet) ต้องการความจุของดิสก์จำนวนมาก การใช้งานดิสก์ของ CL ยังสามารถเพิ่มขึ้นอย่างรวดเร็วในช่วงที่ยังไม่สิ้นสุด ซึ่งอาจนำไปสู่การหยุดทำงานเนื่องจากเนื้อที่ดิสก์ไม่เพียงพอ ตัวตรวจสอบความถูกต้องทั้งหมดควรตรวจสอบให้แน่ใจว่ามีพื้นที่ดิสก์บัฟเฟอร์ขนาดใหญ่พอที่จะจัดการกับปัญหาประเภทนี้

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

ETH
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
Kintsugi พบปัญหาหลายอย่างในช่วงสองสามสัปดาห์แรกของการดำเนินงาน ซึ่งเผยให้เห็นช่องโหว่หลายจุ
คลังบทความของผู้เขียน
ECN以太坊中国
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android