diff --git a/go.mod b/go.mod index 5262bd3..c97e267 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.22.0 require ( cosmossdk.io/store v1.0.2 + github.com/cockroachdb/errors v1.11.3 github.com/cosmos/cosmos-sdk v0.50.5 github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/ibc-go/v8 v8.2.1 @@ -11,7 +12,7 @@ require ( github.com/datachainlab/ibc-hd-signer v0.1.2 github.com/ethereum/go-ethereum v1.15.0 github.com/holiman/uint256 v1.3.2 - github.com/hyperledger-labs/yui-relayer v0.5.15 + github.com/hyperledger-labs/yui-relayer v0.5.16 github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.10.0 go.opentelemetry.io/otel v1.35.0 @@ -55,7 +56,6 @@ require ( github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect - github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/pebble v1.1.2 // indirect diff --git a/go.sum b/go.sum index feb52fb..777c702 100644 --- a/go.sum +++ b/go.sum @@ -778,8 +778,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.15 h1:kNJeUV9NJx51Txe9Y4ud6WNWQPMnWXvsReTBjQfp1jg= -github.com/hyperledger-labs/yui-relayer v0.5.15/go.mod h1:fyY5rY+lqyAAlr1AsWXsB22Qj5phbw/oszgZBL9UeEM= +github.com/hyperledger-labs/yui-relayer v0.5.16 h1:NauHZ08JsfIvkzopafR/5/TbRCAH7JSUgqm7YrUEQ/4= +github.com/hyperledger-labs/yui-relayer v0.5.16/go.mod h1:tGNMIE1y4cGNyRRKhR9rfBtCGLVjgejf3EIXouvdDQc= 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= diff --git a/module/prover.go b/module/prover.go index c1cf07f..dff0b22 100644 --- a/module/prover.go +++ b/module/prover.go @@ -3,9 +3,10 @@ package module import ( "context" "fmt" - "github.com/ethereum/go-ethereum/crypto" "time" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/common" "github.com/hyperledger-labs/yui-relayer/log" @@ -98,7 +99,7 @@ func (pr *Prover) GetLatestFinalizedHeaderByLatestHeight(ctx context.Context, la } // SetupHeadersForUpdate creates a new header based on a given header -func (pr *Prover) SetupHeadersForUpdate(ctx context.Context, counterparty core.FinalityAwareChain, latestFinalizedHeader core.Header) ([]core.Header, error) { +func (pr *Prover) SetupHeadersForUpdate(ctx context.Context, counterparty core.FinalityAwareChain, latestFinalizedHeader core.Header) (<-chan *core.HeaderOrError, error) { header := latestFinalizedHeader.(*Header) // LCP doesn't need height / EVM needs latest height latestHeightOnDstChain, err := counterparty.LatestHeight(ctx) @@ -113,7 +114,11 @@ func (pr *Prover) SetupHeadersForUpdate(ctx context.Context, counterparty core.F if err = pr.chain.Codec().UnpackAny(csRes.ClientState, &cs); err != nil { return nil, err } - return pr.SetupHeadersForUpdateByLatestHeight(ctx, cs.GetLatestHeight(), header) + if headers, err := pr.SetupHeadersForUpdateByLatestHeight(ctx, cs.GetLatestHeight(), header); err != nil { + return nil, err + } else { + return core.MakeHeaderStream(headers...), nil + } } func (pr *Prover) SetupHeadersForUpdateByLatestHeight(ctx context.Context, clientStateLatestHeight exported.Height, latestFinalizedHeader *Header) ([]core.Header, error) { diff --git a/tests/prover_network_test.go b/tests/prover_network_test.go index f6a7c93..935778d 100644 --- a/tests/prover_network_test.go +++ b/tests/prover_network_test.go @@ -70,8 +70,9 @@ func (ts *ProverNetworkTestSuite) TestSetupHeadersForUpdate() { setupDone, err := ts.prover.SetupHeadersForUpdate(context.Background(), dst, header) ts.Require().NoError(err) ts.Require().True(len(setupDone) > 0) - for _, h := range setupDone { - ts.Require().Len(h.(*module.Header).Headers, 3) + for h := range setupDone { + ts.Require().NoError(h.Error) + ts.Require().Len(h.Header.(*module.Header).Headers, 3) } }