Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading