Enabling sBTC as a gas asset on Stacks

This makes a lot more sense to me now. I’m sorry that I sounded too harsh earlier; I wasn’t seeing the full picture. I don’t see anything problematic with sBTC being a gas token (potentially one of many) as long as it doesn’t affect fundamental demand for STX. We’ll want to sync with the Economics CAB to confirm, but this seems doable.

8 Likes

“Stacks is an affinity coin” moniker is ……DEAD

I suppose one question would be, who is working on defining the SIP for this particular change? Would it come out of the BD working group? I would love to work with them to get the proposed changes necessary defined clearly so that we can have something more complete to orient the discussion around.

Maybe next week after the community discussions we can have a SIP editors meeting to make this proposal concrete?

I have some updated thoughts based on research from core engineering and considering the correct rollout strategy from a product lens.

The first question to ask is: What problem are we trying to solve?

  • We want to minimize friction for users and provide a Bitcoin-native UX. The hypothesis is that enabling users to pay gas fees in sBTC would lead to increased usage of the network.

The next question to ask is: what are the potential solutions that could enable this?

There are both protocol/consensus level solutions and application/wallet level solutions (which have both been tracked in Github). For example:

  1. Sponsored transactions - Enable developers to pay for users to call into their smart contracts, even if users do not hold STX. This is handled at the wallet/application level (ALEX is doing this currently with their aBTC product).
  2. Users pay in sBTC and an AMM converts to STX - This could happen at the wallet level where a user submits a transaction to Leather/Xverse and they automatically swap it for STX under the hood.
  3. sBTC is accepted as native gas fees on the network. This is at the protocol-level. This would be a nontrivial change to the blockchain that would require additional logic on the Stacks node, likely a new transaction wire format, and other potential unknowns.

Given these options, here are my takeaways:

  • This doesn’t need to be solved at the protocol level. This could be handled at the wallet level (where wallets swap sBTC for STX on the back end) or via sponsored transactions, which could achieve the same goals without adding complexity to the protocol.
  • This doesn’t need to be included at launch. The biggest concern is that adding a new feature like this would impact the scope. To be clear, it is not a requirement to launch. We must weigh the benefits of this against the engineering lift to ensure it doesn’t impact timelines for Nakamoto. Given the initial analysis, I would be wary of adding this feature at this time given what it would require from core devs.

Therefore, my suggestion is to add this feature to the backlog for now. If the demand is there, we can always add support for it natively after the upgrade. This ensures that Stacks core engineers remain laser focused on shipping Nakamoto and we can explore adding it to the long-term roadmap instead of increasing the scope for launch.

I do think there may be long-term advantages to accepting sBTC natively as gas and we should we continue to do research on this topic. I would also like to hear from @markmhendrickson and @yukan on the wallet side and work with BD partners to better understand the requirements exchanges might have to enable sBTC withdrawals.

5 Likes

i think i completely agree with this. in order to be the best l2, stx has to provide the best UX, and from what i’ve been following in the community, not having to deal with STX for gas is a major benefit.

having said this, some of the discussions around abstracting the STX gas fee at the wallet level is interesting though

From a wallet and product perspective, having sBTC as a gas token at the protocol level makes much more sense. Here are some of the downsides of not doing this at the protocol level.

Using sponsored transactions

Sponsored transactions are already being used to power many Stacks transactions in Xverse, for example Stacks NFT transfers and SIP10 token swaps via ALEX. Right now users essentially get free transactions as the fees are quite low. However, to set it up so that the sponsors are compensated for sponsoring, the contract functions being called need to result in an extra transfer of a token (sBTC in this case) to the sponsor’s address. We can build a SIP standard for “sBTC tx fee” function call signature so that wallets can automatically recognize it and connect the user to a sponsor. But it will still be up to contract developers to adopt the function call signature. So unless we want a situation where some function calls can be paid for in sBTC and some cannot, every public smart contract function will have an extra “principal and amount” as argument. In this case, why not just make it a part of the protocol?

