⬡ Technical Whitepaper

Tensorium: A Proof-of-Work Blockchain for Open, GPU-First Mining

A transparent, community-minable Layer 1 blockchain with SHA256d consensus, UTXO model, and a fair GPU-first mainnet direction.

📅 Version 1.0 — May 2025 🔗 Chain: tensorium-testnet-0 💎 Ticker: TXM 🏗 Status: Public Testnet
Abstract. Tensorium is an open-source Proof-of-Work Layer 1 blockchain implemented in Rust. It uses SHA256d as its consensus algorithm, a UTXO-based ledger, and a deterministic halving emission schedule capped at 33,000,000 TXM. The network is designed for fair-launch community mining, starting with CPU-accessible bootstrap mining on testnet and targeting GPU-first mining on mainnet. This document describes the technical architecture, consensus mechanism, tokenomics, P2P protocol, and development roadmap of the Tensorium network.

1 Introduction

1.1 Motivation

Proof-of-Work blockchains have proven to be the most resilient consensus mechanism in practice. Bitcoin's 15-year track record demonstrates that PoW provides objective security without relying on stake concentration or trusted validator sets. However, most modern PoW chains are dominated by ASIC manufacturers, leaving community miners — particularly GPU operators — with few viable options.

Tensorium is built to address this: a clean, open PoW chain where GPU miners are first-class participants from mainnet launch, the emission schedule is transparent and non-inflationary, and the codebase is fully open-source with no premine beyond a declared founder allocation.

1.2 Design Principles

  • Fair launch over hype. Testnet runs publicly before mainnet. No private allocation beyond 3% founder reserve.
  • GPU-first mainnet. Testnet uses CPU mining for validation and bootstrap. Mainnet targets GPU-first difficulty (36+ bits) after a stable GPU miner is proven.
  • Open source, always. All node, miner, and wallet code is published under an open license.
  • Self-custody. Users control their own keys. No custodial wallets.
  • Security before speed. Consensus rules are frozen before mainnet. No shortcuts.

1.3 Scope of This Document

This whitepaper covers the protocol design, consensus mechanism, tokenomics, and roadmap of the Tensorium network as of its public testnet launch. It is a living document and will be updated as the protocol evolves toward mainnet.

2 System Architecture

2.1 Components

The Tensorium software stack consists of four independently runnable binaries:

BinaryRoleLanguage
tensorium-nodeFull node — validates blocks, maintains chain state, exposes RPC, participates in P2PRust
txmminerCPU miner — fetches block template, finds valid nonce, submits via RPCRust
txmwalletCLI wallet — generates keys, signs transactions, checks balanceRust
txmminer-cudaGPU miner (Phase 6) — CUDA-accelerated SHA256d miningRust + CUDA

2.2 Block Structure

Each block consists of a header and a list of transactions:

{
  "header": {
    "version":           1,
    "chain_id":          "tensorium-testnet-0",
    "height":            uint64,
    "previous_hash":     Hash256,
    "merkle_root":       Hash256,
    "timestamp_seconds": uint64,
    "leading_zero_bits": uint8,     // current difficulty
    "nonce":             uint64
  },
  "transactions": [ Transaction, ... ]
}

The block hash is computed as SHA256(SHA256(header_bytes)) — double-SHA256, identical to Bitcoin's block hashing scheme. A block is valid if its hash has at least leading_zero_bits leading zero bits.

2.3 Transaction Structure

Transactions follow a UTXO (Unspent Transaction Output) model:

{
  "id":      Hash256,            // SHA256d of transaction data
  "inputs":  [ { prev_txid, output_index, signature_script } ],
  "outputs": [ { address, value_atoms } ],
  "payload": bytes               // coinbase: encodes height + reward + miner
}

Coinbase transactions (block rewards) have empty inputs. All other transactions must reference existing UTXOs and provide valid secp256k1 ECDSA signatures.

2.4 UTXO Set

