Skip to main content

Tìm hiểu Ouroboros Peras

Ngày 27 tháng 08 năm 2024

Ouroboros Peras được xây dựng dựa trên Ouroboros Praos, nhắm đến thời gian giải quyết đồng thuận chậm đặc trưng của cơ chế đồng thuận kiểu Nakamoto. Trong mô hình đồng thuận này, hardfork Blockchain là phổ biến và người dùng chỉ có thể chắc chắn rằng giao dịch của họ là hoàn tất—được ghi lại vĩnh viễn trên Blockchain—sau khi một số lượng đáng kể các khối bổ sung đã được thêm vào. Ouroboros Peras đặt mục tiêu giảm thời gian giải quyết này xuống chỉ còn 2 phút.

Đồng thuận Nakamoto có thời gian giải quyết chậm

Cơ chế đồng thuận của Nakamoto có tính hoàn tất theo xác suất. Điều này có nghĩa là tính hoàn tất của giao dịch không được đảm bảo khi nó được thêm vào khối mới lần đầu tiên. Thay vào đó, khả năng giao dịch hoàn thành sẽ tăng lên khi có nhiều khối hơn được thêm vào phía trên khối chứa giao dịch.

Người dùng phải đợi mạng thêm một số khối lên trên khối với giao dịch của họ. Giao dịch chỉ trở nên không thể đảo ngược sau khi các khối bổ sung này được thêm vào. Mỗi khối mới được thêm vào phía trên khối giao dịch của người dùng biểu thị cơ chế đồng thuận với trạng thái của sổ cái.

Người dùng coi các khối được thêm sau khối giao dịch của họ là số lượng xác nhận. Ví dụ: một giao dịch có trong khối N+2 sẽ có 6 xác nhận vào thời điểm khối N+7 được thêm vào.

Trong cơ chế đồng thuận của Nakamoto, các node thể hiện cơ chế đồng thuận của họ với trạng thái của sổ cái bằng cách thêm một khối khác vào chuỗi ưa thích của họ. Nhà sản xuất khối có thể thêm khối mới sau khối hợp lệ hoàn tất (ở đầu Blockchain) hoặc sau một trong các khối trước đó. Trong trường hợp fork Blockchain, một node có thể chọn nhánh mà nó thích. Có thể có một quy tắc xác định node nào trong hai tùy chọn nên chọn.

Hãy tưởng tượng rằng giao dịch của bạn nằm trong khối màu xanh lá cây và bạn muốn theo dõi số lượng xác nhận.

Do tính chất phân tán, phi tập trung và xác suất của cơ chế đồng thuận Nakamoto, hoàn toàn có thể có hai hoặc nhiều chuỗi cùng tồn tại đồng thời trên mạng.

Tùy chọn A là lựa chọn tốt nhất vì các khối được thêm vào một cách tuần tự, đảm bảo không có hardfork.

Nếu chúng ta tiếp tục với hai tùy chọn B và C phù hợp từ hình ảnh trước, các khối tiếp theo (KHỐI TIẾP THEO màu xanh lam) sẽ xác định xem KHỐI MỚI (trước đây là màu xanh lá cây) sẽ được đưa vĩnh viễn vào Blockchain hay mồ côi (bị loại bỏ).

Nếu khối màu xanh lá cây là khối mồ côi, giao dịch của bạn có thể không được đưa vào Blockchain.

Trong thực tế, nhiều hơn một khối quyết định chuỗi chiến thắng.

Trong cả hai tùy chọn B và C, có thể giao dịch của bạn có thể không được đưa vào Blockchain. Tuy nhiên, nếu không có hành vi gian lận có chủ ý thì rất có thể giao dịch của bạn hoàn tất sẽ là một phần của một trong các khối trong chuỗi chiến thắng.

Theo cơ chế đồng thuận của Nakamoto, hai (hoặc nhiều) biến thể trạng thái sổ cái cạnh tranh được coi là trạng thái hợp lệ của sổ cái. hoàn tất, các khối mới được thêm vào sẽ quyết định biến thể chiến thắng. Toàn bộ lịch sử của Blockchain có thể trông như thế này.

Hardfork trên Blockchain có thể xảy ra vì một số lý do:

  • Nhiều nhà sản xuất khối có thể tạo khối mới gần như cùng một lúc.
  • Các khối cần có thời gian để truyền đến tất cả các node mạng, dẫn đến các node khác nhau có các góc nhìn khác nhau về chuỗi tốt nhất.
  • Các node có thể tham gia hoặc rời khỏi mạng.
  • node không bắt buộc phải đồng ý với khối gần đây nhất (hoặc Blockchain) và thay vào đó có thể nối khối của nó sau một trong các khối trước đó.

