Skip to main content

Ouroboros - Cơ chế đồng thuận chu kỳ vĩnh cửu của Cardano

· 13 min read

Giao thức đồng thuận là hệ thống các tham số, tạo ra các quy tắc sắp xếp hành vi của những người tham gia mạng, để tạo ra các bản ghi phân tán.

Các blockchains công khai không bị kiểm soát bởi một Nhóm tập trung quyền lực. Và vì lý do này, đó là giao thức đồng thuận cho phép một nguồn sự thật duy nhất, một sổ cái duy nhất, được đồng thuận. Đây là lý do tại sao các blockchains được gọi là "không cần phải tin cậy". Thay vì yêu cầu những người tham gia tin tưởng lẫn nhau, sự tin tưởng được tích hợp vào tron chính giao thức.

Ouroboros là tên của thuật toán đồng thuận Proof of Stake của Cardano, nó là Hệ điều hành của Cardano.

Tên của nó bắt nguồn từ thần thoại Ai Cập, và quay trở lại với các chữ tượng hình được tìm thấy trong một căn phòng của kim tự tháp Unas, vào năm 2300 trước Công nguyên, và là một biểu tượng cho thấy một con rắn tự khắc đuôi của mình và đó là biểu tượng cho chu kỳ vĩnh cửu.

Ouroboros

Đây là cách giao thức được phát triển để làm nền tảng cho các hệ thống tự nhân giống, phát triển theo chu kỳ, thay thế các hệ thống hiện có.

Khối (block) là đơn vị được sử dụng để chuyển sang trạng thái mới trong sổ cái. Nếu phần lớn mạng coi block mới được đề xuất là hợp lệ, block mới sẽ được lưu trữ trong blockchain và sẽ trở thành điểm khởi đầu cho quá trình chuyển đổi trạng thái tiếp theo.

Ouroboros là giao thức đồng thuận blockchain đầu tiên được phát triển thông qua nghiên cứu được đánh giá ngang hàng, do Giáo sư Aggelos Kiayias thuộc Đại học Edinburgh đứng đầu.

Ouroboros là một giao thức Proof of Stake (PoS), khác với Proof of Work (PoW), giống như giao thức được sử dụng bởi Bitcoin.

Thay vì dựa vào các thợ đào để giải các phương trình phức tạp về mặt tính toán để tạo ra các block mới và thưởng cho người đầu tiên làm như vậy. Giao thức PoS chọn các node xác thực (trong trường hợp của Cardano, các cổ phần) để tạo các block mới, dựa trên tính ngẫu nhiên có trọng số cao chủ yếu dựa vào số lượng ADA được ủy thác vào pool. Ngoài ra còn có các thông số khác, nhưng chúng có tác động ít hơn.

Ouroboros chia thời gian Cardano thành các slot (mỗi giây), block (20 giây một lần), epoch (5 ngày một lần). Slot là không gian đề cử để ký một block. Slot Leader (node được chọn bởi giao thức) chịu trách nhiệm thêm một block vào chuỗi. Chỉ có thể có một Slot Leader cho mỗi slot. 

Mỗi epoch bao gồm 432.000 slot, (60 giây x 60 phút x 24 giờ x 5 ngày). Trung bình, thiết kế giao thức mong đợi một block được xác thực sau mỗi 20 giây, tổng cộng 21.600 block mỗi epoch (3 block mỗi phút x 60 phút x 24 giờ x 5 ngày). Có thể xảy ra trường hợp, do các vấn đề mạng khác nhau (phiên bản cũ của một số node hoặc một số node bị ngắt kết nối), dẫn đến số lượng block có thể ít hơn so với thiết kế.

