Cập nhật thiết kế Ouroboros Genesis
Một bước tiến sâu vào thiết kế và triển khai của Ouroboros Genesis, giao diện mới nhất của giao thức đồng thuận chịu trách nhiệm về độ tin cậy và bảo mật của Cardano
Ouroboros Genesis là một loạt các cải tiến cho giao thức Ouroboros đã mạnh mẽ, với các biện pháp đối phó để bảo vệ một node mạng khi nó còn mới hoặc quay trở lại sau khi vắng mặt.
Ouroboros là giao thức đồng thuận ở trung tâm của blockchain Cardano. Với sự phát triển liên tục và sự gia tăng của Cardano, Ouroboros đã tiến triển cùng với nó đường dẫn nâng cấp theo kế hoạch. Ouroboros Classic là giao thức chứng minh cổ phần an toàn đầu tiên có thể chứng minh. Ouroboros BFT là một giải pháp tạm thời cho phép Cập nhật Byron. Ouroboros Praos tiếp tục phát triển của Ouroboros Classic. Sự tiến hóa của Ouroboros sẽ tiến thêm một bước với Ouroboros Genesis, hiện đang được lên kế hoạch giao vào quý 3 năm 2024.
Bài viết này mô tả các cập nhật gần đây để phát triển và triển khai giao thức Ouroboros Genesis.
Câu chuyện Ouroboros cho đến nay
Một blockchain là một sổ cái phân tán được sao chép trên các máy được gọi là các node. Bởi vì không có cơ quan trung ương duy nhất, một cơ chế phải tồn tại để đảm bảo tính nhất quán và bất biến của tất cả các bản sao sổ cái. Cơ chế đó là giao thức đồng thuận. Giao thức cũng đặt các ưu đãi cho các node để xác thực các khối mới và thêm chúng vào chuỗi.
Ouroboros chia thời gian của Cardano thành các kỷ nguyên, được chia thành các khe slot. Slots đại diện cho khoảng thời gian ngắn khi các khối có thể được tạo.
Ouroboros Classic được chứng minh là an toàn khi hầu hết các node đều trực tuyến và có các bản sao nhất quán của sổ cái. Nghịch cảnh không thể dự đoán node nào sẽ là người dẫn đầu khe tiếp theo (node được thêm một khối vào chuỗi), khiến các cuộc tấn công trở nên rất tốn kém.
Ouroboros Praos đã tăng tính ngẫu nhiên trong việc lựa chọn thủ lĩnh vị trí tiếp theo và thêm các biện pháp đối phó cho các cuộc tấn công có thể khác.
Ouroboros Genesis sẽ giải quyết tình huống một node đầu tiên tham gia mạng (bắt đầu từ block genesis), hoặc tham gia lại sau khi vắng mặt kéo dài. Các node như vậy là trong một tình huống dễ bị tổn thương cho đến khi họ bắt kịp. Ví dụ: một tấn công tầm xa xảy ra khi một kẻ thù cố gắng viết lại lịch sử của chuỗi. Kẻ thù tích lũy một cổ phần lớn, để cho phép chúng bí mật tạo ra các khối nhanh hơn chuỗi chính. Sau đó, khi chuỗi lịch sử thay thế đã sẵn sàng, kẻ thù cố gắng chuyển chuỗi chính sang chuỗi của kẻ thù. Việc triển khai Genesis sẽ giảm thiểu các cuộc tấn công tầm xa, trừ khi node đồng bộ hóa trở thành lu mờ. Một cuộc tấn công nhật thực xảy ra khi kẻ thù cố gắng bao quanh node nạn nhân với các đồng nghiệp độc hại, che khuất mạng thực.
Những phát triển mới nhất
Genesis giới thiệu các khái niệm mới sau đây:
sổ cái ngang hàng
kiểm tra lightweigh (dưới dạng dự phòng / ghi đè tạm thời)
giới hạn về sự háo hức (LoE)
ngắt kết nối mật độ genesis (GDD)
giới hạn về sự kiên nhẫn (LoP)
Genesis State Machine.
Sổ cái ngang hàng
Khởi hành sâu nhất từ Genesis paper là một quyết định kiến trúc ban đầu để bảo tồn giới hạn của node Praos khi quay lại. Trong Praos, một node Cardano sẽ không quay lại quá 2.160 khối mà không cần can thiệp thủ công. Như đã nêu trong bài báo Genesis, một node dưới sự tấn công nhật thực chỉ có thể chọn các phần mở rộng của chuỗi đối nghịch trong nhiều năm và sau đó, khi cuối cùng nó kết nối với một node phục vụ chuỗi trung thực, đột ngột quay trở lại bất kỳ số lượng khối.
Bởi vì thực tế không cần thiết cho một node có khả năng quay lại không giới hạn, thay vào đó, các kiến trúc sư ưu tiên giới hạn quay lại, là chìa khóa cho nhiều giới hạn trong việc sử dụng tài nguyên. Thả nó cho Genesis sẽ loại bỏ một bất biến chủ yếu được viện dẫn bởi một phần đáng kể của công việc kỹ thuật trước đó. Hơn nữa, miễn là node đồng bộ hóa Cardano Genesis có quyền truy cập vào một đồng đẳng trung thực lành mạnh, thì nó, giống như node Praos, không yêu cầu quay lại hơn 2.160 khối.
Nhật thực có khả năng là mối đe dọa đáng kể hơn đối với node Genesis so với được thể hiện trong bài báo, điều này không trực tiếp giải quyết chúng. Các cuộc tấn công này gây nguy hiểm cho thuộc tính an toàn Genesis, vì nhật thực kéo dài hơn vài giây là đủ để node Genesis đồng bộ hóa có khả năng chọn 2.161 khối từ chuỗi đối nghịch, mặc dù trung thành thực hiện các so sánh mật độ Genesis. Nếu không có kiến thức về chuỗi trung thực, quy tắc Genesis sẽ chỉ cần chọn chuỗi dày đặc nhất hiện có thể truy cập. Trong một tình huống nhật thực, đó có thể không nhất thiết là chuỗi trung thực. Điều này trái ngược với bài báo Genesis, trong đó một node bị lu mờ và người dùng của nó chỉ bị trì hoãn, nhầm lẫn, thông tin sai, v.v. Điều đó mang đến những rủi ro liên quan, nhưng không ảnh hưởng đến các đặc tính an toàn hoặc sinh động,vì node cuối cùng có thể kết nối một đồng đẳng trung thực và do đó phục hồi.
Chỉ xem xét một mạng Praos, trong đó các node về mặt lý thuyết không bao giờ bị tụt lại phía sau, nhật thực vẫn có thể gây bất lợi. Sự khác biệt chính với Genesis là một node Praos (vốn bị bắt kịp) có thể chịu được nhật thực dài hơn nhiều trước khi có một xác suất đáng kể mà nó có thể cam kết với một chuỗi đối nghịch. Tuy nhiên, ngay cả khi không xem xét lỗ hổng thêm trong quá trình đồng bộ hóa, một node Praos vẫn cần một số biện pháp phòng vệ chống nhật thực.
Một phòng thủ là để giới thiệu khái niệm về sổ cái ngang hàng trong logic lựa chọn ngang hàng để ràng buộc đủ xác suất và thời gian của nhật thực. Trong khi đồng bộ hóa, một node Genesis điều chỉnh cấu hình ngang hàng của sổ cái để giảm đáng kể xác suất bị lu mờ. Và không có nhật thực, node Genesis sẽ không bao giờ chọn 2.161 khối từ chuỗi đối nghịch.
Các lựa chọn ngang hàng thay đổi hoạt động như thế này. Bằng cách kiểm tra phân phối cổ phần gần đây, node Genesis chọn các đồng nghiệp mẫu đã tham gia duy trì mạng, làm giảm đáng kể xác suất chọn các node độc hại.
Một dự phòng: chỉ định nhẹ
Bài viết Genesis xác định rằng chuỗi tốt nhất trong mạng Praos khỏe mạnh sẽ có nhiều khối hơn bất kỳ chuỗi nào khác trong một cửa sổ cố định của các khe ngay sau giao lộ của hai chuỗi. Ngoại lệ duy nhất là nếu mạng Praos không lành mạnh.
Việc ngừng hoạt động mạng nghiêm trọng sẽ biện minh cho việc thực hiện kế hoạch khắc phục thảm họa, một kế hoạch đòi hỏi sự hợp tác ngoài luồng giữa các bên liên quan để viết lại chuỗi trong khoảng thời gian ngừng hoạt động để sửa chữa chuỗi trung thực. Sau khi điều đó xảy ra, quy tắc Genesis sẽ lại ủng hộ chuỗi trung thực.
Tuy nhiên, một kế hoạch khắc phục thảm họa vốn đã khó khăn và tốn kém để thực hiện. Ít nhất là trong thời gian đó, một cơ chế kiểm tra đơn giản sẽ cho phép một tập hợp con hợp tác đủ lớn của các nhà khai thác nhóm cổ phần cảnh giác nhanh chóng và dễ dàng duy trì sự kiểm soát của mạng trong hoặc ngay sau khi ngừng sản xuất khối.
Logic đơn giản và phù hợp với phần còn lại của giao thức: tệp cấu hình chỉ định danh sách các cặp khối và hàm băm, mỗi khối khiến bất kỳ khối nào khác có cùng số khối được coi là không hợp lệ. Dữ liệu cấu hình điểm kiểm tra đó nên được sử dụng cẩn thận và chỉ được lấy từ các nguồn đáng tin cậy. Lý tưởng nhất là việc thực hiện cuối cùng của kế hoạch khôi phục sẽ cho phép (và thậm chí yêu cầu) bổ sung phản ứng vào danh sách điểm kiểm tra là tạm thời. Các trạm kiểm soát vĩnh viễn duy nhất sẽ là tập hợp đảm bảo các khóa genesis của thời đại Byron không còn phù hợp với chuỗi Cardano.
Giới hạn về sự háo hức
Vì các đồng nghiệp sổ cái có hiệu quả ngăn chặn nhật thực, một node đồng bộ hóa có thể cho rằng nó có ít nhất một đồng nghiệp khỏe mạnh phục vụ tất cả các chuỗi trung thực. Do đó, thuộc tính an toàn được đảm bảo trực tiếp bằng cách đơn giản cấm node Genesis đồng bộ hóa không bao giờ chọn hơn 2.160 khối của chuỗi đi qua giao điểm của chuỗi đồng nghiệp của sổ cái. Nó sẽ chỉ chọn các khối mà tất cả các đồng nghiệp sổ cái đồng ý, gần như chắc chắn bao gồm một đồng nghiệp trung thực. Hạn chế này được đặt tên giới hạn về sự háo hức (LoE), bởi vì node đồng bộ hóa không được háo hức cam kết với khối tốt nhất mà nó đã thấy cho đến nay. Một đồng nghiệp đối nghịch có thể phục vụ các khối thay thế của nó nhanh hơn nhiều so với bất kỳ đồng nghiệp trung thực nào có thể phục vụ các khối lịch sử.
Ngắt kết nối mật độ Genesis
Việc một kẻ thù lạm dụng LoE là không đáng kể để khiến nạn nhân ngừng đồng bộ hóa các khối, vi phạm thuộc tính sống động của node đồng bộ hóa. Có ba cách để làm như vậy:
• các đồng nghiệp tấn công tuyên bố nó không còn khối nữa
• đồng nghiệp tấn công phục vụ một chuỗi thay thế
• các đồng nghiệp tấn công tuyên bố nó có các khối thay thế nhưng cũng không phục vụ chúng.
Quy tắc cơ bản từ bài báo Genesis trực tiếp giảm nhẹ hai cái đầu tiên. Nếu hai đồng nghiệp đang phục vụ các chuỗi khác nhau và ít nhất một trong các chuỗi có không dưới 2.161 khối sau giao lộ, Genesis ủng hộ chuỗi có nhiều khối hơn trong cửa sổ cố định của các khe sau giao lộ hai chuỗi ’. (Một chuỗi trung thực sẽ luôn giành được sự so sánh đó. Hãy nhớ lại rằng một tiền tố được chia sẻ phản ánh một giao điểm chuỗi, ngay cả khi một trong các chuỗi chỉ đơn giản là phần mở rộng của một chuỗi khác.) Node Genesis sẽ ủng hộ chuỗi trung thực bằng cách ngắt kết nối với các đồng nghiệp khác. Hành động này được gọi là Ngắt kết nối mật độ Genesis (GDD). Sau khi đủ GDD, giao lộ của các đồng nghiệp còn lại sẽ ở xa hơn dọc theo chuỗi trung thực lịch sử.
Giới hạn về sự kiên nhẫn
Vectơ tấn công thứ ba là khó phân tích nhất. GDD bị vô hiệu hóa do đồng đẳng tuyên bố có nhiều khối hơn. Đó là, nó tuyên bố rằng số lượng khối của nó trong cửa sổ cố định đó sẽ tăng lên nếu được phép có thêm thời gian để phục vụ nhiều khối hơn. Một người ngang hàng trung thực luôn thực sự đưa ra yêu sách đó, cho đến khi node đồng bộ hóa thực sự có tất cả các khối trung thực. Nhưng một đồng nghiệp tấn công có thể đưa ra yêu sách đó trong đức tin xấu. Các giới hạn về sự kiên nhẫn (LoP) đảm bảo rằng một người ngang hàng tuyên bố có nhiều khối hơn phải thực sự gửi chúng và làm điều đó kịp thời. Biến chứng chính là ngay cả những người ngang hàng trung thực cũng không thể duy trì khả năng đáp ứng hoàn hảo trong nhiều giờ liền, đôi khi họ sẽ có những đợt trễ, v.v. Vì lý do này, LoP được triển khai như một xô bị rò rỉ đối với mỗi đồng đẳng, trong đó rò rỉ là tốc độ của các khối xử lý trong khi đồng đẳng đã yêu cầu các khối và đang phục vụ chúng chậm hơn một số tốc độ tối thiểu hào phóng, nhưng công suất xô của mỗi người trung thực sẽ đủ cao để hấp thụ các đợt trễ thường được mong đợi từ các đồng nghiệp sổ cái khỏe mạnh.
Genesis State Machine
Node Genesis sẽ vô hiệu hóa LoE, GDD và LoP sau khi kết luận nó bị bắt kịp, vì hai lý do quan trọng. Đầu tiên, một node bắt kịp trong mạng Praos về cơ bản phải đúc khối tốt nhất có thể trong một khe mà nó được bầu. Ví dụ: nếu một node như vậy vẫn đang sử dụng các quy tắc Genesis, một đối thủ mạnh có khả năng lạm dụng LoE để tạm thời cấm nạn nhân chọn khối mà nó vừa đúc, do đó ngăn không cho nó lan truyền vào mạng. Thật khó để ràng buộc bụi phóng xạ trên toàn hệ thống của một vectơ như vậy, và do đó, node Genesis sẽ hoạt động chính xác như một node Praos bất cứ khi nào nó không đồng bộ hóa.
Thứ hai, một node bắt kịp không cần nhiều đồng nghiệp như một node đồng bộ hóa, vì nó không dễ bị lu mờ. Do đó, tải thêm đáng kể trên mạng do tất cả các node duy trì số lượng ngang hàng của sổ cái là không cần thiết và không mong muốn. Các Genesis State Machine quản lý các chuyển đổi của node giữa việc xem xét bản thân có bị bắt hay không:
• Khi bị bắt, node sẽ vô hiệu hóa LoE, GDD và LoP. • Một node kết luận nó bị bắt nếu các điều kiện này được đáp ứng:
nó có đủ các sổ cái ngang hàng
tất cả các đồng nghiệp tuyên bố không có khối bổ sung (mà LoP được điều chỉnh tốt đảm bảo phải sớm xảy ra)
node đã chọn chuỗi tốt nhất trong số các chuỗi ’.
Điều này mạnh mẽ hơn là tin tưởng vào độ tuổi của lựa chọn địa phương, v.v., vì một đồng nghiệp tấn công có thể kích hoạt các ngưỡng như vậy, khiến nạn nhân bị hạ thấp phòng thủ sớm.
• Một node rơi trở lại để đồng bộ hóa nếu đầu chuỗi của nó quá cũ (ví dụ: 20 phút hoặc lâu hơn). Đáng chú ý, điều này sẽ xảy ra trong suốt vòng đời của quy trình hệ điều hành của node nếu máy ngủ đủ lâu (ví dụ: người dùng đóng nắp máy tính xách tay của họ một lúc).
Các bước tiếp theo
Thiết kế trên đã ổn định trong năm qua hoặc lâu hơn. Mặc dù nó vẫn phát triển nhẹ, nhưng không có thay đổi lớn. IOG đã hợp tác với Tweag trong nhiều tháng qua để thực hiện và kiểm tra nó.
Việc triển khai có khả năng Genesis đầu tiên được lên kế hoạch phát hành vào quý 3 năm 2024. Ở giai đoạn này, ẩn số lớn nhất còn lại là mức độ tối ưu hóa cần thiết để bù cho số lượng ngang hàng tăng lên cần thiết để ngăn chặn nhật thực.
Cho đến lúc đó, thiết kế ngang hàng bootstrap sắp xảy ra đóng vai trò là sự gia tăng đối với Genesis. Máy trạng thái bootstrap là một biến thể đơn giản hơn của máy trạng thái Genesis. Trong khi đồng bộ hóa, một node chỉ giao tiếp với các đồng nghiệp bootstrap, mỗi một node được tin cậy và do đó LoE, GDD và LoP là không cần thiết. Ngược lại, Genesis sẽ cho phép một node đồng bộ hóa bao gồm các đồng nghiệp không đáng tin cậy một cách an toàn, miễn là nó không bị lu mờ (nghĩa là, miễn là một người ngang hàng là trung thực), sẽ cho phép nghỉ hưu các đồng nghiệp bootstrap, từ đó phân cấp cơ sở hạ tầng để đồng bộ hóa các node và thực hiện lời hứa của Ouroboros Genesis.
Đọc thêm bài gốc TẠI ĐÂY