Another potential limitation of sponsored transactions is scalability. Right now you can have maximum 25 pending transactions in the mempool per address, so each sponsor address can only handle maximum of 25 transactions per block. In order to scale this, sponsors will need to manage thousands of addresses with STX balance. There’s also the issue of users intentionally setting a low fee resulting in a blocked sponsor address.

Using an AMM to convert sBTC to STX

Assuming this method would result in 2 transactions, first is the function to swap from sBTC to STX and the second is the contract function the user intends to call. This effectively results in a 50% reduction in the total network transaction throughput because you’ve now doubled the number of transactions needed. And the AMM swap transactions are not light transactions either, they’re usually quite expensive.

sBTC as gas token at the protocol level

One common problem from the discussion above is that paying fees in sBTC might affect the economics of the Stacks network. What if we simply made it more expensive to pay for transactions in sBTC instead of STX? Then we can preserve STX as the preferred gas token and still allow users that want to pay in sBTC to do so. The extra cost in sBTC shouldn’t go to the miners, because then miners will have an incentive to prefer sBTC fee transactions. So maybe the extra sBTC can be used to reduce peg-out transactions fees.

8 Likes

We like it !"

This is a really interesting idea that hits the nail perfectly in my opinion. sBTC as gas would enable “just use BTC as gas” at the protocol level. Having that rate higher would mean “STX is discounted gas” so can retain any economic value there (however, I continue to believe that the primary economic value driver is exclusive right to stacking slots). And finally, it’s important to not incentivize miners to prefer one tx over the other based on what gas token is used. So taking the extra fee difference and sending it somewhere neutral (like peg-wallet maintenance) can work. Big +1 to this idea.

4 Likes

We had a great discussion on this last Friday during the SIP call, and followed up with @diwaker
and @andre.btc separately.

The assumption of the post that ‘technical work to implement sBTC as gas asset is minimal’ has been invalidated. Some things that came up is that sBTC as gas would have to be added to the node logic, a new transaction format would need to be created, etc. At present, this would detract too much from the current Nakamoto work to be considered for the upcoming hard fork.

The silver lining is though that the discussion above and on the SIP call seems to have validated that sBTC as gas has broad support within the ecosystem and that economic concerns are minimal. This is some serious progress and allows us to take this head on post-Nakamoto upgrade. sBTC as gas remains a very strong talking point to get potential partners across the line, and the alignment here helps a great deal with that.

Heads down on Nakamoto, and we’ll be back :saluting_face:

3 Likes

I think it’s helpful to frame this conversation in the context of L2 business models. Unlike an L1 (which imo is always implicitly a form of currency / unit of account), an L2 is very much a business: in the aggregate, it collects revenues from gas fees paying for L2 txs, and it pays expenses of L1 gas fees to post rollups txs to the L1. The difference is profit, whether it accrues to a centralized sequencer or decentralized set of nodes does not change these basic economics.

The ARB and OP tokens have large market caps in spite of being, not because of being, useless governance tokens that are not used for gas. I would warn against casual observations of their market caps as justification that an L2s token will always be valuable merely due to speculation. In reality, there is a lot of ongoing discussion in these communities to do the opposite of what this forum is proposing and start using ARB and OP tokens to pay for gas on their respective L2s.

This would become less important though if ARB and OP tokens would more directly benefit from the L2 activity. For instance, imagine a situation in which ARB token stakers earned revenue distributions of the ETH earned as gas fees on the L2. I would argue that most, if not virtually all, of ARB’s and OP’s current market caps are purely speculation that at some point these revenue distributions will be enabled (much like Uniswap).

Implementation difficulties and nuances of Bitcoin script limitations aside for a moment, the analogy in a BTC<>STX situation would be BTC being used to pay gas fees on the L2, and STX ‘stakers’ earning distributions of that BTC.

