Proposed SIP: Taproot Payments Integration

Hi Everyone! Trust Machines published this proposed SIP to Integrate Taproot script payments on the Stacks blockchain. We’re publishing here on the forum for discussion and visibility for the community, especially for those who don’t look at Github often.

This proposal will be published on Github today and I’ll add a link.

Preamble

SIP Number: [TBD]

Title: Taproot Payments Integration

Authors: Rena Shah ([email protected])

Consideration: Governance, Technical

Type: Consensus

Status: Draft

Created: 24 May 2022

License: CC0-1.0

Sign-off:

Abstract

This SIP proposes an important change to enable mining payouts to Taproot scripts. Taproot scripts were enabled at block 709,632 on the Bitcoin Network on November 14, 2021.

We believe that with this change, mining pools are more realistic where people can pool their mining bids into a Taproot script while running independent miners. Doing so further increases the number of independent miners and aids decentralization. Taproot scripts alleviate bandwidth issues on the Bitcoin network since the pool resembles a single miner. Furthermore, we’d like to implement the optionality to send Taproot payments scripts to both Stacks wallets or Stacks smart contracts to streamline operations.

License and Copyright

This SIP is made available under the terms of the Creative Commons CC0 1.0 Universal license, available at Creative Commons — CC0 1.0 Universal. This SIP’s copyright is held by the Stacks Open Internet Foundation.

Introduction

The Taproot upgrade was first proposed to the Bitcoin network in 2018 to improve efficiency. As a result, one of the core updates was a technique called “key aggregation,” which enables multi-signature transactions to commit the same amount of data to the Bitcoin blockchain as a single standard transaction. With this technique, transactions are batched into a single transaction, resulting in a lighter load.

With this technology, there are benefits to the Stacks ecosystem with respect to mining. Enabling Taproot scripts allows independent miners to pool together their mining bids as a single transaction. With that change, more independent miners can come on board to pool together for block bids. Adding the optionality to send Taproot payments to Stacks smart contracts streamlines mining pools operations within their protocol.

Modification

This SIP proposes to integrate Taproot script payments to the Stacks blockchain. Additionally, this SIP also proposes to allow the option to send Taproot script payments to Stacks Smart Contracts.

Rationale

In the current state, approximately ~5 miners are operating to secure the Stacks network [1].
Onstacks Mining Stats 5-24-2022
Source: OnStacks, accurate as of 24 May 2022

In the event that these ~5 miners go offline, Stacks blockchain is open to vulnerabilities. Allowing independent miners to pool together through Taproot scripts further decentralizes the mining of Stacks. In general, greater miner numbers increase resiliency and decentralization of the Stacks blockchain which is a favorable outcome for the ecosystem.

A new Stacks block may be mined once per Bitcoin block, amassing 144 blockers per day. To be considered for mining a block, a miner must have a block commit included in a Bitcoin block. This is determined by the amount of Bitcoin the miners have sent to be committed. Oftentimes, independent miners will not “win” the block as they do not have enough Bitcoin committed. However, with Taproot payments, independent miners can form something akin to a mining pool with a single transaction commitment. This update avoids many Bitcoin bandwidth bottleneck issues because to the Bitcoin network, the pool just looks like a single miner.

To minimize risk and mine optimally, miners need approximately 2.5 BTC for every 500 blocks of Stacks mined, as-of January 31, 2022, when an independent analysis was conducted by Syvita Mining’s MattySTX. This analysis represented the worst 5% of outcomes, taken to the 95th percentile of confidence levels.

For the majority of miners, this upfront capital cost may be out of reach. Coupled with the technical burdens to run a node, everyday folks are disproportionately at a disadvantage. Mining pools make a compelling use case for people to collaborate while securing the Stacks network.

Scanning the Bitcoin Network shows at least 15 independent mining pools securing the network. [2]. Of those pools, some like Slushpool have upwards of ~16,000 independent users [3].

Slushpool
Source: Slushpool, accurate as of May 24, 2022

Integrating Taproot scripts could have a positive impact on the Stacks ecosystem. Taking this a step further to incorporate optionality for Taproot script payouts to smart contracts aids new mining pools to start mining.

Backwards Compatibility

No.

Activation

The activation criteria for this SIP need input and debate, and should ultimately be defined by the Stacks community.

References

[1] - https://app.onstacks.com/
[2] - Bitcoin Charts: Active Addresses, Hash Rate and Miner Revenue
[3] - slushpool.com

3 Likes

I see only upside here! Would be great to see this live.

2 Likes

Reducing the barrier to participating in mining would be a positive improvement for the ecosystem.

Would this also add support for native segwit bech32 reward addresses?

2 Likes

Hey @CryptoRena thank you for posting this!

I am greatly in support of upgrading Stacks to support newer address types on the Bitcoin blockchain.

Right now, Stacking can only be done with legacy addresses, including pay-to-pub-key-hash (P2PKH) addresses which start with a “1” and pay-to-script-hash (P2SH) addresses which start with a “3”.

I believe that Stacks should allow Stackers to specify the two more modern address types: segwit addresses or pay-to-witness-public-key-hash (P2WPKH) addresses which start with “bc1q” and also Taproot addresses or pay-to-taproot (P2TR) addresses which start with “bc1p”.

In my opinion, the biggest advantage with supporting these addresses is that transaction fees will be much lower and all wallet types will be supported for Stacking.

Adding support for mining pools is also desirable, though I wouldn’t focus on this as the only benefit.

Another benefit is increased privacy around the stacker’s security model. P2TR addresses look the same whether the user has a multi-sig setup or a single-sig setup, so multi-sig / higher security users have increased privacy with their stacking.

2 Likes

I mentioned the following on another thread and I am cross-posting it here:

2 Likes

Support for segwit addresses (including taproot addresses) as PoX outputs are coming in Stacks 2.1.

It is already possible to mine with a taproot address, provided you can find a designate a separate p2pkh or p2sh address to represent the block-commit UTXO chain to the system. The taproot address would simply fund the transaction.

I’d like to make it so the UTXO chain could be represented solely as a taproot address, but given the target deadline for 2.1 and the scope of the code changes that would need to be made to support this, this change will have to wait.

5 Likes

Ok good to know that support for segwit and taproot are coming in 2.1.

If I am understanding you correctly, there currently isn’t support for taproot addresses with stacking, there isn’t support for taproot addresses with mining, but you could fund txs with taproot addresses, which is some level of existing support. Is that correct?

2 Likes