BTC
ETH
HTX
SOL
BNB
Xem thị trường
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Đánh giá sự cố Mainnet Ethereum 2.0

ECN以太坊中国
特邀专栏作者
Bài viết này có khoảng 6639 từ, đọc toàn bộ bài viết mất khoảng 10 phút
Đánh giá nêu chi tiết dòng thời gian của sự cố; phân tích nguyên nhân gốc rễ và đưa ra các vấn đề mà những người tham gia và người tham gia Eth2 cần lưu ý.
Tóm tắt AI
Đánh giá nêu chi tiết dòng thời gian của sự cố; phân tích nguyên nhân gốc rễ và đưa ra các vấn đề mà những người tham gia và người tham gia Eth2 cần lưu ý.

Nguồn |Prysmatic Labs

tiêu đề phụ

https://beaconcha.in/epoch/32302

Tóm tắt tai nạn

Kể từ kỷ nguyên 32302, chuỗi đèn hiệu đã mất một số lượng lớn các đề xuất khối. Vì Prysm là ứng dụng khách Eth2 được sử dụng nhiều nhất, nên vấn đề rất có thể xảy ra với Prysm. Sau một thời gian, chúng tôi đã sao chép lỗi cục bộ. Đây thực sự là một vấn đề đã biết với việc bỏ phiếu dữ liệu eth1 và tiền gửi của trình xác thực. Mặc dù sự cố này đã được báo cáo cho chúng tôi trước đây nhưng chúng tôi không thể tái tạo lỗi này và coi đây là một sự cố riêng lẻ. Và vấn đề này chưa bao giờ được phổ biến rộng rãi trong bất kỳ mạng thử nghiệm hoặc mạng chính nào. Đây là lần đầu tiên vấn đề này dẫn đến lỗi đề xuất khối.

Trong 18 kỷ nguyên này, hầu hết tất cả các nút báo hiệu Prysm đều không thể tạo ra các khối mới. Kỷ nguyên 32320 bắt đầu hoạt động bình thường trở lại vào thời điểm mà sự cố được cho là đã kết thúc. Tuy nhiên, khoảng 24 giờ sau, tai nạn lại xảy ra với hậu quả tương tự.

Ảnh hưởng

Đánh giá nêu chi tiết dòng thời gian của sự cố; phân tích nguyên nhân gốc rễ và đưa ra các vấn đề mà những người tham gia và người tham gia Eth2 cần lưu ý.

Ảnh hưởng

Một số dữ liệu sơ bộ cho thấy rằng mỗi trình xác nhận bị ảnh hưởng đã mất trung bình 122.950 gwei (0,3 đô la tại thời điểm viết bài) trong sự cố đầu tiên. Trong vòng 24 giờ sau sự cố đó, một sự cố tương tự thứ hai đã xảy ra, khiến mỗi người xác thực bị ảnh hưởng phải trả khoảng 0,22 đô la.

Một số thông tin chính:

➤ Không có trình xác thực nào bị cắt giảm

➤ Không ảnh hưởng đến việc hoàn thiện chuỗi đèn hiệu

➤ Tỷ lệ tham gia vẫn rất cao (84,8% ở điểm thấp nhất) (Ghi chú của biên tập viên, dữ liệu này phù hợp với vấn đề mới nhất được viết bởi Ben EdgingtonCập nhật tiến độ ETH2Có sự khác biệt. )

➤ Hầu hết các trình xác thực đều mất từ ​​2 đến 3 bằng chứng, bất kể loại khách hàng nào

➤ Lần này dường như không phải là một cuộc tấn công ác ý hay có chủ ý

tiêu đề phụ

Câu hỏi thường gặp

Lối tắt để trở thành người xác thực

Tai nạn này sẽ làm suy yếu niềm tin của mọi người vào ETH2?

Sẽ không. Sự cố không gây ra lỗi đồng thuận và quy mô của sự cố rất nhỏ so với quy mô của mạng chính Eth2 (trong sự cố đầu tiên, mỗi trình xác nhận bị ảnh hưởng đã mất trung bình ~ 0,3 đô la). Kể từ khi ra đời, Eth2 đã rất mạnh với sự tham gia của người xác thực rất cao và sự hoàn thiện mỗi kỷ nguyên. Theo quan điểm của chúng tôi, khả năng mạng trở lại trạng thái hoạt động hoàn hảo sau khi lỗi được giải quyết đã củng cố niềm tin của cộng đồng vào khả năng phục hồi của Ethereum.

Liệu sự cố này có làm suy giảm niềm tin của mọi người đối với nhóm Prysmatic Labs?

Phản ứng và cách giải quyết sự cố này của chúng tôi hoàn toàn khác với những nỗ lực trước đây của chúng tôi để xử lý các lỗi trong mạng thử nghiệm Eth2. Ngay sau khi sự cố xảy ra, nhóm của chúng tôi đã loại bỏ thông tin sai lệch; định lượng tác động; và đưa ra các bước rõ ràng cho người xác nhận trong khi chờ giải pháp. Ngoài ra, sau khi đã xác định đầy đủ hướng giải quyết, chúng tôi sẽ đề nghị mọi người nâng cấp phiên bản client. Điều đáng chú ý là vì ứng dụng khách Prysm là phần mềm có tỷ lệ người dùng lớn nhất trong mạng Ethereum 2.0 nên bất kỳ lỗi nào xuất hiện đều có thể gây ra các vấn đề nghiêm trọng hơn.

tiêu đề phụ

Tóm tắt nguyên nhân gốc rễ của vụ việc

Chuỗi Eth2 và Eth1 được kết nối lỏng lẻo và Eth2 chỉ cần Eth1 để xác minh tiền gửi của trình xác thực. Nghĩa là, chuỗi Eth2 PoS có thể tiếp tục hoạt động ngay cả khi những người xác thực bỏ phiếu cho dữ liệu rác. Điều duy nhất quan trọng là tiền gửi của trình xác thực mới không thể được thêm vào cho đến khi chuỗi PoS bỏ phiếu lại dữ liệu Eth1 chính xác. Việc "bỏ phiếu" này được thực hiện trong "thời gian bỏ phiếu", hiện được đặt thành 64 kỷ nguyên (khoảng 6,8 giờ) trên mạng chính.

Phương pháp bỏ phiếu là một nguyên tắc "đa số" đơn giản, được giải thích trong thông số kỹ thuật của trình xác thực Eth2. Thật không may, Prysm mất một số xác nhận khi thực thi nguyên tắc này (bỏ phiếu theo đa số). Trong sự cố này, do một lỗi trong Prysm, một người đề xuất khối đã tạo một gốc cây ký gửi Eth1 hoàn toàn không hợp lệ và các nút Prysm khác lần đầu tiên phát hiện ra đề xuất khối. Sau đó, họ đã bỏ phiếu hợp lệ về điều này, bởi vì ứng dụng khách Prysm tuân theo một "phiếu bầu đa số" đơn giản mà không cần xác nhận rõ ràng.

Sau đó, tất cả các nút Prysm "quả cầu tuyết" bỏ phiếu cho thông tin không hợp lệ, dẫn đến việc những người đề xuất khối không thể đưa các khối có tiền gửi vào chuỗi. Điều này là do các khoản tiền gửi này không được xác minh đối với gốc cây ký gửi Eth1 của nút, vì vậy các đề xuất khối sẽ không thành công. Sau thời gian bỏ phiếu, sự cố sẽ tự động được giải quyết, nhưng nếu lỗi không được khắc phục, sự cố sẽ tái diễn.

tiêu đề phụ

dòng thời gian sự kiện

Lưu ý, chi tiết kỹ thuật dưới đây! Bạn có thể bỏ qua phần tiếp theo để đọc về giải pháp và bài học rút ra từ sự cố.

Chặn đề xuất không thành công

Kỷ nguyên 32302 bắt đầu gặp vấn đề với các đề xuất khối bị mất.


Nishant đã thông báo cho nhóm và triệu tập một cuộc họp chung tay. Sau đó, chúng tôi đã tái tạo sự cố thông qua nút báo hiệu mạng chính cục bộ và bắt đầu điều tra.

Prysm bỏ phiếu cho rễ cây ký gửi eth1 kỳ lạ, sai, cuộc điều tra tiết lộ

chữ

loại trừ

Nghi ngờ ban đầu là về cách Prysm xử lý phiếu bầu dữ liệu eth1 trong đường dẫn mã đề xuất của trình xác thực. Đặc biệt, chúng tôi cố gắng loại trừ một số vấn đề:

1. Việc đóng gói tiền gửi thành khối có vấn đề gì không?

2. Thông tin nhật ký gửi tiền thu được có lẫn lộn với thông tin eth1 hay không?

3. Cây Merkle ký gửi của chúng tôi có vấn đề gì không?

Trong khoảng 16 giờ tiếp theo, chúng tôi đã dành nhiều thời gian làm việc cùng nhau để chẩn đoán vấn đề cơ bản. Chúng tôi đã xem qua các dòng mã, cố gắng tái tạo quy trình lỗi thông qua các bài kiểm tra đơn vị và thử nhiều phương pháp khác nhau. Mặc dù chúng tôi đã có giải pháp tiềm năng, nhưng chúng tôi lo lắng về việc phát hành bản sửa lỗi do thiếu tự tin.

nguyên nhân gốc rễ hợp lý

Chúng tôi đã học được một số bài học từ kinh nghiệm xử lý lỗi trước đây trong mạng thử nghiệm Eth2 rằng chỉ tin tưởng vào nguyên nhân gốc rễ là chưa đủ. Trong các tình huống rủi ro cao, chúng tôi cần tin tưởng 100% vào giải pháp trước khi phát hành cho người dùng. 28 giờ sau khi tai nạn xảy ra, chúng tôi ngồi xuống và tự hỏi: "Còn điều gì chúng ta không biết? Chúng ta có thể hỏi những câu hỏi nào sẽ đưa chúng ta đến gần hơn với nguyên nhân gốc rễ của sự cố?" Sau đó, chúng tôi đã học được những điều sau: điểm:

1. Việc triển khai cây merkle thưa thớt của chúng tôi không có lỗi nghiêm trọng vì nó sử dụng tiền gửi mạng thử nghiệm mạng chính và Prater, phù hợp với việc triển khai zrnt Eth2 của Lighthouse và Protolambda.

2. Đường dẫn mã chúng tôi sử dụng để truy xuất dữ liệu Eth1 từ các nút Eth1 không có lỗi cũng như không trả về dữ liệu không chính xác.

Những gì chúng ta không biết là:

1. Rễ cây ký gửi không hợp lệ được tạo ra như thế nào

2. Tại sao vấn đề này có thể lặp lại ở một số nút, nhưng không phải ở các nút khác

3. Tại sao nút Prysm lại mắc lỗi "từng cái một" khi xác định số tiền gửi trong khối

khắc phục sự cố

Để trả lời những câu hỏi này, chúng tôi đã xem xét đường dẫn mã khởi tạo cây ký gửi của chúng tôi. Hóa ra là một lớp bộ nhớ đệm đã được thêm vào từ rất sớm để tránh phải tải xuống tất cả các bản ghi ký gửi của trình xác thực mỗi khi người đặt cược khởi động các nút của họ. Ngoài ra, chúng tôi đã thêm một tính năng mới - khả năng khởi động Prysm từ trạng thái gốc được nhúng bên trong máy khách. Một mặc định sai trong cây ký gửi của chúng tôi đã khiến thông tin bị hỏng khi điền vào bộ đệm:

gốc của vấn đề

Hóa ra hàm len(items) sẽ luôn trả về 1 nếu cây ký gửi của chúng ta trống. Điều này có nghĩa là chúng tôi đặt giá trị của lastReceivedMerkleIndex thành 0 trong khi thực tế chúng tôi nên đặt giá trị đó thành -1. Đoạn mã trên sẽ khiến một số nút Prysm trong đường dẫn mã bỏ qua việc nhúng tiền gửi 0 vào cây. Phần còn lại của cơ sở mã của chúng tôi đều chỉ ra phần kỳ lạ này trong quá trình triển khai cây ký gửi của chúng tôi là vấn đề chứ không phải đường dẫn mã này.

tiêu đề phụ

vấn đề được giải quyết

Tóm tắt nguyên nhân gốc rễ

➤ Prysm lưu giữ dữ liệu eth1 trên đĩa để ngăn người dùng phải thực hiện các yêu cầu đối với nhật ký hợp đồng tiền gửi của trình xác thực mỗi khi quá trình được khởi động lại.

➤ Nếu một nút khởi động lại và lưu giữ dữ liệu eth1 trên đĩa, chúng tôi sẽ khởi tạo bộ đệm ký gửi từ dữ liệu này, nhưng do cách trình trợ giúp cây merkle thưa thớt (SMT) của chúng tôi Đường dẫn mã để khởi tạo bộ đệm này khác với dữ liệu ở trên, chúng tôi sẽ bỏ qua việc nhúng khoản tiền gửi thứ 0 vào cây ký gửi, dẫn đến gốc cây ký gửi không hợp lệ. Đường dẫn mã này chỉ ảnh hưởng đến các nút chưa có cơ sở dữ liệu kể từ khi khởi tạo và sau đó đã được sửa.

➤ Trong thông số kỹ thuật chính thức, các nút Prysm tuân theo nguyên tắc "đa số tuyệt đối" để thực hiện thuật toán bỏ phiếu dữ liệu eth1, nhưng Prysm không thực hiện đầy đủ một số điều kiện hợp lệ của thuật toán. Các nút Prysm bỏ phiếu với đa số phiếu bầu dữ liệu eth1 tham chiếu gốc khối hiện có, điều này có thể khiến nút Prysm bỏ phiếu cho hàm băm cây ký gửi được tạo bởi cây ký gửi có vấn đề vì các khoản ký gửi này không được xác minh.

➤ Vì phần lớn các nút trong mạng là nút Prysm, nên hiệu ứng quả cầu tuyết của việc bỏ phiếu cho các cuống tiền gửi bị lỗi với quy tắc đa số đã phát triển thành một vấn đề nghiêm trọng vì các nút Prysm không thể tạo khối trên mạng chính trong một khoảng thời gian sau đó.

giải pháp

giải pháp

Vào lúc 13:00 giờ Bắc Kinh vào Chủ nhật, ngày 25 tháng 4, sau nhiều giờ không chắc chắn, chúng tôi đã phát hành bản sửa lỗi cho sự cố này. Chúng tôi hoàn toàn chắc chắn về giải pháp này và rất tự tin rằng vấn đề này sẽ không tái diễn trong Eth2 sau khi nâng cấp nút.

học một bài học

➤ Sự tự tin trong giải pháp của chúng ta và giao tiếp cẩn thận với thế giới bên ngoài là rất quan trọng trong sự kiện

Chúng tôi đã học được một bài học quan trọng về giá trị của giao tiếp tốt khi chúng tôi gặp sự cố mạng thử nghiệm Eth2 Medalla. Mỗi bình luận công khai và cách diễn đạt chính xác của ngôn ngữ có thể có tác động nghiêm trọng đến kết quả của các sự kiện. Trong trường hợp của testnet, chúng tôi nghĩ rằng một giải pháp tức thời là thông báo cho mọi người thông qua các kênh công khai để "khởi động lại các nút của bạn". Quyết định vội vàng này đã khiến hầu hết các nút trên mạng ngoại tuyến, sau đó tranh giành để tìm các nút tốt trong số các nút xấu để đồng bộ hóa với chuỗi khối. Ngoài ra, chúng tôi đã nhanh chóng phát hành một bản vá nóng nâng cấp phần mềm mà chúng tôi không tự tin 100% sẽ giải quyết được vấn đề. Điều này gây ra nhiều nhầm lẫn hơn cho hệ thống và tạo ra sự nghi ngờ giữa các nhà khai thác nút về giải pháp.

Ngược lại, trong toàn bộ quá trình xảy ra sự cố mainnet mới, chúng tôi luôn chú ý đến việc giao tiếp cẩn thận và chính xác. Ngoài ra, chúng tôi không phát hành các hotfix cho đến khi chúng tôi chắc chắn 100% về nguồn gốc và giải pháp của sự cố.

➤ Kiên nhẫn và bình tĩnh có thể giúp giải quyết vấn đề

