Bridging BTC and STX (v5)
This is an update to the first article about the Clarity Bitcoin library from May 2021.
Clarity Bitcoin library is a tool that allows users to trigger action on the Stacks blockchain if and only if a certain Bitcoin transaction was mined on the Bitcoin blockchain. The Clarity Bitcoin library is a smart contract on the Stacks blockchain that helps developer to verify Bitcoin transactions. The smart contracts on the Stacks blockchain have a view on the Bitcoin blockchain, more precisely on the block hash of all Bitcoin blocks. Using this block hash together with some details about the bitcoin transaction (so-called merkle proofs) it can be cryptographically proven that the bitcoin transaction was indeed mined.
Version 5
With version 5, FriendsFerdinand, MarvinJanssen and myself created an updated version of the library that is more secure and that has more features. The source code and tests can be found on github: https://github.com/friedger/clarity-bitcoin.
In contrast to the first version, this version 5 allows to
verify transactions in any Bitcoin block. The first version could only handle Bitcoin blocks that have a corresponding Stacks block.
verify transactions containing witness data. The first version could only handle legacy Bitcoin transactions.
calculate the txid of a bitcoin tx with witness data when parsing a segwit transaction using
parse-wtx
. Note, that the hash of the full transaction data with witness data is thewtxid
, not thetxid
.
The library contract has the following high-level functions:
was-tx-mined-compact
andwas-segwit-tx-mined-compact
returning the(ok txid)
and(ok wtxid)
if the provided Bitcoin transaction data could be verified.parse-tx
andparse-wtx
returning a structured object for inputs, outputs and if necessary the witness data.
Tools for merkle proofs
The library contract clarity-bitcoin-lib-v5 requires some data from bitcoin transactions that needs to be collected from a bitcoin node. There is a tool at sbtc.tech that provides the required data for testnet bitcoin transaction. It can be used to try out the library contract and better understand the required data . Check the merkle proof button and enter your testnet transaction.
Applications
The most important use case next year will be sBTC. sBTC will probably use an optimised version in the Stacks node using the same technique.
Today, we see Alex using clarity-bitcoin library for $BR20 token bridging. There is also catamaranswaps.org for over-the-counter swaps of BTC and STX.
The library contract is deployed on mainnet at https://explorer.hiro.so/txid/SP2PABAF9FTAJYNFZH93XENAJ8FVY99RRM50D2JG9.clarity-bitcoin-lib-v5?chain=mainnet
Read more
Synthetic Events in Stacks
Most blockchains have a way to inform users about events that happened in a smart contract. Some events are emitted by default, others are defined explicitly by code in the contract. In Stacks, all changes involving a fungible or non-fungible token create events. For example, transferring the SIP-1...
Bridging BTC and STX (v5)
This is an update to the first article about the Clarity Bitcoin library from May 2021. Clarity Bitcoin library is a tool that allows users to trigger action on the Stacks blockchain if and only if a certain Bitcoin transaction was mined on the Bitcoin blockchain. The Clarity Bitcoin library is a s...
Transparent Reward Distributions
Fast Pool is a non-custodial stacking pool where all participants are pool operators. There is only one privileged reward administrator. The pool operators can lock the delegated STX tokens, extend the locking period and increase the locked amount after a 1-week security window for any pool member. ...