cosmos / cosmos/ibc

ICS4: Receive, Acknowledge, and Timeout Packet should be structured to indicate already relayed messages

Open
#574 4 comments 2 reactions 0 assignees View on GitHub
implementation tao
Dominant language
Go
Stars
1k
Forks
455
Avg merge
4d 5h
Merged PRs (30d)
29

Description

Currently, if N relayers relay on the same channel end, N-1 relayers will likely waste fees per packet relayed. This can be even worse if relayers attempt to retry relay attempt. Then it is N-1 * avgRetryAttempts wasted fees per packet

I am planning on adjusting the ibc-go code to indicate well known error codes for already relayed packets. This can allow retry attempts to be dropped. In the SDK, it may eventually be possible to use this mechanism to drop already relayed messages from the mempool

I'd be great if the spec could structure the receive, acknowledge, timeout packet checks in the same way to indicate the exact point at which a packet can be deemed as already relayed.

For acknowledge packet, this might be the place where the next send sequence > packet.sequence && packet commitment doesn't exist

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the ICS4 receive, acknowledge, and timeout packet checks, then review how the planned ibc-go and SDK handling would use structured results. Define the exact point at which each packet can be identified as already relayed and what well-known error information should represent it; completion requires the spec to document those checks consistently.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
blockchain, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.