
Cảnh giác rủi ro đặt cược: Nếu bạn dùng Geth để đặt cược, thực sự có thể mất toàn bộ tài sản
Tuyển chọn TechFlowTuyển chọn TechFlow

Cảnh giác rủi ro đặt cược: Nếu bạn dùng Geth để đặt cược, thực sự có thể mất toàn bộ tài sản
Bài viết nhấn mạnh vị thế chiếm đa số tuyệt đối của client Geth trong mạng Ethereum và những rủi ro tiềm tàng phát sinh từ đó.
Tác giả: Labrys
Biên dịch: TechFlow
Bài viết này thảo luận về sự cố xảy ra với client thực thi Nethermind trên mạng Ethereum, khiến tất cả các trình xác thực sử dụng Nethermind (chiếm khoảng 10% mạng) bị ngắt kết nối. Bài viết nhấn mạnh vị thế chiếm ưu thế tuyệt đối của client Geth trong mạng Ethereum và những rủi ro tiềm tàng do điều này gây ra. Mặc dù Geth là một client ổn định và đáng tin cậy, nhưng nếu có lỗi nghiêm trọng xảy ra, do mức độ phổ biến cao của nó trong mạng, có thể ảnh hưởng lớn đến toàn bộ hệ thống. Bài viết kêu gọi cộng đồng chú trọng hơn đến tính đa dạng của các client thực thi nhằm giảm thiểu rủi ro tập trung hóa đối với mạng lưới.
Giới thiệu
Tuần này, một client thực thi trên mạng Ethereum là Nethermind đã gặp phải sự cố, khiến tất cả các trình xác thực chạy Nethermind (khoảng 10% mạng) bị ngắt kết nối.
Đây là một sự kiện nhỏ vì Nethermind chỉ được vận hành bởi một nhóm nhỏ các bên liên quan. Dưới đây là biểu đồ tổng số dư của trình xác thực mà tôi tự vận hành dùng Nethermind. Bạn có thể thấy rằng vào khoảng 4 giờ sáng theo giờ địa phương, khi sự cố xảy ra lần đầu tiên, trình xác thực đã ngắt kết nối. Nhóm phát triển đã phát hành bản vá sau khoảng 4 giờ, và sau khi tôi cài đặt xong, trình xác thực hoạt động trở lại vào khoảng 9 giờ sáng theo giờ địa phương. Trong thời gian đó, hình phạt đối với trình xác thực của tôi tương đương với phần thưởng nhận được. Đến chiều cùng ngày lúc 13 giờ, số dư trình xác thực đã cao hơn so với trước khi ngừng hoạt động. Nhìn chung, đây là một sự cố nhỏ.

Nhiều người sai lầm khi cho rằng nếu chạy Geth và xảy ra sự cố tương tự, thì hình phạt sẽ tương tự. Điều này không đúng. Vấn đề không nằm ở Geth hay cách xây dựng Geth, mà nằm ở số lượng người đang chạy Geth.
Theo dữ liệu từ ClientDiversity.org, khoảng 84% các trình xác thực trên Ethereum đang chạy Geth. Hiện tại, lập luận bảo vệ của những người dùng này là Geth rõ ràng là client tốt nhất và ổn định nhất. Trong khi các client thiểu số như Nethermind gặp sự cố và ngừng hoạt động tuần này, Geth đã hoạt động ổn định kể từ khi sáp nhập (và thậm chí trước đó). Theo trải nghiệm cá nhân của tôi, khi chuyển từ Geth sang một client thiểu số, tôi nhận thấy trình xác thực cần nhiều tài nguyên hơn và bỏ lỡ nhiều lần xác thực hơn.
Bài viết này không nhằm mục đích công kích Geth. Tôi rất kính trọng đội ngũ phát triển Geth. Tuy nhiên, do việc sử dụng rộng rãi Geth, chúng ta cần trung thực thảo luận về rủi ro khi Geth nắm giữ đa số cổ phần.

Không ai muốn rời khỏi Geth nếu họ biết mình có khả năng cao hơn sẽ bỏ lỡ nhiều lần chứng minh và gặp nhiều thời gian ngừng hoạt động hơn, đặc biệt là những mô hình kinh doanh phụ thuộc vào thời gian hoạt động để quảng bá lợi nhuận cao nhất, ví dụ như các nhà vận hành stake chuyên nghiệp.
Tính đến tháng 9 năm ngoái, ước tính nhà vận hành lớn nhất Lido chạy khoảng 76% trình xác thực của họ trên Geth.

