Skip to content

Commit eef74eb

Browse files
committed
refactor(backport): prepare the client interfaces used by the observer-signers for dry-mode (#4213)
refactor: prepare the client interfaces of the observer-signers for dry-mode
1 parent 265c3c9 commit eef74eb

File tree

93 files changed

+1975
-1191
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+1975
-1191
lines changed

changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* [4144](https://github.com/zeta-chain/node/pull/4144) - standardize structured logging for zetaclient
1414
* [4180](https://github.com/zeta-chain/node/pull/4180) - remove unused loggers and log fields
1515
* [4174](https://github.com/zeta-chain/node/pull/4174) - add documentation for ZetaClient logging fields
16+
* [4213](https://github.com/zeta-chain/node/pull/4213) - prepare the client interfaces of the observer-signers for dry mode
1617

1718
### Fixes
1819

cmd/zetatool/cctx/inbound.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
"github.com/zeta-chain/node/zetaclient/chains/bitcoin/client"
2222
zetaevmclient "github.com/zeta-chain/node/zetaclient/chains/evm/client"
2323
"github.com/zeta-chain/node/zetaclient/chains/solana/observer"
24-
solanarpc "github.com/zeta-chain/node/zetaclient/chains/solana/rpc"
24+
solrepo "github.com/zeta-chain/node/zetaclient/chains/solana/repo"
2525
zetaclientConfig "github.com/zeta-chain/node/zetaclient/config"
2626
)
2727

@@ -297,13 +297,14 @@ func (c *TrackingDetails) solanaInboundBallotIdentifier(ctx *context.Context) er
297297
if solClient == nil {
298298
return fmt.Errorf("error creating rpc client")
299299
}
300+
solRepo := solrepo.New(solClient)
300301

301302
signature, err := solana.SignatureFromBase58(inboundHash)
302303
if err != nil {
303304
return fmt.Errorf("error parsing signature: %w", err)
304305
}
305306

306-
txResult, err := solanarpc.GetTransaction(goCtx, solClient, signature)
307+
txResult, err := solRepo.GetTransaction(goCtx, signature)
307308
if err != nil {
308309
return fmt.Errorf("error getting transaction: %w", err)
309310
}

cmd/zetatool/cctx/outbound.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"github.com/zeta-chain/node/pkg/chains"
1414
"github.com/zeta-chain/node/zetaclient/chains/bitcoin/client"
1515
zetaevmclient "github.com/zeta-chain/node/zetaclient/chains/evm/client"
16-
solanarpc "github.com/zeta-chain/node/zetaclient/chains/solana/rpc"
16+
solrepo "github.com/zeta-chain/node/zetaclient/chains/solana/repo"
1717
zetaclientConfig "github.com/zeta-chain/node/zetaclient/config"
1818
)
1919

@@ -96,9 +96,11 @@ func (c *TrackingDetails) checkSolanaOutboundTx(ctx *context.Context) error {
9696
if solClient == nil {
9797
return fmt.Errorf("error creating rpc client")
9898
}
99+
solRepo := solrepo.New(solClient)
100+
99101
for _, hash := range txHashList {
100102
signature := solana.MustSignatureFromBase58(hash)
101-
_, err := solanarpc.GetTransaction(goCtx, solClient, signature)
103+
_, err := solRepo.GetTransaction(goCtx, signature)
102104
if err != nil {
103105
continue
104106
}

scripts/mocks-generate.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ go install github.com/vektra/mockery/[email protected]
88
MOCK_DIRS=(
99
"./testutil/keeper/mocks"
1010
"./zetaclient/chains/bitcoin/client"
11-
"./zetaclient/chains/interfaces"
11+
"./zetaclient/chains/evm/observer"
1212
"./zetaclient/chains/ton/observer"
1313
"./zetaclient/chains/ton/signer"
1414
"./zetaclient/testutils/mocks"
@@ -19,4 +19,4 @@ for dir in "${MOCK_DIRS[@]}"; do
1919
done
2020

2121
# Print a message to indicate completion
22-
echo "Mocks generated."
22+
echo "Mocks generated."

zetaclient/chains/base/observer.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ type Observer struct {
4646
// zetacoreClient is the client to interact with ZetaChain
4747
zetacoreClient interfaces.ZetacoreClient
4848

49-
// tss is the TSS signer
50-
tss interfaces.TSSSigner
49+
// tssSigner is the TSS signer
50+
tssSigner interfaces.TSSSigner
5151

5252
// lastBlock is the last block height of the observed chain
5353
lastBlock uint64
@@ -83,7 +83,7 @@ func NewObserver(
8383
chain chains.Chain,
8484
chainParams observertypes.ChainParams,
8585
zetacoreClient interfaces.ZetacoreClient,
86-
tss interfaces.TSSSigner,
86+
tssSigner interfaces.TSSSigner,
8787
blockCacheSize int,
8888
ts *metrics.TelemetryServer,
8989
database *db.DB,
@@ -98,7 +98,7 @@ func NewObserver(
9898
chain: chain,
9999
chainParams: chainParams,
100100
zetacoreClient: zetacoreClient,
101-
tss: tss,
101+
tssSigner: tssSigner,
102102
lastBlock: 0,
103103
lastBlockScanned: 0,
104104
lastTxScanned: "",
@@ -183,7 +183,7 @@ func (ob *Observer) ZetacoreClient() interfaces.ZetacoreClient {
183183

184184
// TSS returns the tss signer for the observer.
185185
func (ob *Observer) TSS() interfaces.TSSSigner {
186-
return ob.tss
186+
return ob.tssSigner
187187
}
188188

189189
// TSSAddressString returns the TSS address for the chain.
@@ -192,13 +192,13 @@ func (ob *Observer) TSS() interfaces.TSSSigner {
192192
func (ob *Observer) TSSAddressString() string {
193193
switch ob.chain.Consensus {
194194
case chains.Consensus_bitcoin:
195-
address, err := ob.tss.PubKey().AddressBTC(ob.Chain().ChainId)
195+
address, err := ob.tssSigner.PubKey().AddressBTC(ob.Chain().ChainId)
196196
if err != nil {
197197
return ""
198198
}
199199
return address.EncodeAddress()
200200
default:
201-
return ob.tss.PubKey().AddressEVM().String()
201+
return ob.tssSigner.PubKey().AddressEVM().String()
202202
}
203203
}
204204

zetaclient/chains/base/observer_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ func TestNewObserver(t *testing.T) {
113113
chainParams observertypes.ChainParams
114114
appContext *zctx.AppContext
115115
zetacoreClient interfaces.ZetacoreClient
116-
tss interfaces.TSSSigner
116+
tssSigner interfaces.TSSSigner
117117
blockCacheSize int
118118
fail bool
119119
message string
@@ -124,7 +124,7 @@ func TestNewObserver(t *testing.T) {
124124
chainParams: chainParams,
125125
appContext: appContext,
126126
zetacoreClient: zetacoreClient,
127-
tss: tss,
127+
tssSigner: tss,
128128
blockCacheSize: blockCacheSize,
129129
fail: false,
130130
},
@@ -134,7 +134,7 @@ func TestNewObserver(t *testing.T) {
134134
chainParams: chainParams,
135135
appContext: appContext,
136136
zetacoreClient: zetacoreClient,
137-
tss: tss,
137+
tssSigner: tss,
138138
blockCacheSize: 0,
139139
fail: true,
140140
message: "error creating block cache",
@@ -148,7 +148,7 @@ func TestNewObserver(t *testing.T) {
148148
tt.chain,
149149
tt.chainParams,
150150
tt.zetacoreClient,
151-
tt.tss,
151+
tt.tssSigner,
152152
tt.blockCacheSize,
153153
nil,
154154
database,

zetaclient/chains/base/signer.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ type Signer struct {
2020
// chain contains static information about the external chain
2121
chain chains.Chain
2222

23-
// tss is the TSS signer
24-
tss interfaces.TSSSigner
23+
// tssSigner is the TSS signer
24+
tssSigner interfaces.TSSSigner
2525

2626
// logger contains the loggers used by signer
2727
logger Logger
@@ -37,7 +37,7 @@ type Signer struct {
3737
}
3838

3939
// NewSigner creates a new base signer.
40-
func NewSigner(chain chains.Chain, tss interfaces.TSSSigner, logger Logger) *Signer {
40+
func NewSigner(chain chains.Chain, tssSigner interfaces.TSSSigner, logger Logger) *Signer {
4141
withLogFields := func(log zerolog.Logger) zerolog.Logger {
4242
return log.With().
4343
Str(logs.FieldModule, logs.ModNameSigner).
@@ -47,7 +47,7 @@ func NewSigner(chain chains.Chain, tss interfaces.TSSSigner, logger Logger) *Sig
4747

4848
return &Signer{
4949
chain: chain,
50-
tss: tss,
50+
tssSigner: tssSigner,
5151
outboundBeingReported: make(map[string]bool),
5252
activeOutbounds: make(map[string]time.Time),
5353
logger: Logger{
@@ -64,7 +64,7 @@ func (s *Signer) Chain() chains.Chain {
6464

6565
// TSS returns the tss signer for the signer.
6666
func (s *Signer) TSS() interfaces.TSSSigner {
67-
return s.tss
67+
return s.tssSigner
6868
}
6969

7070
// Logger returns the logger for the signer.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package bitcoin
2+
3+
import (
4+
"github.com/zeta-chain/node/zetaclient/chains/bitcoin/common"
5+
"github.com/zeta-chain/node/zetaclient/chains/bitcoin/observer"
6+
"github.com/zeta-chain/node/zetaclient/chains/bitcoin/signer"
7+
)
8+
9+
type Client interface {
10+
common.BitcoinClient
11+
signer.BitcoinClient
12+
observer.BitcoinClient
13+
}

zetaclient/chains/bitcoin/common/fee.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ var (
5757
DefaultDepositorFee = DepositorFee(defaultDepositorFeeRate)
5858
)
5959

60-
type RPC interface {
60+
type BitcoinClient interface {
6161
GetBlockCount(ctx context.Context) (int64, error)
6262
GetBlockHash(ctx context.Context, blockHeight int64) (*chainhash.Hash, error)
6363
GetBlockHeader(ctx context.Context, hash *chainhash.Hash) (*wire.BlockHeader, error)
@@ -66,7 +66,7 @@ type RPC interface {
6666
}
6767

6868
// DepositorFeeCalculator is a function type to calculate the Bitcoin depositor fee
69-
type DepositorFeeCalculator func(context.Context, RPC, *btcjson.TxRawResult, *chaincfg.Params) (float64, error)
69+
type DepositorFeeCalculator func(context.Context, BitcoinClient, *btcjson.TxRawResult, *chaincfg.Params) (float64, error)
7070

7171
// FeeRateToSatPerByte converts a fee rate from BTC/KB to sat/vB.
7272
func FeeRateToSatPerByte(rate float64) (uint64, error) {
@@ -237,7 +237,7 @@ func CalcBlockAvgFeeRate(blockVb *btcjson.GetBlockVerboseTxResult, netParams *ch
237237
// CalcDepositorFee calculates the depositor fee for a given tx result
238238
func CalcDepositorFee(
239239
ctx context.Context,
240-
rpc RPC,
240+
bitcoinClient BitcoinClient,
241241
rawResult *btcjson.TxRawResult,
242242
netParams *chaincfg.Params,
243243
) (float64, error) {
@@ -247,7 +247,7 @@ func CalcDepositorFee(
247247
}
248248

249249
// get fee rate of the transaction
250-
_, feeRate, err := rpc.GetTransactionFeeAndRate(ctx, rawResult)
250+
_, feeRate, err := bitcoinClient.GetTransactionFeeAndRate(ctx, rawResult)
251251
if err != nil {
252252
return 0, errors.Wrapf(err, "error getting fee rate for tx %s", rawResult.Txid)
253253
}
@@ -261,14 +261,17 @@ func CalcDepositorFee(
261261

262262
// GetRecentFeeRate gets the highest fee rate from recent blocks
263263
// Note: this method should be used for testnet ONLY
264-
func GetRecentFeeRate(ctx context.Context, rpc RPC, netParams *chaincfg.Params) (uint64, error) {
264+
func GetRecentFeeRate(ctx context.Context,
265+
bitcoinClient BitcoinClient,
266+
netParams *chaincfg.Params,
267+
) (uint64, error) {
265268
// should avoid using this method for mainnet
266269
if netParams.Name == chaincfg.MainNetParams.Name {
267270
return 0, errors.New("GetRecentFeeRate should not be used for mainnet")
268271
}
269272

270273
// get the current block number
271-
blockNumber, err := rpc.GetBlockCount(ctx)
274+
blockNumber, err := bitcoinClient.GetBlockCount(ctx)
272275
if err != nil {
273276
return 0, err
274277
}
@@ -277,11 +280,11 @@ func GetRecentFeeRate(ctx context.Context, rpc RPC, netParams *chaincfg.Params)
277280
highestRate := int64(0)
278281
for i := int64(0); i < feeRateCountBackBlocks; i++ {
279282
// get the block
280-
hash, err := rpc.GetBlockHash(ctx, blockNumber-i)
283+
hash, err := bitcoinClient.GetBlockHash(ctx, blockNumber-i)
281284
if err != nil {
282285
return 0, err
283286
}
284-
block, err := rpc.GetBlockVerbose(ctx, hash)
287+
block, err := bitcoinClient.GetBlockVerbose(ctx, hash)
285288
if err != nil {
286289
return 0, err
287290
}

zetaclient/chains/bitcoin/observer/db.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func (ob *Observer) LoadLastBlockScanned(ctx context.Context) error {
4242
// 1. environment variable is set explicitly to "latest"
4343
// 2. environment variable is empty and last scanned block is not found in DB
4444
if ob.LastBlockScanned() == 0 {
45-
blockNumber, err := ob.rpc.GetBlockCount(ctx)
45+
blockNumber, err := ob.bitcoinClient.GetBlockCount(ctx)
4646
if err != nil {
4747
return errors.Wrap(err, "unable to get block count")
4848
}

0 commit comments

Comments
 (0)