linera-io/linera-protocol · error
Missing network description
Error message
Missing network description
What it means
On `linera wallet init --faucet <url>`, the CLI first reads the network description from the configured storage namespace (needed to build a client for the admin chain and sync the faucet's committee). If `storage.read_network_description()` returns `None` — the namespace holds no genesis/network description — the command bails with `Missing network description`.
Source
Thrown at linera-service/src/cli/main.rs:1876
println!("{}", description.id());
println!("{owner}");
info!(
"New chain requested and added in {} ms",
start_time.elapsed().as_millis()
);
}
Wallet(WalletCommand::Init {
faucet,
genesis_config_path,
..
}) => {
let (Some(faucet_url), None) = (faucet, genesis_config_path) else {
return Ok(());
};
let Some(network_description) = storage.read_network_description().await? else {
anyhow::bail!("Missing network description");
};
let context = options
.create_client_context(storage, wallet, keystore)
.await?;
let faucet = cli_wrappers::Faucet::new(faucet_url);
let committee = faucet.current_committee().await?;
let chain_client = context
.make_chain_client(network_description.admin_chain_id)
.await?;
chain_client
.synchronize_chain_state_from_committee(Arc::new(committee))
.await?;
context.update_wallet_from_client(&chain_client).await?;
}
Wallet(WalletCommand::FollowChain { chain_id, sync }) => {
let context = options
.create_client_context(storage, wallet, keystore)View on GitHub (pinned to 6c226ddcb3)
Solutions
- Point `--storage` (and `--wallet`) at the namespace created with the network — the one used by the original `--genesis` initialization or `linera net up`
- If the namespace is genuinely new, initialize from a genesis file instead: `linera wallet init --genesis <path/to/genesis.json>`
- Inspect the storage namespace (`linera wallet show`, or query the DB) to confirm whether the network description exists
Example fix
# before (fresh/empty namespace, faucet path needs the description) linera wallet init --faucet https://faucet.testnet.linera.net --storage scylladb:localhost:9042 --wallet wallet.json # after (seed the namespace from genesis first, then init via faucet) linera wallet init --genesis genesis.json --storage scylladb:localhost:9042 --wallet wallet.json
Defensive patterns
Strategy: validation
Validate before calling
// Check the namespace carries a network description before wallet init via faucet.
if storage.read_network_description().await?.is_none() {
anyhow::bail!(
"storage namespace '{}' has no network description; run wallet init --genesis first or point --storage at the network's namespace",
storage.namespace()
);
} Prevention
- Keep one storage namespace per network and record which namespace belongs to which net
- Prefer `--genesis` initialization for fresh namespaces; use `--faucet` init only against already-seeded storage
- After wiping a database, remember the wallet file alone is not enough — the network description lives in storage
When it happens
Trigger: Running `linera wallet init --faucet ...` with a `--storage` config whose namespace was never written a network description: a fresh namespace, one wiped or belonging to a different network, or simply the wrong storage path.
Common situations: Reusing a wallet after the database was reset; passing a `--storage` value that differs from the one used when the network was created; running wallet init against a brand-new namespace without supplying a genesis config.
Related errors
- cannot forget the default chain `{chain_id}`; switch to anot
- Not possible to work with memory
- Not possible to work with RocksDB
- When storage is not selected, the storage-service needs to b
- A Wasm runtime is required to load user applications. Please
AI-assisted analysis of linera-io/linera-protocol@6c226ddcb3 (2026-08-22).
Data as JSON: /api/errors/688dda942120513f.
Report an issue: GitHub.