Weekly Stacks 2.0 Progress Thread

Each week progress on Stacks 2.0 will be published below:

2.24.2020

  • Proposed an update to SIP-007 that would make the threshold level of STX holdings required to participate in Stacking dependent on the level of participation. The update also includes a time-windowing proposal for Proof of Transfer. → Details on Github
  • Implemented the Clarity Smart Contract traits to enable Dynamic Dispatch, and the issue is now under review to be merged. → Details on Github
  • Finished an issue to enable transactions to be stored that are received from the peer test network. This will allow a transaction mempool on the upcoming STX Mining test net. → Details on Github
  • The team is currently considering building support for pooling/delegation for stacking as a native feature of the protocol. This could remove the need to give up custody or use a smart contract to pool. We are still very early in this process, and if we do decide to build any delegation capability we will first circulate a SIP with details.

To receive updates on Stacks 2.0 Progress and the upcoming launch of the STX Mining and Stacking test net, sign up for the PoX mailing list here

Important disclaimer

Blockstack PBC is not registered, licensed, or supervised as a broker dealer or investment adviser by the Securities and Exchange Commission (SEC), the Financial Industry Regulatory Authority (FINRA), or any other financial regulatory authority or licensed to provide any financial advice or services.

Forward-looking statements

This communication contains forward-looking statements that are based on our beliefs and assumptions and on information currently available to us. In some cases, you can identify forward-looking statements by the following words: “will,” “expect,” “would,” “intend,” “believe,” or other comparable terminology. Forward-looking statements in this document include, but are not limited to, statements about our plans for developing the platform and potential mining operations. These statements involve risks, uncertainties, assumptions, and other factors that may cause actual results or performance to be materially different. We cannot assure you that the forward-looking statements will prove to be accurate. These forward-looking statements speak only as of the date hereof. We disclaim any obligation to update these forward-looking statements.

2 Likes

3.2.2020

  • The update to SIP-007 is in QA Review. This would make the threshold level of STX holdings required to participate in Stacking dependent on the level of participation. The update also includes a time-windowing proposal for PoX. → Details on Github
  • The team finished implementing dynamic cost tracking for runtime and analysis for the Clarity VM. The SIP this is included in can be seen in detail here.
  • The team is working on an issue that enables the Genesis Block of the Stacks 2.0 test net, which will better enable testing token transfers on test net. → Details on Github
1 Like

Thanks @xan

3.9.2020

  • Addition of native support for Stacking Delegation to SIP-007: This will allow any STX Holder to delegate the requirements to Stack to a third party, without losing custody or making a transfer of their STX Tokens. This may lower the barrier for individuals to build delegation services for STX Holders and for institutional providers to integrate them.
    Details on Github

3.16.2020

Stacks 2.0 Weekly Update: Testnet Coming Soon!

Welcome back, this week’s edition is particularly exciting as there are new details available on the upcoming launch of the public Stacks 2.0 tesnet. Projected for the week of March 30th, the testnet will operate in several phases in preparation for a successful mainnet launch.

→ Learn more about the Stacks 2.0 testnet in this forum post.

Keep watching these updates for new information, we’ll be sending important information leading up to the testnet going live and you’ll receive a notification when it’s publicly accessible.

In addition to working on the testnet, here is what the Stacks blockchain developers have been focused on this past week:

Welcome back to the weekly update on the anticipated Stacks 2.0 protocol upgrade, including PoX. Please be sure to join the Blockstack Community Townhall on March 25th (9:30am EDT). The focus will be the soon-to-launch Stacks 2.0 testnet previewed in this post last week.
→ Register

Here are some highlighted technical updates from this past week:

2 Likes

3.30.2020

Welcome back to the weekly update on the anticipated Stacks 2.0 protocol upgrade, including PoX. The biggest update is that the STX Mining testnet launch has been pushed back to the middle of April. We will follow up with an exact launch date as soon as possible.

