17:48 18/12/2023 Lượt xem: 59
Một bug thực hiện việc phân tách chuỗi (chain-split) Testnet Ropsten của Ethereum vừa được phát hiện và fix trong vài giờ đồng hồ.
Đúng như dự đoán, nó có liên quan đến một đề xuất cải tiến Ethereum mới (EIP), trong đó bổ sung hiệu quả đạt được để hỗ trợ cho việc tính toán với duy nhất Parity bị ảnh hưởng.
“Bug đã được sửa. Nó ảnh hưởng đến Parity và Aleth, đều có cùng một bug,” Wei Tang, một nhà phát triển Rust tại Parity nói với Trustnodes, trong đó Aleth là một client C của Ethereum .
“Tôi đã sửa bug saturating_sub refund của sstore và xác nhận rằng nó thực sự đã tính toán cùng một state root như geth.” Ông Tang cho biết lúc đó là vào khoảng nửa đêm giờ London và thêm rằng:
“Tôi đoán khi Afri tỉnh dậy, chúng tôi sẽ cố gắng phát hành phiên bản khác thật sớm để khắc phục vấn đề đồng thuận hiện tại trên Ropsten.”
Martin Holst Swende, một nhà phát triển Ethereum, đã thử nghiệm bản sửa lỗi, trong đó cho thấy rằng Geth và Parity, hai client chính của ethereum, giờ đây có thể đồng bộ. Alexey Akhunov, một nhà nghiên cứu và phát triển phần mềm độc lập, cho biết:
“Tôi cho rằng Parity chỉ sử dụng một cách khác để tính tiền hoàn lại. Thay vì có bộ đếm toàn cầu những thay đổi trong báo cáo, họ đã thay thế bằng các bộ đếm riêng của họ, có thể được áp dụng hoặc không được áp dụng (nếu được khôi phục) trong quá trình hoàn thành.
Tôi nhớ rằng geth có cách tiếp cận tương tự trước Shanghai DoS, và sau đó thay đổi nó thành báo cáo. Nhưng tôi cho rằng Parity sẽ tiết kiệm hơn với việc phân phối, vì vậy họ có thể chi trả cho nó.”
Nói cách khác, họ có cách tiếp cận khác nhau để tính toán gas, điều này cũng ổn miễn là cả hai đều đạt cùng “con số”. Điều đó không xảy ra với dòng tweet của Trump được chèn vào testnet của ethereum, mà đã tách chuỗi thành Parity và Geth tính lượng gas khác nhau.
“Nó liên quan đến việc hoàn lại gas cho việc giảm thiểu gas của SSTORE. Code của chúng tôi không giải thích được trường hợp khoản tiền hoàn lại có thể bị âm,” Tang nói. Khi được hỏi về độ nghiêm trọng của bug, Tang trả lời rằng:
“Ý tưởng chung để hard fork Ropsten đó là để chúng ta có thể có dữ liệu thực tế để kiểm tra hard fork Constantinople, để các lỗi như thế này có thể được phát hiện. Chúng tôi đã có một số kỳ vọng rằng Ropsten có thể ngừng hoạt động trong một vài ngày (nhưng chúng tôi không mong đợi nó sẽ vào ngày thứ Bảy!).
Tất nhiên là bất kỳ lỗi đồng thuận nào trên mainnet cũng sẽ rất nghiêm trọng. Đó là lý do tại sao chúng tôi muốn thực hiện kiểm tra và đánh giá code rộng rãi