What is Bitok

What if Bitcoin had stayed CPU-mineable with complete Satoshi-era codebase? No features added. No ideology injected. No attempt to "fix" Bitcoin according to modern tastes.

Bitcoin v0.3.19 from 2010 was the last release under Satoshi's direct involvement. Everything after that is history. Not destiny.

I've been running an experiment - the original v0.3.19 codebase. The same rules. The same behavior. One major change: a mining algorithm that GPUs and ASICs can't easily dominate. All critical security fixes in place from day one. Adapted only as much as required to run on modern operating systems and resist GPU mining.

Key Changes from Bitcoin v0.3.19

✓ Modern System Compatibility

Updated build system for OpenSSL 3.x, Boost 1.74+, GCC 11+, wxWidgets 3.2

✓ Yespower Proof-of-Work

Replaced SHA-256 with Yespower 1.0 for CPU-friendly, GPU/ASIC-resistant mining

✓ New Genesis Block

Separate network. No confusion with BTC. No replay attacks. Clean slate.

✓ Security Fixes

All Satoshi-era security fixes present from launch

What's Identical to Bitcoin v0.3.19

  • Same transaction format
  • Same script system
  • Same networking code
  • Same wallet behavior
  • 21M supply cap
  • Halving schedule
  • 10 minute blocks
Security: Bitok includes all critical security fixes (value overflow protection, checkpoints, DoS limits, IsStandard filtering) while maintaining the original Bitcoin design by Satoshi.

Technical Specifications

AlgorithmYespower 1.0 (N=2048, r=32, personalization="BitokPoW")
Block Time10 minutes (600 seconds)
Block Reward50 BITOK, halving every 210,000 blocks
Max Supply21,000,000 BITOK
Difficulty AdjustmentEvery 2016 blocks (~2 weeks)
Coinbase Maturity100 blocks
P2P Port18333
RPC Port8332

Genesis Block

Hash:      0x0290400ea28d3fe79d102ca6b7cd11cee5eba9f17f2046c303d92f65d6ed2617
Message:   "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"
nBits:     0x1effffff
nNonce:    37137

Mining Bitok

Bitok uses Yespower proof-of-work, designed to keep mining accessible to regular users with regular computers.

Start Mining

Daemon (Command Line)

# Mine with all CPU cores
./bitokd -gen

# Mine with specific number of cores
./bitokd -gen -genproclimit=4

# Start daemon in background with mining
./bitokd -daemon -gen

GUI Wallet

Click "Generate Coins" button to enable mining and adjust the processor limit if desired.

Mining Commands (RPC)

# Enable mining with 4 threads
./bitokd setgenerate true 4

# Check mining status
./bitokd getgenerate

# Get network difficulty
./bitokd getdifficulty

# Get general info (includes mining status)
./bitokd getinfo

Mining Pool Integration

Existing CPU miners like cpuminer-multi or cpuminer-opt support Yespower with proper parameters:

./cpuminer \
    --algo=yespower \
    --param-n=2048 \
    --param-r=32 \
    --param-key="BitokPoW" \
    --url=http://127.0.0.1:8332 \
    --user=rpcuser \
    --pass=rpcpassword

Building from Source

Ubuntu / Debian Build

Compatible with Ubuntu 24.04 LTS and modern toolchains (GCC 11+, OpenSSL 3.x, Boost 1.74+)

Install Dependencies

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libssl-dev
sudo apt-get install libdb-dev libdb5.3-dev
sudo apt-get install libboost-all-dev

# Optional: For GUI wallet
sudo apt-get install libwxgtk3.2-dev
sudo apt-get install libgtk-3-dev

Build

# Daemon only
make -f makefile.unix

# GUI wallet
make -f makefile.unix gui

# Both
make -f makefile.unix all

CPU Optimization

Default builds use -march=native for maximum performance.

For distribution binaries:

# Modern CPUs (2015+)
make -f makefile.unix all YESPOWER_ARCH=x86-64-v3

# Maximum compatibility
make -f makefile.unix all YESPOWER_ARCH=x86-64

Install

sudo make -f makefile.unix install

Data Directory

~/.bitok/

IMPORTANT: Back up ~/.bitok/wallet.dat regularly!

macOS Build (11.0+ Big Sur)

Supports both Apple Silicon (arm64) and Intel (x86_64)

Install Xcode Command Line Tools

xcode-select --install

Install Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Install Dependencies

brew install boost berkeley-db@4 openssl@3 wxwidgets

Build

# Daemon
make -f makefile.osx bitokd

# GUI wallet
make -f makefile.osx bitok

# Both
make -f makefile.osx all

# Create .app Bundle
make -f makefile.osx bundle

Install

# Install daemon
sudo make -f makefile.osx install

# Install GUI to /Applications
sudo make -f makefile.osx install-gui

Data Directory

