Microblocks Reduce Transaction Processing Times to Seconds

Microblocks in the Stacks blockchain will soon be supported in the Stacks Blockchain API and tooling for faster transaction processing. Stacks blocks will always settle on the Bitcoin blockchain as the ultimate source of truth, but microblocks introduce a new lower-latency global view of the Stacks blockchain transaction state. Microblocks are designed to improve the experience for users and developers and are a step further in scaling bitcoin.

Microblocks and Stacks Transactions

The Stacks blockchain takes a batching approach to transactions, which allows for thousands of transactions to be settled in a single Bitcoin transaction. Microblocks enable an even speedier approach. The Bitcoin blockchain runs on ~10 min block times, but developers and end users would benefit from faster transaction times. Microblocks will vastly decrease latency for interacting with the Stacks blockchain when it comes to processing transactions, such as STX token transfers, web wallet interactions in apps, and transaction signing among others, conveying transaction status in a matter of seconds as compared to minutes.

Microblocks are a concept borrowed from Bitcoin-NG, a research paper published at USENIX ATC 2016. Microblocks introduce a new option for the current Stacks miner to stream transactions into microblocks from the mempool with microblock-specific mining rewards. Developers gain more flexibility in how they submit transactions to miners as well.  

Implementation and Status

Microblocks at the protocol layer were part of the Stacks 2.0 launch, and miners have been able to produce them since January. Full end-to-end support for microblocks in user-facing tools, like the explorer and wallet, are in the implementation and testing phases. The Hiro team is working on the remaining client support for sending transactions in microblocks, as well as designs to convey a transaction’s status in a microblock stream to end users via the Stacks Web Wallet and Explorer.

A sneak peak of designs by Hiro's UserX team

Microblocks are a design choice that both offers the end-user the benefit of lower-latency transactions, and embodies the decentralization and open access to mining and transacting on the Stacks blockchain. Microblocks can offer better user experiences to applications that need lower-latency confirmations than what are traditionally offered by blockchains.

Next Steps

Microblocks will be a major improvement in UX for those building on and accessing apps, smart contracts, DeFi and other projects on the Stacks blockchain, and one of many improvements we expect to see in the Stacks approach bringing apps and smart contracts to Bitcoin.  

We will be sharing technical proposals and design guidelines for microblocks usage inside of apps in the coming weeks, but those interested in diving further into the details should review the Stacks Blockchain SIP-001 available on GitHub (link: https://github.com/stacksgov/sips/blob/main/sips/sip-001/sip-001-burn-election.md), follow the Microblocks API PR on GitHub, and we just published additional documentation including best practices.

Additional Info: Mining Microblocks

Stacks miners are incentivized to mine microblocks on an ongoing basis, but are not required to do so. Microblock transaction fees are split 40/60 between the producer of the microblock and the subsequent miner that builds a Stacks block that confirms it. The 40% fee for the miner that produces the microblock is what encourages the miner to actively mine microblocks, instead of ignoring subsequent transactions. The 60% fee for the miner that confirms the microblock is what encourages it to download and confirm them, instead of dropping them. Aside from earning a portion of microblock transaction fees, rewards miners might choose to mine microblocks to benefit the Stacks blockchain and ecosystem as well.

Because a Stacks miner can choose which (if any) microblocks it confirms, a transaction’s confirmation status transitions through increasing degrees of “confirmation certainty.”  These can be thought of as intermediate confirmation states between zero and one confirmations in traditional blockchains. It is uncertain if an unconfirmed transaction in the mempool will be mined. But, once the transaction gets included in a microblock, it is more certain that it will be mined, because there is now a financial incentive for the next Stacks miner to confirm it. A transaction’s confirmation certainty increases further as more and more Stacks miners send block-commit transactions to Bitcoin’s mempool that correspond to Stacks blocks that would confirm the microblock if selected by the next sortition. Once the microblock stream is confirmed by a subsequent Stacks block, it receives the same degree of confirmation certainty as the Stacks block that confirmed it (i.e. one confirmation).

Users have the option to choose whether or not their transaction must be included in a microblock, must be included in a Stacks block, or may be included in either. If on the one hand the user is willing to trade confirmation certainty for lower latency, then the user would require that the transaction be mined only in a microblock stream, and not a Stacks block. If on the other hand the user is more concerned about confirmation certainty, and less concerned about latency, the user would require that the transaction be mined in a Stacks block. If the user does not care strongly either way, then the user would permit the miner to choose how the transaction is mined.

Start building on Stacks
Create apps and smart contracts that inherit all of Bitcoin’s powers, or join thousands of other builders on the Stacks Discord
The Stacks blockchain settles blocks on the Bitcoin blockchain, which averages one block every ten minutes. In order to provide users and applications with more timely feedback on the status and results of transactions, the blockchain supports microblocks. This post will talk about how microblocks are supported in the blockchain, how they impact the confirmation of transactions, and previews support for microblocks in explorers, wallets, and applications.