mukan-ibc/docs/requirements/localhost-requirements.md
Mukan Erkin Törük 6852832fe8
Some checks failed
CodeQL / Analyze (push) Waiting to run
Docker Build & Push Simapp (main) / docker-build (push) Waiting to run
golangci-lint / lint (push) Waiting to run
Tests / Code Coverage / build (amd64) (push) Waiting to run
Tests / Code Coverage / build (arm64) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[additional-args:-tags="test_e2e" name:e2e path:./e2e]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:08-wasm path:./modules/light-clients/08-wasm]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:ibc-go path:.]) (push) Waiting to run
Deploy to GitHub Pages / Deploy to GitHub Pages (push) Has been cancelled
Buf-Push / push (push) Has been cancelled
initial: sovereign Mukan Network fork
2026-05-11 03:18:28 +03:00

5.2 KiB

Business requirements

The localhost client provides a unified interface to interact with different applications on a single chain.

Problem

Currently applications, or smart contracts, on a single chain cannot communicate through a single interface. This means a user must interact with each application or smart contract directly which can be cumbersome, especially when a user wants to interact with many applications on one chain.

Objectives

To provide a single interface in line with IBC application layer semantics, that enables a user to interact with multiple different applications or smart contracts remotely on a given blockchain.

Scope

Features Release
To interface with applications or smart contracts on a blockchain through the IBC application layer v7.1.0
To use the localhost client without requiring third party relayer infrastructure N/A

User requirements

Use cases

Interacting with Smart Contracts

Many IBC connected blockchains utilise smart contracts, these could be written in rust, solidity or javascript depending on the smart contract platform being used. Through the localhost client, a user can interact with and call into smart contracts by sending ibc messages from the localhost client to the smart contract.

On Agoric, a planned use case is for managing delegations and staking with smart contracts on a given chain. MsgDelegate, MsgUndelegate, MsgBeginRedelegate messages would be sent using the localhost client to the staking module. The same interface could be used to manage staking cross chain, sending the same messages through IBC to an interchain account.

Interoperability Infrastructure

Polymer plans to leverage the localhost client with multiple connections as part of their architecture to connect chains not using Tendermint or the Cosmos SDK to IBC enabled chains. Polymer will act as a hub connecting multiple blockchains together.

Functional requirements

Assumptions and dependencies

  1. Chains utilising the localhost client must be using an ibc-go release in the v7 line.
  2. The channel behaviour of a localhost client will be as ICS 04 specifies.

Features

1 - Configuration

ID Description Verification Status Release
1.01 The localhost client shall have a client ID of the string 09-localhost. Localhost client is created with client ID 09-localhost. Verified v7.1.0
1.02 The localhost client shall have a sentinel connection ID of the string connection-localhost. Creation of sentinel connection with ID connection-localhost. Verified v7.1.0
1.03 Only 1 localhost connection is required Localhost connection handshakes are forbidden in Init and Try. Verified v7.1.0
1.04 When the localhost client is initialised the consensus state must be nil. Error is returned if consensus state is not nil. Verified v7.1.0
1.05 The localhost client can be added to a chain through an upgrade. Automatic migration handler configured in core IBC module to set the localhost ClientState and sentinel ConnectionEnd in state.. Verified v7.1.0
1.06 A chain can enable the localhost client by initialising the client in the genesis state. InitGenesis handler in 02-client and InitGenesis handler in 03-connection. Verified v7.1.0

2 - Operation

ID Description Verification Status Release
2.01 A user of the localhost client can send IBC messages to an application on the same chain. e2e test with transfer. Verified v7.1.0
2.02 A user can use the localhost client through the existing IBC application module interfaces. e2e test with transfer. Verified v7.1.0

External interface requirements

3 - CLI

ID Description Verification Status Release
3.01 Existing CLI interfaces used with IBC application modules shall be usable with the localhost client. Manual test Verified v7.1.0