The node maintains a UTXO set that is updated with each accepted block. Coinbase UTXOs are subject to a 100-block maturity requirement before they can be spent, providing protection against reorgs invalidating mining rewards.

2.5 Chain State

Chain state is persisted to a JSON file (tensorium-testnet-state.json by default). The canonical chain is the one with the greatest cumulative work, where block work is defined as 2^leading_zero_bits.

3 Consensus Mechanism

3.1 Proof-of-Work

Tensorium uses SHA256d (double-SHA256) as its Proof-of-Work function. To mine a valid block, a miner must find a 64-bit nonce such that:

leading_zero_bits( SHA256( SHA256( serialize(header) ) ) ) ≥ D

where D is the current difficulty in leading zero bits. The expected number of hash attempts per valid block is 2^D.

3.2 Difficulty Adjustment

Difficulty is adjusted every 60 blocks (one window) to target a 60-second block time:

actual_time   = timestamp(block_N) - timestamp(block_{N-60})
target_time   = 60 blocks × 60 seconds = 3,600 seconds
ratio         = actual_time / target_time
ratio         = clamp(ratio, 0.25, 4.0)     // max 4× adjustment per window

new_difficulty = old_difficulty + 1   if ratio < 1.0  (blocks too fast)
               = old_difficulty - 1   if ratio > 1.0  (blocks too slow)
               = old_difficulty        if ratio == 1.0

The ±1 bit per window cap prevents sudden difficulty spikes that could stall the chain or enable rapid mining attacks. Difficulty is bounded between min_leading_zero_bits (20 for testnet) and max_leading_zero_bits (40 for testnet).

ParameterTestnetMainnet Candidate
Initial difficulty26 bits36 bits
Min difficulty20 bits28 bits
Max difficulty40 bits56 bits
Adjustment window60 blocks120 blocks
Max adjustment±1 bit/window±1 bit/window
Target block time60 seconds60 seconds

3.3 Fork Choice Rule

When competing chain tips exist, the canonical chain is determined by greatest cumulative work:

cumulative_work(chain) = Σ  2^(leading_zero_bits_i)  for each block i

When a higher-work chain is received, the node performs a chain reorganization: it identifies the common ancestor, reverts blocks from the old tip back to the fork point, and applies the new chain's blocks. Reorg depth is logged to allow monitoring.

3.4 Genesis Block

The genesis block has a fixed timestamp (1,748,649,600) ensuring every node that runs tensorium-node init produces the identical genesis block hash:

Genesis hash: 00000035d8a99c0900fec5daa3ef5a7c2d71c7140e473d239a24b0dd4cd7f6c3
Timestamp:    2025-05-30 16:00:00 UTC
Nonce:        95,202,247
Difficulty:   26 bits

4 Tokenomics

4.1 Supply Summary

Max Supply
33,000,000
TXM total, hard cap
Mining Allocation
32,000,000
TXM (96.97%) via block rewards
Founder Allocation
1,000,000
TXM (3.03%) — declared, no hidden premine
Initial Block Reward
15.23557865
TXM per block (Era 1)
Block Time
60 seconds
target (difficulty-adjusted)
Halving Interval
1,051,200 blocks
≈ 2 years per era

4.2 Emission Schedule

Block rewards halve every 1,051,200 blocks (~2 years) across 10 eras. After era 10, no new TXM is issued — the network is sustained by transaction fees.

ERAREWARD / BLOCKERA TOTAL
115.23557865
~16.02M TXM
27.61778932
~8.01M TXM
33.80889466
~4.01M TXM
41.90444733
~2.00M TXM
50.95222366
~1.00M TXM
60.47611183
~500K TXM
70.23805591
~250K TXM
80.11902795
~125K TXM
90.05951397
~63K TXM
100.02975699
~31K TXM
50% mined in Era 1. This follows Bitcoin's emission model — most coins are distributed early, incentivizing early miners and securing the network bootstrap. By year 4 (~Era 2), ~75% of mining supply will have been distributed.

