- 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
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:
- Finished support for calculating the cost of analyzing a Clarity Smart Contract in the Stacks 2.0 testnet, issue is now in QA. This makes analysis of any contract a fixed fee for testnet participants. → Details on Github
- Mempool admission check in review → Details on Github
- Clarity syntax improvement (for expressing tuples), PR by a community member! → Details on Github
- Logging cleanup → Details on Github
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.
Here are some highlighted technical updates from this past week:
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 .
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.
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.
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
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.
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.
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.
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.
Jump into the Discord channel (#hackathons) or reply to this email if you have any questions.
See you in there!
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
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.
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
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
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
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
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.
July 21, 2020
7 Weeks in to Argon
It was another productive week, resulting in an abundance of various Github updates related to Stacks 2.0. If you need a refresher on all the happenings around the Argon phase, remember to check out this blog post from Blockstack PBC’s Head of Engineering, Diwaker Gupta. Additionally, there are still a host of testnet bounties up for grabs if you’re interested in uncovering bugs and earning bitcoin.
Here are the highlights from the last week:
- The trait-alias syntax was incorrectly being processed as a JSX element in documentation. It has been reformatted as in-line code and will no longer cause issues with rendering of content. → Github
- A PR has been merged to stacks-blockchain that improves RPC deserialization error reporting. Previously, if the RPC handler failed while parsing a request from HTTP to a RequestType, the RPC server would return a 400 error, empty HTTP body, and some not very friendly error messages. This PR adds a test for that case, as well as introducing an error handling scheme. → Github
- A helper function that validates addresses found it’s home in stacks-transactions-js this week. In addition, an optimized c32address validation function is being developed to avoid the relatively expensive process of a throw/try/catch. → Github
- Removed a stacks-blockchain dependency on the byteorder package. We only used the byteorder crate for parsing little-endian integers in the vendored bitcoin crate. There is already code that does this, and the package was causing build failures on Windows. It also had unsafe code and limited benefit, so we just wrote the bits we needed and got rid of the dependency. → Github
- The transaction signing documentation has been updated for testnet release. This removes the special configuration for using transaction signing since we’re merging this functionality into master. It also adds guidance about its usage on testnet. → Github
- More guidance on checking a transaction’s status when using Blockstack Connect has been added to the docs. There is now more info on using the Stacks Blockstack API to request the status of the transaction. The API will respond with a JSON object that includes a tx_status field. → Github
- The guidance in the docs for the sendToSignIn has been corrected to accurately reflect the result of boolean value being true or false. → Github
- Last but not least, there are a whole bunch of Proof-of-Transfer refactoring pull requests under review as we work towards its integration into the testnet.
- This PR is introducing the ChainsCoordinator - the structure in charge of updating the chain’s states and consensus for each new Block / BurnchainBlock. → Github
- This PR brings the refactor of StacksChainState, Stacks Block DB, and the stacks header hash cache. It does so by systemically changing the way we index Stacks blocks, from using burn_header_hash/block_hash to consensus_hash/block_hash. → Github
8 Weeks in to Argon
Another exciting week of technical updates for Stacks 2.0 as the protocol continues to mature. For an in-depth description of the current testnet phase, check out this forum post from Diwaker Gupta, Blockstack PBC’s Head of Engineering.
In short, the testnet hit some road bumps last week and encountered reliability issues. Fixes required a handful of resets throughout the week, so we appreciate your patience as the issue was debugged.
Reminder: There are a multitude of bounties available for uncovering bugs in the codebase or building tools that help other developers. → Bounties
Here are highlights from the past week:
- A monster, high-priority fix was applied to trie_ancestor_hash_bytes_cache usage in MARF. This PR corrects an error in the MARF storage that would lead to invalid states. Debugging was led by Aaron Blankstein (Blockstack PBC) and Jude Nelson (Stacks Foundation) — they discovered that the cache needed to be cleared whenever there is a change in the open block. → Full Post-Morten
- Functionality was added that allows easier detection of MARF corruption. This PR adds a high-level testcase in which we confirm that it is possible to render a StacksChainState in an unusable state. It also adds another low-level tool to blockstack-core to replay a chainstate’s blocks and sortitions. → Github
- The DevEx team has started monthly testing with developers never previously exposed to Blockstack in order to evaluate documentation and tutorials. Thanks to this feedback, numerous fixes were applied to reduce obstacles and improve experience. → Github
- Additional features were added to the Explorer Sandbox. Logging in with Blockstack Connect is now available, Sandbox UI has been improved, and minor performance tweaks were pushed. → Github
- Fixed an issue in stacks-transactions-js that caused the broadcastTransaction function to return transaction ID incorrectly formatted with quotes. → Github
- A big shoutout to community member PSQ for his efforts identifying bugs, fixing typos, and cleaning up repositories. This week there was a fantastic discussion around bad nonce output messages. → Github
- PSQ also helped fine-tune the reward ratio decrease per cycle.
- Helpful debug symbols were added to our release profile, plus improvements to debug logging. → Github
- A PR was merged to stacks-blockchain-api that requires an account property in order to check account balance. → Github
- DevEx extraordinaire Alex Graebe did his Sidecar chores this week and added improved docs for core node, address, and search endpoints, better document request and response fields, and a “Run in Postman” button. → Github
- ICYMI - The sidecar repository has been renamed to stacks-blockchain-api for better recognizability. → Github
- A PR was merged that added the literal type pending to MempoolTransactions, facilitating union types. → Github
Again, a huge thank you to everyone experimenting with the testnet! The MARF bug this week is a perfect example of why your efforts are so valuable — this bug was impossible to reproduce locally or in any other environment, only manifesting when someone was mining invalid blocks and a specific sequence of events was triggered.