# Juno chain reference Endpoints, chain-ids, denoms, gas, IBC channels. Grep this file for the value you need; you almost never need to read it top-to-bottom. **Mainnet `juno-1` is the canonical operating environment.** This file leads with mainnet; testnet is the small section near the end for cases where you explicitly need it. Juno is an experimental chain — operating directly on mainnet is the norm, not a graduation step. The Cosmos `chain-registry` repo (https://github.com/cosmos/chain-registry/tree/master/juno) is the canonical upstream for mainnet endpoints + recommended version. Re-check it before any high-stakes operation — endpoints rotate, gas prices change via governance. ## Mainnet — juno-1 (default) | Property | Value | |---|---| | Chain ID | `juno-1` | | Native denom | `ujuno` (1 JUNO = 1,000,000 ujuno) | | Bonded denom | `ujuno` | | HD path | `m/44'/118'/0'/0/0` (default Cosmos path) | | Bech32 prefix | `juno` | | Block time | ~5–6s | | Recommended `junod` | v29.x (verify via chain-registry `recommended_version`) | | Min gas price | `0.075ujuno` (verify with `feemarket params` — Juno uses x/feemarket on recent versions) | | Gas adjustment | `1.4` is comfortable for bank/wasm-exec; `1.5` for wasm-store or complex multi-msg txs | ### Mainnet endpoints Pick one provider and stick with it for a session; switching mid-sequence triggers account-sequence reordering. | Type | URL | Provider | |---|---|---| | RPC | `https://juno-rpc.publicnode.com:443` | PublicNode | | RPC | `https://rpc-juno.itastakers.com` | Itastakers | | RPC | `https://juno-rpc.polkachu.com` | Polkachu | | REST | `https://juno-rest.publicnode.com` | PublicNode | | REST | `https://api-juno.itastakers.com` | Itastakers | | REST | `https://juno-api.polkachu.com` | Polkachu | | gRPC | `juno-grpc.polkachu.com:12690` | Polkachu | Quick liveness check: ```bash curl -sS https://juno-rpc.publicnode.com:443/status | jq -r '.result.node_info.network, .result.sync_info.latest_block_height' # expect: "juno-1" and a recent block height ``` ### Explorers (mainnet) - `https://www.mintscan.io/juno` — mature, broad coverage - `https://ezstaking.tools/juno` — staking-focused - `https://ping.pub/juno` — lightweight, multi-chain For tx URLs: `https://www.mintscan.io/juno/tx/`. ### Mainnet IBC channels (outbound from juno-1) Channels rotate occasionally — verify with `junod query ibc channel channels --node $RPC` before relying on these. As of late-2025/2026 the long-lived channels are: | Destination | Channel ID | Notes | |---|---|---| | Cosmos Hub | `channel-1` | The original IBC channel | | Osmosis | `channel-0` | Primary swap-routing path | | Neutron | `channel-301` | DAO DAO cross-chain via Polytone uses this | | Stargaze | `channel-20` | NFT routing | | Axelar | `channel-71` | Axelar-bridged assets (USDC.axl etc.) | | Noble | `channel-272` | Native USDC | For Polytone/DAO DAO interchain governance, see `references/dao-dao.md` — Polytone pins channels separately at the contract layer. ### Common IBC denoms on juno-1 | Asset | Path | IBC denom (sha256 prefix shortened, look up full hash) | |---|---|---| | ATOM (Hub) | `transfer/channel-1/uatom` | `ibc/C4CFF46FD6...` | | OSMO | `transfer/channel-0/uosmo` | `ibc/ED07A3391A...` | | USDC (Noble native) | `transfer/channel-272/uusdc` | `ibc/EAC38D5587...` | Look up the full hash: ```bash junod query ibc-transfer denom-hash --node $RPC # e.g. junod query ibc-transfer denom-hash 'transfer/channel-1/uatom' ``` ## Cosmos-SDK module map (high-level) Juno is a stock Cosmos SDK chain plus `wasmd`. The modules you'll touch most: | Module | What it does | Common queries | |---|---|---| | `bank` | Balances, transfers | `balances`, `total`, `denom-metadata` | | `staking` | Validators, delegations, unbonding | `validators`, `delegations`, `unbonding-delegations` | | `gov` | Chain governance (separate from DAO DAO!) | `proposals`, `vote`, `tally` | | `wasm` | CosmWasm contracts | `list-code`, `contract-state`, `contract-info` | | `ibc` | IBC connections + channels | `channels`, `connections`, `denom-traces` | | `feemarket` | Dynamic min gas price | `params`, `gas-price` | | `distribution` | Staking rewards | `rewards`, `validator-commission` | `gov` (chain-level governance) is *not* the same as DAO DAO. Chain-gov upgrades the chain; DAO DAO is an on-chain smart-contract DAO platform. See `references/dao-dao.md` for the latter. ## Gas-price sanity If `--gas-prices 0.075ujuno` returns an "insufficient fees" error on mainnet, the network minimum may have changed: ```bash junod query feemarket params --node $RPC -o json | jq # look at .params.min_base_gas_price and .params.fee_denom ``` If the chain has migrated off x/feemarket back to globalfee or static min-fees, the query path is different — try `globalfee params` or check the chain-registry `fees.fee_tokens` entry. ## Re-verification protocol (mainnet) Before any high-stakes mainnet operation: 1. Check chain-registry recommended_version matches your `junod version`. 2. Confirm RPC `network` field matches `juno-1`. 3. Confirm `feemarket params` (or equivalent) hasn't moved. 4. If using IBC channel IDs, re-query `ibc channel channels` — channels can be upgraded. For routine read-only or low-value sign operations, the defaults above are stable on a monthly cadence. ## Cross-chain bech32 detail The same private key derives the same `juno1...` address on every Juno chain (mainnet and any testnet). A testnet keyring can sign mainnet txs and vice versa — the `--chain-id` flag is the only barrier preventing an accidental cross-chain broadcast. Keep it explicit on every signing tx. --- ## Testnet — uni-7 (alternative; use only when explicitly needed) Use uni-7 when: - You need a permissionless wasm upload (mainnet `wasm store` is permissioned by default; check `wasm params` to see if it's been opened up). - A change is genuinely catastrophic if it goes wrong on the live chain (rare). - You're verifying a deploy script's mechanics end-to-end before touching real value (and even then, sub-DAO + VetoConfig usually bounds blast radius better than testnet-first does). Otherwise: stay on mainnet. | Property | Value | |---|---| | Chain ID | `uni-7` | | Native denom | `ujunox` (testnet JUNO) | | Test USDC denom | `usdcx` (faucet provides this too for IBC USDC flows) | | HD path | `m/44'/118'/0'/0/0` | | Bech32 prefix | `juno` (same — addresses are identical between mainnet and uni-7 for the same key) | | Recommended `junod` | v27.0.0 | ### Testnet endpoints | Type | URL | Provider | |---|---|---| | RPC | `https://juno-testnet-rpc.polkachu.com` | Polkachu | | RPC | `https://rpc-uni.junonetwork.io` | Juno Network | | REST | `https://juno-testnet-api.polkachu.com` | Polkachu | | REST | `https://lcd-uni.junonetwork.io` | Juno Network | ### Faucet (uni-7) Check the uni-7 README in the `testnets` repo (https://github.com/CosmosContracts/testnets) or the Juno discord for the current faucet URL — faucets rotate more often than RPCs.