Skip to content

Commit 6316add

Browse files
committed
feat: bury WITHDRAWALS deployment
1 parent 00de0cf commit 6316add

File tree

9 files changed

+35
-101
lines changed

9 files changed

+35
-101
lines changed

src/chainparams.cpp

Lines changed: 7 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,8 @@ class CMainParams : public CChainParams {
193193
consensus.V19Height = 1899072; // 0000000000000015e32e73052d663626327004c81c5c22cb8b42c361015c0eae
194194
consensus.V20Height = 1987776; // 000000000000001bf41cff06b76780050682ca29e61a91c391893d4745579777
195195
consensus.MN_RRHeight = 2128896; // 0000000000000009a9696da93d3807eb14eb00a4ff449206d689156a21b27f26
196-
consensus.MinBIP9WarningHeight = 2128896 + 2016; // mn_rr activation height + miner confirmation window
196+
consensus.WithdrawalsHeight = 2201472; // 00000000000000210518749e17c00b035a2a4982c906236c28c41ea2231bf7ef
197+
consensus.MinBIP9WarningHeight = 2201472 + 2016; // withdrawals activation height + miner confirmation window
197198
consensus.powLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); // ~uint256(0) >> 20
198199
consensus.nPowTargetTimespan = 24 * 60 * 60; // Dash: 1 day
199200
consensus.nPowTargetSpacing = 2.5 * 60; // Dash: 2.5 minutes
@@ -208,15 +209,6 @@ class CMainParams : public CChainParams {
208209
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
209210
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
210211

211-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].bit = 11;
212-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nStartTime = 1728864000; // October 14, 2024
213-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nTimeout = 1760400000; // October 14, 2025
214-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nWindowSize = 4032;
215-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nThresholdStart = 3226; // 80% of 4032
216-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nThresholdMin = 2420; // 60% of 4032
217-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
218-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
219-
220212
// The best chain should have at least this much work.
221213
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000a39050764808db046f5c"); // 2216986
222214

@@ -390,7 +382,8 @@ class CTestNetParams : public CChainParams {
390382
consensus.V19Height = 850100; // 000004728b8ff2a16b9d4eebb0fd61eeffadc9c7fe4b0ec0b5a739869401ab5b
391383
consensus.V20Height = 905100; // 0000020c5e0f86f385cbf8e90210de9a9fd63633f01433bf47a6b3227a2851fd
392384
consensus.MN_RRHeight = 1066900; // 000000d05d445958a9a4ad6bdc0f4bfb25af124b2326060703373ff2d3b397e9
393-
consensus.MinBIP9WarningHeight = 1066900 + 2016; // mn_rr activation height + miner confirmation window
385+
consensus.WithdrawalsHeight = 1148500; // 000000212a6fec2ee2af040c6d7a176360b154cbaa998888170cfd9ae7dd632d
386+
consensus.MinBIP9WarningHeight = 1148500 + 2016; // withdrawals activation height + miner confirmation window
394387
consensus.powLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); // ~uint256(0) >> 20
395388
consensus.nPowTargetTimespan = 24 * 60 * 60; // Dash: 1 day
396389
consensus.nPowTargetSpacing = 2.5 * 60; // Dash: 2.5 minutes
@@ -405,15 +398,6 @@ class CTestNetParams : public CChainParams {
405398
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
406399
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
407400

408-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].bit = 11;
409-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nStartTime = 1728864000; // October 14, 2024
410-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
411-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nWindowSize = 100;
412-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nThresholdStart = 80; // 80% of 100
413-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nThresholdMin = 60; // 60% of 100
414-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
415-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
416-
417401
// The best chain should have at least this much work.
418402
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000031f769ba78b4bee"); // 1189000
419403

