-
Notifications
You must be signed in to change notification settings - Fork 33
Technical Differences from Bitcoin
This document provides a comprehensive technical reference of how Bitmark differs from upstream Bitcoin. Bitmark was launched in July 2014 and has evolved significantly, most notably through the v0.9.7 hard fork at block 450,947 which introduced multi-algorithm proof-of-work.
Bitmark began as a Scrypt-based Bitcoin fork and evolved into a sophisticated multi-algorithm cryptocurrency. The major areas of divergence are:
- Design Philosophy: Fairness
- Multi-Algorithm Proof-of-Work
- Modified Block Header Structure
- Custom Difficulty Adjustment
- Modified Monetary Policy
- Merge Mining Support
- Dynamic Subsidy Scaling
- Network Parameters
- Custom Hash Algorithms
- Custom RPC Commands
The defining characteristic of Bitmark is its commitment to fair distribution and equal opportunity. Every major technical decision serves this goal:
Earned Value, Not Speculative Value
- Zero premine
- Zero instamine
- Zero IPO/ICO
- Any value comes from genuine utility and adoption
Hardware Neutrality
- 8 PoW algorithms ensure no single hardware type dominates
- CPU miners (Argon2, CryptoNight, Yescrypt), GPU miners (Equihash, Lyra2REv2, X17), and ASIC miners (SHA256D, Scrypt) can all participate
- Each algorithm receives 1/8 of block rewards
Temporal Fairness
- 3-year halving cycle (vs Bitcoin's 4 years) with interim quarterings
- Mining on day 1 vs year 2 provides no massive advantage
- Gradual emission curve prevents early-bird exploitation
Anti-Monopoly Mechanisms
- Surge Protector: If any algorithm produces 9+ consecutive blocks, its difficulty spikes - preventing any single mining operation from dominating
- Resurrector: If an algorithm goes dormant for >160 minutes, difficulty drops - ensuring all mining communities remain viable
- Independent difficulty per algorithm: Hashrate changes in one algorithm don't affect others
Commitment to the Network
- 720-block coinbase maturity (vs Bitcoin's 100): Miners must wait ~24 hours before spending rewards
- Discourages "mine-and-dump" behavior
- Aligns miner incentives with network health
Demand-Linked Supply
- CEM (Consensus Engaged Mining) scales block rewards based on actual hashrate
- Low demand = low emission, preventing market flooding
- High demand = full emission, rewarding genuine network participation
| Technical Feature | Fairness Goal |
|---|---|
| 8 PoW algorithms | Hardware neutrality - anyone can mine |
| Independent algo difficulty | Each mining community competes fairly |
| Surge Protector | Prevents single-algo dominance |
| Resurrector | Keeps all algorithms viable |
| 720-block maturity | Miners must stay committed |
| 3-year halving + quarterings | Smooth emission, no cliff advantages |
| CEM dynamic emission | Supply follows real demand |
| Merge mining | Small miners can participate via parent chains |
| No premine/ICO | Everyone starts equal |
| Approach | Problem | Bitmark's Solution |
|---|---|---|
| Single PoW algorithm | ASIC manufacturers control the network | 8 algorithms across hardware types |
| Short maturity (100 blocks) | Mine, dump, leave | 720-block commitment period |
| Rapid halving (1-2 years) | Early birds get outsized rewards | 3-year cycle with smooth quarterings |
| Fixed emission schedule | Oversupply during low demand | CEM links emission to hashrate |
| Premine/ICO | Founders hold disproportionate supply | Zero premine, earned value only |
The technical complexity of Bitmark exists specifically because achieving fairness is hard. Simple systems tend toward centralization; Bitmark's multi-layered approach actively resists it.
The most significant departure from Bitcoin. Since block 450,947, Bitmark supports 8 simultaneous PoW algorithms:
| ID | Algorithm | Weight | Description |
|---|---|---|---|
| 0 | Scrypt | 8,000 | Original Litecoin-style memory-hard |
| 1 | SHA256D | 1 | Bitcoin standard (baseline weight) |
| 2 | Yescrypt | 800,000 | Modern memory-hard variant |
| 3 | Argon2d | 4,000,000 | Memory-hard key derivation |
| 4 | X17 | 8,000 | 17-function hash chain |
| 5 | Lyra2REv2 | 8,000 | ASIC-resistant memory-hard |
| 6 | Equihash | 8,000,000 | ZKP-based (N=200, K=9) |
| 7 | CryptoNight | 8,000,000 | Monero-style CPU-friendly |
Key Design Points:
- Each algorithm maintains independent difficulty adjustment
- Target spacing: 16 minutes per algorithm (combined average: 2 minutes)
- Each algorithm contributes 1/8 of emitted coins
- Algorithm encoded in block version bits 9-11 via
BLOCK_VERSION_ALGO = (7 << 9) - Weights balance computational cost across algorithms
Source Files:
-
src/pureheader.h(lines 11-41) - Algorithm definitions -
src/core.cpp-GetAlgoWeight()function
Bitmark extends the standard Bitcoin block header to support multi-algorithm mining:
// Extended fields for multi-algo support
uint256 nNonce256; // 256-bit nonce (Equihash/CryptoNight)
std::vector<unsigned char> nSolution; // Equihash proof data
uint256 hashReserved; // Reserved for future use
bool vector_format; // Alternate serialization flagBlock Version Encoding:
Bits 0-7: Standard version number
Bit 8: AuxPow flag (merge mining)
Bits 9-11: Algorithm ID (3 bits = 8 algorithms)
Bit 12: Update SSF (Scaling Subsidy Factor)
Bits 13-16: Chain/variant flags
Source File: src/pureheader.h (lines 43-183)
Replaced Bitcoin's 2016-block retarget interval with Dark Gravity Wave v3, customized for multi-algorithm usage:
| Parameter | Bitcoin | Bitmark |
|---|---|---|
| Retarget Interval | 2016 blocks (~2 weeks) | Every block |
| Algorithm | Simple average | DGW v3 with protections |
| Lookback Window | 2016 blocks | 25 blocks per algorithm |
| Per-Algorithm | N/A | Yes (independent difficulty) |
Special Mechanisms:
-
Surge Protector: Activates if 9+ consecutive blocks use the same algorithm. Prevents single-algorithm dominance by increasing that algorithm's difficulty.
-
Resurrector: Activates if blocks from one algorithm are halted for >160 minutes. Decreases that algorithm's difficulty to encourage miners to return.
Source File: src/main.cpp (lines 1423-1617) - DarkGravityWave() function
| Parameter | Bitcoin | Bitmark |
|---|---|---|
| Maximum Supply | 21,000,000 BTC | 27,580,000 BTM |
| Block Time | 10 minutes | 2 minutes (combined) |
| Initial Block Reward | 50 BTC | 20 BTM |
| Halving Interval | 210,000 blocks (~4 years) | 788,000 blocks (~3 years) |
| Interim Reduction | None | 394,000 blocks (quartering) |
| Coinbase Maturity | 100 blocks | 720 blocks |
| Total Halvings | ~33 | 18 |
Emission Schedule:
Unlike Bitcoin's block-height-based halving, Bitmark uses cumulative coin emission to determine subsidy:
| Point | Block Height | Reward |
|---|---|---|
| Q1 H0 | 0 | 20 BTM |
| Q1 H1 | 394,000 | 15 BTM |
| Q2 H1 | 788,000 | 10 BTM |
| Q2 H2 | 1,182,000 | 7.5 BTM |
| Q3 H2 | 1,576,000 | 5 BTM |
| Q3 H3 | 1,970,000 | 3.75 BTM |
| Q4 H3 | 2,364,000 | 2.5 BTM |
| Q4 H4 | 2,758,000 | 1.875 BTM |
The "Q" denotes quartering events (every 394,000 blocks) and "H" denotes halving events (every 788,000 blocks).
Source File: src/main.cpp (lines 1275-1299) - GetBlockValue() function
Bitmark implements full Auxiliary Proof-of-Work for all 8 algorithms:
| Parameter | Value |
|---|---|
| Chain ID | 0x005B (91 decimal) |
| AuxPow Magic | 0xfa 0xbe 0x6d 0x6d |
| Version Bit | Bit 8 (BLOCK_VERSION_AUXPOW) |
| Parent Chain Support | Yes |
Features:
- Merkle transaction chain from parent block
- Chain ID verification for security
- Single chain merkle root per coinbase enforced
- Compatible with standard merged mining pools
Source Files:
-
src/core.h(lines 288-452) -CAuxPowstructure -
src/core.cpp(lines 480-556) - AuxPow validation -
src/chainparams.cpp(line 57) - Chain ID definition
Consensus Engaged Mining - Block rewards scale based on peak hashrate history:
| Parameter | Value |
|---|---|
| SSF Update Interval | ~90 blocks per algorithm (~1 day) |
| Lookback Period | 365 days (1 year) |
| Minimum Scale | 5% of epoch maximum |
| Maximum Scale | 100% of epoch maximum |
How It Works:
- Peak hashrate tracked per algorithm over previous year
- Current hashrate compared against peak
- Subsidy Scaling Factor (SSF) calculated proportionally
- Block reward = Base Reward × SSF
- SSF updates flagged via
BLOCK_VERSION_UPDATE_SSF
Rationale: Links coin emission to actual network demand (hashrate), preventing oversupply during low-activity periods.
Source File: src/main.cpp (lines 4987-5093)
| Parameter | Bitcoin | Bitmark |
|---|---|---|
| P2P Port | 8333 | 9265 |
| RPC Port | 8332 | 9266 |
| Address Prefix | 0x00 ('1') | 0x55 ('b') |
| Script Prefix | 0x05 ('3') | 0x05 |
| WIF Prefix | 0x80 | 0xD5 |
| Magic Bytes | f9 be b4 d9 | f9 be b4 d9 |
| Parameter | Bitcoin | Bitmark |
|---|---|---|
| P2P Port | 18333 | 19265 |
| RPC Port | 18332 | 19266 |
| Address Prefix | 0x6F ('m'/'n') | 0x82 ('u') |
| Magic Bytes | 0b 11 09 07 | 0b 11 09 07 |
| Field | Value |
|---|---|
| Date | July 13, 2014 |
| Unix Timestamp | 1405274442 |
| Hash | c1fb746e87e89ae75bdec2ef0639a1f6786744639ce3d0ece1dcf979b79137cb |
| Nonce | 14,385,103 |
| Message | "13/July/2014, with memory of the past, we look to the future. TDR" |
Source File: src/chainparams.cpp
A sequential chain of 17 cryptographic hash functions:
BLAKE512 -> BMW512 -> Groestl512 -> Skein512 -> JH512 ->
Keccak512 -> Luffa512 -> CubeHash512 -> SHAvite512 ->
SIMD512 -> ECHO512 -> Hamsi512 -> Fugue512 ->
Shabal512 -> Whirlpool512 -> SHA512 -> HAVAL256
Source File: src/hashx17.h
| Algorithm | Location |
|---|---|
| Argon2 | src/ar2/ |
| CryptoNight | src/cryptonight/ |
| Yescrypt | src/yescrypt/ |
| Equihash |
src/equihash.cpp, src/tromp/
|
| Lyra2REv2 | src/Lyra2RE.h |
| X17 |
src/hashx17.h, src/sph_*.h
|
| Command | Description |
|---|---|
setminingalgo <0-7> |
Select active mining algorithm |
getmininginfo |
Returns multi-algo mining statistics |
getdifficulty |
Returns difficulty for all 8 algorithms |
setgenerate true <cores> <algo> |
Start mining with specified algorithm |
Example Usage:
# Mine with Argon2 (algorithm 3)
bitmark-cli setminingalgo 3
bitmark-cli setgenerate true 4
# Check mining status
bitmark-cli getmininginfoSource File: src/rpcmining.cpp
| Fork | Block Height | Major Changes |
|---|---|---|
| Genesis | 0 | Launch with Scrypt PoW |
| Fork 1 | 450,947 | 8-algo mPoW, DGWv3, merge mining, CEM |
| Fork 2 | (suspended) | CEM v0.2 with stricter scaling |
| Fork 3 | Active | Strict subsidy enforcement |
Source File: src/main.cpp (lines 1201-1211)
| Feature | Bitcoin | Bitmark |
|---|---|---|
| PoW Algorithms | 1 (SHA256d) | 8 (multi-algo) |
| Block Time | 10 min | 2 min |
| Difficulty Adjustment | Every 2016 blocks | Every block (DGW v3) |
| Max Supply | 21M | ~27.58M |
| Halving Schedule | Every 4 years | Every 3 years + quarterings |
| Merge Mining | No | Yes (all algorithms) |
| Dynamic Emission | No | Yes (CEM) |
| Coinbase Maturity | 100 blocks | 720 blocks |
| Address Prefix | '1' | 'b' |
- Home - Project overview
- Currency - Monetary policy details
- Bitmark---Blockchain-----Hard-Fork--#1----v0.9.7.0 - Fork rationale
- Coin-Emission-Reduction-(CER)--in-Bitmark-v0.9.7 - CEM/CER details
- Solo-Mining - Mining guide
Last updated: January 2026