{"record":{"id":"688dda942120513f","repo":"linera-io/linera-protocol","slug":"missing-network-description","errorCode":null,"errorMessage":"Missing network description","messagePattern":"Missing network description","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"linera-service/src/cli/main.rs","lineNumber":1876,"sourceCode":"                println!(\"{}\", description.id());\n                println!(\"{owner}\");\n\n                info!(\n                    \"New chain requested and added in {} ms\",\n                    start_time.elapsed().as_millis()\n                );\n            }\n\n            Wallet(WalletCommand::Init {\n                faucet,\n                genesis_config_path,\n                ..\n            }) => {\n                let (Some(faucet_url), None) = (faucet, genesis_config_path) else {\n                    return Ok(());\n                };\n                let Some(network_description) = storage.read_network_description().await? else {\n                    anyhow::bail!(\"Missing network description\");\n                };\n                let context = options\n                    .create_client_context(storage, wallet, keystore)\n                    .await?;\n                let faucet = cli_wrappers::Faucet::new(faucet_url);\n                let committee = faucet.current_committee().await?;\n                let chain_client = context\n                    .make_chain_client(network_description.admin_chain_id)\n                    .await?;\n                chain_client\n                    .synchronize_chain_state_from_committee(Arc::new(committee))\n                    .await?;\n                context.update_wallet_from_client(&chain_client).await?;\n            }\n\n            Wallet(WalletCommand::FollowChain { chain_id, sync }) => {\n                let context = options\n                    .create_client_context(storage, wallet, keystore)","sourceCodeStart":1858,"sourceCodeEnd":1894,"githubUrl":"https://github.com/linera-io/linera-protocol/blob/6c226ddcb332ef55118dc8d0aafbd093d5420899/linera-service/src/cli/main.rs#L1858-L1894","documentation":"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`.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"# before (fresh/empty namespace, faucet path needs the description)\nlinera wallet init --faucet https://faucet.testnet.linera.net --storage scylladb:localhost:9042 --wallet wallet.json\n\n# after (seed the namespace from genesis first, then init via faucet)\nlinera wallet init --genesis genesis.json --storage scylladb:localhost:9042 --wallet wallet.json","handlingStrategy":"validation","validationCode":"// Check the namespace carries a network description before wallet init via faucet.\nif storage.read_network_description().await?.is_none() {\n    anyhow::bail!(\n        \"storage namespace '{}' has no network description; run wallet init --genesis first or point --storage at the network's namespace\",\n        storage.namespace()\n    );\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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"],"tags":["wallet","storage","initialization","linera-cli"],"backgroundTag":"uninitialized-storage","analyzedSha":"6c226ddcb332ef55118dc8d0aafbd093d5420899","analyzedAt":"2026-08-22T22:49:09.787Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}