Here are some highlighted technical updates from this past week:

  • Merged a PR to implement admission checks for transactions into the testnet mempool. This will enable checks to ensure transactions are parsed correctly, have paid fees, paying accoutns have enough funds, and more. The full PR can be seen here.
  • PR for block downloader in review. Right now, nodes will already handshake with one another and fetch the other’s neighbors to build a view of the peer graph. This PR extends this to asking those neighbors for block inventories, and to fetch blocks it does not know about from neighboring inventories via HTTP, and implements a DNS resolver that the p2p network thread can issue requests to and from. The full proposal can be seen here.
  • Proposed a refactor of Clarity Values in order to better represent Clarity Values with Typescript. The full proposal can be seen here .
  • A transaction page for the Stacks explorer has been proposed and is currently a work in progress. The full proposal can be seen here .

4.6.2020

Welcome back to the weekly update on the anticipated Stacks 2.0 protocol upgrade, including PoX. Here are some highlighted technical updates from this past week:

  • Implemented events and improved the developer experience for testnet. This includes the addition of a socket in local testnet, testnet genesis block configuration, and an upgrade of logs to show artifacts of executed transactions. The full PR can be seen here .
  • Implemented block downloader logic. Now, once a node has neighbors, it will ask them for their block inventories, then confirm blocks it does not already know via HTTP. The full PR can be seen here .
  • Merged a PR to enforce memory limits on Clarity Smart Contract run time. The full PR can be seen here.
  • Added the ability to specify post conditions when building the following transaction types: 1) STX token transfers 2) Contract deploys 3) Contract function calls. The transaction builder API has also been refactored to use an options object for some parameters to make it easier to use. The full PR can be seen here.

4.14.2020

Welcome back to the weekly update on the anticipated Stacks 2.0 protocol upgrade, including PoX. Here are some highlighted technical updates from this past week:

  • Added support for contract Principals in token transfer transactions. Principals are a Clarity native type that represents a spending entity. Previously, the token transfer transaction type only supported transferring tokens to another STX address, but not to another contract. This removes that limitation. Documentation on Principals is here and the merged PR is on Github.
  • Proposed a PR that sets an initial/draft block limit for the testnet. This is the maximum number of operations per block, or, put differently, the total amount of computation and storage that can be performed in a single block. This will change as we get closer to mainnet due to real data, but the limit is initially determined using benchmarks detailed in the PR on Github.
  • Proposed a PR to implement the transaction mempool and block, microblock, and relay logic. A microblock is essentially a single transaction that becomes an addendum to a block. The full details of the 4 inter-related changes this PR makes can be seen on Github.
  • Proposed a PR to add the ability to broadcast transactions to the network, which will be essential for the testnet. The full details can be seen on Github.

4.20.2020

Welcome back to the weekly update on the anticipated Stacks 2.0 protocol upgrade, including PoX. We’re only a few days away from the launch of the testnet! Here are some highlighted technical updates from this past week:

  • Added a code of conduct to the stacks-blockchain repo. It’s highly recommended everyone read this heading into the testnet period. View and comment on Github.
  • Merged a PR to implement the transaction mempool and block, microblock, and transaction relay logic for testnet. This will make it possible to see and use transactions from the mempool to propose a block to mine, as well as adding the necessary support for blocks and microblocks to occur and that information be relayed to the rest of the network. The full issue can be seen on Github.
  • Merged PRs to make it easier to find and analyze transactions on testnet. These included fixing how meta tags are managed to improve accessibility, adding a ‘transactions not found’ component, and adding a transaction page header.
  • Made improvements to performance and concurrency issues with the on-disk representation of chain state. → More on Github
  • Reviewing work that addresses a host of networking performance related issues for testnet. → More on Github
  • Updated Clarity documentation, find the latest docs here.

Join the Community Townhall on April 24th to learn more about the anticipated Stacks 2.0 testnet, ask questions, and connect with the global community → RSVP

1 Like

4.27.2020

Welcome back to the weekly update on the anticipated Stacks 2.0 protocol upgrade, including PoX. The Neon phase of the testnet went live last week. Here are some of the highlighted technical updates and fixes from the first week of Neon:

  • Added a better Genesis sequence and improved Verifiable Random Function key management for the testnet. This will help the first block to be mined more easily and allow testnet STX Mining to begin. The full PR is on Github.
  • Improved block relay and download performance. The full PR is on Github.
  • Fixed an issue with how Neon nodes were generating block commits. In particular, the miner would send bad commits if a sortition was missed and then never recover. The full PR is on Github.
  • Added the ability to broadcast transactions to the Neon network. The full PR is on Github.
  • Added support for finding a Clarity smart contract by searching for the transaction ID on the test network. The full PR is on Github.
  • Additional initial bug fixes related to the Neon testnet can be seen here.

Visit testnet.blockstack.org to get started on Neon Testnet and run a Stacks Node.

5.5.2020
Mining Coming Soon!

Welcome back to the weekly update on the anticipated Stacks 2.0 protocol upgrade, including PoX. The Neon phase of the testnet went live two weeks ago with work since focused on eliminating bugs and improving overall resiliency.

The team is now primarily focused on opening up mining for everyone (ETA a few days) and readying Argon, the next phase of testnet which will offer a working explorer and Clarity enhancements (tentative ETA, 1 week).

Here are some of the highlighted technical updates and fixes from the second week of Neon:

  • Improved transaction error messaging. This makes error responses better for programmatic usage. → Github
  • Made Neon nodes configurable as a miner/not-miner. This allows someone to start up a node specifically for the purposes of mining. → Github
  • Updated the transaction builder to automatically fetch the account nonce from a Stacks node if a nonce is not specified, making integration easier. → Github
  • Added support for strings to contract principals and asset info IDs, improving the developer experience. → Github
  • Added a fee estimate function to calculate the estimated fee of an STX transaction. This was also added to the Clarity Smart Contract builder, which will set fees automatically if not specified. → Github

Visit testnet.blockstack.org to get started on Neon Testnet and run a Stacks Node.

5.11.2020
Welcome back to the weekly update of the anticipated Stacks 2.0 upgrade, including Proof of Transfer (PoX). The Neon phase of the testnet went live three weeks ago, and we’re only a few days away from the launch of Argon (Phase 2).

Today, the major update is that STX Mining functionality has been added to the testnet!

During this phase, you’ll be able to try ‘basic Proof of Transfer’ mining, which works when miners transfer testnet Bitcoin to a burn address to earn testnet STX. This allows miners to test out basic functionality and serves as a prelude to full Proof of Transfer mining. A more complete version of testnet Proof of Transfer mining will be introduced in phase three, Krypton.

Prospective miners should try out STX Mining by first spinning up a node and then installing the STX Mining package.

Click here to get started testnet mining

2 Likes

5.19.2020
If you’ve been following these weekly updates, you know we’ve been uncovering and fixing issues on the Stacks 2.0 Testnet as they come up — especially reliability and performance issues. This is exactly what we hoped to accomplish with Neon and we thank everyone for testing, providing feedback, submitting bug reports, etc.!

Last week, testnet STX Mining was made available and more functionality is expected soon as part of Phase 2 (Argon). Stay tuned for more on that!

In the meantime, we wanted to make sure you didn’t miss the Clarity Hackathon. Submissions for the first phase of the hackathon can be submitted up until May 29th , so if you’ve been meaning to try out Clarity, now is a great time. You can submit up to 3 smart contracts, with a top prize of $1,000 up for grabs.

The Clarity Smart Contract language is one of the core pieces of the Stacks 2.0 upgrade, so it will be exciting to see what you build. If you’re not too familiar with Clarity yet, check out this introductory post or jump into the docs. There are also a number of workshops and new resources created for the hackathon that should be helpful whether you enter or not.

Learn more about the hackathon
Register

