Skip to main content

So sánh Input Endoser với Sharding

Ngày 04 tháng 10 năm 2023 - Chia sẻ bài viết này trên Twitter | FacebookTelegram

Input Endoser sẽ tăng khả năng mở rộng của mạng Cardano. Sharding là một giải pháp phổ biến và cũng có cùng mục tiêu. Mục đích của bài viết là chỉ ra các khái niệm khác nhau của cả hai giải pháp, đặc biệt là liên quan đến việc duy trì trạng thái tổng thể (global state) của các hệ thống. Cardano có thể có trình Input Endoser và Sharding. Chúng tôi sẽ cho thấy một hệ thống như vậy có thể trông như thế nào.

Bảo mật là hàng đầu

Mỗi Blockchain phải duy trì một trạng thái tổng thể hợp lệ duy nhất. Từ góc độ bảo mật, tất cả các node trong mạng phải nhận thức được trạng thái tổng thể và có các quy tắc được xác định rõ ràng để quan sát và duy trì nó.

Trạng thái tổng thể là chế độ xem và được chia sẻ và nhất quán về dữ liệu và giao dịch được lưu trữ trên Blockchain bởi tất cả các node trong mạng. Nó đảm bảo rằng mọi node đều đồng ý về cùng một lịch sử và trạng thái hiện tại của Blockchain.

Trạng thái cục bộ (local state) mà mỗi node riêng lẻ duy trì phải giống với trạng thái tổng thể, vì đây là điều kiện tiên quyết để xác minh tính hợp lệ của các giao dịch và khối mới. Trạng thái tổng thể không chỉ được lưu trữ mà còn được cập nhật bởi các node tham gia đồng thuận.

Trạng thái tổng thể được cập nhật đều đặn. Nếu một Blockchain muốn mở rộng quy mô, sự đồng thuận của mạng phải cho phép các thay đổi trạng thái tổng thể được thực hiện thường xuyên nhất có thể trên khối lượng dữ liệu lớn. Đây là một thách thức vì tính nhất quán và bảo mật dữ liệu phải được đảm bảo. Điều này chỉ có thể thực hiện được nếu tất cả những người tham gia đều làm việc với cùng một trạng thái tổng thể.

Trong một blockchain nguyên khối với sự đồng thuận thế hệ đầu tiên, các thay đổi đối với trạng thái tổng thể được thực hiện bởi một node được chọn ngẫu nhiên duy nhất tại một vị trí duy nhất trên mạng. Thay đổi này được thực hiện thông qua một khối mới được phân tán vào mạng. Và, các node khác chấp nhận (hoặc từ chối) thay đổi với một chút độ trễ. Độ trễ mạng là rào cản đối với việc thực hiện các thay đổi trạng thái tổng thể thường xuyên với lượng dữ liệu lớn. Nói cách khác, cần đảm bảo tính nhất quán của dữ liệu trên tất cả các node khi các trạng thái thay đổi. Tức là thực hiện thay đổi và sau đó đợi một thời gian đủ dài để trạng thái mới này được thống nhất trên tất cả các node.

Trong hình bên dưới, bạn có thể thấy rằng node trên cùng đã tạo ra một khối mới tại thời điểm T. Khối này đến các node ở giữa tại thời điểm T+1. Tại node dưới cùng tại thời điểm T+2. Hướng di chuyển của khối được biểu thị bằng mũi tên màu đỏ. Trạng thái tổng thể nhất quán tại thời điểm T+2. Tại thời điểm T và T+1, mỗi node có trạng thái tổng thể khác nhau.

Một Blockchain nguyên khối (monolithic blockchain) xử lý tất cả các thành phần cốt lõi của hệ thống, chẳng hạn như sự đồng thuận, tính khả dụng của dữ liệu và việc thực thi, trong cùng một lớp (trong một lớp duy nhất). Tất cả các node tham gia vào sự đồng thuận của mạng chia sẻ một lĩnh vực duy nhất trong đó chúng cùng xác thực các giao dịch và khối. Trạng thái tổng thể được lưu trữ trên tất cả các node, giúp dễ dàng duy trì tính nhất quán và đầy đủ của dữ liệu tại bất kỳ thời điểm nào.

