Hiện tại có 4 hoặc 5 fork chính trên testnet (mạng thử nghiệm) Ethereum 2.0 sau khi xuất hiện 1 lỗi làm hỏng các node Prysm và toàn bộ mạng.
Một người làm việc lâu năm tại Lighthouse cho biết:
“Chúng tôi cần làm cho tất cả client (máy khách) đồng ý về người đứng đầu hiện tại. Lỗi cũng tàn phá đồng bộ những người cùng tham gia tuyên bố các quan điểm khác nhau về chuỗi. Chúng tôi sẽ triển khai một loạt các trường hợp và các bản sửa lỗi trong vòng một tuần để giải quyết tất cả những điều này”.
Người điều hành client Prysm nói với nhà phát triển Prysm Nishant Das:
“Nó thay đổi lên xuống ở khắp nơi… giống như không thể quyết định. Phải tổ chức lại rất nhiều”.
Bên cạnh đó, nhà phát triển Prysm Raul Jordan khẳng định:
“Có nhiều fork khác nhau xuất hiện ngay bây giờ và một số node bị mắc kẹt ở phía sau rất xa, vì vậy bạn nhận được tất cả các yêu cầu của khối mẹ này để thử và giải quyết nó, nhưng vấn đề chính được hiển thị trên eth2stats mà cả Lighthouse và Prysm cùng thống nhất”.
Do tất cả các fork này, yêu cầu bộ nhớ đã tăng vọt:
Fork testnet Ethereum 2.0 tăng yêu cầu tài nguyên node, tháng 8/2020
Paul Hauner của Lighthouse nhận xét:
“Các kỹ thuật nén cơ sở dữ liệu hiệu quả nhất xảy ra sau khi hoàn thiện. Chúng tôi cũng đã thấy một số vấn đề với cơ sở dữ liệu ngăn chặn việc cắt xén, nhưng tôi không chắc điều đó có vai trò ở đây”.
Tình hình hiện tại dường như đã được cải thiện đáng kể vào hôm qua. Những người chạy node được yêu cầu để nó chạy nếu họ có thể, thay vì khởi động lại vì chỉ làm mất tất cả đồng bộ cho đến thời điểm đó. Một người chạy node cho biết:
“Tôi đang sử dụng –block-batch-limit = 512 & –p2p-max-peer = 200 dường như đang chạy theo”.
Tham số ngang hàng tối đa không nằm trong đề xuất của các nhà phát triển, nhưng giới hạn lô khối thì có, Das nêu rõ:
“Vì vậy, khi bạn bị mắc kẹt, nó sẽ chuyển qua các khối khác để cố gắng tháo gỡ. Sử dụng kích thước lô lớn hơn sẽ chuyển qua các khối đó nhanh hơn.”
Một số cá nhân cho biết họ gặp lỗi về yêu cầu khối mẹ. Họ được yêu cầu bỏ qua vì node đang thực hiện tất cả các fork với việc Preston Van Loon xuất bản một cây của mạng.
Rõ ràng bạn có thể lấy cây này bằng cách truy cập localhost:8080/tree, cho phép bạn xem chuỗi đang chạy như thế nào.
Theo đó, ban đầu một chuỗi hoạt động tốt, sau đó chúng ta có hai chuỗi và tiếp tục chia tách. Tất cả sau đó sẽ bị loại bỏ với một chuỗi chạy lại.
Chuỗi trên testnet Ethereum 2.0, tháng 8/2020
Các node mới dường như chỉ cần trải qua quá trình đồng bộ hóa và phải biết về các fork này, sau đó bỏ các fork có node, rồi chuyển đến đầu hợp lệ.
Rõ ràng điều này cần phải đạt được tỷ lệ tham gia là 66% và người bị bỏ sẽ bị cắt giảm cho đến lúc đó:
Người khởi chạy node trên testnet Ethereum 2.0 bị cắt giảm
Những người khởi chạy node trên Ethereum đã kiếm được khá nhiều tiền một cách hiệu quả mà không làm gì cả sau khi bật thiết lập node.
Hơn nữa, ngay cả sau khi bị bỏ, anh ta vẫn có lãi, nhưng bạn có thể thấy đường lên chậm hơn rất nhiều so với đường xuống. Anh ấy kiếm được hàng ngày, nhưng hiện tại anh đang thua lỗ theo giờ.
Điều đó có nghĩa là anh ta có động lực rất lớn để quay lại đồng bộ hóa vì anh và những người khác có thể đạt đến đầu chuỗi càng sớm thì càng nhanh chóng kiếm được tiền hơn là mất tiền.
Các nhà phát triển đang cố gắng hết sức để giúp anh trên con đường đến đó, thử các thủ thuật và bản sửa lỗi khác nhau trong khi hỗ trợ bất kỳ ai cần giúp đỡ.
Một số người tự hào tuyên bố họ đã đạt đến đầu chuỗi, với hiệu ứng domino trên đường đi xuống giờ đây có khả năng là hiệu ứng domino trên đường đi lên vì càng nhiều node ở đầu chuỗi, càng nhiều node có thể đồng bộ hóa với nó. Loon nói:
“Medalla còn lâu mới chết, nó có thể sửa được. Và nó phải được sửa vì điều này cũng có thể xảy ra trực tiếp”.
Ví dụ, Bitcoin đã có chuỗi phân tách fork 2 lần trở lên trên mainnet sau khi một số lỗi trong quá trình nâng cấp bị phát hiện khiến các miner phải tìm đến các phiên bản khác.
Tuy nhiên, mạng Bitcoin vẫn tiếp tục chạy trong thời gian đó, dẫn đến các thông báo trên mạng xã hội yêu cầu mọi người đợi 100 xác nhận trở lên.
Trong khi ở đây nếu 34% bị loại bỏ, thì mạng sẽ ngừng chạy cho đến khi chúng hoạt động.
Đây là một câu chuyện đang phát triển, vì vậy cách chúng hoạt động chính xác vẫn chưa được xác định bởi vì không có vị trí/khối mới nào được tìm thấy vì chuỗi hiện chưa hoàn thiện.
Đây là cơ hội để học hỏi rút kinh nghiệm về những gì có thể xảy ra trực tiếp khi phát hiện lỗi, bên cạnh các bài học khác về phương pháp nhanh chóng xuất khóa cho các client khác. Một nhà phát triển Prysm nói:
“Toàn bộ vấn đề của việc có nhiều client là bạn có thể chuyển sang một giải pháp thay thế trong trường hợp có thứ gì đó không hoạt động bình thường trong chính client của bạn. Khi chúng tôi gặp phải những vấn đề về thời gian hoạt động vào ngày 16/8, có thể chuyển sang một client khác để tránh tổn thất”.
Thời gian hoạt động giống như một phương thức phi tập trung đồng bộ hóa thời gian không quá phân cấp vì 6 nguồn thời gian khác nhau đã khiến các node Prysm nhảy trước 4 giờ, gây ra lỗi và do đó mạng bị sập. Das nói:
“Khối sắp đến cũng có một số vị trí để qua đó xác định xem nó có hợp lệ hay không. Về cơ bản, genesis_time + slot_Num * slot_time (thời gian khối genesis + số lượng vị trí * thời gian vị trí).
Nếu một node cho rằng đó là 4 giờ trong tương lai, nó sẽ từ chối khối vì có vẻ như nó đến từ quá khứ.
Điều này cũng làm xáo trộn đề xuất khối trình xác thực của Prysm vì bây giờ đồng hồ cục bộ theo trình xác thực là trước 4 giờ”.
Quá trình khắc phục khá đơn giản, chỉ là không mặc định cho thời gian hoạt động, do đó dẫn đến những phát triển thú vị chưa được thực hiện trên testnet có Ethereum giả nên không sợ thua lỗ mà nhiều hơn là kiếm được lợi ích.
Ngoài ra, nếu mạng hoạt động trở lại thông qua các cơ chế được mã hóa thì điều này không nên làm trì hoãn việc khởi chạy trực tiếp vì mọi thứ sẽ xảy ra với lỗi rất nhỏ, giả sử là không có các rắc rối liên quan đến mã với các cơ chế đã khởi động.
- Lượng sử dụng mạng Ethereum và phí gas kỷ lục đặt ra rủi ro mở rộng DeFi
- Sự cố testnet Ethereum 2.0
- Người dùng Ethereum đã tạo ra tiền điện tử 500,000 đô la qua meme DeFi
Minh Anh
Theo Trustnode