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

  1. Point `--storage` (and `--wallet`) at the namespace created with the network — the one used by the original `--genesis` initialization or `linera net up`
  2. If the namespace is genuinely new, initialize from a genesis file instead: `linera wallet init --genesis <path/to/genesis.json>`
  3. 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

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


AI-assisted analysis of linera-io/linera-protocol@6c226ddcb3 (2026-08-22). Data as JSON: /api/errors/688dda942120513f. Report an issue: GitHub.