From: Mark Friedenbach <mark@friedenbach.org>
To: "Jorge Timón" <jtimon@jtimon.cc>
Cc: bitcoin-dev@lists.linuxfoundation.org
Subject: Re: [bitcoin-dev] Original Vision
Date: Sun, 28 Jun 2015 09:15:28 -0700 [thread overview]
Message-ID: <CAOG=w-u4UVuuV=+9-8u+ZHLgf7CCqZ17wosQBit4CZiG738JFQ@mail.gmail.com> (raw)
In-Reply-To: <CABm2gDq31doL62a2HwY8kSuB1zPMhz6OPR0Qa9X7thbZBdNTOQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2345 bytes --]
Assuming randomly-picked outputs, it's actually worse. The slowdown factor
has to do with the depth of the tree, and TXO and STXO trees are always
growing. It's still complexity O(log N), but with TXO/STXO N is the size of
the entire block chain history, whereas with UTXO it's just the set of
unspent transaction outputs.
Of course that's not a fair assumption since in an insertion-ordered tree
using the Merkle mountain range data structure would have significantly
shorter paths for recent outputs. But the average case might be about the
same, and it comes with a slew of other tradeoffs that make it hard to
compare head-to-head in the abstract. Ultimately both need to be written
and benchmarked.
But it is not the case that TXO/STXO gives you constant time updates. The
append-only TXO tree might be close to that, but you'd still need the spent
or unspent tree which is not insertion ordered. There are alternatives like
updating the TXO tree and requiring blocks and transactions to carry proofs
with them (so validators can be stateless), but that pushes the same
(worse, actually) problem to whoever generated or assembled the proof. It
may be a tradeoff worth making, but it's not an easy answer...
On Sun, Jun 28, 2015 at 8:51 AM, Jorge Timón <jtimon@jtimon.cc> wrote:
> On Sun, Jun 28, 2015 at 5:23 PM, Mark Friedenbach <mark@friedenbach.org>
> wrote:
> > UTXO commitments are the nominal solution here. You commit the validator
> state in each block, and then you can prove things like a negative by
> referencing that state commitment. The trouble is this requires maintaining
> a hash tree commitment over validator state, which turns out to be insanely
> expensive. With the UTXO commitment scheme (the others are not better) that
> ends up requiring 15 - 22x more I/O during block validation. And I/O is
> presently a limiter to block validation speed. So if you thought 8MB was
> what bitcoin today could handle, and you also want this commitment scheme
> for fraud proofs, then you should be arguing for a block size limit
> decrease (to 500kB), not increase.
>
> What about a TXO and a STXO O(1)-append commitment? That shouldn't
> cause that much overhead and you can build UTXO from TXO - STXO.
> I know it's not so efficient in some respects but it scales better I think.
>
[-- Attachment #2: Type: text/html, Size: 2736 bytes --]
next prev parent reply other threads:[~2015-06-28 16:15 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-28 0:14 [bitcoin-dev] Original Vision Santino Napolitano
2015-06-28 1:52 ` Aaron Voisine
2015-06-28 2:13 ` Patrick Strateman
2015-06-28 4:54 ` Eric Lombrozo
2015-06-28 5:29 ` Patrick Strateman
2015-06-28 5:32 ` Eric Lombrozo
2015-06-28 5:48 ` Eric Lombrozo
2015-06-28 15:23 ` Mark Friedenbach
2015-06-28 15:51 ` Jorge Timón
2015-06-28 16:15 ` Mark Friedenbach [this message]
2015-06-28 21:53 ` Santino Napolitano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAOG=w-u4UVuuV=+9-8u+ZHLgf7CCqZ17wosQBit4CZiG738JFQ@mail.gmail.com' \
--to=mark@friedenbach.org \
--cc=bitcoin-dev@lists.linuxfoundation.org \
--cc=jtimon@jtimon.cc \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox