Bitcoin Forum
April 26, 2024, 01:15:41 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Risks of big changes to Bitcoin Core  (Read 1738 times)
CuriousCoiner (OP)
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
February 15, 2015, 11:24:00 PM
 #1

What can go wrong when users/miners on the network use outdated versions of the protocol?

As Bitcoin grows in popularity, more developers want to find ways to contribute to the source. Wallets, online markets, etc. have lots of room for improvement and the risks of making changes there seem manageable.

But what about non-trivial changes to the Bitcoin core protocol? There’s always lots of discussion about ways to mitigate risks of 51% attacks and other vulnerabilities. Like adding conditions to accepting longer blockchains, just as an example.

Suppose a big change was actually made, there’s nothing forcing miners to take the update. What are some of the risks of having miners on the network using different versions of the protocol? Not necessarily malicious clients, just outdated ones?

If a big change were introduced, what would things look like as adoption ramped up to >50% of users?
1714137341
Hero Member
*
Offline Offline

Posts: 1714137341

View Profile Personal Message (Offline)

Ignore
1714137341
Reply with quote  #2

1714137341
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714137341
Hero Member
*
Offline Offline

Posts: 1714137341

View Profile Personal Message (Offline)

Ignore
1714137341
Reply with quote  #2

1714137341
Report to moderator
1714137341
Hero Member
*
Offline Offline

Posts: 1714137341

View Profile Personal Message (Offline)

Ignore
1714137341
Reply with quote  #2

1714137341
Report to moderator
1714137341
Hero Member
*
Offline Offline

Posts: 1714137341

View Profile Personal Message (Offline)

Ignore
1714137341
Reply with quote  #2

1714137341
Report to moderator
Spjuth
Newbie
*
Offline Offline

Activity: 55
Merit: 0



View Profile
February 16, 2015, 09:47:59 PM
 #2

I have thought about this and I see big risks.

There are some scary code in the reference implementation and it has already happened that a new version has hard forked the blockchain because of a bug.

Let's say ~50% of the mining capacity uses the reference implementation and ~50% uses another implementation. What if a bug again causes a hard fork. How can you in a reasonable time get a consensus on which one of the miners needs to change version/implementation? And if you can not get consensus and let's say a day passes, how can you ever convince any miners to abandon their fork and be the ones to pass up on their earned rewards?

I see a scenario as this as quite possible, given that it has happened before. With more pools spread out over the world and less consensus on what is the correct implementation a scenario like this could break bitcoin.
gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4158
Merit: 8382



View Profile WWW
February 16, 2015, 10:09:09 PM
Last edit: February 16, 2015, 10:22:20 PM by gmaxwell
 #3

There are some scary code in the reference implementation
What "scary code" are you referring to?
Quote
and it has already happened that a new version has hard forked the blockchain because of a bug.
This is incorrect Versions prior to 0.8 were inconsistent with _themselves_: Block verification was non-deterministic for some large blocks, with acceptance depending on the precise layout on disk of some database data structures. The fork was triggered by a miner that changed their settings to produce larger blocks than typical, and would have happened without any new versions in play.  The precise nature of the issue was initially misunderstood as being 0.8 vs before, because all the 0.8 were on one side, but in fact most of the split was pre-0.8 vs pre-0.8.

This may or may not have much relevance to your thinking, but please get your facts straight. It's irritating to see this misinformation/misunderstanding continually repeated.

Quote
Let's say ~50% of the mining capacity uses the reference implementation and ~50% uses another implementation.
It's not what miners are using that matters. If your are mining and your blocks are being rejected by the user's systems because they fail validation then you're not actually mining, regardless of how much hashrate you have.

Suppose a big change was actually made, there’s nothing forcing miners to take the update. What are some of the risks of having miners on the network using different versions of the protocol? Not necessarily malicious clients, just outdated ones?
(since you appear to be asking about intentional changes:)

When changes are adopted to the blockchain rules they're made in a way which is intentionally backwards compatible with old versions, called a "soft fork". This is accomplished by constructing the change so that it strictly narrows the set of permissible blocks. Because nothing invalid became valid, old nodes also accept these blocks.  To avoid issues where old nodes would create blocks that get forked off, an effort is made to only narrow the validity of blocks in ways that an old node wouldn't have constructed an invalid block, and the new rules are only activated when a strong super-majority of miners has signaled an intent to enforce them.

Keep in mind that the vast majority of all conceivable changes are actually bad and open up new attacks: Most things people post about (myself included) turn out to be bad ideas on further reflection.  The 'mitigate 51% attacks' link you provided is, I think, one such example: that approach fails to prevent any interesting attacks (attacker can easily meet the criteria by including many of the prior transactions) and also opens up new attacks where none existed before (by intentionally preparing two forks and broadcasting to half the network simultaneously the network can be cheaply split and work against itself; this is a general flaw pattern in approaches that make block preference depend on multiple strong tie-breakers).
Spjuth
Newbie
*
Offline Offline

Activity: 55
Merit: 0



View Profile
February 18, 2015, 07:34:36 PM
 #4

I will not argue with you gmaxwell since you know the code much better than me.
My fear is about implicit consensus in the code that is prone to bugs. If this code is implemented differently on different clients there can be a fork where we would think there should be consensus.

I hope the libconsensus can help with this.

Peter Wuille explains it well, I think. http://youtu.be/asC_kVJ6sig?t=12m45s
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!