Sharding là gì? Vì sao Sharding là giải pháp mở rộng quy mô của Ethereum?


Hãy tưởng tượng đến hình ảnh một phòng thi với 500 thí sinh. Giả sử có 50 giám thị giám sát và chấm bài. Mỗi một bài trong số 500 bài kiểm tra đó phải được tất cả 50 người giám khảo chấm điểm và điểm thi của bạn là điểm trung bình của 500 bài dự thi này. Bạn nghĩ phải mất bao lâu để chấm điểm tất cả các bài kiểm tra?

Đó không phải là phương pháp có thể mở rộng hoặc thay đổi bằng bất kỳ phương tiện nào và nó sẽ ngày càng khó khăn hơn khi số lượng sinh viên làm bài kiểm tra tăng lên. Điều này cũng tương tự như những thách thức mà Ethereum Blockchain phải đối mặt khi nó trở nên phổ biến và được sử dụng nhiều cho các giao dịch.

Bây giờ, hãy tưởng tượng rằng thay vì tất cả 50 người giám khảo phải chấm hết 500 bài kiểm tra, công việc hiện đã được chia thành nhiều phần. Mỗi người giám khảo chỉ chịu trách nhiệm chấm 10 bài thi và điểm mà mỗi giám khảo đánh giá cuối cùng là điểm trung bình cho mỗi 10 học sinh. Nếu giám khảo không chắc chắn về cách chấm điểm một câu hỏi cụ thể, họ sẽ tham khảo ý kiến ​​của các giám khảo khác để biết thêm thông tin trước khi chấm điểm.

Tóm lại, đây là vấn đề hiện tại của Ethereum Blockchain và cách làm thế nào để một Sharding có thể giải quyết vấn đề về khả năng mở rộng, từ đó tăng tốc độ giao dịch và được áp dụng rộng rãi hơn.


Vấn đề:

Ethereum Blockchain hiện yêu cầu tất cả các node trên mạng lưới phải lưu trữ và xử lý tất cả các giao dịch diễn ra. Nói cách khác, vấn đề của Ethereum Blockchain là nó đòi hỏi phải có full node. Mặc dù quá trình này cung cấp tính năng bảo mật tương đối lớn hơn vì mỗi giao dịch phải được xử lý bởi mỗi node, nhưng vì tính năng chuyên sâu như vậy nên khả năng mở rộng của nó đã bị hạn chế.

Số lượng các full node càng lớn thì blockchain càng chậm và khả năng mở rộng càng hạn chế.

Hiện tại, Ethereum Blockchain phải chọn 2 trong số 3 thuộc tính dưới đây và đáp ứng hai thuộc tính đó một cách thành thạo:
  • Bảo mật
  • Khả năng mở rộng
  • Phân quyền
Trạng thái hiện tại của Ethereum Blockchain tuân thủ nghiêm ngặt các thuộc tính bảo mật và phân quyền nhưng lại có rất nhiều hạn chế trong khả năng mở rộng. Thời gian đã thay đổi và việc một hệ thống có khả năng mở rộng hay không dần trở thành nguyên tố chính để mọi người quyết định có sử dụng một blockchain hay không, vì vậy cộng đồng phát triển Ethereum đã quyết định rằng phải hy sinh một phần khả năng bảo mật để cải thiện những hạn chế trong khả năng mở rộng. Sau đó, họ sẽ có thể cải tiến blockchain bằng cách tăng tốc độ giao dịch.

Giải pháp: Sharding

Hãy tưởng tượng rằng Ethereum đã bị chia thành hàng ngàn hòn đảo. Mỗi hòn đảo đều có đầy đủ mọi thứ. Mỗi hòn đảo đều có những đặc trưng độc đáo riêng và tất cả mọi người đều có thể đến những hòn đảo đó, tức là các tài khoản, có thể tương tác với nhau và họ có thể tự do sử dụng tất cả các tính năng của đảo. Nếu họ muốn liên lạc với các đảo khác, họ sẽ phải sử dụng một số giao thức.


Sharding, theo nghĩa truyền thống, là một loại phân vùng tách các cơ sở dữ liệu lớn thành các phần nhỏ hơn, nhanh hơn, được gọi là các shard. Một shard theo định nghĩa chỉ là một phần nhỏ của toàn bộ hệ thống.

