I'm fine with 2 Merkle trees. Seems like there won't be much that's non-witness 
in the kernel though.

- Igno

P.S. Loving all the mailing list activity today :)




-------- Original Message --------
Subject: Re: [Mimblewimble] Compact blocks
Local Time: March 7, 2017 11:24 AM
UTC Time: March 7, 2017 7:24 PM
From: merop...@protonmail.com
To: mimblewimble@lists.launchpad.net <mimblewimble@lists.launchpad.net>


From: moaningmyr...@protonmail.com

It should be sufficient for the output and its rangeproof to be separately 
committed to the chain to prevent ambiguity. Committing to rangeproofs, which 
are witness data and can be ignored (at a trust tradeoff), will reduce 
flexibility.

This is a good point. I'm not opposed to the rangeproof and output having 
separate identifiers. In the context of the compact block discussion I wanted 
to emphasize the ability to unambiguously commit to a specific (output, range 
proof) pair to avoid a search problem that quickly becomes untenable, but if 
this comes in the form of two separate identifiers resolved independently, that 
should be fine.

Right. It might be better to to have two Merkle structures. I know Igno wanted 
only one, for simplicity, but I think it's easiest and most efficient for 
witness data to be in a parallel tree. So you have a tree with kernels, inputs, 
outputs, and in parallel you have a tree with the respective signatures, "input 
witnesses", and rangeproofs.

This makes things unambiguous: to find a rangeproof for an output, you look in 
the witness tree at the same position that you found the output in the data 
tree.

Input witnesses could be nothing, or maybe it makes sense for them to be full 
Merkle proofs that the referenced inputs are currently in the UTXO tree.
-- 
Mailing list: https://launchpad.net/~mimblewimble
Post to     : mimblewimble@lists.launchpad.net
Unsubscribe : https://launchpad.net/~mimblewimble
More help   : https://help.launchpad.net/ListHelp

Reply via email to