Stacks 2.0: Proof of Transfer rolled out on testnet

As announced in today’s blog post, we’ve reached the Krypton phase, with Proof of Transfer (PoX) live on the testnet! With this milestone, 90% of the design for Stacks 2.0 has now been implemented and released. The next milestone will focus on testing Stacks 1.0 → 2.0 upgrades; integration and testing with the Bitcoin testnet; and porting and compatibility for the Blockstack Naming System (BNS).

This release was many months in the making - not only does it include the PoX implementation, we also released new Clarity features, a developer preview of the Stacks Blockchain API, a completely revamped documentation system, and improved transaction support inside available libraries. Read on to dive into the details of each project.

We can’t wait to see what you will start building. Join our Discord and tell us what you think of this release! Please also participate in our bounty program by disclosing bugs you may find.

Proof of Transfer (PoX)

PoX is a consensus mechanism that leverages the security and stability of Bitcoin to create a new blockchain, without modifying the Bitcoin protocol. With the PoX mechanism, miners use Bitcoin to secure the Stacks 2.0 network.

Start mining Stacks (STX) tokens

PoX makes it also possible to reward Stacks token holders with bitcoins, a feature called Stacking. With Stacking, Stacks (STX) token holders lock up STX tokens for a certain time. With that, they help secure the network by effectively acting as validators on the network, incentivizing honest behavior on the part of miners. We are currently working on a Stacking guide - stay tuned! In the meantime, if you want to get your hands dirty with Stacking and don’t mind some rough edges, feel free to try out the stacking runbook.

Try the stacking runbook

Transactions

The Stacks 2.0 Transactions JS library now fully supports generation, serialization, and broadcasting of all transaction types. The latest version also supports sponsored and multi-signature transactions!

Build Stacks 2.0 transactions

You can also use Connect to authenticate users and let them sign transactions, without having to handle private keys. The last version of Connect can be used within any JS-based app, thanks to StencilJS.

Add transactions signing

Clarity

The Clarity smart language was extended with string types (string-ascii and string-utf8) to better support use-cases that require strings, not buffers. Next, new primitives for signature verification were provided (secp256k1-verify and secp256k1-recover). This feature enables, among other things, building Oracles on Clarity. Finally, a native square-root function (sqrti) was released to support accurate square-root computations for use-cases like a DEX.

Learn more about Clarity

Stacks 2.0 Blockchain API (Developer Preview)

The Stacks Blockchain API is a hosted NodeJS server that exposes a RESTful JSON API, making it easy to host, extend, and integrate with the Stacks 2.0 blockchain (see full announcement). It enables you to receive updates for user transactions, call smart contracts, fetch updates for Stacks accounts, and access and broadcast blockchain transactions.

Check out API references

The project is defined using the OpenAPI specification and comes with a generated JavaScript library with full type support.

Try the JS client library

Documentation

The documentation system was rebuild (see full announcement) to improve UX, performance, and search functionality. The new docs set us up to have interactive components (thanks for NextJS) inside the docs.

Try the new docs

Apart from technical updates, the new docs come with overhauled content like new guides and tutorials.

→ Check out the stacks integration guide for wallet and exchange builders

Tell us what you think on Discord or by replying to this thread.

8 Likes

Huge shout out to the Blockstack PBC and Stacks Foundation team members and open source developers who made it happen! :raised_hands:

3 Likes

Highlighting some Q&As that came up recently on PoX Parameters:

  • block reward: described in this forum post and detailed in this spreadsheet. Summary is 1000 STX/block for first 4 yrs; 500 STX/block for following 4 yrs; 250 for the 4 yrs after that; and then 125 STX/block in perpetuity after that.
  • block time: Stacks blockchain produces blocks at the same rate as the underlying burnchain. Bitcoin blocks are produced roughly once every 10min, so that will be the rate for Stacks 2.0 mainnet.
  • block reward maturity window: 100 blocks, meaning if a miner wins a block, they will earn the coinbase reward for that block after 100 blocks have elapsed.
  • Stacking parameters: 2 reward addresses / block; reward cycle 2000 blocks (~2 weeks) for a total of 4000 reward slots. Once this PR is merged, SIP-007 will reflect these choices.
  • Stacking threshold: also as described in SIP-007. Basically the threshold is 0.025% of the participating amount of STX when participation is between 25% and 100% and when participation is below 25%, the threshold level is always 0.00625 of the liquid supply of STX.

Feel free to ask any further questions here or follow the discussion on GitHub!