Các ý chính
Sharding chia một blockchain thành các phân đoạn nhỏ hơn gọi là shard, cho phép các giao dịch được xử lý song song thay vì lần lượt từng giao dịch.
Mỗi shard hoạt động như một cơ sở dữ liệu độc lập, xử lý tập con các giao dịch của riêng mình, từ đó giảm tải cho các node riêng lẻ.
Sharding có thể tăng thông lượng giao dịch, giảm yêu cầu phần cứng cho người vận hành node và cải thiện hiệu quả tổng thể của mạng lưới.
Các đánh đổi bao gồm việc tăng thêm độ phức tạp, rủi ro tấn công một shard và các thách thức đối với các giao dịch trải rộng trên nhiều shard.
Tháng 3/2024, Ethereum đã triển khai một dạng sharding trung gian gọi là Proto-Danksharding (EIP-4844) thông qua bản nâng cấp Cancun, giúp giảm phí cho các mạng Lớp 2. Danksharding đầy đủ vẫn nằm trong lộ trình.
Giới thiệu
Công nghệ blockchain cung cấp một cách ghi nhận giao dịch phi tập trung và minh bạch, nhưng nó có một hạn chế nổi tiếng: khả năng mở rộng (scalability). Khi mạng lưới phát triển và ngày càng nhiều người gửi giao dịch, hệ thống có thể trở nên chậm hơn và việc sử dụng sẽ tốn kém hơn. Điều này đôi khi được gọi là bộ ba bất khả thi của blockchain (blockchain trilemma), đề cập đến độ khó khi đồng thời đạt được khả năng mở rộng, bảo mật và phi tập trung.
Sharding là một trong những cách tiếp cận nhằm giải quyết mặt khả năng mở rộng của vấn đề này. Ban đầu là một kỹ thuật quản lý cơ sở dữ liệu, sharding đã được nhiều dự án blockchain điều chỉnh để giúp mạng lưới xử lý nhiều giao dịch hơn mà không đánh đổi phi tập trung.
Sharding là gì?
Sharding là quá trình chia một mạng lưới blockchain thành các phân vùng nhỏ hơn gọi là shard. Mỗi shard chứa một phần dữ liệu riêng của mạng và xử lý các giao dịch của riêng mình một cách độc lập. Thay vì yêu cầu mọi node phải lưu và xác minh mọi giao dịch trên toàn mạng, mỗi node chỉ chịu trách nhiệm cho một shard.
Đây là một sự thay đổi đáng kể so với cách mà hầu hết blockchain hoạt động mặc định. Trong một blockchain tiêu chuẩn, mọi node phải xử lý và lưu tất cả các giao dịch trên toàn mạng. Cách tiếp cận này, dù an toàn, lại hạn chế tốc độ mà mạng có thể hoạt động vì tất cả các node phải luôn đồng bộ với nhau.
Sharding hoạt động như thế nào?
Để hiểu về sharding, bạn có thể xem cách dữ liệu thường được xử lý trong blockchain, rồi sau đó xem sharding làm thay đổi điều đó ra sao.
Xử lý tuần tự vs. xử lý song song
Trong một blockchain điển hình, mỗi node xử lý các giao dịch lần lượt theo thứ tự tuần tự. Điều này có nghĩa là tốc độ của toàn bộ mạng bị giới hạn bởi năng lực mà từng node riêng lẻ có thể xử lý. Khi blockchain phát triển, điều này trở thành một nút thắt (bottleneck).
Sharding đưa vào xử lý song song. Thay vì tất cả node làm việc trên cùng một tập giao dịch, các nhóm node khác nhau sẽ xử lý các shard khác nhau đồng thời. Nhờ đó, mạng có thể xử lý nhiều giao dịch hơn đáng kể trong cùng một thời điểm.
Phân vùng ngang (horizontal partitioning)
Sharding sử dụng một kỹ thuật gọi là phân vùng ngang (horizontal partitioning), chia dữ liệu thành các hàng thay vì các cột. Mỗi shard giữ một tập con đầy đủ của dữ liệu giao dịch cho các giao dịch mà shard đó xử lý. Cách này bảo toàn tính toàn vẹn dữ liệu vì mỗi shard có đầy đủ bản ghi cho phần dữ liệu của mạng mà nó phụ trách.
Phân vùng ngang thường được ưu tiên trong các hệ thống blockchain vì nó hỗ trợ phi tập trung. Các node chỉ cần lưu và xác minh dữ liệu của một shard, từ đó giảm lượng lưu trữ và năng lực tính toán cần thiết để tham gia mạng lưới.
Phân vùng dọc (vertical partitioning)
Trong phân vùng dọc, dữ liệu được chia thành các cột thay vì các hàng. Mỗi phân vùng trong phân vùng dọc chứa một tập con dữ liệu cho từng thực thể, hoặc toàn bộ bộ dữ liệu, nhưng chỉ cho một nhóm thuộc tính nhất định.
Những lợi ích của sharding là gì?
Sharding mang lại một số lợi thế tiềm năng cho các mạng blockchain:
Tăng thông lượng: Bằng cách xử lý giao dịch song song trên nhiều shard, một mạng được sharding có thể xử lý nhiều giao dịch mỗi giây hơn đáng kể so với thiết kế chỉ dùng một chuỗi (single-chain).
Giảm yêu cầu phần cứng: Vì mỗi node chỉ lưu dữ liệu cho một shard nên nhu cầu về lưu trữ và xử lý sẽ giảm. Điều này giúp việc vận hành một node dễ dàng và rẻ hơn, từ đó có thể tăng mức độ phi tập trung của mạng lưới.
Khả năng mở rộng tốt hơn: Về lý thuyết, một mạng lưới được chia shard có thể bổ sung thêm nhiều shard khi nhu cầu tăng lên, cho phép mạng mở rộng mà không bị sụt giảm hiệu năng tương ứng.
Các lợi ích này ở mức độ khác nhau chỉ là lý thuyết. Mức cải thiện mà một mạng lưới thực tế nhận được phụ thuộc vào cách triển khai sharding và những trade-off (đánh đổi) mà người ta chấp nhận.
Những Hạn Chế của Sharding là gì?
Sharding tạo ra các thách thức mới mà không tồn tại trong các blockchain không chia shard:
Tấn công một shard: Một kẻ tấn công cần ít tài nguyên hơn nhiều để chiếm quyền kiểm soát một shard so với việc tấn công toàn bộ mạng lưới. Điều này khiến từng shard riêng lẻ dễ bị tổn thương hơn trước một dạng tấn công 51%.
Độ phức tạp xuyên shard: Các giao dịch có liên quan đến dữ liệu từ hai shard khác nhau rất khó quản lý. Nếu một shard không theo dõi đúng trạng thái của shard kia trong quá trình giao dịch, có thể xảy ra các lỗi như double-spending (giao dịch gian lận kép).
Tính sẵn sàng dữ liệu: Nếu các node chịu trách nhiệm cho một shard cụ thể bị ngắt kết nối (offline), dữ liệu của shard đó có thể tạm thời không còn sẵn sàng, làm gián đoạn mạng lưới.
Chi phí đồng bộ: Việc giữ cho các shard phối hợp với nhau làm tăng độ phức tạp trong thiết kế mạng. Lỗi trong quản lý shard có thể dẫn đến không nhất quán hoặc các vấn đề về hiệu năng.
Những đánh đổi này giải thích vì sao việc triển khai sharding về mặt kỹ thuật lại khó khăn và vì sao nhiều mạng lưới chọn cách tiếp cận theo từng bước.
Sharding được sử dụng trên Ethereum như thế nào?
Lộ trình mở rộng của Ethereum đã thay đổi đáng kể kể từ khi sharding được bàn đến lần đầu như một phần của kế hoạch nâng cấp "Ethereum 2.0". Thay vì triển khai sharding thực thi trực tiếp, Quỹ Ethereum đã chuyển sang chiến lược tập trung vào rollup: các rollup Lớp 2 xử lý việc thực thi giao dịch ngoài chuỗi (off-chain) trong khi đăng dữ liệu lên Ethereum mainnet.
Là một phần của chiến lược này, Ethereum giới thiệu Proto-Danksharding (EIP-4844) trong bản nâng cấp Cancun vào tháng 3/2024. EIP-4844 đưa ra một loại giao dịch mới gọi là giao dịch mang blob (blob-carrying transaction). Blob cho phép các rollup Lớp 2 đăng một lượng dữ liệu lớn lên Ethereum với chi phí thấp hơn nhiều so với trước đây, vì dữ liệu blob được lưu tạm thời (khoảng 18 ngày) và không được xử lý bởi Ethereum Virtual Machine.
Danksharding đầy đủ là giai đoạn tiếp theo trong lộ trình của Ethereum. Nó sẽ mở rộng hệ thống blob bằng cách cho phép data availability sampling (lấy mẫu tính sẵn sàng dữ liệu), một kỹ thuật cho phép các node xác minh dữ liệu có sẵn mà không cần tải toàn bộ. Điều này sẽ giúp Ethereum hỗ trợ nhiều blob trên mỗi block hơn đáng kể, qua đó giảm đáng kể chi phí cho người dùng Lớp 2. Tại thời điểm viết bài, danksharding đầy đủ vẫn chưa được triển khai.
Câu hỏi thường gặp (FAQ)
Sharding trong blockchain là gì?
Sharding chia một blockchain thành các phân đoạn độc lập nhỏ hơn gọi là shard. Mỗi shard xử lý các giao dịch của riêng mình và lưu dữ liệu của riêng mình. Điều này cho phép các phần khác nhau của mạng lưới vận hành song song, tăng tổng số giao dịch mà mạng có thể xử lý.
Hiện tại Ethereum có được sharding chưa?
Ethereum đã triển khai một dạng sharding trung gian gọi là Proto-Danksharding (EIP-4844), được giới thiệu trong bản nâng cấp Cancun vào tháng 3/2024. Cách này cho phép các mạng Lớp 2 đăng dữ liệu giao dịch vào các blob chi phí thấp thay vì trong calldata đắt đỏ. Danksharding đầy đủ, cho phép data availability sampling trên nhiều shard, vẫn đang được phát triển.
Các rủi ro chính của sharding là gì?
Các rủi ro chính bao gồm các cuộc tấn công một shard, trong đó kẻ tấn công có thể nhắm vào một shard với ít tài nguyên hơn so với việc tấn công toàn bộ mạng, và độ phức tạp của giao dịch xuyên shard, có thể tạo ra các tình huống biên như double-spending nếu không xử lý cẩn thận. Các vấn đề về tính sẵn sàng dữ liệu cũng có thể phát sinh nếu các node quản lý một shard cụ thể bị ngắt kết nối.
Sharding khác gì so với việc dùng các giải pháp Lớp 2?
Sharding là một kỹ thuật mở rộng Lớp 1, thay đổi cách blockchain nền tảng lưu trữ và xử lý dữ liệu. Khả năng mở rộng blockchain cũng có thể được giải quyết bằng các giải pháp Lớp 2, nơi các giao dịch được xử lý ngoài chuỗi và đăng tóm tắt (summaries) trở lại chuỗi chính. Trong lộ trình hiện tại của Ethereum, hai hướng tiếp cận này hoạt động cùng nhau: sharding (thông qua blob) giúp giảm chi phí đăng dữ liệu Lớp 2 lên Ethereum, trong khi rollups chịu trách nhiệm thực thi giao dịch ngoài chuỗi.
Những suy nghĩ kết lại
Sharding là một kỹ thuật đầy hứa hẹn để cải thiện khả năng mở rộng của blockchain, nhưng đi kèm với những đánh đổi thực tế về độ phức tạp và bảo mật. Ý tưởng này đã tiến hóa từ một đề xuất mang tính lý thuyết thành một triển khai theo hướng từng bước và mang tính thực tiễn, đáng chú ý nhất thông qua EIP-4844 của Ethereum. Khi nghiên cứu tiếp tục và nhiều mạng lưới thử nghiệm các thiết kế sharding, công nghệ nhiều khả năng sẽ còn phát triển thêm. Việc một triển khai cụ thể có thành công hay không sẽ phụ thuộc vào mức độ cân bằng mà nó đạt được giữa thông lượng, bảo mật và phi tập trung theo thời gian.
Đọc thêm
Blockchain Lớp 1 vs. Các giải pháp mở rộng Lớp 2
Ethereum là gì và hoạt động như thế nào?
Optimistic vs. Zero-Knowledge Rollups: Khác nhau ở điểm nào?
Nâng cấp Ethereum Cancun là gì?
Khả năng mở rộng của blockchain: Sidechains và Payment Channels
Tuyên bố miễn trừ trách nhiệm: Nội dung này được cung cấp cho bạn theo cơ sở "nguyên trạng" chỉ nhằm mục đích cung cấp thông tin chung và/hoặc mục đích giáo dục, không kèm bất kỳ tuyên bố hay bảo đảm nào dưới bất kỳ hình thức nào. Nội dung này không nên được hiểu là lời khuyên tài chính, pháp lý hay tư vấn chuyên nghiệp khác, và cũng không nhằm mục đích khuyến nghị mua bất kỳ sản phẩm hoặc dịch vụ cụ thể nào. Bạn nên tìm lời khuyên của riêng mình từ các cố vấn chuyên môn phù hợp. Nếu nội dung được đóng góp bởi bên thứ ba, vui lòng lưu ý rằng các quan điểm được nêu thuộc về bên đóng góp thứ ba đó và không nhất thiết phản ánh quan điểm của Binance Academy. Giá tài sản kỹ thuật số có thể biến động. Giá trị khoản đầu tư của bạn có thể tăng hoặc giảm và bạn có thể không thu hồi được số tiền đã đầu tư. Bạn hoàn toàn chịu trách nhiệm cho các quyết định đầu tư của mình và Binance Academy không chịu trách nhiệm đối với bất kỳ khoản lỗ nào bạn có thể gặp phải. Để biết thêm thông tin, hãy xem Điều khoản sử dụng, Cảnh báo rủi ro và Điều khoản của Binance Academy.