~/Library/Application Support/Bitok/

IMPORTANT: Back up wallet.dat regularly!

Windows Build (10+ 64-bit)

Method 1: Cross-Compile from Ubuntu

Install Prerequisites

sudo apt-get update
sudo apt-get install -y mingw-w64 g++-mingw-w64-x86-64 wine64

Build

# GUI wallet
make -f makefile.mingw gui MARCH=x86-64-v3
x86_64-w64-mingw32-strip bitok.exe

Method 2: Native Windows Build (MSYS2)

Download from https://www.msys2.org/

Install Dependencies

pacman -Syu
pacman -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-boost \
    mingw-w64-x86_64-openssl mingw-w64-x86_64-db \
    mingw-w64-x86_64-wxWidgets3.2 make

Build

make -f makefile.mingw gui MARCH=x86-64-v3

Data Directory

%APPDATA%\Bitok\

IMPORTANT: Back up wallet.dat regularly!

RPC API Reference

JSON-RPC 1.0 interface for programmatic access. Essential for exchanges, mining pools, block explorers, and integrations.

ProtocolJSON-RPC 1.0
TransportHTTP POST
Default Port8332
Binding127.0.0.1 (localhost only)
AuthenticationHTTP Basic Auth

Connection

# Start daemon with RPC enabled
./bitokd -rpcuser=yourusername -rpcpassword=yourpassword -server

# Execute RPC command
./bitokd -rpcuser=yourusername -rpcpassword=yourpassword getinfo

General Commands

help

Lists all available RPC commands.

./bitokd help

getinfo

Returns general information about the node and wallet.

Returns: balance, blocks, connections, proxy, generate, genproclimit, difficulty
./bitokd getinfo

stop

Gracefully shuts down the Bitok server.

./bitokd stop

Blockchain Commands

getblockcount

Returns the total number of blocks in the longest block chain.

./bitokd getblockcount

getblockhash <index>

Returns the hash of the block at a specific height.

Parameters: index (number)
./bitokd getblockhash 0

getblock <hash>

Returns detailed information about a block given its hash.

Parameters: hash (string)
./bitokd getblock "000007a5d9c7..."

getdifficulty

Returns the current proof-of-work difficulty.

./bitokd getdifficulty

Wallet Commands

getbalance

Returns the total available balance in the wallet.

./bitokd getbalance

getnewaddress [label]

Generates a new Bitok address for receiving payments.

Parameters: label (string, optional)
./bitokd getnewaddress
./bitokd getnewaddress "customer123"

sendtoaddress <address> <amount>

Sends BITOK to a specified address.

Parameters: address (string), amount (number)
./bitokd sendtoaddress "1A1zP1eP5..." 10.50

Mining Commands

getgenerate

Returns the current mining status.

./bitokd getgenerate

setgenerate <generate> [genproclimit]

Enables or disables mining.

Parameters: generate (boolean), genproclimit (number, optional)
# Enable mining with 4 cores
./bitokd setgenerate true 4

# Disable mining
./bitokd setgenerate false

Python Example

import requests
import json

class BitokRPC:
    def __init__(self, user, password, host='127.0.0.1', port=8332):
        self.url = f'http://{host}:{port}/'
        self.auth = (user, password)
        self.headers = {'content-type': 'application/json'}
        self.id = 0

    def call(self, method, params=[]):
        self.id += 1
        payload = {
            'jsonrpc': '1.0',
            'id': self.id,
            'method': method,
            'params': params
        }
        response = requests.post(
            self.url,
            data=json.dumps(payload),
            headers=self.headers,
            auth=self.auth
        )
        return response.json()['result']

# Usage
rpc = BitokRPC('yourusername', 'yourpassword')
info = rpc.call('getinfo')
print(f"Balance: {info['balance']} BITOK")
print(f"Blocks: {info['blocks']}")

BitokPOW - Yespower Algorithm

CPU-optimized, GPU/ASIC-resistant mining as Satoshi intended.

Overview

Bitok replaces Bitcoin's SHA-256 proof-of-work with Yespower 1.0, a memory-hard, CPU-optimized hashing algorithm designed to resist GPU and ASIC acceleration.

"We should have a gentleman's agreement to postpone the GPU arms race as long as we can for the good of the network."

- Satoshi Nakamoto, December 12, 2010

What Changed

The entire change is swapping one hash function for another. Everything else - difficulty adjustment, block validation, consensus rules - remains exactly as Satoshi wrote it.

Bitcoin (SHA-256)

uint256 hash = block.GetHash();
if (hash <= target) {
    /* block found */
}

Bitok (Yespower)

uint256 hash = YespowerHashBlock(&block, 80);
if (hash <= target) {
    /* block found */
}

Yespower Parameters

yespower_params_t {
    .version = YESPOWER_1_0,
    .N = 2048,              // Memory cost (~128KB)
    .r = 32,                // Block size parameter
    .pers = "BitokPoW",     // Personalization string
    .perslen = 8
}

