Skip to main content

Hiểu về Slot battles

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

PoS của Cardano dựa trên sự đồng thuận của Nakamoto. Do đó, chỉ có thể đạt được cái gọi là tính hữu hạn xác suất của các block. Do đó, đôi khi xảy ra trường hợp các pool tạo ra các block sẽ bị bỏ dở. Chúng tôi sẽ nói về các trường hợp xảy ra điều này và cách mạng có thể giải quyết.

Cách các block được đúc trong mạng Cardano

Một epoch Cardano kéo dài 5 ngày và được chia thành các phần được gọi là slot có độ dài một giây. Vì vậy, có 432.000 slot trong một epoch. Tính ngẫu nhiên của giao thức Cardano được định cấu hình để tạo ra một block khoảng 20 giây một lần. Do đó, có thể tạo khoảng 21.600 block trong mỗi epoch.

Mỗi pool đã đăng ký là một ứng cử viên tiềm năng có thể đúc một block trong một slot cụ thể. Một node có quyền đúc một block được gọi là slot leader. Việc lựa chọn các slot leader (vị thế được xác định sẽ đóng block) phải là ngẫu nhiên. Mạng chạy xổ số không phụ thuộc vào bất kỳ sự kiểm soát trung tâm nào. Các node riêng lẻ có thể tự động tìm hiểu xem chúng có "trúng xổ số" trong một slot nhất định nào hay không, tức là tự kiểm tra xem liệu chúng có thể được quyền tạo ra một block mới hay không.

Nguyên hàm mật mã được gọi là Hàm ngẫu nhiên có thể xác minh (VRF) được sử dụng để vẽ đường dẫn slot. VRF được Micali, Rabin và Vadhan giới thiệu vào năm 1999 và được sử dụng trong các sơ đồ, giao thức và hệ thống mật mã khác nhau.

Khái niệm cơ bản về VRF rất đơn giản. Người sở hữu khóa bí mật có thể tính toán giá trị đầu ra cũng như bằng chứng liên quan cho bất kỳ giá trị đầu vào nào. Mọi người khác, bằng cách sử dụng bằng chứng và khóa công khai được liên kết (khóa xác minh), có thể kiểm tra xem giá trị đầu ra có thực sự được tính toán chính xác hay không.

Trong mạng Cardano, chỉ một node tạo chứng chỉ cần thiết và lưu trữ nó trong blockchain mới có thể đúc các block. Thông qua chứng chỉ đăng ký, tất cả thông tin cần thiết (bao gồm cả khóa xác minh) được lưu trữ trong blockchain. Do đó, tất cả các node đều có tất cả thông tin liên quan để xác thực các block (và bằng chứng) do các node khác tạo ra.

Khi một node nhận được một block từ mạng, nó có thể xác minh rằng nó hợp lệ thông qua bằng chứng VRF và rằng nó được tạo bởi một node thực sự là người dẫn đầu trong slot đó.

Thuật toán VRF nhận nhiều đầu vào để có thể đánh giá xem một node nhất định có trở thành đầu mối slot trong một slot cụ thể hay không. Bên cạnh những thứ khác, chúng bao gồm ID slot hiện tại và ⅔ của tất cả đầu ra VRF từ epoch trước, từ đó một hàm băm (giá trị) duy nhất được tạo. Hàm băm này còn được gọi là Nonce. Nonce khiến không thể tính toán kết quả VRF trước quá xa.

Mỗi node cần tính số ngưỡng của nó. Đây là một nhiệm vụ dễ dàng vì nó bắt nguồn từ quy mô của cổ phần. Cổ phần bao gồm tiền ADA của nhà điều hành (cầm cố) và tất cả những người stake. Tiền stake càng lớn, pool có thể tạo ra càng nhiều block trong một epoch nhất định.

Mỗi giây, mọi pool sử dụng thuật toán VRF để có đầu ra VRF. Đầu ra VRF được so sánh với ngưỡng. Nếu đầu ra VRF nhỏ hơn ngưỡng, pool đã trở thành slot leader và có quyền đúc một block mới.

Trong ví dụ của chúng ta, NODE 7 đã trở thành slot leader. Đầu ra VRF là 28.454.834 và ngưỡng là 30.000.000. Vì vậy, node sẽ có được quyền đúc một block mới và chèn bằng chứng VRF (đầu ra VRF) vào tiêu đề block.

