linera-io/linera-protocol · error · ChainClientError

The chain client isn't owner on chain {0}

Error message

The chain client isn't owner on chain {0}

What it means

Error "The chain client isn't owner on chain {0}" thrown in linera-io/linera-protocol.

Source

Thrown at linera-core/src/client/chain_client/mod.rs:827

    ///
    /// Returns the chain info if the owner can propose on this chain (either because they are
    /// an owner, or because `open_multi_leader_rounds` is enabled).
    #[instrument(level = "trace")]
    pub async fn prepare_for_owner(&self, owner: AccountOwner) -> Result<Box<ChainInfo>, Error> {
        ensure!(
            self.has_key_for(&owner).await?,
            Error::CannotFindKeyForChain(self.chain_id)
        );
        // Ensure we have the chain description blob.
        self.client
            .get_chain_description_blob(self.chain_id)
            .await?;

        // Get chain info.
        let info = self.chain_info().await?;

        // Validate that the owner can propose on this chain.
        ensure!(
            info.manager
                .ownership
                .can_propose_in_multi_leader_round(&owner),
            Error::NotAnOwner(self.chain_id)
        );

        Ok(info)
    }

    /// Prepares the chain for the next operation, i.e. makes sure we have synchronized it up to
    /// its current height.
    #[instrument(level = "trace")]
    pub async fn prepare_chain(&self) -> Result<Box<ChainInfo>, Error> {
        #[cfg(with_metrics)]
        let _latency = super::metrics::PREPARE_CHAIN_LATENCY.measure_latency();

        let mut info = self.synchronize_to_known_height().await?;

View on GitHub (pinned to 6c226ddcb3)

Solutions

  1. Ensure the client owns (or co-owns) chain {0}: use `linera open-chain` with the appropriate owner, or switch to a wallet that owns the chain.
  2. If the operation requires ownership, delegate or transfer ownership first; otherwise use a read-only variant of the operation.
  3. Verify you are using the intended wallet/default chain (`linera wallet show`, `linera set-default`).

When it happens

Trigger: An owner-only operation is requested on a chain where the client's identity is not an owner.

Common situations: Attempting to propose a block or execute an owner-gated command with a wallet that holds no ownership of the chain.


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