Vì vậy, bạn có thể thấy rằng thiết kế dự tính có 20 slot trên mỗi block. Vì có nhiều slot được tạo trên mỗi block để đảm bảo tính liên tục trong quá trình sản xuất block. Nếu một node được chỉ định chưa sẵn sàng hoặc chậm trễ, thì một node khác sẽ thay thế tiếp theo ngay sau. Vì vậy, có sự cạnh tranh giữa các node và nó được gọi là 'slot battle' giữa các node xác nhận. Chính vì vậy, sẽ có thể có chuỗi phân nhánh (fork) một cách tự nhiên. Những lần phân nhánh nhỏ đó được giải quyết nhanh chóng chỉ sau dài một vài block. Pool “thua” trong trận chiến sẽ không nhận được phần thưởng.

Tính năng chính của Ouroboros là sự minh bạch trong việc lựa chọn các Slot Leader. Kế hoạch đóng block cho các pool được biết trước ở đầu mỗi epoch và luôn chỉ có một Slot Leader trên mỗi slot, để tạo ra một block. Trong bài viết sau đây, tôi sẽ giải thích chức năng của các cổ phần và cách thức hoạt động của cơ chế lựa chọn Slot Leader.

Trong giao thức Ouroboros, mỗi node của mạng lưu trữ một bản sao của mempool, nơi các giao dịch được xếp hàng đợi để được xác thực sẽ được thêm vào và nếu các giao dịch này phù hợp với các giao dịch hiện có và với blockchain, node xác minh chuỗi là hợp lệ.

Với PoS, việc lựa chọn người tạo block (slot leader được chỉ định) nằm trong hệ điều hành, thuật toán của chúng. Điều này đặt ra một số vấn đề cho mục đích, đó là tính bất biến của giao dịch, vì quá trình lựa chọn người tạo block có thể bị tấn công, nhằm đạt được sự đồng thuận có lợi cho kẻ xâm lược, có thể nhiều lần được chọn lại làm người tạo block. Nếu họ thành thạo việc tạo block, họ có thể kiểm duyệt các giao dịch.

Có hai thuộc tính để duy trì tính toàn vẹn của bất kỳ loại sổ cái phân tán nào:

  • Độ trễ: là thời gian cần thiết để một giao dịch xuất hiện trong một block trên blockchain
  • Tính Hoàn thành: là thời gian cần thiết để một giao dịch trở thành không thể sửa đổi (bất biến)

Độ trễ trên Cardano là tuyệt vời. Các block và giao dịch lan truyền nhanh chóng qua mạng, thường đạt tới 95% mạng trong vòng 5 giây.

Nhiều người coi giao dịch là hoàn thành (không thể thay đổi) ngay khi họ nhìn thấy nó trên chuỗi, nhưng thực tế không phải vậy. Tính bất biến chỉ được 'đảm bảo 100%' sau một số lượng k block, trong đó k là tham số trong giao thức. Hiện tại, k = 2.160 block. Ouroboros Praos, giao thức hiện tại của Cardano, đảm bảo rằng không thể có nhiều nhánh fork sau hơn 'k' block.

Điều đó không có nghĩa là bạn phải đợi 2.160 block trước khi khẳng định giao dịch là bất biết.

Một giao dịch bất biến có ý nghĩa gì? Điều đó có nghĩa là bất kỳ đợt fork nào (nếu có có thể xảy ra) thì sẽ phải bao gồm có giao dịch đó. Và giao dịch một khi đã "bất biến" thì sẽ tồn tại mãi mãi trên blockchain bất kể có thêm các lần fork nào trong tương lai hay không. 

Forks (hiện tượng phân nhánh) xảy ra khi hai (hoặc nhiều) phiên bản của chuỗi blockchain cùng tồn tại song song tại một thời điểm. Cuối cùng, sẽ chỉ có một blockchain chiếm ưu thế và dành "chiến thắng". Các giao dịch chưa "bất biến" trên chuỗi fork sẽ bị "mất" và không tồn tại trên chuối chính cuối cùng.

Forks có phổ biến không? Vâng, trong Ouroboros Praos, chuỗi phân nhánh tự nhiên có thể xảy ra gần như mọi lúc. Và chúng được gọi là '‘slot battles' giữa các node trình xác thực, như tôi đã giải thích trước đây.

