12

How can we trust supply won't be increased by just a few lines of code?

Peter Mortensen
  • 394
  • 2
  • 9
thevikas
  • 303
  • 2
  • 9
  • 9
    I'd say a bigger worry in 2140 would be the size of the block chain ledger and whether or not there is enough bandwidth to efficiently pass it around the internet. It's already up to 350 GB... – stix Jun 07 '21 at 21:55
  • There are several arguments that would help quelm this. For starters, not every user on the network has to have a copy of the entire blockchain. They may only require the last $n$ blocks to sync with the network. Not every user must be a full node. The full nodes would store the entire blockchain. Additionally, Moores law states that size should not be an issue in 2140. – Hamish Gibson Jun 09 '21 at 11:47
  • 1
    Relying on Moore's Law to solve the issue with large chain size is unrealistic, especially given that Moore's Law has slowed significantly in recent years. I like the argument of having lighter nodes for the average user, and have seen plenty of blockchains take this approach. – Matthew Ludwig Jun 09 '21 at 15:47
  • @HamishGibson Moore's law has both been shown to be incorrect in recent years and has nothing to do with internet transfer speeds or the cost of storage space – Bitsplease Jun 09 '21 at 16:25

3 Answers3

24

The bitcoin network is composed of 'bitcoin full nodes', which are computers located all around the world, each one running independently to verify the state of the network.

Part of that verification includes making sure that the right number of coins are being created with each passing block, such that the total number of coins in existence is known, and predictable.

To change this 'coin issuance schedule', you would have to change the code running on all of those computers, so that they would all independently agree on some new issuance schedule, and could all continue to verify which blocks are valid (or not), in independent consensus. If you could only change the code on some of those computers, then those computers would start to follow blocks which the remaining bitcoin network nodes would consider invalid, effectively creating an altcoin-fork of the network (similar to what happened with 'bitcoin cash').

Anybody, at any point in time, could create some software that changes the issuance schedule. Thats easy. The hard part is convincing everyone that is running a bitcoin full node to switch to this new code, which creates more coins. Nobody has the authority to push such a change onto the network (top-down governance), rather it is the independent choices of all of the network's nodes (bottom-up governance) that defines the network.

So the answer is that you don't have to trust someone to not increase the supply. You just have to run some code that will verify that they haven't.

chytrik
  • 18,170
  • 3
  • 19
  • 48
  • Small point, but wouldn't you have to change the code on just a majority of the computers? – Jiminion Jun 07 '21 at 21:12
  • 6
    @Jiminion doing so would simply cause those computers to fork off (creating an altcoin network), & any computers running the original code would just ignore them, and continue on as normal. There is some nuance (ie, how much hashpower each network would have pointed at it), but importantly: even if a majority of nodes try to change the rules, that would not force the remaining nodes to follow suit. You may be confusing this with a majority attack, in which the attacker controls >50% of the hashpower (but such an attacker would not be able to arbitrarily change the network rules either). – chytrik Jun 07 '21 at 21:19
  • 1
    The thing is that if majority ofplayers are convinced to follow the fork, then the remaining ones in the old network will be screwed. That's another thing though. – akostadinov Jun 08 '21 at 12:03
  • 1
    "you would have to change the code running on all of those computers" doesn't this happen each time the core codebase is updated for non-backward-compatible changes such as some performance, most bug fixes, the proposed switch to proof-of-stake or other reasons anyway? – Moo Jun 09 '21 at 00:31
  • 2
    There has never (that I'm aware of) been a credible proposal to switch bitcoin to proof of stake. And no, generally speaking new releases of Bitcoin Core do not contain backward-incompatible changes. (That's one of the key differences between Bitcoin and, say, Ethereum.) – Glenn Willen Jun 09 '21 at 01:02
  • @GlennWillen Did not know this. So early bitcoin client of 2011 or before will still be valid node for all other peers and allowed to host a valid wallet? I think taproot is probably going to be change this. – thevikas Jun 09 '21 at 11:35
  • I don't think this addresses OPs question. It's not about a "hacker" changing the code. It's about the actual code changing, for real. And I don't think there's a way around it other than hoping the demand will remain high enough to accomodate 2x the amount of coins. Pretty much like a stock split. – maaw Jun 09 '21 at 15:29
  • 1
    I think you're missing the point of the answer, the code technically can't change for real. The Bitcoin blockchain is made up of the network of nodes, users, businesses, etc... that operate on it. Bitcoin could be forked, but which of the two chains is considered "Bitcoin" all comes down to what the miners and the community choose to support. The answer here is stating that the code can't change on the current network, and whatever happens with forks is probably for the best. For examples you can look at Bitcoin and Bitcoin Cash or Ethereum and Ethereum Classic. – Matthew Ludwig Jun 09 '21 at 15:56
  • @thevikas yes, old clients can still sync to the network (with the nuanced exception of the consensus split when bitcoin-core upgraded to levelDB in v0.8.0, iirc software older than that needs a small tweak to the database memory lock limits in order to properly sync to the network). Taproot does not change this, the taproot code is still backwards compatible. Centralized altcoins can (and do) hardfork ad infinitum, but imo it would be almost impossible to convince users to hardfork the bitcoin network without encountering some absolutely critical bug that warranted such a thing. – chytrik Jun 09 '21 at 17:11
  • 1
    There are some technicalities -- old clients can sync the network past major changes like segwit/taproot, but they will not understand or validate scripts from the "new world" -- they will treat them as automatically true. However, they will also never generate addresses of their own which use such scripts, so this does not threaten their own security. Depending on their age, and the address format used, they may or may not be able to send to newer scripts they don't understand. – Glenn Willen Jun 10 '21 at 08:09
