← Protocols
Neutron
01Description

Neutron is a permissionless CosmWasm smart-contract platform secured by Cosmos Hub via Interchain Security (Replicated Security). It provides first-class Interchain Queries (ICQ) and Interchain Transactions (ICA) modules so contracts can read and act on remote-chain state from a single Neutron transaction — turning Neutron into the cross-chain execution hub of the Cosmos ecosystem.

02Best for
  • 01permissionless CosmWasm dApps with cross-chain reach
  • 02contracts that read remote chain state via Interchain Queries
  • 03cross-chain DeFi using Interchain Accounts from CosmWasm
  • 04shared-security smart contracts (ICS from Cosmos Hub)
  • 05deploying instantly without governance proposal
03Install
  • pnpm add @neutron-org/neutronjs @cosmjs/stargate @cosmjs/cosmwasm-stargate
  • cargo add neutron-sdk neutron-std cosmwasm-std cw-storage-plus
04Environment variables
VariableScopeDescription
NEUTRON_RPC_URLClientNeutron Tendermint RPC endpoint (e.g., `https://rpc-kralum.neutron-1.neutron.org`). Required to instantiate clients.
05Prompt snippet
For client integration use `@neutron-org/neutronjs`: query with `neutron.ClientFactory.createRPCQueryClient({ rpcEndpoint })` and instantiate/execute CosmWasm contracts via `SigningCosmWasmClient.connectWithSigner(rpcEndpoint, signer, { gasPrice: GasPrice.fromString('0.0053untrn') })`. To call remote chains from inside a CosmWasm contract, use the Rust `neutron-sdk`: `NeutronMsg::RegisterInterchainAccount { connection_id, interchain_account_id }` registers an ICA on a remote chain, and `NeutronMsg::SubmitTx { connection_id, interchain_account_id, msgs, memo, timeout, fee }` executes remote messages. For reading remote state, use `NeutronMsg::RegisterInterchainQuery` (KV or TX) and handle results in your contract's `sudo` entry-point. Pay relayer fees up-front via `IbcFee { recv_fee, ack_fee, timeout_fee }` denominated in `untrn` — without fees, packets stall.
06Gotchas
  • ICA messages are NOT atomic with the local Neutron tx — `SubmitTx` enqueues an IBC packet that lands later. Your contract must handle async results in `sudo_response`/`sudo_error`/`sudo_timeout` callbacks; assuming sync behavior is the most common bug.
  • Interchain Queries cost a refundable deposit AND ongoing relayer fees — register only what you need, and remember to `RemoveInterchainQuery` to recover the deposit when done.
  • IBC channel maintenance: ICA and ICQ ride on dedicated IBC channels with 14-day trusting periods. If Neutron <-> remote chain client expires (e.g., after a stalled chain), all your ICA/ICQ flows freeze until governance unfreezes the client.
  • CosmWasm version compatibility: Neutron tracks specific CosmWasm versions per chain upgrade (e.g., 1.5, 2.0, 2.1). Contracts compiled against a newer `cosmwasm-std` than the chain supports will fail at instantiate. Pin to the version listed in `docs.neutron.org/developers/sdk` for the current chain version.
  • Chain upgrades: Neutron is upgraded via Cosmos Hub governance (it inherits ICS validator set). Coordinated upgrades have hard cutovers — schedule contract migrations and test on `pion-1` testnet before mainnet.
  • Gas token is `untrn` (1 NTRN = 1_000_000 untrn). Some operations also require `uatom` for ICS — keep both funded.
  • Slashing: Neutron does not have its own validator set; it inherits Cosmos Hub validators. Hub slashing events directly affect Neutron block production. There is no separate stake; ICA fees are paid in NTRN.
  • Relayer fee griefing: if you set `IbcFee` too low, no relayer will pick up your packet and it will time out, refunding only the timeout fee. Quote fees from a current relayer market (e.g., Hermes/Go-Relayer ops on the channel) at runtime.
07Alternatives