Việc nó liên quan đến Ethereum blockchain như thế nào là một khái niệm rất phức tạp thuộc phạm trù kỹ thuật. Nó liên quan đến việc chia tách mạng lưới thành nhiều phân vùng nhỏ được gọi là shard và mỗi shard chứa các phần dữ liệu giao dịch độc lập. Những gì cộng đồng Ethereum đang cố gắng đạt được trong việc thực hiện Sharding là dừng yêu cầu full node. Sharding sẽ diễn ra độc quyền trên lớp giao thức.

Với việc triển khai Sharding, vấn đề này có thể được giải quyết bằng cách để mỗi node lưu trữ một tập hợp con và chịu trách nhiệm xác minh các giao dịch cụ thể đó, thay vì tất cả các giao dịch diễn ra tuần tự trên blockchain do bản chất không song song của Ethereum Virtual Machine (EVM).

Khi một node cụ thể yêu cầu thông tin không được lưu trữ trong khối riêng, nó sẽ tìm thấy thông tin mà nó yêu cầu trên node khác. Đây là tiền đề của cross-shard.

Hiện tại, Ethereum blockchain cho phép thực hiện 8 giao dịch mỗi giây, trong khi đó, Sharding sẽ cho phép hàng nghìn giao dịch được thực hiện mỗi giây mà không cần full node, điều này cũng sẽ làm giảm đáng kể kích thước node tổng thể. Tuy nhiên, quá trình này không đáng tin cậy vì các node phụ thuộc chứ không độc lập. Đây là sự hy sinh về bảo mật cần phải làm để tăng khả năng mở rộng.


Tại sao Proof-of-Stake rất quan trọng với Sharding

Nếu Ethereum cứ tiếp tục sử dụng cơ chế đồng thuận Proof-of-Work thì lỗ hổng bảo mật là điều không thể tránh khỏi. Vì PoW dựa vào hash power, và cần phải có một cách để ngăn cản người xấu có ý muốn thao túng mạng lưới với đa số hash power, vì dữ liệu giao dịch hiện đang ở shard hoặc các phần nhỏ hơn. Nói cách khác, khả năng của một cuộc tấn công mạng lưới sẽ tăng lên khi người xấu có đủ hash power để ‘chiếm’ một shard nhất định.

Trên một blockchain dựa trên PoW mà không có Sharding, một ‘cuộc tấn công 51%’ gần như không thể xảy ra do hash power cần thiết sẽ tốn chi phí khổng lồ. Một người xấu sẽ cần 51% tổng hash power của mạng lưới để tấn công mạng và kiểm soát phần lớn phiếu bầu.

Trên một blockchain dựa trên PoW với Sharding, khả năng tấn công 51% hoàn toàn có thể xảy ra và đặt ra một mối đe dọa lớn hơn đối với an ninh của mạng lưới tổng thể. Một hoặc một nhóm người xấu có thể tập trung hash power của họ vào một shard duy nhất và kiểm soát hoàn toàn shard đó. Sau đó họ có thể sử dụng cross-shard để tấn công các shard khác trong mạng lưới.

Đây là nơi Proof-of-Stake chứng minh tầm quan trọng của việc đảm bảo một EVM hoàn toàn an toàn, phân quyền và có thể mở rộng. PoS sẽ cho phép Ethereum loại bỏ khả năng tập trung hash power của một kẻ muốn tấn công vào một shard, thông qua việc sử dụng hiệu quả random sampling (mẫu ngẫu nhiên). Một hệ thống dựa trên Proof-of-Stake sẽ loại bỏ lỗ hổng bảo mật của cuộc ‘tấn công 51%’. Đây là điều mà giao thức Proof-of-work truyền thống không thể làm được nếu tiến hành Sharding.

Theo một blockchain dựa trên PoS với Sharding, những kẻ tấn công không thể chọn shard mà họ muốn làm việc và sẽ không biết họ sẽ được chỉ định vào shard nào, do đó giảm thiểu rủi ro bảo mật vốn có khi thực hiện Sharding.
SHARE

Le Anh

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 nhận xét:

Đăng nhận xét

# Your Ruby Code