Weekly Stacks 2.0 Progress Thread

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

7/28/2020

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
  • 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.

1 Like

August 4, 2020

9 Weeks in to Argon

Hey there, Blockstackers. Another week of Stacks 2.0 testnet means a whole new set of development updates as we work towards Proof-of-Transfer, Stacking, and eventually a Stacks 2.0 mainnet launch!

In general, the team continues to be heads down with PoX development.

Resources:

  • new : A public tracker has been set up so you can easily follow stacks-blockchain progress on the upcoming phase (Krypton) of the testnet
  • Full description of the current Argon phase
  • Bounties are still available and we’re paying faster than ever - take a look!

Here are the most significant updates from the past week:

  • A PR was merged ensuring that the parent burn header hash is used to confirm that the latest burn block (seen by a miner when the block commit was produced) is the parent of the sortition in which that block won. → Github
    • This also fixed a regression problem for neon_node.rs in the next branch and alleviated a bug that was causing particular tests to time out due to a regression in the way a block’s parent’s header is loaded. → Github
  • Community member PSQ was the lead contributor to an updated implementation of withdraw-reward. He identified that it would be more efficient to directly credit miners without an additional transaction. → Github
  • When connecting peers using NAT, the “Confirm IP Address” step of the public IP-learning protocol was removed. Now, the IP-learning protocol just asks one of the initial seed nodes given to the peer DB for the peer IP address. → Github
  • A PR was merged that makes sure that all DB commits to the sortition DB and Stacks DB first commit their MARF-indexed values, and then commit their MARF tries. It removes a race condition where an indexed commit was superseding the full transaction commit, and was the root-cause of at least one observed thread of panic on the testnet. → Github
  • We are systemically changing the way we index Stacks blocks in preparation of Proof of Transfer. A PR was merged that begins the chainstate refactor for the transition. In doing so, Stacks blocks are unique to their PoX fork. This PR will not be compatible with the current Argon testnet. → Github
  • Various bug report templates were added to the stacks-transactions-js repo to allow for more formalized and categorized bug reporting. → Github
  • A PR has been merged that enables the construction of sponsored transactions where a second “sponsor” signer can pay the fees of a transaction signed by the origin. → Github
    • The stacks-blockchain-api has also been updated to enable sponsored transactions. → Github
  • A bug was fixed where an address’ STX balance value was not taking fees into account. Also, a new API for STX-only wallets which doesn’t perform queries on FTs/NFTs was added. → Github
  • A GH Action workflow was added to the stacks-blockchain-api repo which automates linting, testing, build, release & semantic versioning. → Github
  • A slew of updates have been applied to the Blockstack docs. In the pipeline is a new URL scheme, major image consolidation, retitling of pages, and helpful formatting fixes. → Github

In case you missed it: 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.

8.12.2020

10 Weeks in to Argon

It was another big week around the ecosystem with the Clarity Hackathon in full swing, Muneeb on the Edcon panel with Vitalik Buterin, and the first Stacks Ecosystem call hosted by the Stacks Foundation.

Proof-of-Transfer is currently the primary focus for implementation on the Stacks 2.0 Testnet. Feature updates and bug fixes are pouring in thanks to contributions from the community.

Check out the highest priority updates from the past week:

  • In addition to general documentation design overhaul, a Stacks 2.0 testnet status checker has been added above the navigation bar on various related documentation pages to assist with monitoring downtime. → Github
    • A status checker is also in the works for the testnet explorer. → Github
  • A PR was merged that allows more parameters to be configured via configuration file, and better default download_interval for mining on testnet. This should alleviate issues some users were encountering with bitcoin-test failure, and greatly increase ease of spinning up a miner and downloading blocks. → Github
  • An update was merged to stacks-blockchain that exposes tx-sender and contract-caller to bare code in smart contracts. Fixes an issue where they were not available during contract initialization. → Github
  • Multi-sig transaction support is in the works for stacks-transactions-js after hash modes are implemented and authentication clearing is verified. → Github
    • Support for unsigned transactions is also in the works. This should add compatibility for certain hardware wallets such as Ledger that sign transactions while keeping the private key on the device. → Github
  • A pull request is in review to bring native string-ascii and string-utf8 types to Clarity. →Github
  • Call for community feedback: The implementation of Proof-of-Transfer is on its way. We want to hear from developers what elements should exposed through the API, and what features should be added to the explorer. → Github

Resources:

  • A public tracker has been set up so you can easily follow stacks-blockchain progress on the upcoming phase (Krypton) of the testnet.
  • Don’t forget about the new Stacks 2.0 Testnet Status page for a quick glance at the health and history of the network.
  • A full description of the current Argon phase from the Blockstack forum.
  • The first round of bug bounty payments will be announced soon and bounties are still available - take a look!

One last reminder: 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.

There was a wide-spread outage of PBC infrastructure on Friday that led to many services, including testnet, being unavailable. This was followed by additional instability over the weekend, culminating in another reset on Sunday.

If you have any questions on the updates included in this email, or on PoX, STX Mining, or the Stacks 2.0 testnet, please reach out to Xan at [email protected].

Best,
The Blockstack PBC Team

8.18.2020

11 Weeks in to Argon

What do autumn and the Krypton testnet phase have in common? They’re both right around the corner! Everyone has been in heads-down development mode and the testnet implementation of Proof-of-Transfer is now on the horizon. Learn more about the PoX consensus mechanism straight from Blockstack Co-Founder, Muneeb Ali, this weekend at the FuturePROOF Summit.

Technical highlights:

  • A fix was applied that solves p2p handle deadlock issues on the testnet. Improvements were made to PeerRequest commands. → Github
  • A PR was merged that integrated the ChainsCoordinator with the bitcoin indexer, network relayer, and run_loop::neon implementation. This implementation constructs a set of singleton communication channels for signaling to the coordinator. → Github
  • Bug fixes were applied that enables an alternative implementation of array buffers. → Github
  • RPC Websocket improvements such as event streams for specific addresses or transactions. → Github

Documentation update:

  • The Blockstack documentation pages have been completely overhauled and redesigned!
    • Overview of documentation design updates. → Github
    • Converts the docs site from using jekyll to using next.js and mdx. This gives us the ability to write standard markdown, but include react components, and ultimately render it with all of our standing UI components found within @blockstack/ui.
    • MDX gives us the ability to write JSX (similar in nature to liquid, which jekyll used as a templating language) directly in our markdown.
    • Also integrated the Remark preprocessor. It allows specialization and customization of text, and automatic combination of many markdown documents into one.
  • A multitude of design, UX, and content upgrades. For instance: a brand new overview page for the docs and a dark-mode switcher!
  • The ability to search has been added to the docs, allowing easy querying for specific items. → Github
  • Improved references for better automation and readability. → Github
  • A fix was applied to the status indicator component of the docs, allowing for quick monitoring of network health. → Github
  • For the docs, the shiki syntax highlighter has been implemented for more structured & visual code representation. → Github
  • Image management and formatting in the docs has been greatly streamlined using imgix. → Github
  • Revamp of docs URL structures to improve SEO and folder structure. → Github

Resources:

  • A public tracker has been set up so you can easily follow stacks-blockchain progress on the upcoming phase (Krypton) of the testnet.
  • The Stacks 2.0 Testnet Status page displays real-time health and history of the network
  • A full description of the current Argon phase from the Blockstack forum.
  • Bug Bounties are still available, paying out $BTC for discovering vulnerabilities.

One last reminder: 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.

August 26, 2020

Congratulations to Bounty Winners!

A big congratulations goes out to the recipients of the first round of Stacks 2.0 Testnet Bug Bounty payments! Community rockstars Friedger Müffke and Pascal Belloncle both made significant contributions to the Blockstack Github repositories, and always inspire educational conversation surrounding issues. Pascal was able to uncover two major mining related bugs, while Friedger knocked out three minor bugs related to Clarity and stacks-transactions-js. Don’t forget that the bug bounties are still available and this $BTC is just begging to be paid out!

3 Months into Argon

This week marks 3 months into the Argon phase of the Stacks 2.0 Testnet! After a jam-packed weekend full of awesome talks & workshops at FuturePROOF, we’re back to the grindstone. Pull requests for the Proof-of-Transfer implementation are starting to trickle in, and the transition from the Argon phase to Krypton is just weeks away.

Take a look at the most significant technical updates from the last week:

  • Multi-signature transaction support was added to stacks-transactions-js! The same PR introduces the ability to construct transactions and sign them later as a separate step. → Github
  • Changes are being iterated on for the launch on Xenon, the testnet phase after Krypton. Identifying requirements like a testnet bitcoinid or a testnet $BTC faucet. → Github
    • ELI5: We’re starting to work on Stacks 2.0 integration with Bitcoin’s primary testnet (Argon and Krypton both use a bitcoin regtest setup). This is an important step in building confidence in our ability to work with Bitcoin’s mainnet!
  • Rosetta implementation PRs are starting to trickle in, thanks to work by Tintash! → Github
  • A trait lookup fix was applied to stacks-blockchain that alleviates an issue where contract-of couldn’t be used with traits from function parameters in clarity within a let context. → Github
  • Proof-of-Transfer anchor block detection was implemented! This PR also included some test cases for the ChainsCoordinator that exercise the detection mechanism. → Github
  • A client library has been generated for stacks-blockchain-api. We use openapi-generator to generate a client library based off the openapi.yaml and json schema files. → Github
  • A PR to be merged soon for the API client library documentation. → Github
  • Support for passing traits as arguments in a contract call is being added to stacks-transactions-js → Github
  • Module import improvements & miscellaneous fixes were applied to stacks-transactions-js. This included a lodash update, eslint reconfiguration, a webpack UMD build fix, fetch error handling, and global scope pollution. → Github
  • A new blockstack.js release persists etags in the UserSession store so they don’t always need to be fetched when the page is loaded. → Github
  • Added two new Stacks API endpoints for block time to provide clients with a programmatic way to estimate how much time a transaction will take to complete. This will be used in the Explorer soon to improve UX. → Github

Just a heads up: Some important PRs are currently in-review for Clarity and PoX! Such as native string types in Clarity, PoX anchor block detection, PoX lockup and delegation, and more!

Resources:

  • Follow stacks-blockchain progress for the upcoming phase (Krypton) of the testnet on Github with the public tracker.
  • The Stacks 2.0 Testnet Status page displays realtime health and history of the network.
    • Note : We’ve bumped up the block interval from 30 seconds to 2 minutes (so the chain is producing bitcoin blocks slower than before). The reason being is Bitcoin mainnet has 10 minute block intervals, so we gradually want to increase our block intervals to simulate that environment.
  • A full description of the current Argon phase from the Blockstack forum.

