From 1f824f73acfe26608e0386e371c2c351c4a95c1b Mon Sep 17 00:00:00 2001 From: jeremy-then Date: Thu, 26 Oct 2023 21:08:41 -0400 Subject: [PATCH 1/5] Refactors fedchange file enough to make it run on its own. Added new disableWhitelisting function --- lib/assertions/whitelisting.js | 18 ++++++ package.json | 8 +-- tests/04_00_02-fedchange.js | 105 +++++++++++++++++++-------------- 3 files changed, 83 insertions(+), 48 deletions(-) diff --git a/lib/assertions/whitelisting.js b/lib/assertions/whitelisting.js index 96557858..f0d39495 100644 --- a/lib/assertions/whitelisting.js +++ b/lib/assertions/whitelisting.js @@ -171,6 +171,23 @@ const assertWhitelistAddressPresence = async (rskTxHelper, btcAddress, present) }; +/** + * + * @param {RskTransactionHelper} rskTxHelper + * @param {BtcTransactionHelper} btcTxHelper + */ +const disableWhitelisting = async (rskTxHelper, btcTxHelper, blockDelay = 1, mineDelayBlocks = true) => { + const bridge = getBridge(rskTxHelper.getClient()); + const unlocked = await rskUtils.getUnlockedAddress(rskTxHelper, WHITELIST_CHANGE_PK, WHITELIST_CHANGE_ADDR); + expect(unlocked).to.be.true; + const disableLockWhitelistMethod = bridge.methods.setLockWhitelistDisableBlockDelay(blockDelay); + const disableResultCallback = (disableResult) => expect(Number(disableResult)).to.equal(1); + await rskUtils.sendTxWithCheck(rskTxHelper, disableLockWhitelistMethod, WHITELIST_CHANGE_ADDR, disableResultCallback); + if(mineDelayBlocks) { + await btcTxHelper.mine(blockDelay); + } +} + module.exports = { assertAddOneOffWhitelistAddress, assertAddUnlimitedWhitelistAddress, @@ -178,6 +195,7 @@ module.exports = { assertWhitelistAddressPresence, assertAddLockWhitelistAddress, assertAddLimitedLockWhitelistAddress, + disableWhitelisting, WHITELIST_CHANGE_PK, WHITELIST_CHANGE_ADDR, }; diff --git a/package.json b/package.json index 3194ebbf..3573da05 100644 --- a/package.json +++ b/package.json @@ -34,12 +34,12 @@ "mocha-junit-reporter": "^1.17.0", "pegin-address-verificator": "git+https://git@github.com/rsksmart/pegin-address-verifier#v0.2.1", "peglib": "git+https://github.com/rsksmart/rsk-peglib#v1.4.15", + "precompiled-fingerroot500": "npm:@rsksmart/rsk-precompiled-abis@^5.0.0-FINGERROOT", + "precompiled-hop400": "npm:@rsksmart/rsk-precompiled-abis@^5.0.0-HOP", + "precompiled-iris300": "npm:@rsksmart/rsk-precompiled-abis@^4.0.0-IRIS", "precompiled-orchid": "npm:@rsksmart/rsk-precompiled-abis@^1.0.0-ORCHID", - "precompiled-wasabi100": "npm:@rsksmart/rsk-precompiled-abis@^2.0.0-WASABI", "precompiled-papyrus200": "npm:@rsksmart/rsk-precompiled-abis@^3.0.0-PAPYRUS", - "precompiled-iris300": "npm:@rsksmart/rsk-precompiled-abis@^4.0.0-IRIS", - "precompiled-hop400": "npm:@rsksmart/rsk-precompiled-abis@^5.0.0-HOP", - "precompiled-fingerroot500": "npm:@rsksmart/rsk-precompiled-abis@^5.0.0-FINGERROOT", + "precompiled-wasabi100": "npm:@rsksmart/rsk-precompiled-abis@^2.0.0-WASABI", "rsk-transaction-helper": "git+https://github.com/rsksmart/rootstock-transaction-helper#v3.1.0", "solc": "^0.7.5", "stream-line-wrapper": "^0.1.1", diff --git a/tests/04_00_02-fedchange.js b/tests/04_00_02-fedchange.js index 9188a808..228c065a 100644 --- a/tests/04_00_02-fedchange.js +++ b/tests/04_00_02-fedchange.js @@ -1,6 +1,6 @@ const expect = require('chai').expect const BN = require('bn.js'); -var { sequentialPromise, wait, randomElement, randomNElements, additionalFederationAddresses } = require('../lib/utils'); +const { sequentialPromise, wait, randomElement, randomNElements, additionalFederationAddresses } = require('../lib/utils'); const CustomError = require('../lib/CustomError'); const peglib = require('peglib'); const redeemScriptParser = require('@rsksmart/powpeg-redeemscript-parser'); @@ -9,6 +9,7 @@ const bitcoin = peglib.bitcoin; const rsk = peglib.rsk; const pegUtils = peglib.pegUtils; const pegAssertions = require('../lib/assertions/2wp'); +const whitelistingAssertions = require('../lib/assertions/whitelisting'); const whitelistingAssertionsLegacy = require('../lib/assertions/whitelisting-legacy'); const rskUtilsLegacy = require('../lib/rsk-utils-legacy'); const rskUtils = require('../lib/rsk-utils'); @@ -17,6 +18,8 @@ const libUtils = require('../lib/utils'); const { getRskTransactionHelpers } = require('../lib/rsk-tx-helper-provider'); const { getBtcClient } = require('../lib/btc-client-provider'); const removePrefix0x = require("../lib/utils").removePrefix0x; +const btcEthUnitConverter = require('@rsksmart/btc-eth-unit-converter'); +const { sendPegin, ensurePeginIsRegistered } = require('../lib/2wp-utils'); const { KEY_TYPE_BTC, KEY_TYPE_RSK, @@ -54,33 +57,44 @@ const PENDING_FEDERATION_RANDOM_HASH = '0x27da3e662acf8862ba5c42fbdcc023c4f81355 const INITIAL_BTC_BALANCE = bitcoin.btcToSatoshis(200); const EXPECTED_UNSUCCESSFUL_RESULT = -10; -var btcClient; -var rskClientOldFed; -var rskClientNewFed; -var rskClients; -var pegClient; -var test; -var testNewFed; -var utils; -var expectedNewFederationCreationTime, expectedNewFederationCreationBlockNumber; -var oldFederation; -var newFederationBtcPublicKeys; -var newFederationPublicKeys; -var newFederatorRskAddressesRsk; -var expectedNewFederationAddress; +let btcClient; +let rskClientOldFed; +let rskClientNewFed; +let rskClients; +let pegClient; +let test; +let testNewFed; +let utils; +let expectedNewFederationCreationTime, expectedNewFederationCreationBlockNumber; +let oldFederation; +let newFederationBtcPublicKeys; +let newFederationPublicKeys; +let newFederatorRskAddressesRsk; +let expectedNewFederationAddress; let p2shErpFedRedeemScript; -var expectedNewFederationThreshold; +let expectedNewFederationThreshold; let amountOfUtxosToMigrate; let federationBalanceBeforeMigration; let whitelistingAssertionsTestLegacy; let rskTxHelpers; let btcTxHelper; +let rskTxHelper; + +/** + * Takes the blockchain to the required state for this test file to run in isolation. + */ +const fulfillRequirementsToRunAsSingleTestFile = async (rskTxHelper, btcTxHelper) => { + await rskUtils.activateFork(Runners.common.forks.fingerroot500); + await whitelistingAssertions.disableWhitelisting(rskTxHelper, btcTxHelper); +}; describe('RSK Federation change', function() { - var addresses; + let addresses; before(async () => { + try { + rskClientOldFed = rsk.getClient(Runners.hosts.federate.host); await Runners.startAdditionalFederateNodes(await rskClientOldFed.eth.getBlock('latest')); btcClient = bitcoin.getClient( @@ -90,6 +104,13 @@ describe('RSK Federation change', function() { NETWORK ); rskClients = Runners.hosts.federates.map(federate => rsk.getClient(federate.host)); + rskTxHelpers = getRskTransactionHelpers(); + rskTxHelper = rskTxHelpers[0]; + btcTxHelper = getBtcClient(); + + if(process.env.RUNNING_SINGLE_TEST_FILE) { + await fulfillRequirementsToRunAsSingleTestFile(rskTxHelpers[0], btcTxHelper); + } // Assume the last of the running federators belongs to the new federation rskClientNewFed = rskClients[rskClients.length-1]; @@ -101,9 +122,7 @@ describe('RSK Federation change', function() { whitelistingAssertionstestNewFed = whitelistingAssertionsLegacy.with(btcClient, rskClientNewFed, pegClient); utils = rskUtilsLegacy.with(btcClient, rskClientOldFed, pegClient); utilsNewFed = rskUtilsLegacy.with(btcClient, rskClientNewFed, pegClient); - rskTxHelpers = getRskTransactionHelpers(); - btcTxHelper = getBtcClient(); - + await rskUtilsLegacy.waitForSync(rskClients); // Grab the new federation public keys and calculate the federators addresses and expected federation @@ -305,36 +324,34 @@ describe('RSK Federation change', function() { // this is not an actual test, this just modifies the blockchain state ensuring that the active federation contains several UTXOs it('generates several UTXOs in the active federation', async () => { - try{ + try { + const EXPECTED_UTXOS = 15; - let bridgeStatus = await getBridgeState(rskClientNewFed); - let existingUtxos = bridgeStatus.activeFederationUtxos.length; - amountOfUtxosToMigrate = existingUtxos < EXPECTED_UTXOS ? EXPECTED_UTXOS : existingUtxos; + const bridgeStatus = await getBridgeState(rskClientNewFed); + const existingUtxosCount = bridgeStatus.activeFederationUtxos.length; + amountOfUtxosToMigrate = existingUtxosCount < EXPECTED_UTXOS ? EXPECTED_UTXOS : existingUtxosCount; // Ensure there are enough UTXOs so that the migration need to be done in more than one transaction - if (existingUtxos < EXPECTED_UTXOS) { + if (existingUtxosCount < EXPECTED_UTXOS) { + const UTXOS_TO_PAY_FEES = 1 - const UTXOS_TO_TRANSFER = EXPECTED_UTXOS - existingUtxos; - var utxosToGenerate = UTXOS_TO_TRANSFER + UTXOS_TO_PAY_FEES; - var utxoValue = bitcoin.btcToSatoshis(1); - - let activeFederationAddress = await getActiveFederationAddress(); - var addresses = await pegClient.generateNewAddress('for_migration'); - expect(addresses.inRSK).to.be.true; - - await btcClient.sendToAddress(addresses.btc, utxoValue * utxosToGenerate); - await btcClient.generate(1); - await test.assertBitcoinBalance(addresses.btc, utxoValue * utxosToGenerate, "Wrong balance in account to migrate"); - await wait(1000); - await sequentialPromise( - UTXOS_TO_TRANSFER, - () => test.assertLock(addresses, [{ address: activeFederationAddress, amount: utxoValue }]) - ); + const UTXOS_TO_TRANSFER = EXPECTED_UTXOS - existingUtxosCount; + const utxosToGenerate = UTXOS_TO_TRANSFER + UTXOS_TO_PAY_FEES; + const utxoValueInSatoshis = bitcoin.btcToSatoshis(1); + const peginSenderAddressInfo = await btcTxHelper.generateBtcAddress('legacy'); + const totalAmountToSendInSatoshis = (utxoValueInSatoshis * utxosToGenerate) + (utxosToGenerate * btcEthUnitConverter.btcToSatoshis(btcTxHelper.getFee())); + + await btcTxHelper.fundAddress(peginSenderAddressInfo.address, btcEthUnitConverter.satoshisToBtc(totalAmountToSendInSatoshis)); + + for(let i = 0; i < utxosToGenerate; i++) { + const peginBtcTxHash = await sendPegin(rskTxHelper, btcTxHelper, peginSenderAddressInfo, btcEthUnitConverter.satoshisToBtc(utxoValueInSatoshis)); + await ensurePeginIsRegistered(rskTxHelper, peginBtcTxHash); + } + } - await rskUtilsLegacy.waitForSync(rskClients); - bridgeStatus = await getBridgeState(rskClientNewFed); - federationBalanceBeforeMigration = bridgeStatus.activeFederationUtxos.reduce( + const finalBridgeStatus = await getBridgeState(rskClientNewFed); + federationBalanceBeforeMigration = finalBridgeStatus.activeFederationUtxos.reduce( (previousValue, currentUtxo) => previousValue + currentUtxo.valueInSatoshis, 0 ); } catch (err) { From f48df9dd6f7cf625b2f7a0f95831decb9fd64969 Mon Sep 17 00:00:00 2001 From: jeremy-then Date: Mon, 30 Oct 2023 01:31:21 -0400 Subject: [PATCH 2/5] Updates disableWhitelisting function --- lib/2wp-utils.js | 34 +++++++++++++++------------------- lib/assertions/whitelisting.js | 18 ------------------ tests/04_00_02-fedchange.js | 10 +++++----- 3 files changed, 20 insertions(+), 42 deletions(-) diff --git a/lib/2wp-utils.js b/lib/2wp-utils.js index 189a2f1c..ce50f05b 100644 --- a/lib/2wp-utils.js +++ b/lib/2wp-utils.js @@ -242,28 +242,24 @@ const donateToBridge = async (rskTxHelper, btcTxHelper, donatingBtcAddressInform }; /** - * Disabling whitelisting + * Disable the whitelisting in the bridge and mine the required blocks specified in the blockDelay parameter if mineDelayBlocks is true * @param {RskTransactionHelper} rskTxHelper * @param {BtcTransactionHelper} btcTxHelper + * @param {number} blockDelay default 1 + * @param {boolean} mineDelayBlocks default true + * @returns {Promise} */ -const disableWhitelisting = async (rskTxHelper, btcTxHelper) => { - const btcBlocksToMine = 1; - const latestActiveForkName = await getLatestActiveForkName(); - const bridge = getBridge(rskTxHelper.getClient(), latestActiveForkName); - - const whitelistChangeAddress = await rskTxHelper.importAccount(WHITELIST_CHANGE_PK); - expect(whitelistChangeAddress.slice(2)).to.equal(WHITELIST_CHANGE_ADDR); - await rskTxHelper.unlockAccount(whitelistChangeAddress); - - await sendTxWithCheck( - rskTxHelper, - bridge.methods.setLockWhitelistDisableBlockDelay(btcBlocksToMine), - WHITELIST_CHANGE_ADDR, - (disableResult) => expect(Number(disableResult)).to.equal(1) - ); - - btcTxHelper.mine(btcBlocksToMine); -} +const disableWhitelisting = async (rskTxHelper, btcTxHelper, blockDelay = 1, mineDelayBlocks = true) => { + const bridge = getBridge(rskTxHelper.getClient()); + const unlocked = await rskUtils.getUnlockedAddress(rskTxHelper, WHITELIST_CHANGE_PK, WHITELIST_CHANGE_ADDR); + expect(unlocked).to.be.true; + const disableLockWhitelistMethod = bridge.methods.setLockWhitelistDisableBlockDelay(blockDelay); + const disableResultCallback = (disableResult) => expect(Number(disableResult)).to.equal(1); + await rskUtils.sendTxWithCheck(rskTxHelper, disableLockWhitelistMethod, WHITELIST_CHANGE_ADDR, disableResultCallback); + if(mineDelayBlocks) { + await btcTxHelper.mine(blockDelay); + } +}; module.exports = { sendTxToBridge, diff --git a/lib/assertions/whitelisting.js b/lib/assertions/whitelisting.js index f0d39495..96557858 100644 --- a/lib/assertions/whitelisting.js +++ b/lib/assertions/whitelisting.js @@ -171,23 +171,6 @@ const assertWhitelistAddressPresence = async (rskTxHelper, btcAddress, present) }; -/** - * - * @param {RskTransactionHelper} rskTxHelper - * @param {BtcTransactionHelper} btcTxHelper - */ -const disableWhitelisting = async (rskTxHelper, btcTxHelper, blockDelay = 1, mineDelayBlocks = true) => { - const bridge = getBridge(rskTxHelper.getClient()); - const unlocked = await rskUtils.getUnlockedAddress(rskTxHelper, WHITELIST_CHANGE_PK, WHITELIST_CHANGE_ADDR); - expect(unlocked).to.be.true; - const disableLockWhitelistMethod = bridge.methods.setLockWhitelistDisableBlockDelay(blockDelay); - const disableResultCallback = (disableResult) => expect(Number(disableResult)).to.equal(1); - await rskUtils.sendTxWithCheck(rskTxHelper, disableLockWhitelistMethod, WHITELIST_CHANGE_ADDR, disableResultCallback); - if(mineDelayBlocks) { - await btcTxHelper.mine(blockDelay); - } -} - module.exports = { assertAddOneOffWhitelistAddress, assertAddUnlimitedWhitelistAddress, @@ -195,7 +178,6 @@ module.exports = { assertWhitelistAddressPresence, assertAddLockWhitelistAddress, assertAddLimitedLockWhitelistAddress, - disableWhitelisting, WHITELIST_CHANGE_PK, WHITELIST_CHANGE_ADDR, }; diff --git a/tests/04_00_02-fedchange.js b/tests/04_00_02-fedchange.js index 228c065a..d26b359b 100644 --- a/tests/04_00_02-fedchange.js +++ b/tests/04_00_02-fedchange.js @@ -9,7 +9,6 @@ const bitcoin = peglib.bitcoin; const rsk = peglib.rsk; const pegUtils = peglib.pegUtils; const pegAssertions = require('../lib/assertions/2wp'); -const whitelistingAssertions = require('../lib/assertions/whitelisting'); const whitelistingAssertionsLegacy = require('../lib/assertions/whitelisting-legacy'); const rskUtilsLegacy = require('../lib/rsk-utils-legacy'); const rskUtils = require('../lib/rsk-utils'); @@ -19,7 +18,7 @@ const { getRskTransactionHelpers } = require('../lib/rsk-tx-helper-provider'); const { getBtcClient } = require('../lib/btc-client-provider'); const removePrefix0x = require("../lib/utils").removePrefix0x; const btcEthUnitConverter = require('@rsksmart/btc-eth-unit-converter'); -const { sendPegin, ensurePeginIsRegistered } = require('../lib/2wp-utils'); +const { sendPegin, ensurePeginIsRegistered, disableWhitelisting } = require('../lib/2wp-utils'); const { KEY_TYPE_BTC, KEY_TYPE_RSK, @@ -84,8 +83,8 @@ let rskTxHelper; * Takes the blockchain to the required state for this test file to run in isolation. */ const fulfillRequirementsToRunAsSingleTestFile = async (rskTxHelper, btcTxHelper) => { - await rskUtils.activateFork(Runners.common.forks.fingerroot500); - await whitelistingAssertions.disableWhitelisting(rskTxHelper, btcTxHelper); + await rskUtils.activateFork(rskUtils.getLatestForkName()); + await disableWhitelisting(rskTxHelper, btcTxHelper); }; describe('RSK Federation change', function() { @@ -339,7 +338,8 @@ describe('RSK Federation change', function() { const utxosToGenerate = UTXOS_TO_TRANSFER + UTXOS_TO_PAY_FEES; const utxoValueInSatoshis = bitcoin.btcToSatoshis(1); const peginSenderAddressInfo = await btcTxHelper.generateBtcAddress('legacy'); - const totalAmountToSendInSatoshis = (utxoValueInSatoshis * utxosToGenerate) + (utxosToGenerate * btcEthUnitConverter.btcToSatoshis(btcTxHelper.getFee())); + const totalFeesInSatoshis = (utxosToGenerate * btcEthUnitConverter.btcToSatoshis(btcTxHelper.getFee())); + const totalAmountToSendInSatoshis = (utxoValueInSatoshis * utxosToGenerate) + totalFeesInSatoshis; await btcTxHelper.fundAddress(peginSenderAddressInfo.address, btcEthUnitConverter.satoshisToBtc(totalAmountToSendInSatoshis)); From c6b4de9c2f38efa236e979a39a7e0f698a5178d9 Mon Sep 17 00:00:00 2001 From: jeremy-then Date: Thu, 2 Nov 2023 23:52:24 -0400 Subject: [PATCH 3/5] Changes disableWhitelisting optional parameters order --- lib/2wp-utils.js | 2 +- tests/04_00_02-fedchange.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/2wp-utils.js b/lib/2wp-utils.js index ce50f05b..42fb673e 100644 --- a/lib/2wp-utils.js +++ b/lib/2wp-utils.js @@ -249,7 +249,7 @@ const donateToBridge = async (rskTxHelper, btcTxHelper, donatingBtcAddressInform * @param {boolean} mineDelayBlocks default true * @returns {Promise} */ -const disableWhitelisting = async (rskTxHelper, btcTxHelper, blockDelay = 1, mineDelayBlocks = true) => { +const disableWhitelisting = async (rskTxHelper, btcTxHelper, mineDelayBlocks = true, blockDelay = 1) => { const bridge = getBridge(rskTxHelper.getClient()); const unlocked = await rskUtils.getUnlockedAddress(rskTxHelper, WHITELIST_CHANGE_PK, WHITELIST_CHANGE_ADDR); expect(unlocked).to.be.true; diff --git a/tests/04_00_02-fedchange.js b/tests/04_00_02-fedchange.js index d26b359b..483206eb 100644 --- a/tests/04_00_02-fedchange.js +++ b/tests/04_00_02-fedchange.js @@ -108,7 +108,7 @@ describe('RSK Federation change', function() { btcTxHelper = getBtcClient(); if(process.env.RUNNING_SINGLE_TEST_FILE) { - await fulfillRequirementsToRunAsSingleTestFile(rskTxHelpers[0], btcTxHelper); + await fulfillRequirementsToRunAsSingleTestFile(rskTxHelper, btcTxHelper); } // Assume the last of the running federators belongs to the new federation From 6ea9e4ccc2a28bfb7604f61b7996c995e719f6a4 Mon Sep 17 00:00:00 2001 From: jeremy-then Date: Thu, 2 Nov 2023 23:54:33 -0400 Subject: [PATCH 4/5] Updates disableWhitelisting docs --- lib/2wp-utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/2wp-utils.js b/lib/2wp-utils.js index 42fb673e..5c02a6e3 100644 --- a/lib/2wp-utils.js +++ b/lib/2wp-utils.js @@ -245,8 +245,8 @@ const donateToBridge = async (rskTxHelper, btcTxHelper, donatingBtcAddressInform * Disable the whitelisting in the bridge and mine the required blocks specified in the blockDelay parameter if mineDelayBlocks is true * @param {RskTransactionHelper} rskTxHelper * @param {BtcTransactionHelper} btcTxHelper - * @param {number} blockDelay default 1 * @param {boolean} mineDelayBlocks default true + * @param {number} blockDelay default 1 * @returns {Promise} */ const disableWhitelisting = async (rskTxHelper, btcTxHelper, mineDelayBlocks = true, blockDelay = 1) => { From 046c06cb8635ea0910036e5882d977e49831112d Mon Sep 17 00:00:00 2001 From: jeremy-then Date: Fri, 3 Nov 2023 16:37:28 -0400 Subject: [PATCH 5/5] removes unnecessary parameter from disableWhitelisting function --- lib/2wp-utils.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/2wp-utils.js b/lib/2wp-utils.js index 5c02a6e3..bfd105b0 100644 --- a/lib/2wp-utils.js +++ b/lib/2wp-utils.js @@ -242,21 +242,20 @@ const donateToBridge = async (rskTxHelper, btcTxHelper, donatingBtcAddressInform }; /** - * Disable the whitelisting in the bridge and mine the required blocks specified in the blockDelay parameter if mineDelayBlocks is true + * Disable the whitelisting in the bridge and mine the required blocks specified in the blockDelay parameter. * @param {RskTransactionHelper} rskTxHelper * @param {BtcTransactionHelper} btcTxHelper - * @param {boolean} mineDelayBlocks default true - * @param {number} blockDelay default 1 + * @param {number} blockDelay defaults to 1. If a 0 or negative number is passed, then it will not mine. If a number greater than 0 is passed, it will mine the specified number of blocks. * @returns {Promise} */ -const disableWhitelisting = async (rskTxHelper, btcTxHelper, mineDelayBlocks = true, blockDelay = 1) => { +const disableWhitelisting = async (rskTxHelper, btcTxHelper, blockDelay = 1) => { const bridge = getBridge(rskTxHelper.getClient()); const unlocked = await rskUtils.getUnlockedAddress(rskTxHelper, WHITELIST_CHANGE_PK, WHITELIST_CHANGE_ADDR); expect(unlocked).to.be.true; const disableLockWhitelistMethod = bridge.methods.setLockWhitelistDisableBlockDelay(blockDelay); const disableResultCallback = (disableResult) => expect(Number(disableResult)).to.equal(1); await rskUtils.sendTxWithCheck(rskTxHelper, disableLockWhitelistMethod, WHITELIST_CHANGE_ADDR, disableResultCallback); - if(mineDelayBlocks) { + if(blockDelay > 0) { await btcTxHelper.mine(blockDelay); } };