Skip to content

Commit f079253

Browse files
authored
Merge pull request #51 from datachainlab/add-context
Add context.Context to Chain methods and Prover methods
2 parents 9ddb045 + 1211c5e commit f079253

File tree

5 files changed

+45
-42
lines changed

5 files changed

+45
-42
lines changed

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ require (
77
github.com/cosmos/cosmos-sdk v0.50.5
88
github.com/cosmos/gogoproto v1.4.11
99
github.com/cosmos/ibc-go/v8 v8.2.1
10-
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.13
11-
github.com/datachainlab/ibc-hd-signer v0.1.1
10+
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.16
11+
github.com/datachainlab/ibc-hd-signer v0.1.2
1212
github.com/ethereum/go-ethereum v1.15.0
13-
github.com/hyperledger-labs/yui-relayer v0.5.10
13+
github.com/hyperledger-labs/yui-relayer v0.5.11
1414
github.com/spf13/cobra v1.8.1
1515
github.com/stretchr/testify v1.10.0
1616
google.golang.org/protobuf v1.35.2

go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -418,10 +418,10 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do
418418
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
419419
github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0=
420420
github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0=
421-
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.13 h1:RbYtraeZwN55qfbzfoDIJPK8CWWx5dWfO8CfnvS+dhk=
422-
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.13/go.mod h1:dxL5umpjncKRw7iBFE2W+dGpmmWOiggth0aQsJrtLKM=
423-
github.com/datachainlab/ibc-hd-signer v0.1.1 h1:ws90eXVjjLcx2i6iPJu2bJ2w06tIeuSyIBfYbOIEv68=
424-
github.com/datachainlab/ibc-hd-signer v0.1.1/go.mod h1:I1pas5LB8QupngqT05/h3u1nqhHww9OOnAwliuPEd3c=
421+
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.16 h1:C4xwZ1Pq5O+ITjP5UphpwThtTHnWiTe0V4pckEvqfwI=
422+
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.16/go.mod h1:sf+ti1uM1joxhukxIyj8oDQ5yf7d+e+nl+3vtn9f5CM=
423+
github.com/datachainlab/ibc-hd-signer v0.1.2 h1:fWAYjMBVyM390OllX/l58mZYA7we0spEBFLYKWYTwfw=
424+
github.com/datachainlab/ibc-hd-signer v0.1.2/go.mod h1:nwH0Z3TK/7jbu/oInGGWGRimQ+LCn6yvDyjMZrw9mR4=
425425
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
426426
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
427427
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -776,8 +776,8 @@ github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXM
776776
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
777777
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
778778
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
779-
github.com/hyperledger-labs/yui-relayer v0.5.10 h1:j35SRowNfVDU3gvq4Th3Wy8ufRD5K4wbXDLQAGOgT8w=
780-
github.com/hyperledger-labs/yui-relayer v0.5.10/go.mod h1:kJvSmuagdDsSlvbnHtEHbhmkUlAS43/ArLDwukOKSlo=
779+
github.com/hyperledger-labs/yui-relayer v0.5.11 h1:tBDWJa96jQhxL9zLDbB94VvSgw0f8Xk9tqPuKMT3ARw=
780+
github.com/hyperledger-labs/yui-relayer v0.5.11/go.mod h1:kJvSmuagdDsSlvbnHtEHbhmkUlAS43/ArLDwukOKSlo=
781781
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
782782
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
783783
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=

module/prover.go

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package module
33
import (
44
"context"
55
"fmt"
6+
"time"
7+
68
"github.com/ethereum/go-ethereum/common"
79
"github.com/hyperledger-labs/yui-relayer/log"
8-
"time"
910

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

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

7677
// GetLatestFinalizedHeader returns the latest finalized header from the chain
77-
func (pr *Prover) GetLatestFinalizedHeader() (out core.Header, err error) {
78-
latestHeight, err := pr.chain.LatestHeight()
78+
func (pr *Prover) GetLatestFinalizedHeader(ctx context.Context) (out core.Header, err error) {
79+
latestHeight, err := pr.chain.LatestHeight(context.TODO())
7980
if err != nil {
8081
return nil, err
8182
}
82-
header, err := pr.GetLatestFinalizedHeaderByLatestHeight(latestHeight.GetRevisionHeight())
83+
header, err := pr.GetLatestFinalizedHeaderByLatestHeight(context.TODO(), latestHeight.GetRevisionHeight())
8384
if err != nil {
8485
return nil, err
8586
}
@@ -88,7 +89,7 @@ func (pr *Prover) GetLatestFinalizedHeader() (out core.Header, err error) {
8889
}
8990

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

100101
// SetupHeadersForUpdate creates a new header based on a given header
101-
func (pr *Prover) SetupHeadersForUpdate(counterparty core.FinalityAwareChain, latestFinalizedHeader core.Header) ([]core.Header, error) {
102+
func (pr *Prover) SetupHeadersForUpdate(ctx context.Context, counterparty core.FinalityAwareChain, latestFinalizedHeader core.Header) ([]core.Header, error) {
102103
header := latestFinalizedHeader.(*Header)
103104
// LCP doesn't need height / EVM needs latest height
104-
latestHeightOnDstChain, err := counterparty.LatestHeight()
105+
latestHeightOnDstChain, err := counterparty.LatestHeight(context.TODO())
105106
if err != nil {
106107
return nil, err
107108
}
@@ -113,10 +114,10 @@ func (pr *Prover) SetupHeadersForUpdate(counterparty core.FinalityAwareChain, la
113114
if err = pr.chain.Codec().UnpackAny(csRes.ClientState, &cs); err != nil {
114115
return nil, err
115116
}
116-
return pr.SetupHeadersForUpdateByLatestHeight(cs.GetLatestHeight(), header)
117+
return pr.SetupHeadersForUpdateByLatestHeight(context.TODO(), cs.GetLatestHeight(), header)
117118
}
118119

119-
func (pr *Prover) SetupHeadersForUpdateByLatestHeight(clientStateLatestHeight exported.Height, latestFinalizedHeader *Header) ([]core.Header, error) {
120+
func (pr *Prover) SetupHeadersForUpdateByLatestHeight(ctx context.Context, clientStateLatestHeight exported.Height, latestFinalizedHeader *Header) ([]core.Header, error) {
120121
queryVerifiableNeighboringEpochHeader := func(height uint64, limitHeight uint64) (core.Header, error) {
121122
ethHeaders, err := queryFinalizedHeader(pr.chain.Header, height, limitHeight)
122123
if err != nil {
@@ -128,7 +129,7 @@ func (pr *Prover) SetupHeadersForUpdateByLatestHeight(clientStateLatestHeight ex
128129
}
129130
return pr.withProofAndValidators(height, ethHeaders)
130131
}
131-
latestHeight, err := pr.chain.LatestHeight()
132+
latestHeight, err := pr.chain.LatestHeight(context.TODO())
132133
if err != nil {
133134
return nil, err
134135
}
@@ -146,8 +147,8 @@ func (pr *Prover) ProveState(ctx core.QueryContext, path string, value []byte) (
146147
return proof, proofHeight, err
147148
}
148149

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

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

182-
selfTimestamp, err := pr.chain.Timestamp(selfQueryHeight)
183+
selfTimestamp, err := pr.chain.Timestamp(context.TODO(), selfQueryHeight)
183184
if err != nil {
184185
return false, fmt.Errorf("failed to get timestamp of the self chain: %+v", err)
185186
}

module/prover_test.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package module
22

33
import (
44
"context"
5-
"github.com/datachainlab/ibc-hd-signer/pkg/hd"
6-
"github.com/hyperledger-labs/yui-relayer/log"
75
"math/big"
86
"testing"
97
"time"
108

9+
"github.com/datachainlab/ibc-hd-signer/pkg/hd"
10+
"github.com/hyperledger-labs/yui-relayer/log"
11+
1112
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
1213
clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types"
1314
conntypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types"
@@ -77,11 +78,11 @@ func (c *mockChain) QueryClientConsensusState(_ core.QueryContext, height export
7778
return clienttypes.NewQueryConsensusStateResponse(anyConsensusState, nil, cHeight), nil
7879
}
7980

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

84-
func (c *mockChain) LatestHeight() (exported.Height, error) {
85+
func (c *mockChain) LatestHeight(_ context.Context) (exported.Height, error) {
8586
return clienttypes.NewHeight(0, c.latestHeight), nil
8687
}
8788

@@ -249,34 +250,34 @@ func (ts *ProverTestSuite) TestCheckRefreshRequired() {
249250

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

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

262263
// should refresh by block difference
263264
ts.chain.latestHeight = 2
264265
ts.prover.config.RefreshBlockDifferenceThreshold = 1
265-
required, err = ts.prover.CheckRefreshRequired(dst)
266+
required, err = ts.prover.CheckRefreshRequired(context.TODO(), dst)
266267
ts.Require().NoError(err)
267268
ts.Require().True(required)
268269

269270
// needless by block difference
270271
ts.prover.config.RefreshBlockDifferenceThreshold = 2
271-
required, err = ts.prover.CheckRefreshRequired(dst)
272+
required, err = ts.prover.CheckRefreshRequired(context.TODO(), dst)
272273
ts.Require().NoError(err)
273274
ts.Require().False(required)
274275

275276
// needless by invalid block difference
276277
ts.chain.latestHeight = 1
277278
ts.chain.trustedHeight = 3
278279
ts.prover.config.RefreshBlockDifferenceThreshold = 1
279-
required, err = ts.prover.CheckRefreshRequired(dst)
280+
required, err = ts.prover.CheckRefreshRequired(context.TODO(), dst)
280281
ts.Require().NoError(err)
281282
ts.Require().False(required)
282283
}

tests/prover_network_test.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ package tests
22

33
import (
44
"context"
5+
"strings"
6+
"testing"
7+
"time"
8+
59
"github.com/datachainlab/ibc-hd-signer/pkg/hd"
610
"github.com/datachainlab/ibc-parlia-relay/module"
711
"github.com/hyperledger-labs/yui-relayer/config"
812
"github.com/hyperledger-labs/yui-relayer/log"
9-
"strings"
10-
"testing"
11-
"time"
1213

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

24-
func (d dstChain) GetLatestFinalizedHeader() (latestFinalizedHeader core.Header, err error) {
25+
func (d dstChain) GetLatestFinalizedHeader(_ context.Context) (latestFinalizedHeader core.Header, err error) {
2526
panic("implement me")
2627
}
2728

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

4849
func (ts *ProverNetworkTestSuite) TestQueryLatestFinalizedHeader() {
49-
header, err := ts.prover.GetLatestFinalizedHeader()
50+
header, err := ts.prover.GetLatestFinalizedHeader(context.TODO())
5051
ts.Require().NoError(err)
5152
ts.Require().NoError(header.ValidateBasic())
5253
ts.Require().Len(header.(*module.Header).Headers, 3)
@@ -65,9 +66,9 @@ func (ts *ProverNetworkTestSuite) TestSetupHeadersForUpdate() {
6566
dst := dstChain{
6667
Chain: ts.makeChain("http://localhost:8645", "ibc0"),
6768
}
68-
header, err := ts.prover.GetLatestFinalizedHeader()
69+
header, err := ts.prover.GetLatestFinalizedHeader(context.TODO())
6970
ts.Require().NoError(err)
70-
setupDone, err := ts.prover.SetupHeadersForUpdate(dst, header)
71+
setupDone, err := ts.prover.SetupHeadersForUpdate(context.TODO(), dst, header)
7172
ts.Require().NoError(err)
7273
ts.Require().True(len(setupDone) > 0)
7374
for _, h := range setupDone {
@@ -76,7 +77,7 @@ func (ts *ProverNetworkTestSuite) TestSetupHeadersForUpdate() {
7677
}
7778

7879
func (ts *ProverNetworkTestSuite) TestSuccessCreateInitialLightClientState() {
79-
s1, s2, err := ts.prover.CreateInitialLightClientState(nil)
80+
s1, s2, err := ts.prover.CreateInitialLightClientState(context.TODO(), nil)
8081
ts.Require().NoError(err)
8182

8283
cs := s1.(*module.ClientState)

0 commit comments

Comments
 (0)