Skip to content
Open
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
10 changes: 10 additions & 0 deletions cmd/datagen/cmd/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const (
walletPassphrase = "wallet-passphrase"
keysPath = "keys-path"
chainIDFlag = "chain-id"
keyringBackendFlag = "keyring-backend"
)

// CommandGenerate generates data
Expand Down Expand Up @@ -130,6 +131,8 @@ func CommandGenerateRemote() *cobra.Command {
panic(err)
}

f.String(keyringBackendFlag, "test", "Keyring backend")

return cmd
}

Expand Down Expand Up @@ -185,6 +188,11 @@ func cmdGenerateRemote(cmd *cobra.Command, _ []string) error {
return fmt.Errorf("failed to read flag: %s", chainIDFlag)
}

keyringBackend, err := flags.GetString(keyringBackendFlag)
if err != nil {
return fmt.Errorf("failed to read flag: %s", keyringBackendFlag)
}

cfg := config.Config{
BabylonRPC: babylonRPCaddr,
BTCRPC: btcRPCaddr,
Expand All @@ -196,6 +204,8 @@ func cmdGenerateRemote(cmd *cobra.Command, _ []string) error {
WalletPassphrase: walletPassphrase,
TotalStakers: totalStakers,
ChainID: chainId,
KeyringBackend: keyringBackend,
UnbondingFeeSat: 100_010,
}

if err := cfg.ValidateRemote(); err != nil {
Expand Down
2 changes: 2 additions & 0 deletions config/bitcoin.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ type BTCConfig struct {
ZmqTxEndpoint string `mapstructure:"zmq-tx-endpoint"`
PrivateKey string
Address string
UnbondingFeeSat int64 `mapstructure:"unbonding-fee-sat"` // unbonding fee in satoshis
}

const (
Expand Down Expand Up @@ -55,5 +56,6 @@ func DefaultBTCConfig() BTCConfig {
ZmqSeqEndpoint: DefaultZmqSeqEndpoint,
ZmqBlockEndpoint: DefaultZmqBlockEndpoint,
ZmqTxEndpoint: DefaultZmqTxEndpoint,
UnbondingFeeSat: 100_010,
}
}
2 changes: 2 additions & 0 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ type Config struct {
WalletName string
WalletPassphrase string
ChainID string
KeyringBackend string
UnbondingFeeSat int64
}

func (c *Config) Validate() error {
Expand Down
3 changes: 3 additions & 0 deletions e2e/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ func TestCreatesDelegations(t *testing.T) {
TotalFinalityProviders: 3,
TotalDelegations: 50,
BabylonPath: "",
ChainID: "chain-test",
KeyringBackend: "test",
UnbondingFeeSat: 100_010,
}

done := make(chan error, 1)
Expand Down
36 changes: 26 additions & 10 deletions harness/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ func RunRemote(ctx context.Context, cfg config.Config) error {
}

func startRemoteHarness(cmdCtx context.Context, cfg config.Config) error {
btcClient, err := NewBTCClient(defaultConfig().BTC)
btcConfig := defaultConfig().BTC
btcClient, err := NewBTCClient(btcConfig)
if err != nil {
return fmt.Errorf("error creating btc client: %w", err)
}
Expand All @@ -36,6 +37,7 @@ func startRemoteHarness(cmdCtx context.Context, cfg config.Config) error {
bbncfg.RPCAddr = cfg.BabylonRPC
bbncfg.GRPCAddr = cfg.BabylonGRPC
bbncfg.ChainID = cfg.ChainID
bbncfg.GasAdjustment = 3.0
fmt.Printf("📡 Connecting to Babylon at RPC: %s, GRPC: %s\n", cfg.BabylonRPC, cfg.BabylonGRPC)

bbnClient, err := New(&bbncfg)
Expand Down Expand Up @@ -74,14 +76,19 @@ func startRemoteHarness(cmdCtx context.Context, cfg config.Config) error {
return fmt.Errorf("error collecting the finality providers %w", err)
}

paramsResp, err := bbnClient.BTCCheckpointParams()
if err != nil {
return fmt.Errorf("failed to get staking params: %w", err)
}

var stakers []*BTCStaker
for i := 0; i < cfg.TotalStakers; i++ {
stakerSender, err := NewSenderWithBabylonClient(cmdCtx, fmt.Sprintf("staker-%d", i), cfg.BabylonRPC, cfg.BabylonGRPC)
stakerSender, err := NewSenderWithBabylonClient(cmdCtx, fmt.Sprintf("staker-%d", i), cfg.BabylonRPC, cfg.ChainID, cfg.BabylonGRPC, cfg.KeyringBackend)
if err != nil {
return fmt.Errorf("failed to create staker sender: %w", err)
}

staker := NewBTCStaker(btcClient.client, stakerSender, fpPks, nil, nil)
staker := NewBTCStaker(btcClient.client, stakerSender, fpPks, &paramsResp.Params, nil, nil, btcClient.config)
stakers = append(stakers, staker)
}

Expand All @@ -94,6 +101,10 @@ func startRemoteHarness(cmdCtx context.Context, cfg config.Config) error {
return fmt.Errorf("failed to start stakers: %w", err)
}

fmt.Printf("⏳ Waiting for BTC transaction confirmations on signet network...\n")

<-cmdCtx.Done()

return nil
}

Expand All @@ -114,20 +125,20 @@ func startHarness(cmdCtx context.Context, cfg config.Config) error {
// bold text
fmt.Printf("🟢 Starting with \033[1m%d\033[0m stakers, \u001B[1m%d\u001B[0m finality providers.\n", numStakers, numFinalityProviders)

cpSender, err := NewSenderWithBabylonClient(ctx, "node0", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.GRPCAddr)
cpSender, err := NewSenderWithBabylonClient(ctx, "node0", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.ChainID, tm.Config.Babylon0.GRPCAddr, "test")
if err != nil {
return err
}
headerSender, err := NewSenderWithBabylonClient(ctx, "headerreporter", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.GRPCAddr)
headerSender, err := NewSenderWithBabylonClient(ctx, "headerreporter", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.ChainID, tm.Config.Babylon0.GRPCAddr, "test")
if err != nil {
return err
}
vigilanteSender, err := NewSenderWithBabylonClient(ctx, "vigilante", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.GRPCAddr)
vigilanteSender, err := NewSenderWithBabylonClient(ctx, "vigilante", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.ChainID, tm.Config.Babylon0.GRPCAddr, "test")
if err != nil {
return err
}

fpmSender, err := NewSenderWithBabylonClient(ctx, "fpmsender", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.GRPCAddr)
fpmSender, err := NewSenderWithBabylonClient(ctx, "fpmsender", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.ChainID, tm.Config.Babylon0.GRPCAddr, "test")
if err != nil {
return err
}
Expand Down Expand Up @@ -159,15 +170,20 @@ func startHarness(cmdCtx context.Context, cfg config.Config) error {
return err
}

paramsResp, err := cpSender.BTCCheckpointParams()
if err != nil {
return fmt.Errorf("failed to get staking params: %w", err)
}

var stakers []*BTCStaker
for i := 0; i < numStakers; i++ {
stakerSender, err := NewSenderWithBabylonClient(ctx, fmt.Sprintf("staker-%d", i), tm.Config.Babylon1.RPCAddr, tm.Config.Babylon1.GRPCAddr)
stakerSender, err := NewSenderWithBabylonClient(ctx, fmt.Sprintf("staker-%d", i), tm.Config.Babylon1.RPCAddr, tm.Config.Babylon0.ChainID, tm.Config.Babylon1.GRPCAddr, "test")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's have a const for "test" backend keyring

if err != nil {
return err
}

rndFpChunk := fpMgr.getRandomChunk(3)
stakers = append(stakers, NewBTCStaker(tm.TestRpcClient, stakerSender, rndFpChunk, tm.fundingRequests, tm.fundingResponse))
stakers = append(stakers, NewBTCStaker(tm.TestRpcClient, stakerSender, rndFpChunk, &paramsResp.Params, tm.fundingRequests, tm.fundingResponse, defaultConfig().BTC))
}

// periodically check if we need to fund the staker
Expand All @@ -185,7 +201,7 @@ func startHarness(cmdCtx context.Context, cfg config.Config) error {

go printStatsForever(ctx, tm, stopChan, cfg)

covenantSender, err := NewSenderWithBabylonClient(ctx, "covenant", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.GRPCAddr)
covenantSender, err := NewSenderWithBabylonClient(ctx, "covenant", tm.Config.Babylon0.RPCAddr, tm.Config.Babylon0.ChainID, tm.Config.Babylon0.GRPCAddr, "test")
if err != nil {
return err
}
Expand Down
6 changes: 4 additions & 2 deletions harness/babylonclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,12 +136,14 @@ func NewSenderWithBabylonClient(
ctx context.Context,
keyName string,
rpcaddr string,
grpcaddr string) (*SenderWithBabylonClient, error) {
chainId string,
grpcaddr string,
keyringBackend string) (*SenderWithBabylonClient, error) {

cfg := bncfg.DefaultBabylonConfig()
cfg.Key = keyName
cfg.ChainID = chainId
cfg.KeyringBackend = "memory"
cfg.KeyringBackend = keyringBackend
cfg.RPCAddr = rpcaddr
cfg.GRPCAddr = grpcaddr
cfg.GasAdjustment = 3.0
Expand Down
15 changes: 10 additions & 5 deletions harness/btcclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,14 @@ func (c *BTCClient) checkBalance() error {
func (c *BTCClient) Setup(cfg config.Config) error {
c.config = c.ConvertToBTCConfig(cfg)
rpcClient, err := rpcclient.New(&rpcclient.ConnConfig{
Host: rpcHostURL(c.config.Endpoint, c.config.WalletName),
User: c.config.Username,
Pass: c.config.Password,
DisableTLS: true,
HTTPPostMode: true,
Host: rpcHostURL(c.config.Endpoint, c.config.WalletName),
Endpoint: c.config.Endpoint,
User: c.config.Username,
Pass: c.config.Password,
DisableTLS: true,
DisableConnectOnNew: true,
DisableAutoReconnect: false,
HTTPPostMode: true,
}, nil)
if err != nil {
return err
Expand All @@ -81,6 +84,7 @@ func (c *BTCClient) Stop() {
}

func (c *BTCClient) ConvertToBTCConfig(cfg config.Config) config.BTCConfig {
originalNetParams := c.config.NetParams
if cfg.BTCRPC != "" {
c.config.Endpoint = cfg.BTCRPC
}
Expand All @@ -97,5 +101,6 @@ func (c *BTCClient) ConvertToBTCConfig(cfg config.Config) config.BTCConfig {
c.config.Password = cfg.BTCPass
}

c.config.NetParams = originalNetParams
return c.config
}
Loading