Tuy nhiên, điều này đặt ra yêu cầu đối với các node về tài nguyên (lưu trữ, băng thông, tính toán). Một hệ thống nguyên khối có thể có xu hướng tập trung hóa và có yêu cầu về hiệu suất node cao hơn. Do đó, rất khó để một Blockchain nguyên khối đạt được khả năng mở rộng cao, đồng thời đảm bảo mức độ Phi tập trung cao. Một Blockchain nguyên khối thường có thể cung cấp mức độ bảo mật và độ tin cậy cao nhưng nó không có thể nói mở rộng quy mô.

Khi Blockchain cần mở rộng quy mô hơn, các nhóm đang đưa ra những cải tiến như trình Input Endoser và Sharding.

Hãy nhớ rằng, mỗi hệ thống, dù là nguyên khối, sử dụng trình Input Endoser hay sử dụng Sharding, đều phải duy trì một trạng thái tổng thể hợp lệ duy nhất. Trong bài viết này, chúng tôi sẽ so sánh các cách tiếp cận khác nhau để tăng khả năng mở rộng, chủ yếu liên quan đến trạng thái tổng thể.

Tất cả các phương pháp nhằm tăng khả năng mở rộng Blockchain đều cố gắng sử dụng các yếu tố song song và đồng thời vào sự đồng thuận của mạng. Những cải tiến chỉ có thể được thực hiện khi lưu ý đến tính nhất quán của trạng thái tổng thể. Sự không nhất quán có thể dẫn đến giảm tính bảo mật và độ tin cậy.

Nói một cách đơn giản, sự đồng thuận của mạng có thể cho phép các node thực hiện đồng thời nhiều hoạt động tại nhiều vị trí trên mạng, nhưng trạng thái sổ cái (trạng thái tổng thể) phải nhất quán. Các node phải được đồng bộ hóa kịp thời và chính xác.

Duy trì trạng thái tổng thể là một thách thức với sự đồng thuận phức tạp ngày càng tăng và lượng dữ liệu được truyền trong mạng ngày càng cao.

Sharding

Blockchain Sharding chia mạng thành các nhóm node nhỏ hơn, được gọi là Phân mảnh (Sharding). Sharding có thể xử lý các giao dịch song song. Mỗi Sharding có tập hợp con dữ liệu Blockchain và giao thức đồng thuận riêng.

Để đơn giản hóa, bạn có thể coi sharding là sao chép một Blockchain (bao gồm các node và trạng thái tổng thể của nó) nhiều lần cạnh nhau.

Trong hình ảnh bên dưới, bạn thấy một blockchain được phân tách (shard). 15 node được chia thành 3 Sharding. Trong mỗi Sharding, một khối mới được tạo ra tại thời điểm T+1. Bạn thấy nhiều khối hơn vì khối này được khuếch tán đến tất cả các kênh liên lạc cùng lúc trong mạng P2P.

Ưu điểm lớn nhất của blockchain Sharding là khả năng mở rộng cao đạt được thông qua việc song song hóa để xác minh giao dịch. Việc xác thực các giao dịch được phân phối giữa một số nhóm node độc lập một phần. Điều này có thêm lợi ích vì nó làm giảm yêu cầu về lưu trữ, băng thông và năng lượng tính toán của từng node riêng lẻ.

Tuy nhiên, trong một blockchain Sharding, việc duy trì tính nhất quán của trạng thái tổng thể sẽ khó khăn hơn vì nó được duy trì trong các Sharding riêng lẻ. Mỗi Sharding chỉ có một phần kiến ​​thức về trạng thái tổng thể vì nó không có tất cả dữ liệu. Phải có một số cơ chế đồng bộ hóa giữa các Sharding để đảm bảo rằng trạng thái tổng thể nhất quán trên tất cả chúng. Điều này mang lại sự phức tạp và thách thức từ góc độ bảo mật.

Các node trong blockchain Sharding không nhận biết được tất cả người dùng và tài sản. Việc phân bổ người dùng và tài sản phụ thuộc vào thiết kế và triển khai cụ thể của cơ chế sharding. Nguyên tắc chung là người dùng và nội dung được chỉ định cho các Sharding dựa trên một số tiêu chí, chẳng hạn như địa chỉ, lịch sử giao dịch hoặc cân bằng tải của họ.