Các hardfork ngắn, thường chỉ dài vài khối, xảy ra thường xuyên và thường không có vấn đề gì. Các khối được khôi phục thường gần giống nhau, chứa cùng các giao dịch, mặc dù chúng có thể được phân bổ khác nhau giữa các khối hoặc có những khác biệt nhỏ.

Tuy nhiên, những hardfork này có thể gây hại. Ví dụ: nếu người dùng cuối (người nhận tiền) đưa ra quyết định—chẳng hạn như chấp nhận thanh toán và bán hàng cho người dùng khác (người gửi giao dịch)—dựa trên giao dịch sau đó được khôi phục và không bao giờ xuất hiện lại vì giao dịch đó không hợp lệ (ví dụ: do chi tiêu gấp đôi một số UTXO), điều đó sẽ mở ra khả năng gian lận.

Giao dịch được bao gồm trong khối N+2, khối này cạnh tranh với phiên bản chuỗi thay thế. Mặc dù đã nhận được 2 xác nhận nhưng giao dịch hoàn thành đã không được đưa vào Blockchain vì nó không được đưa vào bất kỳ khối tiếp theo nào của chuỗi chiến thắng.

Kỳ vọng chung của người dùng là mọi giao dịch hợp lệ hoàn tất sẽ được đưa vào Blockchain, bất kể hardfork. Trong trường hợp này, giao dịch đã được thêm vào khối N+3, khối này vẫn là một phần vĩnh viễn của Blockchain. Không có gian lận trong trường hợp này.

Từ góc độ của người dùng (cho dù họ là người gửi hay người nhận giao dịch), câu hỏi quan trọng là: Khi nào họ có thể tin tưởng rằng giao dịch của họ sẽ không bao giờ bị khôi phục?

Thời gian giải quyết có thể được định nghĩa là khoảng thời gian sau đó một khối (hoặc giao dịch) được thêm vào chuỗi tốt nhất của node có xác suất bị khôi phục là không đáng kể do phân nhánh.

Điều này dẫn đến một câu hỏi cụ thể hơn: Cần tối thiểu bao nhiêu xác nhận?

Vấn đề này có thể được xem xét từ cả góc độ thực tiễn và lý thuyết.

Về mặt lý thuyết, người dùng có thể chấp nhận một giao dịch khi nó đi vào mem-pool, tin rằng hoàn tất nó sẽ được đưa vào Blockchain. Điều này phổ biến trong hệ sinh thái Bitcoin, nơi thời gian tạo khối là 10 phút. Nếu người dùng gửi giao dịch ngay sau khi khối mới được tạo, họ thường đợi trung bình 10 phút để khối tiếp theo được khai thác. Trong thực tế, thời gian chờ đợi này có thể kéo dài đến một giờ, điều này là không thực tế. Ngoài ra, nếu mạng bị tắc nghẽn và người dùng đặt mức phí thấp, giao dịch có thể vẫn nằm trong mem-pool trong một thời gian dài. Trong trường hợp Bitcoin, nên đợi ít nhất 3 lần xác nhận (trung bình 30 phút).

Mặt khác, Cardano có thời gian tạo khối là 20 giây. Nếu mạng không bị tắc nghẽn, rất có thể giao dịch sẽ được đưa vào khối tiếp theo. Với số tiền nhỏ hơn, người dùng thường đợi vài khối, khoảng 6 (tương đương khoảng 2 phút) hoặc 10 (khoảng 3,5 phút) sẽ được coi là mức xác suất có xác nhận cao. Đối với số tiền cao hơn, nên xác nhận nhiều hơn để đảm bảo tính hoàn tất của giao dịch. Mặc dù cách tiếp cận này có hiệu quả trong thực tế nhưng nó có phần mơ hồ nếu xét trên quan điểm lý thuyết chặt chẽ.

Từ góc độ lý thuyết, điều cần thiết là phải xem xét các node đối nghịch và stake của chúng.

Ouroboros Praos đã được chứng minh là an toàn với mức stake kẻ tấn cônng lên tới 50%. Miễn là kẻ tấn cônng không kiểm soát phần lớn stake, điều đó đảm bảo rằng tất cả các node trung thực hoàn tất sẽ đồng ý về cùng một chuỗi trung thực. Tuy nhiên, sự mạnh mẽ này đi kèm với chi phí về thời gian mà các node phải chờ để xem xét một khối (và do đó là chuỗi) đã được giải quyết.

