IPFS & Content Addressing: Hệ Thống Lưu Trữ Phi Tập Trung Không Bị Xóa Mất

IPFS & Content Addressing: Hệ Thống Lưu Trữ Phi Tập Trung Không Bị Xóa Mất

IPFS (InterPlanetary File System) là giao thức và mạng peer-to-peer dùng content addressing thay vì location addressing. Khi bạn yêu cầu file trên HTTP, server trả về nội dung tại URL — nếu server offline, file mất. IPFS yêu cầu nội dung qua CID (Content Identifier), tìm peer nào có CID đó và tải về. CID là hash SHA-256 của nội dung, nên cùng nội dung luôn cùng CID — bất biến, không thể sửa đổi, không thể xóa.

3D render of blockchain network cubes connected by cyan lines

Content Addressing vs Location Addressing

HTTP dùng location addressing: https://server.com/path/file.txt. IPFS dùng content addressing: ipfs://QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco. CID là base32/ base58 encoded multihash (SHA-256 + codec). Ví dụ: QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco = SHA-256 của chuỗi “hello world” với codec dag-pb.

Ưu điểm:

  • Deduplication tự động: cùng nội dung → cùng CID → lưu 1 lần trên mạng
  • Tìm kiếm nhanh: DHT (Distributed Hash Table) ánh xạ CID → peer address
  • Verifiable: CID xác minh tính toàn vẹn — thay đổi 1 bit thì CID khác hoàn toàn

Kiến Trúc IPFS: Merkle DAG & IPLD

IPFS tổ chức dữ liệu dưới dạng Merkle DAG (Directed Acyclic Graph). Mỗi node là một block dữ liệu, được hash (CID). Các block lớn được chia nhỏ, mỗi block có CID riêng. Cấu trúc này cho phép:

  1. Chunking: file lớn → các block 256KB, dùng rolling hash (Rabin fingerprinting) để chia tách nội dung tốt nhất
  2. DAG linking: block cha trỏ đến CID các block con — tạo cây Merkle
  3. UnixFS: layer trừu tượng hóa file/directory lên trên Merkle DAG

IPLD (InterPlanetary Linked Data) mở rộng Merkle DAG cho bất kỳ cấu trúc dữ liệu nào — từ JSON, CBOR, đến blockchain state. Ethereum, Filecoin, Polkadot đều dùng IPLD để index dữ liệu.

Bitcoin coin with circuitry patterns on blurred trading chart background

Gateway & Truy Cập IPFS

Để truy cập IPFS từ trình duyệt (HTTP), dùng gateway công khai:

  • https://ipfs.io/ipfs/
  • https://cloudflare-ipfs.com/ipfs/
  • https://dweb.link/ipfs/

Gateway sẽ tìm peer có CID, tải về, cache và trả về HTTP. Gateways hiện đại hỗ trợ Path GatewaySubdomain Gateway (CID dưới subdomain).

Dùng IPFS trong ứng dụng

Thư viện phổ biến: js-ipfs (browser/Node), go-ipfs (CLI/daemon), Kubo (go-ipfs mới). Cài đặt Kubo, chạy ipfs daemon, API chạy tại localhost:5001.

# Add file
ipfs add photo.jpg
# Output: QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco

# Get file
ipfs get QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco

# Pin để giữ vĩnh viễn
ipfs pin add QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco

Pinning & Persistence

IPFS không tự lưu trữ vĩnh viễn — node chỉ cache khi bạn request. Để file luôn có sẵn, cần pinning. Các dịch vụ pinning chuyên nghiệp:

Filecoin là layer động lực kinh tế cho IPFS — miner được trả FIL để lưu trữ dữ liệu dài hạn (storage deals). IPFS + Filecoin = lưu trữ phi tập trung có động lực kinh tế.

IPNS — Tên Miền Phi Tập Trung

IPNS (InterPlanetary Naming System) cho phép đưa tên có thể thay đổi trỏ đến CID mới. CID là bất biến — cùng nội dung luôn cùng CID. IPNS dùng public key (base36) làm tên, trỏ đến CID mới nhất. Ví dụ: /ipns/QmSoLSafmPCkSc3Cdxjf1MmVJPLm9gX6ojShNA1mJYNB2Y. Khi cập nhật content, bạn publish IPNS record mới trỏ đến CID mới.

Tuy nhiên, IPNS có nhược điểm: thời gian phản hồi chậm (do phải propagate qua toàn mạng DHT), và record hết hạn sau 12 giờ. DNSLink là giải pháp thay thế: dùng DNS _dnslink TXT record để trỏ tên miền về CID IPFS.

Use Case Thực Tế

NFT metadata: metadata JSON + hình ảnh upload lên IPFS, CID ghi trong smart contract. Không server nào có thể xóa hoặc sửa metadata sau khi mint. Đây là lý do tại sao ERC-721ERC-1155 tokens thường lưu metadata trên IPFS.

Website phi tập trung: host static site trên IPFS, trỏ domain qua DNSLink (_dnslink TXT record). Ví dụ: dnslink=/ipns/k51qzi5uqu5d.... Cập nhật site = publish IPNS mới.

Dữ liệu khoa học/backup: tập dữ liệu lớn (genomics, climate) chia sẻ qua IPFS — researcher nào cũng truy cập được mà không cần server trung tâm. Các dự án như Open Problems dùng IPFS để phân phối dataset machine learning.

Nội dung web bền vững: khi server gốc ngừng hoạt động, IPFS giữ nguyên nội dung thông qua các peer khác nhau. Dự án Archive.org đang thử nghiệm lưu trữ bản snapshot trên IPFS để nội dung không bao giờ bị mất.

IPFS thay đổi tư duy: dữ liệu không gắn liền với server, mà gắn liền với bản thân nội dung. Khi web chuyển sang Web3, content addressing sẽ là nền tảng cho việc lưu trữ, chia sẻ và xác minh dữ liệu không thể kiểm duyệt.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Ví MPC Multi-Party Computation: Bảo Mật Crypto Không Private Key

Ví MPC là gì? Ví MPC (Multi-Party Computation) là loại ví tiền mã hóa không lưu trữ private key đầy đủ trên một thiết bị duy nhất. Thay vào đó,…

Xem thêm

Polymarket — Thị Trường Dự Đoán Phi Trung Tâm Lớn Nhất Thế Giới

Polymarket — Thị Trường Dự Đoán Phi Trung Tâm Lớng Nhất Thế Giới Polymarket là thị trường dự đoán (prediction market) dựa trên blockchain, cho phép người dùng đặt cược…

Xem thêm

EigenLayer Restaking: Cơ Chế Staking Đa Tầng Tăng Lợi Nhuận Cho ETH

EigenLayer Restaking: Kỹ Thuật Staking Đa Tầng Cho ETH EigenLayer là một middleware trên Ethereum cho phép người dùng stake ETH “restaking” — tức là sử dụng lại token đã…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất