Skip to content

Commit

Permalink
feat: client update via endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
Giuseppe Valente committed Apr 18, 2023
1 parent da8ebc8 commit 85c0cd8
Showing 1 changed file with 35 additions and 2 deletions.
37 changes: 35 additions & 2 deletions relayer/chains/cosmos/multihop.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package cosmos

import (
"context"
"fmt"
"github.com/cosmos/cosmos-sdk/codec"
clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
"github.com/cosmos/ibc-go/v7/modules/core/03-connection/types"
Expand Down Expand Up @@ -106,8 +107,40 @@ func (e endpoint) GetMerklePath(path string) (commitmenttypes.MerklePath, error)
}

func (e endpoint) UpdateClient() error {
//TODO implement me
panic("implement me")
ctx := context.Background()
srch, err := e.provider.QueryLatestHeight(ctx)
if err != nil {
return err
}
dsth, err := e.counterparty.provider.QueryLatestHeight(ctx)
if err != nil {
return err
}
srcHeader, err := e.provider.QueryIBCHeader(ctx, srch)
if err != nil {
return err
}
dstClientState, err := e.counterparty.provider.QueryClientState(ctx, dsth, e.clientID)
if err != nil {
return err
}
dstTrustedHeader, err := e.provider.QueryIBCHeader(ctx, int64(dstClientState.GetLatestHeight().GetRevisionHeight())+1)
updateHeader, err := e.provider.MsgUpdateClientHeader(srcHeader, dstClientState.GetLatestHeight().(clienttypes.Height), dstTrustedHeader)
msg, err := e.provider.MsgUpdateClient(e.counterparty.clientID, updateHeader)
if err != nil {
return err
}
response, success, err := e.provider.SendMessage(ctx, msg, "")
if err != nil {
return err
}
if response.Code != 0 {
return fmt.Errorf("client update failed with code %d", response.Code)
}
if !success {
return fmt.Errorf("client update execution failed")
}
return nil
}

func (e endpoint) Counterparty() multihop.Endpoint {
Expand Down

0 comments on commit 85c0cd8

Please sign in to comment.