4.3 Founder Allocation

1,000,000 TXM (3.03% of total supply) is reserved for the founding team. This allocation:

  • Is declared publicly in the genesis block and codebase
  • Is not pre-mined — it is accounted for separately from the mining allocation
  • Will be subject to a vesting schedule to be announced before mainnet
  • Has no impact on block validation or consensus rules

4.4 Transaction Fees

After era 10 (~year 2045), block rewards cease. The network is sustained entirely by transaction fees included in blocks by miners. Fee market mechanics will be refined during testnet based on observed usage patterns.

5 Mining

5.1 Mining Architecture

Mining in Tensorium is a two-step process:

  1. Get block template — the miner requests a candidate block from the node RPC (GET /getblocktemplate/<address>). The template includes pending mempool transactions and the current difficulty target.
  2. Find valid nonce — the miner iterates the 64-bit nonce field, computing SHA256d of the block header for each value, until a hash with sufficient leading zero bits is found.
  3. Submit — the mined block is submitted to the node via POST /submitblock, which validates, stores, and broadcasts it to peers.

5.2 CPU Mining (Phase 4 — Current)

During the testnet bootstrap phase, mining is intentionally CPU-accessible. The txmminer binary provides multi-threaded CPU mining:

txmminer <rpc> <address> [threads]

# Examples:
txmminer 127.0.0.1:23332 txm1youraddress          # auto-detect cores
txmminer 127.0.0.1:23332 txm1youraddress 8         # use 8 threads
HardwareEst. Hashrate~Block Time (diff 26)
Single CPU core3–8 MH/s10–25 seconds
4-core CPU15–30 MH/s3–5 seconds
16-core CPU50–120 MH/s< 2 seconds
Testnet only. Testnet TXM has no monetary value. CPU mining at this difficulty is temporary — difficulty will rise significantly when GPU mining is introduced.

5.3 GPU-First Mainnet (Phase 6 — Planned)

Tensorium's mainnet direction is GPU-first. Before mainnet launch, a CUDA-accelerated miner (txmminer-cuda) will be developed and the difficulty will be raised to require GPU-class hardware for economically viable mining.

GPUEst. SHA256d Hashrate~Block Time (diff 36)
RTX 3060400–600 MH/s115–180 seconds
RTX 3080900–1,400 MH/s50–75 seconds
RTX 4070700–1,000 MH/s70–95 seconds
RTX 40902,000–3,000 MH/s25–35 seconds
RTX 50903,000–4,500 MH/s15–25 seconds

At difficulty 36–38 bits with a small GPU testnet (3–5 cards), average block time converges toward the 60-second target through difficulty auto-adjustment. Datacenter GPUs (H100, H200) have no meaningful advantage over high-end gaming GPUs for SHA256d — the algorithm is compute-bound and does not benefit from HBM bandwidth.

5.4 Mining Pool Support

Community mining pools will be supported before mainnet. Pool protocol design will follow standard Stratum v2 patterns. The founding team plans to launch a reference pool to lower the barrier for small miners.

6 P2P Network

6.1 Protocol

Tensorium uses a custom lightweight P2P protocol over TCP. All messages are newline-delimited JSON. Each connection begins with a bidirectional handshake:

// Hello (both sides send simultaneously)
{
  "protocol":  "tensorium-p2p",
  "version":   1,
  "chain_id":  "tensorium-testnet-0",
  "node_id":   "node-name",
  "height":    uint64,
  "tip_hash":  Hash256
}

After handshake, the following messages are supported:

MessageDirectionPurpose
NewBlockPushBroadcast newly mined block to peer
AckResponseBlock accepted at given height
RejectResponseBlock rejected with reason
NewTxPushBroadcast unconfirmed transaction
TxAckResponseTransaction accepted into mempool
GetBlocksRequestRequest blocks from a given height
BlocksResponseBatch of up to 50 blocks

6.2 Peer Discovery