9.2.2020

13 Weeks into Argon

It’s been another busy week in Stacks 2.0 Github repositories. Soon we’ll be saying goodbye to the Argon phase of the testnet, and hello to Krypton. More pull requests for Proof-of-Transfer & Stacking functionality are being merged every week thanks to hard work from community members. Keep your eyes peeled for a Krypton launch date soon!

Take a look at the most significant technical updates from the past week:

  • The stacks-blockchain Github workflow has been updated to build a docker image and release with new distributions. → Github
  • Required adjustments are beginning to be made for the transition to Krypton, and eventually Xenon, so that Stacks nodes can interact with the Bitcoin test network. → Github
  • A PR has been merged that introduces string-ascii & string-utf8 as types in Clarity. → Github
    • Support for these new String types has been added to stacks-transactions-js. → Github
  • Some of the core mechanisms of Proof-of-Transfer are starting to be implemented, such as sortition evaluation using recipients selected from the reward set. → Github
    • A PR implementing the Proof-of-Transfer STX lock-up and PoX delegation logic is in review. → Github
  • The instructions for installing RUST on a machine have been simplified. Before, it was up to the user to select the default installation. Community member Jason Schrader identified that the default installation can be designated within the single-line installation command. → Github
  • Documentation information has been updated pertaining to the API Client Library. This should help developers using the JS WebSocket. → Github
  • A developer preview of the Stacks Blockchain API is now available! → Forum
  • A Rosetta implementation is underway (two PRs merged and two more in-progress) thanks to fantastic work from community members. → Github
  • A script was to stacks-transactions-js added that allows for a self-contained Docker image which will start a Stacks 2.0 blockchain and API testnet. → Github
  • Documentation has been reworked with an OpenAPI section for mempool transactions. → Github
  • A new version of blockstack.js has been released. → Github
  • Added a Stacks API endpoint for block time to help clients estimate how long it will take for a transaction to complete. → Github

Resources:

thanks…its so useful to me read the answers

1 Like

September 17, 2020
Closing in on full Proof-of-Transfer

Welcome back, Blockstackers. After a Labor Day hiatus, Stacks 2.0 updates return with a heaping pile of merged PRs and feature additions. Engineering (with the help of some superstar community members) is hard at work putting the finishing touches on the Krypton phase of testnet, including full Proof-of-Transfer.

Here were the most significant development updates from the past week:

  • The Verifiable Random Function (VRF) is now allowed to reuse public keys, and will only register a key once in the node. → Github
    • Small change → HUGE IMPACT. This reduces BTC fees for STX miners by eliminating repeated VRF key registration transactions. Also improves mining behavior by eliminating the need to scan the burnchain for certain transactions. → Github
    • More details on VRF public key reuse → Github
  • A square root function has been implemented, which fixes issues encountered with Clarity’s power function (pow) having undocumented restrictions on exponents. → Github
  • After a much iteration, stacks-blockchain has added support for trait lookup and passing traits as arguments in contract calls. → Github
  • We are transitioning the NPM scope of the explorer UI from @blockstack to @stacks. → Github
  • Fixed a bug where the standalone docker image was unexpectedly starting stacks-node twice. → Github
  • Improvements were made to the openapi schema, including adding response definitions and function argument parameters to read-only functions. → Github
    • A readOnlyFunctionArgs call has been added to the stacks-blockchain-api. This should alleviate problems where developers desired functionArgs as a property of CallReadOnlyFunctionRequest. → Github
    • Pagination options were added to the client libraries → Github
  • The rest of the necessary data api endpoints have been added for the implementation of Rosetta. → Github
  • The option to start the self-contained image in mocknet mode has been added to the stacks-blockchain-api. → Github
  • Updated the jsonrc package to fix a critical dependency error. → Github
  • A lot of substantial documentation upgrades are happening in anticipation of Krypton.
    • Transaction signing docs have been have been polished for testnet release. → Github
    • Page naming convention was reorganized and standardized. → Github
    • A breaking change was fixed in mdx-remote that corrects highlighting across external markdown files. → Github
    • The project now uses new packages, @stacks/ui and @stacks/ui-core to enable the use of emotion & theme-ui in place of styled-components and styled-system. → Github
    • Bugs were fixed in the claim-from-faucet function cause by map-set and err arguments. → Github

Resources:

2 Likes

October 1, 2020
1st Week of Krypton

Good afternoon, Blockstackers! It felt like Christmas in September last week when the Krypton phase of the Stacks 2.0 testnet officially went live! This was a massive milestone on the way toward Mainnet, and we’re looking forward to community members testing out all the new features. PoX Mining and Stacking are open for business, and documentation has been updated so you can dive into experimentation.

Here are the most substantial technical developments from the past week:

stacks-blockchain

  • Updates to the networking stack for Proof-of-Transfer: This PR implemented many of the features needed for Krypton, including a ground-up rewrite of the block inventory synchronization logic that takes into account what the local and remote nodes know about the states of PoX anchor blocks. → Github
    • In the first phase, a node incrementally builds a view of the remote node’s knowledge of PoX anchor blocks.
    • Once a local node has a view of a remote node’s PoX state, it will incrementally build up a view of the remote node’s present Stacks blocks and microblocks.
  • Adjustments to the Krypton deployment. Determined Krypton PoX parameters such as Reward cycle length, threshold, and prepare length. → Github
  • Numerous bug fixes were applied for Krypton. → Github
    • chainstate.get_reward_addresses needed to take the current burnchain block height as an additional argument.

    • The default constants in the pox.clar change depending on mainnet flag.

    • The reward set is sorted by address.

  • Developer Experience adjustments for Krypton. → Github
    • Mechanism to let the sidecar know that a transaction stacked some STX.
    • Ability to discover PoX parameters.
    • Ability to confirm that a user is eligible for PoX.
    • Includes a noop handler for STXLockEvent. → Github
  • Fixed the neighbor walk logic so it doesn’t get stuck in a GetHandshakesBegin state forever if it tries to connect to an unresponsive neighbor. → Github
  • Thanks whoabuddy on Github, the ‘neighbors failed to connect’ messages have been changed from info to debug. → Github
  • Fixed event ID resource leak for connecting sockets that time out. This should cause the follower node to not freeze up after a few hours. → Github
  • Another PR adds a compile-enabled feature for storing to a table a copy of the transaction ID and transaction data whenever a transaction is processed. This lets devs figure out whether or not a particular TXID was processed, and if so, what the result of it was. → Github

stacks-transactions-js

  • The multisig feature has now been documented in the README. → Github

docs

  • Some quick fixes were applied, including low-hanging fruit structural changes. → Github
  • User-facing docs for Stacks Wallet Trezor support were added. → Github
  • Tutorials and guides have been updated for Krypton PoX mining. → Github
  • Updated rpc references and added a missing redirect. → Github

stacks-blockchain-api

  • Rosetta construction/preprocess endpoint implementation will be used to construct metadata to build a transaction except for nonce. → Github

  • Implemented a Prometheus metrics endpoint with the same libraries being used in the new Explorer. → Github

    • This endpoint can be accessed at the root of port 9153.
  • Testnet faucet generosity has been adjusted to give users a larger amount of testnet STX upon request. Required for Stacking. → Github

  • Updating all hardcoded records to use CNAME’d records. → Github

  • Added version 2 PoX endpoint proxy and documentation. → Github

  • Added a follower-mode VScode debugging configuration. → Github

  • Implementation of rosetta construction/metadata & hash endpoints. → Github

Resources:

October 13, 2020
3rd Week of Krypton

Hello out there all you blockchain believers! The Krypton phase of Stacks 2.0 has been live for three weeks now and users are beginning to sink their teeth into new features like Proof-of-Transfer Mining and Stacking. A whole new slew of upgrades came in this week, including delegated/pooled Stacking features just as this post on the Stacking Earnings Model dropped.

Here’s a detailed look at the most substantial technical updates from the past week:

stacks-blockchain (v23.0.0.4-krypton)

  • This PR implements block download rate tracking by making it so the burnchain-processing loop in the testnet node will:
    • Fetch burnchain blocks and process sortitions in batches with length no greater than the reward cycle length.
    • Monitor the Stacks staging DB for blocks that are imminently processable while the P2P thread downloads blocks and the relayer thread processes them. → Github
  • This PR adds delegation and pooling support to the pox contract. It does so by adding four public methods:
    • delegate-stx, revoke-delegate-stx, delegator-stack-stx, and stack-aggregation-commit.
    • Additionally, other modifications were made to PoX contract behavior such as making reward addresses reusable. → Github
  • A fix has been applied that alleviates strange miner behavior. A node can now accept BlocksData messages from inbound authenticated neighbors, as well as outbound. → Github
  • Copyright assignment for the stacks-blockchain repository has transitioned to the Stacks Foundation! → Github

stacks-transactions-js (v0.4.1)

  • You can now query the blockchain for data map entries of a contract. This pull request adds the getMapEntry function which uses helper methods cvToHex and parseMapEntryResponse. → Github

stacks-blockchain-api (v0.26.0)

  • Rosetta mempool/transaction response functionality implemented. → Github
  • A broken standalone docker image has been repaired. → Github
  • Added support for public keys in preprocess and metadata endpoint to accommodate Rosetta functionality. → Github

docs

  • Testnet participation workflow streamlined and instructions updated. → Github
  • A reference has been added to the stacks-gen repo, created by psq, which helps with generating keys needed for stacking and mining on testnet. → Github
  • A guide for Stacking on the Stacks 2.0 testnet has been made live! → Github
  • Instructions for the most recent wallet release (v3.1.0) were updated. → Github

October 20, 2020
4th Week of Krypton

Good day to all you decentralization devotees! It’s been absolutely spooky how many pull requests have been merged the last few weeks.

For a deeper dive, take a look at the most substantive technical developments from the past week:

stacks-blockchain (v23.0.0.6-krypton)

  • The threshold adjustment described in SIP-007 was implemented. → Github
    • Reward address repetition handling has also been configured.
  • A fix that verifies a message to be relayed is not sent to anyone in the relayer set at the time of relay instead of at the time of sampling. → Github
  • Anchor block recency is now enforced with burn-block-ht parameter. → Github
    • burn-block-ht parameters added to stack-stx and delegate-stack-stx.
  • This PR adds vm::docs::contracts, which supports auto-generating JSON documentation for boot code contracts. → Github
  • Fixed a discrepancy in abi serialization for string-ascii and string-utf8. → Github
  • This PR forces the neighbor walk logic to re-sample the peer DB every so often, no matter how ‘error-free’ the current walk is. → Github
  • string-ascii is now being used instead of instead of buffer in the Getting started contract. → Github
  • A networking PR is under review that should address the lingering block propagation issues that we’ve seen on Krypton. → Github

