Skip to main content

Store a file

Storing a file on Fenryx creates an on-chain manifest and pays a storage fee. Validators with the storage role then earn PoU rewards as they serve and prove the file's shards.

1. Chunk & address

The wallet (or the SDK's file.upload() helper) splits the file into shards and computes a Blake3 CID.

2. Pin shards

The shards are uploaded to the assigned storage validators over the gossip layer.

3. Submit manifest

import { FenryxClient } from '@fenryxlabs/fenryx-sdk';
const c = new FenryxClient('https://v2.rpc.fenryx.io');

await c.postRaw('file/manifest/submit', {
cid: 'blake3:...',
size: 1048576,
shards: 16,
replicas: 3,
ttl_blocks: 432000,
fee_afrx: '1000000000',
});

4. Watch it light up

curl https://v2.rpc.fenryx.io/file/manifests | jq '.[] | select(.cid == "blake3:...")'
curl https://v2.rpc.fenryx.io/pou/records | jq

5. Renew or release

A manifest expires after ttl_blocks. To keep the file alive, submit a new manifest with the same CID before expiry (the shards are already in place, so the fee covers only the new TTL).

See Modules · Storage for the full PoU mechanics.