@@ -562,7 +546,8 @@ class CDevNetParams : public CChainParams {
562546
consensus.V19Height = 2; // V19 activated immediately on devnet
563547
consensus.V20Height = 2; // V20 activated immediately on devnet
564548
consensus.MN_RRHeight = 2; // MN_RR activated immediately on devnet
565-
consensus.MinBIP9WarningHeight = 2 + 2016; // v19 activation height + miner confirmation window
549+
consensus.WithdrawalsHeight = 2; // withdrawals activated immediately on devnet
550+
consensus.MinBIP9WarningHeight = 2 + 2016; // withdrawals activation height + miner confirmation window
566551
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); // ~uint256(0) >> 1
567552
consensus.nPowTargetTimespan = 24 * 60 * 60; // Dash: 1 day
568553
consensus.nPowTargetSpacing = 2.5 * 60; // Dash: 2.5 minutes
@@ -577,15 +562,6 @@ class CDevNetParams : public CChainParams {
577562
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
578563
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
579564

580-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].bit = 11;
581-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nStartTime = 1704067200; // January 1, 2024
582-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
583-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nWindowSize = 120;
584-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nThresholdStart = 80; // 80% of 100
585-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nThresholdMin = 60; // 60% of 100
586-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
587-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
588-
589565
// The best chain should have at least this much work.
590566
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000000000000000000");
591567

@@ -797,6 +773,7 @@ class CRegTestParams : public CChainParams {
797773
consensus.V19Height = 1; // Always active unless overriden
798774
consensus.V20Height = 900;
799775
consensus.MN_RRHeight = 900;
776+
consensus.WithdrawalsHeight = 1; // Always active unless overriden
800777
consensus.MinBIP9WarningHeight = 0;
801778
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); // ~uint256(0) >> 1
802779
consensus.nPowTargetTimespan = 24 * 60 * 60; // Dash: 1 day
@@ -813,15 +790,6 @@ class CRegTestParams : public CChainParams {
813790
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
814791
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
815792

816-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].bit = 11;
817-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nStartTime = 0;
818-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
819-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nWindowSize = 200;
820-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nThresholdStart = 200 / 5 * 4; // 80% of window size
821-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nThresholdMin = 200 / 5 * 3; // 60% of window size
822-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].nFalloffCoeff = 5; // this corresponds to 10 periods
823-
consensus.vDeployments[Consensus::DEPLOYMENT_WITHDRAWALS].useEHF = true;
824-
825793
// The best chain should have at least this much work.
826794
consensus.nMinimumChainWork = uint256S("0x00");
827795

src/consensus/params.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ enum BuriedDeployment : int16_t {
3434
DEPLOYMENT_V19,
3535
DEPLOYMENT_V20,
3636
DEPLOYMENT_MN_RR,
37+
DEPLOYMENT_WITHDRAWALS,
3738
};
38-
constexpr bool ValidDeployment(BuriedDeployment dep) { return dep <= DEPLOYMENT_MN_RR; }
39+
constexpr bool ValidDeployment(BuriedDeployment dep) { return dep <= DEPLOYMENT_WITHDRAWALS; }
3940

4041
enum DeploymentPos : uint16_t {
4142
DEPLOYMENT_TESTDUMMY,
42-
DEPLOYMENT_WITHDRAWALS, // Deployment of Fix for quorum selection for withdrawals
4343
// NOTE: Also add new deployments to VersionBitsDeploymentInfo in deploymentinfo.cpp
4444
MAX_VERSION_BITS_DEPLOYMENTS
4545
};
@@ -146,6 +146,8 @@ struct Params {
146146
int V20Height;
147147
/** Block height at which MN_RR (Deployment of Masternode Reward Location Reallocation) becomes active */
148148
int MN_RRHeight;
149+
/** Block height at which WITHDRAWALS (Deployment of quorum fix and higher limits for withdrawals) becomes active */
150+
int WithdrawalsHeight;
149151
/** Don't warn about unknown BIP 9 activations below this height.
150152
* This prevents us from warning about the CSV and DIP activations. */
151153
int MinBIP9WarningHeight;
@@ -213,6 +215,8 @@ struct Params {
213215
return V20Height;
214216
case DEPLOYMENT_MN_RR:
215217
return MN_RRHeight;
218+
case DEPLOYMENT_WITHDRAWALS:
219+
return WithdrawalsHeight;
216220
} // no default case, so the compiler can warn about missing cases
217221
return std::numeric_limits<int>::max();
218222
}