Nhưng tôi rất vui vì mình đang chạy một client thiểu số, ngay cả khi mất đi một vài phần thưởng bổ sung, không phải vì tôi là người vị tha hy sinh lợi ích cá nhân cho sự phi tập trung hóa mạng lưới, mà vì tôi biết ETH của tôi nhờ đó sẽ tránh được phần lớn các lỗi phổ biến.
Nếu Geth gặp lỗi thì sao?
Phụ thuộc vào chính lỗi đó.
Vì hơn 2/3 số trình xác thực Ethereum đang chạy Geth, bất kỳ lỗi nghiêm trọng nào trong Geth cũng sẽ ngay lập tức ngăn chuỗi đạt được sự xác thực cuối cùng. Điều này không có nghĩa là chuỗi dừng lại hoặc gián đoạn. Miễn là các client khác vẫn hoạt động, chuỗi sẽ tiếp tục chạy. Khoảng 84% khối sẽ bị bỏ lỡ, nghĩa là cứ mỗi 75 giây mới có một khối mới được đề xuất thay vì 12 giây như thông thường. Những khối này sẽ dễ bị tái tổ chức (reorg), do đó khi chuỗi tiếp tục hoạt động trở lại, các giao dịch trong các khối đó không được đảm bảo còn tồn tại. Nghe có vẻ tồi tệ, nhưng hãy nhớ rằng trong nhiều năm trước khi sáp nhập, Ethereum chưa từng có khái niệm xác nhận cuối cùng, và Bitcoin hiện nay cũng vậy — đó là lý do tại sao các sàn giao dịch yêu cầu bạn chờ ít nhất 6 xác nhận khối trước khi gửi tiền, nhằm giảm rủi ro bị tái tổ chức và mất tiền.
Một số người có lẽ còn nhớ, Ethereum đã từng trải qua tình huống tương tự vào tháng 5 năm 2023, khi một số client đồng thuận gặp lỗi. Trong hai ngày, chuỗi đã hai lần ngừng xác thực cuối cùng, dẫn đến việc bỏ lỡ nhiều khối, và có lúc chỉ còn 40% mạng đang hoạt động. Sau khi mạng phục hồi, hầu hết người dùng DApp không nhận thấy vấn đề gì ngoại trừ tốc độ xác nhận giao dịch chậm hơn một chút.

Còn các trình xác thực thì sao?
Rò rỉ không hoạt động (Inactivity Leak)
Khi một client thiểu số gặp sự cố, hình phạt là mất ETH với tốc độ bằng với tốc độ nhận phần thưởng (như bạn thấy trong biểu đồ trình xác thực của tôi ở trên). Nhưng nếu Geth gặp sự cố, vì nó sẽ ngay lập tức ngăn chuỗi đạt được sự xác thực cuối cùng, nên hình phạt sẽ nghiêm khắc hơn. Hình phạt tăng thêm này được gọi là "rò rỉ không hoạt động" (inactivity leak), được áp dụng cho các trình xác thực ngoại tuyến khi chuỗi ngừng xác thực cuối cùng trong 4 chu kỳ (khoảng 25 phút) hoặc lâu hơn. Mục đích của hình phạt nghiêm khắc hơn này là khuyến khích các trình xác thực ngoại tuyến nhanh chóng quay lại hoạt động, hoặc trong trường hợp xấu nhất, tiêu hủy cổ phần của các trình xác thực ngoại tuyến cho đến khi tỷ lệ cổ phần của họ dưới 1/3 tổng số, từ đó cho phép các trình xác thực trực tuyến hoàn thành việc xác thực chuỗi.