Dapps cũng được phân bố trên các Sharding. Không giống như người dùng và tài sản, dApps có thể trải rộng trên nhiều Sharding nếu chúng cần tương tác với các dApps hoặc tài sản khác trên các Sharding khác nhau.

Việc phân bố người dùng, tài sản và dApps yêu cầu giao tiếp giữa các Sharding liên quan đến việc gửi tin nhắn giữa các Sharding và đảm bảo tính nhất quán cũng như tính tự động của chúng. Các blockchain Sharding khác nhau có các cách tiếp cận khác nhau để xử lý giao tiếp giữa các Sharding, chẳng hạn như sử dụng chuỗi chuyển tiếp, cơ chế công chứng (notary scheme) hoặc bằng chứng biên nhận (receipt proofs).

Nếu Alice ở Sharding 1, Bob ở Sharding 2 và Carol ở Sharding 3, thì mỗi giao dịch sẽ ở một khối khác và chỉ được xác minh bởi các node trong Sharding đó. Nhưng làm cách nào để Sharding 2 và 3 tìm hiểu về giao dịch của Alice? Có hai cách có thể để thông báo cho Sharding 2 và 3 về giao dịch của Alice.

Một cách là sử dụng điều phối viên toàn cầu có thể được gọi là chuỗi chuyển tiếp hoặc chuỗi báo hiệu. Điều phối viên kết nối tất cả các Sharding. Nó có thể định kỳ nhận các tiêu đề khối từ mỗi Sharding và phát chúng đến các Sharding khác. Sharding 2 và 3 có thể tìm hiểu về giao dịch Alice bằng cách nhận tiêu đề khối từ Sharding 1 thông qua điều phối viên toàn cầu.

Một cách khác là sử dụng cơ chế công chứng hoặc bằng chứng biên nhận liên quan đến việc liên lạc trực tiếp giữa các Sharding. Và không cần điều phối viên toàn cầu. Một Sharding có thể gửi tin nhắn đến một Sharding (hoặc các Sharding) khác cho biết rằng một giao dịch nhất định đã được thực hiện hoặc cam kết. Sharding 2 và 3 có thể tìm hiểu về giao dịch Alice bằng cách nhận trực tiếp tin nhắn hoặc bằng chứng từ Sharding 1.

Mỗi khi Sharding tạo ra một khối mới (có nhiều giao dịch), tiêu đề khối sẽ được gửi đến điều phối viên toàn cầu. Điều phối viên toàn cầu gửi tiêu đề khối tới tất cả các Sharding khác. Bằng cách này, tất cả các Sharding có thể duy trì một thông tin nhất quán về trạng thái tổng thể. Tuy nhiên, điều này cũng gây ra một số chi phí và độ trễ vì điều phối viên phải xử lý và phát tán tất cả các tiêu đề khối từ tất cả các Sharding. Do đó, một số blockchain Sharding sử dụng các kỹ thuật khác nhau để tối ưu hóa hiệu suất của điều phối viên toàn cầu, chẳng hạn như phân khối, lưu vào bộ nhớ đệm hoặc lấy mẫu.

Hãy tưởng tượng một tình huống trong đó Alice ở Sharding 1 và Bob ở Sharding 2. Alice muốn gửi cho Bob 10 xu. Trong kịch bản đơn giản này, có thể sử dụng tối đa 8 thông báo Sharding chéo để đảm bảo rằng giao dịch giữa các Sharding được thực hiện một cách tự động và an toàn trên các Sharding.

Trong hình ảnh bên dưới, bạn có thể thấy luồng tin nhắn bình thường trong quá trình giao tiếp giữa các Sharding nếu Alice và Bob ở hai Sharding khác nhau.

Sử dụng 8 tin nhắn chéo Sharding hiện là giải pháp tốt nhất xét đến tính bảo mật và tính tự động.

Có thể đạt được kết quả tương tự với ít tin nhắn hơn nhưng sẽ cần phải đánh đổi giữa tính bảo mật, hiệu quả và tính đơn giản. Ví dụ: người ta có thể thử kết hợp một số tin nhắn thành một. Tuy nhiên, điều này sẽ làm tăng kích thước và độ phức tạp của mỗi tin nhắn, đồng thời có thể nói gây ra nhiều rủi ro hơn về sự chậm trễ hoặc lỗi mạng. Ngoài ra, người ta có thể cố gắng loại bỏ một số tin nhắn. Điều này sẽ làm giảm mức độ đồng bộ hóa và xác minh giữa các Sharding và có thể nói làm tổn hại đến tính tự động và tính xác thực của giao dịch giữa các Sharding.

Như bạn có thể thấy, việc duy trì trạng thái tổng thể của blockchain Sharding là một nhiệm vụ rất phức tạp. Nó đòi hỏi sự phối hợp và đồng bộ hóa giữa các Sharding khác nhau, cũng như đảm bảo tính nhất quán và bảo mật cho các giao dịch giữa các Sharding. Kích thước của chi phí phụ thuộc vào giao thức Sharding, số lượng Sharding, tần suất giao dịch giữa các Sharding và điều kiện mạng.

Chi phí liên lạc giữa các Sharding là một yếu tố ảnh hưởng đến khả năng mở rộng của blockchain bị phân chia. Càng có nhiều giao dịch giữa các Sharding thì càng cần trao đổi nhiều tin nhắn và dữ liệu giữa các Sharding, điều này sẽ tiêu tốn nhiều băng thông, bộ nhớ và tài nguyên tính toán. Do đó, chi phí liên lạc giữa các Sharding có thể hạn chế khả năng mở rộng của hệ thống, đặc biệt khi số lượng Sharding lớn hoặc điều kiện mạng kém.

Tất cả các Sharding đều duy trì sự đồng thuận cục bộ và cũng phải đảm bảo liên lạc giữa các Sharding. Đây là nguồn tài nguyên và đồng bộ hóa chuyên sâu. Sự đồng thuận cục bộ đảm bảo rằng mỗi Sharding duy trì một sổ cái nhất quán và an toàn cho các giao dịch của chính nó. Khi một giao dịch liên quan đến nhiều Sharding, các Sharding đó cần liên lạc với nhau để thực hiện và xác minh giao dịch. Sự kết hợp giữa sự đồng thuận cục bộ và giao tiếp giữa các Sharding cho phép các blockchain Sharding đạt được khả năng mở rộng và hiệu suất cao so với các blockchain nguyên khối.

Mục đích chính của sharding là tăng khả năng mở rộng, nhưng có lẽ hơi nghịch lý là giải pháp này có thể bị choáng ngợp bởi một số lượng lớn các thông báo cross-shard (phân mảnh chéo). Để một Blockchain được hưởng lợi từ việc sử dụng sharding, lợi ích của việc song song hóa phải lớn hơn chi phí liên quan đến việc đồng bộ hóa các Sharding và giao tiếp giữa các Sharding.

Nó thực sự phụ thuộc vào việc triển khai cụ thể và cách người dùng sử dụng mạng. Với số lượng người dùng ngày càng tăng, nhưng đặc biệt là với nhu cầu liên lạc giữa các Sharding cao hơn, chi phí có thể tăng lên và do đó hiệu quả song song hóa khi xử lý các giao dịch trong các Sharding riêng lẻ có thể giảm.

Hệ thống càng có nhiều Sharding thì người dùng, tài sản và ứng dụng sẽ càng bị phân tán. Độ phân tán cao là điều không mong muốn, vì nó làm tăng nhu cầu liên lạc giữa các Sharding, nhưng về nguyên tắc, một blockchain Sharding không thể tránh được điều đó.

Ngoài ra, số lượng phân mảnh cũng không thể tăng đến vô cùng. Số lượng Sharding lý tưởng phụ thuộc vào việc sử dụng số lượng Sharding hiện tại cũng như các yếu tố khác, chẳng hạn như tính bảo mật, hiệu quả, độ phức tạp của giao thức Sharding và cách người dùng mong muốn sử dụng hệ thống. Tuy nhiên, điều này không thể dự đoán trước được.

Input Endoser