Due to the relatively unique mechanisms of PoX, Stacks already approximates these economics from a stackers PoV.

Assuming a competitive mining environment where the aggregate mining profit margin approaches 0%, then miners are paying that same amount in BTC as they are earning from STX gas fees and coinbase reward net of their cost to submit their bids on the L1. (Note the similarity to distributing ARB or OP sequencer profits (revenue L2 gas fees, expenses L1 gas fees) to ARB/OP stakers.)

Thus, to stackers, competitive PoX very closely approximates allowing BTC to used as the gas asset and distributing this asset to stackers in exchange for i) the L2 activity fees and ii) compensating them for inflation (the block reward).

Assuming a competitive mining environment and that using sBTC as the gas fee instead of STX does not change the actual gas cost per a given tx (I don’t see any discussion above about how gas is actually priced in either scenario), this overall relationship does not change by using sBTC instead of STX.

That being said, there are some potential concerns and crucial assumptions we made above:

  1. This relies on mining remaining competitive. In the long run, if Stacks expects a majority of Bitcoin miners to eventually become STX miners, the competitiveness of STX’s mining environment could become threatened, resulting in reduced PoX yield, and thus no longer closely approximating the above case. Currently, STX retains some utility value as a gas asset even if PoX yields fall, whereas it would solely rely on competitive mining and PoX yield if no longer the gas asset.

  2. There is undoubtedly net buying pressure and ‘supply absorption’ of people acquiring STX to use it as a gas asset above and beyond their immediate needs for it as gas. We can even look at on-chain data and roughly quantify the degree of impact by looking at the amounts of unstacked STX held in wallets that have made at least 1 gas-incurring tx other than transferring STX, such as using a dApp (the idea is to separate out stacked STX and STX bought purely for price speculation reasons, not for ‘leftover gas’ reasons).
    Removing the gas asset utility from STX also removes this buying pressure and supply absorption. Thus, to be an expected net benefit, we would have to expect that using sBTC instead would result in a sufficient increase in on-chain activity that, assuming a constant stacking yield (which acts as a multiplier effect), there is a greater net buying pressure and/or supply absorption. This is not just some short-term price speculation matter, it is a long-term security matter, since sBTC is economically secured by the stacked STX.

Whether sBTC gas or STX gas, STX’s long-term success depends on:

  • Organic recurring activity on the Stacks chain (since total gas fees is a function of cost per tx * number of txs)

  • How the gas or cost per tx market functions (since total gas fees is the only net/real yield portion paid via PoX, the coinbase reward is just compensation for inflation/dilution and thus is a nominal yield but not real a yield in economic terms - see ‘real interest rates’ for anyone confused by this)

  • Mining staying competitive and aggregate mining profit margins remaining low (since PoX mining is the mechanism that overcomes Bitcoin script limitations to approximate L2 revenue distributions and less competition means a less efficient approximation)

It’s not clear to me that sufficient work has yet been done to truly assess the risks, benefits, and how gas pricing would work in an sBTC fee world. While sBTC as a gas asset can be economically sound, this is not a decision I would rush into or say has minimal concerns.

9 Likes

Thank you for this. This is the kind of careful, rigorous thought I’m hoping to see if there’s is a SIP about using sBTC as a gas token.

5 Likes

Thank you @MattySTX kindly for this deep analysis on this topic. I don’t think we should rush on this to “kill” the Stacks chain in any way.

1 Like

Hi,

Let me start of by saying im right now not a developer in the stacks ecosystem, neither am i core contributor to it in any form.

Just a bitcoiner who wanted his coins to do more than just sitting in a wallet. But did not want to go with the existing methods of wrapping btc to another ecosystem and trusting an external party with it.

One of the first things that struck me immediately was the security focused approach stacks was taking. Let it be with aiming for bitcoin finality. restricting hard forks or the fact that the smart contract code is stored in plain human readable form in the chain itself.