Trong thời gian rò rỉ không hoạt động, chỉ cần trình xác thực ngừng hoạt động 2 ngày sẽ mất 0,6% cổ phần, tương đương với phần thưởng staking trong 2 tháng!
Chỉ cần ngừng hoạt động 5 ngày, sẽ mất toàn bộ phần thưởng staking trong một năm (3,5%)! Nghĩa là cần hơn 2 năm staking mới có thể phục hồi số dư như trước khi sự cố xảy ra.
Trong vòng 1 tuần ngừng hoạt động, 10% cổ phần, tương đương phần thưởng 3 năm, sẽ bị mất. Trong khoảng 20 ngày, 50% cổ phần sẽ bị mất, và trong khoảng 40 ngày, 90% cổ phần sẽ bị mất.
Ngược lại, các trình xác thực ngừng hoạt động do lỗi client thiểu số chỉ mất 0,4% cổ phần trong 40 ngày.
Hình phạt không hoạt động kéo dài bao lâu?
Phụ thuộc vào lỗi.
Nếu lỗi có thể được vá, thì hình phạt sẽ kéo dài trong thời gian cần thiết để đội ngũ Geth vá lỗi và cập nhật vào trình xác thực của bạn (hoặc thời gian chuyển sang một client thực thi khác).
Thực tế, chúng ta dự kiến vấn đề này có thể được giải quyết trong vài giờ hoặc tối đa vài ngày. Nếu thời gian sửa lỗi giống như sự cố Nethermind gần đây, trình xác thực sẽ mất 0,004% cổ phần — không phải là vấn đề lớn.
Tuy nhiên, tình hình sẽ trở nên tồi tệ nếu lỗi khiến trình xác thực tạo ra khối vô hiệu, và Geth coi chúng là hợp lệ rồi ký xác nhận. Điều này sẽ dẫn đến việc phân nhánh chuỗi. Chuỗi sẽ tách thành hai nhánh: một nhánh chứa khối vô hiệu (chuỗi Geth) và một nhánh bỏ qua khối vô hiệu (chuỗi không-Geth). Các trình xác thực chạy Geth sẽ coi cả hai nhánh đều hợp lệ, do đó chọn xây dựng trên nhánh có trọng số cao nhất. 84% trình xác thực sẽ gắn cổ phần vào chuỗi Geth, chỉ có 16% gắn vào chuỗi không-Geth. Do đó, các trình xác thực Geth sẽ chọn chuỗi Geth làm nhánh nặng nhất và tiếp tục xây dựng trên đó.

Tất nhiên, một khi mọi vấn đề được giải quyết, các khối trên chuỗi Geth sẽ bị loại bỏ (gây ra các vấn đề riêng), nhưng vấn đề lớn hơn là chuỗi Geth sẽ có đủ cổ phần (lớn hơn 2/3) để xác nhận chuỗi vô hiệu.
Một khi chuỗi Geth được xác nhận cuối cùng, nếu một trình xác thực đã ký xác nhận chuỗi Geth, nó sẽ không thể tham gia xây dựng chuỗi không-Geth (cho đến khi chuỗi không-Geth cũng được xác nhận), nếu không sẽ bị phạt slash. Về cơ bản, các trình xác thực chạy Geth đã cam kết sử dụng chuỗi vô hiệu và bị khóa trên chuỗi đó cho đến khi chuỗi không-Geth được xác nhận. Đây chính là rủi ro then chốt mà nhiều người hiểu sai.
Do các trình xác thực Geth bị mắc kẹt trên chuỗi vô hiệu, họ bị coi là không hoạt động trên chuỗi không-Geth và sẽ chịu tổn thất do rò rỉ không hoạt động. Không có bản cập nhật phần mềm hay vá lỗi nào có thể cứu được các trình xác thực này. Họ sẽ bị tiêu hao cho đến khi cổ phần còn lại của họ dưới 1/3 tổng cổ phần, cho phép chuỗi không-Geth được xác nhận.
Hiện tại có 28.976.695 ETH đang được stake trên mạng. Trong đó 84% (khoảng 24 triệu ETH) thuộc về các trình xác thực chạy Geth, 16% (khoảng 5 triệu ETH) thuộc về các trình xác thực không chạy Geth. Để chuỗi không-Geth có thể được xác nhận, các trình xác thực Geth cần bị tiêu hủy cổ phần cho đến khi tỷ lệ cổ phần còn lại dưới 1/3. Nghĩa là cần tiêu hủy khoảng 21,5 triệu ETH (khoảng 90% tổng cổ phần) từ các trình xác thực này, giảm cổ phần Geth xuống còn khoảng 250.000 ETH, thấp hơn 1/3 (2,5 triệu + 5 triệu ETH). Khoảng 5 triệu ETH do các trình xác thực không-Geth kiểm soát lúc này sẽ đại diện cho hơn 2/3 cổ phần, cho phép họ xác nhận chuỗi.
Đây sẽ là một quá trình cực kỳ đau đớn, mất khoảng 40 ngày để hoàn tất. Nó sẽ làm giảm tổng nguồn cung ETH khoảng 18%, khiến tổng nguồn cung xuống dưới 100 triệu ETH.

