Subject: Re: [bitcoin-dev] [patch] Switching Bitcoin Core to sqlite db

From: Gregory Maxwell <[email-masked]>
Date: Sun, 15 Nov 2015 01:08:16 +0000

On Sun, Nov 15, 2015 at 1:02 AM, Peter R <[email-masked]> 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.

> In reality, this fear is largely unfounded.

I cited an issue in leveldb (before we used it) where it would
silently fail to return records.

> If the software was written with the philosophy that tracking consensus was more important than bug-for-bug compatibility, it would have returned an exception rather than “invalid.”

That invariant requires the software to be completely free of errors
that would violate it.