Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type RedundantRelayDecorator ¶
type RedundantRelayDecorator struct {
// contains filtered or unexported fields
}
func NewRedundantRelayDecorator ¶
func NewRedundantRelayDecorator(k *keeper.Keeper) RedundantRelayDecorator
func (RedundantRelayDecorator) AnteHandle ¶
func (rrd RedundantRelayDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error)
RedundantRelayDecorator returns an error if a multiMsg tx only contains packet messages (Recv, Ack, Timeout) and additional update messages and all packet messages are redundant. If the transaction is just a single UpdateClient message, or the multimsg transaction contains some other message type, then the antedecorator returns no error and continues processing to ensure these transactions are included. This will ensure that relayers do not waste fees on multiMsg transactions when another relayer has already submitted all packets, by rejecting the tx at the mempool layer.
Click to show internal directories.
Click to hide internal directories.