Jump into the Discord channel (#hackathons) or reply to this email if you have any questions.

See you in there!

1 Like

6.2.2020

Meet Argon and Earn Testnet Bounties

Welcome back to the weekly update of the anticipated Stacks 2.0 upgrade, including Proof of Transfer (PoX). This is a special edition of these updates as today, we’re excited to transition the Stacks 2.0 Testnet into Phase 2, codename Argon.

Thank you to everyone that’s been kicking the tires during the Neon phase over the past few weeks and helping to improve the network. We’re excited to keep moving toward a successful mainnet launch and for the improvements Argon offers.

So what’s new in Argon? (view the forum post for more detail)

Developer preview of the new Stacks 2.0 Explorer
Built with everything Stacks 2.0 in mind, this new explorer has several nifty Clarity specific features, including full source-code display with syntax-highlighting, inspecting post-conditions and more. → More detail

Better Clarity support in stacks-transactions-js
Most notably, the ability to broadcast transactions, upload contracts, call contract functions, specify post-conditions, and more! This will enable Javascript/Typescript applications (like web-based, Nodejs, etc.) to interact with Clarity smart contracts on Stacks 2.0.

Several stability and performance improvements
Stacks nodes can now tolerate forks of the underlying Bitcoin burnchain. This is crucial for the Stacks blockchain to be able to survive hard-forks and re-orgs of the underlying burnchain, and a requirement before we start integrating with the Bitcoin public testnet in a future phase.

Smart contract support in Blockstack Connect
Developers writing Clarity smart contracts can now empower their app users to sign transactions, bringing those contracts to life with real-world use cases. Give transaction signing a spin using the Blockstack Testnet Demo app.

Testnet Bounty Program
Last but not least, the testnet bounty program is now live! Earn rewards for identifying bugs or creating tools and resources. Bounties start at $100 USD (paid in BTC) and go up to $2,500 at present. We expect more to be added over time and there’s even an option to design your own bounty. Learn more in this forum post or view all bounties here.

Check out this forum post for a detailed breakdown of these updates.

6.18.2020

2 Weeks in to Argon

Welcome back to the weekly update on the anticipated Stacks 2.0 protocol upgrade, including PoX. The Argon phase of the testnet went live two weeks ago, along with the testnet bounty program, which rewards for finding bugs and building tools and resources around PoX.

Here are some of the highlighted technical updates and fixes from the previous week:

  • There was a lot of great conversation on the potential of storing traits in variables in Clarity without compromising decidability. Engineers worked closely with the Clarity Hackathon winner, PSQ, to introduce a ‘contract-of’ call which takes a trait as a parameter, and returns the contract principal that implements the supplied trait argument. → Github
  • This massive PR fixed a slew of networking related issues in the main stacks-blockchain repository. It fixed the net p2p failed walk throttle and cidr blocklist, and adds additional functionality to nodes in the network. A huge step in making Stacks 2.0 more stable. → Github
  • Updates to stacks-transactions-js that augments transaction broadcasting such that it returns a response instead of a string. If the response fails it will contain a TxBroadcastError. It also introduced a handful of custom error classes and changed the transaction broadcast API return type. → Github
  • Another PR was merged to stacks-transactions-js that allows buffers provided as contract-call arguments to be less than or equal to the size specified in the Application Binary Interface (ABI). → Github
  • To make feedback on the new Explorer more efficient, we added a feedback link to the footer, allowing anyone to quickly leave comments or bug reports via Blocksurvey. → Github

Development on Stacks 2.0 is really ramping up, and the next phase is laser-focused on Proof of Transfer and the Stacking mechanism. PoX is a massive technological undertaking, and engineers are heads-down in fleshing out the details and squashing bugs. Refactoring is inevitable, like this pull request that was just merged enabling generic MARFs in the ‘trie identifier’ and introducing a StacksBlockId type for capturing the index block hash. → Github

6.23.2020

3 Weeks in to Argon

Another week, another slew of Stacks 2.0 protocol upgrades and exciting Proof of Transfer (PoX) development. The Argon Testnet Phase is in its third week and we’re really excited to see the community starting to experiment with features and eliminate bugs. We’re offering BTC to anyone who gets friendly with the Blockstack Github and discovers a bug.

Blockchain performance has been promising, and recently reached it’s tallest chain height of 8k blocks. Here are a handful of highlights and technical updates from the last week:

  • A PR was merged that enables self-testing Clarity documentation, by setting up a docs-specific environment for executing the examples. It also fixed an implementation bug with try! error handling. → Github

  • A small change was made to stacks-transactions-js that renamed the makeSmartContractDeploy() function to makeContractDeploy to standardize naming conventions across the codebase. → Github

  • The implementation of contract-of was merged to the main branch, enabling devs to return the contract principal that implements a supplied trait argument. Shoutout to the community members who collaborated with Blockstack engineering to push this forward. → Github

    • Trait-inference was relaxed, allowing trait inference when a principal is being passed (as a literal) to a user defined function. → Github
  • In stacks-blockchain, the graceful termination limit was extended from 3 days to 7 days (From 8940 block height to 20460 block height). → Github

  • A fix was put in place for estimating contract deploy fees. Previously this was causing makeSmartContractDeploy fail when not specifying a fee. → Github

  • clarityRef.json was updated to latest version from stacks-blockchain and merged to main branch. → Github

6.30.2020

4 Weeks in to Argon

The testnet is growing up fast. We are now four weeks into the Argon phase, and thrilled to see all the tinkering and experiments being done with Clarity and the testnet. Don’t forget that we have whole set of bug bounties available for those that want to help build Stacks 2.0 and earn some Bitcoin.

Here are the highlights from the past week:

  • Added service for a Prometheus endpoint to stacks-blockchain for monitoring health and other statistics of network nodes. This is helps in gathering metrics like block processing time, peak node count, miner participation, and other fundamental blockchain benchmarks. → Github
  • Switched to u64 instead of u16 for block heights. This addresses various bugs such as mocknets crashing at a certain block height. Thanks to a community member for the suggestion! → Github
  • Check out the new Stacks Testnet Status Page where you can monitor the heath of the network. Anyone can now check the current status of the master node, Sidecar blockchain API, and explorer. There’s also some other useful details such as last chain tip block height, time since last chain reset, and estimated time until the next chain reset.
  • You can now specify initial STX balances with clarity-cli. Initially, the VM would start with 0 balances by default, which could add an unnecessary step during development. → Github
  • Various nonce fixes were applied to stacks-blockchain. These included uniqueness changes in the mempool sqlite table, which allow you to apply the unique property to individual elements instead of an entire tuple. This PR also enabled transaction chaining up to depth 5, as well as a myriad of other fixes that should alleviate indefinitely pending faucet transaction issues. → Github
  • A number of bug fixes were applied to the Explorer this past week. The speed for transaction generation was dramatically improved. Performance efficiencies were applied to ID generation & saving. Major design improvements were merged including the refactoring of components, tweaks to the sandbox redux state, and header enhancements. → Github
  • We’re hard at work overhauling documentation for Stacks 2.0 and all the new tech being rolled out this year. Unused/obsolete pages were removed, a single navigation bar was established, old static assets were removed, the reference page was cleaned up, materials for Blockstack Connect have been updated, and a new singular layout was standardized. → Github
  • Opened a PR for the ability to generate multi-signature transactions using stacks-transactions-js. This will enable partially signed transactions that can be passed on for additional signatures. → Github

7.7.2020

5 Weeks in to Argon

We’re currently a month and some change into the Argon phase of the testnet, and the tech gets more polished with every passing pull request and issue. We’re blown away by all of the community participation that is helping to stress test and mature the network.

Don’t forget there are a fleet of bounties available where you can earn Bitcoin for squashing bugs or building useful tools.

Check out some of the most important highlights to the codebase from the last week:

  • Fixes were applied that assist in debugging stalled nodes post-reset. The Argon master node’s p2p thread was stalling and ceased looping. This PR sets a panic handler to force the process to abort on thread panic. It also implements various top-level debugging messages that should greatly streamline network maintenance. → Github
  • The Clarity Hackathon Part 1 winner, PSQ, identified and corrected a handful of typos in the Stacks Improvement Proposals (SIP). → Github
  • PSQ also discovered a critical vulnerability in the blockchain repository that was distributing an incorrect block reward value. The arithmetic has been resolved, and the decaying block rewards function is back to operating as expected. PR has been reviewed and is ready to be merged to main upon the next chain reset. → Github
  • The Developer Experience team tested an implementation of the Github Project Board for project management this week. This allows them to visually track the completion of pull requests and issues from all our repositories. The project board is public and able to be viewed by anyone externally if you’d like to take a look at progress. → Github
  • A whole slew of fixes were applied to our new Stacks 2.0 testnet explorer. The page now auto-refreshes when transactions are pending, lighthouse integration was added to our Vercel account, a confirmation time error was resolved, contract generation issues in the Sandbox were solved, and transactions eliciting a “Failed to Fetch” error on Mocknet was due to instability with the node/sidecar and a solution was reached.
  • A slight change to stacks-transactions-js has been reviewed and is ready to be merged. This PR introduces a slight change to the cvToString() function. uInts are now serialized like “u10” instead of like “10”. Fixes a bug encountered when calling ft-get-balance. → Github
  • We’re excited to see tweaks to stacks-blockchain in preparation of Proof-of-Transfer! This past week, our engineering team began identifying refactoring that needs to be done to the codebase in order to migrate the Stacks 2.0 blockchain to the Proof-of-Transfer consensus mechanism. Still a lot of work to be done, but this is a promising first step. → Github
  • Reminder: Engineering calls are streamed weekly on Youtube

July 15, 2020

6 Weeks in to Argon

Another week, another batch of technical updates from the Argon phase as work continues toward Krypton (Phase 3)! The Stacks blockchain, JavaScript library, explorer, and docs pages are all improving with each iteration, and a handful of community members have stepped up with extremely beneficial contributions to the codebase.

You can get involved right now by taking on bounties for bug squashing, tool building, resource crafting, and even community enrichment.

Here are the highlights we’re most excited about from the last week:

  • BurnDB has been refactored to support Proof-of-Transfer (PoX). The previous BurnDB has become the SortitionDB, and entries in this database are identified by SortitionID . → Github
  • A lot of work was done to allow state representation of unanchored microblocks. This PR updates the MARF and Clarity DB so that it can both represent and persist a state that has not been confirmed by an anchored block. At the lowest layer, it adds an alternative way of loading and storing indexed data: unconfirmed Tries. It updates the MARF so that you can either begin() a new Trie as before, or begin_unconfirmed() . → Github
  • Dockerfile was updated to produce a stacks-node bin with Prometheus monitoring enabled. Before, it was compiling the stacks library with the monitoring_prom feature flag, but not cascading the flag to the stacks-node target. This resulted in the stacks-node code behind the feature gate not being checked / compiled / included. → Github
  • Related to monitoring, the team added a gauge for keeping track of active miners on the testnet. This is baked right into Prometheus, and will aid our ability to track testnet progress and miner interest. → Github
  • Various fixes were applied to the event dispatcher. We no longer want to suffix endpoints with a backslash, and will produce a parsing error when such a value is provided. Also included was a repair for a situation where content-type header was being added twice to a POST. → Github
  • Changes were made to stacks-transactions-js that exposes a few integral items from postconditions.ts . This will be used in integrating debug mode for transaction signing, which supports passing post conditions with Connect. In addition, the authenticator needs the PostCondition type, and client apps might need the post condition builders. → Github
  • Heads up: In the stacks-blockchain repo, we’re starting to use the pattern of merging any significant upgrades in the next branch instead of the master branch. The intention is that the next branch will be deployed on the next testnet reset, whereas whatever is in master is safe to run against what’s currently live on the testnet.
2 Likes