Nhóm của chúng tôi đã dành vài năm qua để xây dựng Eth2 và đã học được cách giữ bình tĩnh khi đối mặt với nghịch cảnh. Chúng tôi tin rằng điều quan trọng là phải giữ bình tĩnh, thường xuyên liên lạc báo cáo trạng thái và đảm bảo nhóm cảm thấy được hỗ trợ cũng như phản hồi tích cực là rất quan trọng trong quá trình giải quyết vấn đề. Chúng tôi đã có thể dành thời gian để thu thập càng nhiều bằng chứng càng tốt và làm việc tỉ mỉ với người dùng của mình và chúng tôi sẽ giải quyết thành công vấn đề này. Quan trọng hơn, chúng tôi đã dành thời gian để định lượng tác động của sự kiện ngay từ đầu nhằm giảm bớt sự lo lắng của người đặt cược và thiếu thông tin. Bài học này rất quan trọng để làm việc trong tình trạng căng thẳng cao độ và thiếu ngủ. Hãy chậm lại, khắc phục nó bằng các biện pháp thích hợp và tránh làm cho vấn đề trở nên tồi tệ hơn bằng mọi giá.

➤ Mạng thử nghiệm Eth2 không bằng mạng chính

Đối với ứng dụng khách Prysm, chúng tôi đã thử nghiệm rộng rãi và lắng nghe các ứng cử viên phát hành tiền sản xuất của Prysm trên mạng thử nghiệm Eth2 công khai. Cả mạng thử nghiệm Prater và Pyrmont đều là những công cụ tuyệt vời để người dùng kiểm tra thiết lập của họ trước khi tham gia mạng chính Eth2. Tuy nhiên, các mạng thử nghiệm này giả định rằng tỷ lệ của bốn ứng dụng khách Eth2 cấp sản xuất gần với điểm trung bình, tức là không có ứng dụng khách nào chiếm đa số rõ ràng trong số những người xác thực. Thật không may, điều này có thể không tính đến các lỗ hổng chỉ phát sinh khi một ứng dụng khách nhất định được hầu hết mọi người sử dụng. Trong tương lai, Prysmatic Labs sẽ thử nghiệm trong mạng thử nghiệm nội bộ trong môi trường gần với môi trường mạng chính hơn hoặc môi trường có 50% nút mạng Prysm.

tiêu đề phụ

Những người đặt cược nên suy nghĩ về điều gì

Tại sao nên sử dụng ứng dụng khách Prysm để đặt cược

https://launchpad.ethereum.org

Mọi người chọn chạy Prysm vì ngay từ đầu nhóm của chúng tôi đã tập trung vào việc làm cho trải nghiệm đặt cược Ethereum của họ dễ dàng hơn. Tôi đã nói chuyện với người dùng của mình nhiều lần và nhiều người chọn một ứng dụng khách không phải vì tối ưu hóa vi mô hoặc chênh lệch lợi nhuận tương đối nhỏ so với các ứng dụng khách khác, mà vì chúng tôi làm cho trải nghiệm của họ đơn giản hơn - thông tin tài liệu tốt, đã và đang cung cấp hỗ trợ quan trọng cho tất cả các thành viên cộng đồng. Đối với những người mới, Eth2 thật đáng sợ và việc đặt cược đầy rẫy những điều không chắc chắn và rủi ro. Nhiệm vụ của nhóm chúng tôi là cho người dùng biết rằng chúng tôi luôn ở đó vì họ và nhận được sự hỗ trợ của chúng tôi cho dù vấn đề của họ nhỏ đến đâu. Đặc biệt, chúng tôi đã để mắt đến những người đặt cược bình thường, những người có thể không quen thuộc với dòng lệnh hoặc hệ điều hành UNIX.

Trong tương lai, bạn có thể mong đợi những điều sau đây từ nhóm của chúng tôi:

➤ Cải thiện độ chính xác của việc triển khai các điều kiện đặc tả, đảm bảo rằng các điều kiện đặt trước và hợp lệ được xem xét và thử thách đầy đủ trước khi viết bất kỳ mã nào

