Để đảm bảo sự bảo mật và phát triển lâu dài, Ethereum xây dựng kiến trúc multiple clients, trách nhiệm quản lý ngày càng tăng lên.
Tại sao chúng ta cần multiple clients?
Có một cuộc tranh luận tại sao kiến trúc single client được ưa chuộng hơn. Việc phát triển multiple clients sẽ phát sinh chi phí đáng kể, nên những blockchain hiện nay vẫn chưa theo đuổi tùy chọn này.
Vậy tại sao Ethereum lại hướng đến multiple clients?
Client là những đoạn mã rất phức tạp có thể bị lỗi bất cứ lúc nào, đây được gọi là "lỗi đồng thuận", một lỗi logic chuyển đổi trạng thái của blockchain.
Một lỗ hổng có thể xảy ra là phân phối token vô hạn, dẫn đến nhà đầu tư dễ bị lỗ khi mua phải token đó. Nếu như không ngăn chặn trước mà để hacker khai thác thông qua các sàn giao dịch thì sẽ ảnh hưởng đến giá trị của Ethereum.
Các hacker có thể tấn công thành công và phân tán số crypto đó, dựa vào lượng ETH đào ra, cộng đồng có thể phối hợp để khôi phục chuỗi trước khi khai thác lỗ hổng.
Điều gì sẽ xảy ra nếu sử dụng multiple clients, có hai giả thuyết như sau:
1. Khách hàng có ít hơn 50% stake:
Khách hàng sẽ sử dụng giao dịch khai thác lỗi để tạo khối và tạo ra ETH, chúng ta hãy gọi là chuỗi A.
Hầu hết các nhà phân phối sẽ bỏ qua khối này vì nó không hợp lệ. Họ sẽ tạo ra khối mới để thay thế các khối không hợp lệ.
Chuỗi B sẽ tích lũy nhiều proof hơn, ngay cả khi client được yêu cầu vote cho chuỗi B thì kết quả chuỗi B tích lũy 100% số phiếu bầu và chiến thắng chuỗi A, như thế sẽ không còn chuỗi bị lỗi.
2. Hầu hết các cổ phần stake được sử dụng bởi khách hàng
Trong trường hợp này chuỗi A sẽ tích lũy nhiều phiếu bầu, chuỗi B sẽ có ít hơn 50%, các client sẽ không hủy bỏ chuỗi A. Từ đó sẽ có sự phân chia chuỗi.
Trường hợp 1 là lý tưởng nhất khi người dùng không thấy chuỗi A nữa, từ đó nền tảng có thể đánh dấu khối đó bị lỗi. Trường hợp 2 tốt khi single client, mọi người sẽ nhanh chóng phát hiện ra sự phân tách chuỗi, các sàn giao dịch nhanh chóng tạm ngưng tiền gửi và người dùng DeFi có thể ngừng gửi tiền.
Sự phân tách chuỗi chỉ xảy ra khi gặp lỗi, khi bạn muốn sửa lỗi và khắc phục chuỗi trở lại như cũ thì không được, ta phải khắc phục trước khi xảy ra lỗi.
Khuyến khích client đa dạng: Anti-Relevance
Nếu việc stake trải rộng với nhiều client, mỗi client sở hữu ít hơn một phần ba tổng số tiền stake, điều này sẽ có lợi cho mạng lưới. Nếu trình xác thực của bạn hoạt động không tốt, nhất là khi nhiều trình xác thực sai cùng lúc thì không ổn một chút nào. Ví dụ như bạn chỉ mất 0,5 ETH hoặc 1,5% số ETH bạn stake (cao nhất là 1 ETH hoặc 3%).
Cơ chế này được thiết kế để khi một lượng lớn các hoạt động của trình xác thực không thành công. Những người xác thực (validator) ngoại tuyến sẽ nhận được 1/3 phần thưởng còn validator trực tuyến nhận được 2/3 để hoàn thành chuỗi mới.
Nền tảng hoạt động thế nào khi có nhiều clients cùng lúc?
Có 3 lỗi thường xảy ra như sau:
1. Mass slashing event: Người dùng đã ký vào hợp đồng khi sử dụng.
2. Lots of offline events: Tất cả các validator đều ngoại tuyến do lỗi.
3. Invalid block events: Validator chứng minh rằng có những khối không hợp lệ.
Tình huống 1: Chữ ký kép
Đây có lẽ là sự khó khăn đối với các nhà khai thác trình xác nhận: Một lỗi khiến client xác nhận ký một proof, khi đó gây nên tình trạng lỗi trên một máy chủ và đôi khi ảnh hưởng đến các máy chủ khác. Những người stake sẽ mất hết số tiền của họ, do đó Ethereum xem xét đến multiple clients, khi hệ thống gặp lỗi họ chỉ mất tối đa 30% tài sản.
Mặc dù thiệt hại khá nặng nề nhưng lỗi này khó xảy ra bởi các proofs có thể ngưng ngay lập tức, nhờ vào khả năng xử lý nhanh chóng của Validator Clients (VCs). Đây chỉ là một phần mềm nhỏ được cài vào nhằm đánh giá các lỗi có thể xảy ra và xử lý nó ngay lập tức.
Tình huống 2: Dữ liệu bị ngắt kết nối
Các blocks được tích hợp vào chuỗi khối và khi nào client gặp lỗi, khối đó sẽ chuyển sang trạng thái ngoại tuyến để chờ hình thành khối mới.
Những nhà phát triển sẽ cố gắng sửa lỗi để loại bỏ sự cố trong vòng vài giờ hoặc cao nhất là vài ngày.
Người dùng có thể yêu cầu giao dịch tạm dừng, nếu có 2/3 validator xác thực thì giao dịch sẽ dừng lại, còn không thì sẽ pending đến khi nào được sửa lỗi.
Tình huống 3: Khối dữ liệu không hợp lệ
Đây là khi tạo một khối không hợp lệ và không được chấp nhận, nghĩa là các validators không thể xác thực giao dịch đó.
Ta ví dụ khối không hợp lệ là A, sẽ có hai điều xảy ra như sau:
1. Tất cả các validators sẽ bỏ qua khối không hợp lệ, thay vào đó xây dựng trên các phần hợp lệ tạo ra một khối B riêng biệt.
2. Khi trình xác thực cho rằng khối A và B đều hợp lệ, thì cần bỏ phiếu xem bên nào nhiều phiếu ủng hộ hơn.
Nếu chúng ta đang điều hành nhiều clients và lo lắng cho việc chuyển đổi, thì lựa chọn nào là tốt?
Thay thế clients là công việc lớn và đi kèm một số rủi ro. iều gì sẽ xảy ra nếu cơ sở dữ liệu Mitre không được di chuyển chính xác sang máy chủ mới?
Bạn có thể giữ nguyên thiếp lập trình xác thực của mình và chỉ cần chuyển đổi các nodes báo hiệu. Như vậy độ rủi ro thấp hơn miễn là ứng dụng xác thực hoạt động bình thường, sẽ không xảy ra tình trạng ký hai lần nên khó bị tấn công hơn. Việc thay đổi cơ sở hạ tầng rất tốn kém nhưng đây là lựa chọn tốt khi cần thiết. Ta có thể chuyển trở lại ứng dụng ban đầu hoặc thử một số ứng dụng khác nếu thiết lập không hoạt động như mong đợi.
Bạn không cần lo lắng khi chuyển đổi các nodes báo hiệu, điều đáng quan tâm hơn là tạm thời chuyển sang chế độ ngoại tuyến, bởi do các nodes báo hiệu không thể tự tạo ra thông báo ngưng hoạt động.
Nhà phát triển bị ảnh hưởng như thế nào?
Go-Ethereum có khả năng là client thực thi phần lớn sau khi hợp nhất trong trường hợp tạo ra các khối không hợp lệ.
Đã có 3 clients sẵn sàng kết hợp với Ethereum là Nethermind, Besu và Erigon. Nếu bạn đang điều hành một client thiểu số thì rủi ro rất thấp, còn bạn đang điều hành multiple clients thì nên cân nhắc.
Lưu ý: Đây không phải là lời khuyên đầu tư, Thecoindesk chỉ đưa ra những thông tin xung quanh dự án, bạn phải chịu trách nhiệm trước những quyết định mình đưa ra!