Skip to content

Commit

Permalink
Add context.Context to Chain methods and Prover methods
Browse files Browse the repository at this point in the history
Signed-off-by: abicky <[email protected]>
  • Loading branch information
abicky committed Feb 20, 2025
1 parent 9ddb045 commit 1211c5e
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 42 deletions.
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ require (
github.com/cosmos/cosmos-sdk v0.50.5
github.com/cosmos/gogoproto v1.4.11
github.com/cosmos/ibc-go/v8 v8.2.1
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.13
github.com/datachainlab/ibc-hd-signer v0.1.1
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.16
github.com/datachainlab/ibc-hd-signer v0.1.2
github.com/ethereum/go-ethereum v1.15.0
github.com/hyperledger-labs/yui-relayer v0.5.10
github.com/hyperledger-labs/yui-relayer v0.5.11
github.com/spf13/cobra v1.8.1
github.com/stretchr/testify v1.10.0
google.golang.org/protobuf v1.35.2
Expand Down
12 changes: 6 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -418,10 +418,10 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0=
github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0=
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.13 h1:RbYtraeZwN55qfbzfoDIJPK8CWWx5dWfO8CfnvS+dhk=
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.13/go.mod h1:dxL5umpjncKRw7iBFE2W+dGpmmWOiggth0aQsJrtLKM=
github.com/datachainlab/ibc-hd-signer v0.1.1 h1:ws90eXVjjLcx2i6iPJu2bJ2w06tIeuSyIBfYbOIEv68=
github.com/datachainlab/ibc-hd-signer v0.1.1/go.mod h1:I1pas5LB8QupngqT05/h3u1nqhHww9OOnAwliuPEd3c=
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.16 h1:C4xwZ1Pq5O+ITjP5UphpwThtTHnWiTe0V4pckEvqfwI=
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.16/go.mod h1:sf+ti1uM1joxhukxIyj8oDQ5yf7d+e+nl+3vtn9f5CM=
github.com/datachainlab/ibc-hd-signer v0.1.2 h1:fWAYjMBVyM390OllX/l58mZYA7we0spEBFLYKWYTwfw=
github.com/datachainlab/ibc-hd-signer v0.1.2/go.mod h1:nwH0Z3TK/7jbu/oInGGWGRimQ+LCn6yvDyjMZrw9mR4=
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down Expand Up @@ -776,8 +776,8 @@ github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXM
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
github.com/hyperledger-labs/yui-relayer v0.5.10 h1:j35SRowNfVDU3gvq4Th3Wy8ufRD5K4wbXDLQAGOgT8w=
github.com/hyperledger-labs/yui-relayer v0.5.10/go.mod h1:kJvSmuagdDsSlvbnHtEHbhmkUlAS43/ArLDwukOKSlo=
github.com/hyperledger-labs/yui-relayer v0.5.11 h1:tBDWJa96jQhxL9zLDbB94VvSgw0f8Xk9tqPuKMT3ARw=
github.com/hyperledger-labs/yui-relayer v0.5.11/go.mod h1:kJvSmuagdDsSlvbnHtEHbhmkUlAS43/ArLDwukOKSlo=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
Expand Down
33 changes: 17 additions & 16 deletions module/prover.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ package module
import (
"context"
"fmt"
"time"

"github.com/ethereum/go-ethereum/common"
"github.com/hyperledger-labs/yui-relayer/log"
"time"

"github.com/ethereum/go-ethereum/crypto"

Expand Down Expand Up @@ -50,8 +51,8 @@ func (pr *Prover) SetupForRelay(ctx context.Context) error {
// CreateInitialLightClientState returns a pair of ClientState and ConsensusState based on the state of the self chain at `height`.
// These states will be submitted to the counterparty chain as MsgCreateClient.
// If `height` is nil, the latest finalized height is selected automatically.
func (pr *Prover) CreateInitialLightClientState(height exported.Height) (exported.ClientState, exported.ConsensusState, error) {
latestHeight, err := pr.chain.LatestHeight()
func (pr *Prover) CreateInitialLightClientState(ctx context.Context, height exported.Height) (exported.ClientState, exported.ConsensusState, error) {
latestHeight, err := pr.chain.LatestHeight(context.TODO())
if err != nil {
return nil, nil, err
}
Expand All @@ -74,12 +75,12 @@ func (pr *Prover) CreateInitialLightClientState(height exported.Height) (exporte
}

// GetLatestFinalizedHeader returns the latest finalized header from the chain
func (pr *Prover) GetLatestFinalizedHeader() (out core.Header, err error) {
latestHeight, err := pr.chain.LatestHeight()
func (pr *Prover) GetLatestFinalizedHeader(ctx context.Context) (out core.Header, err error) {
latestHeight, err := pr.chain.LatestHeight(context.TODO())
if err != nil {
return nil, err
}
header, err := pr.GetLatestFinalizedHeaderByLatestHeight(latestHeight.GetRevisionHeight())
header, err := pr.GetLatestFinalizedHeaderByLatestHeight(context.TODO(), latestHeight.GetRevisionHeight())
if err != nil {
return nil, err
}
Expand All @@ -88,7 +89,7 @@ func (pr *Prover) GetLatestFinalizedHeader() (out core.Header, err error) {
}

// GetLatestFinalizedHeaderByLatestHeight returns the latest finalized verifiable header from the chain
func (pr *Prover) GetLatestFinalizedHeaderByLatestHeight(latestBlockNumber uint64) (core.Header, error) {
func (pr *Prover) GetLatestFinalizedHeaderByLatestHeight(ctx context.Context, latestBlockNumber uint64) (core.Header, error) {
height, finalizedHeader, err := queryLatestFinalizedHeader(pr.chain.Header, latestBlockNumber)
if err != nil {
return nil, err
Expand All @@ -98,10 +99,10 @@ func (pr *Prover) GetLatestFinalizedHeaderByLatestHeight(latestBlockNumber uint6
}

// SetupHeadersForUpdate creates a new header based on a given header
func (pr *Prover) SetupHeadersForUpdate(counterparty core.FinalityAwareChain, latestFinalizedHeader core.Header) ([]core.Header, error) {
func (pr *Prover) SetupHeadersForUpdate(ctx context.Context, counterparty core.FinalityAwareChain, latestFinalizedHeader core.Header) ([]core.Header, error) {
header := latestFinalizedHeader.(*Header)
// LCP doesn't need height / EVM needs latest height
latestHeightOnDstChain, err := counterparty.LatestHeight()
latestHeightOnDstChain, err := counterparty.LatestHeight(context.TODO())
if err != nil {
return nil, err
}
Expand All @@ -113,10 +114,10 @@ func (pr *Prover) SetupHeadersForUpdate(counterparty core.FinalityAwareChain, la
if err = pr.chain.Codec().UnpackAny(csRes.ClientState, &cs); err != nil {
return nil, err
}
return pr.SetupHeadersForUpdateByLatestHeight(cs.GetLatestHeight(), header)
return pr.SetupHeadersForUpdateByLatestHeight(context.TODO(), cs.GetLatestHeight(), header)
}

func (pr *Prover) SetupHeadersForUpdateByLatestHeight(clientStateLatestHeight exported.Height, latestFinalizedHeader *Header) ([]core.Header, error) {
func (pr *Prover) SetupHeadersForUpdateByLatestHeight(ctx context.Context, clientStateLatestHeight exported.Height, latestFinalizedHeader *Header) ([]core.Header, error) {
queryVerifiableNeighboringEpochHeader := func(height uint64, limitHeight uint64) (core.Header, error) {
ethHeaders, err := queryFinalizedHeader(pr.chain.Header, height, limitHeight)
if err != nil {
Expand All @@ -128,7 +129,7 @@ func (pr *Prover) SetupHeadersForUpdateByLatestHeight(clientStateLatestHeight ex
}
return pr.withProofAndValidators(height, ethHeaders)
}
latestHeight, err := pr.chain.LatestHeight()
latestHeight, err := pr.chain.LatestHeight(context.TODO())
if err != nil {
return nil, err
}
Expand All @@ -146,8 +147,8 @@ func (pr *Prover) ProveState(ctx core.QueryContext, path string, value []byte) (
return proof, proofHeight, err
}

func (pr *Prover) CheckRefreshRequired(counterparty core.ChainInfoICS02Querier) (bool, error) {
cpQueryHeight, err := counterparty.LatestHeight()
func (pr *Prover) CheckRefreshRequired(ctx context.Context, counterparty core.ChainInfoICS02Querier) (bool, error) {
cpQueryHeight, err := counterparty.LatestHeight(context.TODO())
if err != nil {
return false, fmt.Errorf("failed to get the latest height of the counterparty chain: %+v", err)
}
Expand All @@ -174,12 +175,12 @@ func (pr *Prover) CheckRefreshRequired(counterparty core.ChainInfoICS02Querier)
}
lcLastTimestamp := time.Unix(0, int64(cons.GetTimestamp()))

selfQueryHeight, err := pr.chain.LatestHeight()
selfQueryHeight, err := pr.chain.LatestHeight(context.TODO())
if err != nil {
return false, fmt.Errorf("failed to get the latest height of the self chain: %+v", err)
}

selfTimestamp, err := pr.chain.Timestamp(selfQueryHeight)
selfTimestamp, err := pr.chain.Timestamp(context.TODO(), selfQueryHeight)
if err != nil {
return false, fmt.Errorf("failed to get timestamp of the self chain: %+v", err)
}
Expand Down
19 changes: 10 additions & 9 deletions module/prover_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package module

import (
"context"
"github.com/datachainlab/ibc-hd-signer/pkg/hd"
"github.com/hyperledger-labs/yui-relayer/log"
"math/big"
"testing"
"time"

"github.com/datachainlab/ibc-hd-signer/pkg/hd"
"github.com/hyperledger-labs/yui-relayer/log"

codectypes "github.com/cosmos/cosmos-sdk/codec/types"
clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types"
conntypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types"
Expand Down Expand Up @@ -77,11 +78,11 @@ func (c *mockChain) QueryClientConsensusState(_ core.QueryContext, height export
return clienttypes.NewQueryConsensusStateResponse(anyConsensusState, nil, cHeight), nil
}

func (c *mockChain) Timestamp(height exported.Height) (time.Time, error) {
func (c *mockChain) Timestamp(_ context.Context, height exported.Height) (time.Time, error) {
return time.Unix(int64(c.chainTimestamp[height]), 0), nil
}

func (c *mockChain) LatestHeight() (exported.Height, error) {
func (c *mockChain) LatestHeight(_ context.Context) (exported.Height, error) {
return clienttypes.NewHeight(0, c.latestHeight), nil
}

Expand Down Expand Up @@ -249,34 +250,34 @@ func (ts *ProverTestSuite) TestCheckRefreshRequired() {

// should refresh by trusting_period
ts.chain.consensusStateTimestamp[csHeight] = uint64(now.Add(-51 * time.Second).UnixNano())
required, err := ts.prover.CheckRefreshRequired(dst)
required, err := ts.prover.CheckRefreshRequired(context.TODO(), dst)
ts.Require().NoError(err)
ts.Require().True(required)

// needless by trusting_period
ts.chain.consensusStateTimestamp[csHeight] = uint64(now.Add(-50 * time.Second).UnixNano())
required, err = ts.prover.CheckRefreshRequired(dst)
required, err = ts.prover.CheckRefreshRequired(context.TODO(), dst)
ts.Require().NoError(err)
ts.Require().False(required)

// should refresh by block difference
ts.chain.latestHeight = 2
ts.prover.config.RefreshBlockDifferenceThreshold = 1
required, err = ts.prover.CheckRefreshRequired(dst)
required, err = ts.prover.CheckRefreshRequired(context.TODO(), dst)
ts.Require().NoError(err)
ts.Require().True(required)

// needless by block difference
ts.prover.config.RefreshBlockDifferenceThreshold = 2
required, err = ts.prover.CheckRefreshRequired(dst)
required, err = ts.prover.CheckRefreshRequired(context.TODO(), dst)
ts.Require().NoError(err)
ts.Require().False(required)

// needless by invalid block difference
ts.chain.latestHeight = 1
ts.chain.trustedHeight = 3
ts.prover.config.RefreshBlockDifferenceThreshold = 1
required, err = ts.prover.CheckRefreshRequired(dst)
required, err = ts.prover.CheckRefreshRequired(context.TODO(), dst)
ts.Require().NoError(err)
ts.Require().False(required)
}
Expand Down
17 changes: 9 additions & 8 deletions tests/prover_network_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ package tests

import (
"context"
"strings"
"testing"
"time"

"github.com/datachainlab/ibc-hd-signer/pkg/hd"
"github.com/datachainlab/ibc-parlia-relay/module"
"github.com/hyperledger-labs/yui-relayer/config"
"github.com/hyperledger-labs/yui-relayer/log"
"strings"
"testing"
"time"

codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/datachainlab/ethereum-ibc-relay-chain/pkg/relay/ethereum"
Expand All @@ -21,7 +22,7 @@ type dstChain struct {
core.Chain
}

func (d dstChain) GetLatestFinalizedHeader() (latestFinalizedHeader core.Header, err error) {
func (d dstChain) GetLatestFinalizedHeader(_ context.Context) (latestFinalizedHeader core.Header, err error) {
panic("implement me")
}

Expand All @@ -46,7 +47,7 @@ func (ts *ProverNetworkTestSuite) SetupTest() {
}

func (ts *ProverNetworkTestSuite) TestQueryLatestFinalizedHeader() {
header, err := ts.prover.GetLatestFinalizedHeader()
header, err := ts.prover.GetLatestFinalizedHeader(context.TODO())
ts.Require().NoError(err)
ts.Require().NoError(header.ValidateBasic())
ts.Require().Len(header.(*module.Header).Headers, 3)
Expand All @@ -65,9 +66,9 @@ func (ts *ProverNetworkTestSuite) TestSetupHeadersForUpdate() {
dst := dstChain{
Chain: ts.makeChain("http://localhost:8645", "ibc0"),
}
header, err := ts.prover.GetLatestFinalizedHeader()
header, err := ts.prover.GetLatestFinalizedHeader(context.TODO())
ts.Require().NoError(err)
setupDone, err := ts.prover.SetupHeadersForUpdate(dst, header)
setupDone, err := ts.prover.SetupHeadersForUpdate(context.TODO(), dst, header)
ts.Require().NoError(err)
ts.Require().True(len(setupDone) > 0)
for _, h := range setupDone {
Expand All @@ -76,7 +77,7 @@ func (ts *ProverNetworkTestSuite) TestSetupHeadersForUpdate() {
}

func (ts *ProverNetworkTestSuite) TestSuccessCreateInitialLightClientState() {
s1, s2, err := ts.prover.CreateInitialLightClientState(nil)
s1, s2, err := ts.prover.CreateInitialLightClientState(context.TODO(), nil)
ts.Require().NoError(err)

cs := s1.(*module.ClientState)
Expand Down

0 comments on commit 1211c5e

Please sign in to comment.