explorer (v1.0.3)

  • A PR was merged that encodes function names before calling the stacks node endpoint for read-only functions. → Github
    • Fixes an issue where some read-only calls were failing.

stacks-blockchain-api (v0.26.0)

docs

  • The Stacking reference page has been fully updated for the Krypton testnet phase! → Github
  • Stacks Blockchain overview has been reworked to be comprehensible and consistent with other Blockstack messaging. → Github
  • Replaced the current link to the source code of AuthOptions from the connect repo to the ux repo. → Github
    • Also updated the optional flags in the properties table of AuthOptions.

Hacktoberfest

  • Blockstack will be offering additional Hacktoberfest prizing to encourage the Stacks Community to contribute to open source! In addition to the typical Hacktoberfest prizing (2020 edition tee or a tree planted on your behalf), eligible participants will receive custom Stacks branded swag.
  • Check out Blockstack’s Hacktoberfest repos and start hacking now.

The Blockstack x Hacktoberfest guide + repos can be found here!: Blockstack x Hacktoberfest: Win additional prizing for participating

October 27, 2020

Happy Stacks-o-ween, everyone! Below, you’ll find a full candy bag brimming with the most significant technical updates from the past week.

Don’t miss: our friends at Daemon Technologies launched a testnet Mining Competition on Monday! Check it out for your chance to get some hands-on experience with the Proof-of-Transfer consensus mechanism; mine the most testnet blocks and you could take home a cool $1k.

Mine and Win :pick:

stacks-blockchain

Version: v23.0.0.10-krypton

  • This PR adds a rudimentary toolset for testing multiple Stacks nodes and alleviates bugs related to mining and transaction relaying. → Github
  • A Dockerfile has been added that can run net-test scripts, as well as add more 500 logging to the faucet, and a fallbackfee option to bitcoind. → Github
  • OUTPUTS_PER_COMMIT has been changed to 2, effectively allowing two reward addresses per block. This requires that all commitments, regardless of whether or not they were burn commitments, have OUTPUTS_PER_COMMIT outputs. → Github
  • Burn block info has been added to events. This PR adds burn_block_hash, burn_block_height, and miner_txid to the block events sent out via the event_dispatcher. → Github
    • This will enable viewing of relevant Bitcoin info in the Explorer soon!
  • A fix has been applied to the panic in tuple_to_pox_addr. → Github
  • With the number of PoX outputs increasing, the default burn cap has been increased to clear the dust UTXO limit. → Github
  • Stacks 1.0 to Stacks 2.0 Transition: This PR adds a hook to the end of each block, which watches the .miner namespace. Once 20 name registrations is reached, it records the block height in the db. It also monitors when the block threshold is breached and outputs a log entry. → Github
  • This PR does an initial port of our logging macros to slog. → Github
    • Important upgrade allowing node operators to enable structured logging (e.g. JSON logging). This is critical for anyone potentially running a stacks-node in a robust production environment, making it much easier to log ingestion in systems such as elasticsearch.

docs

  • Instructions have been added for running a testnet node in docker. → Github
  • Minor fixes applied to transaction signing sample code and content. → Github

NEW: stacks.js

Version: v1.0.3

  • We released the public beta of Stacks.js - a reorganization of libraries in the Stacks ecosystem → Forum
    • If you have an existing app, read the migration guide → Github
  • Previous updates for blockstack.js, blockstack-cli and stacks-transactions-js will be covered in this project going forward.

Meet Stacks.js :card_file_box:

Hacktoberfest

  • Blockstack will be offering additional Hacktoberfest prizing to encourage the Stacks Community to contribute to open source! In addition to the typical Hacktoberfest prizing (2020-edition tee or a tree planted on your behalf), eligible participants will receive custom Stacks branded swag.
  • To sweeten the deal for Hacktoberfest, we’ll be awarding a $250 grand prize to the hacker who submits the most valid pull requests to Blockstack’s Hacktoberfest repos (on top of the required 4 PRs).
  • Check out Blockstack’s Hacktoberfest repos and starting hacking now or find more information in the Blockstack Forum.

Hacktoberfest :jack_o_lantern:

Docs Week

Our team is gearing up for an epic sprint we’re dubbing “Docs Week”. It will be an ecosystem wide push to clean up, improve, and expand upon all of Blockstack’s documentation. That way when mainnet rolls around, all of the resources for docs and users alike will be current, comprehensive, and bug-free. We really want the community to get involved in this, as you all are the primary consumers of the docs! Stay tuned to the dedicated Docs Week Github project board to find interesting documentation issues to work on, and you could win cash prizes.

Docs Week :page_facing_up:

Resources:

1 Like

November 5, 2020

Happy November, Stacks Pack! Hope you all enjoyed Stacks-o-ween last Friday. The day was jam-packed with awesome sessions like the October Town Hall, Docs Week Kickoff, Stacks Foundation Grants Demo Day, and a live Clarity demo from two Blockstack community members! The entire Stacks ecosystem is full steam ahead on the testnet, and sprinting towards the Mainnet finish line. Huge shoutout to all the passionate builders submitting bug bounties, participating in hackathons, or just hanging out in the Discord helping newcomers!

For a deeper dive on blockchain development, take a look at the most substantive technical updates from the past week:

stacks-blockchain

Version: v23.0.0.10-krypton

  • SLOG uses RUSTs debug-assertions by default, and was turning off debug logs during release builds. This PR re-enables debug logs in release builds. → Github
  • This PR adds a new command argument that takes takes a fast-dump file, and its consensus hash, then outputs a JSON file containing all account STX balances. Both vesting and liquid STX are included. → Github
  • This is a component of the work required to upgrade Stacks 1.0 to Stacks 2.0!
    Work is being done on the ‘Sunsetting’ phase of the proof-of-transfer consensus mechanism proposed in SIP-007. → Github
  • This PR addresses several open problems in the block-relay and mining logic that make it difficult for NAT’ed miners to build on the longest chain tip. As a result of applying this PR, NAT’ed miners should have a much easier time detecting the latest chain tip and propagating blocks. → Github
  • A fix has been applied to the RBF that solves an error where the calculation was overpaying by a factor of 2048. → Github

stacks-blockchain-api

Version: v0.29.2

  • New bitcoin fields were added to the block API: burn_block_hash, burn_block_height, miner_txid. Additionally, the docker setup was changed to pull the stacks-node binary from the official docker hub images. → Github
    • This info will also be available on the new testnet explorer.
  • When running the faucet for Stacking, the /v2/pox endpoint is queried to ensure the minimum required STX amount for stacking is send → Github
  • A pull request template was configured for uniform documenting. → Github

stacks.js

Version: v1.0.0-beta.8

  • A PR is currently being drafted to add a package to make it easier to integrate stacking. → Github

ux

  • Hide extension button on mobile. → Github
  • Tweaking configurations to point to the correct UI folder. → Github
  • Added a pull request template. → Github
  • Renamed Blockstack Connect to Stacks Connect and relocated under Stacks Org on NPM. → Github
    • Function showBlockstackConnect has been renamed to showConnect.
  • 0x prefixes have been added to hex strings in transaction results. → Github
  • Browser extension instructions have been improved, and header & formatting has been clarified. → Github
  • Connect reference has been updated to the correct url. → Github
  • The original implementation of Connect’s UI was written in React. It has been rewritten using web components so if you are not using React, you don’t have to include it as a dependency. → Github

docs

  • Authentication and tutorial updates have been made to the new Stacks NPM packages. → Github
  • Links to blockstack.js reference docs throughout documentation have been updated to stacks.js. → Github
  • A Gitpod in-browser IDE has been added to the docs to allow for simple, compartmentalized experimentation without the need to setup a development environment. → Github

2 more days of Docs Week!

Docs Week is an ecosystem-wide effort to show the docs some undivided attention, and make our technical content as excellent as possible. → Github project board

Up for grabs are brand new ‘Ultimate Stacks Swag Kits’, with Stacks apparel and accessories valued at a whopping $150! There will be seven award categories, championing various personas we think will take the docs to the next level. For example, the “Visual Vanguard” will win a prize because they produced excellent visual aids or illustrations to accompany docs content.

Check out the docs contributing guidelines, browse the kickoff presentation deck, or join the brand new Discord Developer Hangout Voice channel for devs to discuss tech, share ideas, or get some coding help.

Here are some of the contributions that have already rolled in!

Docs Week :page_facing_up:

November 11, 2020

Hey there, Stacks Pack! Another week, another tidal wave of technical updates from the Stacks 2.0 testnet. As we approach the final stretch before mainnet launch the community is laser-focused on bug squashing, appending features, and ensuring reliability. Docs Week brought with it a multitude of content upgrades that will undoubtedly improve new developer onboarding.

Last but not least, the HackStacks hackathon wraps up today so get those submissions in!

To get a deeper understanding of technical developments from the past week, check out the specific Github pull requests:

stacks-blockchain

Version: v23.0.0.11-krypton

  • This PR fixes a regression issue that didn’t quite calculate the new RBF relay fee correctly. → Github
  • Clarity (at-block) behavior fixed when mutations are pending. → Github
  • Tuple signatures have been corrected so developers can create tuples in Clarity. → Github
  • A public Helm chart has been implemented for the community to easily deploy a stacks node to a local or remote Kubernetes cluster. → Github
  • This PR implements stacking events for unlocks and rewards by adding a new endpoint for the event dispatcher: POST /new_burn_block. → Github
  • [Stacks v1 → v2 Networking Upgrade] Exporting names, namespaces, subdomains, and zonefiles. → Github

stacks-blockchain-api

Version: v0.29.4

  • The Stacks Blockchain API was extended to fully support Coinbase’s Rosetta standard! → Blog Post
  • Various changes were needed in the Rosetta API for construction. → Github
  • The design chapter form api spec has been removed, and the design details will now be explained in the API guide inside the docs. → Github
  • As a developer, you don’t want to be required to relearn an API for different clients (RPC vs js lib). This PR renames the block hash parameter in the RPC API from block_hash to hash. → Github

ux

  • App instructions have been simplified. Commands have been consolidated, which was needed for both development and the extension, with clone and directory navigation inclusions. → Github
  • Additional url validation is now implemented. → Github
  • Updated dependencies for React and Blockstack to fix issues where it was requesting legacy versions. → Github

docs

Docs Week has been a massive success (30+ active pull requests and counting!) and we are seeing the entire Stacks ecosystem band together to merge heaping piles of docs pull requests. A big thank you to everyone that has participated, and a reminder to everyone that you can always contribute to maintaining the docs! Take a look at some highlights we merged in just the last week:

  • Running a local mocknet with Docker. → Github
  • Updated running-testnet-node.md to avoid confusion for beginners. → Github
  • Added a tutorial for the Stacks Blockchain API client. → Github
  • This PR updates the Todo app tutorial page and removes direct references to the Connect package in favor of the merged @stacks/auth package. The standalone Connect page has also been removed. → Github
  • The Clarity reference has been separated into four pages to improve readability. → Github
  • This PR cleans up the BNS content, making it applicable to BNS when Stacks 2.0 launches. → Github
  • Added documentation on different subcommands and configuration options available for the stacks-node binary. → Github
  • A getFile fix for unencrypted files. → Github
  • A final version of the Proof-of-Transfer overview has been approved. → Github
  • Redirects for wallet pages have been added and removed from the navigation bar. → Github

Resources:

Stacks 2.0 mainnet update
November 19, 2020

Stacks 2.0 To Reach Code Completion by December 15th, January 14th Launch

Thanks to the hard work of engineers at PBC, the Stacks Foundation, and community contributors, the Stacks 2.0 blockchain is on target to reach code completion by December 15th. After discussing with exchanges, launch partners, and potential miners we can now set a launch date of January 14th. This date is the recommendation by PBC after consultation with other entities; miners will ultimately decide exactly when and how the launch happens. Stay tuned for other significant news in the coming weeks and thank you for your support!

Read the full update :newspaper:
Register for launch events :rocket:

1 Million STX For Miners

More good news: To celebrate code completion and community momentum, the Stacks Foundation is putting up 1 million STX to be won in an upcoming mining challenge hosted by Daemon Technologies. The mining challenge will follow code completion on Dec 15th.

Independent miners will be the ones to launch the network, so this will be a great way for prospective miners to learn the final system before that and to celebrate their key role in enabling the user-owned internet on Bitcoin.

Register for the challenge :pick:

7 Weeks Into Krypton

Hi Friends! Time for your weekly Stacks Snack. We’ve got a downpour of updates this week as we come off of a sensational Docs Week that exceeded all of our expectations! A big thank you goes out to every community member that helped tidy up the documentation, and made it even easier for newcomers to learn the tech and build on Stacks 2.0. We’re also starting to see some pull requests trickle in configuring the launch of mainnet!

Don’t forget there’s still time to get involved in the HackDeFi hackathon, and the deadline has even been extended to December 4th to give you time to finish up those rockstar DeFi projects.

For a more detailed overview of recent developments, check out the technical updates on Github from the past week:

stacks-blockchain

Version: v23.0.0.11-krypton

  • Some minor event dispatcher updates. → Github
    • Added event_index for ordering events (the dispatch matrix scrambles the event order).
    • Add locked_address field to stx_lock_event.
    • These will ultimately allow the Explorer & Wallet to show more stacking info.
  • Fixed issues (with miners reusing microblock public key hashes) by mixing the burn block height into the microblock private key rotation. → Github
    • This had been troublesome when upgrading the stacks-node software without a chain reset (so your node would have to catch up from other nodes on the network).
  • Added burn_block_height field to /new_burn_block event-dispatcher endpoint. → Github
  • [Stacks v1 → v2 Upgrade] Export names, namespaces, subdomains and zonefiles. → Github
  • Implemented Stacking Operations via Bitcoin transaction. → Github
    • This PR introduces two new Bitcoin ops: PreStackStx and StackStx.
    • More details in forum post. → Forum
  • This PR adds an integer binary logarithm function (log2 n) to Clarity. It also updates the costs boot contract to use said function. → Github
  • Clarity defined Cost Functions. → Github
    • New boot contract containing cost functions for every native Clarity function.
    • Refactored CostTracker to include compute_cost function, which can compute costs via supplied clarity contracts.
    • Refactored LimitedCostTracker impl to keep track of a mapping relating cost function names to a QualifiedId, and a cache of cost contracts.
    • Replace runtime_cost! macro with runtime_cost function which uses updated CostTracker.
  • Git clone efficiency in readme. → Github
    • Reduces disk usage and network download time by around 80%.

stacks-blockchain-api

Version: v0.31.3

  • The Stacks Blockchain API was extended to fully support Coinbase’s Rosetta Standard. → Blog Post
  • This pull request adds a docker file to meet Rosetta’s requirements. It includes instructions on how to run rosetta-cli against it to test the implementation. → Github
  • Three Rosetta fixes: API_TAG in stx-rosetta, contract function args, and fees calculation. → Github
  • v2/info documentation maintenance and adding descriptions for the fields. → Github
  • Stacking lock event processing. → Github
    • Expose STX lock up events
    • Fixes long standing out-of-order event index bug.
    • Upgrade to es2020 from es2019, and nodejs v14 (LTS) from v13. Full native bigint support!
    • Fixed bug with rosetta endpoints not being included in openapi definition.
  • Stub response for the /new_burn_block event. Allows the sidecar to run with latest core-node. → Github
    • There is also a PR in flight that uses this to expose some really useful information. → Github
  • Updated the Miner STX reward event handling to fix an issue where the balance reported by the API did not match the balance reported by miner/follower. → Github
  • The client lib generation process was outputting tens of thousands of lines, making Github actions almost impossible to read and debug. Output has been drastically reduced. → Github
  • Contract names were previously required to be at least 5 chars long. This is not the case with the pox contract, and perhaps no longer the case at all in core. Either way, the restriction was unnecessary and lifted. → Github
  • Transaction broadcasting fixes. → Github
    • Use a Blob for posting transactions instead of string.
    • Use a string as result type for posting transactions instead of void.

