diff --git a/clientcontroller/babylon.go b/clientcontroller/babylon.go index f7c5783..eb2fa38 100644 --- a/clientcontroller/babylon.go +++ b/clientcontroller/babylon.go @@ -556,20 +556,16 @@ func (bc *BabylonController) QueryStakingParams() (*types.StakingParams, error) } covenantPks = append(covenantPks, covPk) } - slashingAddress, err := btcutil.DecodeAddress(stakingParamRes.Params.SlashingAddress, bc.btcParams) - if err != nil { - return nil, err - } return &types.StakingParams{ ComfirmationTimeBlocks: ckptParamRes.Params.BtcConfirmationDepth, FinalizationTimeoutBlocks: ckptParamRes.Params.CheckpointFinalizationTimeout, MinSlashingTxFeeSat: btcutil.Amount(stakingParamRes.Params.MinSlashingTxFeeSat), CovenantPks: covenantPks, - SlashingAddress: slashingAddress, + SlashingPkScript: stakingParamRes.Params.SlashingPkScript, CovenantQuorum: stakingParamRes.Params.CovenantQuorum, SlashingRate: stakingParamRes.Params.SlashingRate, - MinUnbondingTime: stakingParamRes.Params.MinUnbondingTime, + MinUnbondingTime: stakingParamRes.Params.MinUnbondingTimeBlocks, }, nil } diff --git a/go.mod b/go.mod index f180440..349600b 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/avast/retry-go/v4 v4.5.1 - github.com/babylonlabs-io/babylon v0.9.3-0.20240903035004-5c732382e9a4 + github.com/babylonlabs-io/babylon v0.9.3-0.20240904154239-00330e49b177 github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcec/v2 v2.3.2 github.com/btcsuite/btcd/btcutil v1.1.5 diff --git a/go.sum b/go.sum index 96bf468..83df9ab 100644 --- a/go.sum +++ b/go.sum @@ -281,8 +281,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.312 h1:llrElfzeqG/YOLFFKjg1xNpZCFJ2xraIi3PqSuP+95k= github.com/aws/aws-sdk-go v1.44.312/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/babylonlabs-io/babylon v0.9.3-0.20240903035004-5c732382e9a4 h1:WKR81WDZnf9tWi5sQTx9JN3k4254UjteCg6VRUEFT8w= -github.com/babylonlabs-io/babylon v0.9.3-0.20240903035004-5c732382e9a4/go.mod h1:9VUUAwVaalXiDdPZT65SPoawKWpp6ple6tBr8Vw0NI8= +github.com/babylonlabs-io/babylon v0.9.3-0.20240904154239-00330e49b177 h1:rcbSkxPZVl5AdWt40prUUzj7Rpuv3jD6PvlLh1dQ0DM= +github.com/babylonlabs-io/babylon v0.9.3-0.20240904154239-00330e49b177/go.mod h1:9VUUAwVaalXiDdPZT65SPoawKWpp6ple6tBr8Vw0NI8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= diff --git a/itest/babylon_node_handler.go b/itest/babylon_node_handler.go index 716b117..4bb7926 100644 --- a/itest/babylon_node_handler.go +++ b/itest/babylon_node_handler.go @@ -2,16 +2,22 @@ package e2etest import ( "bytes" + "encoding/hex" "fmt" "log" + "math/rand" "os" "os/exec" "path/filepath" "runtime" "strings" "testing" + "time" + "github.com/babylonlabs-io/babylon/testutil/datagen" "github.com/babylonlabs-io/babylon/types" + "github.com/btcsuite/btcd/chaincfg" + "github.com/btcsuite/btcd/txscript" "github.com/stretchr/testify/require" ) @@ -117,7 +123,11 @@ func NewBabylonNodeHandler(t *testing.T, covenantQuorum int, covenantPks []*type walletName := "node0" nodeDataDir := filepath.Join(testDir, walletName, "babylond") - slashingAddr := "SZtRT4BySL3o4efdGLh3k7Kny8GAnsBrSW" + r := rand.New(rand.NewSource(time.Now().Unix())) + slashingAddress, err := datagen.GenRandomBTCAddress(r, &chaincfg.SigNetParams) + require.NoError(t, err) + slashingPkScript, err := txscript.PayToAddrScript(slashingAddress) + require.NoError(t, err) var covenantPksStr []string for _, pk := range covenantPks { @@ -134,7 +144,7 @@ func NewBabylonNodeHandler(t *testing.T, covenantQuorum int, covenantPks []*type "--chain-id=chain-test", "--additional-sender-account", fmt.Sprintf("--epoch-interval=%d", 5), - fmt.Sprintf("--slashing-address=%s", slashingAddr), + fmt.Sprintf("--slashing-pk-script=%s", hex.EncodeToString(slashingPkScript)), fmt.Sprintf("--covenant-quorum=%d", covenantQuorum), fmt.Sprintf("--covenant-pks=%s", strings.Join(covenantPksStr, ",")), ) diff --git a/itest/e2e_test.go b/itest/e2e_test.go index 257705e..32432ad 100644 --- a/itest/e2e_test.go +++ b/itest/e2e_test.go @@ -18,7 +18,7 @@ import ( var ( stakingTime = uint16(1000) - stakingAmount = int64(20000) + stakingAmount = int64(500000) ) // TestFinalityProviderLifeCycle tests the whole life cycle of a finality-provider diff --git a/itest/test_manager.go b/itest/test_manager.go index 3ddee10..9aff681 100644 --- a/itest/test_manager.go +++ b/itest/test_manager.go @@ -78,10 +78,10 @@ type TestDelegationData struct { DelegatorSig *bbntypes.BIP340Signature FpPks []*btcec.PublicKey - SlashingAddr string - ChangeAddr string - StakingTime uint16 - StakingAmount int64 + SlashingPkScript []byte + ChangeAddr string + StakingTime uint16 + StakingAmount int64 } func StartManager(t *testing.T) *TestManager { @@ -677,7 +677,7 @@ func (tm *TestManager) InsertBTCDelegation(t *testing.T, fpPks []*btcec.PublicKe params.CovenantQuorum, stakingTime, stakingAmount, - params.SlashingAddress.String(), + params.SlashingPkScript, params.SlashingRate, unbondingTime, ) @@ -742,7 +742,7 @@ func (tm *TestManager) InsertBTCDelegation(t *testing.T, fpPks []*btcec.PublicKe wire.NewOutPoint(&stakingTxHash, 0), unbondingTime, unbondingValue, - params.SlashingAddress.String(), + params.SlashingPkScript, params.SlashingRate, unbondingTime, ) @@ -791,7 +791,7 @@ func (tm *TestManager) InsertBTCDelegation(t *testing.T, fpPks []*btcec.PublicKe SlashingTx: testStakingInfo.SlashingTx, StakingTxInfo: txInfo, DelegatorSig: delegatorSig, - SlashingAddr: params.SlashingAddress.String(), + SlashingPkScript: params.SlashingPkScript, StakingTime: stakingTime, StakingAmount: stakingAmount, } diff --git a/tools/go.mod b/tools/go.mod index 026ccab..2ce0cca 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -4,7 +4,7 @@ go 1.21 toolchain go1.21.4 -require github.com/babylonlabs-io/babylon v0.9.3-0.20240903035004-5c732382e9a4 +require github.com/babylonlabs-io/babylon v0.9.3-0.20240904154239-00330e49b177 require ( cloud.google.com/go v0.112.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 5f4f5bb..a0af02a 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -268,8 +268,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.312 h1:llrElfzeqG/YOLFFKjg1xNpZCFJ2xraIi3PqSuP+95k= github.com/aws/aws-sdk-go v1.44.312/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/babylonlabs-io/babylon v0.9.3-0.20240903035004-5c732382e9a4 h1:WKR81WDZnf9tWi5sQTx9JN3k4254UjteCg6VRUEFT8w= -github.com/babylonlabs-io/babylon v0.9.3-0.20240903035004-5c732382e9a4/go.mod h1:9VUUAwVaalXiDdPZT65SPoawKWpp6ple6tBr8Vw0NI8= +github.com/babylonlabs-io/babylon v0.9.3-0.20240904154239-00330e49b177 h1:rcbSkxPZVl5AdWt40prUUzj7Rpuv3jD6PvlLh1dQ0DM= +github.com/babylonlabs-io/babylon v0.9.3-0.20240904154239-00330e49b177/go.mod h1:9VUUAwVaalXiDdPZT65SPoawKWpp6ple6tBr8Vw0NI8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= diff --git a/types/stakingparams.go b/types/stakingparams.go index 4c71c22..835835a 100644 --- a/types/stakingparams.go +++ b/types/stakingparams.go @@ -18,8 +18,9 @@ type StakingParams struct { // Bitcoin public keys of the covenant committee CovenantPks []*btcec.PublicKey - // Address to which slashing transactions are sent - SlashingAddress btcutil.Address + // The pk_script expected in slashing output i.e., the first + // output of slashing transaction + SlashingPkScript []byte // Minimum number of signatures needed for the covenant multisignature CovenantQuorum uint32