Auto merge of #889 - ebfull:new-imt-redux, r=ebfull

Implement and integrate new Incremental Merkle Tree

This supersedes #823.

----

This is an implementation of a new incremental merkle tree with

* no memory safety issues
* a more sensible internal design
* better space efficiency (tree representation, witnessing)
* simpler API

It is intended that this tracks the behavior of the previous tree, which it does, as verified by tests. I even wrote a little circuit for testing that all the paths work.

This PR also integrates the tree into the codebase and deprecates the old tree in almost all of our code. (I left it alone in `zerocashTest` but everything else has been changed.)

This change is compatible with the testnet but you will need to clear your *local* blockchain data out since the serialized representation of the merkle tree is now different.

Closes #517, Closes #519, Closes #591, Closes #460, Closes #473
This commit is contained in:
zkbot
2016-05-03 17:33:27 +00:00
29 changed files with 1389 additions and 464 deletions

View File

@@ -1,6 +1,5 @@
bin_PROGRAMS += \
zerocash/GenerateParamsForFiles \
zerocash/tests/merkleTest \
zerocash/tests/utilTest \
zerocash/tests/zerocashTest \
zerocash/tests/test_zerocash_pour_ppzksnark
@@ -13,14 +12,6 @@ zerocash_GenerateParamsForFiles_LDADD = \
$(LIBBITCOIN_CRYPTO) \
$(LIBZEROCASH_LIBS)
# tests for our incremental merkle tree
zerocash_tests_merkleTest_SOURCES = zerocash/tests/merkleTest.cpp
zerocash_tests_merkleTest_LDADD = \
$(BOOST_LIBS) \
$(LIBZEROCASH) \
$(LIBBITCOIN_CRYPTO) \
$(LIBZEROCASH_LIBS)
# tests for utilities that come with zerocash
zerocash_tests_utilTest_SOURCES = zerocash/tests/utilTest.cpp
zerocash_tests_utilTest_LDADD = \