Blackcoin Testnet Taproot (BIP-9)
TL;DR
Taproot has been scheduled for activation on Blackcoin testnet via BIP-9 at timestamp 1780300000 (June 1, 2026). The deployment is currently in DEFINED state and will begin miner signaling at the next activation window boundary (~block 2,835,000).
What Was Done
The DEPLOYMENT_TAPROOT BIP-9 parameters have been configured in src/kernel/chainparams.cpp for the testnet network:
// Deployment of Taproot (BIPs 340-342)
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = 1780300000; // June 1, 2026
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0;
This follows the same pattern used by Bitcoin and enables the Schnorr signatures, Taproot scripts, and Tapscript validation rules.
BIP-9 State Machine
Per BIP-9, a deployment moves through these states:
| State | Meaning |
|---|---|
| DEFINED | Deployment is known but has not yet started. |
| STARTED | MTP >= starttime. Miners begin signaling with the deployment bit. |
| LOCKED_IN | 75% threshold reached in a single window. Rules not yet enforced. |
| ACTIVE | Rules are enforced. Terminal state. |
| FAILED | Timeout reached without lock-in. Terminal state. |
Current Testnet Status
"taproot": {
"type": "bip9",
"active": false,
"bip9": {
"start_time": 1780300000,
"timeout": 9223372036854775807,
"min_activation_height": 0,
"status": "defined",
"since": 0,
"status_next": "defined"
}
}
How Blackcoin BIP-9 Differs from Bitcoin
There are two important differences in how Blackcoin More implements BIP-9 compared to upstream Bitcoin Core:
1. Activation Window Size
- Bitcoin: 2,016 blocks (~2 weeks)
- Blackcoin: 15,000 blocks (~11 days at 64s target)
2. Median Time Past (MTP)
- Bitcoin: Median of the last 11 block timestamps
- Blackcoin: Since ProtocolV2 (2014),
GetMedianTimePast()returns the current block's own timestamp. This effectively means block time itself drives the state transitions, not a smoothed median.
This is why getdeploymentinfo can show defined even when your local clock is past June 1st — the chain's own timestamps at period boundaries control the transition.
Expected Timeline on Testnet
| Event | Approximate Block Height | Status |
|---|---|---|
| Now | ~2,821,800 | DEFINED |
| Next Window Start | 2,835,000 | STARTED (signaling begins) |
| Potential LOCKED_IN | 2,850,000 | If 75% (11,250) of period 189 signal |
| Potential ACTIVE | 2,865,000 | Taproot rules enforced |
The Math
- Current height: ~2,821,800
- Current period:
188(2,820,000 – 2,834,999) - Next boundary: 2,835,000 (~13,200 blocks away)
- At ~64s block time: ~9–10 days until signaling begins
What Miners/Stakers Should Know
Once the deployment enters STARTED (at block 2,835,000), the block nVersion will automatically have bit 2 set via ComputeBlockVersion():
pblock->nVersion = m_chainstate.m_chainman.m_versionbitscache.ComputeBlockVersion(pindexPrev, chainparams.GetConsensus());
This happens automatically in the staker/miner — no manual intervention is required. As long as your node runs v28-CORE or later, you will signal support.
To verify your node is signaling once STARTED:
./blackmore-cli -testnet getblockheader $(./blackmore-cli -testnet getbestblockhash)
Check that version has bit 2 set (e.g., 0x20000004 or similar with VERSIONBITS_TOP_BITS).
Mainnet Outlook
For mainnet, Taproot is currently configured as NEVER_ACTIVE:
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
Testnet activation will serve as the proving ground. If signaling succeeds and the softfork activates without issues, a mainnet deployment can be proposed with a future nStartTime via a subsequent update.
References
- BIP-9 Specification: https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki
- Taproot (BIPs 340-342): https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
- Blackcoin More v28-CORE:
src/kernel/chainparams.cpp,src/versionbits.cpp
Feel free to share this with anyone running testnet nodes or interested in Blackcoin's upgrade path.