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.