Overview
Công ty ABC là một startup về tài chính ở Ấn Độ, công ty phát triển một hệ thống trading platform để mua bán các khoản nợ. Để đảm bảo các giao dịch mua bán được bảo mật, không bị thay đổi, CEO công ty muốn lưu trữ thông tin giao dịch vào blockchain
Có nhiều giải pháp blockchain được team thảo luận trong đó có Ethereum, Fabric Hyperledger. Sau khi đánh giá về requirement, platform chỉ cần lưu thông tin giao dịch như người mua, người bán, ngày giờ, NDA information, không có mua bán token như mạng blockchain BSC hay Ethereum, team quyết định dùng platform Hyperledger fabric do những ưu thế về khả năng lưu trữ thông tin mà platform này đem lại
Overview về architect của Fabric
Một mạng Fabric bao gồm
Các peer node làm nhiệm vụ verify các transaction (các thao tác ghi đọc dữ liệu vào blockchain phải được xác nhận mới peer node)
CA node (Cert Authority) làm nhiệm vụ cấp quyền cho các user tham gia mạng fabric, quy định ai có quyền access vào blockchain, operation nào được phép (đọc ghi, thêm org peer …) hiểu nhanh thì CA node giống như đội HR của công ty, nhân viên mới vào công ty phải đăng ký với HR trình diện CMND, offer letter. Sau đó HR sẽ cấp ID nhân viên, nhân dạng (user/pass) …
Client node thao tác với blockchain (đọc/ghi)
Order node là điểm khác biệt cho với các public blockchain khác như Ethereum hay Bitcoin, khi bất kì node nào cũng có thể tham gia consensus process ( quá trình transaction được sắp xếp và đóng gói vào block). Các order node sẽ restrict những ai được đọc/ghi data , validate transaction và đóng gói thành block
Giải pháp
Trước đây, team dự án từng deploy Fabric blockchain trên AWS VM như hình dưới, tuy nhiên cách deploy này có nhiều nhược điểm
Chuỗi fabric blockchain ngày càng tăng theo lượng dữ liệu dẫn tới workload ngày càng lớn trong khi fabric lại deploy trên các VM cố định không thể autoscale.
Giải pháp deploy Fabric blockchain lên K8s được sử dụng để tận dụng tính năng autoscale và container management của k8s
Mạng blockchain được deploy trên Azure AKS , với 2 order node, 2 organization, mỗi org có 3 peer node để validate transaction, 1 CA node để cert authorize
Mỗi node đều được mount với 1 PVC volume để lưu dữ liệu blockchain, các volume được snapshot periodically để backup
Blockchain crypto config materials lưu trong k8s secrets
Process để launch 1 Hyperledger blockchain network như sau
Blockchain materials được generate từ tool crypto gen đi kèm với bộ hyperledger, các config được lưu trong file configtx.yaml
Team sẽ define các thông tin về blockchain như Organization, Endorsement policy trong file này
Execute để generate network artifact
Một số artifact cần chú ý
- genesis.block: block đầu tiên của blockchain . Ngày xưa cụ Shatoshi đào bitcoin là người tạo ra khối đầu tiên của mạng BTC
- channel.tx : Channel configuration transaction
- Certificate: Các certificate của peer. ca, order node. Mỗi org đều có các cert riêng
Các certificate của peer, ca, order là các file secret, key.pem , được lưu vào k8s secret và mount vào k8s pod dưới dạng volume
Các peer, ca, order node trong hyperledger được deploy thành các k8s pod. Mạng blockchain này được thiết kế sử dụng 2 org, mỗi org có 1 ca, 1 peer và 1 cli pod.
3 order node để thực hiện sắp xếp transaction
Toàn bộ infra được build bằng infra as code, được launch tự động bằng shell script để có thể tích hợp vào CICD pipeline
Việc sử dụng multiple orderer node để tránh Single point of failure issue,
Trong quá trình deploy network, team cũng gặp nhiều issue như
- Lỗi connection refused khi connect với các node
- Endorsement process failed khi thực hiện install chain code
- Lỗi certificate [This identity is not an admin]]
Đón đọc phần sau
0 Nhận xét