➤ Chúng tôi sẽ nỗ lực hơn nữa để cải thiện trải nghiệm này, làm cho Prysm tốt hơn gấp nhiều lần so với hiện tại, giúp những người đặt cược sử dụng ứng dụng khách của chúng tôi tham gia vào mạng dễ dàng hơn, bao gồm cả những cải tiến đối với giao diện web.

➤ Prysm sẽ tăng gấp đôi R&D,<>Hợp nhất trước của eth2 cung cấp các tính năng và cải tiến chính.

➤ Chúng tôi tin rằng sự cạnh tranh lành mạnh sẽ tạo ra động lực mạnh mẽ để thúc đẩy Proof-of-Stake của ETH được tham gia nhiều hơn và do đó an toàn hơn khi tất cả các nhóm khách hàng liên tục cải tiến phần mềm của họ

➤ Nhóm của chúng tôi cam kết giải quyết các vấn đề mà người đặt cược có thể gặp phải với các tiêu chuẩn chuyên nghiệp cao nhất. Chúng tôi tin rằng chúng tôi sẵn sàng xử lý mọi vấn đề xảy ra và đảm bảo với cộng đồng rằng chúng tôi sẽ ưu tiên cao nhất cho trải nghiệm của người đặt cược.

➤ Cuối cùng, chúng tôi tin rằng có nhiều tính năng quan trọng có thể khiến Prysm trở thành một phần mềm hấp dẫn hơn để tham gia vào Eth2 và chúng tôi sẽ tiếp tục lặp lại hướng tới mục tiêu này

tiêu đề phụ

Phản ánh về cuộc trò chuyện đa dạng của khách hàng

Một chủ đề phổ biến mà chúng tôi đã nghe kể từ khi Eth2 ra đời là sự đa dạng của khách hàng. Eth2 là một hệ thống phân tán với mọi người trên khắp thế giới tham gia với tư cách là người xác thực. Những người khác nhau sử dụng các phần mềm khác nhau để tham gia vào sự đồng thuận của chuỗi khối. Nếu có vấn đề nghiêm trọng với một phần mềm nhất định, nếu các máy khách chạy mạng được phân phối một cách cân bằng, thì tác động sẽ nhỏ hơn.

Leonardo Bautista-Gomez đã đưa ra một phân tích dữ liệu vào đầu tháng 1 và kết quả cho thấy các nút Prysm chiếm 65% mạng.Sự cố này cũng cho thấy các trình xác thực Prysm chiếm đa số hiện nay.

https://github.com/leobago/BSC-ETH2/tree/master/armiarma

Chúng tôi khuyên bạn nên có cái nhìn khách quan về từng khách hàng: phần mềm, cộng đồng và khả năng phục hồi của nó, đồng thời quyết định phần mềm nào và nhóm đằng sau phần mềm đó phù hợp nhất với nhu cầu của bạn. Nếu ứng dụng khách Eth2 thiếu thứ gì đó quan trọng đối với bạn hoặc lý do bạn không chọn ứng dụng khách của họ, chúng tôi đặc biệt khuyến khích bạn gửi yêu cầu tính năng. Prysmatic Labs tiếp tục tập trung vào việc giúp bạn tham gia vào mạng Ethereum và vượt qua ranh giới của phần mềm chuỗi khối.

đề cập đến

đề cập đến

• Thông báo về sự cố https://www.reddit.com/r/ethstaker/comments/mxpz57/regarding_the_recent_beacon_chain_incident/

• Báo cáo khám nghiệm tử thi https://docs.google.com/document/d/1nJr6_bd-UnLBxvhT8lcRYdAZr69QdVQ3zJNUr3LgW-0/edit?usp=sharing

• Sự cố mạng thử nghiệm Medalla https://medium.com/prysmatic-labs/eth2-medalla-testnet-incident-f7fbc3cc934a

https://medium.com/prysmatic-labs/tagged/blockchain)

Liên kết gốc: https://medium.com/prysmatic-labs/eth2-mainnet-incident-retrospective-f0338814340c

ETH
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký:
https://t.me/Odaily_News
Nhóm trò chuyện:
https://t.me/Odaily_GoldenApe
Tài khoản chính thức:
https://twitter.com/OdailyChina