Skip to content

Commit

Permalink
fix(bridge): NUMS point
Browse files Browse the repository at this point in the history
  • Loading branch information
storopoli committed Oct 1, 2024
1 parent de72960 commit 2f8c78f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
16 changes: 9 additions & 7 deletions docs/technical/bitcoin-bridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
Any references to bitcoin or BTC in this documentation should be read
as "bitcoin signet" or "signet BTC" when describing the current system.

The Strata bitcoin bridge enables the transfer of BTC between the bitcoin and Strata blockchains.
The Strata bitcoin bridge enables the transfer of BTC between the bitcoin
and Strata blockchains.
The bridge is run by a federation of operators who
co-sign transactions to move BTC into and out of the Strata bridge address.

Expand Down Expand Up @@ -52,8 +53,9 @@ who sends 10[^fees] BTC to a P2TR address, where:

[^nums]:
"Nothing Up My Sleeve" (NUMS) point,
i.e., a point with unknown discrete logarithm, chosen as $H = lift_x(G)$
where $G$ is the secp256k1 generator point,
i.e., a point with unknown discrete logarithm,
constructed by taking the hash of the standard uncompressed encoding of
the [secp256k1](https://www.secg.org/sec2-v2.pdf) base point $G$ as $X$ coordinate,
as per [BIP 341](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#constructing-and-spending-taproot-outputs).
An unspendable pubkey is a point on the curve whose discrete log
is not known with respect to the generator point $G$.
Expand All @@ -63,7 +65,7 @@ who sends 10[^fees] BTC to a P2TR address, where:
1. The script path spend has two paths:
1. "Deposit path", an $N$-of-$N$ multisig path,
where $N$ is the number of operators in the bridge.
2. "Take back" path,
1. "Take back" path,
which allows the user to take back their funds if the bridge fails to
move funds from the Deposit Request Transaction (DRT)
into the bridge address within a two-week period,
Expand Down Expand Up @@ -122,14 +124,14 @@ fulfill the request on bitcoin:

1. The user requests a withdrawal making sure to burn the
same amount of `BTC` on Strata.
2. The assigned operator creates and signs a Withdrawal Transaction
1. The assigned operator creates and signs a Withdrawal Transaction
(WT) where they spend 10 BTC from the bridge address' UTXO set,
while subtracting the operator's fee and the mining fee,
and requests the other $N−1$ operators to sign
the Withdrawal Transaction.
3. Once all the signatures have been aggregated, the transaction is submitted to
1. Once all the signatures have been aggregated, the transaction is submitted to
bitcoin.
4. Once the transaction is confirmed,
1. Once the transaction is confirmed,
the withdrawal request is fulfilled.

The withdrawal flow is shown below:
Expand Down
1 change: 1 addition & 0 deletions project-words.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ satoshis
secp
snarknado
squidfunk
standardness
timelock
txid
unspendable
Expand Down

0 comments on commit 2f8c78f

Please sign in to comment.