unionlabs/union · error · anyhow::Error
no ucs03 deployment for {chain_id}
Error message
no ucs03 deployment for {chain_id} What it means
Thrown by `u zkgm predict-wrapped-token` on the Deployment::IbcSolidity arm: the chain's deployment entry exists but no contract named `protocols/ucs03` is listed, so the zkgm contract address required to predict the wrapped (ibeuro/UCS03) token address is missing.
Source
Thrown at tools/u/src/zkgm/predict_wrapped_token.rs:211
if address.is_some() {
bail!("--address can only be used with `custom`");
}
match deployment {
Deployment::IbcSolidity { contracts, .. } => {
predict_wrapped_token_ibc_solidity(
rpc_url.unwrap_or_else(|| {
format!(
"https://rpc.{}.{}.chain.kitchen",
chain_id.id(),
chain_id.family(),
)
}),
(*contracts
.iter()
.find(|(_, deployment)| deployment.name == "protocols/ucs03")
.as_ref()
.context(anyhow!("no ucs03 deployment for {chain_id}"))?
.0)
.into(),
args,
)
.await
}
Deployment::IbcCosmwasm { contracts, .. } => {
predict_wrapped_token_ibc_cosmwasm(
rpc_url.unwrap_or_else(|| {
format!(
"https://rpc.{}.{}.chain.kitchen",
chain_id.id(),
chain_id.family(),
)
}),
contracts
.iter()
.find(|(_, deployment)| deployment.name == "protocols/ucs03")View on GitHub (pinned to 031785bb6d)
Solutions
- Run with custom endpoints/zkgm address instead of the registry-backed path, if the command's custom mode exposes them
- Verify the exact ucs04 chain id string
- Update the deployments data so the chain includes a `protocols/ucs03` contract entry
- Confirm the zkgm contract exists on-chain for that chain before predicting
Example fix
# before u zkgm predict-wrapped-token <chain-id> --channel-id channel-0 ... # after # pass the zkgm address explicitly via the custom flow once deployed: u zkgm predict-wrapped-token custom --zkgm-address 0x1234...abcd --ibc-interface ibc-solidity ...
Defensive patterns
Strategy: validation
Validate before calling
if !DEPLOYMENTS[&chain_id].contracts().iter().any(|(_, d)| d.name == "protocols/ucs03") {
anyhow::bail!("chain {chain_id} has no ucs03 deployment; pass the zkgm address via the custom flow");
} Prevention
- Validate deployment metadata before running predict commands in CI
- Record the zkgm contract address per chain in your own config so the custom flow is always available
When it happens
Trigger: Calling `predict-wrapped-token <evm-chain-id> ...` where DEPLOYMENTS[chain_id] is IbcSolidity but its `contracts` vec lacks a `protocols/ucs03` entry. Note this path also defaults the RPC to `https://rpc.<id>.<family>.chain.kitchen`, which only matters after the deployment lookup succeeds.
Common situations: Old deployments snapshot; chain that never had zkgm deployed; typo'd chain id that happens to match another known chain; mixed-registry state after a partial upgrade.
Related errors
- no ucs03 deployment for {chain_id}
- wasm-packet_send event not found
- config file must be specified
- plugin not found
- no database set in config, queue commands require the `pg-qu
AI-assisted analysis of unionlabs/union@031785bb6d (2026-08-16).
Data as JSON: /api/errors/3d9a84c345cb38e1.
Report an issue: GitHub.