6
6
"strings"
7
7
"time"
8
8
9
+ "github.com/babylonlabs-io/babylon/client/babylonclient"
10
+
9
11
"github.com/babylonlabs-io/finality-provider/finality-provider/proto"
10
12
11
13
sdkErr "cosmossdk.io/errors"
@@ -25,7 +27,6 @@ import (
25
27
sdk "github.com/cosmos/cosmos-sdk/types"
26
28
sdkquery "github.com/cosmos/cosmos-sdk/types/query"
27
29
sttypes "github.com/cosmos/cosmos-sdk/x/staking/types"
28
- "github.com/cosmos/relayer/v2/relayer/provider"
29
30
"go.uber.org/zap"
30
31
protobuf "google.golang.org/protobuf/proto"
31
32
@@ -47,6 +48,7 @@ type BabylonController struct {
47
48
}
48
49
49
50
func NewBabylonController (
51
+ bbnClient * bbnclient.Client ,
50
52
cfg * fpcfg.BBNConfig ,
51
53
btcParams * chaincfg.Params ,
52
54
logger * zap.Logger ,
@@ -68,13 +70,32 @@ func NewBabylonController(
68
70
}
69
71
70
72
return & BabylonController {
71
- bc ,
73
+ bbnClient ,
72
74
cfg ,
73
75
btcParams ,
74
76
logger ,
75
77
}, nil
76
78
}
77
79
80
+ func (bc * BabylonController ) Start () error {
81
+ // makes sure that the key in config really exists and is a valid bech32 addr
82
+ // to allow using mustGetTxSigner
83
+ if _ , err := bc .bbnClient .GetAddr (); err != nil {
84
+ return fmt .Errorf ("failed to get addr: %w" , err )
85
+ }
86
+
87
+ enabled , err := bc .NodeTxIndexEnabled ()
88
+ if err != nil {
89
+ return err
90
+ }
91
+
92
+ if ! enabled {
93
+ return fmt .Errorf ("tx indexing in the babylon node must be enabled" )
94
+ }
95
+
96
+ return nil
97
+ }
98
+
78
99
func (bc * BabylonController ) MustGetTxSigner () string {
79
100
signer := bc .GetKeyAddress ()
80
101
prefix := bc .cfg .AccountPrefix
@@ -101,11 +122,11 @@ func (bc *BabylonController) GetKeyAddress() sdk.AccAddress {
101
122
return addr
102
123
}
103
124
104
- func (bc * BabylonController ) reliablySendMsg (msg sdk.Msg , expectedErrs []* sdkErr.Error , unrecoverableErrs []* sdkErr.Error ) (* provider .RelayerTxResponse , error ) {
125
+ func (bc * BabylonController ) reliablySendMsg (msg sdk.Msg , expectedErrs []* sdkErr.Error , unrecoverableErrs []* sdkErr.Error ) (* babylonclient .RelayerTxResponse , error ) {
105
126
return bc .reliablySendMsgs ([]sdk.Msg {msg }, expectedErrs , unrecoverableErrs )
106
127
}
107
128
108
- func (bc * BabylonController ) reliablySendMsgs (msgs []sdk.Msg , expectedErrs []* sdkErr.Error , unrecoverableErrs []* sdkErr.Error ) (* provider .RelayerTxResponse , error ) {
129
+ func (bc * BabylonController ) reliablySendMsgs (msgs []sdk.Msg , expectedErrs []* sdkErr.Error , unrecoverableErrs []* sdkErr.Error ) (* babylonclient .RelayerTxResponse , error ) {
109
130
return bc .bbnClient .ReliablySendMsgs (
110
131
context .Background (),
111
132
msgs ,
@@ -413,6 +434,15 @@ func (bc *BabylonController) QueryBestBlock() (*types.BlockInfo, error) {
413
434
return blocks [0 ], nil
414
435
}
415
436
437
+ func (bc * BabylonController ) NodeTxIndexEnabled () (bool , error ) {
438
+ res , err := bc .bbnClient .GetStatus ()
439
+ if err != nil {
440
+ return false , fmt .Errorf ("failed to query node status: %w" , err )
441
+ }
442
+
443
+ return res .TxIndexEnabled (), nil
444
+ }
445
+
416
446
func (bc * BabylonController ) queryCometBestBlock () (* types.BlockInfo , error ) {
417
447
ctx , cancel := getContextWithCancel (bc .cfg .Timeout )
418
448
// this will return 20 items at max in the descending order (highest first)
@@ -492,7 +522,7 @@ func (bc *BabylonController) CreateBTCDelegation(
492
522
return & types.TxResponse {TxHash : res .TxHash }, nil
493
523
}
494
524
495
- func (bc * BabylonController ) InsertBtcBlockHeaders (headers []bbntypes.BTCHeaderBytes ) (* provider .RelayerTxResponse , error ) {
525
+ func (bc * BabylonController ) InsertBtcBlockHeaders (headers []bbntypes.BTCHeaderBytes ) (* babylonclient .RelayerTxResponse , error ) {
496
526
msg := & btclctypes.MsgInsertHeaders {
497
527
Signer : bc .MustGetTxSigner (),
498
528
Headers : headers ,
@@ -729,7 +759,7 @@ func (bc *BabylonController) SubmitCovenantSigs(
729
759
return & types.TxResponse {TxHash : res .TxHash }, nil
730
760
}
731
761
732
- func (bc * BabylonController ) InsertSpvProofs (submitter string , proofs []* btcctypes.BTCSpvProof ) (* provider .RelayerTxResponse , error ) {
762
+ func (bc * BabylonController ) InsertSpvProofs (submitter string , proofs []* btcctypes.BTCSpvProof ) (* babylonclient .RelayerTxResponse , error ) {
733
763
msg := & btcctypes.MsgInsertBTCSpvProof {
734
764
Submitter : submitter ,
735
765
Proofs : proofs ,
0 commit comments