TRUE
ON-GRAPH.

Data sovereignty on the Hashgraph.

HCS-1 (Files) and HCS-5 (Hashinals) enable you to inscribe raw data directly into the immutable ledger of Hedera, forever.

PHILOSOPHY

Permanence.

Most NFTs are just receipts pointing to a URL on a centralized server or an IPFS hash that might disappear if not pinned.

HCS-1 Files utilize the high-throughput ordering of the Hedera Consensus Service. The data is etched into the immutable record stream, archived by Mirror Nodes, and secured by Block Nodes. It is a 'store once, serve forever' architecture.

Immutability

Once submitted to HCS, the message is finalized. It cannot be altered or deleted.

Accessibility

Data is retrievable via any Mirror Node using standard REST APIs. No special gateways required.

Provenance

Every chunk has a consensus timestamp. Prove exactly when a file was uploaded.

HCS-1 STANDARD

The File Pipeline.

HCS-1 solves the problem of storing large files on a high-throughput consensus service using a strict 3-stage pipeline.

01
RAW.BIN
ZSTD / BROTLI
CHUNKS

1. Compress

Input data is compressed using zstd or brotli. Reduces on-chain footprint by 30-50%.

compression.ts
zstd.compress(buffer, 10)Click to copy

2. Encode

The compressed blob is converted to a base64 string for safe JSON transport.

encoding.ts
buffer.toString('base64')Click to copy

3. Chunk

The string is sliced into 1024-char segments to bypass HCS message limits.

chunking.ts
chunks.map((c, i) => ({o:i, c}))Click to copy
SCHEMA

The Atom of Data.

Every HCS-1 message is a self-contained JSON object. Indexers aggregate these atoms to reconstruct the original file.

  • o

    Order Index

    The integer index of the chunk. Allows parallel uploading.

  • c

    Content

    The substring of the base64 encoded data.

  • m

    Topic Memo

    Contains the SHA-256 hash, algo, and encoding for validation.

// Chunk Sequence
{
  "o": 0,
  "c": "data:image/png;base64,iVBORw0K..."
}
{
  "o": 1,
  "c": "AgICAgICAgICAgICAgICAgICAg..."
}
{
  "o": 2,
  "c": "98234nkjsdf89234..."
}

Tokenizing Data.

A file on HCS is just data. A Hashinal is that data owned by a key. HCS-5 binds the Topic ID to a Hedera Token Service (HTS) serial number.

HCS-1 FILE
0.0.456789
HCS-5 BINDING
HTS TOKEN
#123
NFT Serial
hcs://1/0.0.456789NFT Metadata

The HRL

The token's metadata field uses the Hedera Resource Locator schema.

hcs://1/0.0.123456

First is First

Inscription numbers are assigned based on the consensus timestamp of the mint. The network serves as the clock.

LIVING ASSETS.

Static files are great for art, but games need state. HCS-6 introduces Mutable Pointers.

HCS-6 Token
ptr: 0.0.99
REGISTRY 0.0.99
LATEST MSGt_id: 0.0.555
HISTORYt_id: 0.0.444
HCS-1 Content
0.0.555
DEVELOPER TOOLS

Build with the SDK.

HCS-1: Upload File

upload.ts
import { HCS1 } from '@hashgraph/standards';Click to copy
const topicId = await HCS1.uploadFile(client, buffer, {Click to copy
memo: "My File",Click to copy
compression: "zstd"Click to copy
});Click to copy

HCS-5: Mint Hashinal

mint.ts
import { HCS5 } from '@hashgraph/standards';Click to copy
await HCS5.mint(client, {Click to copy
topicId: "0.0.12345",Click to copy
tokenName: "My Art",Click to copy
metadata: "hcs://1/0.0.12345"Click to copy
});Click to copy

Dynamic Possibilities.

Gaming

Weapon durability, character leveling, or skin changes. The NFT stays the same, the visuals update via HCS-6.

Real Estate

A property deed NFT. The HCS-6 registry tracks maintenance logs, tax payments, and renovations.

Identity

A profile picture NFT. Update your PFP by simply posting a message to your registry topic.

Ready to Inscribe?