Input Endoser (Trình xác thực đầu vào) giữ người dùng, tài sản và dApps chỉ trong một lớp duy nhất. Việc đồng thuận sử dụng các yếu tố song song và đồng thời nhưng vẫn duy trì một trạng thái tổng thể duy nhất (một phiên bản của sổ cái). Do đó, không cần thiết phải chia người dùng, tài sản và dApps thành nhiều nhóm riêng biệt.

Mục đích chính của tính năng Input Endoser là tách lựa chọn giao dịch khỏi quá trình sản xuất khối. Một bộ ba khối được sử dụng cho việc này. Khối đầu vào (IB), Khối chứng thực (EB) và Khối xếp hạng (RB).

Các Khối xếp hạng dùng để duy trì trạng thái thống nhất toàn cầu, trong khi các Khối đầu vàoKhối chứng thực dùng để chọn và xác thực các giao dịch diễn ra đồng thời để duy trì trạng thái thống nhất.

Tất cả các loại khối được tạo song song trong mạng Cardano nhưng với tần suất khác nhau. Các Khối xếp hạng có thể được coi là các khối đồng thuận vì chúng đảm bảo tính tuyến tính của Blockchain. Các Khối xếp hạng hình thành sự đồng thuận về dữ liệu trong các Khối chứng thực tham chiếu các Khối đầu vào (có chứa tải trọng). Giữa quá trình tạo hai Khối xếp hạng, nhiều Khối chứng thực và đầu vào sẽ được tạo ra. Sự đồng thuận được hình thành trên lượng dữ liệu lớn hơn so với trường hợp Blockchain nguyên khối.

Trong hình, bạn có thể thấy quá trình tạo các khối trong mạng Cardano sử dụng trình Input Endoser. Mỗi giây, một khối mới được tạo ra (một số khối có thể được tạo song song trong cùng một giây).

Các Khối đầu vào được tham chiếu bởi các Khối chứng thực. Các Khối chứng thực được tham chiếu bởi các Khối xếp hạng. Có một liên kết được xác định rõ ràng giữa tất cả các loại khối đóng vai trò là cơ chế đồng bộ hóa. Điều này rất quan trọng vì thông tin được truyền bá trong mạng thông qua việc khuếch tán các khối. Không cần thiết phải giới thiệu một cơ chế nhắn tin khác như trong trường hợp sharding, vì tất cả các node đều ở trong cùng một lớp.

Trong hình ảnh bên dưới, bạn có thể thấy mối quan hệ giữa tất cả các loại khối. Mũi tên đen biểu thị tham chiếu giữa Khối đầu vàoKhối chứng thực cũng như giữa Khối xếp hạngKhối chứng thực. Mũi tên màu đỏ biểu thị tham chiếu của các Khối đầu vào với trạng thái sổ cái hiện tại, tức là các Khối xếp hạng. Các Khối đầu vào được tạo ra dựa trên trạng thái tổng thể hiện tại, được biểu thị bằng Khối xếp hạng gần đây. Mũi tên màu xanh biểu thị tính tuyến tính của Blockchain, tức là mối quan hệ giữa các Khối xếp hạng khi Khối xếp hạng mới phải tuân theo Khối xếp hạng trước đó. Thời gian trôi qua, tất cả các giao dịch sẽ được ghi vào sổ cái thông qua các Khối đầu vào. Trong hình ảnh, bạn cũng có thể thấy các hình chữ nhật màu xanh phía sau các Khối chứng thực, thể hiện chứng chỉ chứng thực.

Thông tin về giao dịch của Alice sẽ dần dần được nhận từ Khối đầu vào đến Khối xếp hạng. Trong Khối đầu vàoKhối chứng thực, các giao dịch chỉ đang được chuẩn bị. Sự đồng thuận của mạng diễn ra thông qua việc thêm một Khối xếp hạng mới vào Blockchain và sau đó các node còn lại trong mạng chấp nhận (hoặc từ chối) khối này. Node tạo ra Khối xếp hạng mới có thể giải quyết xung đột giữa các giao dịch bằng cách chọn tập hợp Khối chứng thực có lợi nhất.

Trong hình bên dưới, bạn có thể thấy giao dịch của Alice đi từ Khối đầu vào đến Khối chứng thực và qua khối đó đến Khối xếp hạng như thế nào. Chuyển động của giao dịch được biểu thị bằng các mũi tên màu đỏ.