Vấn đề là những kẻ tấn công cũng có thể cố gắng tạo các nhánh nhân tạo để mạng sử dụng phiên bản giả mạo. Để thành công, họ cần rất nhiều staking và rất nhiều sức mạnh (tức là hash) để mô phỏng càng nhiều fork càng tốt và hy vọng có được một nhánh thuận lợi cho họ, để có một cơ hội nhỏ “phá vỡ” Ouroboros.

Nhà phát triển Matthias Benkort (người dùng Twitter @KtorZ) trong một Tweet đã ước tính rằng 5 block đã đủ để có được kết quả cuối cùng có thể chấp nhận được, nhưng phải rất thận trọng, khoảng 70 block là một thước đo tốt để đạt được xác suất bất biến đủ cao cho các giao dịch .

Giao thức đồng thuận Cardano tiếp tục được phát triển theo thời gian. Tôi sẽ trình bày một bản tóm tắt về từng cách triển khai.


Picture


Ouroboros: Các phiên bản của một giao thức đang phát triển

Ba phiên bản đầu tiên đã được thực hiện và những phiên bản sau chưa có ngày xác định cụ thể, nhưng chúng đang trong quá trình thực hiện. 

Ouroboros Classic

Đây là lần triển khai đầu tiên của giao thức Ouroboros, được xuất bản vào năm 2017, giúp phân biệt Ouroboros với các blockchains PoS khác, ở khả năng tạo ra sự ngẫu nhiên "không thiên vị" trong thuật toán lựa chọn slot leader, để tránh giả mạo các block. Tính ngẫu nhiên ngăn cản việc hình thành các mẫu và là một phần cơ bản để duy trì tính bảo mật của giao thức, vì hành vi không thể đoán trước không thể bị khai thác. Mặc dù Ouroboros đảm bảo tính minh bạch, nhưng nó tránh được sự ép buộc. Ouroboros là giao thức blockchain đầu tiên được phát triển với loại phân tích bảo mật nghiêm ngặt này.

Ouroboros BFT

Ouroboros Byzantine Fault Tolerance (BFT) đã được Cardano sử dụng trong quá trình phát triển của Byron, đó là quá trình chuyển đổi sang cơ sở mã mới. Ouroboros BFT đã giúp chuẩn bị mạng liên kết Cardano cho việc ra mắt Shelley (nhóm stake pool) và cùng với đó là sự Phi tập trung của nó.

Thay vì yêu cầu các node luôn trực tuyến, Ouroboros BFT giả định một mạng liên kết các máy chủ và giao tiếp không đồng bộ giữa các máy chủ.

Ouroboros Praos

Ouroboros Praos là phiên bản hiện tại, đã cung cấp các cải tiến đáng kể về khả năng mở rộng và bảo mật. Giống như với Ouroboros Classic, Ouroboros Praos xử lý các block giao dịch bằng cách chia chuỗi thành các slot, được thêm vào trong các epoch. Tuy nhiên, nó được phân tích cú pháp trong môi trường bán đồng bộ và an toàn trước những kẻ tấn công thích ứng vì nó cho rằng kẻ thù có thể trì hoãn các thông điệp trung thực từ người tham gia để biết thêm hơn một không gian và kẻ thù có thể gửi tin nhắn tùy ý cho bất kỳ người tham gia nào vào bất kỳ lúc nào.

Praos đảm bảo rằng một đối thủ mạnh không thể dự đoán Slot Leader tiếp theo và khởi động một cuộc tấn công tập trung (chẳng hạn như một cuộc tấn công DDoS) để phá hoại giao thức.

Ouroboros Genesis

Nó sẽ nâng cao hơn nữa Ouroboros Praos, bằng cách cho phép những người tham gia bắt đầu từ một block được coi là nguồn gốc, mà không cần các điểm kiểm tra đáng tin cậy hoặc các giả định về tính khả dụng trong quá khứ.

Nó cũng sẽ cung cấp bằng chứng về khả năng kết hợp phổ quát của giao thức, có nghĩa là giao thức có thể được tạo với các giao thức khác mà không làm mất các thuộc tính bảo mật của nó. Điều này đóng góp đáng kể vào tính bảo mật và tính bền vững của nó cũng như của các mạng sử dụng nó.

Trong một Tweet vào ngày 3 tháng 10 năm 2022, trả lời một câu hỏi, Charles Hoskinson nói rằng việc triển khai Ouroboros Genesis sẽ vào năm 2023.

Ouroboros Crypsinous

Nó sẽ trang bị cho Genesis các thuộc tính bảo vệ quyền riêng tư, đạt được sự bảo mật chống lại các cuộc tấn công thích ứng bằng cách giới thiệu một kỹ thuật mới dựa trên SNARK và mã hóa khóa riêng an toàn.

Ouroboros Cronos

Nó sẽ đạt được hai mục tiêu. Đầu tiên, nó sẽ đồng bộ hóa đồng hồ một cách an toàn thông qua một cơ chế mới và do đó trở nên độc lập với các dịch vụ thời gian bên ngoài. Thứ hai, nó sẽ cung cấp nguồn thời gian cho các giao thức khác, với bảo mật mật mã.

Chronos sẽ làm cho sổ cái có khả năng chống lại các cuộc tấn công nhắm mục tiêu thông tin thời gian.

Ouroboros Leios

Ouroboros Leios sẽ tăng đáng kể khả năng mở rộng và duy trì mức độ Phi tập trung hiện tại, phân chia các nhiệm vụ liên quan đến xác thực và sản xuất block thành hai nhóm node. Tuy nhiên, mỗi node có thể thực hiện cả hai nhiệm vụ.

Ngoài các nhà sản xuất block, sẽ có một nhóm thứ hai được gọi là Người xác nhận đầu vào (Input Endosers).

Giữa hai block, nhiều Input Endosers sẽ được chọn ngẫu nhiên, với nhiệm vụ xác nhận đầu vào được đưa vào block, đây là lớp bảo mật thứ hai, sẽ xử lý các giao dịch và tập lệnh trước khi Slot Leader (node sản xuất khối) xác thực chúng trong một block, miễn là nó xác minh bằng mật mã quyền chuẩn bị đầu vào.

Mặc dù vẫn chưa có Tài liệu nghiên cứu về Leios, nhưng chúng ta có thể xem giải thích rõ ràng trong video này:

Video giải thích về Ouroboros Leios

Ouroboros Omega 

Đây là dự án tập hợp tất cả các nghiên cứu được thực hiện trên Ouroboros trong những năm gần đây và hội tụ trong một giao thức duy nhất, có khả năng mở rộng và hiệu quả cao. 

Kết hợp các tính năng tốt nhất của tất cả các phiên bản Ouroboros được phát triển cho đến nay, chẳng hạn như không phụ thuộc vào đồng hồ bên ngoài, tự phục hồi để nó có thể dần dần phục hồi sau các cuộc tấn công 51%, với khả năng khởi động từ một block nhất định được coi là Genesis, bán đồng bộ hóa, thích ứng bảo mật, tính hoàn thiện tức thì, trong số các tính năng khác.

Charles Hoskinson đề cập đến Omega trong một Tweet vào ngày 4 tháng 2 năm 2021: “ Đây là một đoạn giới thiệu. Omega là nơi hội tụ của tất cả những ý tưởng mà chúng tôi đã có trong sáu năm qua.”.

Và sau đó, vào ngày 18 tháng 4 năm 2021 trong một Tweet khác :“ Gần đây tôi đã phê duyệt thêm 1,5 triệu USD trong Ngân sách năm 2021 của IOG để đẩy nhanh quá trình nghiên cứu và phân phối Ouroboros Omega. ” 

Video giải thích về Ouroboros Omega

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


Picture