Bitflash — proof of work that runs on your CPU
BTF · RandomX · MIT
Contents
How nodes meet
How a wallet is rebuilt
How you mine
Parameters
Get it
Proof of work that runs on your CPU
Bitcoin 0.1.0, revived: same consensus rules, RandomX instead of SHA-256, and every node addressed by its own key over an encrypted rendezvous. No premine. No company. 21 million.
— block height
— relays up
50 BTF block reward
— mined so far
Read every 30 seconds from status.json, which is a live P2P handshake with a node rather than a cached number. A grey dot means this page could not reach the status daemon.
01How nodes meet
Nothing dials by IP. A node is addressed by its own public key and reached through an encrypted tunnel, so it works behind CGNAT and no peer learns where it is.
Addressing
# a node's address is its key, like a .onion<br>52 base32 chars .btf
# what it publishes, signed with that key<br>descriptor = address + encryption key + current relay<br># nobody can forge one for an address they do not own
Discovery, in the order it is tried
btfpeers.json peers that answered last time<br>nostr relays where descriptors are published<br>rendezvous relay where two nodes are paired<br>peer exchange descriptors handed over by peers
The handshake, once paired
magic bf 20 5c fd<br>-> version 101 | services | time | addr | height
02How a wallet is rebuilt
Twelve words rebuild the keys. The derivation is written down in full, with test vectors and a script that reproduces it using nothing but Python's standard library, so the words keep working even if this software does not.
The phrase
$ bitflash -newphrase<br># printed once, to the terminal, never to debug.log
$ bitflash -restorephrase="twelve words"<br># walks 100 addresses at a time, rescanning,<br># and stops when a whole batch turns up nothing
The file
$ bitflash -backupwallet=backup.sqlite<br># a single file that opens on its own
# new wallets are one self-contained wallet.sqlite;<br># an old wallet.dat still works and the app<br># converts it in one click. copying wallet.dat by<br># hand is NOT a backup: berkeley db needs database/
When the database will not open
$ bitflash -dumpwallet=keys.txt<br>$ bitflash -importwallet=keys.txt<br># one key per line, no database, any machine<br># it is your keys in the clear: move it, delete it
Keys made before the seed was installed are random: they do not come back from the words. That is why both backups exist, and it is where people lose money. Since 1.2.20 the wallet is a single SQLite file by default: wallet storage, and the derivation specification.
03How you mine
RandomX is memory-hard and built for general-purpose CPUs, so a laptop competes with a server and an ASIC has no advantage worth the electricity.
On your own
$ ./bitflash -nogui -gen<br># or from the window: Options > Mining Mode
Run a pool
$ ./bitflash -nogui -gen -operator<br># the pool server is in the node,<br># reachable over .btf rendezvous only
Point a miner at one
$ xmrig -a rx/0 -o POOL.btf -u YOU.btf -p x<br>$ SRBMiner-MULTI --algorithm randomx \<br>--pool POOL.btf --wallet YOU.btf --password x
04Parameters
TickerBTF
Proof of workRandomX, memory-hard, CPU
Block time~2 minutes
Retargetevery 30 blocks
Reward50 BTF, halving every 210,000
Halving~292 days
Supply21,000,000 BTF
Maturity100 blocks
Sig ops20,000 per block
P2P port8433
Relay port8434
Protocol101
Preminenone
LicenceMIT
05Get it
Download v1.2.20ManualSourceDiscord
# check what you downloaded before you run it<br>$ sha256sum -c SHA256SUMS
# linux<br>$ chmod +x Bitflash-*.AppImage && ./Bitflash-*.AppImage
# windows: extract the zip, run Bitflash.exe<br>Consensus rules have changed since the first releases, so an old build quietly follows a different chain. Keep the node current, write the twelve words on paper, and do not put in more than you are willing to lose.