Trong Cardano, một node coi một khối được xác định chắc chắn hoặc không thể thay đổi khi khối đó là (k) phía sau đầu hiện tại của chuỗi tốt nhất của nó, trong đó (k = 2160).

Với tốc độ đến giữa các khối trung bình là 20 giây, điều này có nghĩa là một khối được coi là đã giải quyết sau khoảng 12 giờ.

Sau 2160 lần xác nhận, chắc chắn rằng sự quay trở lại đáng kể do phiên bản riêng tư của Blockchain gây ra sẽ không xảy ra. Điều này giải quyết một trong những mối đe dọa về mặt lý thuyết: kẻ tấn công xây dựng một Blockchain riêng tư và chờ đợi thời điểm thích hợp để xuất bản nó. Phiên bản được xuất bản có thể khiến một số lượng lớn các khối bị loại bỏ đồng thời, làm gián đoạn những gì thường được coi là chuỗi hoàn tất.

Mặc dù cuộc tấn công này khó xảy ra nhưng về mặt lý thuyết nó vẫn có thể xảy ra. Do đó, tính hoàn tất của các giao dịch theo Đồng thuận Nakamoto diễn ra chậm. Mặc dù trên thực tế, người dùng thường chỉ đợi một vài xác nhận, nhưng về mặt lý thuyết, người dùng Cardano nên đợi 12 giờ (2160 xác nhận) để chắc chắn tuyệt đối.

Đối với Bitcoin, việc xây dựng một phiên bản riêng của Blockchain rất tốn kém, chỉ dẫn đến những nhược điểm nhỏ. Mặc dù về mặt lý thuyết, một cuộc tấn công là khả thi nhưng khó có thể thực hiện được trên thực tế.

Ouroboros Peras

Ouroboros Praos sẽ cho phép số lượng node cần thiết (và số cổ phần tương ứng của chúng) đồng ý về trạng thái của sổ cái bằng cách bỏ phiếu. Đây là một biến thể nhanh hơn việc thêm các khối tiếp theo. Điều này sẽ giảm đáng kể thời gian cần thiết cho "sự hoàn thiện" của giao dịch và giảm khả năng khôi phục lớn chỉ sau một vài khối được thêm vào.

Quá trình bỏ phiếu hiện tại bao gồm việc phê duyệt khối N+1, diễn ra thông qua việc bổ sung các khối tiếp theo. Bảy node (và trọng số stake tương ứng của chúng) có thể phê duyệt khối N+1 trong bảy khối được thêm tiếp theo. Phương thức bỏ phiếu này khá chậm. Tổng số stake của tất cả các node đã bày tỏ cơ chế đồng thuận là thấp. Các vòng tròn màu vàng có số SPO tượng trưng cho việc bỏ phiếu.

Các vòng tròn màu vàng có số SPO tượng trưng cho việc bỏ phiếu.

Các node được chọn ngẫu nhiên sẽ bỏ phiếu về trạng thái của sổ cái trong một khoảng thời gian nhất định, do đó làm tăng trọng lượng của các khối mà phần lớn Nhà điều hành "stake pool" (SPO) đồng ý. Phương pháp này được gọi là bỏ phiếu dựa trên stake.

Nhiều node (và cổ phần của chúng) có thể bỏ phiếu để phê duyệt một khối, bao gồm các khối trước đó, nhanh hơn nhiều. Có thể xảy ra trường hợp các node có thể đồng ý chặn N+1 trước khi khối N+2 được tạo ra.

Quá trình lựa chọn chuỗi mà các node sử dụng để quyết định biến thể chuỗi ưa thích sẽ dựa trên trọng lượng của chuỗi thay vì chiều dài của chuỗi. Điều này có nghĩa là các node sẽ tính đến phiếu bầu (và chứng chỉ) thay vì số lượng khối. Chuỗi nặng nhất sẽ thắng chuỗi dài hơn.

Hãy xem xét tình huống trong hình. Một nhà sản xuất khối khác gặp phải một hardfork, với khối N+1A và khối N+1B, tiếp theo là khối N+2B. Mặc dù tùy chọn B đại diện cho chuỗi dài hơn, nhà sản xuất khối vẫn chọn chuỗi nặng nhất và thêm khối mới sau khối N+1A.

