Nolus Docs
Protocol

Architecture

How the chain, contracts, and external services connect.

Nolus runs on three layers: the chain (Go, Cosmos SDK + CometBFT), the contracts (Rust, CosmWasm) on top of it, and the off-chain services (price feeders, SDKs, frontends) that drive both.

Layers

  1. Chain layer - nolus-core (Go, Cosmos SDK + CometBFT). Custom modules include vesting, mint, and tax handlers.
  2. Contract layer - nolus-money-market (Rust, CosmWasm). The workspace splits into platform/ (network- and protocol-agnostic) and protocol/ (per-network/DEX). See the components table for a per-contract index.
  3. Off-chain services - the price feeder daemon, the nolus.js SDK, the in-page WebMCP and REST surfaces, and frontends like app.nolus.io.

Upgrades and the Admin contract

The Admin contract is the migration coordinator for the rest of the system. It holds the registry of every platform and per-protocol contract address and is the only place that can roll out a new code ID across them as a single atomic operation.

The contract is governance-driven, not key-controlled:

  • Upgrades arrive as SudoMsg::MigrateContracts (or ChangeDexAdmin, RegisterProtocol) messages, which CosmWasm sudo restricts to the chain itself - so they only land via on-chain governance proposals that pass.
  • A separate dex_admin address holds permission for operational registry edits (Instantiate, RegisterProtocol, DeregisterProtocol) but can never move user funds: the Admin contract is the registry, not a wallet. NLS lives in Treasury, LPN in LPP, lease assets in their Lease contract.

If you ever query Nolus for "what are the current contract addresses on chain X?", the Admin contract is the answer source.

Cross-chain interaction

Nolus connects to counterparty chains over IBC and uses Interchain Accounts (ICA) on the host chain to execute swaps as part of opening, repaying, and closing positions. The Lease contract on Nolus is the controller; the ICA on the host chain holds the funds during a swap and returns them via the established IBC channel. See IBC overview for the channel inventory and the packet-flow walkthrough.

On this page