docs

  • This PR updates next.js to version 10, and removes our cool but ultimately flawed deploy script. This means we will now only rely on the vercel plugin until we can perhaps sort out the issues of deploying forked PRs. → Github
  • The stacks burn height has been added to the Stacking guide. → Github
  • Big naming update for Stacks rebrand. → Github
  • Fixed broken Clarity language reference redirection links in 3 pages. → Github
  • Added a helpful “Technical Specs” page to the docs with useful info like coinbase reward schedule, stacking details, and more. → Github
  • Added instructions for running the testnet node (Both follower and miner node) on Windows from the binary available. → Github
  • Mining Guide has been updated. → Github
  • Added a guide for dealing with Clarity values in JS. → Github
1 Like

November 24, 2020

Get ready for Xenon!

Hello again, Stacks Family! A happy Thanksgiving week to all you US-based Stackers. We’re thankful for Satoshi Nakamoto realizing structural flaws in the legacy financial markets, and setting out to build a technology that ensures decentralization, privacy, and security.

It’s time to say goodbye to our beloved Krypton testnet phase, and get excited for the launch of Xenon very soon! This will be the final phase of the testnet before mainnet launch. The biggest change is that instead of using Bitcoin regtest nodes, Xenon will be integrated with the primary Bitcoin testnet. Whereas Regtest was a fully controlled environment (e.g. we could reset the BTC chain whenever the testnet reset), the main Bitcoin testnet will help us test how Stacks 2.0 will behave in a more dynamic, real-world environment where we don’t have as much control.

Speaking of mainnet, the launch of Stacks 2.0 mainnet is officially scheduled for January 14th, with a code completion estimate of December 15th. We can’t wait to unveil what celebrations we have planned for the epic milestone, and hope you all can join for the kickoff extravaganza!

Also, be sure to register for this month’s townhall!

For more comprehensive understanding of recent developments, check out the specific Github changes from the past week:

stacks-blockchain

Version: v23.0.0.12-krypton

  • This PR is addressing a few issues that were blocking users from running a node on a Bitcoin Testnet network. → Github
  • Load dynamic cost functions from chainstate based on the voting contract. → Github
  • Added the property zonefile_hash to the names exported in chainstate.json. → Github
  • [Stacks v1 → v2 Upgrade] Moved the zonefile contents for on-chain names from the chainstate.json file and into a new file name_zonefiles.txt. Uses the same new-line delimitated format as the subdomain_zonefiles.txt file. → Github
  • [Stacks v1 → v2 Upgrade] We now export the chainstate file as csv rather than json, which is 18MB compared to 29MB. This is important because we are expecting to commit this file directly into git. → Github

explorer

Version: v1.0.3

  • A big PR is in the works, configuring the explorer with extra features for Stacks 2.0 mainnet launch. → Github
  • It implements and improves many aspects of the explorer:
    • A new homepage
    • Address pages
    • Transaction pages
    • Blocks page + block single pages.
    • It also adds the new branding and man design improvements, along with a completely re-thought sandbox experience that is now hooked up to Connect.

stacks-blockchain-api

Version: v0.33.0

  • Increased the faucet STX amount sent for Stacking by 20%. This fixes an issue where the min STX amount would increase by the time the faucet tx completed. → Github
  • Expose BTC reward events by adding three new endpoints under /v1/extended/burnchain which show BTC pox reward information. → Github
  • Fixed mempool transactions disappearing during re-orgs. → Github
  • This was a bug in the sidecar’s handling of mempool transactions. Transactions were not “re-inserted” into the mempool in the event that the block they were mined in became non-canonical.
  • Also increased logging for tx handling in db. → Github
  • It was necessary to wrap mempool transaction inserts in sql transactions. → Github
  • Fixed bugs related to locked STX. → Github
  • Updated the query to check the burnchain tip against a stx unlock height rather than using the STX chain tip.
  • Added locked height and locked txid to balance endpoints. → Github
  • Adds both lock height (for both burnchain and Stacks chain), as well as the associated lockup txid.
  • Also clarified that the unlock height refers to the burnchain by renaming to burnchain_unlock_height.

ux

  • Github Actions deprecated the add-path directive, which broke actions/[email protected] This PR updates those versions. → Github
  • Added screens for the “after install path” of Connect 2.0. → Github
    • After installing extension, automatically opens up to /#/installed.
    • Can sign up after install with one button.
    • Can sign in after install.
    • Integration tests for sign up / sign in after install.
  • Fixed duplicated ‘Powered by Blockstack’ icons when logging into the Safari Connect window. → Github
  • Updated the UI library to use @stacks/ui and emotion. → Github
1 Like