Blink is an interactive light client for Proof-of-Work blockchains which, contrary to other existing clients (e.g., NiPoPoW, Flyclient, SPV, and more) operates by only consuming an
In a nutshell, the Blink client connects to multiple full nodes, so that at least one of them can be assumed honest.
The client locally samples a random value
This proof ensures that the first block in the proof is stable and, therefore, it can be considered as a checkpoint or as a new genesis.
Blink is proven secure in the Bitcoin Backbone model, assuming a static population (i.e., static difficulty) and an adaptive adversary holding less than 50% of the computational power of the network.
For a full description and formalization, see the Blink paper.
In the src/config.ini
file, enter the endpoints for full nodes (mainnet and/or testnet), the details of the UTXO the entropy transaction must spend, the common prefix security parameter, and your local path to the file holding your secret key.
--mainnet
: the client is run on mainnet. If omitted, testnet is default.
--dry-run
: the client is run with a default entropy transaction id. If omitted, the client broadcast a new entropy transaction. By using it in combination with --entropy_txid
, you can provide a new entropy transaction id to use
The Blink client can be executed either via the Makefile
or via the shebang line. If the entropy transaction is already on-chain and its txid is known, you can run the following command:
make ARGS="--dry-run --mainnet --test-txid=your_entropy_txid"
else, to create and broadcast a new entropy transaction run
make ARGS="--mainnet"