Skip to content

[Router] Missing parts of ICS05 & ICS26 that deal with the Module management #519

Open
@Farhad-Shabani

Description

@Farhad-Shabani

Summary

Missing parts of ICS05 & ICS26 that deal with the Module management

Problem Statement

We currently only offer one interface for host chains to inspect the port, which is the get_port method available through TokenTransferValidationContext, and missed any other portKeeper/Manager interfaces that should deal with getting/setting/binding/releasing ports that are done by taking the PortPath. (which isn't in use anywhere at the moment)

It seems that relocating the ports’ interface under the core context (better to say under the Router trait as our module manager) would enable any application to access this facility without the need for defining an additional app-specific get_port separately.

In addition, we are also missing the following parts of the spec that enforces module management:

Missed Specs

  • Port Allocation: The IBC handler MUST implement bindPortbindPort binds to an unallocated port

  • Exclusive Binding: Once a module has bound to a port, no other modules can use that port until the module releases it

  • Storing Ports: portPath takes an Identifier and returns the store path under which the object-capability reference or owner module identifier (in our case ModuleId) associated with a port should be stored.

  • Port Management: A module can, on its option, release a port or transfer it to another module

  • Port naming: we conventionally hardcode certain ports such as "transfer". Though this can be used as the default/reference value, the specification does not make any assumptions about exact naming and it can be customized by end users. So forth, the router should be able to allocate a custom-named port to a transfer module

Metadata

Metadata

Labels

A: breakingAdmin: breaking change that may impact operatorsO: usabilityObjective: aims to enhance user experience (UX) and streamline product usabilityS: specsScope: related to IBC protocol specifications

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions