Bảo mật và chịu lỗi
Validator do các bên biết danh tính vận hành, ràng buộc bằng hợp đồng pháp lý, và trả công qua hợp đồng dịch vụ bằng tiền thật. Hệ quả là mạng không cần lạm phát, và token nhiên liệu của chain khách không cần có giá trị thị trường nào.
Đây là khác biệt chi phí căn bản, không phải tối ưu ở biên. Mô hình đối thủ phải nuôi giá một tài sản để duy trì an toàn; chi phí ấy cuối cùng cũng có người trả.
Ai trả cho an toàn — và một câu tài liệu này chưa trả lời được
Câu ngay trên nói về validator của một chain khách, và ở đó nó đúng: khách trả bằng tiền thật theo hợp đồng dịch vụ, nên chain ấy chạy được bất kể LOVE9 có giá hay không. Nhưng người ký của mạng chung 9Chain thì không nằm trong câu đó — mục Chín vai xếp họ vào phần LIBERTAS của dòng mở kho, tức được trả bằng chính LOVE9. Hai mô hình khác nhau, và trước đây tài liệu này để chúng lẫn vào nhau.
Nói cho hết cả ba chỗ chưa khớp, vì một người đọc kỹ sẽ tìm ra chúng dù chúng tôi có nói hay không:
| Chỗ chưa khớp | Một bên nói | Bên kia nói |
|---|---|---|
| Ai trả cho người ký | Mục này: trả bằng tiền thật, nên mạng không cần lạm phát | Chín vai: người ký nhận từ LIBERTAS, tức bằng LOVE9 |
| Cọc của ai | Từ điển: self-bond là vốn người ký tự bỏ ra, thứ họ mất nếu làm sai | Kinh tế LOVE9: cọc của các validator khai sinh do vốn vận hành ứng ra |
| Phiếu đếm theo gì | Chín vai: quyền biểu quyết đến từ vốn đã đặt cọc | Tham gia và cửa còn nợ: một con người, một suất, một lá phiếu |
Chỗ nào là thiết kế, chỗ nào là đích đến, phải nói rõ. Hai phép đếm phiếu thuộc hai tầng khác nhau: quản trị kỹ thuật của chuỗi tính theo vốn cọc, vì đó là thứ chịu hậu quả kỹ thuật; quản trị luật và phần chia thì nhắm tới một người một phiếu, và nó chưa chạy được vì tầng đếm người chưa xong. Cho tới khi tầng ấy xong, mọi cuộc biểu quyết trên mạng này đều là biểu quyết theo vốn cọc, kể cả những cuộc mang tên cộng đồng. Còn cọc của kỳ khai sinh: vì dự án ứng ra, nó chứng minh cam kết vận hành, chưa chứng minh rủi ro tài sản riêng — hai thứ khác nhau, và chỉ thứ sau mới răn đe được.
Câu khó nhất để lại đây vì chưa có lời: trong quãng giữa — khi kho chưa mở được vì cách nhận còn CÒN TRỐNG, mà giàn giáo đã bắt đầu tháo — nguồn trả cho người ký của mạng chung là một cổng chưa qua. Đây không phải chi tiết vận hành: nó là điều kiện để lời hứa "không ai tắt được" không rỗng. Một mạng bảo mật bằng giá token thì yếu đi khi giá giảm; một mạng bảo mật bằng lương thì dừng hẳn khi bên trả lương hết tiền — và dự án này hứa sẽ tháo bên trả lương ấy đi. Ai giải được câu này thì gửi về hai địa chỉ ở mục Tham gia và cửa còn nợ; đó là đóng góp đắt nhất hiện có.
Ba chế độ vận hành, một mã nguồn
| Chế độ | Ai chạy validator | Phù hợp |
|---|---|---|
| Nền tảng vận hành trọn | Nền tảng chạy toàn bộ | Khách đơn giản, ngân sách thấp |
| Hỗn hợp (mặc định) | Nền tảng đa số, khách một node, kiểm toán một node | Tài chính, consortium |
| Nhiều bên | Nhiều định chế cùng chạy | Consortium nhiều thành viên |
Hình 22 — Ba chế độ khác nhau ở cấu hình, không khác ở mã.
Luật chịu lỗi
Đồng thuận cần hơn hai phần ba tổng quyền biểu quyết để chốt một block. Với quyền chia đều, mạng n node chịu được f node ngừng đột ngột theo công thức n ≥ 3f+1. Đây là ràng buộc toán học, không hạ xuống được bằng cấu hình.
| Số node | Chịu được | Ghi chú |
|---|---|---|
| 3 | 0 | mất bất kỳ node nào là dừng |
| 4 | 1 | ngưỡng tối thiểu có ý nghĩa |
| 5–6 | 1 | thêm node thứ sáu không tăng khả năng chịu lỗi |
| 7 | 2 | ngưỡng khuyến nghị cho mạng chạy tài sản thật |
| 10 | 3 | chịu được cả sự cố một vùng hoặc một nhà cung cấp |
Ba điều dễ hiểu sai
Đếm validator không phải đếm khả năng chịu lỗi. Thứ quyết định là số miền hỏng độc lập, vì thứ chết là cái máy chứ không phải tiến trình. Chín validator trên cùng một cụm chịu lỗi đúng một máy: mất máy ấy là mạng dừng, dù danh sách validator vẫn dài đúng chín dòng.
Ngưỡng rải máy suy ra được từ chính luật dừng, không phải từ cảm giác an toàn. Mạng dừng khi một phần ba quyền biểu quyết biến mất cùng lúc, nên không máy nào được giữ từ một phần ba số validator trở lên — với chín validator là tối đa hai mỗi máy, tức ít nhất năm máy, và năm máy ấy phải hỏng vì những lý do khác nhau thì mới đáng gọi là năm miền. Con số ấy là hệ quả số học của ngưỡng đồng thuận: muốn hạ nó xuống chỉ có đúng một cách là đổi luật dừng.
Từ đó ra một cách đọc mọi tin tức về phân tán: một máy rời cụm chưa phải là phân tán. Bước ấy có thật và phải có, nhưng phép đo không nhúc nhích chừng nào còn một máy giữ quá ngưỡng dừng — trước mốc đó, mất đúng một máy vẫn là mất cả mạng. Vì thế tài liệu này viết phân tán thành một cổng có ngưỡng đếm được, chứ không phải một quá trình để kể từng bước: một bước đi kể ra thì nghe như một kết quả, còn kết quả thì chỉ có một chỗ để đọc — hỏi mạng xem quyền biểu quyết đang nằm trên mấy cái máy.
Đồng thuận thà dừng còn hơn chia đôi. Khi vượt ngưỡng, chain dừng hẳn thay vì tách thành hai nhánh cùng tự nhận là thật. Đó là lựa chọn an toàn, không phải lỗi. Nghĩa vụ đi kèm là hồi phục nhanh: có mục tiêu thời gian, có quy trình, và có diễn tập.
Ràng buộc vốn thấp thì chiếm chain rẻ. Nếu ngưỡng vốn tự đặt cọc thấp, tổng vốn đặt cọc của cả mạng cũng nhỏ, và một khoản tiền khiêm tốn đủ mua hai phần ba quyền biểu quyết. Vì thế ngưỡng này được đặt cao. Nhưng phải nói đúng tư cách của nó: văn bản khắc ở genesis nói thẳng rằng chuỗi CHƯA cưỡng chế mức sàn ấy trong đồng thuận — nó là con số đề xuất và là kỷ luật vận hành, chưa phải một lớp bảo vệ đã có. Cưỡng chế nó là một cổng chưa qua, và bạn kiểm được bằng cách đọc chính tệp genesis.
Câu chốt: một mạng chỉ đáng tin khi bạn biết chính xác nó chịu được bao nhiêu sự cố — và con số đó thường nhỏ hơn số validator bạn đếm được.