What to expect when you’re launching the Stacks 2.0 mainnet?

After 2+ years of development and ~8 months of testing, Stacks 2.0 mainnet is scheduled go live later this week! The high-level launch process is similar to what was first proposed back in November and we shared a more granular plan two weeks ago. I wanted to share some more details of what to expect in the coming days, and immediately post-launch.

  • The activation threshold of 20+ names registered in the .miner namespace was met at BTC block 665250
  • January 12th (Tuesday): As outlined here, the legacy Stacks 1.0 chain will “freeze” (stop accepting any new transactions) at BTC block 665750. Depending on the exact block intervals, we anticipate this happening sometime between 10am and 4pm ET tomorrow, January 12th (Tuesday). Stacks 1.0 nodes will also generate an export of all Stacks 1.0 state (excluding transaction history) and all further transactions will be rejected.
  • January 13th (Wednesday): A Github workflow will automatically generate a PR on the stacks-blockchain repo to embed this exported chainstate in Stacks 2.0 (here’s an example of what this PR would look like). The exported chainstate will also be validated for accuracy and integrity, including a comprehensive automated suite described here.
  • After adequate testing and validation, a “mainnet-release” will be tagged with version 2.0.0 and made available on the releases page, likely by end of day on January 13th or early on January 14th.
  • January 14th (Thursday): The “mainnet-release” will also set the “first burn block” height to 666050 — this means that the stacks-node software will only start processing Bitcoin blocks starting at block 666050. Depending on the exact block intervals, we anticipate this happening sometime between 6am and 8pm on January 14th. All of the Stacks 1.0 exported state will be automatically incorporated into the Stacks 2.0 genesis block.

While Stacks 2.0 code has undergone significant testing (public testnets running for ~8 months; multiple security audits; bug bounties), like any complex software (~200K lines of code!) and protocol, there can be latent or emergent bugs (remember the early days of Bitcoin and Ethereum).

Below is a proposal for dealing with any CRITICAL issues post-launch: critical meaning there’s active or imminent threat to the network security or assets. For everything else, follow the SIP process (outlined in SIP-000).

Category Expected Remediation Communication Channel
Critical but non-consensus-breaking updates

e.g. a crash on the networking path
The Stacks Foundation, working with Stacks core developers, will publish a new release on Github.

Anyone running a Stacks 2.0 node SHOULD upgrade. This would be just a routine software update, no impact to chainstate.
- New release on Github is authoritative source of truth. We’ll be using semver, so there should be no major version bump.
- Announcement in #mining on Discord, as well as on Forum and Twitter.
Critical, consensus-breaking updates

e.g. an exploit is discovered in PoX or Clarity
The Stacks Foundation, working with Stacks core developers, will publish a new release on Github.

Anyone running a Stacks 2.0 node MUST upgrade. This will be a hard-fork of the chain.
- New release on Github is authoritative source of truth. We’ll be using semver, so there will be a major version bump.
- Announcement in #mining on Discord, as well as on Forum and Twitter.

In the first month or two immediately post launch, miners should anticipate and be prepared to (frequently) upgrade their nodes to:

  1. Incorporate fixes for critical issues in the first category.
  2. Incorporate regular updates that are not-critical, but still useful: for instance, improvements in logging, configuration management, monitoring etc.

We strongly encourage anyone running Stacks 2.0 nodes to subscribe to the stacks-blockchain releases Github:

Thanks for your support, and we’ll see you on Stacks 2.0!

6 Likes

Thanks, Diwaker for putting this together! Super helpful :pray:

2 Likes

Updates:

  • As planned, Stacks 1.0 stopped accepting new transactions at BTC block 665750.
  • Stacks 1.0 state was exported as of that block. A publicly verifiable snapshot is available here – anyone running Stacks 1.0 can also independently generate an identical export.
  • A PR to import that chainstate into Stacks 2.0 is currently under review and validation.
  • A “mainnet-release” of the Stacks blockchain will NOT be available until after BTC block 666050. Appreciate your patience until then, thanks!
1 Like

Further update that Stacks mainnet launched successfully earlier!

See this Hacker News thread for more discussion: Smart contracts on Bitcoin | Hacker News

1 Like