From 5d855ad6b684fd8a16e9b1a3681b1f88d430dedb Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Sat, 30 Sep 2023 23:12:35 -0400 Subject: [PATCH 1/9] initial draft of nakamoto-backed sbtc SIP --- sips/sip-025/sip-025-sbtc.md | 849 +++++++++++++++++++++++++++++++++++ 1 file changed, 849 insertions(+) create mode 100644 sips/sip-025/sip-025-sbtc.md diff --git a/sips/sip-025/sip-025-sbtc.md b/sips/sip-025/sip-025-sbtc.md new file mode 100644 index 000000000..8ffc25dff --- /dev/null +++ b/sips/sip-025/sip-025-sbtc.md @@ -0,0 +1,849 @@ +# Preamble + +SIP Number: 022 + +Title: A Trustless 2-way Bitcoin Peg for Stacks + +Authors: +* Aaron Blankstein +* Brice Dobry +* Jude Nelson +* Don Park +* Alie Slade +* Andre Serrano +* Igor Sylvester +* Joey Yandle ¿¼ + +Consideration: Technical, Governance + +Type: Consensus + +Status: Draft + +Created: 28 September 2023 + +License: CC0-1.0 + +Sign-off: + +Layer: Consensus (hard fork) + +Discussions-To: https://github.com/stacksgov/sips + +# Abstract + +This SIP proposes the creation of a **trustless two-way peg** in which BTC (the +tokens of the current Stacks burnchain) can be manifested on Stacks as a +SIP-010-compliant fungible token, called sBTC, and later redeemed for the same +number of BTC. This proposal redefines the act of Stacking to be the act of +maintaining a _peg wallet_, which is used to hold BTC and process sBTC +redemptions. Stackers are collectively responsible for ensuring that all +liquid sBTC are backed by an equal number of BTC, and that redemptions are +processed in a timely manner. As a reward, they continue to receive PoX +payouts. + +# Introduction + +The lack of a stateful smart contract system on Bitcoin necessitates the +construction of systems in which a representation of locked Bitcoin is traded +within a separate smart-contract-powered blockchain. These systems aim to +provide a "2-way peg" between the representation of the locked BTC ("wrapped +BTC") and the BTC itself. At a high level, these systems seek to provide two +primitive operations: + +* "Peg-in": a BTC holder rids themselves of their BTC, and in doing so, +receives the equivalent amount of wrapped BTC on the smart contract chain + +* "Peg-out": a wrapped BTC holder destroys their wrapped BTC on the smart +contract chain, and receives an equivalent amount of BTC on the Bitcoin chain + +While peg-in/peg-out operations are trivial to implement if a trusted +intermediary (a "custodian") can be found to exchange the wrapped BTC for the +BTC and vice versa, a robust, incentive-compatible system remains elusive. We +identify two key shortcomings in the state-of-the-art 2-way peg systems that we +believe renders them insufficiently robust for widespread usage: + +* **Peg safety failures are irrecoverable**. All existing 2-way peg systems +that we are aware of do not have a way to recover missing BTC should the peg +state ever become corrupted (i.e. through the loss of BTC). Any such recovery, +if it happens at all, happens out-of-band through the actions of a trusted +intermediary or intermediaries. This places an enormous barrier to entry for +users, who would need to vet intermediaries before trusting them with large +sums of BTC. + +* **Reliance on under-incentivized intermediaries.** State-of-the-art 2-way +peg systems rely on one or more intermediaries to maintain the peg state, but +do not reward them proportional to the value they create. Specifically, these +peg intermediaries provide value even when the peg transaction volume is low, +because user confidence in the system depends on the belief that the +intermediaries are nevertheless always available and trustworthy. For example, +the reason blockchains have a large coinbase relative to their transaction fees +is to incentivize miners to always be available to process transactions. But +today, there is no 2-way peg system we are aware of that rewards peg +intermediaries in this manner -- there is no "peg coinbase." Collateralized +pegs suffer a similar shortcoming -- there is little upside to honest +participation, but tremendous downside to going offline, which creates a high +barrier-to-entry for participating as an intermediary. + +The system we present, called "sBTC," addresses these two short-comings by +leveraging unique properties of the Stacks blockchain. Our key insight is that +Stacks' PoX consensus algorithm offers a way to _recover from_ peg safety +failures while also _properly rewarding_ peg intermediaries for the value they +provide. Specifically: + +* We use the fact that the Stacks blockchain "forks with" the Bitcoin +blockchain to propose an open-membership peg wallet maintained by Stackers. +If Bitcoin forks, then both the Stacker set and their wallet forks with it, and +the two resulting Stacker sets and wallets each own BTC on their respective +forks. This means that Stackers do not lose money from forks, nor do forks +pose a risk to the safety of users' BTC. + +* We use the fact that PoX pays BTC +to STX holders to propose a liveness recovery mechanism, whereby some BTC +payouts are repurposed to fulfill peg-out requests should the custodian fail. + +* We reward Stackers for staying online to process peg operations by +compensating them with BTC via PoX, regardless of the peg's operation volume. Stackers +are compensated proportional to their signing power on the peg (i.e how many +STX they locked) regardless of how many peg transactions they process. + +By leveraging these properties, sBTC offers the following advantages over the +state-of-the-art: + +* **If a majority of Stackers are honest, then sBTC remains safe.** Every BTC +peg-out is paired with an equivalent, legitimate request from a wrapped BTC +holder, _even if every miner is malicious_. This is achieved by ensuring that +all Stacking and peg-maintenance operations materialize in all Stacks forks. + +* **If a Byzantine fault-tolerant (BFT) majority of miners are honest, then sBTC +remains live**. All peg-out requests are eventually fulfilled, _even if every +Stacker is malicious_. This is because Stackers do not have a say in block +production, and Stackers that do not fulfill peg-outs lose their PoX-driven BTC +income from miners. + +* **Peg-outs of arbitrary amounts of BTC are fulfilled in +a fixed amount of time on the happy path** if both Stackers and miners operate with a BFT honest +majority. If they do not, then peg-outs of arbitrary amounts of BTC +are fulfilled eventually by _redirecting_ Stackers' PoX payouts to fund peg-out +requests. + +To support this, sBTC offers two modes of operation: +the Normal mode, and the Recovery mode. In **Normal mode**, the sBTC asset is +backed 1:1 by BTC sent to a wallet controlled by a large fraction of Stackers, +as measured by the fraction of locked STX they represent. Each time BTC is +sent to this wallet (a peg-in operation), an equal number of sBTC are +automatically minted to an address of the sender's choosing. Stackers respond +to peg-out requests by sending BTC to the requester's Bitcoin address, thereby +maintaining the peg. The act of responding to peg-out requests automatically +destroys the requester's equivalent amount of sBTC on the Stacks chain. + +If the Normal mode encounters a liveness failure for any reason (including loss +of BTC), the system transitions to a Recovery mode until enough Stackers come +back online. In **Recovery mode**, a fraction of the PoX payouts are +redirected to peg-out requests such that eventually, all outstanding requests +will be fulfilled, even if the Stackers _never_ come back online. While +considerably slower than Normal mode, the design of Recovery mode ensures all +sBTC can be redeemed so long as the Stacks blockchain and PoX are online. + +This proposal, if ratified, would be executed by at least two hard forks: one +to implement Normal mode, and a follow-on hard fork to implement Recovery mode. +This SIP is designed to leverage features proposed by SIP-021, and can only +activate if SIP-021 is ratified beforehand or concurrently with this SIP. + +This proposal describes Normal mode. Recovery mode will be fully described in a +future SIP, and will have a separate activation procedure. The Recovery mode +SIP cannot activate without this SIP first being ratified. + +# Specification + +The proposed SIP-021 upgrade would do away with Stacks forks, which vastly +simplifies the sBTC design. Importantly, miners and Stackers cannot "roll back" +sBTC operations, meaning that peg-in and peg-out operations follow at-most-once +semantics. This lack of "fork risk" means that the system can support +arbitrarily large amounts of BTC pegged-in and pegged-out, assuming that at +least 70% of Stackers by weight are trustworthy. + +The sBTC system state is materialized in a boot contract called `.sbtc`. This +contract, like `.pox-4`, is managed in part by the node itself. In particular, +the node writes sBTC state from Bitcoin into the data space of `.sbtc` (such as +via a private function that only the node can call), so that it can be accessed +by smart contracts in Stacks. + +The following sections describe the Normal mode of operation. Recovery mode is +left for future work, but is described in a separate section after Normal mode. + +## Peg-In + +A peg-in operation is initiated as a Bitcoin transaction with a special payload +in an `OP_RETURN` output (Figure 1). Because this is a Stacks-on-Bitcoin +transaction, a miner in a subsequent tenure is required by the consensus rules +to process it as part of producing the first block in its tenure. The Stacks +node records the existence of this peg-in operation in the data space of the +`.sbtc` smart contract, where it is marked as a _pending_ operation that +Stackers must act upon. Namely, the relevant parts of the transaction are +extracted and translated in to Clarity values and made available via internal data maps. + +Stackers, via their signer daemons, already subscribe to the Stacks blockchain +for events. The act of writing new sBTC peg-in state to the `.sbtc` contract +generates such an event -- an event that alerts the signer daemons to begin a +signing round to act on the peg-in. + +In the happy path, at least 70% of Stackers agree that the peg-in transaction is +valid, and they generate a contract-call to the `.sbtc` contract to +_authorize_ the peg-in by minting the equivalent number of sBTC tokens to +an account address of the user's choice. Crucially, the transaction is signed +collectively by Stackers via a WSTS signing round -- it is authenticated via a +Schnorr proof and the Stacker's aggregate public key. This way, _only_ the +Stackers can authorize the peg-in, and only via a 70%+ majority vote. + +Once stackers generate the authorization transaction, they make it available to +miners via their StackerDB instance, and require the current miner to include it +in the next block they produce. If the miner does not do so, then the Stackers +will not sign the block; this all but compells the miner to include the +transaction. + +The user must wait until their peg-in transaction confirms on Bitcoin before the +sBTC tokens materialize. This is required because Stacks miners only process +pending Stacks-on-Bitcoin transactions for Bitcoin blocks up to but _excluding_ +the Bitcoin block in which their `block-commit` landed. + +The act of fulfilling a peg-in with an affirmative vote is effectively a promise +made by Stackers to users to ensure that the sBTC minted wll remain fully backed +by the BTC the user submitted. This BTC may only be spent to fulfill peg-outs, +or to process a wallet hand-off at the end of a reward cycle. Either way, the +user's BTC will be spent by Stackers before they can reclaim it via the spending +fulfillment script. + +# Figure 1 Goes Here + +_Figure 1: Protocol diagram of an sBTC peg-in. The user submits a Bitcoin +transaction, and eventually, the equivalent number of sBTC tokens materialize in +the account of the user's choosing_. + +### Peg-in Bitcoin Transaction + +The peg-in Bitcoin transaction contains the following data: + +* An `OP_RETURN` data output, which contains the account address to which sBTC + should be minted + +* A payment to the sBTC peg wallet maintained by the current Stackers. This + payment UTXO is the hash of a script that has two spending fulfillment +conditions: either the Stackers spend the UTXO before the end of the next +reward cycle, or the sender can spend the UTXO once the end of the next reward +cycle has passed. + +The payment must be above a `.sbtc`-defined threshold, in satoshis. This +_minimum peg-in_ value is used to prevent users from spamming the system with +dust peg-ins. Stackers can vote to adjust the minimum peg-in. + +### Stacker Authorization Transaction + +The authorization transaction contains the following data: + +* The quantity of BTC sent to the peg wallet. + +* The address to which the sBTC should be minted. + +* A vote "yes", "no", or "abstain" to carry out the peg-in, to deny the peg-in, + or to record that no agreement could be reached (respectively). + +* A bitmap of which stackers voted. + +* A pointer to the peg-in transaction's UTXO + +, * The Bitcoin redeem script for the user's payment. The Stackers must verify + that the script contains the aforementioned spending fulfillment conditions, +_and no others_. The script is disclosed on the Stacks chain in order to (1) +allow 3rd parties to authenticate the script and (2) check the Stackers' work in +order to hold them accountable. + +On successful execution, the sBTC will be minted to the user-specified Stacks +account, and the redeem script will be stored in the `.sbtc` contract for +posterity. The `.sbtc` contract does not attempt to parse or validate the +redeem script, but it does keep track of all of the UTXOs that the wallet +has assumed control over via "yes" votes. In addition, it stores the voting +results and bitmaps for posterity. + +There is no transaction fee for the Stacker authorization transaction. Stackers +instead require the miner to include it for free in their blocks by withholding +block signatures until it is included. + +### Failure Modes and Recovery + +There are several places where a peg-in can fail. First, the Stackers may fail +to complete a signing round that achieves the 70% threshold. One of the +following outcomes will happen: + +* The Stackers produce a peg-in authorization with at least 70% of the STX + voting against it. In this case, the sBTC is not minted, and the user can +later reclaim their BTC once the subsequent reward cycle finishes (i.e. the +reward cycle _after_ this current reward cycle). + +* The Stackers are unable to come to agreement on "yes" or "no". In this case, + the Stackers record this outcome by submitting each Stacker's individual votes as +a bitmap to the `.sbtc` contract. This is a vote to abstain. No sBTC will be +minted, but a record of how each Stacker voted is preserved. The user later +reclaims their BTC once the subsequent reward cycle finishes. + +* A new set of Stackers come online as part of a new reward cycle starting while + the peg-in request is pending. In this case, the peg-in request is cancelled +-- the new Stackers cannot act on it. The spending conditions of the +peg-in script will permit the user to reclaim their Bitcoin later. + +* The Stackers are unable to complete a WSTS signing round. In this case, the + sBTC system freezes until the Stackers are able to come back online -- no +peg-ins or peg-outs will be processed. Freezing +and thawing the system are discussed in a subsequent section. + +Second, the miner can fail to include the peg-in authorization transaction from +the Stackers. This would prevent the Stackers' vote from being recorded in +`.sbtc`. If this happens, then Stackers refuse to sign any blocks until they +see a block which contains the as-yet-unmined authorization transaction(s). If +need be, Stackers themselves can spend some BTC to become miners in order to +push their transactions through. + +### Transaction Fees + +The user pays the transaction fee for their sBTC peg-in transaction. Stackers +do not pay a STX transaction fee, but instead require miners to include their +peg-in authorization transaction in the next block they sign. + +### Two-phase Peg-In + +Users may not be able to send a Bitcoin transaction with an `OP_RETURN` output. +For example, this is difficult to do or is unsupported in some Bitcoin wallets, +especially custodial wallets. To support these users, a 3rd party could simply +send peg-in transaction on their behalf. The user would simply pay the 3rd +party the requisite Bitcoin to peg-in, and the 3rd party would generate and send +the peg-in transaction for them. + +## Peg-Out + +Pegging out is the act of redeeming sBTC for BTC (Figure 2). +To redeem sBTC for BTC, the user first sends a Stacks trnsaction to `.sbtc` +to indicate the following: + +* How much sBTC they would like to redeem + +* The Bitcoin address to which the BTC will be sent + +* As an optional hint, the list of UTXOs that could be consumed to produce a BTC + redemption transaction + +This request is queued up in the `.sbtc` data space, which Stackers (through +their signer daemons) observe and react to. When the transaction confirms, the +user's requested sBTC is locked until the end of the next reward cycle -- the +user cannot spend it while Stackers are considering the request. + +# FIGURE 2 GOES HERE + +_Figure 2:_ + +When Stackers see the peg-out request, and if they are able to act on it (i.e. +the wallet has enough UTXOs free), they execute a WSTS signing round to +generate a Bitcoin transaction from the peg wallet's UTXOs which pays out to the +user's requested address. Because all pegged-in BTC is spendable by the current +set of Stackers via an aggregate Schnorr signature, Stackers simply create the +scriptSigs for sufficiently many UTXOs to fund a fulfillment UTXO for the user. + +Because fulfilling the redemption request occurs through WSTS, there is a +possibility of a quorum failure. As such, the Stackers may instead vote to +abstain or even to refuse the peg-out request. This is explained in the +"Failure Modes" section. + +The BTC redemption transaction contains the following fields: + +* An `OP_RETURN` identifying the peg-out request in the `.sbtc` contract + +* A new UTXO that redeems the user's sBTC for BTC + +* A change UTXO that consolidates the remaining unused BTC from the consumed + wallet UTXOs + +Once the Stackers have created the BTC redemption transaction, they both send it +to the Bitcoin peer, and send a Stacks transaction with a copy of the Bitcoin +transaction to `.sbtc`, so that the transaction is _also_ stored publicly in the +`.sbtc` contract's data space. This is done for failure recovery: if the +Bitcoin transaction does not confirm quickly, the Stackers can try again (see +below). Also, the existence of the signed Bitcoin transaction in the `.sbtc` +data space serves as proof that the Stackers handled the peg-out request in a +timely manner, even if it was not confirmed on Bitcoin as quickly as desired. +When the `.sbtc` contract processes the copy of the BTC redemption transaction, +it marks the UTXOs it consumes as "tentatively used" so that a +concurrently-generated BTC redemption transaction dees not also use them. + +Once the BTC redemption transaction confirms on Bitcoin, a Stacks miner +processes it as a Stacks-on-Bitcoin transaction. The act of processing this +transaction is the act of calling into the `.sbtc` contract to mark the pending +sBTC peg-out as fulfilled. This burns the user's locked sBTC, and marks the +peg-out operation as complete. It also updates the `.sbtc` transaction's +knowledge of the wallet's UTXO set by clearing the UTXOs consumed by the +fulfillment, and adding the change UTXO as a new UTXO that the wallet controls. + +### Peg-Out Congestion + +A key responsibility of the `.sbtc` wallet is to keep track of which Bitcoin +UTXOs are under the control of the peg wallet, and which ones are tentatively +consumed and tentatively produced by in-flight BTC redemption transactions. +This is necessary because the system has no way of guaranteeing that a BTC +redemption transaction will ever be confirmed. Instead, by keeping track of the +in-flight UTXOs this way, Stackers may process multiple BTC redemptions in +parallel while waiting for them to confirm. + +That said, the rate at which sBTC peg-out requests arrive may exceed the rate at +which Stackers can fulfill them. If there are not enough unused UTXOs to +fulfill a peg-out request, then Stackers _instead_ send a collectively-signed +Stacks transaction to `.sbtc` that NACKs the peg-out request. This unlocks the +user's sBTC. The user may try again later. + +It is possible that the BTC redemption transaction does not confirm for some +time, or even at all. This can happen if the BTC transaction fee is too low, +for example. In this case, few or no wallet UTXOs would be in a usable state, +since they would all be tied up by in-flight Bitcoin transactions. + +Stackers have a few tactics to handle this congestion: + +1. They can replace-by-fee (RBF) in-flight transactions, such as by prioritizing the transactions +whose inputs represent the highest value. The extra BTC to pay the fee would come from +the peg wallet UTXOs. + +2. If there is not enough BTC in the consumed UTXOs to do the above, then the Stackers would +double-spend the in-flight transactions by consuming additional wallet UTXOs +(which themselves may be in-flight) to increase the transaction fee. This may +invalidate some other in-flight transactions; these transactions would need to +be re-issued. + +3. If there is insufficient BTC available to increase the fee, then Stackers themselves would +need to create a UTXO for the peg wallet from their personal funds (e.g. their +PoX payouts) to cover the fee. + +Regardless of which tactic is taken, the Stackers would need to also _replace_ the +copy of the in-flight Bitcoin transaction in the `.sbtc` contract, so the +`.sbtc` contract can update its view of the available wallet UTXOs. This would +be achieved by a contract-call to `.sbtc` to carry out the replacement. As +before, Stackers would require miners to include this transaction in their +blocks in order for the blocks to be signed. + +The act of replacing an in-flight transaction in `.sbtc` is also the act of +updating its knowledge of how much _extra_ BTC was spent out of the peg wallet +to cover the additional transaction fee. This is important for the hand-off +(see below). + +### Transaction Fees + +Bitcoin transaction fees are unavoidable. This proposal calls for users to pay +the BTC transaction fee for both their peg-ins and peg-outs. As such, there +exists a minimum BTC redemption amount: a given redemption request, minus the +fees required to produce a BTC redemption transaction, must be worth more than +the Bitcoin dust minimum (5,500 satoshis). If it is not, then the Stackers NACK +the peg-out request. + +The minimum BTC redemption is determined by the set of UTXOs that would need to +be consumed to produce the transaction. If the Stackers cannot find a +satisfactory UTXO set, then they may use the hint given by the user on their +redemption request. + +Stackers set the required satoshis/vbyte transaction fee rate in the `.sbtc` +contract data space, so users can discover it at any time. Stackers update this +fee rate via a collectively-signed contract-call transactionto `.sbtc`, which +they again require miners to include in their blocks. This way, Stackers can +protect themselves and the system from congestion collapse if they notice that +transaction fees on Bitcoin are spiking. + +### Failure Modes and Recovery + +A peg-out operation can fail in the following ways, and has the following +remediations: + +* The Stackers may not produce the redeem transaction. If they cannot reach + quorum, but can complete a WSTS signing round, then they instead +send a _Stacks_ transaction to `.sbtc` which indicates that no quorum can be met. +This is a vote to abstain. In this case, the user's sBTC remain locked until +the end of the reward cycle, at which point a new set of Stackers will be +selected, permitting them to try again. + +* There may not be enough free UTXOs to create a redeem transaction. If this + happens, then Stackers must collectively sign a Stacks transaction +that instead marks the peg-out request. This unlocks the user's sBTC, so they can try +again once the system is no longer congested. + +* The redeem transaction may never confirm. If this happens, then the Stackers + use one of the aforementioned tactics to retry the transaction. They must do +this in order to free up the UTXOs that this transaction consumes. + +* The set of Stackers expires when they hand off the peg-wallet BTC to a new set + of Stackers. If this happens, then all pending sBTC peg-out requests for the +old set of Stackers are cancelled. Users will need to re-request a peg-out to +the new Stackers. + +* The Stackers may fail to run a WSTS signing round after a given time out (e.g. + 10 Bitcoin blocks). If this happens, then the + system freezes until enough Stackers can come online. This has penalties, +which are described in a following section. + +## Peg Hand-Off + +A new set of Stackers assumes responsibility for the peg wallet during the +prepare phase for their reward cycle. Due to SIP-021, the Stacks blockchain +never forks, which means that the new set of Stackers is known immediately after +the last non-prepare-phase Stacks block is mined (since this block is guaranteed +to be the PoX anchor block). + +Once the PoX anchor block is known, the miner _immediately_ calculates the new +PoX reward set (including the list of Stackers and their signing keys), and +writes them into the `.pox-4` data space. This would be required by the +consensus rules -- the block would not be valid if the miner did not do this. +Today, the node does this calculation +at the end of the prepare phase, and only writes the state into the sortition +database's MARF; this proposal calls for doing this at the start of the prepare +phase, and writing this information into both places. + +### Deciding the New Peg Wallet + +Once the new set of Stackers is known, they have 99 Bitcoin blocks to carry out +a WSTS DKG round amongst themselves and write the aggregate public key and BTC +redeem script into the `.sbtc` contract (Figure 3). The former is needed by +SIP-021 already for signing blocks. The latter is needed for users to correctly +produce a peg-in UTXO, which contains the hash of a redeem script; the redeem +script determines the peg wallet's address. + +# FIGURE 3 GOES HERE + +The Stackers write the aggregate public key and BTC redeem script +through an on-chain vote. The new Stackers submit their votes as zero-fee Stacks +transactions, which they share with existing Stackers so they can compel miners +include them in blocks (and should this fail for any reason, Stackers can also send +their votes as normal Stacks transactions). Once the aggregate public key and +BTC redeem script clinches at least 70% support as weighted by the new stackers' +stacked STX, then the new Stackers are treated as active and ready to execute the peg wallet +hand-off. + +By executing this vote, Stackers are granted a degree of agility in determining +the terms of the BTC redeem script. For example, they can require users to wait +for two reward cycles to receive their BTC back in the event of a peg-in +failure, instead of one. As another example, they can pass control of the peg +wallet to a user-controlled DAO in the event that there is no spending activity +for a number of reward cycles. + +### Passing the BTC + +Once the new Stackers have voted on the new wallet redeem script with 70% +support, the old Stackers transfer the BTC to the new peg wallet address. These +transactions are Stacks-on-Bitcoin transactions, and contain an `OP_RETURN` that +marks them as such to all Stacks nodes. + +Miners process a peg-transfer transaction by updating the data space of the +`.sbtc` contract as follows: + +* The pointers to old UTXOs consumed by the peg-transfer are deleted, and + pointers to the new wallet's UTXOs are inserted. If the UTXOs for a pending +BTC redemption transaction are instead consumed by a peg-transfer, then not only +are these UTXOs deleted, but also the transaction is queued for re-try by the +new Stackers. See below. + +* The `.sbtc` contract's BTC balance for the next reward cycle is updated by the amount transferred. + +Once all of the outstanding UTXOs have been consumed by peg-transfers, the new +Stackers begin handling peg-ins and peg-outs for the next reward cycle. + +### Recovery of BTC Fees + +The transfer is complete once all of the old wallet's UTXOs (both unused and +pending) are consumed by peg-transfer transactions. However, +the total BTC in the peg wallet will be slightly less than the +total amount of sBTC. This is because (1) the old Stackers will have had to pay +transaction fees to send the peg hand-off transactions, and (2) Stackers +may have had to RBF a stuck BTC redeem transaction. + +These losses due to BTC fees are distributed across sBTC accounts lazily when the user next +pegs in BTC, transfers the sBTC, or attempts to redeem it. The `.sbtc` contract keeps track +of the total supply of sBTC, the balance of each account, and the number of +missing satoshis, so it has enough information to make this happen. When the user attempts +to do any of the above with sBTC, the `.sbtc` contract will burn an amount of sBTC equal to +the following: + +``` +min(1, (sbtc_balance * missing_satoshis) / sbtc_supply) +``` + +In other words, the sBTC holder will pay a pro-rata share of the missing BTC +fees, or it will pay a single satoshi of it. An sBTC holder pays at most one +per reward cycle. Eventually, as long as there is +sBTC activity on-chain, the number of sBTC in circulation will be made equal to +the number of satoshis in the peg wallet. If this fails to happen by the end of +the reward cycle, then the sBTC system freezes and a Stacker may need to +manually pay BTC into the peg wallet to recover the fee (see "System Recovery +from Frozen Peg"). + +### Restarting In-Flight Transactions + +If a peg hand-off happens while there are in-flight redemption transactions, then the old +Stackers must double-spend the in-flight redemption transactions. The `.sbtc` +contract identifies which in-flight redemption transactions would be affected by +observing which UTXOs the peg-transfer transaction consumes. Each affected in-flight +redemption transaction would be marked as cancelled, and the user's sBTC +unlocks. The user will need to try the request again. + +### Failure Modes and Recovery + +The peg-transfer can fail in the following ways: + +* The user sends BTC to an old wallet address, based on an old redeem script. In + this case, the redeem script terms automatically guarantee that the user's BTC +becomes spendable to them after a timeout happens. + +* No blocks get mined in the prepare phase. In this case, the old Stackers + proceed with the peg hand-off as soon as block-mining is back online. If this +takes until after the prepare phase, then the sBTC system freezes (see below). + +* Miners do not mine new stackers' votes. This is ameliorated by having the + _old_ Stackers store a copy of the vote transactions, and requiring miners to +include them in order for their blocks to be signed. + +* The new Stackers fail to reach quorum on a wallet redeem script, or fail to + execute a WSTS signing round or DKG. In this case, the system freezes until the new Stackers come online +(see below). + +* The old Stackers fail to transfer all of their wallet's UTXOs to the new + wallet by the start of the new reward cycle. This is mitigated by the system +keeping their STX locked and halting PoX payments until the old Stackers finish +the hand-off (see below). + +* While hand-off is proceeding, an in-flight redemption transaction gets + double-spent by a peg-tranfer transaction. If this happens, then the user +retries the peg-out request (their request is cancelled automatically once any +of their in-flight redemption transactions' are consumed by a different +Stacks-on-Bitcoin transaction). + +## Freezing and Thawing + +In the preceding sections, there are failure modes whereby the system can +freeze. This can happen if the Stackers fail to execute a WSTS signing round or +DKG, or fail to vote for a new peg wallet redeem script. If the system freezes, +then STX unlocks do not happen, and PoX payouts do not happen either, for as +long as the system is frozen. Instead, miners pay to a burn address, and the PoX +system refuses to unlock STX. The only way the STX can unlock and PoX payments +resume is if the system can be thawed. If the system remains frozen across two +reward cycle boundaries -- i.e. the current set of Stackers remain frozen and +the subsequent set remain frozen, then the Stacks blockchain halts. + +To thaw the system: + +* On peg-in, the system can freeze if Stackers cannot complete a WSTS signing + round to vote to accept, reject, or abstain from a peg-in request, and the +peg-in requests remains pending for too long. To thaw +the system, the Stackers would need to come back online and acknowledge all +pending peg-in transactions. If the system remains frozen across a prepare +phase, then the system can be thawed by the Stackers passing the BTC to the new +set of Stackers, which would cancel the pending peg-in requests. + +* On peg-out, the system can freeze if Stackers cannot complete a timely signing + round to vote to process the peg-out. To thaw the system, Stackers would need +to come back online to either fulfill all pending peg-out requests, or NACK them. +If the system remains frozen across a reward cycle boundary, then it +thaws if the old Stackers are able to transfer their +BTC to the new Stackers. This act will cancel all pending sBTC peg-out +requests. + +* On peg-transfer, the system can freeze in one of two ways: the new Stackers +cannot vote on a new aggregate public key and redeem script before the end of +the reward cycle, or the old Stackers cannot hand off all of the BTC to the new +Stackers by the start of the new reward cycle. The only way to thaw the system +is for the new Stackers to eventually complete their vote and the old Stackers +send over the BTC before the next PoX anchor block is mined. If the system +remains frozen this way, and the next PoX anchor block is mined, then the Stacks +blockchain halts. + +### System Recovery from Frozen Peg + +In the event that the BTC gets "stuck" and Stackers are unable to access it, the +system will support a variation of a peg-in transaction called a _donation_. +The only difference between a peg-in and a donation is that the donation does +not materialize sBTC. It merely gives Stackers some BTC with which to fulfill +peg-outs. This feature is meant to enable Stackers to recover lost BTC and +unfreeze the system, should the need ever arise. + +## Initial Capital Limits + +This SIP proposes that the total amount of sBTC accepted into this system is +capped by a limit in the `.sbtc` contract. The `.sbtc` contract will refuse to +admit a peg-in if it would exceed this limit. This limit can be increased (but +not decreased) by Stacker vote, and it would start at a default value of 100 BTC. + +The reason for the limit is to allow the system to be stress-tested while +minimizing risk to users in the early days. Once Stackers are comfortable with +maintaining the peg and running signer daemons to manage the sBTC wallet, +they can increase this limit. They would remove it by simply setting the limit +to 21 million BTC. + +Importantly, the capital limit is _not_ a function of the STX price. This is +because the BTC is safe if at least 30% of the stackers are honest -- they can +deny 69.999...% of dishonest Stackers the ability to abscond with the BTC. Thus, this +proposal calls for enabling Stackers to set the capital limit themselves, as +long as the limit has at least 70% vote support. To help build user trust +in the safety of the BTC, we expect Stackers to disclose additional information +about themselves (e.g. business name, mailing address, corporate charter, +portion of STX owned, etc.) in order to provide convincing evidence that this +30% honest coalition exists. If this 30% honest coalition exist, then there is +no ROI for dishonest Stackers to participate if their goal is to steal the BTC. + +## Future Work: Recovery Mode + +This SIP proposes implementing the aforementioned Normal mode for sBTC. A +follow-up SIP may propose a Recovery mode, whereby instead of burning BTC while +the system is frozen, the BTC is instead repurposed to directly fulfill pending +peg-out requests. While peg-out fulfillment will be considerably slower, at +least the sBTC users will eventually be made whole in the event of a +catastrophe. + +In Recovery mode, sBTC peg-ins would cease and all pending sBTC peg-ins would be +cancelled. Peg-outs would be fulfilled in first-in first-out order from +redirected PoX payouts. Once a peg-out request has been +satisfied -- i.e. the requester's BTC address has +received _at least_ as many satoshis as reqeusted from the redirected PoX +payouts -- then the peg-out request completes and the next requester's peg-out +is processed. + +Once the Stacks blockchain supports Recovery Mode, the system would continue +operating even if the system was frozen for many reward cycles. The blockchain +would not halt; instead, it would continue its operation to fulfill all peg-out +requests while the BTC is seemingly inaccessible to Stackers. PoX payouts and +STX unlocks would only resume once the current set of Stackers control +enough BTC to back each sBTC token, and are able to fulfill pending sBTC +peg-outs. + +The system would transition back to Normal mode once all pending peg-out +transactions have been fulfilled, and once the current set of Stackers possess +enough BTC to cover all outstanding sBTC tokens. + +# Related Work + +@andrerserrano to fill in + +# Backwards Compatibility + +This SIP would be a hard fork. It would introduce a boot contract `.sbtc` and +would alter the semantics of PoX such that token unlocks and PoX payouts could +be halted based on pending sBTC operations. + +However, the act of Stacking would remain the same as before. + +# Activation + +This SIP can activate in one of the following ways: + +## Concurrent with SIP-021 + +If the implementation of this SIP is ready and merged to the `master` branch +of the Stacks blockchain by the time SIP-021 activates, then this SIP also +activates. + +## As a Future Hard Fork + +If this SIP does not ship with SIP-021, then a follow-on hard fork will be +needed to activate it. To activate this SIP, a Stacker vote will need to be +taken to assess how they feel about running and maintaining a peg wallet, in +addition to their block-signing responsibilities in SIP-021. + +In order for this SIP to activate, the following criteria must be met by the set +of Stacked STX: + +* At least 80 million Stacked STX must vote _at all_ to activate this SIP. This + number is chosen because it is more than double the amount of STX locked by +the largest Stacker at the time of this writing (reward cycle 69). + +* Of the Stacked STX that vote, at least 80% of them must vote "yes." + +The act of not voting is the act of siding with the outcome, whatever it may be. +We believe that these thresholds are sufficient to demonstrate interest from +Stackers -- Stacks users who have a long-term interest in the Stacks +blockchain's succesful operation -- in performing this upgrade. + +### How To Vote + +If a user is Stacking, then their STX can be used to vote in one of two ways, +depending on whether or not they are solo-stacking or stacking through a +delegate. + +The user must be Stacking in any cycle up to and including cycle XXX. Their vote +contribution will be the number of STX they have locked. + +#### Solo Stacking + +The user must send a minimal amount of BTC from their PoX reward address to one +of the following Bitcoin addresses: + +* For **"yes"**, the address is `11111111111113HsRpPNMeEx832RFD`. This is the + base58check encoding of the hash in the Bitcoin script `OP_DUP OP_HASH160 +0000000000000000000000007965732d73627463 OP_EQUALVERIFY OP_CHECKSIG`. The value +`0000000000000000000000007965732d73627463` encodes "yes-sbtc" in ASCII, with +0-padding. + +* For **"no"**, the address is `11111111111111UPKuxspbviuahfQ`. This is the + base58check encoding of the hash in the Bitcoin script `OP_DUP OP_HASH160 +000000000000000000000000006e6f2d73627463 OP_EQUALVERIFY OP_CHECKSIG`. The value +`000000000000000000000000006e6f2d73627463` encodes "no-sbtc" in ASCII, with +0-padding. + +From there, the vote tabulation software will track the Bitcoin transaction back +to the PoX address in the `.pox-4` contract that sent it, and identify the +quantity of STX it represents. The STX will count towards a "yes" or "no" based +on the Bitcoin address the PoX address sends to. + +If the PoX address holder votes for both "yes" and "no" by the end of the vote, +the vote will be discarded. + +Note that this voting procedure does _not_ apply to Stacking pool operators. +Stacking pool operator votes will not be considered. + +#### Pooled Stacking + +If the user is stacking in a pool, then they must send a minimal amount of STX +from their Stacking address to one of the following Stacks addresses to commit +their STX to a vote: + +* For **"yes"**, the address is `SP000000000000YB5ECPQ6RKMCFY7R9VE`. This is + the c32check-encoded Bitcoin address for "yes" +(`11111111111113HsRpPNMeEx832RFD`) above. + +* For **"no"**, the address is `SP00000000000003EDWPQ6RKMCC56TBVT`. This is the + c32check-encoded Bitcoin address for "no" (`11111111111111UPKuxspbviuahfQ`) +above. + +From there, the vote tabulation software will track the STX back to the sender, +and verify that the sender also has STX stacked in a pool. The Stacked STX will +be tabulated as a "yes" or "no" depending on which of the above two addresses +receive a minimal amount of STX. + +If the Stacks address holder votes for both "yes" and "no" by the end of the +vote period, the vote will be discarded. + +## For Miners + +There is only one criterion for miners to activate this SIP: they must mine the +Stacks blockchain up to and past the end of the voting period. In all reward +cycles between cycle XXX and the end of the voting period, PoX must activate. + +## Examples + +### Voting "yes" as a solo Stacker + +Suppose Alice has stacked 100,000 STX to `1LP3pniXxjSMqyLmrKHpdmoYfsDvwMMSxJ` +during at least one of the voting period's reward cycles. To vote, she sends +5500 satoshis for **yes** to `11111111111113HsRpPNMeEx832RFD`. Then, her 100,000 +STX are tabulated as "yes". + +### Voting "no" as a pool Stacker + +Suppose Bob has Stacked 1,000 STX in a Stacking pool and wants to vote "no", and +suppose it remains locked in PoX during at least one reward cycle in the voting +period. Suppose his Stacks address is +`SP2REA2WBSD3XMVMYS48NJKS3WB22JTQNB101XRRZ`. To vote, he sends 1 uSTX from +`SP2REA2WBSD3XMVMYS48NJKS3WB22JTQNB101XRRZ` for **no** to +`SP00000000000003EDWPQ6RKMCC56TBVT`. Then, his 1,000 STX are tabulated as "no." + +# Reference Implementation + +The reference implementation of this SIP is being developed in +https://github.com/stacks-network/stacks-blockchain. From bb3f501e0eb10358017a22bef0905afa4c798381 Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Sun, 1 Oct 2023 03:11:08 +0000 Subject: [PATCH 2/9] Update sip-025-sbtc.md: add figures --- sips/sip-025/sip-025-sbtc.md | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/sips/sip-025/sip-025-sbtc.md b/sips/sip-025/sip-025-sbtc.md index 8ffc25dff..455acf322 100644 --- a/sips/sip-025/sip-025-sbtc.md +++ b/sips/sip-025/sip-025-sbtc.md @@ -12,7 +12,7 @@ Authors: * Alie Slade * Andre Serrano * Igor Sylvester -* Joey Yandle ¿¼ +* Joey Yandle ¿¼ Consideration: Technical, Governance @@ -214,7 +214,7 @@ or to process a wallet hand-off at the end of a reward cycle. Either way, the user's BTC will be spent by Stackers before they can reclaim it via the spending fulfillment script. -# Figure 1 Goes Here +![Nakamoto Flow Diagrams](https://github.com/stacksgov/sips/assets/459947/62229151-6777-4eb9-b902-2b4192bdcf1c) _Figure 1: Protocol diagram of an sBTC peg-in. The user submits a Bitcoin transaction, and eventually, the equivalent number of sBTC tokens materialize in @@ -336,9 +336,12 @@ their signer daemons) observe and react to. When the transaction confirms, the user's requested sBTC is locked until the end of the next reward cycle -- the user cannot spend it while Stackers are considering the request. -# FIGURE 2 GOES HERE +![Nakamoto Flow Diagrams (1)](https://github.com/stacksgov/sips/assets/459947/e8da8826-1303-4891-83fb-a568ec9d3f9d) -_Figure 2:_ +_Figure 2: Protocol diagram for a successful peg-out request. The user submits +a peg-out request to Stacks, which locks their requested sBTC tokens until the +start of the next reward cycle. If the peg-out succeeds, then they receive BTC from +the Stackers (minus a BTC transaction fee), and their sBTC gets burnt._ When Stackers see the peg-out request, and if they are able to act on it (i.e. the wallet has enough UTXOs free), they execute a WSTS signing round to @@ -508,7 +511,17 @@ SIP-021 already for signing blocks. The latter is needed for users to correctly produce a peg-in UTXO, which contains the hash of a redeem script; the redeem script determines the peg wallet's address. -# FIGURE 3 GOES HERE +![Nakamoto Flow Diagrams (2)](https://github.com/stacksgov/sips/assets/459947/7e5bd105-71d4-46e4-afe9-9e68053696a6) + +_Figure 3: Protocol diagram of a peg-transfer. Once the PoX anchor block is known, +the new Stackers proceed to execute a WSTS DKG and post the new aggregate public key and +wallet redeem script to Stacks. The old Stackers help them do this by requiring miners +to include their votes in their blocks as a prerequisite for signing them. Once the +new public key and wallet redeem script have reached 70% support, the old Stackers send +one or more Bitcoin transactions which consume all of the current wallet's UTXOs (including those +for in-flight peg-outs) and create new ones for the new peg wallet. Once all old UTXOs +are consumed, then the hand-off completes. The act of processing a peg-transfer transaction +updates the .sbtc contract's wallet UTXO tracker per the consensus rules._ The Stackers write the aggregate public key and BTC redeem script through an on-chain vote. The new Stackers submit their votes as zero-fee Stacks From d8b1027a2188bba8ac770c9c467f8200869dd1aa Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Sun, 1 Oct 2023 03:19:19 +0000 Subject: [PATCH 3/9] Update sip-025-sbtc.md: more authors --- sips/sip-025/sip-025-sbtc.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sips/sip-025/sip-025-sbtc.md b/sips/sip-025/sip-025-sbtc.md index 455acf322..ae29fd033 100644 --- a/sips/sip-025/sip-025-sbtc.md +++ b/sips/sip-025/sip-025-sbtc.md @@ -6,13 +6,18 @@ Title: A Trustless 2-way Bitcoin Peg for Stacks Authors: * Aaron Blankstein +* Mike Cohen * Brice Dobry +* Marvin Janssen +* Friedger Müffke +* Jesus Najera * Jude Nelson * Don Park * Alie Slade * Andre Serrano +* @Soju-Drinker * Igor Sylvester -* Joey Yandle ¿¼ +* Joey Yandle Consideration: Technical, Governance From 31dae06bc9c18fa4a7ef43cf7387e83a650228f6 Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Mon, 2 Oct 2023 17:56:00 -0400 Subject: [PATCH 4/9] merge Andre's related work --- sips/sip-025/sip-025-sbtc.md | 41 +++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/sips/sip-025/sip-025-sbtc.md b/sips/sip-025/sip-025-sbtc.md index ae29fd033..ef78dfb35 100644 --- a/sips/sip-025/sip-025-sbtc.md +++ b/sips/sip-025/sip-025-sbtc.md @@ -737,7 +737,46 @@ enough BTC to cover all outstanding sBTC tokens. # Related Work -@andrerserrano to fill in +There are several other systems which implement a wrapped BTC asset on a +different chain. The key difference between most of them and sBTC is that the +nodes which control the BTC wallet use a closed-membership protocol to decide +which parties can enter and leave the set. In detail: + +## wBTC + +This is a closed membership system. It is made up of +50+ merchants and custodians with keys to the wBTC +multi-sig contract on Ethereum. End users purchase wBTC directly from +authorized merchants, and often the experience is fast. However, wBTC deposits and +withdrawals can only be performed by authorized merchants and custodians. + +## RBTC + +This is a closed membership system. Nine organizations supporting the Powpeg, +and there is no direct control of Bitcoin multi-sig private keys. Peg operations +settle to Bitcoin via merge mining on RSK side-chain. + +## BTC.b + +This is a closed membership system. It is operated by eight wardens (relayers) +and a private codebase, secured by an SGX enclave. The SGX enclave only +processes transfers when it receives approvals from at least 6 of the 8 Warden nodes. + +## LBTC + +This is a closed membership system. Over 50 members of Liquid Federation manage multi-sig +contract. Only federation members can process peg-outs. + +## tBTC + +This is an open membership system, where the BTC is managed by a +rotating set of randomly selected nodes which manage a threshold +wallet. However, it incurs fork risk because it does not operate atop Bitcoin. + +sBTC implements a state of the art solution whereby network validation is open +and permissionless -- anyone can run a validator to secure the sBTC network + -- and where transactions settle to Bitcoin which benefit from 100% of +Bitcoin's reorg resistance. # Backwards Compatibility From 56b22fe2f33c07b631fe5344179c9e708720e507 Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Fri, 13 Oct 2023 17:46:06 -0400 Subject: [PATCH 5/9] chore: address feedback --- sips/sip-025/sip-025-sbtc.md | 307 ++++++++++++++++++----------------- 1 file changed, 154 insertions(+), 153 deletions(-) diff --git a/sips/sip-025/sip-025-sbtc.md b/sips/sip-025/sip-025-sbtc.md index ef78dfb35..8385e8b73 100644 --- a/sips/sip-025/sip-025-sbtc.md +++ b/sips/sip-025/sip-025-sbtc.md @@ -13,10 +13,10 @@ Authors: * Jesus Najera * Jude Nelson * Don Park -* Alie Slade +* Alie Slade * Andre Serrano * @Soju-Drinker -* Igor Sylvester +* Igor Sylvester * Joey Yandle Consideration: Technical, Governance @@ -37,11 +37,11 @@ Discussions-To: https://github.com/stacksgov/sips # Abstract -This SIP proposes the creation of a **trustless two-way peg** in which BTC (the +This SIP proposes the creation of a **trustless 2-way peg** in which BTC (the tokens of the current Stacks burnchain) can be manifested on Stacks as a SIP-010-compliant fungible token, called sBTC, and later redeemed for the same number of BTC. This proposal redefines the act of Stacking to be the act of -maintaining a _peg wallet_, which is used to hold BTC and process sBTC +maintaining an _sBTC wallet_, which is used to hold BTC and process sBTC redemptions. Stackers are collectively responsible for ensuring that all liquid sBTC are backed by an equal number of BTC, and that redemptions are processed in a timely manner. As a reward, they continue to receive PoX @@ -52,17 +52,17 @@ payouts. The lack of a stateful smart contract system on Bitcoin necessitates the construction of systems in which a representation of locked Bitcoin is traded within a separate smart-contract-powered blockchain. These systems aim to -provide a "2-way peg" between the representation of the locked BTC ("wrapped +provide a _2-way peg_ between the representation of the locked BTC ("wrapped BTC") and the BTC itself. At a high level, these systems seek to provide two primitive operations: -* "Peg-in": a BTC holder rids themselves of their BTC, and in doing so, +* "Deposit": a BTC holder rids themselves of their BTC, and in doing so, receives the equivalent amount of wrapped BTC on the smart contract chain -* "Peg-out": a wrapped BTC holder destroys their wrapped BTC on the smart +* "Withdraw": a wrapped BTC holder destroys their wrapped BTC on the smart contract chain, and receives an equivalent amount of BTC on the Bitcoin chain -While peg-in/peg-out operations are trivial to implement if a trusted +While deposit/withdraw operations are trivial to implement if a trusted intermediary (a "custodian") can be found to exchange the wrapped BTC for the BTC and vice versa, a robust, incentive-compatible system remains elusive. We identify two key shortcomings in the state-of-the-art 2-way peg systems that we @@ -77,27 +77,27 @@ users, who would need to vet intermediaries before trusting them with large sums of BTC. * **Reliance on under-incentivized intermediaries.** State-of-the-art 2-way -peg systems rely on one or more intermediaries to maintain the peg state, but +peg systems rely on one or more intermediaries to maintain the wallet state, but do not reward them proportional to the value they create. Specifically, these -peg intermediaries provide value even when the peg transaction volume is low, +intermediaries provide value even when the transaction volume is low, because user confidence in the system depends on the belief that the intermediaries are nevertheless always available and trustworthy. For example, the reason blockchains have a large coinbase relative to their transaction fees is to incentivize miners to always be available to process transactions. But -today, there is no 2-way peg system we are aware of that rewards peg -intermediaries in this manner -- there is no "peg coinbase." Collateralized -pegs suffer a similar shortcoming -- there is little upside to honest +today, there is no 2-way peg system we are aware of that rewards +intermediaries in this manner -- there is no "2-way peg coinbase." Collateralized +2-way pegs suffer a similar shortcoming -- there is little upside to honest participation, but tremendous downside to going offline, which creates a high barrier-to-entry for participating as an intermediary. The system we present, called "sBTC," addresses these two short-comings by leveraging unique properties of the Stacks blockchain. Our key insight is that -Stacks' PoX consensus algorithm offers a way to _recover from_ peg safety -failures while also _properly rewarding_ peg intermediaries for the value they +Stacks' PoX consensus algorithm offers a way to _recover from_ 2-way peg safety +failures while also _properly rewarding_ intermediaries for the value they provide. Specifically: * We use the fact that the Stacks blockchain "forks with" the Bitcoin -blockchain to propose an open-membership peg wallet maintained by Stackers. +blockchain to propose an open-membership sBTC wallet maintained by Stackers. If Bitcoin forks, then both the Stacker set and their wallet forks with it, and the two resulting Stacker sets and wallets each own BTC on their respective forks. This means that Stackers do not lose money from forks, nor do forks @@ -105,47 +105,47 @@ pose a risk to the safety of users' BTC. * We use the fact that PoX pays BTC to STX holders to propose a liveness recovery mechanism, whereby some BTC -payouts are repurposed to fulfill peg-out requests should the custodian fail. +payouts are repurposed to fulfill withdraw requests should the custodian fail. -* We reward Stackers for staying online to process peg operations by +* We reward Stackers for staying online to process 2-way peg operations by compensating them with BTC via PoX, regardless of the peg's operation volume. Stackers are compensated proportional to their signing power on the peg (i.e how many -STX they locked) regardless of how many peg transactions they process. +STX they locked) regardless of how many deposit and withdrawal transactions they process. By leveraging these properties, sBTC offers the following advantages over the state-of-the-art: * **If a majority of Stackers are honest, then sBTC remains safe.** Every BTC -peg-out is paired with an equivalent, legitimate request from a wrapped BTC +withdraw is paired with an equivalent, legitimate request from a wrapped BTC holder, _even if every miner is malicious_. This is achieved by ensuring that -all Stacking and peg-maintenance operations materialize in all Stacks forks. +all Stacking and wallet maintenance operations materialize in all Stacks forks. * **If a Byzantine fault-tolerant (BFT) majority of miners are honest, then sBTC -remains live**. All peg-out requests are eventually fulfilled, _even if every +remains live**. All withdraw requests are eventually fulfilled, _even if every Stacker is malicious_. This is because Stackers do not have a say in block -production, and Stackers that do not fulfill peg-outs lose their PoX-driven BTC +production, and Stackers that do not fulfill withdraws lose their PoX-driven BTC income from miners. -* **Peg-outs of arbitrary amounts of BTC are fulfilled in +* **Withdraws of arbitrary amounts of BTC are fulfilled in a fixed amount of time on the happy path** if both Stackers and miners operate with a BFT honest -majority. If they do not, then peg-outs of arbitrary amounts of BTC -are fulfilled eventually by _redirecting_ Stackers' PoX payouts to fund peg-out +majority. If they do not, then withdraws of arbitrary amounts of BTC +are fulfilled eventually by _redirecting_ Stackers' PoX payouts to fund withdraw requests. To support this, sBTC offers two modes of operation: the Normal mode, and the Recovery mode. In **Normal mode**, the sBTC asset is backed 1:1 by BTC sent to a wallet controlled by a large fraction of Stackers, as measured by the fraction of locked STX they represent. Each time BTC is -sent to this wallet (a peg-in operation), an equal number of sBTC are +sent to this wallet (a deposit operation), an equal number of sBTC are automatically minted to an address of the sender's choosing. Stackers respond -to peg-out requests by sending BTC to the requester's Bitcoin address, thereby -maintaining the peg. The act of responding to peg-out requests automatically +to withdraw requests by sending BTC to the requester's Bitcoin address, thereby +maintaining the peg. The act of responding to withdraw requests automatically destroys the requester's equivalent amount of sBTC on the Stacks chain. If the Normal mode encounters a liveness failure for any reason (including loss of BTC), the system transitions to a Recovery mode until enough Stackers come back online. In **Recovery mode**, a fraction of the PoX payouts are -redirected to peg-out requests such that eventually, all outstanding requests +redirected to withdraw requests such that eventually, all outstanding requests will be fulfilled, even if the Stackers _never_ come back online. While considerably slower than Normal mode, the design of Recovery mode ensures all sBTC can be redeemed so long as the Stacks blockchain and PoX are online. @@ -163,9 +163,9 @@ SIP cannot activate without this SIP first being ratified. The proposed SIP-021 upgrade would do away with Stacks forks, which vastly simplifies the sBTC design. Importantly, miners and Stackers cannot "roll back" -sBTC operations, meaning that peg-in and peg-out operations follow at-most-once +sBTC operations, meaning that deposit and withdraw operations follow at-most-once semantics. This lack of "fork risk" means that the system can support -arbitrarily large amounts of BTC pegged-in and pegged-out, assuming that at +arbitrarily large amounts of BTC deposited and withdrawn, assuming that at least 70% of Stackers by weight are trustworthy. The sBTC system state is materialized in a boot contract called `.sbtc`. This @@ -175,87 +175,88 @@ via a private function that only the node can call), so that it can be accessed by smart contracts in Stacks. The following sections describe the Normal mode of operation. Recovery mode is -left for future work, but is described in a separate section after Normal mode. +left for future work, but is summarized in a separate section after Normal mode. +This SIP can activate without Recovery mode. -## Peg-In +## Deposit -A peg-in operation is initiated as a Bitcoin transaction with a special payload +A deposit operation is initiated as a Bitcoin transaction with a special payload in an `OP_RETURN` output (Figure 1). Because this is a Stacks-on-Bitcoin transaction, a miner in a subsequent tenure is required by the consensus rules to process it as part of producing the first block in its tenure. The Stacks -node records the existence of this peg-in operation in the data space of the +node records the existence of this deposit operation in the data space of the `.sbtc` smart contract, where it is marked as a _pending_ operation that Stackers must act upon. Namely, the relevant parts of the transaction are extracted and translated in to Clarity values and made available via internal data maps. Stackers, via their signer daemons, already subscribe to the Stacks blockchain -for events. The act of writing new sBTC peg-in state to the `.sbtc` contract +for events. The act of writing new sBTC deposit state to the `.sbtc` contract generates such an event -- an event that alerts the signer daemons to begin a -signing round to act on the peg-in. +signing round to act on the deposit. -In the happy path, at least 70% of Stackers agree that the peg-in transaction is +In the happy path, at least 70% of Stackers agree that the deposit transaction is valid, and they generate a contract-call to the `.sbtc` contract to -_authorize_ the peg-in by minting the equivalent number of sBTC tokens to +_authorize_ the deposit by minting the equivalent number of sBTC tokens to an account address of the user's choice. Crucially, the transaction is signed collectively by Stackers via a WSTS signing round -- it is authenticated via a Schnorr proof and the Stacker's aggregate public key. This way, _only_ the -Stackers can authorize the peg-in, and only via a 70%+ majority vote. +Stackers can authorize the deposit, and only via a 70%+ majority vote. Once stackers generate the authorization transaction, they make it available to miners via their StackerDB instance, and require the current miner to include it in the next block they produce. If the miner does not do so, then the Stackers -will not sign the block; this all but compells the miner to include the +will not sign the block; this all but compels the miner to include the transaction. -The user must wait until their peg-in transaction confirms on Bitcoin before the +The user must wait until their deposit transaction confirms on Bitcoin before the sBTC tokens materialize. This is required because Stacks miners only process pending Stacks-on-Bitcoin transactions for Bitcoin blocks up to but _excluding_ the Bitcoin block in which their `block-commit` landed. -The act of fulfilling a peg-in with an affirmative vote is effectively a promise +The act of fulfilling a deposit with an affirmative vote is effectively a promise made by Stackers to users to ensure that the sBTC minted wll remain fully backed -by the BTC the user submitted. This BTC may only be spent to fulfill peg-outs, +by the BTC the user submitted. This BTC may only be spent to fulfill withdraws, or to process a wallet hand-off at the end of a reward cycle. Either way, the user's BTC will be spent by Stackers before they can reclaim it via the spending fulfillment script. ![Nakamoto Flow Diagrams](https://github.com/stacksgov/sips/assets/459947/62229151-6777-4eb9-b902-2b4192bdcf1c) -_Figure 1: Protocol diagram of an sBTC peg-in. The user submits a Bitcoin +_Figure 1: Protocol diagram of an sBTC deposit. The user submits a Bitcoin transaction, and eventually, the equivalent number of sBTC tokens materialize in the account of the user's choosing_. -### Peg-in Bitcoin Transaction +### Deposit Bitcoin Transaction -The peg-in Bitcoin transaction contains the following data: +The deposit Bitcoin transaction contains the following data: * An `OP_RETURN` data output, which contains the account address to which sBTC should be minted -* A payment to the sBTC peg wallet maintained by the current Stackers. This +* A payment to the sBTC sBTC wallet maintained by the current Stackers. This payment UTXO is the hash of a script that has two spending fulfillment conditions: either the Stackers spend the UTXO before the end of the next reward cycle, or the sender can spend the UTXO once the end of the next reward cycle has passed. The payment must be above a `.sbtc`-defined threshold, in satoshis. This -_minimum peg-in_ value is used to prevent users from spamming the system with -dust peg-ins. Stackers can vote to adjust the minimum peg-in. +_minimum deposit_ value is used to prevent users from spamming the system with +dust deposits. Stackers can vote to adjust the minimum deposit. ### Stacker Authorization Transaction The authorization transaction contains the following data: -* The quantity of BTC sent to the peg wallet. +* The quantity of BTC sent to the sBTC wallet. * The address to which the sBTC should be minted. -* A vote "yes", "no", or "abstain" to carry out the peg-in, to deny the peg-in, +* A vote "yes", "no", or "abstain" to carry out the deposit, to deny the deposit, or to record that no agreement could be reached (respectively). * A bitmap of which stackers voted. -* A pointer to the peg-in transaction's UTXO +* A pointer to the deposit transaction's UTXO , * The Bitcoin redeem script for the user's payment. The Stackers must verify that the script contains the aforementioned spending fulfillment conditions, @@ -276,11 +277,11 @@ block signatures until it is included. ### Failure Modes and Recovery -There are several places where a peg-in can fail. First, the Stackers may fail +There are several places where a deposit can fail. First, the Stackers may fail to complete a signing round that achieves the 70% threshold. One of the following outcomes will happen: -* The Stackers produce a peg-in authorization with at least 70% of the STX +* The Stackers produce a deposit authorization with at least 70% of the STX voting against it. In this case, the sBTC is not minted, and the user can later reclaim their BTC once the subsequent reward cycle finishes (i.e. the reward cycle _after_ this current reward cycle). @@ -292,16 +293,16 @@ minted, but a record of how each Stacker voted is preserved. The user later reclaims their BTC once the subsequent reward cycle finishes. * A new set of Stackers come online as part of a new reward cycle starting while - the peg-in request is pending. In this case, the peg-in request is cancelled + the deposit request is pending. In this case, the deposit request is cancelled -- the new Stackers cannot act on it. The spending conditions of the -peg-in script will permit the user to reclaim their Bitcoin later. +deposit script will permit the user to reclaim their Bitcoin later. * The Stackers are unable to complete a WSTS signing round. In this case, the sBTC system freezes until the Stackers are able to come back online -- no -peg-ins or peg-outs will be processed. Freezing +deposits or withdraws will be processed. Freezing and thawing the system are discussed in a subsequent section. -Second, the miner can fail to include the peg-in authorization transaction from +Second, the miner can fail to include the deposit authorization transaction from the Stackers. This would prevent the Stackers' vote from being recorded in `.sbtc`. If this happens, then Stackers refuse to sign any blocks until they see a block which contains the as-yet-unmined authorization transaction(s). If @@ -310,22 +311,22 @@ push their transactions through. ### Transaction Fees -The user pays the transaction fee for their sBTC peg-in transaction. Stackers +The user pays the transaction fee for their sBTC deposit transaction. Stackers do not pay a STX transaction fee, but instead require miners to include their -peg-in authorization transaction in the next block they sign. +deposit authorization transaction in the next block they sign. -### Two-phase Peg-In +### Two-phase Deposit Users may not be able to send a Bitcoin transaction with an `OP_RETURN` output. For example, this is difficult to do or is unsupported in some Bitcoin wallets, especially custodial wallets. To support these users, a 3rd party could simply -send peg-in transaction on their behalf. The user would simply pay the 3rd -party the requisite Bitcoin to peg-in, and the 3rd party would generate and send -the peg-in transaction for them. +send deposit transaction on their behalf. The user would simply pay the 3rd +party the requisite Bitcoin to deposit, and the 3rd party would generate and send +the deposit transaction for them. -## Peg-Out +## Withdraw -Pegging out is the act of redeeming sBTC for BTC (Figure 2). +Withdrawing is the act of redeeming sBTC for BTC (Figure 2). To redeem sBTC for BTC, the user first sends a Stacks trnsaction to `.sbtc` to indicate the following: @@ -343,39 +344,39 @@ user cannot spend it while Stackers are considering the request. ![Nakamoto Flow Diagrams (1)](https://github.com/stacksgov/sips/assets/459947/e8da8826-1303-4891-83fb-a568ec9d3f9d) -_Figure 2: Protocol diagram for a successful peg-out request. The user submits -a peg-out request to Stacks, which locks their requested sBTC tokens until the -start of the next reward cycle. If the peg-out succeeds, then they receive BTC from +_Figure 2: Protocol diagram for a successful withdraw request. The user submits +a withdraw request to Stacks, which locks their requested sBTC tokens until the +start of the next reward cycle. If the withdraw succeeds, then they receive BTC from the Stackers (minus a BTC transaction fee), and their sBTC gets burnt._ -When Stackers see the peg-out request, and if they are able to act on it (i.e. +When Stackers see the withdraw request, and if they are able to act on it (i.e. the wallet has enough UTXOs free), they execute a WSTS signing round to -generate a Bitcoin transaction from the peg wallet's UTXOs which pays out to the -user's requested address. Because all pegged-in BTC is spendable by the current +generate a Bitcoin transaction from the sBTC wallet's UTXOs which pays out to the +user's requested address. Because all deposited BTC is spendable by the current set of Stackers via an aggregate Schnorr signature, Stackers simply create the scriptSigs for sufficiently many UTXOs to fund a fulfillment UTXO for the user. Because fulfilling the redemption request occurs through WSTS, there is a possibility of a quorum failure. As such, the Stackers may instead vote to -abstain or even to refuse the peg-out request. This is explained in the +abstain or even to refuse the withdraw request. This is explained in the "Failure Modes" section. The BTC redemption transaction contains the following fields: -* An `OP_RETURN` identifying the peg-out request in the `.sbtc` contract +* An `OP_RETURN` identifying the withdraw request in the `.sbtc` contract * A new UTXO that redeems the user's sBTC for BTC * A change UTXO that consolidates the remaining unused BTC from the consumed wallet UTXOs -Once the Stackers have created the BTC redemption transaction, they both send it +Once the Stackers have created the BTC redemption transaction, they send it to the Bitcoin peer, and send a Stacks transaction with a copy of the Bitcoin transaction to `.sbtc`, so that the transaction is _also_ stored publicly in the `.sbtc` contract's data space. This is done for failure recovery: if the Bitcoin transaction does not confirm quickly, the Stackers can try again (see below). Also, the existence of the signed Bitcoin transaction in the `.sbtc` -data space serves as proof that the Stackers handled the peg-out request in a +data space serves as proof that the Stackers handled the withdraw request in a timely manner, even if it was not confirmed on Bitcoin as quickly as desired. When the `.sbtc` contract processes the copy of the BTC redemption transaction, it marks the UTXOs it consumes as "tentatively used" so that a @@ -384,25 +385,25 @@ concurrently-generated BTC redemption transaction dees not also use them. Once the BTC redemption transaction confirms on Bitcoin, a Stacks miner processes it as a Stacks-on-Bitcoin transaction. The act of processing this transaction is the act of calling into the `.sbtc` contract to mark the pending -sBTC peg-out as fulfilled. This burns the user's locked sBTC, and marks the -peg-out operation as complete. It also updates the `.sbtc` transaction's +sBTC withdraw as fulfilled. This burns the user's locked sBTC, and marks the +withdraw operation as complete. It also updates the `.sbtc` transaction's knowledge of the wallet's UTXO set by clearing the UTXOs consumed by the fulfillment, and adding the change UTXO as a new UTXO that the wallet controls. -### Peg-Out Congestion +### Withdraw Congestion A key responsibility of the `.sbtc` wallet is to keep track of which Bitcoin -UTXOs are under the control of the peg wallet, and which ones are tentatively +UTXOs are under the control of the sBTC wallet, and which ones are tentatively consumed and tentatively produced by in-flight BTC redemption transactions. This is necessary because the system has no way of guaranteeing that a BTC redemption transaction will ever be confirmed. Instead, by keeping track of the in-flight UTXOs this way, Stackers may process multiple BTC redemptions in parallel while waiting for them to confirm. -That said, the rate at which sBTC peg-out requests arrive may exceed the rate at +That said, the rate at which sBTC withdraw requests arrive may exceed the rate at which Stackers can fulfill them. If there are not enough unused UTXOs to -fulfill a peg-out request, then Stackers _instead_ send a collectively-signed -Stacks transaction to `.sbtc` that NACKs the peg-out request. This unlocks the +fulfill a withdraw request, then Stackers _instead_ send a collectively-signed +Stacks transaction to `.sbtc` that NACKs the withdraw request. This unlocks the user's sBTC. The user may try again later. It is possible that the BTC redemption transaction does not confirm for some @@ -414,7 +415,7 @@ Stackers have a few tactics to handle this congestion: 1. They can replace-by-fee (RBF) in-flight transactions, such as by prioritizing the transactions whose inputs represent the highest value. The extra BTC to pay the fee would come from -the peg wallet UTXOs. +the sBTC wallet UTXOs. 2. If there is not enough BTC in the consumed UTXOs to do the above, then the Stackers would double-spend the in-flight transactions by consuming additional wallet UTXOs @@ -423,7 +424,7 @@ invalidate some other in-flight transactions; these transactions would need to be re-issued. 3. If there is insufficient BTC available to increase the fee, then Stackers themselves would -need to create a UTXO for the peg wallet from their personal funds (e.g. their +need to create a UTXO for the sBTC wallet from their personal funds (e.g. their PoX payouts) to cover the fee. Regardless of which tactic is taken, the Stackers would need to also _replace_ the @@ -434,18 +435,18 @@ before, Stackers would require miners to include this transaction in their blocks in order for the blocks to be signed. The act of replacing an in-flight transaction in `.sbtc` is also the act of -updating its knowledge of how much _extra_ BTC was spent out of the peg wallet +updating its knowledge of how much _extra_ BTC was spent out of the sBTC wallet to cover the additional transaction fee. This is important for the hand-off (see below). ### Transaction Fees Bitcoin transaction fees are unavoidable. This proposal calls for users to pay -the BTC transaction fee for both their peg-ins and peg-outs. As such, there +the BTC transaction fee for both their deposits and withdraws. As such, there exists a minimum BTC redemption amount: a given redemption request, minus the fees required to produce a BTC redemption transaction, must be worth more than the Bitcoin dust minimum (5,500 satoshis). If it is not, then the Stackers NACK -the peg-out request. +the withdraw request. The minimum BTC redemption is determined by the set of UTXOs that would need to be consumed to produce the transaction. If the Stackers cannot find a @@ -461,7 +462,7 @@ transaction fees on Bitcoin are spiking. ### Failure Modes and Recovery -A peg-out operation can fail in the following ways, and has the following +A withdraw operation can fail in the following ways, and has the following remediations: * The Stackers may not produce the redeem transaction. If they cannot reach @@ -473,16 +474,16 @@ selected, permitting them to try again. * There may not be enough free UTXOs to create a redeem transaction. If this happens, then Stackers must collectively sign a Stacks transaction -that instead marks the peg-out request. This unlocks the user's sBTC, so they can try +that instead marks the withdraw request. This unlocks the user's sBTC, so they can try again once the system is no longer congested. * The redeem transaction may never confirm. If this happens, then the Stackers use one of the aforementioned tactics to retry the transaction. They must do this in order to free up the UTXOs that this transaction consumes. -* The set of Stackers expires when they hand off the peg-wallet BTC to a new set - of Stackers. If this happens, then all pending sBTC peg-out requests for the -old set of Stackers are cancelled. Users will need to re-request a peg-out to +* The set of Stackers expires when they hand off the sBTC wallet's BTC to a new set + of Stackers. If this happens, then all pending sBTC withdraw requests for the +old set of Stackers are cancelled. Users will need to re-request a withdraw to the new Stackers. * The Stackers may fail to run a WSTS signing round after a given time out (e.g. @@ -490,9 +491,9 @@ the new Stackers. system freezes until enough Stackers can come online. This has penalties, which are described in a following section. -## Peg Hand-Off +## BTC Transfer -A new set of Stackers assumes responsibility for the peg wallet during the +A new set of Stackers assumes responsibility for the sBTC wallet during the prepare phase for their reward cycle. Due to SIP-021, the Stacks blockchain never forks, which means that the new set of Stackers is known immediately after the last non-prepare-phase Stacks block is mined (since this block is guaranteed @@ -507,25 +508,25 @@ at the end of the prepare phase, and only writes the state into the sortition database's MARF; this proposal calls for doing this at the start of the prepare phase, and writing this information into both places. -### Deciding the New Peg Wallet +### Deciding the New sBTC Wallet Once the new set of Stackers is known, they have 99 Bitcoin blocks to carry out a WSTS DKG round amongst themselves and write the aggregate public key and BTC redeem script into the `.sbtc` contract (Figure 3). The former is needed by SIP-021 already for signing blocks. The latter is needed for users to correctly -produce a peg-in UTXO, which contains the hash of a redeem script; the redeem -script determines the peg wallet's address. +produce a deposit UTXO, which contains the hash of a redeem script; the redeem +script determines the sBTC wallet's address. ![Nakamoto Flow Diagrams (2)](https://github.com/stacksgov/sips/assets/459947/7e5bd105-71d4-46e4-afe9-9e68053696a6) -_Figure 3: Protocol diagram of a peg-transfer. Once the PoX anchor block is known, +_Figure 3: Protocol diagram of a BTC-transfer. Once the PoX anchor block is known, the new Stackers proceed to execute a WSTS DKG and post the new aggregate public key and wallet redeem script to Stacks. The old Stackers help them do this by requiring miners to include their votes in their blocks as a prerequisite for signing them. Once the new public key and wallet redeem script have reached 70% support, the old Stackers send one or more Bitcoin transactions which consume all of the current wallet's UTXOs (including those -for in-flight peg-outs) and create new ones for the new peg wallet. Once all old UTXOs -are consumed, then the hand-off completes. The act of processing a peg-transfer transaction +for in-flight withdraws) and create new ones for the new sBTC wallet. Once all old UTXOs +are consumed, then the hand-off completes. The act of processing a BTC-transfer transaction updates the .sbtc contract's wallet UTXO tracker per the consensus rules._ The Stackers write the aggregate public key and BTC redeem script @@ -534,48 +535,48 @@ transactions, which they share with existing Stackers so they can compel miners include them in blocks (and should this fail for any reason, Stackers can also send their votes as normal Stacks transactions). Once the aggregate public key and BTC redeem script clinches at least 70% support as weighted by the new stackers' -stacked STX, then the new Stackers are treated as active and ready to execute the peg wallet +stacked STX, then the new Stackers are treated as active and ready to execute the sBTC wallet hand-off. By executing this vote, Stackers are granted a degree of agility in determining the terms of the BTC redeem script. For example, they can require users to wait -for two reward cycles to receive their BTC back in the event of a peg-in -failure, instead of one. As another example, they can pass control of the peg +for two reward cycles to receive their BTC back in the event of a deposit +failure, instead of one. As another example, they can pass control of the sBTC wallet to a user-controlled DAO in the event that there is no spending activity for a number of reward cycles. ### Passing the BTC Once the new Stackers have voted on the new wallet redeem script with 70% -support, the old Stackers transfer the BTC to the new peg wallet address. These +support, the old Stackers transfer the BTC to the new sBTC wallet address. These transactions are Stacks-on-Bitcoin transactions, and contain an `OP_RETURN` that marks them as such to all Stacks nodes. -Miners process a peg-transfer transaction by updating the data space of the +Miners process a BTC-transfer transaction by updating the data space of the `.sbtc` contract as follows: -* The pointers to old UTXOs consumed by the peg-transfer are deleted, and +* The pointers to old UTXOs consumed by the BTC-transfer are deleted, and pointers to the new wallet's UTXOs are inserted. If the UTXOs for a pending -BTC redemption transaction are instead consumed by a peg-transfer, then not only +BTC redemption transaction are instead consumed by a BTC-transfer, then not only are these UTXOs deleted, but also the transaction is queued for re-try by the new Stackers. See below. * The `.sbtc` contract's BTC balance for the next reward cycle is updated by the amount transferred. -Once all of the outstanding UTXOs have been consumed by peg-transfers, the new -Stackers begin handling peg-ins and peg-outs for the next reward cycle. +Once all of the outstanding UTXOs have been consumed by BTC-transfers, the new +Stackers begin handling deposits and withdraws for the next reward cycle. ### Recovery of BTC Fees The transfer is complete once all of the old wallet's UTXOs (both unused and -pending) are consumed by peg-transfer transactions. However, -the total BTC in the peg wallet will be slightly less than the +pending) are consumed by BTC-transfer transactions. However, +the total BTC in the sBTC wallet will be slightly less than the total amount of sBTC. This is because (1) the old Stackers will have had to pay -transaction fees to send the peg hand-off transactions, and (2) Stackers +transaction fees to send the BTC-transfer transactions, and (2) Stackers may have had to RBF a stuck BTC redeem transaction. These losses due to BTC fees are distributed across sBTC accounts lazily when the user next -pegs in BTC, transfers the sBTC, or attempts to redeem it. The `.sbtc` contract keeps track +deposits BTC, transfers the sBTC, or attempts to redeem it. The `.sbtc` contract keeps track of the total supply of sBTC, the balance of each account, and the number of missing satoshis, so it has enough information to make this happen. When the user attempts to do any of the above with sBTC, the `.sbtc` contract will burn an amount of sBTC equal to @@ -586,33 +587,33 @@ min(1, (sbtc_balance * missing_satoshis) / sbtc_supply) ``` In other words, the sBTC holder will pay a pro-rata share of the missing BTC -fees, or it will pay a single satoshi of it. An sBTC holder pays at most one +fees, or it will pay a single satoshi of it. An sBTC holder pays at most once per reward cycle. Eventually, as long as there is sBTC activity on-chain, the number of sBTC in circulation will be made equal to -the number of satoshis in the peg wallet. If this fails to happen by the end of +the number of satoshis in the sBTC wallet. If this fails to happen by the end of the reward cycle, then the sBTC system freezes and a Stacker may need to -manually pay BTC into the peg wallet to recover the fee (see "System Recovery -from Frozen Peg"). +manually pay BTC into the sBTC wallet to recover the fee (see "System Recovery +from Frozen Wallet"). ### Restarting In-Flight Transactions -If a peg hand-off happens while there are in-flight redemption transactions, then the old +If a BTC-transfer happens while there are in-flight redemption transactions, then the old Stackers must double-spend the in-flight redemption transactions. The `.sbtc` contract identifies which in-flight redemption transactions would be affected by -observing which UTXOs the peg-transfer transaction consumes. Each affected in-flight +observing which UTXOs the BTC-transfer transaction consumes. Each affected in-flight redemption transaction would be marked as cancelled, and the user's sBTC unlocks. The user will need to try the request again. ### Failure Modes and Recovery -The peg-transfer can fail in the following ways: +The BTC-transfer can fail in the following ways: * The user sends BTC to an old wallet address, based on an old redeem script. In this case, the redeem script terms automatically guarantee that the user's BTC becomes spendable to them after a timeout happens. * No blocks get mined in the prepare phase. In this case, the old Stackers - proceed with the peg hand-off as soon as block-mining is back online. If this + proceed with the BTC-transfer as soon as block-mining is back online. If this takes until after the prepare phase, then the sBTC system freezes (see below). * Miners do not mine new stackers' votes. This is ameliorated by having the @@ -629,8 +630,8 @@ keeping their STX locked and halting PoX payments until the old Stackers finish the hand-off (see below). * While hand-off is proceeding, an in-flight redemption transaction gets - double-spent by a peg-tranfer transaction. If this happens, then the user -retries the peg-out request (their request is cancelled automatically once any + double-spent by a BTC-tranfer transaction. If this happens, then the user +retries the withdraw request (their request is cancelled automatically once any of their in-flight redemption transactions' are consumed by a different Stacks-on-Bitcoin transaction). @@ -638,7 +639,7 @@ Stacks-on-Bitcoin transaction). In the preceding sections, there are failure modes whereby the system can freeze. This can happen if the Stackers fail to execute a WSTS signing round or -DKG, or fail to vote for a new peg wallet redeem script. If the system freezes, +DKG, or fail to vote for a new sBTC wallet redeem script. If the system freezes, then STX unlocks do not happen, and PoX payouts do not happen either, for as long as the system is frozen. Instead, miners pay to a burn address, and the PoX system refuses to unlock STX. The only way the STX can unlock and PoX payments @@ -648,23 +649,23 @@ the subsequent set remain frozen, then the Stacks blockchain halts. To thaw the system: -* On peg-in, the system can freeze if Stackers cannot complete a WSTS signing - round to vote to accept, reject, or abstain from a peg-in request, and the -peg-in requests remains pending for too long. To thaw +* On deposit, the system can freeze if Stackers cannot complete a WSTS signing + round to vote to accept, reject, or abstain from a deposit request, and the +deposit requests remains pending for too long. To thaw the system, the Stackers would need to come back online and acknowledge all -pending peg-in transactions. If the system remains frozen across a prepare +pending deposit transactions. If the system remains frozen across a prepare phase, then the system can be thawed by the Stackers passing the BTC to the new -set of Stackers, which would cancel the pending peg-in requests. +set of Stackers, which would cancel the pending deposit requests. -* On peg-out, the system can freeze if Stackers cannot complete a timely signing - round to vote to process the peg-out. To thaw the system, Stackers would need -to come back online to either fulfill all pending peg-out requests, or NACK them. +* On withdraw, the system can freeze if Stackers cannot complete a timely signing + round to vote to process the withdraw. To thaw the system, Stackers would need +to come back online to either fulfill all pending withdraw requests, or NACK them. If the system remains frozen across a reward cycle boundary, then it thaws if the old Stackers are able to transfer their -BTC to the new Stackers. This act will cancel all pending sBTC peg-out +BTC to the new Stackers. This act will cancel all pending sBTC withdraw requests. -* On peg-transfer, the system can freeze in one of two ways: the new Stackers +* On BTC-transfer, the system can freeze in one of two ways: the new Stackers cannot vote on a new aggregate public key and redeem script before the end of the reward cycle, or the old Stackers cannot hand off all of the BTC to the new Stackers by the start of the new reward cycle. The only way to thaw the system @@ -673,25 +674,25 @@ send over the BTC before the next PoX anchor block is mined. If the system remains frozen this way, and the next PoX anchor block is mined, then the Stacks blockchain halts. -### System Recovery from Frozen Peg +### System Recovery from Frozen Wallet In the event that the BTC gets "stuck" and Stackers are unable to access it, the -system will support a variation of a peg-in transaction called a _donation_. -The only difference between a peg-in and a donation is that the donation does +system will support a variation of a deposit transaction called a _donation_. +The only difference between a deposit and a donation is that the donation does not materialize sBTC. It merely gives Stackers some BTC with which to fulfill -peg-outs. This feature is meant to enable Stackers to recover lost BTC and +withdraws. This feature is meant to enable Stackers to recover lost BTC and unfreeze the system, should the need ever arise. ## Initial Capital Limits This SIP proposes that the total amount of sBTC accepted into this system is capped by a limit in the `.sbtc` contract. The `.sbtc` contract will refuse to -admit a peg-in if it would exceed this limit. This limit can be increased (but +admit a deposit if it would exceed this limit. This limit can be increased (but not decreased) by Stacker vote, and it would start at a default value of 100 BTC. The reason for the limit is to allow the system to be stress-tested while minimizing risk to users in the early days. Once Stackers are comfortable with -maintaining the peg and running signer daemons to manage the sBTC wallet, +maintaining the wallet and running signer daemons to manage the sBTC wallet, they can increase this limit. They would remove it by simply setting the limit to 21 million BTC. @@ -711,27 +712,27 @@ no ROI for dishonest Stackers to participate if their goal is to steal the BTC. This SIP proposes implementing the aforementioned Normal mode for sBTC. A follow-up SIP may propose a Recovery mode, whereby instead of burning BTC while the system is frozen, the BTC is instead repurposed to directly fulfill pending -peg-out requests. While peg-out fulfillment will be considerably slower, at +withdraw requests. While withdraw fulfillment will be considerably slower, at least the sBTC users will eventually be made whole in the event of a catastrophe. -In Recovery mode, sBTC peg-ins would cease and all pending sBTC peg-ins would be -cancelled. Peg-outs would be fulfilled in first-in first-out order from -redirected PoX payouts. Once a peg-out request has been +In Recovery mode, sBTC deposits would cease and all pending sBTC deposits would be +cancelled. Withdraws would be fulfilled in first-in first-out order from +redirected PoX payouts. Once a withdraw request has been satisfied -- i.e. the requester's BTC address has received _at least_ as many satoshis as reqeusted from the redirected PoX -payouts -- then the peg-out request completes and the next requester's peg-out +payouts -- then the withdraw request completes and the next requester's withdraw is processed. Once the Stacks blockchain supports Recovery Mode, the system would continue operating even if the system was frozen for many reward cycles. The blockchain -would not halt; instead, it would continue its operation to fulfill all peg-out +would not halt; instead, it would continue its operation to fulfill all withdraw requests while the BTC is seemingly inaccessible to Stackers. PoX payouts and STX unlocks would only resume once the current set of Stackers control enough BTC to back each sBTC token, and are able to fulfill pending sBTC -peg-outs. +withdraws. -The system would transition back to Normal mode once all pending peg-out +The system would transition back to Normal mode once all pending withdraw transactions have been fulfilled, and once the current set of Stackers possess enough BTC to cover all outstanding sBTC tokens. @@ -765,7 +766,7 @@ processes transfers when it receives approvals from at least 6 of the 8 Warden n ## LBTC This is a closed membership system. Over 50 members of Liquid Federation manage multi-sig -contract. Only federation members can process peg-outs. +contract. Only federation members can process withdraws. ## tBTC @@ -800,7 +801,7 @@ activates. If this SIP does not ship with SIP-021, then a follow-on hard fork will be needed to activate it. To activate this SIP, a Stacker vote will need to be -taken to assess how they feel about running and maintaining a peg wallet, in +taken to assess how they feel about running and maintaining the sBTC wallet, in addition to their block-signing responsibilities in SIP-021. In order for this SIP to activate, the following criteria must be met by the set From e6b3233e76c22cfd6ef02f21add66696b9e4c314 Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Fri, 13 Oct 2023 17:50:21 -0400 Subject: [PATCH 6/9] chore: revise figures with new terms --- sips/sip-025/001-sip-025-figure-1.png | Bin 0 -> 72113 bytes sips/sip-025/002-sip-025-figure-2.png | Bin 0 -> 62418 bytes sips/sip-025/003-sip-025-figure-3.png | Bin 0 -> 65103 bytes sips/sip-025/sip-025-sbtc.md | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 sips/sip-025/001-sip-025-figure-1.png create mode 100644 sips/sip-025/002-sip-025-figure-2.png create mode 100644 sips/sip-025/003-sip-025-figure-3.png diff --git a/sips/sip-025/001-sip-025-figure-1.png b/sips/sip-025/001-sip-025-figure-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f1e0fe712756f4a647135dce8f24fe315f420107 GIT binary patch literal 72113 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�t6w(+Ra8DL{Tvh!+MKa$;&q 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 KU5a=Z^8Wxk+0%6Z literal 0 HcmV?d00001 diff --git a/sips/sip-025/002-sip-025-figure-2.png b/sips/sip-025/002-sip-025-figure-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3023f11aa39f01d106e0ad745e246626c5f887 GIT binary patch literal 62418 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 literal 0 HcmV?d00001 diff --git a/sips/sip-025/003-sip-025-figure-3.png b/sips/sip-025/003-sip-025-figure-3.png new file mode 100644 index 0000000000000000000000000000000000000000..78aaaccc7fa68f203d0473fad1e15bff66bca5f1 GIT binary patch literal 65103 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 z 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 literal 0 HcmV?d00001 diff --git a/sips/sip-025/sip-025-sbtc.md b/sips/sip-025/sip-025-sbtc.md index 8385e8b73..3480e5c25 100644 --- a/sips/sip-025/sip-025-sbtc.md +++ b/sips/sip-025/sip-025-sbtc.md @@ -220,7 +220,7 @@ or to process a wallet hand-off at the end of a reward cycle. Either way, the user's BTC will be spent by Stackers before they can reclaim it via the spending fulfillment script. -![Nakamoto Flow Diagrams](https://github.com/stacksgov/sips/assets/459947/62229151-6777-4eb9-b902-2b4192bdcf1c) +![Figure 1](./001-sip-025-figure-1.png) _Figure 1: Protocol diagram of an sBTC deposit. The user submits a Bitcoin transaction, and eventually, the equivalent number of sBTC tokens materialize in @@ -342,7 +342,7 @@ their signer daemons) observe and react to. When the transaction confirms, the user's requested sBTC is locked until the end of the next reward cycle -- the user cannot spend it while Stackers are considering the request. -![Nakamoto Flow Diagrams (1)](https://github.com/stacksgov/sips/assets/459947/e8da8826-1303-4891-83fb-a568ec9d3f9d) +![Figure 2](./002-sip-025-figure-2.png) _Figure 2: Protocol diagram for a successful withdraw request. The user submits a withdraw request to Stacks, which locks their requested sBTC tokens until the @@ -517,7 +517,7 @@ SIP-021 already for signing blocks. The latter is needed for users to correctly produce a deposit UTXO, which contains the hash of a redeem script; the redeem script determines the sBTC wallet's address. -![Nakamoto Flow Diagrams (2)](https://github.com/stacksgov/sips/assets/459947/7e5bd105-71d4-46e4-afe9-9e68053696a6) +![Figure 3](./003-sip-025-figure-3.png) _Figure 3: Protocol diagram of a BTC-transfer. Once the PoX anchor block is known, the new Stackers proceed to execute a WSTS DKG and post the new aggregate public key and From 30b69ef1557ae4b34ccc12f518cdff627208aedf Mon Sep 17 00:00:00 2001 From: AshtonStephens Date: Sun, 29 Oct 2023 21:21:06 -0400 Subject: [PATCH 7/9] Address low hanging PR comments. --- sips/sip-025/sip-025-sbtc.md | 44 +++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/sips/sip-025/sip-025-sbtc.md b/sips/sip-025/sip-025-sbtc.md index 3480e5c25..8c398c796 100644 --- a/sips/sip-025/sip-025-sbtc.md +++ b/sips/sip-025/sip-025-sbtc.md @@ -2,22 +2,27 @@ SIP Number: 022 -Title: A Trustless 2-way Bitcoin Peg for Stacks +Title: A Trust-minimized 2-way Bitcoin Peg for Stacks Authors: * Aaron Blankstein * Mike Cohen +* Ashton Stephens * Brice Dobry -* Marvin Janssen +* Marvin Janssen * Friedger Müffke -* Jesus Najera +* Jesus Najera * Jude Nelson * Don Park * Alie Slade * Andre Serrano -* @Soju-Drinker -* Igor Sylvester -* Joey Yandle +* Sayak Chatterjee +* Igor Sylvester +* Joey Yandle +* Mike Cohen +* Fernando Foy +* Jacinta Ferrant +* Stjepan Golemac Consideration: Technical, Governance @@ -128,7 +133,7 @@ income from miners. * **Withdraws of arbitrary amounts of BTC are fulfilled in a fixed amount of time on the happy path** if both Stackers and miners operate with a BFT honest -majority. If they do not, then withdraws of arbitrary amounts of BTC +majority. If they do not, then withdraws of arbitrary amounts of BTC are fulfilled eventually by _redirecting_ Stackers' PoX payouts to fund withdraw requests. @@ -197,7 +202,7 @@ signing round to act on the deposit. In the happy path, at least 70% of Stackers agree that the deposit transaction is valid, and they generate a contract-call to the `.sbtc` contract to _authorize_ the deposit by minting the equivalent number of sBTC tokens to -an account address of the user's choice. Crucially, the transaction is signed +an account address of the user's choice. Crucially, the transaction is signed collectively by Stackers via a WSTS signing round -- it is authenticated via a Schnorr proof and the Stacker's aggregate public key. This way, _only_ the Stackers can authorize the deposit, and only via a 70%+ majority vote. @@ -233,7 +238,7 @@ The deposit Bitcoin transaction contains the following data: * An `OP_RETURN` data output, which contains the account address to which sBTC should be minted -* A payment to the sBTC sBTC wallet maintained by the current Stackers. This +* A payment to the sBTC wallet maintained by the current Stackers. This payment UTXO is the hash of a script that has two spending fulfillment conditions: either the Stackers spend the UTXO before the end of the next reward cycle, or the sender can spend the UTXO once the end of the next reward @@ -529,9 +534,9 @@ for in-flight withdraws) and create new ones for the new sBTC wallet. Once all are consumed, then the hand-off completes. The act of processing a BTC-transfer transaction updates the .sbtc contract's wallet UTXO tracker per the consensus rules._ -The Stackers write the aggregate public key and BTC redeem script +The Stackers write the aggregate public key and BTC redeem script through an on-chain vote. The new Stackers submit their votes as zero-fee Stacks -transactions, which they share with existing Stackers so they can compel miners +transactions, which they share with existing Stackers so they can compel miners include them in blocks (and should this fail for any reason, Stackers can also send their votes as normal Stacks transactions). Once the aggregate public key and BTC redeem script clinches at least 70% support as weighted by the new stackers' @@ -682,7 +687,7 @@ The only difference between a deposit and a donation is that the donation does not materialize sBTC. It merely gives Stackers some BTC with which to fulfill withdraws. This feature is meant to enable Stackers to recover lost BTC and unfreeze the system, should the need ever arise. - + ## Initial Capital Limits This SIP proposes that the total amount of sBTC accepted into this system is @@ -697,7 +702,7 @@ they can increase this limit. They would remove it by simply setting the limit to 21 million BTC. Importantly, the capital limit is _not_ a function of the STX price. This is -because the BTC is safe if at least 30% of the stackers are honest -- they can +because the BTC is safe if at least 30% of the stackers are honest -- they can deny 69.999...% of dishonest Stackers the ability to abscond with the BTC. Thus, this proposal calls for enabling Stackers to set the capital limit themselves, as long as the limit has at least 70% vote support. To help build user trust @@ -743,13 +748,16 @@ different chain. The key difference between most of them and sBTC is that the nodes which control the BTC wallet use a closed-membership protocol to decide which parties can enter and leave the set. In detail: -## wBTC +## WBTC This is a closed membership system. It is made up of -50+ merchants and custodians with keys to the wBTC +50+ merchants and custodians with keys to the WBTC multi-sig contract on Ethereum. End users purchase wBTC directly from -authorized merchants, and often the experience is fast. However, wBTC deposits and -withdrawals can only be performed by authorized merchants and custodians. +authorized merchants, and often the experience is fast. However, WBTC deposits and +withdrawals can only be performed by authorized merchants and custodians. + +Although the merchants manage issuance and redemption, all BTC backing WBTC is held +by a single company (BitGo). ## RBTC @@ -766,7 +774,7 @@ processes transfers when it receives approvals from at least 6 of the 8 Warden n ## LBTC This is a closed membership system. Over 50 members of Liquid Federation manage multi-sig -contract. Only federation members can process withdraws. +contract. Only federation members can process withdrawals. ## tBTC From bda28c18228c292d1b5312adacf419f747618c22 Mon Sep 17 00:00:00 2001 From: AshtonStephens Date: Thu, 2 Nov 2023 00:02:48 -0400 Subject: [PATCH 8/9] Add details from sBTC research conversations. https://github.com/stacks-network/sbtc/discussions\?discussions_q\=label%3Aresearch+is%3Aclosed --- sips/sip-025/001-sip-025-figure-1.png | Bin 72113 -> 0 bytes sips/sip-025/sip-025-sbtc.md | 319 ++++++++++++++++---------- 2 files changed, 200 insertions(+), 119 deletions(-) delete mode 100644 sips/sip-025/001-sip-025-figure-1.png diff --git a/sips/sip-025/001-sip-025-figure-1.png b/sips/sip-025/001-sip-025-figure-1.png deleted file mode 100644 index f1e0fe712756f4a647135dce8f24fe315f420107..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72113 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�t6w(+Ra8DL{Tvh!+MKa$;&q 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 KU5a=Z^8Wxk+0%6Z diff --git a/sips/sip-025/sip-025-sbtc.md b/sips/sip-025/sip-025-sbtc.md index 8c398c796..f589a46f9 100644 --- a/sips/sip-025/sip-025-sbtc.md +++ b/sips/sip-025/sip-025-sbtc.md @@ -6,23 +6,24 @@ Title: A Trust-minimized 2-way Bitcoin Peg for Stacks Authors: * Aaron Blankstein -* Mike Cohen +* Alie Slade +* Andre Serrano * Ashton Stephens * Brice Dobry -* Marvin Janssen -* Friedger Müffke -* Jesus Najera -* Jude Nelson * Don Park -* Alie Slade -* Andre Serrano -* Sayak Chatterjee +* Fernando Foy +* Friedger Müffke * Igor Sylvester +* Jacinta Ferrant +* Jesus Najera * Joey Yandle +* Jude Nelson +* Marvin Janssen * Mike Cohen -* Fernando Foy -* Jacinta Ferrant +* Mike Cohen +* Sayak Chatterjee * Stjepan Golemac +* Tycho Onnasch Consideration: Technical, Governance @@ -42,7 +43,7 @@ Discussions-To: https://github.com/stacksgov/sips # Abstract -This SIP proposes the creation of a **trustless 2-way peg** in which BTC (the +This SIP proposes the creation of a **trust-minimized 2-way peg** in which BTC (the tokens of the current Stacks burnchain) can be manifested on Stacks as a SIP-010-compliant fungible token, called sBTC, and later redeemed for the same number of BTC. This proposal redefines the act of Stacking to be the act of @@ -54,6 +55,26 @@ payouts. # Introduction +## Glossary + +| Term | Definition | +|:-:|:-| +| stacker | Someone who locks up their STX tokens in order to support the network and earn Bitcoin rewards. Read more about [how stacking helps the network][HOW-STACKING-HELPS-THE-NETWORK-GIST]. | +| stacks miner | Someone who spends Bitcoin to participate in miner elections and create the new block on the Stacks blockchain. Miners are rewarded with STX tokens. | +| stacker signer | A daemon which runs as an event observer to the Stacks node. | +| delegated signing | The act of signing on behalf of either one or many stackers, where the weight of the signer is the aggregate weight of the stackers it's signing for. | +| PoX | **Proof of Transfer:** Miners commit Bitcoin to the Stacks network in order to be eligible to mine blocks. The more Bitcoin a miner commits, the higher their chances of winning the block lottery selected via cryptographic sortition. If a miner wins the block lottery, they are awarded STX tokens as a reward. Further details are in [SIP-007][SIP-007-LINK]. | +| DKG | **Distributed Key Generation:** A cryptographic process in which multiple parties contribute to the calculation of a shared public and private key set. The participation of a threshold of honest parties determines whether a key pair can be computed successfully. | +| WSTS | **Weighted Schnorr Threshold Signature:** A single aggregate signature, indistinguisable from a standard Schnorr signature, that is generated by a number of signers whose aggregate weight must exceed a given threshold. WSTS is the system used for DKG in this proposal. [WSTS GitHub][WSTS_GITHUB]. | +| 2-way peg | A mechanism that allows users to transfer assets between two blockchains in a trustless way by locking assets on one blockchain and issuing equivalent assets on the other blockchain. | +| deposit | When a BTC holder rids themselves of their BTC, and in doing so, receives the equivalent amount of wrapped BTC on the smart contract chain. Elaborated upon in this SIP. | +| withdrawal | When a wrapped BTC holder destroys their wrapped BTC on the smart contract chain, and receives an equivalent amount of BTC on the Bitcoin chain. Elaborated upon in this SIP. | +| clarity | The smart contracting language used on the Stacks blockchain. This smart contracting language is used on the Stacks blockchain to support programatic control over digital assets within the Stacks blockchain. Details are in [SIP-002][SIP-002-LINK]| +| contract dataspace | A set of tables of data which only the smart contract that owns the dataspace may modify. Details are in [SIP-002][SIP-002-LINK]. | +| StackerDB | A best-effort replicated database controlled by a smart contract, which Stacks node operators can opt-in to hosting. Unlike a smart contract's data space, a StackerDB's data is not consensus-critical. Developers use StackerDBSet to host and replicate auxiliary smart contract data for the purposes of some (off-chain) application. | + +## Problem Statement + The lack of a stateful smart contract system on Bitcoin necessitates the construction of systems in which a representation of locked Bitcoin is traded within a separate smart-contract-powered blockchain. These systems aim to @@ -95,6 +116,8 @@ intermediaries in this manner -- there is no "2-way peg coinbase." Collateraliz participation, but tremendous downside to going offline, which creates a high barrier-to-entry for participating as an intermediary. +## Proposed Solution + The system we present, called "sBTC," addresses these two short-comings by leveraging unique properties of the Stacks blockchain. Our key insight is that Stacks' PoX consensus algorithm offers a way to _recover from_ 2-way peg safety @@ -137,8 +160,9 @@ majority. If they do not, then withdraws of arbitrary amounts of BTC are fulfilled eventually by _redirecting_ Stackers' PoX payouts to fund withdraw requests. -To support this, sBTC offers two modes of operation: -the Normal mode, and the Recovery mode. In **Normal mode**, the sBTC asset is +To support this, sBTC offers two modes of operation: **Normal mode** and **Recovery mode**. + +In **Normal mode**, the sBTC asset is backed 1:1 by BTC sent to a wallet controlled by a large fraction of Stackers, as measured by the fraction of locked STX they represent. Each time BTC is sent to this wallet (a deposit operation), an equal number of sBTC are @@ -149,29 +173,34 @@ destroys the requester's equivalent amount of sBTC on the Stacks chain. If the Normal mode encounters a liveness failure for any reason (including loss of BTC), the system transitions to a Recovery mode until enough Stackers come -back online. In **Recovery mode**, a fraction of the PoX payouts are +back online. + +In **Recovery mode**, a fraction of the PoX payouts are redirected to withdraw requests such that eventually, all outstanding requests will be fulfilled, even if the Stackers _never_ come back online. While considerably slower than Normal mode, the design of Recovery mode ensures all sBTC can be redeemed so long as the Stacks blockchain and PoX are online. +## Scope + +This proposal only describes Normal mode, and leaves Recovery mode to be described +in a future SIP. + This proposal, if ratified, would be executed by at least two hard forks: one to implement Normal mode, and a follow-on hard fork to implement Recovery mode. -This SIP is designed to leverage features proposed by SIP-021, and can only -activate if SIP-021 is ratified beforehand or concurrently with this SIP. +This SIP is designed to leverage features proposed by [SIP-021][SIP-021-LINK], and can only +activate if it is ratified beforehand or concurrently with this SIP. -This proposal describes Normal mode. Recovery mode will be fully described in a -future SIP, and will have a separate activation procedure. The Recovery mode -SIP cannot activate without this SIP first being ratified. +The Recovery mode SIP cannot activate without this SIP first being ratified. # Specification -The proposed SIP-021 upgrade would do away with Stacks forks, which vastly -simplifies the sBTC design. Importantly, miners and Stackers cannot "roll back" -sBTC operations, meaning that deposit and withdraw operations follow at-most-once -semantics. This lack of "fork risk" means that the system can support -arbitrarily large amounts of BTC deposited and withdrawn, assuming that at -least 70% of Stackers by weight are trustworthy. +The proposed [SIP-021][SIP-021-LINK] upgrade would do away with Stacks forks, which vastly +simplifies the sBTC design over what would be needed for a fork tolerant system. +Importantly, miners and Stackers cannot "roll back" sBTC operations, meaning that deposit +and withdraw operations follow at-most-once semantics. This lack of "fork risk" means +that the system can support arbitrarily large amounts of BTC deposited and withdrawn, +assuming that at least 70% of Stackers by weight are trustworthy. The sBTC system state is materialized in a boot contract called `.sbtc`. This contract, like `.pox-4`, is managed in part by the node itself. In particular, @@ -181,18 +210,18 @@ by smart contracts in Stacks. The following sections describe the Normal mode of operation. Recovery mode is left for future work, but is summarized in a separate section after Normal mode. -This SIP can activate without Recovery mode. ## Deposit -A deposit operation is initiated as a Bitcoin transaction with a special payload -in an `OP_RETURN` output (Figure 1). Because this is a Stacks-on-Bitcoin -transaction, a miner in a subsequent tenure is required by the consensus rules -to process it as part of producing the first block in its tenure. The Stacks -node records the existence of this deposit operation in the data space of the -`.sbtc` smart contract, where it is marked as a _pending_ operation that -Stackers must act upon. Namely, the relevant parts of the transaction are -extracted and translated in to Clarity values and made available via internal data maps. +To deposit bitcoin into the system a transaction will need to be generated +that sends the UTXO to the generated address with two script spending paths. +One with a special payload in an `OP_DROP` unlock script will need to be sent to +the signer's pubkey, and another with a timelocked refund path. Then, a function +with within the `.sbtc` smart contract will need to be called that does the following: + +1. Verifies that the Bitcoin transaction is included in the bitcoin block of a specified height +2. Verifies the inclusion of the 2 script paths tap leaves in the output (the root is generated from the 2 tap leaves) +3. Records the existence of the Transaction ID, the amount sent and the time at which it was committed in the `.sbtc` data space and marked as _pending_ (the height at which this Bitcoin transaction was included, not at which it was verified in the Clarity contract) Stackers, via their signer daemons, already subscribe to the Stacks blockchain for events. The act of writing new sBTC deposit state to the `.sbtc` contract @@ -220,33 +249,74 @@ the Bitcoin block in which their `block-commit` landed. The act of fulfilling a deposit with an affirmative vote is effectively a promise made by Stackers to users to ensure that the sBTC minted wll remain fully backed -by the BTC the user submitted. This BTC may only be spent to fulfill withdraws, -or to process a wallet hand-off at the end of a reward cycle. Either way, the -user's BTC will be spent by Stackers before they can reclaim it via the spending -fulfillment script. +by the BTC the user submitted. This BTC may only be spent to fulfill withdrawals, +or to process a DKG wallet hand-off. Either way, the user's BTC will be spent by +Stackers before they can reclaim it via the spending fulfillment script. -![Figure 1](./001-sip-025-figure-1.png) - -_Figure 1: Protocol diagram of an sBTC deposit. The user submits a Bitcoin -transaction, and eventually, the equivalent number of sBTC tokens materialize in -the account of the user's choosing_. +***TODO: https://github.com/stacks-network/sbtc/issues/349: Create Deposit Procedure Diagram*** ### Deposit Bitcoin Transaction -The deposit Bitcoin transaction contains the following data: +The deposit Bitcoin transaction sends Bitcoin to the generated address with the +following script spending paths: + +1. The sbtc payload is embedded in the script that sends the Bitcoin to the signer's pubkey + - ` DROP CHECKSIG` +2. The Refund path + - ` CHECKLOCKTIMEVERIFY DROP CHECKSIG` + +### Deposit Clarity Contract Call + +The `.sbtc` clarity contract will need to contain a function that, when called, +does the following: + +1. Verifies that the Bitcoin transaction is included in the bitcoin block of a specified height +2. Verifies the inclusion of the 2 script paths tap leaves in the output (the root is generated from the 2 tap leaves) +3. Records the existence of the Transaction ID, the amount sent and the time at which it was committed in the `.sbtc` data space (the height at which this Bitcoin transaction was included, not at which it was verified in the Clarity contract) + +#### `.sbtc` Contract Function + +```lisp +submit-commitment( + (burn-height uint) + (tx (buff 4096)) + (header (buff 80)) + (tx-index uint) + (tree-depth uint) + (txproof (list 14 (buff 32))) + (signers-pubkey (buff 33)) + (principal-buff (buff 151)) + (refund-pubkey (buff 33)) + (version (buff 1)) + (output-index uint) +) +``` + +The following are the function parameters: -* An `OP_RETURN` data output, which contains the account address to which sBTC - should be minted +| Parameter | Description | +| :------------- | :----------------------------------------------------------------- | +| burn-height | Block height in which the Bitcoin transaction is included | +| tx | Raw Bitcoin transaction data | +| header | Bitcoin block header of the commitment Bitcoin transaction | +| tx-index | Index at which the Bitcoin transaction is found in a Bitcoin block | +| tree-depth | Depth of the merkle tree where the Bitcoin transaction is included | +| txproof | Merkle proof of inclusion of the Bitcoin transaction | +| principal-buff | Address to which the sBTC is to be minted in buffer format | +| signers-pubkey | Public key of the signers in compressed format | +| refund-pubkey | Public key to be used in the refund path (x-only) | +| version | Version of the script | +| output-index | Index of the output that is being verified for a commitment | -* A payment to the sBTC wallet maintained by the current Stackers. This - payment UTXO is the hash of a script that has two spending fulfillment -conditions: either the Stackers spend the UTXO before the end of the next -reward cycle, or the sender can spend the UTXO once the end of the next reward -cycle has passed. +#### Conditions -The payment must be above a `.sbtc`-defined threshold, in satoshis. This -_minimum deposit_ value is used to prevent users from spamming the system with -dust deposits. Stackers can vote to adjust the minimum deposit. +There are two conditions calling to the `submit-commitment` clarity contract: +1. A Transaction can only be used once to limit a malleability attack vector +2. Only one output may be used as a deposit per transaction (this is imposed in the case that verifying multiple outputs is too expensive) + +The payment in the original transaction must be above a `.sbtc`-defined threshold, +in satoshis. This _minimum deposit_ value is used to prevent users from spamming the +system with dust deposits. Stackers can vote to adjust the minimum deposit. ### Stacker Authorization Transaction @@ -263,18 +333,25 @@ The authorization transaction contains the following data: * A pointer to the deposit transaction's UTXO -, * The Bitcoin redeem script for the user's payment. The Stackers must verify - that the script contains the aforementioned spending fulfillment conditions, -_and no others_. The script is disclosed on the Stacks chain in order to (1) -allow 3rd parties to authenticate the script and (2) check the Stackers' work in -order to hold them accountable. +* The Bitcoin redeem script for the user's payment. + +The Stackers must verify that the script contains the aforementioned spending +fulfillment conditions, _and no others_. The script is disclosed on the Stacks +chain in order to (1) allow 3rd parties to authenticate the script and (2) check +the Stackers' work in order to hold them accountable. On successful execution, the sBTC will be minted to the user-specified Stacks account, and the redeem script will be stored in the `.sbtc` contract for posterity. The `.sbtc` contract does not attempt to parse or validate the -redeem script, but it does keep track of all of the UTXOs that the wallet -has assumed control over via "yes" votes. In addition, it stores the voting -results and bitmaps for posterity. +redeem script; instead, it stores the voting results and bitmaps for posterity +and keeps track of the single consolidated UTXO generated from all the approved +deposit requests. + +The signing bitmap will include a map of both those who vote to accept and those +who vote to reject because the set of Stackers must prove that at least 70% of them +by weight were online when the vote was taken; if less than 70% of signers by weight +are voting then this is a liveness failure on the Stackers' part, and both their PoX +payouts and peg-ins will be stopped until Stackers can reach quorum. There is no transaction fee for the Stacker authorization transaction. Stackers instead require the miner to include it for free in their blocks by withholding @@ -316,32 +393,25 @@ push their transactions through. ### Transaction Fees -The user pays the transaction fee for their sBTC deposit transaction. Stackers -do not pay a STX transaction fee, but instead require miners to include their -deposit authorization transaction in the next block they sign. - -### Two-phase Deposit +The user pays the transaction fee for both their sBTC deposit transaction and +the consolidation transaction required to combine its deposit with all UTXOs into +the peg wallet. In practice, this means that a deposit transaction requires +approximately two times the fees of an equivalent transaction to an arbitrary +Bitcoin pubkey. -Users may not be able to send a Bitcoin transaction with an `OP_RETURN` output. -For example, this is difficult to do or is unsupported in some Bitcoin wallets, -especially custodial wallets. To support these users, a 3rd party could simply -send deposit transaction on their behalf. The user would simply pay the 3rd -party the requisite Bitcoin to deposit, and the 3rd party would generate and send -the deposit transaction for them. +Stackers do not pay a STX transaction fee, but instead require miners to include their +deposit authorization transaction in the next block they sign. ## Withdraw Withdrawing is the act of redeeming sBTC for BTC (Figure 2). -To redeem sBTC for BTC, the user first sends a Stacks trnsaction to `.sbtc` +To redeem sBTC for BTC, the user first sends a Stacks transaction to `.sbtc` to indicate the following: * How much sBTC they would like to redeem * The Bitcoin address to which the BTC will be sent -* As an optional hint, the list of UTXOs that could be consumed to produce a BTC - redemption transaction - This request is queued up in the `.sbtc` data space, which Stackers (through their signer daemons) observe and react to. When the transaction confirms, the user's requested sBTC is locked until the end of the next reward cycle -- the @@ -354,26 +424,26 @@ a withdraw request to Stacks, which locks their requested sBTC tokens until the start of the next reward cycle. If the withdraw succeeds, then they receive BTC from the Stackers (minus a BTC transaction fee), and their sBTC gets burnt._ -When Stackers see the withdraw request, and if they are able to act on it (i.e. -the wallet has enough UTXOs free), they execute a WSTS signing round to -generate a Bitcoin transaction from the sBTC wallet's UTXOs which pays out to the +When Stackers see the withdraw request they execute a WSTS signing round to +generate a Bitcoin transaction from the sBTC wallet's UTXO which pays out to the user's requested address. Because all deposited BTC is spendable by the current set of Stackers via an aggregate Schnorr signature, Stackers simply create the -scriptSigs for sufficiently many UTXOs to fund a fulfillment UTXO for the user. +scriptSigs for the wallet UTXO to fund a fulfillment UTXO for all users that +requested a successful withdrawal. Because fulfilling the redemption request occurs through WSTS, there is a possibility of a quorum failure. As such, the Stackers may instead vote to abstain or even to refuse the withdraw request. This is explained in the "Failure Modes" section. +The approved withdrawal requests are aggregated into a single withdrawal +BTC transaction from the wallet UTXO. + The BTC redemption transaction contains the following fields: * An `OP_RETURN` identifying the withdraw request in the `.sbtc` contract -* A new UTXO that redeems the user's sBTC for BTC - -* A change UTXO that consolidates the remaining unused BTC from the consumed - wallet UTXOs +* A new UTXO that redeems all approved withdrawal request's sBTC for BTC Once the Stackers have created the BTC redemption transaction, they send it to the Bitcoin peer, and send a Stacks transaction with a copy of the Bitcoin @@ -392,8 +462,8 @@ processes it as a Stacks-on-Bitcoin transaction. The act of processing this transaction is the act of calling into the `.sbtc` contract to mark the pending sBTC withdraw as fulfilled. This burns the user's locked sBTC, and marks the withdraw operation as complete. It also updates the `.sbtc` transaction's -knowledge of the wallet's UTXO set by clearing the UTXOs consumed by the -fulfillment, and adding the change UTXO as a new UTXO that the wallet controls. +knowledge of the wallet's UTXO to be the transaction that was created to fulfill +the withdrawals. ### Withdraw Congestion @@ -453,11 +523,6 @@ fees required to produce a BTC redemption transaction, must be worth more than the Bitcoin dust minimum (5,500 satoshis). If it is not, then the Stackers NACK the withdraw request. -The minimum BTC redemption is determined by the set of UTXOs that would need to -be consumed to produce the transaction. If the Stackers cannot find a -satisfactory UTXO set, then they may use the hint given by the user on their -redemption request. - Stackers set the required satoshis/vbyte transaction fee rate in the `.sbtc` contract data space, so users can discover it at any time. Stackers update this fee rate via a collectively-signed contract-call transactionto `.sbtc`, which @@ -609,6 +674,27 @@ observing which UTXOs the BTC-transfer transaction consumes. Each affected in-f redemption transaction would be marked as cancelled, and the user's sBTC unlocks. The user will need to try the request again. +### Transfer Fees + +The peg wallet will need to be transferred every reward cycle, which is an unbounded number of +transfers with no tie to the numebr deposit and withdrawal requests. This means there is +no way to charge a fee that, at the moment of deposit or withdrawal, is +guaranteed to adequately pay for the peg transfer fees for the duration of the pegged +Bitcoin's tenure. + +To pay for peg wallet transfer fees without dipping into user funds, this SIP proposes +the following mitigation strategies. + +1. During the prepare phase, the traditionally burned bitcoin will instead be placed into the peg wallet. See [SIP-001][SIP-001-LINK] +2. The protocol will maintain a warchest that can receive donations and be siphoned from if the wallet budget for transfer fees runs dry. +3. Allow arbitrary third parties to donate BTC to the peg wallet. +4. Dip into stacker rewards such that the stackers pay for the peg transfer. + +The peg wallet's transfer fee funds are considered empty when the amount of BTC in +the peg wallet is less than or equal to the total sBTC within the system. The total +amount of sBTC in the system will be made accessable via the `.sbtc` contract's +and be tracked within the contract's data space. + ### Failure Modes and Recovery The BTC-transfer can fail in the following ways: @@ -688,31 +774,15 @@ not materialize sBTC. It merely gives Stackers some BTC with which to fulfill withdraws. This feature is meant to enable Stackers to recover lost BTC and unfreeze the system, should the need ever arise. -## Initial Capital Limits +## Capital Limits -This SIP proposes that the total amount of sBTC accepted into this system is -capped by a limit in the `.sbtc` contract. The `.sbtc` contract will refuse to -admit a deposit if it would exceed this limit. This limit can be increased (but -not decreased) by Stacker vote, and it would start at a default value of 100 BTC. +**No capital limit will be imposed on the system.** Instead, the protocol will rely +on at least 31% of signers by weight identifying themselves to bring transparency +and accountability to the system. In practice, achieving a greater than 70% +voting weight for colluding malicious signers will likely be prohibitively +difficult. -The reason for the limit is to allow the system to be stress-tested while -minimizing risk to users in the early days. Once Stackers are comfortable with -maintaining the wallet and running signer daemons to manage the sBTC wallet, -they can increase this limit. They would remove it by simply setting the limit -to 21 million BTC. - -Importantly, the capital limit is _not_ a function of the STX price. This is -because the BTC is safe if at least 30% of the stackers are honest -- they can -deny 69.999...% of dishonest Stackers the ability to abscond with the BTC. Thus, this -proposal calls for enabling Stackers to set the capital limit themselves, as -long as the limit has at least 70% vote support. To help build user trust -in the safety of the BTC, we expect Stackers to disclose additional information -about themselves (e.g. business name, mailing address, corporate charter, -portion of STX owned, etc.) in order to provide convincing evidence that this -30% honest coalition exists. If this 30% honest coalition exist, then there is -no ROI for dishonest Stackers to participate if their goal is to steal the BTC. - -## Future Work: Recovery Mode +## Future Work: Recovery mode This SIP proposes implementing the aforementioned Normal mode for sBTC. A follow-up SIP may propose a Recovery mode, whereby instead of burning BTC while @@ -729,7 +799,7 @@ received _at least_ as many satoshis as reqeusted from the redirected PoX payouts -- then the withdraw request completes and the next requester's withdraw is processed. -Once the Stacks blockchain supports Recovery Mode, the system would continue +Once the Stacks blockchain supports Recovery mode, the system would continue operating even if the system was frozen for many reward cycles. The blockchain would not halt; instead, it would continue its operation to fulfill all withdraw requests while the BTC is seemingly inaccessible to Stackers. PoX payouts and @@ -801,9 +871,9 @@ This SIP can activate in one of the following ways: ## Concurrent with SIP-021 -If the implementation of this SIP is ready and merged to the `master` branch -of the Stacks blockchain by the time SIP-021 activates, then this SIP also -activates. +If the implementation of this SIP is ready and merged to the default branch +of the reference Stacks blockchain implementation by the time SIP-021 activates, +then this SIP also activates. ## As a Future Hard Fork @@ -913,3 +983,14 @@ period. Suppose his Stacks address is The reference implementation of this SIP is being developed in https://github.com/stacks-network/stacks-blockchain. + +[SIP-001-LINK]: +https://github.com/stacksgov/sips/blob/main/sips/sip-001/sip-001-burn-election.md +[SIP-002-LINK]:https://github.com/stacksgov/sips/blob/main/sips/sip-002/sip-002-smart-contract-language.md +[SIP-007-LINK]: +https://github.com/stacksgov/sips/blob/main/sips/sip-007/sip-007-stacking-consensus.md +[SIP-021-LINK]: +https://github.com/stacksgov/sips/blob/main/sips/sip-021/sip-021-nakamoto.md +[WSTS_GITHUB]:https://github.com/Trust-Machines/wsts/ +[HOW-STACKING-HELPS-THE-NETWORK-GIST]: +https://gist.github.com/jcnelson/802d25994721d88ab7c7991bde88b0a9 \ No newline at end of file From 32a7c7608ca291c533de3c7cbaae0780f35e2571 Mon Sep 17 00:00:00 2001 From: AshtonStephens Date: Thu, 2 Nov 2023 12:03:47 -0400 Subject: [PATCH 9/9] title change and nits --- sips/sip-025/sip-025-sbtc.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sips/sip-025/sip-025-sbtc.md b/sips/sip-025/sip-025-sbtc.md index f589a46f9..1e0836915 100644 --- a/sips/sip-025/sip-025-sbtc.md +++ b/sips/sip-025/sip-025-sbtc.md @@ -2,7 +2,7 @@ SIP Number: 022 -Title: A Trust-minimized 2-way Bitcoin Peg for Stacks +Title: sBTC: Design of a Decentralized Two-way Peg for Bitcoin Authors: * Aaron Blankstein @@ -20,7 +20,6 @@ Authors: * Jude Nelson * Marvin Janssen * Mike Cohen -* Mike Cohen * Sayak Chatterjee * Stjepan Golemac * Tycho Onnasch