Skip to content

Technical Differences from Bitcoin

Melvin Carvalho edited this page Jan 8, 2026 · 2 revisions

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.

Overview

Bitmark began as a Scrypt-based Bitcoin fork and evolved into a sophisticated multi-algorithm cryptocurrency. The major areas of divergence are:

  1. Design Philosophy: Fairness
  2. Multi-Algorithm Proof-of-Work
  3. Modified Block Header Structure
  4. Custom Difficulty Adjustment
  5. Modified Monetary Policy
  6. Merge Mining Support
  7. Dynamic Subsidy Scaling
  8. Network Parameters
  9. Custom Hash Algorithms
  10. Custom RPC Commands

Design Philosophy: Fairness

The defining characteristic of Bitmark is its commitment to fair distribution and equal opportunity. Every major technical decision serves this goal:

Core Principles

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

How Technical Choices Serve Fairness

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

Contrast with Other Approaches

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.


1. Multi-Algorithm Proof-of-Work

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

2. Modified Block Header Structure

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 flag

Block 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)


3. Custom Difficulty Adjustment: Dark Gravity Wave v3

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


4. Modified Monetary Policy

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


5. Merge Mining (AuxPow) Support

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) - CAuxPow structure
  • src/core.cpp (lines 480-556) - AuxPow validation
  • src/chainparams.cpp (line 57) - Chain ID definition

6. Dynamic Subsidy Scaling (CEM)

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:

  1. Peak hashrate tracked per algorithm over previous year
  2. Current hashrate compared against peak
  3. Subsidy Scaling Factor (SSF) calculated proportionally
  4. Block reward = Base Reward × SSF
  5. 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)


7. Network Parameters

Mainnet

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

Testnet

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

Genesis Block

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


8. Custom Hash Algorithms

X17 (Unique to Bitmark family)

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 Implementation Directories

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

9. Custom RPC Commands

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 getmininginfo

Source File: src/rpcmining.cpp


Fork History

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)


Summary Comparison Table

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'

See Also


Last updated: January 2026

Clone this wiki locally