src/deploymentinfo.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@ const struct VBDeploymentInfo VersionBitsDeploymentInfo[Consensus::MAX_VERSION_B
1111
/*.name =*/ "testdummy",
1212
/*.gbt_force =*/ true,
1313
},
14-
{
15-
/*.name =*/"withdrawals",
16-
/*.gbt_force =*/true,
17-
},
1814
};
1915

2016
std::string DeploymentName(Consensus::BuriedDeployment dep)
@@ -49,6 +45,8 @@ std::string DeploymentName(Consensus::BuriedDeployment dep)
4945
return "v20";
5046
case Consensus::DEPLOYMENT_MN_RR:
5147
return "mn_rr";
48+
case Consensus::DEPLOYMENT_WITHDRAWALS:
49+
return "withdrawals";
5250
} // no default case, so the compiler can warn about missing cases
5351
return "";
5452
}

src/evo/assetlocktx.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,8 @@ bool CAssetUnlockPayload::VerifySig(const llmq::CQuorumManager& qman, const uint
120120
const auto& llmq_params_opt = Params().GetLLMQ(llmqType);
121121
assert(llmq_params_opt.has_value());
122122

123-
// We check two quorums before DEPLOYMENT_WITHDRAWALS activation
124-
// and "all active quorums + 1 the latest inactive" after activation.
125-
const int quorums_to_scan = DeploymentActiveAt(*pindexTip, Params().GetConsensus(), Consensus::DEPLOYMENT_WITHDRAWALS)
126-
? (llmq_params_opt->signingActiveQuorumCount + 1)
127-
: 2;
123+
// We check all active quorums + 1 the latest inactive
124+
const int quorums_to_scan = llmq_params_opt->signingActiveQuorumCount + 1;
128125
const auto quorums = qman.ScanQuorums(llmqType, pindexTip, quorums_to_scan);
129126

130127
if (bool isActive = std::any_of(quorums.begin(), quorums.end(), [&](const auto &q) { return q->qc->quorumHash == quorumHash; }); !isActive) {

src/evo/creditpool.cpp

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -181,18 +181,10 @@ CCreditPool CCreditPoolManager::ConstructCreditPool(const gsl::not_null<const CB
181181
}
182182
}
183183

184-
CAmount currentLimit = locked;
184+
CAmount currentLimit = std::min(locked, LimitAmount);
185185
const CAmount latelyUnlocked = prev.latelyUnlocked + blockData.unlocked - distantUnlocked;
186-
if (DeploymentActiveAt(*block_index, Params().GetConsensus(), Consensus::DEPLOYMENT_WITHDRAWALS)) {
187-
currentLimit = std::min(currentLimit, LimitAmountV22);
188-
} else {
189-
// Unlock limits in pre-v22 are max(100, min(.10 * assetlockpool, 1000)) inside window
190-
if (currentLimit + latelyUnlocked > LimitAmountLow) {
191-
currentLimit = std::max(LimitAmountLow, locked / 10) - latelyUnlocked;
192-
if (currentLimit < 0) currentLimit = 0;
193-
}
194-
currentLimit = std::min(currentLimit, LimitAmountHigh - latelyUnlocked);
195-
}
186+
currentLimit = std::min(currentLimit, LimitAmount - latelyUnlocked);
187+
if (currentLimit < 0) currentLimit = 0;
196188

197189
if (currentLimit != 0 || latelyUnlocked > 0 || locked > 0) {
198190
LogPrint(BCLog::CREDITPOOL, /* Continued */

src/evo/creditpool.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,7 @@ class CCreditPoolManager
116116
static constexpr int DISK_SNAPSHOT_PERIOD = 576; // once per day
117117

118118
public:
119-
static constexpr CAmount LimitAmountLow = 100 * COIN;
120-
static constexpr CAmount LimitAmountHigh = 1000 * COIN;
121-
static constexpr CAmount LimitAmountV22 = 2000 * COIN;
119+
static constexpr CAmount LimitAmount = 2000 * COIN;
122120

123121
explicit CCreditPoolManager(CEvoDB& _evoDb);
124122

src/rpc/blockchain.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1538,12 +1538,12 @@ RPCHelpMan getblockchaininfo()
15381538
Consensus::DEPLOYMENT_BRR,
15391539
Consensus::DEPLOYMENT_V19,
15401540
Consensus::DEPLOYMENT_V20,
1541-
Consensus::DEPLOYMENT_MN_RR }) {
1541+
Consensus::DEPLOYMENT_MN_RR,
1542+
Consensus::DEPLOYMENT_WITHDRAWALS,
1543+
}) {
15421544
SoftForkDescPushBack(&tip, softforks, consensusParams, deploy);
15431545
}
1544-
for (auto ehf_deploy : { /* sorted by activation block */
1545-
Consensus::DEPLOYMENT_WITHDRAWALS,
1546-
Consensus::DEPLOYMENT_TESTDUMMY }) {
1546+
for (auto ehf_deploy : { Consensus::DEPLOYMENT_TESTDUMMY, }) {
15471547
SoftForkDescPushBack(&tip, ehfSignals, softforks, consensusParams, ehf_deploy);
15481548
}
15491549
obj.pushKV("softforks", softforks);

test/functional/feature_asset_locks.py

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ def run_test(self):
250250

251251
self.activate_v20(expected_activation_height=900)
252252
self.log.info("Activated v20 at height:" + str(node.getblockcount()))
253+
assert softfork_active(node_wallet, 'withdrawals')
253254

254255
for _ in range(2):
255256
self.dynamically_add_masternode(evo=True)
@@ -431,12 +432,8 @@ def test_asset_unlocks(self, node_wallet, node, pubkey):
431432
self.check_mempool_result(tx=asset_unlock_tx_too_late,
432433
result_expected={'allowed': False, 'reject-reason' : 'bad-assetunlock-too-late'})
433434

434-
self.log.info("Checking that two quorums later it is too late because quorum is not active...")
435+
# TODO remove this quorum
435436
self.mine_quorum_2_nodes()
436-
self.log.info("Expecting new reject-reason...")
437-
assert not softfork_active(self.nodes[0], 'withdrawals')
438-
self.check_mempool_result(tx=asset_unlock_tx_too_late,
439-
result_expected={'allowed': False, 'reject-reason' : 'bad-assetunlock-too-old-quorum'})
440437

441438
block_to_reconsider = node.getbestblockhash()
442439
self.log.info("Test block invalidation with asset unlock tx...")
@@ -450,9 +447,6 @@ def test_asset_unlocks(self, node_wallet, node, pubkey):
450447
self.validate_credit_pool_balance(locked - 2 * COIN)
451448

452449
self.log.info("Forcibly mining asset_unlock_tx_too_late and ensure block is invalid")
453-
assert not softfork_active(self.nodes[0], 'withdrawals')
454-
self.create_and_check_block([asset_unlock_tx_too_late], expected_error = "bad-assetunlock-too-old-quorum")
455-
456450
self.generate(node, 1)
457451

458452
self.validate_credit_pool_balance(locked - 2 * COIN)
@@ -464,7 +458,6 @@ def test_asset_unlocks(self, node_wallet, node, pubkey):
464458

465459
def test_withdrawal_limits(self, node_wallet, node, pubkey):
466460
self.log.info("Testing withdrawal limits before v22 'withdrawal fork'...")
467-
assert not softfork_active(node_wallet, 'withdrawals')
468461

469462
self.log.info("Too big withdrawal is expected to not be mined")
470463
asset_unlock_tx_full = self.create_assetunlock(201, 1 + self.get_credit_pool_balance(), pubkey)
@@ -527,12 +520,12 @@ def test_withdrawal_limits(self, node_wallet, node, pubkey):
527520
self.generate(node, 1)
528521
credit_pool_balance_1 = self.get_credit_pool_balance()
529522
assert_greater_than(credit_pool_balance_1, 10_901 * COIN)
530-
limit_amount_1 = 1000 * COIN
523+
limit_amount_1 = 2000 * COIN
531524
self.log.info("Create 5 transactions and make sure that only 4 of them can be mined")
532-
self.log.info("because their sum is bigger than the hard-limit (1000)")
525+
self.log.info("because their sum is bigger than the hard-limit (2000)")
533526
# take most of limit by one big tx for faster testing and
534527
# create several tiny withdrawal with exactly 1 *invalid* / causes spend above limit tx
535-
withdrawals = [600 * COIN, 100 * COIN, 100 * COIN, 100 * COIN - 10000, 100 * COIN + 10001]
528+
withdrawals = [1600 * COIN, 100 * COIN, 100 * COIN, 100 * COIN - 10000, 100 * COIN + 10001]
536529
amount_to_withdraw_1 = sum(withdrawals)
537530
index = 400
538531
for next_amount in withdrawals:
@@ -549,11 +542,11 @@ def test_withdrawal_limits(self, node_wallet, node, pubkey):
549542
amount_actually_withdrawn = total - new_total
550543
self.log.info("Testing that we tried to withdraw more than we could")
551544
assert_greater_than(amount_to_withdraw_1, amount_actually_withdrawn)
552-
self.log.info("Checking that we tried to withdraw more than the hard-limit (1000)")
545+
self.log.info("Checking that we tried to withdraw more than the hard-limit (2000)")
553546
assert_greater_than(amount_to_withdraw_1, limit_amount_1)
554547
self.log.info("Checking we didn't actually withdraw more than allowed by the limit")
555548
assert_greater_than_or_equal(limit_amount_1, amount_actually_withdrawn)
556-
assert_equal(amount_actually_withdrawn, 900 * COIN + 10001)
549+
assert_equal(amount_actually_withdrawn, 1900 * COIN + 10001)
557550

558551
self.generate(node, 1)
559552
self.log.info("Checking that exactly 1 tx stayed in mempool...")
@@ -563,7 +556,7 @@ def test_withdrawal_limits(self, node_wallet, node, pubkey):
563556
pending_txid = node.getrawmempool()[0]
564557

565558
amount_to_withdraw_2 = limit_amount_1 - amount_actually_withdrawn
566-
self.log.info(f"We can still consume {Decimal(str(amount_to_withdraw_2 / COIN))} before we hit the hard-limit (1000)")
559+
self.log.info(f"We can still consume {Decimal(str(amount_to_withdraw_2 / COIN))} before we hit the hard-limit (2000)")
567560
index += 1
568561
asset_unlock_tx = self.create_assetunlock(index, amount_to_withdraw_2, pubkey)
569562
self.send_tx_simple(asset_unlock_tx)
@@ -586,8 +579,7 @@ def test_withdrawal_limits(self, node_wallet, node, pubkey):
586579
self.check_mempool_size()
587580

588581
self.log.info("Creating new asset-unlock tx. It should be mined exactly 1 block after")
589-
credit_pool_balance_2 = self.get_credit_pool_balance()
590-
limit_amount_2 = credit_pool_balance_2 // 10
582+
limit_amount_2 = 2000 * COIN
591583
index += 1
592584
asset_unlock_tx = self.create_assetunlock(index, limit_amount_2, pubkey)
593585
self.send_tx(asset_unlock_tx)
@@ -614,7 +606,6 @@ def test_withdrawal_limits(self, node_wallet, node, pubkey):
614606
self.log.info("Checking that credit pool is not changed...")
615607
assert_equal(new_total, self.get_credit_pool_balance())
616608
self.check_mempool_size()
617-
assert not softfork_active(node_wallet, 'withdrawals')
618609

619610

620611
def test_mn_rr(self, node_wallet, node, pubkey):
@@ -646,10 +637,6 @@ def test_mn_rr(self, node_wallet, node, pubkey):
646637
assert_equal(locked, self.get_credit_pool_balance())
647638

648639
def test_withdrawal_fork(self, node_wallet, node, pubkey):
649-
self.log.info("Testing asset unlock after 'withdrawal' activation...")
650-
assert softfork_active(node_wallet, 'withdrawals')
651-
self.log.info(f'post-withdrawals height: {node.getblockcount()} credit: {self.get_credit_pool_balance()}')
652-
653640
index = 501
654641
while index < 511:
655642
self.log.info(f"Generating new Asset Unlock tx, index={index}...")

0 commit comments

Comments
 (0)