Trong bài 2 bài viết về tam giác Trilema mình có từng đề cập đến ba loại "easy solutions" chỉ có thể nhận được hai trong số ba thuộc tính của trilemma vậy câu hỏi đặt ra là có “ Difficult solution” nào thỏa mãn đồng thời cả 3 yếu tố trên không ?
“Sharding is a technique that gets you all three” - vitalik..
Vitalik cho rằng cả 3 yếu tố của Trilema đều được giải quyết qua Sharding :
- Scalable: nó có thể xử lý nhiều giao dịch hơn nhiều so với một nút
- Decentralized: nó có thể tồn tại hoàn toàn trên máy tính xách tay của consumer, không phụ thuộc vào bất kỳ "siêu nút" nào
- Secure: kẻ tấn công không thể nhắm mục tiêu vào một phần nhỏ của hệ thống với một lượng tài nguyên nhỏ; họ chỉ có thể cố gắng thống trị và tấn công toàn bộ. Trước khi đi vào nội dung chính để xem Sharding có đúng như những gì vitalik miêu tả hay không, chúng ta sẽ cần làm rõ với nhau mục tiêu các giải pháp layer -1 đang hướng đến là gì ?
WHAT ARE FIRST LAYER SOLUTIONS?
Layer-1 solutions được thiết kế để cải thiện thông lượng của Chuỗi khối từ góc độ hệ thống. Một hệ thống Blockchain có thể được tối ưu hóa theo những cách sau để xử lý khối lượng công việc ngày càng tăng:
- giảm chi phí giao tiếp và tính toán ( Reducing Overhead )
- thêm tài nguyên vào một nút, nghĩa là chia tỷ lệ theo chiều dọc ( vertical scaling )
- thêm nhiều nút hơn vào Chuỗi khối, tức là mở rộng quy mô theo chiều ngang ( horizontal scaling ).
Reducing Overhead
Nhằm tăng khả năng xử lý của blockchain, các giao thức đồng thuận mới đã được phát triển để giảm chi phí.
Ví dụ
- Trong Bitcoin-NG, những người chiến thắng Proof of Work có thể tạo và xác minh nhiều khối hơn trong một thời gian cụ thể.
- Các giao thức đồng thuận PBFT truyền thống cũng đã được tối ưu hóa để giảm chi phí truyền thông và đạt được khả năng xử lý cao trong các mạng lớn. Tuy nhiên, công nghệ này có giới hạn tối thiểu về chi phí giảm thiểu được, vì mỗi thợ đào tham gia phải trao đổi và lưu trữ thông điệp trong mỗi vòng đồng thuận, bất kể các giao dịch diễn ra theo cách nào. Các công nghệ này chỉ có thể giảm chi phí truyền thông đến mức O(n), với n là số lượng thợ đào tham gia, vì mỗi thợ đào đều phải trao đổi và lưu trữ thông điệp trong mỗi vòng đồng thuận.[2] Chi phí truyền thông có thể hiểu là chi phí phát sinh khi các thợ đào phải truyền và nhận thông điệp để đồng thuận về các giao dịch trên blockchain. Đây là chi phí tăng lên khi số lượng thợ đào tham gia tăng lên, vì mỗi thợ đào phải trao đổi và lưu trữ thông điệp trong mỗi vòng đồng thuận
Vertical scaling (tạm dịch là "mở rộng dọc")
Bitcoin đã thử cải thiện khả năng xử lý bằng cách sử dụng các phương pháp gia tăng dọc ( vertical scaling ) , chẳng hạn như tăng số giao dịch được phép trong một khối hoặc giảm khoảng thời gian của khối, để tăng khả năng xử lý. Tuy nhiên, điều này sẽ dẫn đến việc tốn nhiều tài nguyên hơn, chẳng hạn như bộ nhớ lưu trữ, tính toán và băng thông của các nút Bitcoin. Ethereum đã triển khai phương pháp Greedy Heaviest Observed Subtree (GHOST) để sắp xếp các khối theo dạng cây thay vì chuỗi các khối để tăng khả năng xử lý của mình. Cấu trúc cây GHOST đã được mở rộng để sử dụng DAG (directed acyclic graph) trong việc sắp xếp các giao dịch, nơi mà mỗi giao dịch chứa giá trị băm trỏ đến các giao dịch hiện có. Cấu trúc DAG giúp các giao dịch được xác nhận song song, tăng khả năng sử dụng tài nguyên mạng, từ đó tăng khả năng xử lý của toàn bộ hệ thống phân tán. Tuy nhiên, các phương pháp gia tăng dọc không thể tăng khả năng xử lý một cách vô tận, vì hệ thống blockchain được thiết kế để chạy trên một mạng lưới phi tập trung và đồng nhất, trong đó tính bảo mật phụ thuộc chặt chẽ vào sự đồng thuận trên toàn mạng. Mạng càng lớn, băng thông cần thiết để đồng bộ hóa mạng càng nhiều, trong khi băng thông là tài nguyên không thể được thêm vào vô tận. Điều này dẫn đến việc chia tỷ lệ theo chiều dọc bị ảnh hưởng bởi thông lượng của nút (bị giới hạn tài nguyên). [2]
Horizontal Scaling (tạm dịch là "mở rộng ngang")
Là một phương pháp để tăng khả năng xử lý của blockchain bằng cách sử dụng công nghệ sharding ( định nghĩa chi tiết sẽ được thảo luận trong phần sau ) . Tương tự như các phương pháp gia tăng dọc, các phương pháp gia tăng ngang không thể tăng khả năng xử lý vô tận. Tuy nhiên, nó có thể giúp tăng khả năng xử lý của blockchain tuyến tính với số lượng nút tham gia. Điều này đặc biệt quan trọng khi triển khai blockchain cho cộng đồng lớn với tiềm năng tăng trưởng vô tận, vì nó giúp tối ưu tài nguyên và tăng khả năng cung cấp dịch vụ cho cộng đồng. Đến đây chúng ta lại có nhiều câu hỏi hơn về Sharding, nó là gì? cách thức hoạt động như thế nào ?
A. Định nghĩa
SHARDING LÀ GÌ?
Sharding hiểu đơn giản là một giải pháp chia nhỏ một cơ sở dữ liệu lớn thành nhiều cơ sở dữ liệu nhỏ. Ta có thể phân tách từng bảng hoặc cả một cơ sở dữ liệu ra nhiều phần nhỏ đặt ở nhiều máy chủ (server) khác nhau.
SHARDING TRONG BLOCKCHAIN?
Ý tưởng chính của sharding trong blockchain là chia hoặc tách mạng thành các tập con, gọi là shard; mỗi shard sẽ làm việc trên một tập hợp các giao dịch khác nhau, thay vì toàn bộ mạng xử lý các giao dịch giống nhau. Điều này cho phép mạng mở rộng với số lượng shard tăng lên, giúp tăng hiệu quả về lưu lượng, nhưng có thể ảnh hưởng đến tính bảo mật. Để đảm bảo an toàn cho blockchain, tất cả các shard đều cần đáp ứng giới hạn byzantine validator (hay còn được gọi là khả năng chống lại ủy ban - committee resiliency), đó là tỉ lệ tối đa của các validator/nút độc hại. [1]
Committee Resiliency: Số nút độc hại tối đa mà ủy ban có thể chứa trong khi vẫn được bảo mật Trong hầu hết các mạng blockchain, giới hạn byzantine validator, có giá trị trung bình là 33% của số lượng validator/nodes, nếu vượt quá giới hạn này sẽ gây ra phiên đồng thuận không an toàn. Trong thực tế ngay cả khi toàn bộ mạng blockchain vẫn nằm trong giới hạn an toàn về tỷ lệ nút độc hại, một shard đơn lẻ cũng có thể bị xâm phạm.
Ví dụ nếu chúng ta giả định rằng một mạng với 25% nút độc hại được chia đều thành 4 shard và hơn 33% số nút độc hại trong mạng lại tập trung ở một shard, thì shard đó sẽ trở nên không an toàn. Đây được gọi là cuộc tấn công chiếm đoạt một shard đơn lẻ (single shard takeover attack).
Hình minh họa [1] : Mạng blockchain chứa 20 nút, trong đó có 25% nút độc hại; có tổng cộng 5 nút độc hại trong mạng, và trong đó có 3 nút độc hại thuộc shard 1. Do đó, tồn tại 60% nút độc hại trong shard 1, vượt quá giới hạn Byzantine (33%).
SHARDING HOẠT ĐỘNG NHƯ THẾ NÀO ?
Chuỗi khối Ethereum 1.0 ( dùng để phân biệt với Ethereum 2.0) dựa trên giao thức đồng thuận Proof-of-Work (PoW) yêu cầu người dùng khi thực hiện các giao dịch phải trả phí gas. Các khoản phí gas này được sử dụng để khuyến khích các miner chạy các nút trong mạng thực hiện xác thực giao dịch và luân chuyển các khối trong blockchain. Tuy nhiên, với mô hình thực thi tuyến tính, các nút trong mạng Ethereum 1.0 phải thực hiện tất cả các hoạt động, dẫn đến việc tăng tải cho mỗi nút trong mạng. Điều này dẫn đến phí gas cao hơn khi có nhiều transacion được tạo ra trên mạng.
👉️ Với sharding, việc thực hiện các giao dịch trong một chuỗi khối cụ thể sẽ tuân theo mô hình thực thi song song. Điều này có nghĩa là các giao dịch sẽ được xử lý đồng thời và song song trên mỗi phân đoạn ( shard). Các nút sẽ xử lý một số hoạt động nhất định chứ không phải toàn bộ như chúng thực hiện trong mô hình tuyến tính.
Theo Alexander Skidanov một trong những nguyên nhân chính dẫn đến khả năng xử lý thấp của Ethereum là do mỗi nút trong mạng cần xử lý mọi giao dịch. Điều này tạo ra một nút cổ chai đáng kể trong hệ thống. Khi một số lượng lớn các giao dịch xảy ra trên mạng, thời gian để mỗi nút xử lý và xác minh giao dịch tăng lên, làm giảm tổng thể khả năng xử lý của hệ thống. Để giải quyết vấn đề này, các nhà phát triển đưa ra nhiều giải pháp trên cấp độ giao thức. Giải pháp chính được đề xuất có thể được chia thành hai loại:
- thứ nhất là giải pháp ủy quyền tất cả tính toán cho một nhóm nhỏ các nút mạnh mẽ.
- thứ hai là giải pháp phân chia công sức tính toán của các nút trong mạng sao cho mỗi nút trong mạng chỉ thực hiện một tập hợp con trong tổng số lượng công việc. Với phương pháp đầu tiên, như Thunder (có một nút duy nhất xử lý tất cả các giao dịch và tuyên bố đạt được tốc độ 1200 tx/giây, cải thiện gấp 100 lần so với Ethereum, tuy nhiên chưa có nghiên cứu hay thực nghiệm nào đánh giá tuyên bố này) và một số dự án khác như Algorand, SpaceMesh, và Solana, các nhà phát triển tập trung vào cải thiện khả năng đồng thuận và cấu trúc blockchain để hỗ trợ xử lý nhiều giao dịch hơn, nhưng vẫn bị giới hạn bởi khả năng mà một máy (mặc dù rất mạnh) có thể xử lý. Giải pháp thứ hai tập trung vào cải thiện khả năng mở rộng thông qua sharding hoặc các kỹ thuật khác giúp phân chia giao dịch thành các khối nhỏ hơn và chỉ giải quyết một phần của chúng.
Trên đây là một phần định nghĩa cơ bản về Sharding, bài viết cũng khá dài rồi nên mình sẽ tiếp tục thảo luận chủ đề này trong phần tiếp theo về các phiên bản của Sharding, bên cạnh đó mình sẽ giải thích thêm về các key word có trong bài ngày hôm nay như : GHOST, DAG .... Cảm ơn mọi người đã theo dõi.
👉️ Đọc và thảo luận nhiều bài viết khác trên : https://www.facebook.com/groups/vietnamblockchaininnovation
REFERENCES
[1] Zhou, Q., Huang, H., Zheng, Z., & Bian, J. (2020). Solutions to scalability of blockchain: A survey. Ieee Access, 8, 16440-16455.
[2] Yu, G., Wang, X., Yu, K., Ni, W., Zhang, J. A., & Liu, R. P. (2020). Survey: Sharding in blockchains. IEEE Access, 8, 14155-14181.