project screenshot 1
project screenshot 2
project screenshot 3

TickBit

TickBit demonstrates the fastest Bitcoin block status verification via web proofs.

TickBit

Created At

ETHGlobal Bangkok

Winner of

Blockscout - Blockscout Explorer Big Pool Prize

Prize Pool

Project Description

“Signed exchanges (SXG) allow Google Search to prefetch your content while preserving the user's privacy. In practice, this means that both AMP and non-AMP results shown on Google Search may prefetch a few key resources (such as HTML, JavaScript, CSS, images, or fonts) in a privacy-preserving manner, if the associated website supports SXG.” —Google

We used https://btc.cryptoid.info/btc/, a Bitcoin indexer, which have been operational for the last ten years. They have enabled SXG’s on their webpages recently to create attestation that a valid bitcoin block has been indexed by their systems and is available publicly to all their users. TickBit relies on relayers who can generate a proof of a valid response from the crypto.id servers.

How it's Made

The idea is a user of Ticket can bet that a bitcoin block will be mined in an interval while relayers can generate proofs for the block’s validity to create a game where the closet bet to the timestamp hashed in the Bitcoin header is deemed the winner. Another user case provided the tooling generated for TickBit would be to enable cross chain transfer of Bitcoin to and from the supported chains.

The proof is generated to verify if the response from the indexer’s webpage contains a mined Bitcoin block hash. This is done via !. Verifying SXG signatures from the website off-chain 2. Finding the integrity hash using MICE or mi-sha256 The hash function used for "mi-sha256" content encoding is SHA-256 [FIPS180-4]. The integrity proof for all records other than the last is the hash of the concatenation of the record, the integrity proof of all subsequent records, and a single octet with a value of 0x1:

  proof(r[i]) = SHA-256(r[i] || proof(r[i+1]) || 0x1)

The integrity proof for the final record is the hash of the record with a single octet with a value 0x0 appended:

  proof(r[last]) = SHA-256(r[last] || 0x0)

3. Generating a proof for following 1. Inclusion for integrity in the response data 2. Verification of secp256r1 signature from the server’s TLS certificate. The circuits are built using precompiles and rust libraries provided by SP1 (by Succinct) ZKP is used in TickBit as a means of verifiable compression for the webpage size is fairly big and expensive to perform an on-chain verification while a 160 bytes Groth16 proof provides cheap and constant time verification. Verification of additional parameters if needed per use case can be implemented as part the zk circuit eg. If the bets are required to be private (or) if the transaction (inputs (or) outputs) to be verified for inclusion in the Bitcoin block header must remain private.

background image mobile

Join the mailing list

Get the latest news and updates