Transactions only valid with specific Version Bit to influence miners

themgp

New Member
Aug 1, 2016
4
1
Bitcoin works best when markets decide how Bitcoin evolves, not a small group of individuals (miners, developers, merchants, etc). Right now, the only way for the vast number of spenders and HODLers (i.e. the people who give Bitcoin value) to influence the network with their desires is via posts on forums that have very little influence on the actual behavior of the Bitcoin network. Every user of Bitcoin should have influence over what Bitcoin is.

With that in mind, I'd like to propose a feature that allows Bitcoin users to pay/influence miners only if they signal support for a particular feature (i.e. version bit). This would be a normal bitcoin transaction - it spends inputs to outputs and sets the miner fee to a high enough value to be included in a block (no change here). The only difference is that the transaction is only valid if a specific version bit is enabled. This will encourage miners to enable a specific feature while at the same time, there is a real cost for the transaction creator trying influence miners.

Let's say Alice is interested in a potentially controversial feature, feature Alpha. Alice writes a command line script that creates a new transaction every day with $0.10 in miner fees only if Alpha is enabled and publishes the transaction to the Bitcoin network.

Alice notices no miners have created a block with Alpha enabled so her transaction remains unspent. Since this feature is really important to Alice, Alice decides to increase the miner fee to $10.00 on the transaction. Miners see a transaction with a very large fee - so they decide to create a block with Alpha enabled to collect her fee. This does not enable feature Alpha, it only shows a small amount of miner support for feature Alpha.

Alice publishes her command line script to a popular forum and more like minded users begin to run Alice's script with whatever fee they feel is appropriate to similarly influence the miners. In fact, so many users are now using Alice's script that almost enough Alpha enabled blocks are being created by miners to enable feature Alpha.

But Bob has the opposing view - he strongly believes feature Alpha should not be enabled. Bob sees that the network is about to enable Alpha, so he makes and shares his own script that creates transactions that are only valid if the version bit is disabled.

It is then up to those users that care about Alpha to compete by giving higher fees to miners to influence the blocks miners create.

Miners are economically encouraged to behave neutrally and create whatever block gives the highest total transaction fees. The miners will be aware that even if they hold a specific opinion on Alpha, it makes the most sense for them economically to create a block that has the greatest total miner fee. If they don't behave this way, a competing miner that chooses the largest total fees will have an economic advantage by getting larger transaction fees.

Is it possible to add a new OP code to support such a feature? Is it possible via soft fork? Is there anything else that needs to be implemented before such a feature would work? And most importantly, would it work?
 

jl777

Active Member
Feb 26, 2016
279
345
it is an interesting idea, but I am not sure how you can prevent miner's from just pretending they support the specific bit. You probably would need to make this special tx also use that bit's feature, but maybe this wont always be possible. not sure, depends on details
 
  • Like
Reactions: freetrader

themgp

New Member
Aug 1, 2016
4
1
"Pretending to support the bit" would be the same as "support the bit" - both end up in the block header the same way. If there is enough "pretending" by miners, this eventually becomes what consensus looks like as the feature reaches a certain miner threshold to be enabled on the network.

I'm wondering if it is possible to use Bitcoin's scripting language with a new OP code as opposed to any kind of "special" transaction. New OP codes can be added via soft fork AFAIK - but not sure if an OP code that would do as i described above is possible.
 

freetrader

Moderator
Staff member
Dec 16, 2015
2,806
6,088
It's an interesting thought, but like @jl777 I am asking myself how would it be possible to make this resistant against spoofed support. I don't know of a good way to create a reliable if-and-only-if tie between "feature Alpha" actually existing in a client and "support for feature Alpha" being expressed by a client. And such a tie seems necessary.

The only way I could imagine it is if the code for Bitcoin change proposals migrated into the blockchain, and clients would update themselves based on votes expressed for certain proposals, also in the blockchain.
That's hairy, and sounds like we need a LISP client implementation :)
 

themgp

New Member
Aug 1, 2016
4
1
If i'm not mistaken, this is already how miners show support for soft-forked features - they specify a specific Bitcoin version when a new block is created. That version then gets written to the blockchain. The features do not become active until a specified number of previous blocks indicate approval (say 950 of the last 1000 to show 95% miner approval).

While there is nothing that enforces any specific code is run, this would not be spoofed for the same reason soft forked feature changes aren't spoofed. Miners want to be running the same rules as all other miners - if they aren't, there is the potential for lost revenue.
 

jl777

Active Member
Feb 26, 2016
279
345
i think you are right. if the bit is set, it is just a vote, so I think what you want is a way to get the block version bit into the script's stack and then have an opcode that checks for a specific bit.

Then if it fails, the block wouldnt confirm as it is an illegal transaction, for a bit that is not supported much it could be many confirmations before a miner would be able to confirm it.

The implementation issue is that this cuts across layers... Using data from the blockheader inside a spend script. I think it would be possible, but unlikely that it will be adopted. Seems a lot of possible things to go wrong for what is basically a financial incentive for a potentially political issue. Not sure that is what belongs inside a spendscript.
 

themgp

New Member
Aug 1, 2016
4
1
Your statement of implementation sounds correct to me. I believe that if version bits are enabled (which i do not believe are), checking if a specific bit is enabled (indicating a specific feature) could then be done via bitwise-and operations.

This is definitely to address Bitcoin's political issues. I believe Bitcoin's biggest problem right now is with governance. There is currently no reliable / transparent / provable voting mechanism. The above proposal provides very clear costs and incentives.

Do you have any thoughts on what could go wrong (assuming correctly implemented)?
 
  • Like
Reactions: HelloGuy

donald26

Active Member
Feb 2, 2024
188
0
HOW YOU CAN RECOVER YOUR LOST CRYPTO/FUNDS: Lost hope in a crypto scam? I got my $394,330 back! I invested $430,000 in a bogus crypto site. Big returns promised, withdrawals blocked, extra fees demanded – it was a nightmare. Feeling trapped, I even considered the unthinkable. My family helped me through it, and my niece suggested HACKERSTEVE911. They'd helped her with grades, but I'd never thought of them for this. I contacted them, expecting little. But within four days, they recovered $394,330 back to my wallet! My hope, my life, was back. If you're in a similar situation, don't lose hope. Contact them on hackersteve911@gmail.com
 

Shahadatkhan00

Active Member
Jan 28, 2024
187
2
Feast upon the abundance of opportunities in the crypto universe by staking $UP on TonTogether's #TonUp Launchpad. Secure your place in the race towards a decentralized future and claim your portion of the 100M $TOT tokens. Don't miss out on this incredible chance! Join us today: https://go.tonup.io/GldKvG #TogetherTON #Tot #TON #web3 #innovation #Crypto