Let's follow the journey of 1 BTC as it moves through the sBTC system, from initial deposit to final withdrawal.
Alice decides to convert 1 BTC to sBTC to participate in Stacks DeFi.
- Alice creates a deposit transaction on the Bitcoin network (this will likely be done via a UI like the sBTC bridge or a DeFi application).
- The transaction enters the Bitcoin mempool.
- Alice submits proof of her deposit to the Deposit API.
- The Deposit API sets the deposit status to PENDING.
The sBTC Signer Set:
- Detects the deposit.
- Validates the UTXO format.
- Votes on the deposit.
If the deposit is rejected:
- Signers notify the API of the rejection.
- The Deposit API updates the status to FAILED.
If the deposit is accepted:
- The Deposit API updates the status to ACCEPTED.
If accepted, the sBTC Signer Set:
- Creates a new Bitcoin transaction consuming Alice's deposited BTC.
- Broadcasts this transaction to the Bitcoin network.
If this transaction fails:
- Signers notify the API of the failure.
- The Deposit API updates the status to FAILED.
Upon successful Bitcoin transaction:
- The sBTC Signer Set interacts with the Stacks blockchain.
- They fulfill the deposit by minting 1 sBTC to Alice's Stacks address.
- The Deposit API updates the deposit status to CONFIRMED.
- Alice now has 1 sBTC in her Stacks wallet.
Alice can now use her 1 sBTC in the Stacks ecosystem:
- She can transfer it to other users via the
sbtc-token
contract (again this will usually be done via an application UI). - Participate in DeFi applications.
- Use it in any application that supports SIP-010 tokens.
Alice decides to withdraw her 1 sBTC back to BTC.
- Alice interacts with the Clarity contract on the Stacks blockchain to initiate a withdrawal.
- She specifies her Bitcoin address for the withdrawal.
- If successful, the contract locks her sBTC and the withdrawal status is set to PENDING.
- If the transaction fails, no withdrawal occurs.
The sBTC Signer Set:
- Detects the withdrawal request.
- Decides whether to accept or reject the withdrawal.
If the withdrawal is rejected:
- Signers unlock the sBTC.
- The withdrawal status is updated to FAILED.
If the withdrawal is accepted:
- The withdrawal status is updated to ACCEPTED.
- Signers wait for 6 Bitcoin block confirmations (for security purposes).
After the waiting period, if accepted:
- The sBTC Signer Set creates a new Bitcoin transaction fulfilling Alice's withdrawal.
- They broadcast this transaction to the Bitcoin network.
If this transaction fails:
- Signers unlock the sBTC.
- The withdrawal status is updated to FAILED.
Upon successful Bitcoin transaction:
- The sBTC Signer Set burns the locked 1 sBTC on the Stacks blockchain.
- The withdrawal status is updated to CONFIRMED.
- Alice now has her 1 BTC back in her specified Bitcoin address.
- The withdrawn sBTC has been permanently removed from circulation.
- The Peg Wallet UTXO is secured by the multi-signature scheme of the sBTC Signer Set.
- All interactions with Clarity contracts (
sbtc-deposit
,sbtc-withdrawal
,sbtc-token
) undergo rigorous validation. - The Emily API ensures data consistency through chainstate management and event-driven updates.
- The entire process is monitored for unusual activity or potential exploits.