Design Goals

Goal SHA-256 Yespower
CPU-friendly No Yes
GPU-resistant No Yes
ASIC-resistant No Yes
Laptop mining viable No Yes
Memory-hard No Yes

Key Features

  • Sequential Memory Initialization: Must fill 128KB before starting. Cannot be parallelized.
  • Random Memory Access: Pseudo-random reads from 128KB buffer. Memory latency becomes the bottleneck.
  • SIMD Optimizations: Uses SSE2, AVX, AVX2, and AVX512 instructions automatically.
  • Domain Separation: "BitokPoW" personalization prevents cross-chain hash reuse.

Why GPUs Can't Win

  • Memory Bandwidth: GPUs have high bandwidth but poor latency for random access patterns.
  • SIMD Instructions: Modern x86 CPUs have AVX2/AVX512 which Yespower leverages.
  • Power Efficiency: A CPU uses 50-100W for reasonable hashrate. A GPU uses 250-350W for only 2-3x improvement.

Conclusion

Yespower proof-of-work implements Satoshi's vision of accessible CPU mining. Anyone with a laptop can participate in securing the network without specialized hardware.

This is not innovation. This is restoration.

Bitok Manifesto

An experiment in what Bitcoin would look like if Satoshi's vision of CPU mining had held up.

What Happened to Bitcoin

Bitcoin worked in 2010. You downloaded the software, clicked "Generate Coins," and your laptop found blocks. The network grew because participation was free and easy.

Then GPUs happened. Then mining pools. Then FPGAs, ASICs. The barrier to entry went from "own a computer" to "have access to cheap electricity and specialized hardware."

This was not a conspiracy. It was economics. SHA-256 happens to be very fast on parallel hardware. Someone was always going to optimize it.

What Satoshi Said About It

"We should have a gentleman's agreement to postpone the GPU arms race as long as we can for the good of the network. It's much easier to get new users up to speed if they don't have to worry about GPU drivers and compatibility. It's nice how anyone with just a CPU can compete fairly equally right now."

- Satoshi Nakamoto, December 12, 2010

"GPUs are much less evenly distributed, so the generated coins only go towards rewarding 20% of the people for joining the network instead of 100%."

- To Laszlo Hanyecz (the pizza guy)

He knew. He just didn't have a solution at the time.

What Bitok Changes

  1. Yespower instead of SHA-256 - GPU miners don't get 1000x advantage anymore. More like 2x, if that.
  2. New genesis block - Separate network. No confusion with BTC. No replay attacks. Clean slate.
  3. Modern build system - Compiles on Ubuntu 24.04, macOS, Windows.

Everything else is exactly as Satoshi left it. Same 21 million cap. Same 10 minute blocks. Same halving schedule. Same transaction format. Same script system. Same wallet behavior.

What Bitok Does NOT Change

  • No new opcodes
  • No SegWit
  • No block size increase
  • No layer 2
  • No BIPs
  • No governance
  • No foundation
  • No roadmap

The protocol is frozen at December 2010.

Why

I wanted to mine Bitcoin with my laptop. Not buy ASICs. Not join pools. Not pay for cloud hashrate.

I couldn't, because of physics and economics.

So I made this instead.

The Philosophy Part

Bitcoin's whitepaper is 9 pages. Most of it is math. Satoshi didn't write manifestos. He wrote code that worked and let people figure out what it meant.

The code said: anyone can transact. Anyone can mine. No intermediaries. No permission.

Somewhere along the way, "anyone can mine" became "anyone with industrial-scale infrastructure can mine." That happened gradually and probably inevitably.

Bitok is an experiment in what Bitcoin would look like if the mining algorithm had been different from the start.

Nothing more profound than that.

Will This Succeed

Define "succeed."

  • If you mean: will the software compile and run? Yes. I tested it.
  • If you mean: will people use it? Some might. Most won't. That's fine.
  • If you mean: will it be worth money? I genuinely don't know. Markets are weird.
  • If you mean: will it stay decentralized? That depends on whether enough people run nodes.

No Promises

I'm not going to tell you this will change the world. I'm not going to tell you to buy it. I'm not going to tell you anything you want to hear just because it sounds good.

Here's software. It does what it says. Run it or don't.

"Writing a description for this thing is bloody hard. There's nothing to quite relate it to."

- Satoshi Nakamoto, January 2009

Still true.

Security Fixes Included

All security fixes from Bitcoin v0.3.19 are present:

  • Value overflow protection (the 184 billion coin bug)
  • Blockchain checkpoints
  • DoS limits
  • IsStandard() transaction filtering

Bitcoin forked once in August 2010 to fix the overflow bug. Bitok launches with all fixes in place. No forks needed.

Run the code.

That is the manifesto.