Bằng chứng VRF có trong block đề xuất được sử dụng để xác thực. Bất kỳ node nào khác trong mạng đều sử dụng thuật toán VRF để xác minh rằng block đó là hợp lệ. Ngoài bằng chứng VRF, block phải được ký bằng khóa KES (Mật mã chữ ký phát triển khóa). Đây là cấp độ bảo mật tiếp theo để nếu kẻ tấn công có thể bằng cách nào đó phá vỡ hoạt động của VRF, thì chúng vẫn không có khóa KES của người vận hành để ký các block.

Ai sẽ thắng trong cuộc chiến slot battle?

Một slot battle xảy ra khi 2 pool đều giành được quyền đúc một block trong cùng một slot. Như vậy, sẽ có hai slot leader trong một slot. Vì vậy, có khả năng hai block cạnh tranh. Chỉ một block có thể được chèn vào blockchain trên mỗi slot nhất định, vì vậy một trong số chúng phải bị loại bỏ. Người ta nói rằng sau này gọi block bị loại bỏ là block mồ côi (orphan block).

Trong ví dụ của chúng ta, NODE 7 đã trở thành slot leader vì đầu ra VRF là 28.454.834, thấp hơn ngưỡng 30.000.000. Trong cùng một slot, NODE 3 cũng trở thành slot leader với đầu ra VRF là 16.459.996, thấp hơn ngưỡng 27.500.000.

Cả hai node đúc một block mới, chèn đầu ra VRF (bằng chứng VRF) vào block đó và phân phối nó đến các node khác trong mạng Cardano. Một block mồ côi không được nhận phần thưởng pool. Điều này có nghĩa là chỉ một pool duy nhất có thể nhận được phần thưởng cho một block được tạo ra trong cùng một slot.

Nếu việc phát tán block nhanh (độ trễ thấp), có khả năng nhiều node khác trong mạng sẽ nhận được cả hai block. Vì vậy, block được đúc bởi NODE 7 với đầu ra VRF 28.454.834 và block được đúc bởi NODE 3 với đầu ra VRF 16.459.996.

Nếu một node nhận được hai block hợp lệ cho một slot, nó sẽ chọn block có đầu ra VRF thấp hơn. Một node loại bỏ một block có bằng chứng VRF cao hơn, về cơ bản làm cho nó trở thành mồ côi. Các pool có số tiền stake thấp hơn có lợi thế hơn trong cuộc chiến slot battle vì có nhiều khả năng tạo ra đầu ra VRF thấp hơn.

Bạn có thể đã biết rằng trong ví dụ của chúng tôi, block màu đỏ do NODE 3 đúc đã giành được block màu xanh lá cây từ NODE 7.

Nếu một cuộc chiến slot battle xảy ra, người chiến thắng được xác định một cách ngẫu nhiên. Các nhà khai thác pool không có cơ hội tác động đến việc lựa chọn block xảy ra trên các node khác trong mạng miễn là họ hành xử trung thực.

Từ góc độ Blockchain, tình hình trông như thế này. Có một slot battle ở slot N+40. Một node nhận được hai block được đúc trong cùng một slot. Nó chọn block màu đỏ là block cuối cùng trong blockchain và loại bỏ block màu xanh lá cây. Một block khác được đúc trong slot N+60 và slot leader đã theo đúng block màu đỏ. Với mỗi block bổ sung được thêm vào, rõ ràng hơn là chuỗi đằng sau block màu đỏ sẽ tồn tại trong blockchain mãi mãi trong khi block màu xanh lá cây sẽ vẫn còn nguyên vẹn.

Như chúng tôi đã đề cập ở phần đầu, khoảng 21.600 block có thể được đúc trong một epoch. Kết quả tốt nhất trong vài epoch gần đây là 21.417 block được đúc trong epoch 411. Thông thường, trong các epoch có khoảng 20.900 đến 21.11 block được đúc. Một node có thể trở thành slot leader và vì lý do nào đó, nó có thể không đúc được một block (ví dụ: vì nó không trực tuyến vào thời điểm nó trở thành slot leader).

Slot battles diễn ra tương đối thường xuyên, có khoảng 420 "trận chiến" trong mỗi epoch, tức là khoảng 4 trận mỗi giờ. Đó là khoảng 2% tổng số block. Do đó, bạn nên đợi một vài block trước khi coi block có giao dịch của bạn là block cuối cùng. Nếu có khoảng 4 slot battle mỗi giờ, tôi dám khẳng định rằng việc đợi 6 block (2 phút) là đủ lâu để chắc chắn rằng block đó là cuối cùng.

Phần kết luận

Một block có thể trở nên mồ côi vì một lý do khác. Nếu nó không đến được node trở thành slot leader đủ nhanh, thì slot leader buộc phải đi theo block trước đó (block cuối cùng có sẵn). Chúng ta sẽ nói về điều đó vào lần sau.

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