Skip to content
LogoLogo

Limits and expectations

Sizes

LimitValueType
Maximum blob size128 MiB minus 5 bytes (134,217,723 bytes)Protocol constant
Node JSON-RPC request body16 MiB, which leaves slightly less than 12 MiB of payloadcelestia-node setting
Minimum charged size262,144 bytes (256 KiB), paddedProtocol constant
Minimum upload size accepted by a server262,144 bytes padded by default. Each validator can raise it.Validator-local setting
Namespace29 bytes, version 0Protocol
Blob versionOnly 0 is supportedProtocol

If a validator raises its minimum upload size, it rejects smaller blobs. Your upload still succeeds as long as validators holding at least 2/3 of total voting power (rounded down) accept it.

Timing and quorum

LimitValueType
Quorum to settle a blobSignatures from validators holding at least 2/3 of total voting power (rounded down)Protocol
Timeout per validator request15 sClient setting (RPCTimeout)
Retries when a validator's storage is fullUp to 3 retries per validator. Each wait follows the server's hint, capped at 2 min.Client constant
Payment promise timestampNo more than 10 minutes ahead of chain timeProtocol constant
MsgPayForFibre per blockAt most 200Protocol constant
MsgPayForFibre per transactionExactly one, with no other messagesProtocol

Chain parameters

Governance can change these at any time, without a network upgrade. Read them when your client starts, and check them regularly.

celestia-appd query fibre params
# or REST: GET <rest_endpoint>/fibre/v1/params
ParameterDefaultWhat it means for you
shard_retention4hServers keep your shards until the later of promise creation plus this value, or promise expiry
payment_promise_timeout1hNormal settlement (MsgPayForFibre) must land before this much time has passed since promise creation. After it, anyone can charge the promise through the timeout path.
payment_promise_height_window1000 blocksNormal settlement must land within this many blocks of the promise height. The timeout path skips this check.
withdrawal_delay24hHow long a withdrawal waits before it is paid out
full_stake_storage_budget2 TiBSets each validator's storage limit: this value × its assigned rows / 4,096. Assigned rows grow with stake, within fixed bounds. A validator can turn the limit off. Full servers ask clients to retry later.

Mainnet Beta and Mocha both started Fibre with these defaults at the app version 10 upgrade.

What is and isn't guaranteed

Guaranteed by the protocolNot guaranteed
A settled blob carries signed storage attestations from validators holding at least 2/3 of total voting power (rounded down)Storage after shard_retention
Honest downloaders of one blob ID get identical bytesThat the content is what your app expects
You are charged only by settling a promise your key signed—
A promise can be settled only onceThat every validator accepts every upload