Hầu hết các hệ thống hoạt động dựa trên giả định.
Bạn giả định rằng một người dùng đủ điều kiện vì cơ sở dữ liệu của bạn nói như vậy. Bạn giả định rằng một giao dịch tuân theo quy tắc vì backend của bạn đã thực hiện nó. Bạn giả định rằng một thông tin xác thực là thật vì nó đến từ nguồn "đúng". Và hầu hết thời gian, giả định đó đúng—cho đến khi nó không đúng.
Đó là lúc mọi thứ trở nên khó chịu.
Bởi vì khi có điều gì đó sai, bạn sẽ phải đào bới qua các log, tái tạo các sự kiện, và cố gắng chứng minh những gì đáng lẽ đã có thể chứng minh từ đầu. Điều này là phản ứng, rối rắm, và thường không có kết quả rõ ràng. Hệ thống hoạt động… nhưng bạn không thể chứng minh rằng nó đã hoạt động.
Đây là khoảng trống mà các xác nhận đang cố gắng lấp đầy.
Trong Sign, một xác nhận không chỉ là một bản ghi - đó là một tuyên bố đã được ký gắn liền với một cấu trúc xác định. Ai đó (hoặc một cái gì đó) đang nói rõ ràng, "điều này là đúng," và hỗ trợ nó bằng một chữ ký có thể được xác minh độc lập. Nghe có vẻ cơ bản, nhưng nó thay đổi cách mà các hệ thống hoạt động.
Bạn không còn phụ thuộc vào trạng thái nội bộ như là nguồn sự thật. Bạn đang tạo ra những tuyên bố có thể di chuyển, có thể xác minh mà có thể đứng vững một mình.
Và điều đó thay đổi động lực khá nhiều.
Trước hết, điều này giảm sự phụ thuộc vào kiểm soát tập trung. Nếu một tuyên bố có thể được xác minh mà không cần truy vấn cơ sở dữ liệu của bạn, bạn không cần phải trực tuyến - hoặc thậm chí được tin tưởng - để người khác xác thực nó. Bằng chứng tồn tại bên ngoài hệ thống của bạn. Đó là một sự tách biệt tinh tế nhưng quan trọng.
Nó cũng làm cho các hệ thống trở nên dễ dàng kết hợp hơn.
Một xác nhận được phát hành trong một bối cảnh có thể được sử dụng lại trong một bối cảnh khác mà không cần diễn giải lại. Nếu một người dùng đã chứng minh đủ điều kiện ở đâu đó, tại sao lại bắt họ phải lặp lại quá trình? Với các xác nhận, bằng chứng đó có thể di chuyển. Không phải như dữ liệu thô, mà như một cái gì đó đã được xác minh và ký.
Tất nhiên, điều này đưa ra một loại trách nhiệm khác.
Ai đang phát hành xác nhận? Tiêu chuẩn nào họ đang tuân theo? Liệu họ có thể được tin tưởng không? Các xác nhận không loại bỏ sự tin tưởng - chúng làm cho nó trở nên rõ ràng. Thay vì ẩn mình sau các hệ thống, sự tin tưởng gắn liền với các nhà phát hành có thể nhận diện và các bản ghi có thể nhìn thấy.
Và thật lòng mà nói, đó là một thỏa thuận tốt hơn.
Bởi vì sự tin tưởng ẩn giấu là nơi mà hầu hết các vấn đề bắt đầu. Khi bạn không biết điều gì để tin tưởng, bạn hoặc là tin tưởng mọi thứ hoặc không tin tưởng gì cả - không cái nào có thể mở rộng tốt. Các xác nhận đưa ra quyết định đó ra ánh sáng. Bạn có thể kiểm tra nguồn gốc, xác minh chữ ký, và tự quyết định cho mình.
Cũng có điều gì đó cần nói về cách điều này ảnh hưởng đến thiết kế hệ thống.
Khi bạn biết mọi hành động quan trọng có thể cần được chứng minh sau này, bạn bắt đầu xây dựng khác đi. Bạn nghĩ về những gì nên được ghi lại, cách nó nên được cấu trúc, và ai nên ký xác nhận. Điều này thêm một lớp kỷ luật mà hầu hết các hệ thống hiện tại thiếu.
Không phải vì họ không quan tâm - mà vì họ không được xây dựng với sự xác minh trong tâm trí.
Sign không ép buộc sự hoàn hảo, nhưng nó đẩy các hệ thống theo hướng đó. Nó cho các nhà phát triển một cách để biến giả định thành một cái gì đó cụ thể - một cái gì đó có thể được kiểm tra, chia sẻ, và sử dụng lại mà không có sự mơ hồ.
Và trong một không gian mà "hãy tin tôi" đã bị lạm dụng đến mức vô nghĩa, đó là một sự thay đổi đáng để chú ý.