[Router] Missing parts of ICS05 & ICS26 that deal with the Module management #519
Labels
A: breaking
Admin: breaking change that may impact operators
O: usability
Objective: aims to enhance user experience (UX) and streamline product usability
S: specs
Scope: related to IBC protocol specifications
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 throughTokenTransferValidationContext
, 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-specificget_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
bindPort
.bindPort
binds to an unallocated portExclusive 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 anIdentifier
and returns the store path under which the object-capability reference or owner module identifier (in our caseModuleId
) 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
The text was updated successfully, but these errors were encountered: