Skip to content

scaffino/Blink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

126c5e1 · Jan 10, 2025

History

50 Commits
Jan 10, 2025
Sep 8, 2024
Apr 30, 2024
Jul 6, 2024
Jan 10, 2025

Repository files navigation

Blink Overview

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 O ( k ) amount of communication, computational, and storage resources. k is the common prefix security parameter, e.g., the conventional 6 confirmation blocks in Bitcoin. In practice, k is considered constant, making Blink the first constant-size client for PoW chains. Contrary to most zero-knowledge based clients, Blink does not assume a trusted setup.

Proof Design

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 η , includes it in a transaction Tx η , and sends it to the full nodes. For instance, Tx η can be a payment to a vendor's fresh address, sampled with high entropy. Then, Blink waits for Tx η to be included on-chain in a block and confirmed. The full nodes respond to the client with a proof π consisting of only 2k+1 consecutive block headers, with the header of the block including Tx η sitting in the middle.

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.

Security

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.

Paper

For a full description and formalization, see the Blink paper.

The Blink Client

Config

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.

CLI commands

--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

Run

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"

About

A optimal client for PoW blockchains

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published