Cardano và sharding
Ngày 28 tháng 06 năm 2023 - Chia sẻ bài viết này trên Twitter | Facebook | Telegram
Cardano là một blockchain đồng nhất và việc nâng cấp Ouroboros Leios sẽ không thay đổi điều đó. Nhiều nhóm dự án blockchain đã triển khai sharding trong nỗ lực đạt được khả năng mở rộng cao hơn. Về lý thuyết, Cardano cũng có thể có sharding một ngày nào đó. Tuy nhiên, điều này chắc chắn sẽ không xảy ra trước khi Ouroboros Leios được triển khai. Hãy khám phá sự khác biệt giữa blockchain đồng nhất (monolithic) và blockchain phân mảnh (sharding) từ góc độ đồng thuận. Chủ đề rất phức tạp, vì vậy chúng ta sẽ cố tình chỉ tập trung vào một số khía cạnh. Vì mục đích đơn giản cho người đọc, bài viết không nhằm mục đích cung cấp thông tin đầy đủ và toàn diện.
Những thách thức đối với blockchain đồng nhất và phân mảnh
Một blockchain đồng nhất 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à thực thi, trong cùng một lớp hoặc lĩnh vực. 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.
Một blockchain phân mảnh phân vùng hệ thống thành các nhóm nhỏ hơn được gọi là phân đoạn. Mỗi phân đoạn có thể xử lý một phần giao dịch độc lập và song song. Các node được phân chia giữa các phân đoạn. Nếu có 1000 node và 10 phân đoạn trong mạng, 100 node sẽ được phân phối cho mỗi phân đoạn theo các quy tắc cụ thể.
Tuy nhiên, các phân đoạn không độc lập với nhau vì chúng vẫn là một phần của một hệ thống. Mỗi hệ thống, dù là đồng nhất hay sử dụng sharding, đều phải duy trì một trạng thái toàn cầu (global state) hợp lệ duy nhất.
Trạng thái toàn cầu là đại diện cho quyền sở hữu và chuyển giao tài sản trên blockchain. Trạng thái toàn cầu được lưu trữ và cập nhật bởi các node tham gia vào sự đồng thuận. Đừng quên rằng một trong những cải tiến quan trọng mà blockchain mang lại là bảo vệ chống lại các cuộc tấn công chi tiêu hai lần. Điều khó khăn là quản lý tác vụ này trong một mạng phi tập trung. Đối với một máy chủ tập trung, đây là một nhiệm vụ dễ dàng.
Từ góc độ bảo mật, tất cả các node trong mạng phải luôn cập nhật được trạng thái toàn cầu.
Trong một blockchain đồng nhất, trạng thái toàn cầu đượ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 đồng nhất có thể có xu hướng tập trung hóa, có yêu cầu hiệu suất node cao hơn và rất khó (nếu không muốn nói là gần như không thể) để đạt được khả năng mở rộng cao.
Trong một blockchain phân mảnh, việc duy trì tính nhất quán của trạng thái toàn cầu sẽ khó khăn hơn vì nó được duy trì trong các phân đoạn riêng lẻ. Mỗi phân đoạn chỉ có một phần kiến thức về trạng thái chung vì nó không có tất cả dữ liệu. Phải có một số cơ chế đồng bộ hóa (giao thức) để đảm bảo rằng trạng thái chung nhất quán giữa các phân đoạn. Điều này mang lại sự phức tạp và thách thức từ góc độ bảo mật. Mặt khác, tương đối dễ dàng để đạt được khả năng mở rộng cao khi các giao dịch được xác thực trong các phân đoạn. Tuy nhiên, số lượng phân đoạn bị hạn chế do nhu cầu liên lạc giữa các phân đoạn.
Một blockchain đồng nhất có thể có sự đồng thuận đơn giản hơn và minh bạch hơn. Trong trường hợp của Cardano, điều này sẽ không còn đúng sau khi nâng cấp lên Ouroboros Leios, vì sẽ có 3 phiên bản của các khối với thời gian khác nhau. Một ưu điểm khác là bảo mật dễ dàng hơn nhờ tính khả dụng của dữ liệu cao hơn. Việc đảm bảo khả năng chống lại các cuộc tấn công chi tiêu gấp đôi và tấn công phát tán (replay attacks) sẽ dễ dàng hơn. Việc đảm bảo bảo mật dễ dàng hơn nhiều nhờ dữ liệu sẵn có cao hơn. Blockchain đồng nhất có khả năng chống lại các cuộc tấn công lặp lại và chi tiêu gấp đôi.
Thách thức lớn nhất đối với các blockchain đồng nhất là đạt được kết quả xác thực nhanh chóng của các giao dịch (và các khối) mà không phải hy sinh tính phi tập trung và bảo mật. Độ phức tạp (yêu cầu giao tiếp cao hơn) có thể tăng theo số lượng node, hạn chế khả năng mở rộng.
Hãy để chúng ta nói thêm rằng Cardano sử dụng sự đồng thuận theo kiểu Nakamoto, tức là tính xác suất Xác thực. Do đó, tính hữu hạn của giao dịch chậm so với các mạng có tính hữu hạn có thể chứng minh được (Ethereum).
Ưu điểm lớn nhất của blockchain phân mảnh là khả năng mở rộng cao đạt được thông qua song song hóa để xác minh giao dịch. Nói cách khác, xác thực giao dịch được phân phối giữa một số nhóm node (phân đoạn) độc lập một phần. Điều này có những lợi thế bổ sung vì nó làm giảm các yêu cầu về lưu trữ, băng thông và năng lượng tính toán của các node riêng lẻ. Mạng có thể được Phi tập trung nhiều hơn và việc chạy node của riêng bạn có thể tiết kiệm hơn.
Nhược điểm của blockchain phân mảnh là phức tạp, đặc biệt là về đồng bộ hóa và quản lý các phân đoạn, giao tiếp giữa các phân đoạn, giải quyết xung đột giữa các phân đoạn, v.v..
Chi phí liên lạc giữa các phân đoạn
Bây giờ chúng ta hãy xem xét blockchain phân mảnh từ góc độ tài sản và ứng dụng. Rõ ràng là nếu chỉ có một số lượng ứng dụng và tài sản hạn chế trên mỗi phân đoạn (trong trường hợp cực đoan, một ứng dụng và một loại token duy nhất trên mỗi phân đoạn), tính thân thiện với người dùng và khả năng sử dụng của hệ thống sẽ bị ảnh hưởng. Chẳng hạn, sẽ không hợp lý nếu chỉ có tiền ADA trong một phân đoạn, HOSKY trong phân đoạn thứ hai và DJED trong phân đoạn thứ ba. Làm thế nào một sàn giao dịch phi tập trung có thể hoạt động trong một môi trường như vậy? Bạn sẽ đặt nó vào phân mảnh nào?
Vấn đề này được giải quyết bằng giao tiếp giữa các phân đoạn. Đó là quá trình cho phép các phân đoạn trao đổi thông tin và phối hợp hành động trong một hệ thống. Giao dịch giữa các phân đoạn liên quan đến nhiều phân đoạn. Nó là cần thiết để đảm bảo tính nguyên tử và tính nhất quán giữa các phân đoạn. Hãy chứng minh điều đó qua một vài ví dụ đơn giản.
Nếu Alice muốn gửi token X từ phân đoạn 1 đến Bob trên phân đoạn 2, hệ thống cần đảm bảo rằng giao dịch hợp lệ, Xác thực và nhất quán trên cả hai phân đoạn và Alice không thể chi tiêu gấp đôi token X trên các phân đoạn khác. Như bạn có thể thấy, các node trong một phân đoạn không thể xác thực giao dịch này và tuyên bố giao dịch đó là được xác thực. Các node từ cả hai phân đoạn là cần thiết để xác thực giao dịch. Cũng cần đảm bảo rằng token X không được sử dụng trong các phân đoạn khác. Các node khác (từ các phân đoạn khác) cũng phải có ít nhất một phần kiến thức về trạng thái của token X. Bạn có nhớ khi tôi nói về trạng thái toàn cấu không?
Trong trường hợp của các ứng dụng, nó rất giống nhau. Hợp đồng thông minh giữa các phân đoạn yêu cầu giao tiếp qua nhiều phân đoạn và dữ liệu (hoặc logic) từ các phân đoạn khác. Ví dụ: nếu hợp đồng thông minh DEX (được triển khai trên phân đoạn 3) muốn hoán đổi token X từ phân đoạn 1 với token Y từ phân đoạn 2, hệ thống cần đảm bảo rằng hợp đồng thông minh có thể truy cập và xác minh dữ liệu cũng như trạng thái của token X và token Y trên các phân đoạn tương ứng của chúng và việc hoán đổi được thực hiện nguyên tử và nhất quán trên các phân đoạn.
Bây giờ hãy thử tưởng tượng tất cả những điều này có nghĩa là gì trong bối cảnh khả năng mở rộng, đồng bộ hóa thời gian của các phân đoạn, lưu trữ (tính khả dụng của dữ liệu), liên lạc (băng thông), giải quyết xung đột, ngăn chặn tấn công, duy trì trạng thái toàn cầu, v.v. Đồng bộ hóa giữa các phân đoạn là quá trình điều đó đảm bảo rằng tất cả các phân đoạn đều có chế độ xem nhất quán và cập nhật về trạng thái toàn cầu của hệ thống.
Sự phụ thuộc của phân đoạn vào các phân đoạn khác để xác thực các giao dịch giữa các phân đoạn (hoặc hợp đồng thông minh) là một tính năng không mong muốn (nhưng cần thiết) vì phân đoạn đó không hoàn toàn tự trị (không phụ thuộc vào môi trường xung quanh). Nếu một phân đoạn gặp sự cố (ví dụ: do bị tấn công, sự cố mạng hoặc hiệu suất thấp hơn), nó có thể ảnh hưởng đến các phân đoạn khác, tức là toàn bộ hệ thống. Do đó, sự đồng thuận của mạng phải được thiết kế rất cẩn thận và tính đến những tình huống có thể xảy ra.
Có một thách thức lớn đối với các nhóm đang cố gắng triển khai sharding đồng thuận. Điều gì xảy ra nếu một số lượng lớn (hơn một nửa) giao dịch yêu cầu liên lạc giữa các phân đoạn? Trong trường hợp này, blockchain phân mảnh có thể không hiệu quả như dự đoán ban đầu. May mắn thay, các blockchain phân đoạn đã tồn tại, vì vậy chúng ta có thể quan sát và so sánh các triển khai riêng lẻ.
Hoàn tất giao dịch (Transaction finality) trong bối cảnh khả năng mở rộng
Xem thêm về Transaction finality tại đây
Để hiểu chủ đề này, cần phải hiểu tính Hoàn tất (finality) của giao dịch trong bối cảnh khả năng mở rộng. tính Hoàn tất có nghĩa là một khi giao dịch được xác nhận bởi mạng, nó không thể được hoàn nguyên hoặc thay đổi. Điều này đảm bảo tính bảo mật và tính toàn vẹn của hệ thống, đồng thời ngăn chặn các cuộc tấn công chi tiêu gấp đôi hoặc tấn công phát tán.
Tính chính xác ảnh hưởng đến hiệu suất và hiệu quả của hệ thống, vì nó làm giảm độ trễ và chi phí chờ xác nhận hoặc giải quyết xung đột.
Nói một cách đơn giản, cho đến khi giao dịch X kết thúc, tài sản được chuyển giao bởi giao dịch X không có chủ sở hữu nhất định (có thể là người gửi ban đầu hoặc người nhận mới). Rõ ràng, việc sử dụng lại tài sản này (với chủ sở hữu không chắc chắn) cho một giao dịch Y khác là “rủi ro” vì nếu giao dịch X trước đó bị hoàn nguyên, thì giao dịch Y (ai đó đang cố gửi) cũng sẽ bị hoàn nguyên. Vấn đề có thể được xâu chuỗi. Rất khó để blockchain hoàn nguyên một giao dịch đơn lẻ nên thường sẽ cần phải hoàn nguyên toàn bộ khối. Điều này sẽ phá vỡ đáng kể tính nhất quán của dữ liệu.
Tính Hoàn tất (giao dịch được xác thực chắc chắn) rất quan trọng đối với khả năng mở rộng nói chung nhưng đặc biệt đối với các blockchain phân đoạn vì nó cho phép các giao dịch giữa các phân đoạn nhanh hơn và đơn giản hơn. Nếu các giao dịch không phải là giao dịch Xác thực, chúng có thể tạo ra sự không nhất quán hoặc xung đột giữa các phân đoạn, điều này có thể ảnh hưởng đến khả năng mở rộng và bảo mật của hệ thống. Ví dụ: nếu Phân đoạn 1 xác nhận giao dịch chuyển token X từ Alice sang Bob, nhưng Phân đoạn 2 chưa xác nhận, Alice có thể cố gắng chi tiêu lại token X trên Phân đoạn 2, gây ra chi tiêu gấp đôi. Để ngăn chặn điều này, hệ thống cần đảm bảo rằng giao dịch là Xác thực trên cả hai phân đoạn trước khi cho phép Alice hoặc Bob sử dụng token X trên các phân đoạn khác.
Một lý do khác tại sao tính hữu hạn lại quan trọng đối với khả năng mở rộng là nó cho phép các giao thức đồng thuận linh hoạt và hiệu quả hơn. Các giao thức đồng thuận là các quy tắc xác định cách các node đồng ý về trạng thái của blockchain và giải quyết xung đột. Nếu các giao dịch không phải là giao dịch đã được xác thực, chúng có thể tạo ra các nhánh hoặc tổ chức lại, điều này có thể ảnh hưởng đến khả năng mở rộng và bảo mật của hệ thống.
Ví dụ: nếu node A xác nhận một khối chứa giao dịch T1, nhưng node B xác nhận một khối khác chứa giao dịch T2, họ có thể tạo một nhánh trong blockchain, điều này có thể gây nhầm lẫn hoặc không nhất quán. Để giải quyết vấn đề này, hệ thống cần sử dụng giao thức đồng thuận có thể xử lý các nhánh hoặc tổ chức lại (ví dụ: quy tắc chuỗi dài nhất). Tuy nhiên, các giao thức này có thể chậm, tốn kém hoặc phức tạp, điều này có thể hạn chế khả năng mở rộng và hiệu suất của hệ thống.
Một blockchain phân mảnh không thể hoạt động hiệu quả và đáng tin cậy trừ khi đảm bảo tính Hoàn tất của giao dịch nhanh (tính Hoàn tất có thể chứng minh được), không chỉ trong các phân đoạn mà còn cho giao tiếp giữa các phân đoạn.
Làm thế nào để tính toán thông lượng hệ thống?
Rất khó để ước tính hệ thống nào có thể có thông lượng cao hơn. Vấn đề là các giao dịch không thể được xác nhận độc lập, tức là song song. Có một số khác biệt giữa UTXO và các blockchain dựa trên tài khoản, nhưng chúng ta sẽ hiểu điều đó. Nếu giao tiếp xuyên chuỗi được yêu cầu để xác thực các giao dịch, nó sẽ đưa ra chi phí hoạt động và độ trễ làm giảm thông lượng. Không thể tính tổng thông lượng của hệ thống phân đoạn bằng cách nhân thông lượng phân đoạn với số lượng phân đoạn.
Tương tự, không thể tính toán thông lượng của các hệ thống đồng nhất bằng cách nhân công suất xử lý trên mỗi Trình xác thực với số lượng Trình xác thực. Trình xác thực có thể có khả năng xử lý khác nhau, do đó, có thể trình xác thực kém nhất sẽ ảnh hưởng đến hiệu suất tổng thể của hệ thống. Nó cũng phụ thuộc vào sự đồng thuận cụ thể.
Đạt được khả năng mở rộng cao (và cũng nhanh chóng) trong một blockchain đồng nhất là không dễ dàng. Có rất nhiều thử thách và các đội phải cẩn thận cân bằng giữa các sự đánh đổi. Thời hạn Xác thực nhanh hơn thường yêu cầu sản xuất và lan truyền khối nhanh hơn, điều này có thể ảnh hưởng đến tính bảo mật và Phi tập trung của hệ thống (nguy cơ phân nhánh hoặc tổ chức lại). Thời hạn Xác thực nhanh hơn thường yêu cầu các giao thức hoặc cơ chế phức tạp hơn (nhiều node phải tham gia bỏ phiếu trong quá trình sản xuất từng khối mới), điều này có thể ảnh hưởng đến tính đơn giản và minh bạch của hệ thống. Sự đồng thuận với kết quả Xác thực nhanh chóng có thể yêu cầu nhiều giao tiếp hoặc đồng bộ hóa hơn giữa các node, điều này có thể làm tăng độ trễ hoặc chi phí hoạt động.
Blockchain phân mảnh hiện có thông lượng cao hơn (ít nhất là trên giấy tờ), nhưng độ tin cậy của chúng sẽ chỉ trở nên rõ ràng khi tải hệ thống cao hơn khi các giao dịch giữa các phân đoạn cần được xử lý.
Làm thế nào để mô hình kế toán và sự đồng thuận ảnh hưởng đến khả năng mở rộng?
Điều đáng ngạc nhiên đối với một số người có thể ảnh hưởng đến thông lượng là mô hình kế toán. Mô hình dựa trên tài khoản được sử dụng bởi Ethereum và hầu hết các nền tảng Smart Contract không cho phép xử lý giao dịch song song. Cần duy trì thứ tự giao dịch trong quá trình xác thực (hệ thống duy trì trạng thái toàn cầu được chia sẻ). Nói cách khác, các giao dịch phụ thuộc lẫn nhau. Khi xác thực một giao dịch, cần xem xét trạng thái toàn cầu phải không thay đổi (tính nguyên tử) tại thời điểm xác thực.
Mô hình dựa trên tài khoản (accounting) yêu cầu xử lý tuần tự các giao dịch bên trong cũng như trên các phân đoạn, vì mỗi tài khoản có thể phụ thuộc (hoặc xung đột với) các tài khoản hoặc giao dịch khác. Song song hóa thông qua các phân đoạn có thể cải thiện thông lượng của hệ thống, nhưng chỉ khi giao tiếp giữa các phân đoạn được xử lý hiệu quả.
Cardano sử dụng mô hình Extended-UTXO (hoặc đơn giản là UTXO/eUTXO) cho phép xử lý song song các giao dịch. Các giao dịch không phụ thuộc vào nhau trong quá trình xác thực. Thứ tự của chúng trong khối không quan trọng.
Mô hình UTXO cho phép xử lý giao dịch song song hơn trong và giữa các phân đoạn vì mỗi UTXO là độc lập và có thể được xác minh mà không cần tham chiếu đến các UTXO (hoặc tài khoản) khác.
Cardano có khả năng trở thành một blockchain phân mảnh, nhưng trước hết, nhóm cần triển khai tài chính nhanh (tài chính có thể chứng minh được). Với tính xác suất Xác thực, sẽ không có ý nghĩa gì khi xem xét sharding. Ít nhất là từ quan điểm của chúng tôi. Sau khi Ouroboros Leios được triển khai, có thể cân nhắc sử dụng sharding.
Hãy quay trở lại tính hữu hạn của các giao dịch và khối. Tính hữu hạn dựa trên các giao dịch bỏ phiếu (phê duyệt) của các node. Khi một giao dịch được chấp thuận bởi một tỷ lệ phần trăm node nhất định trong mạng, giao dịch đó sẽ không thể đảo ngược. Tính hữu hạn của các khối (và do đó là các giao dịch) trong mạng Cardano hiện đang chậm lại khi trọng lượng tăng lên với mỗi khối mới được thêm vào blockchain. Việc bỏ phiếu chỉ bằng 10% số node trong mạng Cardano (thêm một khối mới và do đó phê duyệt tất cả các khối trước đó) có thể mất tới 1 giờ.
Lời kết
Khả năng mở rộng của các blockchain phi tập trung (L1) là một chủ đề rất phức tạp. Nhóm và cộng đồng Cardano nên xem xét triển khai sharding, nhưng điều này không thể thực hiện được nếu không tăng tính chính xác của các giao dịch. Chúng ta phải đợi việc triển khai Ouroboros Leios và sau đó, có thể, sẽ hợp lý hơn khi bắt đầu nghĩ về sharding. Mô hình kế toán UTXO phù hợp với sharding vì nó cho phép song song hóa không chỉ trong các phân đoạn mà còn cho giao tiếp giữa các phân đoạn. Sharding là một thách thức lớn về công nghệ khi bạn xem xét việc duy trì tính phi tập trung, bảo mật, độ tin cậy và những thứ khác như tính công bằng của phần thưởng. Nếu các lớp thứ hai không được coi là nỗ lực hiện tại để tăng khả năng mở rộng, thì chúng ta sẽ không có lựa chọn nào khác ngoài việc tăng khả năng mở rộng của các lớp đầu tiên.
Cũng cần lưu ý thêm rằng, có rất nhiều cách thú vị khác để tăng khả năng mở rộng quy mô chuỗi ngoài giải pháp sharding.
Nguồn bài viết tại đây
Đọc thêm các bài viết liên quan tại thẻ Tags bên dưới