> On Nov 14, 2015, at 5:08 PM, Gregory Maxwell <gmaxw...@gmail.com> wrote: > > On Sun, Nov 15, 2015 at 1:02 AM, Peter R <pete...@gmx.com> wrote: >> Hi Greg, >> >> Like you said, the issue with using more than one database technology is not >> that one node would prove that Block X is valid while the another node >> proves that Block X is NOT valid. Instead, the problem is that one node >> might say “valid” while the other node says “I don’t know.” > > Sometimes errors are such that you can catch them (if you're super > vigilant and know an error is even possible in that case)-- and > indeed, in that case you can get a "I don't know, something is > wrong.", other times errors are undetectable.
Agreed. There are two cases to consider: Type 1. One implementation says “yes” or “no,” while the other says “I don’t know”, and Type 2. One implementation says “yes” and the other says “no,” because of a bug. My previous email described how Type 1 consensus failures can be safely dealt with. These include many kinds of database exceptions (e.g., the LevelDB fork at block #225,430), or consensus mismatches regarding the max size of a block. Type 2 consensus failures are more severe but also less likely (I’m not aware of a Type 2 consensus failure besides the 92 million bitcoin bug from August 2010). If Core was to accept a rogue TX that created another 92 million bitcoins, I think it would be a good thing if the other implementations forked away from it (we don’t want bug-for-bug compatibility here). This once again reveals the benefits of multiple competing implementations. Sincerely, Peter _______________________________________________ bitcoin-dev mailing list bitcoin-dev@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev