Skip to content

Commit 1519102

Browse files
authored
Merge pull request #753 from rsksmart/feature/GBI-2792
feat: add RSKIP 305 support
2 parents 82549fb + 9796664 commit 1519102

File tree

18 files changed

+297
-121
lines changed

18 files changed

+297
-121
lines changed

docker-compose/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ services:
9797
- LBC_ADDR
9898
- RSK_BRIDGE_ADDR
9999
- RSK_REQUIRED_BRIDGE_CONFIRMATIONS
100-
- IRIS_ACTIVATION_HEIGHT
101100
- ERP_KEYS
101+
- USE_SEGWIT_FEDERATION
102102
- ACCOUNT_NUM
103103
- DAO_FEE_COLLECTOR_ADDRESS
104104
- KEY_SECRET

docker-compose/local/docker-compose.lps.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ services:
2525
- LBC_ADDR
2626
- RSK_BRIDGE_ADDR
2727
- RSK_REQUIRED_BRIDGE_CONFIRMATIONS
28-
- IRIS_ACTIVATION_HEIGHT
2928
- ERP_KEYS
29+
- USE_SEGWIT_FEDERATION
3030
- ACCOUNT_NUM
3131
- DAO_FEE_COLLECTOR_ADDRESS
3232
- KEY_SECRET

docker-compose/mainnet/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ services:
4141
- LBC_ADDR
4242
- RSK_BRIDGE_ADDR
4343
- RSK_REQUIRED_BRIDGE_CONFIRMATIONS
44-
- IRIS_ACTIVATION_HEIGHT
4544
- ERP_KEYS
45+
- USE_SEGWIT_FEDERATION
4646
- ACCOUNT_NUM
4747
- DAO_FEE_COLLECTOR_ADDRESS
4848
- KEY_SECRET

docs/Environment.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ These are the environment variables required by the liquidity provider server (L
2323
| `LBC_ADDR` | Address of the Liquidity Bridge Contract (LBC). | `0x8901a2Bbf639bFD21A97004BA4D7aE2BD00B8DA8` | YES |
2424
| `RSK_BRIDGE_ADDR` | Address of the Rootstock bridge. | `0x0000000000000000000000000000000001000006` | YES |
2525
| `RSK_REQUIRED_BRIDGE_CONFIRMATIONS` | The number of confirmations that need to pass before being able to register a pegin, it changes depending on the network. | `100` | YES |
26-
| `IRIS_ACTIVATION_HEIGHT` | Block number where the iris update is activated, depends on the network. | `1500000` | YES |
2726
| `ERP_KEYS` | Keys that are used as a secondary multisig that would be allowed to spend UTXOs after a year they were created. |`0216c23b2ea8e4f11c3f9e22711addb1d16a93964796913830856b568cc3ea21d3`,`0275562901dd8faae20de0a4166362a4f82188db77dbed4ca887422ea1ec185f14`,`034db69f2112f4fb1bb6141bf6e2bd6631f0484d0bd95b16767902c9fe219d4a6f` | YES |
27+
| `USE_SEGWIT_FEDERATION` | Wether to generate the federation address as a P2SH-P2WSH or not | true | NO |
2828
| `ACCOUNT_NUM` | The keystore account number to use. If not provided default value will be 0. | `0` | NO |
2929
| `DAO_FEE_COLLECTOR_ADDRESS` | Address of the DAO fee collector. | `0x86B6534687A176A476C16083a373fB9Fe4FAb449` | YES |
3030
| `KEY_SECRET` | Name of the secret of AWS secrets manager that contains the encrypted json of the liquidity provider RSK account. Only required if `SECRET_SRC` is `aws`. | `FlyoverTestEnv/LPS-KEY` | NO |
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package bitcoin
2+
3+
import (
4+
"crypto/sha256"
5+
"errors"
6+
"github.com/btcsuite/btcd/btcutil"
7+
"github.com/btcsuite/btcd/chaincfg"
8+
"github.com/btcsuite/btcd/txscript"
9+
)
10+
11+
func ScriptToP2shP2wsh(script []byte) ([]byte, error) {
12+
if len(script) == 0 {
13+
return nil, errors.New("script cannot be empty")
14+
}
15+
16+
witnessScriptHash := sha256.Sum256(script)
17+
segwitScript, err := txscript.NewScriptBuilder().
18+
AddOp(txscript.OP_0).
19+
AddData(witnessScriptHash[:]).
20+
Script()
21+
if err != nil {
22+
return nil, err
23+
}
24+
25+
return segwitScript, nil
26+
}
27+
28+
func ScriptToAddressP2shP2wsh(script []byte, btcParams *chaincfg.Params) (*btcutil.AddressScriptHash, error) {
29+
if btcParams == nil {
30+
return nil, errors.New("bitcoin network parameters cannot be nil")
31+
}
32+
segwitScript, err := ScriptToP2shP2wsh(script)
33+
if err != nil {
34+
return nil, err
35+
}
36+
37+
return btcutil.NewAddressScriptHash(segwitScript, btcParams)
38+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package bitcoin_test
2+
3+
import (
4+
"encoding/hex"
5+
"github.com/btcsuite/btcd/chaincfg"
6+
"github.com/rsksmart/liquidity-provider-server/internal/adapters/dataproviders/bitcoin"
7+
"github.com/stretchr/testify/assert"
8+
"github.com/stretchr/testify/require"
9+
"testing"
10+
)
11+
12+
type ScriptEntry struct {
13+
Name string
14+
ScriptHex string
15+
SegwitProgram string
16+
P2SHP2WSHAddr string
17+
}
18+
19+
var ScriptDataset = []ScriptEntry{
20+
{
21+
Name: "2-of-3 Multisig",
22+
ScriptHex: "52210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817982103828d9817f20b62f5c8c6fba48e33cfad4b9a2ed81ebb57e947d48f5e9f0f5b1d21027d1fe0e10b7a65f2aa5c3b2e0f593c9f8db3c9f5a639146e0d8df0f0bdcb0a3653ae",
23+
SegwitProgram: "00208bf61295ed4b6005a0452aa64873a49eabbc9204db0f5b51cf82c02805a3e6d9",
24+
P2SHP2WSHAddr: "3BwNcbMRRbsQ2V3dT5GLZeos2FGLh46NAY",
25+
},
26+
{
27+
Name: "CSV",
28+
ScriptHex: "a9144733f37cf4db86fbc2efed2500b4f4e49f3120238763b175",
29+
SegwitProgram: "002097dfc3e76a746db584e46036ab39e3473b4d7ce704da1f514e06be7a7056b110",
30+
P2SHP2WSHAddr: "3KgrN1XJms8tGm9zkLuUWv7R4aP3h2oQSL",
31+
},
32+
{
33+
Name: "IF/ELSE",
34+
ScriptHex: "63210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179867522103828d9817f20b62f5c8c6fba48e33cfad4b9a2ed81ebb57e947d48f5e9f0f5b1d68ac",
35+
SegwitProgram: "00204f6f9370bd1dd3783180f01c78fc31bd03c5cb62fdbc48d6973362044ff36fe1",
36+
P2SHP2WSHAddr: "3622fSbuttx3uVUwgHnRRPZeNtSRHQsQB8",
37+
},
38+
}
39+
40+
func TestScriptToAddressP2shP2wsh(t *testing.T) {
41+
for _, test := range ScriptDataset {
42+
t.Run("should parse "+test.Name, func(t *testing.T) {
43+
script, err := hex.DecodeString(test.ScriptHex)
44+
require.NoError(t, err)
45+
result, err := bitcoin.ScriptToAddressP2shP2wsh(script, &chaincfg.MainNetParams)
46+
require.NoError(t, err)
47+
assert.Equal(t, test.P2SHP2WSHAddr, result.EncodeAddress())
48+
})
49+
}
50+
t.Run("should return error for empty script", func(t *testing.T) {
51+
const errorMsg = "script cannot be empty"
52+
nilResult, nilErr := bitcoin.ScriptToAddressP2shP2wsh(nil, &chaincfg.MainNetParams)
53+
emptyResult, emptyErr := bitcoin.ScriptToAddressP2shP2wsh([]byte{}, &chaincfg.MainNetParams)
54+
require.ErrorContains(t, nilErr, errorMsg)
55+
require.Error(t, emptyErr, errorMsg)
56+
assert.Nil(t, nilResult)
57+
assert.Nil(t, emptyResult)
58+
})
59+
60+
t.Run("should return error for empty network params", func(t *testing.T) {
61+
script, err := hex.DecodeString(ScriptDataset[0].ScriptHex)
62+
require.NoError(t, err)
63+
result, err := bitcoin.ScriptToAddressP2shP2wsh(script, nil)
64+
assert.Nil(t, result)
65+
assert.Error(t, err)
66+
})
67+
}
68+
69+
func TestScriptToP2shP2wsh(t *testing.T) {
70+
for _, test := range ScriptDataset {
71+
t.Run("should parse "+test.Name, func(t *testing.T) {
72+
script, err := hex.DecodeString(test.ScriptHex)
73+
require.NoError(t, err)
74+
result, err := bitcoin.ScriptToP2shP2wsh(script)
75+
require.NoError(t, err)
76+
assert.Equal(t, test.SegwitProgram, hex.EncodeToString(result))
77+
})
78+
}
79+
t.Run("should return error for empty script", func(t *testing.T) {
80+
const errorMsg = "script cannot be empty"
81+
nilResult, nilErr := bitcoin.ScriptToP2shP2wsh(nil)
82+
emptyResult, emptyErr := bitcoin.ScriptToP2shP2wsh([]byte{})
83+
require.ErrorContains(t, nilErr, errorMsg)
84+
require.Error(t, emptyErr, errorMsg)
85+
assert.Nil(t, nilResult)
86+
assert.Nil(t, emptyResult)
87+
})
88+
}

internal/adapters/dataproviders/rootstock/bridge.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,21 @@ const registerCoinbaseTxGasLimit = 100000
2424
type rskBridgeImpl struct {
2525
address string
2626
requiredConfirmations uint64
27-
irisActivationHeight int64
2827
erpKeys []string
2928
contract RskBridgeAdapter
3029
client RpcClientBinding
3130
btcParams *chaincfg.Params
3231
retryParams RetryParams
3332
signer TransactionSigner
3433
miningTimeout time.Duration
34+
useSegwitFederation bool
3535
}
3636

3737
type RskBridgeConfig struct {
3838
Address string
3939
RequiredConfirmations uint64
40-
IrisActivationHeight int64
4140
ErpKeys []string
41+
UseSegwitFederation bool
4242
}
4343

4444
func NewRskBridgeImpl(
@@ -53,14 +53,14 @@ func NewRskBridgeImpl(
5353
return &rskBridgeImpl{
5454
address: config.Address,
5555
requiredConfirmations: config.RequiredConfirmations,
56-
irisActivationHeight: config.IrisActivationHeight,
5756
erpKeys: config.ErpKeys,
5857
contract: contract,
5958
client: client.client,
6059
btcParams: btcParams,
6160
retryParams: retryParams,
6261
signer: signer,
6362
miningTimeout: miningTimeout,
63+
useSegwitFederation: config.UseSegwitFederation,
6464
}
6565
}
6666

@@ -166,8 +166,8 @@ func (bridge *rskBridgeImpl) FetchFederationInfo() (rootstock.FederationInfo, er
166166
PubKeys: pubKeys,
167167
FedAddress: fedAddress,
168168
ActiveFedBlockHeight: activeFedBlockHeight.Int64(),
169-
IrisActivationHeight: bridge.irisActivationHeight,
170169
ErpKeys: bridge.erpKeys,
170+
UseSegwit: bridge.useSegwitFederation,
171171
}, nil
172172
}
173173

internal/adapters/dataproviders/rootstock/bridge_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const (
3232
)
3333

3434
func TestNewRskBridgeImpl(t *testing.T) {
35-
config := rootstock.RskBridgeConfig{Address: test.AnyAddress, RequiredConfirmations: 10, IrisActivationHeight: 100, ErpKeys: []string{"key1", "key2", "key3"}}
35+
config := rootstock.RskBridgeConfig{Address: test.AnyAddress, RequiredConfirmations: 10, ErpKeys: []string{"key1", "key2", "key3"}, UseSegwitFederation: true}
3636
client := rootstock.NewRskClient(&mocks.RpcClientBindingMock{})
3737
bridge := rootstock.NewRskBridgeImpl(config, &mocks.RskBridgeAdapterMock{}, client, &chaincfg.TestNet3Params, rootstock.RetryParams{Retries: 1, Sleep: time.Duration(1)}, &mocks.TransactionSignerMock{}, time.Duration(1))
3838
test.AssertNonZeroValues(t, bridge)
@@ -52,7 +52,7 @@ func TestRskBridgeImpl_GetFedAddress(t *testing.T) {
5252
t.Run("Success", func(t *testing.T) {
5353
bridgeMock := &mocks.RskBridgeAdapterMock{}
5454
bridgeMock.On("GetFederationAddress", mock.Anything).Return(test.AnyAddress, nil)
55-
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{IrisActivationHeight: 100}, bridgeMock, dummyClient, nil, rootstock.RetryParams{}, nil, time.Duration(1))
55+
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{}, bridgeMock, dummyClient, nil, rootstock.RetryParams{}, nil, time.Duration(1))
5656
result, err := bridge.GetFedAddress()
5757
assert.Equal(t, test.AnyAddress, result)
5858
require.NoError(t, err)
@@ -61,7 +61,7 @@ func TestRskBridgeImpl_GetFedAddress(t *testing.T) {
6161
t.Run("Error handling on GetFederationAddress call fail", func(t *testing.T) {
6262
bridgeMock := &mocks.RskBridgeAdapterMock{}
6363
bridgeMock.On("GetFederationAddress", mock.Anything).Return("", assert.AnError)
64-
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{IrisActivationHeight: 100}, bridgeMock, dummyClient, nil, rootstock.RetryParams{}, nil, time.Duration(1))
64+
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{}, bridgeMock, dummyClient, nil, rootstock.RetryParams{}, nil, time.Duration(1))
6565
result, err := bridge.GetFedAddress()
6666
assert.Empty(t, result)
6767
require.Error(t, err)
@@ -72,7 +72,7 @@ func TestRskBridgeImpl_GetMinimumLockTxValue(t *testing.T) {
7272
t.Run("Success", func(t *testing.T) {
7373
bridgeMock := &mocks.RskBridgeAdapterMock{}
7474
bridgeMock.On("GetMinimumLockTxValue", mock.Anything).Return(big.NewInt(5), nil)
75-
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{IrisActivationHeight: 100}, bridgeMock, dummyClient, nil, rootstock.RetryParams{}, nil, time.Duration(1))
75+
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{}, bridgeMock, dummyClient, nil, rootstock.RetryParams{}, nil, time.Duration(1))
7676
result, err := bridge.GetMinimumLockTxValue()
7777
assert.IsType(t, &entities.Wei{}, result)
7878
assert.Equal(t, entities.NewWei(50000000000), result)
@@ -82,15 +82,15 @@ func TestRskBridgeImpl_GetMinimumLockTxValue(t *testing.T) {
8282
t.Run("Error handling on GetMinimumLockTxValue call fail", func(t *testing.T) {
8383
bridgeMock := &mocks.RskBridgeAdapterMock{}
8484
bridgeMock.On("GetMinimumLockTxValue", mock.Anything).Return(nil, assert.AnError)
85-
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{IrisActivationHeight: 100}, bridgeMock, dummyClient, nil, rootstock.RetryParams{}, nil, time.Duration(1))
85+
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{}, bridgeMock, dummyClient, nil, rootstock.RetryParams{}, nil, time.Duration(1))
8686
result, err := bridge.GetMinimumLockTxValue()
8787
assert.Nil(t, result)
8888
require.Error(t, err)
8989
})
9090
}
9191

9292
func TestRskBridgeImpl_GetFlyoverDerivationAddress(t *testing.T) {
93-
const redeemScriptString = "522102cd53fc53a07f211641a677d250f6de99caf620e8e77071e811a28b3bcddf0be1210362634ab57dae9cb373a5d536e66a8c4f67468bbcfb063809bab643072d78a1242103c5946b3fbae03a654237da863c9ed534e0878657175b132b8ca630f245df04db53ae"
93+
const redeemScriptString = "64522102cd53fc53a07f211641a677d250f6de99caf620e8e77071e811a28b3bcddf0be1210362634ab57dae9cb373a5d536e66a8c4f67468bbcfb063809bab643072d78a1242103c5946b3fbae03a654237da863c9ed534e0878657175b132b8ca630f245df04db53ae670350cd00b27553210257c293086c4d4fe8943deda5f890a37d11bebd140e220faa76258a41d077b4d42103c2660a46aa73078ee6016dee953488566426cf55fc8011edd0085634d75395f92103cd3e383ec6e12719a6c69515e5559bcbe037d0aa24c187e1e26ce932e22ad7b32102370a9838e4d15708ad14a104ee5606b36caaaaf739d833e67770ce9fd9b3ec8054ae68"
9494
lbcAddress, err := hex.DecodeString("2ff74F841b95E000625b3A77fed03714874C4fEa")
9595
require.NoError(t, err)
9696
quoteHash, err := hex.DecodeString("4a3eca107f22707e5dbc79964f3e6c21ec5e354e0903391245d9fdbe6bd2b2f0")
@@ -106,7 +106,7 @@ func TestRskBridgeImpl_GetFlyoverDerivationAddress(t *testing.T) {
106106
LpBtcAddress: lpBtcAddress,
107107
QuoteHash: quoteHash,
108108
}
109-
args.FedInfo.FedAddress = "2N5muMepJizJE1gR7FbHJU6CD18V3BpNF9p"
109+
args.FedInfo.FedAddress = "2NCxHG5oK8CWLDrBpTQq6pgKE8jyoB2DpTe"
110110
t.Run("Success", func(t *testing.T) {
111111
var testError error
112112
var redeemScriptBytes []byte
@@ -115,11 +115,11 @@ func TestRskBridgeImpl_GetFlyoverDerivationAddress(t *testing.T) {
115115
redeemScriptBytes, testError = hex.DecodeString(redeemScriptString)
116116
require.NoError(t, testError)
117117
bridgeMock.On("GetActivePowpegRedeemScript", mock.Anything).Return(redeemScriptBytes, nil)
118-
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{IrisActivationHeight: 100}, bridgeMock, dummyClient, &chaincfg.TestNet3Params, rootstock.RetryParams{}, nil, time.Duration(1))
118+
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{}, bridgeMock, dummyClient, &chaincfg.TestNet3Params, rootstock.RetryParams{}, nil, time.Duration(1))
119119
result, testError = bridge.GetFlyoverDerivationAddress(args)
120120
assert.Equal(t, rsk.FlyoverDerivation{
121-
Address: "2Mx7jaPHtsgJTbqGnjU5UqBpkekHgfigXay",
122-
RedeemScript: "20ff883edd54f8cb22464a8181ed62652fcdb0028e0ada18f9828afd76e0df2c7275522102cd53fc53a07f211641a677d250f6de99caf620e8e77071e811a28b3bcddf0be1210362634ab57dae9cb373a5d536e66a8c4f67468bbcfb063809bab643072d78a1242103c5946b3fbae03a654237da863c9ed534e0878657175b132b8ca630f245df04db53ae",
121+
Address: "2MxeEHVx71taCeVsXFsfQ7TKK6v943PFVEu",
122+
RedeemScript: "20ff883edd54f8cb22464a8181ed62652fcdb0028e0ada18f9828afd76e0df2c727564522102cd53fc53a07f211641a677d250f6de99caf620e8e77071e811a28b3bcddf0be1210362634ab57dae9cb373a5d536e66a8c4f67468bbcfb063809bab643072d78a1242103c5946b3fbae03a654237da863c9ed534e0878657175b132b8ca630f245df04db53ae670350cd00b27553210257c293086c4d4fe8943deda5f890a37d11bebd140e220faa76258a41d077b4d42103c2660a46aa73078ee6016dee953488566426cf55fc8011edd0085634d75395f92103cd3e383ec6e12719a6c69515e5559bcbe037d0aa24c187e1e26ce932e22ad7b32102370a9838e4d15708ad14a104ee5606b36caaaaf739d833e67770ce9fd9b3ec8054ae68",
123123
}, result)
124124
require.NoError(t, testError)
125125
bridgeMock.AssertExpectations(t)
@@ -129,7 +129,7 @@ func TestRskBridgeImpl_GetFlyoverDerivationAddress(t *testing.T) {
129129
var result rsk.FlyoverDerivation
130130
bridgeMock := &mocks.RskBridgeAdapterMock{}
131131
bridgeMock.On("GetActivePowpegRedeemScript", mock.Anything).Return(nil, assert.AnError)
132-
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{IrisActivationHeight: 100}, bridgeMock, dummyClient, &chaincfg.TestNet3Params, rootstock.RetryParams{}, nil, time.Duration(1))
132+
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{}, bridgeMock, dummyClient, &chaincfg.TestNet3Params, rootstock.RetryParams{}, nil, time.Duration(1))
133133
result, testError = bridge.GetFlyoverDerivationAddress(args)
134134
assert.Empty(t, result)
135135
require.ErrorContains(t, testError, "error retreiving fed redeem script from bridge")
@@ -146,7 +146,7 @@ func TestRskBridgeImpl_FetchFederationInfo(t *testing.T) {
146146
bridgeMock.On("GetFederationAddress", mock.Anything).Return(test.AnyAddress, nil).Once()
147147
bridgeMock.On("GetActiveFederationCreationBlockHeight", mock.Anything).Return(big.NewInt(500), nil).Once()
148148

149-
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{IrisActivationHeight: 100, ErpKeys: []string{"key1", "key2", "key3"}},
149+
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{ErpKeys: []string{"key1", "key2", "key3"}, UseSegwitFederation: true},
150150
bridgeMock, dummyClient, &chaincfg.TestNet3Params, rootstock.RetryParams{}, nil, time.Duration(1))
151151
fedInfo, err := bridge.FetchFederationInfo()
152152
require.NoError(t, err)
@@ -156,8 +156,8 @@ func TestRskBridgeImpl_FetchFederationInfo(t *testing.T) {
156156
FedAddress: test.AnyAddress,
157157
PubKeys: []string{"010203", "0a0b0c"},
158158
ActiveFedBlockHeight: 500,
159-
IrisActivationHeight: 100,
160159
ErpKeys: []string{"key1", "key2", "key3"},
160+
UseSegwit: true,
161161
}, fedInfo)
162162
bridgeMock.AssertExpectations(t)
163163
})
@@ -166,7 +166,7 @@ func TestRskBridgeImpl_FetchFederationInfo(t *testing.T) {
166166
for _, setUp := range fetchFedInfoErrorSetUps() {
167167
bridgeMock := &mocks.RskBridgeAdapterMock{}
168168
setUp(bridgeMock)
169-
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{IrisActivationHeight: 100}, bridgeMock, dummyClient, &chaincfg.TestNet3Params, rootstock.RetryParams{}, nil, time.Duration(1))
169+
bridge := rootstock.NewRskBridgeImpl(rootstock.RskBridgeConfig{}, bridgeMock, dummyClient, &chaincfg.TestNet3Params, rootstock.RetryParams{}, nil, time.Duration(1))
170170
result, err := bridge.FetchFederationInfo()
171171
require.Error(t, err)
172172
assert.Empty(t, result)

0 commit comments

Comments
 (0)