Skip to content

Commit

Permalink
feat: implement registered payee fee distribution (cosmos#1526)
Browse files Browse the repository at this point in the history
* adding distribution logic with new registered payees

* updating ack test cases

* removing commented out test

* adding additional testcase to TestOnAcknowledgementPacket

* cleaning up distribution logic and adapting tests

* updating timeout test cases

* updating timeout logic and adding application callback failure test cases

* Apply suggestions from code review

Co-authored-by: Charly <charly@interchain.berlin>

* Apply suggestions from code review

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* Update modules/apps/29-fee/ibc_middleware_test.go

* adding missing comma from suggested testcases

Co-authored-by: Cian Hatton <cian@interchain.io>
Co-authored-by: Charly <charly@interchain.berlin>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
  • Loading branch information
4 people committed Jun 17, 2022
1 parent 1be4519 commit 9680cb9
Show file tree
Hide file tree
Showing 2 changed files with 302 additions and 199 deletions.
36 changes: 34 additions & 2 deletions modules/apps/29-fee/ibc_middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,10 +267,26 @@ func (im IBCMiddleware) OnAcknowledgementPacket(

packetID := channeltypes.NewPacketId(packet.SourcePort, packet.SourceChannel, packet.Sequence)
feesInEscrow, found := im.keeper.GetFeesInEscrow(ctx, packetID)
if found {
if !found {
// call underlying callback
return im.app.OnAcknowledgementPacket(ctx, packet, ack.AppAcknowledgement, relayer)
}

payee, found := im.keeper.GetPayeeAddress(ctx, relayer.String(), packet.SourceChannel)
if !found {
im.keeper.DistributePacketFeesOnAcknowledgement(ctx, ack.ForwardRelayerAddress, relayer, feesInEscrow.PacketFees, packetID)

// call underlying callback
return im.app.OnAcknowledgementPacket(ctx, packet, ack.AppAcknowledgement, relayer)
}

payeeAddr, err := sdk.AccAddressFromBech32(payee)
if err != nil {
return sdkerrors.Wrapf(err, "failed to create sdk.Address from payee: %s", payee)
}

im.keeper.DistributePacketFeesOnAcknowledgement(ctx, ack.ForwardRelayerAddress, payeeAddr, feesInEscrow.PacketFees, packetID)

// call underlying callback
return im.app.OnAcknowledgementPacket(ctx, packet, ack.AppAcknowledgement, relayer)
}
Expand All @@ -293,10 +309,26 @@ func (im IBCMiddleware) OnTimeoutPacket(

packetID := channeltypes.NewPacketId(packet.SourcePort, packet.SourceChannel, packet.Sequence)
feesInEscrow, found := im.keeper.GetFeesInEscrow(ctx, packetID)
if found {
if !found {
// call underlying callback
return im.app.OnTimeoutPacket(ctx, packet, relayer)
}

payee, found := im.keeper.GetPayeeAddress(ctx, relayer.String(), packet.SourceChannel)
if !found {
im.keeper.DistributePacketFeesOnTimeout(ctx, relayer, feesInEscrow.PacketFees, packetID)

// call underlying callback
return im.app.OnTimeoutPacket(ctx, packet, relayer)
}

payeeAddr, err := sdk.AccAddressFromBech32(payee)
if err != nil {
return sdkerrors.Wrapf(err, "failed to create sdk.Address from payee: %s", payee)
}

im.keeper.DistributePacketFeesOnTimeout(ctx, payeeAddr, feesInEscrow.PacketFees, packetID)

// call underlying callback
return im.app.OnTimeoutPacket(ctx, packet, relayer)
}
Expand Down
Loading

0 comments on commit 9680cb9

Please sign in to comment.