The current implementation uses static peer configuration via the TENSORIUM_PEERS environment variable. Automatic peer discovery (DNS seeds, peer exchange) is planned for Phase 5.

6.3 Peer Ban Policy

Nodes maintain a score-based ban list to protect against malicious peers:

OffenseScoreBans at
Wrong chain_id / protocol in handshake100Instant (100)
Invalid block (bad PoW, tampered data)205 blocks
Invalid transaction (bad signature)1010 txs
Unparseable message250 messages

Bans last 1 hour and are persisted to disk. Nodes can be manually unbanned via tensorium-node unban <ip>.

6.4 Network Ports

PortProtocolPurposeExposure
23333TCPP2P node communicationPublic — open in firewall
23332TCP/HTTPRPC APILocalhost only — do not expose

7 Security Considerations

7.1 51% Attack Resistance

As with all PoW chains, Tensorium is vulnerable to 51% hash power attacks. During testnet, this risk is accepted — testnet has no economic value. For mainnet, the GPU-first design means an attacker would need to acquire a large GPU farm, which is economically costly and visible. The ±1 bit difficulty cap prevents rapid hashrate manipulation.

7.2 Replay Protection

The chain_id field is included in every block header and validated on every P2P handshake. Transactions signed for one network are invalid on another.

7.3 Timestamp Manipulation

Block timestamps must not exceed the node's local time by more than 2 hours. This prevents difficulty manipulation via far-future timestamps.

7.4 Wallet Security

The txmwallet binary uses Argon2id key derivation and ChaCha20-Poly1305 authenticated encryption to protect private keys at rest. Private keys are never transmitted over the network. Users are responsible for backing up their encrypted wallet files.

Testnet warning. This software has not undergone a third-party security audit. Do not use testnet code for mainnet, real funds, or production mining. A security audit is required before mainnet launch.

7.5 Pre-Mainnet Requirements

  • Independent security audit of consensus and wallet code
  • Stable GPU testnet running for minimum 4 weeks without consensus bugs
  • Freeze of all consensus parameters
  • Published genesis block hash and parameters before mainnet launch

8 Roadmap

0
Phase 0 — Planning Done
Tokenomics finalized, chain parameters locked, repository created.
1
Phase 1 — Local Chain Done
Block structure, genesis block, chain validation, RPC, CPU miner, UTXO model.
2
Phase 2 — Wallet Done
Key generation (secp256k1), Argon2id encrypted storage, transaction signing and broadcast.
3
Phase 3 — P2P Testnet Done
Handshake, block/tx broadcast, chain sync, fork choice, peer ban system. Tested on VPS.
4
Phase 4 — Public Testnet Active
Public seed node, binary releases, installer script, block explorer (explorer.tensoriumlabs.com), mining documentation, multi-threaded CPU miner. Community bug reports open.
5
Phase 5 — Stabilization Planned
Chain reorg testing, spam resistance, wallet recovery, node restart resilience, peer discovery, testnet running ≥ 4 weeks stable. Consensus rules frozen.
6
Phase 6 — GPU-First Testnet Planned
CUDA miner (txmminer-cuda), difficulty raised to 36–40 bits, GPU benchmark publication, pool mining support, multi-GPU testing.
7
Phase 7 — Mainnet Candidate Planned
Security audit, final tokenomics lock, community review period, mainnet genesis announcement. No mainnet without stable GPU testnet + audit.

Disclaimer

This document is provided for informational purposes only. Tensorium is experimental software in active development. Testnet TXM has no monetary value. Do not invest money based on testnet activity.

The authors make no warranties regarding the software's fitness for any particular purpose, security properties, or continued availability. All consensus parameters, tokenomics figures, and roadmap timelines are subject to change based on technical findings.

This is not financial advice. Participation in mainnet mining involves real risk. Always conduct your own research.

The source code for all Tensorium software is open and auditable at github.com/rygroup-dev/tensorium-core. If you find a bug, please open an issue.