
Erasure coding là kỹ thuật chia dữ liệu thành nhiều mảnh nhỏ gọi là "data shard" và tạo thêm các mảnh dự phòng gọi là "parity shard". Chỉ cần bạn truy xuất đủ số lượng mảnh—dù có mất một phần—vẫn có thể tái tạo toàn bộ dữ liệu gốc.
Hãy hình dung như ghép một bức tranh có các mảnh dự phòng: bức tranh được chia thành các mảnh chính (data shard), kèm một số mảnh dự phòng (parity shard). Dù thiếu một số mảnh, chỉ cần thu thập đủ, bạn vẫn hoàn thiện được hình ảnh.
Trọng tâm của erasure coding nằm ở hai tham số k và r: dữ liệu được tách thành k mảnh dữ liệu và tạo r mảnh dự phòng, tổng số mảnh là n = k + r. Hệ thống có thể phục hồi dữ liệu dù mất bất kỳ r mảnh nào, miễn là còn truy xuất được k mảnh.
Một phương pháp phổ biến là Reed–Solomon coding, kỹ thuật cổ điển tạo mảnh dự phòng bằng phép toán đa thức, đã được ứng dụng hàng thập kỷ. Ví dụ, nếu k = 6 và r = 3, tổng cộng có 9 mảnh. Có thể mất bất kỳ 3 mảnh nào mà vẫn phục hồi được dữ liệu, chi phí lưu trữ khoảng 1,5 lần (9/6).
Quá trình phục hồi giống như “giải hệ phương trình”: khi thu đủ k mảnh, thuật toán sẽ tái tạo dữ liệu gốc. Trong hệ thống phân tán, điều này đảm bảo khả năng truy xuất dữ liệu ngay cả khi node ngoại tuyến, ổ đĩa hỏng hoặc xảy ra sự cố mạng.
Blockchain và các mạng phi tập trung có hệ thống node phân tán với thời gian hoạt động không ổn định. Nếu chỉ dựa vào nhiều bản sao đầy đủ sẽ tiêu tốn rất nhiều dung lượng lưu trữ và băng thông. Erasure coding mang lại độ tin cậy tương đương nhưng giảm mạnh chi phí lưu trữ, phù hợp cho môi trường mà nhiều node phổ thông cùng cung cấp dữ liệu.
Một mặt, giải pháp này giảm chi phí lưu trữ các bản sao hoàn chỉnh, cho phép phân phối dữ liệu hiệu quả giữa các node và khu vực khác nhau. Mặt khác, kết hợp với xác thực hash và kiểm tra, erasure coding đảm bảo dữ liệu luôn truy xuất được bất chấp biến động node, tăng cường tính khả dụng—nghĩa là ai cũng có thể tải bộ dữ liệu đầy đủ.
Trong các mạng lưu trữ phi tập trung, erasure coding thường dùng để chia nhỏ file lớn thành các phần và phân phối lên nhiều node. Cách này giảm tác động khi một node gặp sự cố, giảm số bản sao tổng thể và cho phép tải nhanh hơn nhờ truy xuất song song.
Chiến lược phổ biến: chia file thành k mảnh dữ liệu và tạo r mảnh dự phòng, phân phối các mảnh này lên các node ở nhiều khu vực khác nhau do nhiều đơn vị quản lý. Trong các cụm đa châu lục, điều này đảm bảo dù nhiều node tại một khu vực gặp sự cố, vẫn thu thập đủ k mảnh để phục hồi.
Nhiều bộ công cụ lớp trên hỗ trợ bổ sung erasure coding vào các mạng định địa chỉ nội dung như IPFS. Quy trình thường gồm xác thực hash cấp khối và kiểm tra định kỳ để đảm bảo khối dữ liệu nguyên vẹn và phục hồi được.
Trong các giải pháp layer-2 như Rollup, đảm bảo “người khác có thể truy cập dữ liệu giao dịch” là yếu tố then chốt—gọi là tính khả dụng dữ liệu. Một cách tiếp cận là mở rộng dữ liệu bằng erasure coding thành cấu trúc lưới. Node nhẹ sẽ lấy mẫu ngẫu nhiên một số phần nhỏ; nếu mẫu này có khả năng truy xuất cao, có thể suy ra toàn bộ dữ liệu đều khả dụng. Quy trình này gọi là lấy mẫu tính khả dụng dữ liệu.
Tính đến năm 2024, Celestia sử dụng mở rộng Reed–Solomon hai chiều và lấy mẫu tính khả dụng dữ liệu trên mainnet, mở rộng dữ liệu khối thành ma trận lớn hơn để tăng độ tin cậy khi lấy mẫu (xem tài liệu kỹ thuật chính thức để biết chi tiết). Trong Ethereum, erasure coding cũng đang được thảo luận dài hạn như một phần của sharding hoàn chỉnh (danksharding), kết hợp lấy mẫu và cơ chế cam kết để tăng tính khả dụng.
Cả hai đều nhằm ngăn mất dữ liệu nhưng khác biệt về bản chất:
Triển khai đòi hỏi cân bằng giữa độ tin cậy, lưu trữ và chi phí vận hành. Dưới đây là hướng dẫn từng bước cho thử nghiệm nhỏ hoặc môi trường sản xuất:
Ví dụ: Nếu bạn vận hành node tự quản hoặc triển khai cụm lưu trữ riêng trên môi trường thử nghiệm của Gate, có thể thử với k = 8, r = 4 tại ba địa điểm—kiểm tra rằng mất bất kỳ bốn mảnh nào vẫn phục hồi được dữ liệu.
Ở góc độ kỹ thuật, erasure coding hai chiều kết hợp lấy mẫu khả dụng dữ liệu đang phát triển nhanh trong các blockchain mô-đun. Có nhiều nghiên cứu tích hợp kỹ thuật mã hóa với cam kết mật mã và zero-knowledge proof để xác minh phục hồi dữ liệu. Đến năm 2024, các dự án như Celestia đã triển khai DAS nâng cao trên mainnet; cộng đồng tiếp tục tối ưu hóa để giảm chi phí lấy mẫu và cải thiện trải nghiệm node nhẹ ở quy mô lớn.
Với cá nhân hoặc nhóm, hãy chọn giá trị k và r phù hợp với cấu trúc lưu trữ; sử dụng hash và kiểm toán để duy trì toàn vẹn; quản lý lưu lượng sửa chữa vào thời điểm cao điểm; và khi xử lý ví hoặc tài sản quan trọng, luôn kết hợp erasure coding với mã hóa và sao lưu phân tán địa lý để đảm bảo cả khả dụng lẫn bảo mật.
Cả erasure coding và RAID đều là giải pháp dự phòng nhưng phục vụ các ngữ cảnh khác nhau. RAID chủ yếu dùng trong hệ thống ổ đĩa truyền thống bằng cách lưu nhiều bản sao trên các ổ; erasure coding chia nhỏ dữ liệu thành các phần toán học, cho phép phục hồi khi mất một phần với hiệu quả lưu trữ cao hơn. Trong blockchain, erasure coding đạt mức chịu lỗi tương đương replication nhưng tiết kiệm dung lượng hơn nhiều.
Thời gian phục hồi phụ thuộc tham số mã hóa và điều kiện mạng. Ví dụ, cấu hình (4,2) điển hình cần thu thập 4 phần từ mạng phân tán để tái tạo dữ liệu gốc—thường hoàn thành trong vài giây đến vài chục giây. Độ trễ cao hoặc node phản hồi chậm có thể kéo dài thời gian phục hồi.
Erasure coding làm tăng lưu lượng mạng do phải truy xuất nhiều phần mã hóa từ nhiều node để phục hồi—do đó tiêu thụ băng thông cao hơn so với lưu trữ bản sao đơn lẻ. Tuy nhiên, so với backup đa bản sao (truyền toàn bộ dữ liệu lặp lại nhiều lần), erasure coding sử dụng băng thông hiệu quả hơn. Việc chọn tham số cần cân đối với năng lực mạng khi thiết kế hệ thống.
Về lý thuyết có thể, nhưng thực tế khá khó. Erasure coding phụ thuộc vào mạng phân tán (nhiều node lưu trữ) và logic mã hóa/giải mã phức tạp—không phù hợp cho môi trường máy đơn lẻ. Dự án cá nhân thường dùng dịch vụ lưu trữ đám mây (đã tích hợp sẵn dự phòng) hoặc replication đơn giản. Nền tảng như Gate cung cấp dịch vụ lưu trữ erasure coding tích hợp mà cá nhân có thể hưởng lợi gián tiếp.
Các dự án khác nhau có thể dùng tham số hoặc chi tiết triển khai riêng; tuy nhiên nguyên lý cơ bản của erasure coding là phổ quát. Khác biệt chủ yếu nằm ở tham số (ví dụ (4,2) so với (6,3)) và độ phức tạp khi giao tiếp liên chuỗi. Đa số dự án hiện nay có triển khai độc lập, chưa có giao thức tiêu chuẩn—đây là lý do việc áp dụng chưa thực sự phổ biến.


