Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration

What can be configured, where, and the devnet’s values. Command-line flags are in the command-line reference.

Environment variables

VariableUsed byDefaultMeaning
SION_NODEevery command (--node)http://127.0.0.1:8730The node’s HTTP API
SION_HOMEwallet commands~/.sion ($HOME/.sion)Named wallets’ seeds live in $SION_HOME/wallets/<name>.seed
SION_CHAINsion verify, sion receipt, sion x402 serve, sion x402 fetch (--chain)noneThe chain identity you trust. Without it, the node vouches for itself

Set SION_CHAIN once per shell to pin the devnet you use:

export SION_CHAIN=<identity printed by sion devnet>

Devnet (DevnetConfig)

sion devnet builds a sion_node::DevnetConfig from its flags. Fields without a flag keep their default; Rust code that starts a devnet (sion_node::Devnet::start) can set them all.

FieldDefaultFlagMeaning
chain_idsion-devnet-1noneThe chain’s name; devnet keys derive from it
validators4--validatorsValidators in the genesis active set
standby0--standbyValidators that run from the start without a seat and join by staking
validator_stake100,000 USDnoneEach genesis validator’s stake
min_stake10,000 USDnoneThe least stake a validator may register with
epoch_length0--epoch-lengthPulses per epoch; 0 means one epoch that never ends
unbonding20--unbondingPulses between leaving the active set and withdrawing stake
shards2--shardsLane shards
shard_seats4--seatsSeats per lane committee, capped at the active set’s size
rounds_per_pulse4--rounds-per-pulseConsensus rounds per Pulse
batch_interval_ms25noneHow often validators sign a batch of lane approvals
signaturesdual post-quantum--insecure-fast-signaturesValidator signatures; the flag selects an insecure simulation MAC
data_dirnone (memory only)--data-dirWhere validators keep logs, snapshots and epoch proofs
snapshot_every50nonePulses between snapshots
fsyncfalsenoneWhether to fsync every log record
demo_accountsalice, bob, carol--accountsNamed devnet wallets funded at genesis
demo_usd100,000noneUSD each named account starts with, as four equal coins
accountsnonenoneExtra genesis accounts
coresee belownoneConsensus parameters
prove_chunk16--chunk, --no-proveTransactions per proof chunk; --no-prove disables proving
history256nonePulses of outputs, data and traces kept in memory
forced_window8--forced-windowPulses a shard has to execute a forced intent

The genesis also funds a faucet account with 1,000,000,000 USD.

Chain (ChainConfig)

Part of the genesis; its digest is in every world commitment, and transaction signatures cover it.

FieldDevnet valueMeaning
chain_idsion-devnet-1The chain’s name
shard_count2Lane shards
base_fee0.001 USDFee per transaction
fee_per_kib0.0001 USDFee per started KiB of the body (signatures excluded)
faucetthe faucet accountWho may send Faucet transactions (none on a production chain)
max_claim_window1,000,000 PulsesThe longest validity a claim may ask for
max_formula_size256The most nodes in a claim’s formula, before claim references are unfolded
max_payload_bytes64 KiBThe largest claim payload
challenger_share_permille500The successful challenger’s share of a released slashing pool, in thousandths; the rest goes to the treasury

Validator set (ValidatorParams)

Fixed at genesis, held in the validator set object. See Validators, staking and epochs.

FieldDevnet valueMeaning
stake_assetUSDThe asset validators stake
epoch_length--epoch-length, or 2⁶³ − 1 for 0Pulses per epoch
min_stake10,000 USDThe least stake to register
unbonding--unbonding (20)Pulses from exit to withdrawal
seats--seats (4)Seats per lane committee
max_active100The most validators in the active set
reward_permille700Share of each epoch’s fees paid to that epoch’s validators
reporter_permille50Share of a slashed stake paid to the reporter

Forced inclusion (ForcedParams)

FieldDevnet valueMeaning
window--forced-window (8)Pulses a shard has to execute a posted intent
max_pending4,096The most obligations pending at once; later intents are dismissed

Consensus (CoreConfig)

FieldDevnet valueMeaning
leader_timeout_ms400How long to wait for an anchor or its votes before advancing
resend_interval_ms600How often to re-broadcast and re-request missing parents
gc_depth50Rounds of history kept below the last committed anchor
max_items_per_header2,000Payload items per header
max_payload_bytes512 KiBPayload bytes per header
max_rounds_ahead64Headers for rounds further ahead are ignored
max_pending_headers4,096Headers waiting for parents
repropose_after_rounds8Re-propose an item not delivered after this many rounds
leader_scheduleRoundRobinAnchors in committee order

Fixed limits

LimitValueWhere
Inputs per transaction1 to 256sion_exec::tx::MAX_INPUTS
Allotments per bounded total256sion_exec::escrow::MAX_ALLOTMENTS
Orders per market batch1,024sion_exec::market::MAX_BATCH_ORDERS
Formula nesting at issuance32sion_assurance::registry::MAX_FORMULA_DEPTH
Formula nesting when decoding64sion_assurance::formula::MAX_DECODE_DEPTH
Chain of claim references16sion_assurance::registry::MAX_CLAIM_DEPTH
Charters read by a chain check16specification §5.13
Transaction validity set by the CLI20 Pulseswallet default
Lane requests parked for a lagging validatorup to 4 Pulseslane validator
Beacon hash chain per devnet validator2¹⁷ Pulsession_node::devnet::BEACON_CHAIN_LENGTH
Devnet faucet grant through the API1 micro-unit to 1,000,000 unitsPOST /v1/faucet
Faucet grant in a transactionat most 1,000,000,000 unitssion_exec::tx::MAX_GRANT