This is a new implementation of the incremental merkle tree used by our scheme to witness commitments to spendable value. It serves as a fixed-sized accumulator. This new construction has a much simpler API surface area, avoids memory safety issues, remains pruned at all times, avoids serialization edge cases, has more efficient insertion, and is abstract over the depth and hash function used at the type level. Further, it lays the groundwork for efficient "fast-forwarding" of witnesses into the tree as the treestate is updated.
142 lines
4.2 KiB
Makefile
142 lines
4.2 KiB
Makefile
TESTS += test/test_bitcoin
|
|
bin_PROGRAMS += test/test_bitcoin
|
|
TEST_SRCDIR = test
|
|
TEST_BINARY=test/test_bitcoin$(EXEEXT)
|
|
|
|
|
|
EXTRA_DIST += \
|
|
test/bctest.py \
|
|
test/bitcoin-util-test.py \
|
|
test/data/bitcoin-util-test.json \
|
|
test/data/blanktx.hex \
|
|
test/data/tt-delin1-out.hex \
|
|
test/data/tt-delout1-out.hex \
|
|
test/data/tt-locktime317000-out.hex \
|
|
test/data/tx394b54bb.hex \
|
|
test/data/txcreate1.hex \
|
|
test/data/txcreate2.hex \
|
|
test/data/txcreatesign.hex
|
|
|
|
JSON_TEST_FILES = \
|
|
test/data/script_valid.json \
|
|
test/data/base58_keys_valid.json \
|
|
test/data/base58_encode_decode.json \
|
|
test/data/base58_keys_invalid.json \
|
|
test/data/script_invalid.json \
|
|
test/data/tx_invalid.json \
|
|
test/data/tx_valid.json \
|
|
test/data/sighash.json \
|
|
test/data/merkle_roots.json \
|
|
test/data/merkle_serialization.json \
|
|
test/data/merkle_witness_serialization.json \
|
|
test/data/merkle_path.json
|
|
|
|
RAW_TEST_FILES = test/data/alertTests.raw
|
|
|
|
GENERATED_TEST_FILES = $(JSON_TEST_FILES:.json=.json.h) $(RAW_TEST_FILES:.raw=.raw.h)
|
|
|
|
BITCOIN_TESTS =\
|
|
test/arith_uint256_tests.cpp \
|
|
test/bignum.h \
|
|
test/alert_tests.cpp \
|
|
test/allocator_tests.cpp \
|
|
test/base32_tests.cpp \
|
|
test/base58_tests.cpp \
|
|
test/base64_tests.cpp \
|
|
test/bip32_tests.cpp \
|
|
test/bloom_tests.cpp \
|
|
test/checkblock_tests.cpp \
|
|
test/Checkpoints_tests.cpp \
|
|
test/coins_tests.cpp \
|
|
test/compress_tests.cpp \
|
|
test/crypto_tests.cpp \
|
|
test/DoS_tests.cpp \
|
|
test/equihash_tests.cpp \
|
|
test/getarg_tests.cpp \
|
|
test/hash_tests.cpp \
|
|
test/key_tests.cpp \
|
|
test/main_tests.cpp \
|
|
test/mempool_tests.cpp \
|
|
test/miner_tests.cpp \
|
|
test/mruset_tests.cpp \
|
|
test/multisig_tests.cpp \
|
|
test/netbase_tests.cpp \
|
|
test/pmt_tests.cpp \
|
|
test/policyestimator_tests.cpp \
|
|
test/pow_tests.cpp \
|
|
test/reverselock_tests.cpp \
|
|
test/rpc_tests.cpp \
|
|
test/sanity_tests.cpp \
|
|
test/scheduler_tests.cpp \
|
|
test/script_P2SH_tests.cpp \
|
|
test/script_tests.cpp \
|
|
test/scriptnum_tests.cpp \
|
|
test/serialize_tests.cpp \
|
|
test/sighash_tests.cpp \
|
|
test/sigopcount_tests.cpp \
|
|
test/skiplist_tests.cpp \
|
|
test/test_bitcoin.cpp \
|
|
test/test_bitcoin.h \
|
|
test/timedata_tests.cpp \
|
|
test/transaction_tests.cpp \
|
|
test/uint256_tests.cpp \
|
|
test/univalue_tests.cpp \
|
|
test/util_tests.cpp \
|
|
test/sha256compress_tests.cpp \
|
|
test/merkle_tests.cpp
|
|
|
|
if ENABLE_WALLET
|
|
BITCOIN_TESTS += \
|
|
test/accounting_tests.cpp \
|
|
wallet/test/wallet_tests.cpp \
|
|
test/rpc_wallet_tests.cpp
|
|
endif
|
|
|
|
test_test_bitcoin_SOURCES = $(BITCOIN_TESTS) $(JSON_TEST_FILES) $(RAW_TEST_FILES)
|
|
test_test_bitcoin_CPPFLAGS = $(BITCOIN_INCLUDES) -I$(builddir)/test/ $(TESTDEFS)
|
|
test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \
|
|
$(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) $(LIBZEROCASH) $(LIBZEROCASH_LIBS)
|
|
if ENABLE_WALLET
|
|
test_test_bitcoin_LDADD += $(LIBBITCOIN_WALLET)
|
|
endif
|
|
|
|
test_test_bitcoin_LDADD += $(LIBBITCOIN_CONSENSUS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS)
|
|
test_test_bitcoin_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) -static
|
|
|
|
nodist_test_test_bitcoin_SOURCES = $(GENERATED_TEST_FILES)
|
|
|
|
$(BITCOIN_TESTS): $(GENERATED_TEST_FILES)
|
|
|
|
CLEAN_BITCOIN_TEST = test/*.gcda test/*.gcno $(GENERATED_TEST_FILES)
|
|
|
|
CLEANFILES += $(CLEAN_BITCOIN_TEST)
|
|
|
|
bitcoin_test: $(TEST_BINARY)
|
|
|
|
bitcoin_test_check: $(TEST_BINARY) FORCE
|
|
$(MAKE) check-TESTS TESTS=$^
|
|
|
|
bitcoin_test_clean : FORCE
|
|
rm -f $(CLEAN_BITCOIN_TEST) $(test_test_bitcoin_OBJECTS) $(TEST_BINARY)
|
|
|
|
check-local:
|
|
@echo "Running test/bitcoin-util-test.py..."
|
|
$(AM_V_at)srcdir=$(srcdir) PYTHONPATH=$(builddir)/test $(srcdir)/test/bitcoin-util-test.py
|
|
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check
|
|
|
|
%.json.h: %.json
|
|
@$(MKDIR_P) $(@D)
|
|
@echo "namespace json_tests{" > $@
|
|
@echo "static unsigned const char $(*F)[] = {" >> $@
|
|
@$(HEXDUMP) -v -e '8/1 "0x%02x, "' -e '"\n"' $< | $(SED) -e 's/0x ,//g' >> $@
|
|
@echo "};};" >> $@
|
|
@echo "Generated $@"
|
|
|
|
%.raw.h: %.raw
|
|
@$(MKDIR_P) $(@D)
|
|
@echo "namespace alert_tests{" > $@
|
|
@echo "static unsigned const char $(*F)[] = {" >> $@
|
|
@$(HEXDUMP) -v -e '8/1 "0x%02x, "' -e '"\n"' $< | $(SED) -e 's/0x ,//g' >> $@
|
|
@echo "};};" >> $@
|
|
@echo "Generated $@"
|