These things really blew my mind and made me a believer in stacks as something that i can trust my coins with, and also a small bag holder in the system.

Improving the UX and bringing more adoption to the ecosystem is something we all wish for!
that being said reading this proposal has left a sore aftertaste in my mouth.

before going into this opiniated discussion . lets talk about the points that we all agree with.

  1. $STX is the underlying asset for the security of the stacks ecosystem and SBTC

  2. The price and demand for $STX is directly proportional to the security of the ecosystem, as if the price drops . it reduces the incentive to honestly uphold the chain and also prevent the stacks from stealing the BTC that has been pegged in for SBTC.

  3. combining 1&2 , We as a community ought to uphold the demand for stx as it is ultimately whats giving security to the stacks chain and sbtc itself.

Now going into the opinionated bits,

What is the problem with sbtc or any other token enabled directly as an alternative gas asset ?

1. As MattySTX puts forward above, enabling alternate assets for stacks gas fee immediately removes a pillar support however big or small for STX value and demand.

This would be against point 3 above and meaning the stacks ecosystem is ready to compromise on the security of the stacks ecosystem for other factors.

Now as a community we should ask is this really where we want to head? double so as a project that claims to uphold the bitcoin ethos and is modelled over the bitcoin chain itself

Bitcoin is arguably the blockchain with the worst scalability and UX yet it still stands there as king a decade after its inception, why? purely because of it and the community’s security first approach .
As this is the only way something can stand the test of time.
If we aim to build a platform that would last generations or forever we should look in the same direction as well.

this approach is ultimately what will bring the most and long lasting adoption as more users will see this and be ready to trust the platform with their assets.

Another point to this is. we are still uncertain how big or small of a pillar support to the price of $STX is its utility as the sole gas token.

Yes according to past data we have right now it might indicate that the STX main value accrual mechanism and primary utility is stacking and not gas fee. But this might change in the future. I will not go into my points on why or how right now. But what i want to bring to attention is this

Stacks is still in its infancy and baby phase right now. real world mass adoption is far from present. thus the data that has been collected previously does not accurately represent the real behavior of the ecosystem with adoption.
Thus making decisions that would last throughout the entirety of the ecosystem solely on the limited past data acquired would not be very wise. This is akin to Apple making decisions for 2040 based on the what they information they had till 1977

mind you, its still fine if Apple or any other corporation did that as they can just roll it back after if it does’nt work out. But this is a flexibility a blockchain just cannot afford .

2. The above point being said , there is a much bigger issue at bay. As @jude points out if a day comes that miners start actively preferring any other asset over STX for collecting gas fee, the domino effect can cause the entire stacks chain to collapse.

i would not go deeper into points why or why not STX will always remain the most preferrable asset to mine , that is for another deeper discussion altogether but i what i want to say is.

Until rigorous research effort has been put into on this topic and this can be proved with very very high confidence .
We should be very scared of implementing anything in this direction.

#######

Now these things being said i am not against stacks growing or making steps for its adoptability.as @muneeb pointed out there is a good scope that this change might bring in a adoption wave for the ecosystem.

Nor am i pushing stacks to become completely stone walled like btc .
Just that the ecosystem should be very careful when making and deciding on such foundational change especially one that might compromise the security of it.

For the time being the best solution i see that gives the user the advantage of using SBTC directly as gas while still not compromising on the security of the network is the AMM approach.

Can the dev team work on a special transaction type. that can be accepted by miners which puts through the sbtc for required for gas fee to an AMM .

Also if this is the case the swap should not be reliant on single AMM in the stacks eco system. as this brings about a problem of a liquidity crunch and price manipulations. rather there needs to be an aggregator option. which would automatically find the best AMM and swap it over there.

I really think this is best mid way over here. bringing better UX and adoption in a way that this proposal originally wishes for, while not comprising on the blockchain security or the user experience either. As it would make no difference to the end users. and all the AMM work is handled completely invisible to the user.

2 Likes