This repository has been archived by the owner on Dec 4, 2024. It is now read-only.
generated from stacks-network/.github
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update roadmap with changed scope for 01 release (#75)
* wip: Updated release page * wip: Working on roadmap update * feat: Roadmap page updated * feat: Updated DR docs
- Loading branch information
Showing
6 changed files
with
89 additions
and
182 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +0,0 @@ | ||
# sBTC Alpha | ||
|
||
Explanation of what the purpose of sBTC Alpha is and how it differs from sBTC. | ||
|
||
TODO: [#12](https://github.com/stacks-network/sbtc-docs/issues/12) | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,110 +1,25 @@ | ||
# sBTC Developer Release (0.1) | ||
|
||
## Introduction | ||
|
||
The sBTC Developer Release implements a subset of the sBTC protocol. It aims | ||
to come as close as possible without requiring a hard fork. The Developer | ||
Release is implemented as a decentralized stacking pool on Stacks 2.4 that distributes rewards in sBTC. It means sBTC is secured by the locked STX in the stacking pool. | ||
|
||
The Stacking pool can have at most 100 members. It is active only if the stacked amount is 1 million STX or more. The minimum required locking amount for pool members is 10,000 STX. The pool can be joined by anyone as long as there are slots available. | ||
|
||
Pool members are responsible managing a Bitcoin wallet that backs sBTC. They are responsible for handling deposits and withdrawals of Bitcoin to and from the wallet with the following exceptions: | ||
|
||
- Bitcoin withdrawal requests can only be submitted as a Stacks transaction. The full release of the sBTC Protocol will also allow withdrawal requests to be submitted as a Bitcoin transaction. | ||
- Deposits and withdrawals are frozen while the pool is inactive. | ||
|
||
## Caveats | ||
|
||
As the name implies, this is a developer release of the sBTC Protocol. Its purpose is to validate certain aspects of the protocol design; namely, the process of jointly managing a Bitcoin wallet by means of a threshold scheme, the ability to verify Bitcoin transactions in Clarity, to mint and burn sBTC based on those transactions, and to manage the hand-off process. Signer incentives are not aligned with those of the full version of the sBTC Protocol. The benevolence of the Signers is assumed and only minor penalisation for bad behaviour exists. **The Developer Release should therefore not be used on mainnet.** | ||
|
||
## Components | ||
|
||
The sBTC Developer Release is made up of multiple on-chain components. These components can be logically divided into the following groups: | ||
|
||
1. Controller | ||
2. Registry | ||
3. Token | ||
4. Deposit | ||
5. Withdraw | ||
6. Pool | ||
7. Hand-off | ||
8. Bitcoin library | ||
|
||
### Controller | ||
|
||
The controller is a single Clarity smart contract that manages which other contracts are part of the protocol. The other contracts use the controller for access control. The controller also exposes a pathway to upgrade the protocol by changing the access list. | ||
|
||
### Registry | ||
|
||
The registry contract functions as the main storage space for the protocol. The other components use the registry to store protocol state. It is intended to allow for more seamless upgrades by keeping the registry the same across future soft upgrades. | ||
|
||
TODO [#39](https://github.com/stacks-network/sbtc-docs/issues/39): List the things the registry stores and why, also how those things are updated. Pay special attention to the get-and-update function. | ||
|
||
### Token | ||
|
||
The sBTC token is implemented as a SIP-010 fungible token. It uses the controller for access control so that the sBTC Protocol contracts may mint and burn sBTC tokens. | ||
|
||
### Deposit | ||
|
||
The deposit contracts verify Bitcoin deposit transactions. They trigger an sBTC mint to the recipient found in the Bitcoin transaction. The transaction format is described in the [section on Bitcoin transactions](../sbtc-operations/bitcoin-transactions.md). | ||
|
||
TODO: [#41](https://github.com/stacks-network/sbtc-docs/issues/41): Explain how deposits are processed. Link back to BTC transaction structure and minimum confirmations required. | ||
|
||
### Withdraw | ||
|
||
The withdrawal contracts process withdrawal requests and verify Bitcoin withdrawal transactions. | ||
|
||
Withdrawal requests start on Stacks. However, an sBTC holder that does not own any STX can still sign a Stacks transaction and pay transaction fees in sBTC. The protocol exposes a mechanism to submit the withdrawals by means of a sponsored Stacks transaction. The sponsor will then receive an amount of sBTC in return for sponsoring the transaction. A sponsor can decide to sponsor the transaction if they find the fee acceptable. | ||
|
||
TODO [#42](https://github.com/stacks-network/sbtc-docs/issues/42): Explain steps and how redemptions are processed. Link back to BTC transaction structure and minimum confirmations required. Explain more what the process looks like. | ||
|
||
### Pool | ||
|
||
The sBTC Stacking pool proper that allows Stackers to participate in the sBTC Protocol. Stackers will participate in the distributed key generation scheme and individually vote on the next Bitcoin wallet address to use. They vote by locking their STX for the next cycle. | ||
|
||
TODO [#43](https://github.com/stacks-network/sbtc-docs/issues/43): Is it deserving of a sub page? Will be a lot of information here on how to use the Stacking pool and voting. | ||
|
||
### Hand-off | ||
|
||
The contract that verifies that the hand-off to the next Bitcoin wallet was done properly. | ||
|
||
TODO [#44](https://github.com/stacks-network/sbtc-docs/issues/44): Mostly automated, the Signer binary (or who?) will submit hand-off proof Stacks transaction. | ||
|
||
### Bitcoin library | ||
|
||
The helper library that makes it easier to decode and interpret Bitcoin transaction in Clarity. Any component that receives Bitcoin transactions uses this library. It is an adapted version of an earlier open source library [link and attribution here]. | ||
|
||
## Contracts | ||
|
||
[Does this section go here? It will be a long document.] | ||
|
||
The sBTC Developer Release consists of the following contracts: | ||
|
||
[list here.] | ||
|
||
|
||
## API | ||
|
||
[List of public functions that downstream apps should use] | ||
|
||
|
||
## Events | ||
|
||
[Auto-generated list of events based on latest tagged release.] | ||
|
||
## Errors | ||
|
||
[Auto-generated list of errors based on latest tagged release.] | ||
|
||
## Running sBTC Developer Release | ||
Detailed instructions can be found on the [bootstrap](./sbtc-dev/bootstrap.md) page. | ||
|
||
A simple flow is described on the [simple flow](./sbtc-dev/simple-flow.md) page. | ||
|
||
## Things we need to formulate | ||
|
||
- Bootstrapping question, when is the protocol viable? | ||
- What if the signers process a peg-in it anyway while in a bad state? Do we care? | ||
- Testnet controller so we can put the protocol in a state so we can test stuff on testnet. | ||
|
||
|
||
The sBTC Developer Release (sBTC DR) facilitates the complete deposit and withdrawal processes of sBTC, simulating the core mechanics of the sBTC system in the form of a singular service. | ||
|
||
This release includes an asset contract alongside a dedicated binary. Primarily designed for use on testnet or local development networks. While it's technically possible for anyone to deploy the sBTC DR on the mainnet, it's not recommended due to its developmental nature. | ||
|
||
Upon activation, the sBTC DR binary takes charge: it deploys the asset contract and actively monitors sBTC operations. When a deposit request comes in, the system mints the corresponding sBTC tokens to the specified address. Similarly, upon a withdrawal request, it burns the requisite sBTC tokens and promptly processes the withdrawal, transferring the designated BTC amount to the intended recipient. | ||
|
||
```mermaid | ||
graph TD; | ||
A[User] --> B[Deposit Request]; | ||
A --> C[Withdrawal Request]; | ||
D[sBTC DR Binary] --> E[Asset Contract Deployment]; | ||
D --> F[Listen to sBTC Operations]; | ||
B --> G[Mint sBTC Tokens]; | ||
C --> H[Burn sBTC Tokens]; | ||
H --> J[Send BTC to Recipient]; | ||
classDef userStyle fill:#f9d457,stroke:#f28482; | ||
classDef operationStyle fill:#bee3db,stroke:#2a9d8f; | ||
classDef processStyle fill:#f4a261,stroke:#e76f51; | ||
class A userStyle; | ||
class B,C operationStyle; | ||
class D,F,G,H,I,J processStyle; | ||
class E operationStyle; | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,3 @@ | ||
# sBTC 1.0 | ||
|
||
Previously known as sBTC MVP. This is the first consensus-breaking release of sBTC. | ||
|
||
TODO: [#14](https://github.com/stacks-network/sbtc-docs/issues/14) |
Oops, something went wrong.