diff --git a/docs/requirements/ics10-requirements.md b/docs/requirements/ics10-requirements.md index 6afd9961bf8..66b6d5390cc 100644 --- a/docs/requirements/ics10-requirements.md +++ b/docs/requirements/ics10-requirements.md @@ -6,22 +6,58 @@ +Using IBC as a mean of commuincating between chains and ecosystems has proven to be useful within Cosmos. There is then value in extending +this feature into other ecosystems, bringing a battle tested protocol of trusted commuincation as an option to send assets and data. + +This is especially useful to protocols and companies whose business model is to improve cross-chain user interface, or to enable it when +it's not. The main use case for this is bridging assets between chains. There are multiple protocols and companies currently performing such +a service but none has yet been able to do it using IBC outside of the Cosmos ecosystem. + +A core piece for this to happen is to have a light client implementation of each ecosystem that has to be integrated, and uses a **new** consensus +algorithm. This module broadens the horizon of light client development to not be limited to using Golang only for chains wanting use IBC and `ibc-go`, +but instead expands the choice to any programming language and toolchain that is able to compile to wasm instead. + +Bridging assets, is likely the simplest for of interchain communication. Its value is confirmed on a daily basis, when considering the volumes that protocols +like [Axelar](https://dappradar.com/multichain/defi/axelar-network), Gravity, [Wormhole](https://dappradar.com/multichain/defi/wormhole/) and +[Layer0](TODO: add source for volume?) process. TODO: add sources for volume + + ## Problem +In order to export IBC outside of Tendermint based ecosystems, there is a need to introduce new light clients. This is a core need for +companies and protocols trying to bridge ecosystems such as Ethereum, NEAR, Polkadot, etc. as none of these uses Tendermint as their +consensus mechanism. Introducing a new light client implementation is not straightforwrd. The implementor needs to follow the light client's +specification, and will try to make use of all available tools to keep the development cost reasonable. + +Normally, most of available tools to implement a light client stem from the blockchain ecosystem this client belongs to. Say for example, if a developer +wants to implement the Polkadot finality gadget called GRANDPA, she will find that most of the tools are available on Substrate. Hence, being able to have a way +to let developers implement these light clients using the best and most accessible tools for the job is very beneficial, as it aavoids having to re implement +features that are otherwise available and likely heavily audited already. And since WASM is a well supported target that most programming languages support, +it becomes a proper solution to port the code for the `ibc-go` to interpret without requiring the entire light client being written using Go. + + ## Objectives +The objective of this module is to have allow two chains with heterogenous consensus algorithms being connected through light clients that are not necesarily written in Go, but +compiled to WASM instead. + + ## Scope - +| Features | Release | +|---------------------- |----------| +| Dispatch messages to a| v1 | +| light client written | | +| in wasm following the | | +| `ClientState` | | +| interface | | + # User requirements @@ -33,10 +69,15 @@ +The scope of this feature is to allow any implemention written in WASM to be feature compliant with the interface expressed +in [02-client ClientState interface](../../modules/core/exported/client.go). + ## Assumptions and dependencies +This feature expects the [02-client refactor completed](https://github.com/cosmos/ibc-go/milestone/16), which is enabled in `ibc-go v7`. + ## Features + +# Business requirements + + + + + +## Problem + + + +## Objectives + + + +## Scope + + + + + +# User requirements + +## Use cases + + + +# Functional requirements + + + +## Assumptions and dependencies + + + +## Features + + + +# External interface requirements + + + +# Non-functional requirements + + \ No newline at end of file