Không giống như Sharding, Input Endoser hoạt động như một blockchain nguyên khối khi gửi các giao dịch giữa Alice và Bob. Điều phức tạp hơn là việc phân phối thông tin về giao dịch của Alice. Giao dịch của Alice, cùng với một số lượng lớn các giao dịch khác, được xác minh bởi một số lượng lớn các node trước khi được đưa vào blockchain thông qua một Khối xếp hạng.

Về cơ bản, các Khối đầu vào có thể được tạo ra (truyền phát) liên tục cứ sau 0,2-2 giây (tần số sẽ được đặt bởi tham số giao thức). Điều này có nghĩa là thay vì tạo một khối cứ sau 20 giây, 10 đến 100 Khối đầu vào có thể được tạo ra trong cùng một thời gian. Các Khối đầu vào, cũng như các Khối chứng thực, có thể được xác thực đồng thời trước khi chúng trở thành một phần của lịch sử Blockchain thông qua Khối xếp hạng.

Input Endoser tăng khả năng mở rộng trong một lĩnh vực duy nhất. Mạng duy trì một trạng thái tổng thể duy nhất, do đó không cần phải đồng bộ hóa các trạng thái tổng thể phụ tương tự như Sharding.

Lời kết

Nếu khả năng mở rộng hiện tại của mạng Blockchain nguyên khối là 30 TPS, thì việc sử dụng Sharding không làm tăng khả năng mở rộng của mạng này mà chỉ tạo ra một số bản sao của mạng này, do đó tạo ra các Sharding (nhiều lớp). Mỗi Sharding có sự đồng thuận và trạng thái cục bộ riêng cho một phần người dùng, tài sản và ứng dụng của mạng. Luôn cần phải duy trì trạng thái tổng thể của mạng, điều này xảy ra thông qua việc đồng bộ hóa các trạng thái cục bộ. Nếu hai người tham gia liên lạc với nhau và mỗi người ở một Sharding khác nhau thì đối với một giao dịch đơn giản, cần sử dụng tối đa 8 tin nhắn chéo. Đây là một chi phí tương đối lớn.

Input Endoser là một giải pháp giúp tăng khả năng mở rộng Blockchain. Một trạng thái tổng thể được duy trì, trạng thái chung cho tất cả người dùng, nội dung và ứng dụng. Có các yếu tố song song và đồng thời trong hệ thống, nhưng việc đồng bộ hóa diễn ra một cách tự nhiên thông qua việc phổ biến ba loại khối trong mạng. Một giao dịch duy nhất luôn đủ cho sự tương tác giữa hai người tham gia, vì tất cả họ đều ở trong một lớp duy nhất.

Về mặt lý thuyết, Cardano có thể có cả sharding và Input Endorsers. Trong mỗi Sharding, có thể có sự đồng thuận được hỗ trợ bởi sự cải tiến của Input Endorsers. Và, sẽ có nhiều lớp và một điều phối viên toàn cầu (hoặc một giải pháp không có điều phối viên sẽ được sử dụng). Việc đồng bộ hóa các trạng thái cục bộ sẽ diễn ra ở cấp độ Khối xếp hạng. Nó có thể trông giống như hình ảnh dưới đây.

Tuy nhiên, hiện tại, đây chỉ là một lý thuyết khá xa, vì Cardano thậm chí còn chưa có Input Endoser và sẽ mất thêm một thời gian nữa để hệ thống này được triển khai. Input Endoser có thể là giải pháp đủ trong trung hạn. Tuy nhiên, những cải tiến hơn nữa sẽ cần được xem xét vì mạng Blockchain phải mở rộng quy mô cũng như hệ thống tài chính hiện tại nếu chúng muốn phá vỡ nó. Nhiều nhóm phát triển đang tập trung phát tiển lớp thứ hai (layer 2), nhưng để chúng hoạt động đáng tin cậy, lớp đầu tiên (layer 1) phải có quy mô tốt. Chúng ta sẽ thấy những gì tương lai mang lại cho chúng ta.

Nguồn bài viết tại đây


Picture


Đọc thêm các bài viết liên quan tại thẻ Tags bên dưới