This post describes the proposed process for upgrading Stacks 1.0 nodes to Stacks 2.0. If you currently operate a Stacks 1.0 node, or plan to mine on Stacks 2.0, please read carefully and provide any feedback in the comments below!
Goals of the upgrade process:
- Accurate: all relevant data from Stacks 1.0, especially accounts, balances, locks, vesting schedules must be correctly preserved in the upgrade process.
- Decentralized: the upgrade should be triggered by independent miners expressing interest to mine on Stacks 2.0. No single entity, especially PBC, would have control on the precise timing.
- Predictable: especially considering the point above, the upgrade process should provide predictability to users, developers, miners, exchanges and other stakeholders in the ecosystem on the mechanics of the upgrade process once the threshold for “sufficient miner interest” has been met.
Proposed upgrade process:
Registration: all prospective miners SHOULD register a Stacks ID on Stacks 1.0 under a dedicated namespace (say
Threshold Trigger: the Stacks 1.0 software will watch the
.minernamespace, and once there are at least 20 IDs registered in the
.minernamespace, it will trigger a countdown for the export step below.
- Stacks 1.0 Export: 300 Bitcoin blocks (~2 days) after the threshold trigger, the Stacks 1.0 software will generate a snapshot of the Stacks 1.0 chainstate. No new transactions will be accepted after this point, though nodes might still serve read requests.
- Import into Stacks 2.0 genesis: Stacks 2.0 software will import the exported snapshot from the above step to instantiate the Stacks 2.0 genesis block. The Stacks 2.0 chain will go live 300 (~2 days) Bitcoin blocks after the threshold trigger (so 300 blocks after the export step). Note that this means there’s going to be a “dead time” of ~2 days during which no new Stacks 1.0 transactions would be admitted and Stacks 2.0 would not have launched yet.
The 300 block window between Stacks 1.0 import and Stacks 2.0 genesis events would be useful for node operators and miners to do adequate testing and validation to ensure a correct and orderly Stacks 2.0 launch. This number is subject to change as we gather feedback from node operators and community members.