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.
- 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
- pnpm add @neutron-org/neutronjs @cosmjs/stargate @cosmjs/cosmwasm-stargate
- cargo add neutron-sdk neutron-std cosmwasm-std cw-storage-plus
| Variable | Scope | Description |
|---|---|---|
| NEUTRON_RPC_URL | Client | Neutron Tendermint RPC endpoint (e.g., `https://rpc-kralum.neutron-1.neutron.org`). Required to instantiate clients. |
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.
- ⚑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.