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 BTFblock 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
52 base32 chars .btf
what it publishes, signed with that key
descriptor = address + encryption key + current relay
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
nostr relays where descriptors are published
rendezvous relay where two nodes are paired
peer exchange descriptors handed over by peers
The handshake, once paired
```
magic bf 20 5c fd
-> version 101 | services | time | addr | height
<- version 101 | services | time | addr | height
the height above is what the status page reads
```
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
printed once, to the terminal, never to debug.log
$ bitflash -restorephrase="twelve words"
walks 100 addresses at a time, rescanning,
and stops when a whole batch turns up nothing
```
The file
```
$ bitflash -backupwallet=backup.sqlite
a single file that opens on its own
new wallets are one self-contained wallet.sqlite;
an old wallet.dat still works and the app
converts it in one click. copying wallet.dat by
hand is NOT a backup: berkeley db needs database/
```
When the database will not open
```
$ bitflash -dumpwallet=keys.txt
$ bitflash -importwallet=keys.txt
one key per line, no database, any machine
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
or from the window: Options > Mining Mode
```
Run a pool
```
$ ./bitflash -nogui -gen -operator
the pool server is in the node,
reachable over .btf rendezvous only
```
Point a miner at one
$ xmrig -a rx/0 -o POOL.btf -u YOU.btf -p x
$ SRBMiner-MULTI --algorithm randomx \
--pool POOL.btf --wallet YOU.btf --password x
04Parameters
- Ticker
- BTF
- Proof of work
- RandomX, memory-hard, CPU
- Block time
- ~2 minutes
- Retarget
- every 30 blocks
- Reward
- 50 BTF, halving every 210,000
- Halving
- ~292 days
- Supply
- 21,000,000 BTF
- Maturity
- 100 blocks
- Sig ops
- 20,000 per block
- P2P port
- 8433
- Relay port
- 8434
- Protocol
- 101
- Premine
- none
- Licence
- MIT
05Get it
Download v1.2.20ManualSourceDiscord
```
check what you downloaded before you run it
$ sha256sum -c SHA256SUMS
linux
$ chmod +x Bitflash-.AppImage && ./Bitflash-.AppImage
windows: extract the zip, run Bitflash.exe
```
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.