9

Well, the title is the only question, how can we trust supply wont be increased by just a few lines of code?

Just don't make any such changes to your code and you will never see an increased supply. You control the code running on your computer. If you never want to see an increased supply, never change your code in that way.

You can, of course, only interoperate with people who also don't want to see an increased supply. So the real issue has nothing to do with changes in code, it has to do with wanting a guarantee that there will still be people who don't want changes in the supply for you to interoperate with.

But you cannot ever force anyone to interoperate with you if they don't want to.

David Schwartz
  • 51,554
  • 6
  • 106
  • 178
  • 2
    Watching Bitcoin desync because half the world wants to increase supply and half doesn't would be fun. – Joshua Jun 08 '21 at 20:37
  • 2
    Great answer that explains in laymans terms the underlying technical details. I especially liked the way the second paragraph is worded and the fact that it doesn't use "fork" or other technical terms. – Matthew Ludwig Jun 09 '21 at 15:58
0

The bitcoin network is composed of 'bitcoin full nodes'... to change this 'coin issuance schedule', you would have to change the code running on all of those computers

Regardless of how many times this statement is repeated (and upvoted on SE!), it is obviously wrong to anyone willing to spend even a few minutes thinking about it.

Except for a few special ones (like ones that happened to be running at Coinbase and other influential places like that), full nodes have no influence on the block chain whatsoever. Nodes do not create blocks, miners do. It is the code that is running on the miners' machines that matters. And, at some point, incentives will align for the miners to do something to replace revenue from the waning block rewards, and the politics will incentivize the few influential nodes to follow this new chain since it will have the hashpower behind it (continuing to follow an underpowered chain could have disastrous results).

If you still believe that full nodes matter at all, consider this: there are generally 10's of thousands of full nodes on the network at any given moment. I could, sitting here at my desk, easily spin up 100,000 full nodes and get them integrated into the network within the next 24 hours without even maxing out my credit cards. I would then control the vast majority of full nodes. So why don't I do this? (Or more importantly, why doesn't anyone else with more resources than me do it?) Because there is no benefit to controlling any number of non-influential nodes. None. There are only a few dozen nodes on earth that matter, and they are the only ones that matter, and they are controlled by a small number of people who may someday have incentives to allow the increase the supply of bitcoins.

See longer answer here... https://bitcoin.stackexchange.com/a/108202/113175

Note that it is very likely that this answer will be heavily downvoted and will attract comments vehemently scolding me for being an idiot- while never offering any actual rebuttal to my argument. This too is a signal!

bigjosh
  • 317
  • 1
  • 9