upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/docs/fair-launch.md
blob: 960391086a35e8d6586f27307a6c1b7269c63b3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Bitflash fair-launch verifier

Bitflash ships a deterministic fair-launch audit script:

```bash
python3 scripts/verify-fair-launch.py --max-blocks 1000 --out bitflash-fair-launch-report.json --json
```

The verifier reads `blk*.dat` directly from the local Bitflash data directory.
It does not use Berkeley DB, does not call the node binary, and does not need
network access. It uses the same shared Python chain parser as the UTXO
commitment and proof tools, so block serialization fixes land in one place.

The report proves the launch baseline that can be checked from the chain:

- the genesis block hash matches the source constant;
- the genesis merkle root matches the source constant;
- the genesis transaction is a single coinbase transaction;
- the genesis output total is exactly `50.00000000 BTF`;
- the scanned block range and mined coinbase total are reproducible.

For machines that do not have a synced data directory yet, the source constants
can be checked without disk blocks:

```bash
python3 scripts/verify-fair-launch.py --reconstruct-genesis
```

## Deterministic output

Use `--json` or `--out` for canonical JSON. The JSON is written with sorted
keys, fixed separators, ASCII escaping, and one trailing newline. It deliberately
does not include local paths or wall-clock generation time, so two auditors
scanning the same block range produce the same bytes.

That makes the report shareable:

```bash
python3 scripts/verify-fair-launch.py --max-blocks 1000 --out report.json --json
sha256sum report.json
```

If another auditor runs the same command against the same chain prefix, the
`sha256sum` should match.

## OpenTimestamps

OpenTimestamps is optional and external. It anchors the report in Bitcoin
without adding any bridge or dependency to Bitflash consensus.

After generating a canonical JSON report:

```bash
ots stamp report.json
ots verify report.json.ots
```

The `.ots` file proves that the exact report bytes existed no later than the
Bitcoin block that confirms the timestamp.

## What this does not claim

This is not a retroactive genesis commitment. The Bitflash genesis block already
exists, so adding a new on-chain commitment to genesis would create a different
chain. This verifier instead audits the launch state that is already on-chain
and makes the result reproducible and timestampable.

It also does not prove real-world miner identity. It proves the genesis state,
the absence of non-coinbase premine in genesis, and the deterministic coinbase
totals over the scanned prefix.