Your Gmaxwell exchange [combined summary]



Individual post summaries: Click here to read the original discussion on the bitcoin-dev mailing list

Published on: 2015-09-02T18:51:08+00:00


Summary:

In an email to the bitcoin-dev mailing list, Justus Ranvier outlined three essential properties that bitcoin users should have. Firstly, they should own their bitcoins and retain exclusive control over their balances. Secondly, their fraction of the bitcoin ledger must not be diluted. Lastly, users should be able to spend their coins without requiring permission from a third party. However, these properties are only possible if the system remains decentralized. Both miner and full node over-centralization could result in permission requirements to submit transactions, transactions being reversed without consent, and dilution of users' fractions of the ledger. Without decentralization, bitcoin is just an inefficient ledger database, and all of its attractive properties are derived from spreading responsibility as widely globally as possible.In a discussion on decentralized bitcoin development, Eric Voskuil argues against the idea of forking as a means of achieving decentralization. He believes that true decentralization requires actually doing so, and that even forking is a major commitment. He also notes that common consensus check code is available in several bitcoin implementations, and that the claim that this is outrageously difficult is misleading. In response to Voskuil's comments, another participant in the discussion argues that there is no requirement for there to be multiple interpretations of the consensus code, citing the existence of libbitcoinconsensus. They question why Bitcoin's survival would be predicated on reimplementation. Finally, Voskuil acknowledges that these issues apply to Bitcoin Core as well as other implementations.In an email exchange on the Bitcoin-dev mailing list, Monarch made a comment about the difficulty of software development with regards to decentralized bitcoin development. Dave Collins responded by stating that there have not been any btcd mainnet forks since it came out of alpha and that common consensus check code is now available in several bitcoin implementations. He claims that this is just engineering work that needs to get done if Bitcoin is to survive. Monarch then clarified that his comment was not intended as an attack against any specific software but rather to highlight the difficulty of working on decentralized bitcoin development. He noted that the use of CPP and OpenSSL can make it difficult to infer behavior and that there are likely more problems lurking in the transaction environment. However, these issues affect the Satoshi client as much as other implementations and do not support the premise that alternative implementations are inherently more difficult to develop.In a discussion on the bitcoin-dev mailing list, Dave Collins was curious about btcd mainnet forks that had occurred since it came out of alpha. However, he noted that there haven't been any such forks yet, although he didn't rule out the possibility of one happening in the future. He also clarified that his point was not to attack btcd, but rather to emphasize the difficulty of software development in this space.Collins pointed out that Bitcoin Core itself had experienced actual forks on the mainnet during the same period. He acknowledged that no developer is perfect and that mistakes are bound to happen from time to time. The bigger picture, however, is that the overall development process for cryptocurrency is challenging due to the complexity of the technology involved.One of the issues with developing cryptocurrency software is that it's difficult to know what behavior is inferred by the use of CPP and OpenSSL. Collins noted that the recent DER encoding consensus failure highlighted this fact. Additionally, there are likely other problems lurking in the transaction environment, which can be easy to overlook given how complex Bitcoin script can be. Overall, the conversation underscored the challenges that developers face when working with these cutting-edge technologies.The person asking the question in this context is interested to know about the supposed btcd mainnet forks that have occurred due to a consensus failure since it came out of alpha. The answer states that there hasn't been one so far, but there might be in the future, just as it can happen with Bitcoin Core as well. A potential instance was found due to fuzzing, which prompted an audit of the code base and resulted in improved test coverage in Bitcoin Core. However, Bitcoin Core has had actual forks on mainnet during the same period.The author believes that the community needs to take the reality seriously that an infrastructure built on a single implementation is incredibly fragile and prone to unintentional hard forks regardless of the existence of alternative implementations. The absence of real disaster prevention measures for unintentional incompatibilities between different versions of the same implementation adds to this fragility. It is mentioned that several improvements such as improved test coverage and more robust and modular code have already been made after the incident and that it has not ended poorly by any means.Furthermore, the post made by Monarch via bitcoin-dev is also referred to, where they state that even heroic attempts at making consensus-compatible re-implementations have ended rather poorly. Bitcoin-ruby and btcd have collectively had numerous consensus failures, some only recently found by fuzzing the scripting environment.


Updated on: 2023-08-01T15:49:46.075445+00:00