Tổng quan
Trong thế giới ngày càng phát triển của công nghệ blockchain, việc đảm bảo tính an toàn và minh bạch trong việc lưu trữ dữ liệu là điều vô cùng quan trọng. Flow, một nền tảng blockchain mới, đã giới thiệu một cách tiếp cận độc đáo để giải quyết vấn đề này. Flow sử dụng hai cơ sở dữ liệu chính để lưu trữ thông tin: Trạng thái giao thức (Protocol State) và Trạng thái thực thi (Execution State). Mỗi cấu trúc dữ liệu này có vai trò riêng biệt trong việc đảm bảo tính an toàn và hiệu quả của mạng lưới. Bên cạnh đó, Flow cũng áp dụng quá trình niêm phong block (Block Sealing) để đảm bảo rằng kết quả của các giao dịch đã được xác nhận và không thể thay đổi. Hãy cùng tìm hiểu sâu hơn về cách Flow lưu trữ dữ liệu và niêm phong block để đảm bảo tính bảo mật và minh bạch cho người dùng của mạng lưới.
Flow Blockchain Forks, Finalization
Lưu trữ dữ liệu (Data Storage)
Flow sử dụng hai cơ sở dữ liệu để lưu trữ thông tin.
Trạng thái giao thức (Protocol State) chính là blockchain, lưu trữ thông tin về trạng thái của mạng như ai được tham gia vào giao thức, Collection Guarantees, Execution receipts, Result Approvals, v.v.
Trạng thái thực thi (Execution State) là cấu trúc dữ liệu Memory-trie (MTrie), chứa tất cả dữ liệu được thao tác thông qua hợp đồng thông minh Cadence (số dư token, NFTs, hợp đồng thông minh triển khai, …). Mỗi khi một collection được thực thi, một MTrie mới sẽ được tạo ra. Trạng thái mới của dữ liệu MTrie có thể được tham chiếu thông qua một mã băm (root-node hash). Mã băm này là Execution Result mà nút thực thi cam kết (Execution commitment), được thêm vào block bởi người dẫn đầu đạt được sự đồng thuận để có thể được xác nhận.
Flow không tự chứa thông tin, nghĩa là thông tin tài khoản không được lưu trữ trên chuỗi, mà lại nằm trong trạng thái thực thi.
Niêm phong Block (Block Sealing)
Niêm phong block là bước cuối cùng trong vòng đời block. Đối với khách hàng gửi giao dịch, niêm phong block đảm bảo kết quả thực thi (trạng thái tài khoản sau thực thi) đã được xác minh thành công. Lưu ý rằng block chứa con dấu vẫn cần được kết thúc trước khi có thể được xem là cam kết với chuỗi.
Block Seal được thêm vào blockchain khi đủ Result Approvals được thu thập cho block được thực thi.
Hãy xem qua sơ đồ cuối cùng này.
- Ở View 1, Consensus leader A đề xuất block 0 (B0) cho mạng.
- Các nút thực thi nhận và thực thi B0 và gửi Execution Receipts đến mạng.
- Trong trường hợp lý tưởng, Consensus Leader C nhận được một Execution Receipt để thêm kết quả thực thi B0 vào block 2 (B2). Điều này có nghĩa là Consensus leader C đã tích hợp kết quả thực thi vào B2, cam kết kết quả thực thi của B0 (MTrie root hash) vào blockchain.
- Khi block 3 (B3) được đề xuất bởi Consensus leader D, các nút xác minh có thể xác định phân công chunk của họ thông qua nguồn ngẫu nhiên được thêm vào B3. Sau đó, các nút xác minh yêu cầu giao dịch cho các chunk của họ từ các nút thu thập và bắt đầu xác minh các chunk được giao. Lưu ý rằng các nút xác minh chờ đợi cho đến khi B3 được hoàn thành, để tránh làm việc không cần thiết trong trường hợp chuỗi bị chia nhánh và B3 kết thúc trên một nhánh sẽ bị loại bỏ.
- Các nút xác minh gửi phê duyệt kết quả của họ đến mạng khi hoàn thành việc xác minh các chunk được giao. Giả sử Consensus Leader H nhận đủ phê duyệt kết quả trong view 8, nó sẽ tạo seal cho B0 và thêm vào block 7 (B7).
- Một khi B7 được hoàn thành trong block 10 (B10), block B0 được niêm phong và con dấu được kết thúc.
Tại thời điểm này, người dùng đã gửi giao dịch được thêm vào một bộ sưu tập bao gồm trong block B0 có thể chắc chắn rằng giao dịch của họ đã được thực thi và kết quả của giao dịch được cam kết với chuỗi.
Nói một cách đơn giản, điều này có nghĩa là kết quả của giao dịch sẽ không thay đổi. Nếu bạn chuyển quyền sở hữu chiếc xe của mình cho chủ sở hữu mới, bạn có thể trao cho họ chìa khóa, chiếc xe là của họ!