Xây Dựng Công Cụ Danh Tính Kỹ Thuật Số: Lý Do Chúng Tôi Mã Nguồn Mở SDK SSI
Sau sáu tháng phát triển Blockia ID, nền tảng xác minh danh tính của chúng tôi, chúng tôi đã quyết định mã nguồn mở SDK SSI TypeScript mà chúng tôi sử dụng. Vậy tại sao chúng tôi lại xây dựng một SDK SSI khác khi đã có nhiều lựa chọn trên thị trường?
Bối Cảnh
Quy định eIDAS 2.0 của EU yêu cầu các ví danh tính kỹ thuật số phải có sẵn trước năm 2026. Mỗi doanh nghiệp mà chúng tôi làm việc cùng đều cần bắt đầu chuẩn bị ngay bây giờ. Chúng tôi cần một giải pháp SSI có khả năng tích hợp liền mạch với các ngăn xếp TypeScript/Node.js hiện đại mà không cần thay đổi cơ sở hạ tầng.
Hành Trình Đánh Giá
Chúng tôi đã dành nhiều tuần để đánh giá các SDK SSI hiện có. Mỗi SDK đều xuất sắc cho trường hợp sử dụng của nó:
- Walt.id cung cấp bộ tính năng toàn diện nhất nhưng yêu cầu chuyên môn về JVM và cơ sở hạ tầng mà chúng tôi không có.
- Sphereon mang lại chức năng phong phú được xây dựng trên Veramo. Nó giàu tính năng và được bảo trì tốt, nhưng chúng tôi cần nhiều sự linh hoạt hơn trong lựa chọn kiến trúc.
- Veramo có hệ thống plugin tinh tế cho phép khả năng mở rộng vô hạn. Đối với các nhóm muốn xây dựng giải pháp danh tính tùy chỉnh từ đầu, đây là lựa chọn lý tưởng.
Tại Sao Lại Là Một SDK Khác?
Mỗi SDK trên phục vụ cộng đồng của riêng nó tốt. Nhưng chúng tôi thấy mình đang ở trong một tình huống cụ thể:
- Đội ngũ hoàn toàn sử dụng TypeScript
- Khách hàng doanh nghiệp không muốn phụ thuộc vào blockchain
- Cần tuân thủ các tiêu chuẩn OpenID4VC mới nhất (Draft-17 và Draft-24)
- Yêu cầu kích thước gói tối thiểu trong môi trường sản xuất
- Các nhà phát triển muốn triển khai tính năng, không phải xây dựng cơ sở hạ tầng
Chúng tôi nhận ra rằng mình không đơn độc. Nhiều đội ngũ TypeScript đang phải đối mặt với những rào cản tương tự.
Triết Lý Thiết Kế Của Chúng Tôi
Tính mô-đun theo mặc định: Chúng tôi chia chức năng thành 11 gói NPM tập trung. Các nhóm chỉ xây dựng một bộ xác minh không cần mã ví. Xây dựng chỉ một ví không yêu cầu logic phát hành. Cài đặt chỉ những gì bạn thực sự sử dụng.
Native TypeScript: Không có các liên kết đến ngôn ngữ khác, không có các lớp bọc xung quanh REST API. Hoàn toàn là TypeScript với khả năng suy diễn kiểu đầy đủ, giúp IDE của bạn thực sự hữu ích.
Tiêu chuẩn là ưu tiên hàng đầu: Chúng tôi đã triển khai OpenID4VCI Draft-17 và OpenID4VP Draft-24 - các thông số kỹ thuật mà ví của EU sẽ sử dụng. Thêm vào đó là W3C VC 2.0 và DID Core 1.0.
Tập trung vào sản xuất: Mỗi quyết định được tối ưu hóa cho việc triển khai sản phẩm, không phải khám phá khả năng. Nhàm chán là tốt. Ổn định thì tốt hơn.
Thực Tế Khi Xây Dựng SSI
Sau sáu tháng hoạt động với Blockia ID, đây là những gì chúng tôi đã học được:
- Hầu hết các doanh nghiệp không muốn thay đổi kiến trúc cách mạng. Họ muốn khả năng SSI có thể tích hợp vào các hệ thống hiện tại.
- Các nhà phát triển không muốn trở thành chuyên gia về giao thức danh tính. Họ muốn phát hành một chứng chỉ và tiếp tục với logic kinh doanh. Càng đơn giản hóa tích hợp, khả năng thành công của việc áp dụng càng cao.
- Các tiêu chuẩn quan trọng hơn các tính năng. Hỗ trợ các bản nháp OpenID4VC mới nhất có nghĩa là tương thích với các ví của EU sắp tới. Điều đó có giá trị hơn 50 tính năng kỳ lạ.
Những Gì Chúng Tôi Đã Xây Dựng
Mười một gói NPM tổng cộng 89KB khi được gộp lại. Mỗi gói thực hiện tốt một điều:
- Phát hành chứng chỉ
- Xác minh chứng chỉ
- Thao tác ví
- Quản lý DID
- Quản lý khóa
- Xử lý thu hồi
Chọn những gì bạn cần. Bỏ qua những gì bạn không cần.
Tình Trạng Hiện Tại
Chúng tôi đang chạy điều này trong sản xuất cho Blockia ID, xử lý xác minh danh tính hàng ngày. Nó ổn định cho các trường hợp sử dụng của chúng tôi, nhưng chúng tôi biết rằng những người khác có những nhu cầu khác nhau.
Những gì đang hoạt động:
- Quy trình vòng đời chứng chỉ hoàn chỉnh
- Triển khai ví HD
- Hỗ trợ DID:key và DID:web
- Tiêu chuẩn OpenID4 mới nhất
Những gì sắp tới:
- Thêm nhiều phương pháp DID
- Tính năng bảo mật nâng cao
- Các định dạng chứng chỉ rộng rãi hơn
Quyết Định Mã Nguồn Mở
Chúng tôi có thể giữ điều này trong nội bộ. Nhưng hệ sinh thái SSI sẽ cải thiện khi chúng tôi chia sẻ các giải pháp. Mỗi đội không nên phải giải quyết cùng một vấn đề độc lập.
Hơn nữa, chúng tôi biết rằng quan điểm của mình là hạn chế. Cộng đồng TypeScript sẽ tìm ra các trường hợp biên mà chúng tôi chưa xem xét, đề xuất cải tiến mà chúng tôi chưa tưởng tượng, và xây dựng các tích hợp mà chúng tôi chưa lên kế hoạch.
Ai Có Thể Sử Dụng Điều Này?
Nếu bạn là một đội ngũ TypeScript cần khả năng SSI mà không cần thay đổi cơ sở hạ tầng, điều này có thể giúp bạn. Nếu bạn đang chuẩn bị cho các yêu cầu danh tính kỹ thuật số của EU với nguồn lực hạn chế, điều này có thể giúp bạn tiết kiệm nhiều tháng.
Nếu bạn hài lòng với giải pháp SSI hiện tại của mình, hãy tiếp tục sử dụng. Chúng tôi không cố gắng thay thế bất kỳ điều gì - chỉ cung cấp một lựa chọn khác cho các đội ngũ có rào cản cụ thể.
Tham Gia Cùng Chúng Tôi
SDK hiện đã được cấp phép Apache 2.0 và có sẵn ngay hôm nay:
- GitHub: github.com/Blockia-Labs/blockialabs-ssi
- Tài liệu: ssi-sdk.blockialabs.com
- NPM: @blockialabs/ssi-*
Chúng tôi đang tìm kiếm:
- Phản hồi từ người dùng sản xuất
- Các tính năng còn thiếu mà bạn thực sự cần
- Các mẫu tích hợp đang hoạt động
- Các tiêu chuẩn mà chúng tôi nên ưu tiên
Suy Nghĩ Cuối
Đó là những gì chúng tôi đã xây dựng. Nó không cách mạng. Nó không phải là sản phẩm giàu tính năng nhất. Nhưng nó hoạt động và nó nhỏ gọn.