Thời gian được chia thành các vòng có độ dài cố định, mỗi vòng kéo dài vài chục ô. Các vòng này dài hơn thời gian tạo khối, tức là 20 slot (với kỳ vọng tạo ra một khối khoảng 20 slot).

Khi bắt đầu mỗi vòng, một ủy ban gồm các SPO được chọn ngẫu nhiên sẽ bỏ phiếu cho khối ở độ sâu cố định tính từ đầu chuỗi tốt nhất hiện tại của họ. Một số lượng slot được chỉ định phải vượt qua sau khi một khối được tạo ra trước khi nó có thể trở thành ứng cử viên để bỏ phiếu. Điều này đảm bảo rằng việc bỏ phiếu trên một khối không bắt đầu cho đến khi chắc chắn rằng không có khối thay thế nào được tạo ra chỉ một vài slot trước khối ứng cử viên tiềm năng.

Trọng số của mỗi phiếu bầu tỷ lệ thuận với stake của SPO.

Những phiếu bầu này được phát đến tất cả các node trên mạng. Nếu một node quan sát số phiếu bầu cho cùng một khối, nó có thể cấp chứng làm tăng trọng lượng của khối. Chứng chỉ cũng được phổ biến trên mạng theo yêu cầu tới các node không có phiếu bầu tương đương.

Nếu nhà sản xuất khối có sẵn chứng chỉ mới, nó sẽ chèn chứng chỉ đó vào khối, từ đó truyền bá chứng chỉ đó trên toàn mạng. Do đó, tất cả các chứng chỉ đều được lưu trữ on-chain.

Trong hình, các khối màu vàng đại diện cho những khối đã được phê duyệt bởi đủ số lượng cổ phần (node), dẫn đến việc tạo ra chứng chỉ. Các khối màu xanh biểu thị những khối chứa chứng chỉ đề cập đến khối đã được phê duyệt trước đó.

Nếu một node không nhận được số đại biểu cho một vòng, từ phiếu bầu hoặc chứng chỉ, node đó sẽ chuyển sang khoảng thời gian hồi chiêu trong đó mọi phiếu bầu hoặc chứng chỉ đều bị bỏ qua. Sau một số vòng cố định, node sẽ thoát khỏi thời gian hồi chiêu và tiếp tục bỏ phiếu.

Ouroboros Praos đảm bảo rằng khi giao dịch xuất hiện trong một khối, người dùng chỉ cần đợi 2 phút (6 khối) để chắc chắn rằng giao dịch đó sẽ được lưu trữ vĩnh viễn trong Blockchain và khối chứa giao dịch sẽ không bị khôi phục.

Một cuộc tấn công chuỗi dài, bao gồm việc tạo ra một chuỗi riêng tư và chờ đợi thời điểm tối ưu để xuất bản, chắc chắn sẽ thất bại. Ngay cả khi chuỗi riêng vượt qua mainnet về chiều dài, nó vẫn sẽ thiếu sức nặng của chuỗi chứa chứng chỉ.

Ouroboros Praos không thay đổi các đảm bảo bảo mật cơ bản của Ouroboros Praos. Nó trở lại những đảm bảo này trong thời gian hồi chiêu. Nói cách khác, cơ chế đồng thuận không dựa vào việc bỏ phiếu, do đó việc sản xuất khối sẽ tiếp tục ngay cả khi không có đủ phiếu bầu hoặc không có cơ chế đồng thuận on-chain trong quá trình fork.

Lời kết

Hai phút để người dùng đạt được sự chắc chắn tuyệt đối về tính hoàn tất của giao dịch có vẻ vẫn còn dài. Điều này là do thời gian khối hiện tại là 20 giây và sẽ không hiệu quả nếu việc bỏ phiếu diễn ra cho mỗi khối. Ouroboros Leios sẽ giới thiệu ba loại khối: khối đầu vào, khối chứng thực và khối xếp hạng. Các khối hiện tại sẽ trở thành các khối xếp hạng, chỉ chứa các tham chiếu đến các khối danh mục thấp hơn. Nếu Ouroboros Praos được ứng dụng cho các khối đầu vào hoặc chứng thực, tính hoàn tất của giao dịch cũng sẽ bị giảm. Tuy nhiên, cũng có thể Peras sẽ chỉ được sử dụng để xếp hạng các khối, với cơ chế đồng thuận sử dụng chứng chỉ chứng thực để có tính hoàn tất giao dịch cao hơn.

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

Chia sẻ bài viết này trên Twitter | Facebook | Telegram


Picture

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