Cuộc đua rút vốn
Một điểm quan trọng ở đây là các trình xác thực trên chuỗi vô hiệu sẽ không ngồi yên chịu trận. Họ vẫn có tùy chọn rút cổ phần, và nếu họ không làm vậy, mạng sẽ buộc loại họ ra khi số dư hiệu quả của họ xuống còn 16 ETH. Nhưng điều này không có nghĩa là tổn thất của họ chỉ giới hạn ở 16 ETH.
Khi bạn rút một trình xác thực (ngay cả khi bị buộc rút), bạn sẽ vào hàng đợi rút, và trong khi ở hàng đợi, bạn vẫn tiếp tục mất ETH!
Chúng ta biết rằng trong trường hợp xấu nhất, cần khoảng 40 ngày để rò rỉ không hoạt động cho phép chuỗi hợp lệ bắt đầu xác nhận trở lại. Vậy hàng đợi rút vốn mất bao lâu?
Hàng đợi rút vốn có giới hạn lưu lượng, giới hạn số lượng trình xác thực có thể rời mạng mỗi kỳ (khoảng 6,4 phút). Giới hạn này được định nghĩa như sau:

Tỷ lệ rút hiện tại là 13 trình xác thực mỗi 6,4 phút. Nếu tất cả các trình xác thực chạy Geth đều muốn rút, sẽ cần ít nhất khoảng 260 ngày để tất cả rời đi. Vì 90% cổ phần sẽ bị tiêu hủy trong khoảng 40 ngày, đa số trình xác thực sẽ cạn kiệt số dư trước khi kịp rút khỏi chuỗi.
2% đầu tiên của các trình xác thực Geth khởi động rút sẽ rời trong 5 ngày đầu, tổn thất tối đa tương đương phần thưởng staking 1 năm.
Bạn cần nằm trong top 3% trình xác thực rút sớm nhất để giới hạn tổn thất dưới 10% cổ phần.
Chỉ có 8% trình xác thực rút đầu tiên mới giới hạn tổn thất dưới 50% cổ phần. Lúc này, bất kỳ ai chưa chủ động rút sẽ bị buộc rút và đưa vào hàng đợi với số dư hiệu quả 16 ETH.
Sau 40 ngày, khi 90% cổ phần đã bị tiêu hủy, hơn 85% trình xác thực vẫn đang trong hàng đợi.
Khả năng rút vốn sẽ không cứu được bạn, rủi ro xuống dốc của bạn không chỉ giới hạn ở mức bị buộc rút (16 ETH).
Còn phạt slash thì sao?
Một số người sai lầm khi nghĩ rằng nếu có lỗi, những người stake chạy Geth sẽ không chỉ chịu rò rỉ không hoạt động mà còn bị phạt slash. Điều này là sai.
Hình phạt slash chỉ áp dụng cho sự kiện ký kép, hoàn toàn do client đồng thuận kiểm soát. Lỗi trong Geth không nên khiến client đồng thuận phạm lỗi có thể bị slash. Việc Geth tạo khối vô hiệu không phải là lỗi có thể bị slash.
Chỉ hình phạt rò rỉ không hoạt động được áp dụng cho lỗi của Geth.
Bạn nên làm gì?
Những người stake hiện đang chạy Geth có thể chưa hiểu đầy đủ rủi ro liên quan đến việc chạy một client thực thi chiếm tuyệt đối đa số. Nhiều người sai lầm khi cho rằng một khi có lỗi, bản vá sẽ được phát hành trong vài giờ và tổn thất ETH là rất nhỏ.
Nhiều người không hiểu rằng rủi ro xác nhận một khối vô hiệu có thể khiến họ bị khóa trên một chuỗi vô hiệu đã được xác nhận, gần như chắc chắn phần lớn ETH của họ sẽ bị tiêu hủy. Đây là một rủi ro thực tế có thể xảy ra.
Stake Ethereum không phải là thu lợi phi rủi ro. Bạn có đầu tư ít nhất 75.000 USD vào một công cụ có lợi nhuận tiềm năng tối đa 3,5% mỗi năm nhưng có khả năng mất 100% không? Có lẽ là không, nhưng đây chính xác là điều mà 84% người stake Ethereum đang làm hôm nay.
Bằng cách chuyển sang client thiểu số (giả sử lỗi tương tự không xảy ra trên nhiều client), bạn có thể giới hạn tổn thất tối đa ở mức 3,5% hàng năm.
Với những kiến thức này, bất kỳ ai vẫn đang chạy Geth trông có vẻ điên rồ. Tôi chỉ có thể giả định rằng những người chạy Geth chưa hiểu đầy đủ về rủi ro này.
Nếu bạn sở hữu LST (ví dụ như stETH, cbETH, v.v.) và LST đó đang chạy Geth trên trình xác thực của họ, hãy hiểu rằng Ethereum của bạn đang gặp rủi ro, và cân nhắc hủy stake hoặc chuyển sang một LST khác cho đến khi Geth không còn chiếm vị thế áp đảo.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News












