├── .cargo
└── config.offline
├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── bug-report.md
│ ├── feature-request.md
│ └── ux-report.md
├── pull_request_template.md
└── workflows
│ └── book.yml
├── .gitignore
├── CONTRIBUTING.md
├── COPYING
├── Cargo.lock
├── Cargo.toml
├── INSTALL
├── Makefile.am
├── README.md
├── SECURITY.md
├── autogen.sh
├── build-aux
└── m4
│ ├── ax_boost_base.m4
│ ├── ax_boost_chrono.m4
│ ├── ax_boost_filesystem.m4
│ ├── ax_boost_program_options.m4
│ ├── ax_boost_system.m4
│ ├── ax_boost_thread.m4
│ ├── ax_boost_unit_test_framework.m4
│ ├── ax_check_compile_flag.m4
│ ├── ax_check_link_flag.m4
│ ├── ax_check_preproc_flag.m4
│ ├── ax_cxx_compile_stdcxx.m4
│ ├── ax_gcc_func_attribute.m4
│ ├── ax_pthread.m4
│ ├── bitcoin_find_bdb.m4
│ ├── bitcoin_subdir_to_include.m4
│ └── l_atomic.m4
├── code_of_conduct.md
├── configure.ac
├── contrib
├── README.md
├── bitrpc
│ ├── README.md
│ └── bitrpc.py
├── ci-builders
│ ├── buildbot
│ │ ├── Dockerfile-bbworker.apt
│ │ ├── Dockerfile-bbworker.arch
│ │ ├── Dockerfile-bbworker.centos8
│ │ ├── Dockerfile-build-python.apt
│ │ ├── Dockerfile-build.apt
│ │ ├── Dockerfile-build.arch
│ │ ├── Dockerfile-build.centos8
│ │ ├── Dockerfile-gitian.apt
│ │ ├── README.md
│ │ ├── apt-package-list.txt
│ │ ├── bbworker-buildbot.tac
│ │ ├── bbworker-requirements.txt
│ │ └── docker-build.sh
│ └── tekton
│ │ ├── Dockerfile-build.apt
│ │ ├── Dockerfile-build.arch
│ │ ├── Dockerfile-build.centos8
│ │ ├── Dockerfile-tekton-worker
│ │ ├── README.md
│ │ ├── apt-package-tekton-list.txt
│ │ ├── docker-build.sh
│ │ └── requirements.txt
├── ci-workers
│ ├── README.md
│ ├── ansible.cfg
│ ├── files
│ │ └── bashrc
│ ├── grind.yml
│ ├── tasks
│ │ ├── install-brew.yml
│ │ └── install-pip.yml
│ ├── templates
│ │ ├── buildbot-worker.plist.j2
│ │ ├── buildbot-worker.service.j2
│ │ ├── host.ec2.j2
│ │ └── host.j2
│ ├── unix.yml
│ └── vars
│ │ ├── Archlinux.yml
│ │ ├── CentOS.yml
│ │ ├── Debian.yml
│ │ ├── Fedora.yml
│ │ ├── FreeBSD.yml
│ │ ├── MacOSX.yml
│ │ ├── Ubuntu.yml
│ │ ├── buildbot.yml
│ │ └── default.yml
├── debian
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── examples
│ │ └── ycash.conf
│ ├── postinst
│ ├── postrm
│ ├── preinst
│ ├── prerm
│ ├── rules
│ ├── zcash.examples
│ ├── zcash.install
│ └── zcash.manpages
├── devtools
│ ├── README.md
│ ├── fix-copyright-headers.py
│ ├── gen-manpages.sh
│ ├── github-merge.sh
│ ├── optimize-pngs.py
│ ├── security-check.py
│ ├── split-debug.sh
│ ├── symbol-check.py
│ └── test-security-check.py
├── docker
│ ├── .dockerignore
│ ├── .env.example
│ ├── .gitignore
│ ├── Dockerfile
│ ├── README.md
│ ├── docker-compose.yml
│ └── entrypoint.sh
├── gitian-descriptors
│ ├── README.md
│ ├── gitian-linux.yml
│ ├── gitian-osx-signer.yml
│ ├── gitian-osx.yml
│ ├── gitian-win-signer.yml
│ └── gitian-win.yml
├── gitian-downloader
│ ├── daira.asc
│ ├── jack.asc
│ ├── kevin.asc
│ ├── nathan.asc
│ ├── sean.asc
│ └── simon.asc
├── linearize
│ ├── README.md
│ ├── example-linearize.cfg
│ ├── linearize-data.py
│ └── linearize-hashes.py
├── macdeploy
│ ├── README.md
│ └── gen-sdk
├── metrics
│ └── prometheus.yaml
├── qos
│ ├── README.md
│ └── tc.sh
├── seeds
│ ├── README.md
│ ├── generate-seeds.py
│ └── makeseeds.py
├── simulations
│ └── worstcase.py
├── testgen
│ ├── README.md
│ ├── base58.py
│ └── gen_base58_test_vectors.py
├── tidy_datadir.sh
├── zcash-cli.bash-completion
├── zcash-tx.bash-completion
├── zcashd.bash-completion
└── zmq
│ └── zmq_sub.py
├── depends
├── .gitignore
├── Makefile
├── README.md
├── builders
│ ├── darwin.mk
│ ├── default.mk
│ ├── freebsd.mk
│ └── linux.mk
├── config.guess
├── config.site.in
├── config.sub
├── description.md
├── funcs.mk
├── hosts
│ ├── darwin.mk
│ ├── default.mk
│ ├── freebsd.mk
│ ├── linux.mk
│ └── mingw32.mk
├── packages.md
├── packages
│ ├── bdb.mk
│ ├── boost.mk
│ ├── googletest.mk
│ ├── libcxx.mk
│ ├── libevent.mk
│ ├── libsodium.mk
│ ├── native_b2.mk
│ ├── native_ccache.mk
│ ├── native_cctools.mk
│ ├── native_clang.mk
│ ├── native_libtinfo5.mk
│ ├── native_rust.mk
│ ├── packages.mk
│ ├── utfcpp.mk
│ └── zeromq.mk
└── patches
│ ├── bdb
│ └── winioctl-and-atomic_init_db.patch
│ ├── boost
│ └── 6753-signals2-function-fix.patch
│ ├── libevent
│ └── 0001-fix-windows-getaddrinfo.patch
│ ├── libsodium
│ ├── 1.0.15-pubkey-validation.diff
│ └── 1.0.15-signature-validation.diff
│ ├── native_cctools
│ └── ignore-otool.diff
│ └── zeromq
│ └── stats_proxy-missing-braces.diff
├── doc
├── Doxyfile
├── authors.md
├── bips.md
├── book
│ ├── .gitignore
│ ├── book.toml
│ └── src
│ │ ├── README.md
│ │ ├── SUMMARY.md
│ │ ├── design.md
│ │ ├── design
│ │ ├── chain-state.md
│ │ └── coins-view.md
│ │ ├── doc
│ │ └── imgs
│ │ │ ├── logo.png
│ │ │ └── zcashd_screen.gif
│ │ ├── user.md
│ │ └── user
│ │ └── metrics.md
├── developer-notes.md
├── dnsseed-policy.md
├── files.md
├── hotfix-process.md
├── imgs
│ ├── logo.png
│ ├── zcashd_screen.gif
│ └── zcashd_screenshot.png
├── man
│ ├── Makefile.am
│ ├── zcash-cli.1
│ ├── zcash-fetch-params.1
│ ├── zcash-tx.1
│ └── zcashd.1
├── payment-api.md
├── payment-disclosure.md
├── reduce-traffic.md
├── reducing-memory-usage.md
├── release-notes.md
├── release-notes
│ ├── release-notes-0.11.2.z2.md
│ ├── release-notes-0.11.2.z3.md
│ ├── release-notes-0.11.2.z4.md
│ ├── release-notes-0.11.2.z5.md
│ ├── release-notes-0.11.2.z6.md
│ ├── release-notes-0.11.2.z7.md
│ ├── release-notes-0.11.2.z8.md
│ ├── release-notes-0.11.2.z9.md
│ ├── release-notes-1.0.0-beta1.md
│ ├── release-notes-1.0.0-beta2.md
│ ├── release-notes-1.0.0-rc1.md
│ ├── release-notes-1.0.0-rc2.md
│ ├── release-notes-1.0.0-rc3.md
│ ├── release-notes-1.0.0-rc4.md
│ ├── release-notes-1.0.0.md
│ ├── release-notes-1.0.1.md
│ ├── release-notes-1.0.10-1.md
│ ├── release-notes-1.0.10.md
│ ├── release-notes-1.0.11-rc1.md
│ ├── release-notes-1.0.11.md
│ ├── release-notes-1.0.12-rc1.md
│ ├── release-notes-1.0.12.md
│ ├── release-notes-1.0.13-rc1.md
│ ├── release-notes-1.0.13-rc2.md
│ ├── release-notes-1.0.13.md
│ ├── release-notes-1.0.14-rc1.md
│ ├── release-notes-1.0.14.md
│ ├── release-notes-1.0.15-rc1.md
│ ├── release-notes-1.0.15.md
│ ├── release-notes-1.0.2.md
│ ├── release-notes-1.0.3.md
│ ├── release-notes-1.0.4.md
│ ├── release-notes-1.0.5.md
│ ├── release-notes-1.0.6.md
│ ├── release-notes-1.0.7-1.md
│ ├── release-notes-1.0.7.md
│ ├── release-notes-1.0.8-1.md
│ ├── release-notes-1.0.8.md
│ ├── release-notes-1.0.9.md
│ ├── release-notes-1.1.0-rc1.md
│ ├── release-notes-1.1.0.md
│ ├── release-notes-1.1.1-rc1.md
│ ├── release-notes-1.1.1-rc2.md
│ ├── release-notes-1.1.1.md
│ ├── release-notes-1.1.2-rc1.md
│ ├── release-notes-1.1.2.md
│ ├── release-notes-2.0.0-rc1.md
│ ├── release-notes-2.0.0.md
│ ├── release-notes-2.0.1-rc1.md
│ ├── release-notes-2.0.1.md
│ ├── release-notes-2.0.2-rc1.md
│ ├── release-notes-2.0.2.md
│ ├── release-notes-2.0.3-rc1.md
│ ├── release-notes-2.0.3.md
│ ├── release-notes-2.0.4-rc1.md
│ ├── release-notes-2.0.4.md
│ ├── release-notes-2.0.5-1.md
│ ├── release-notes-2.0.5-2.md
│ ├── release-notes-2.0.5-rc1.md
│ ├── release-notes-2.0.5.md
│ ├── release-notes-2.0.6-rc1.md
│ ├── release-notes-2.0.6.md
│ ├── release-notes-2.0.7-1.md
│ ├── release-notes-2.0.7-2.md
│ ├── release-notes-2.0.7-3.md
│ ├── release-notes-2.0.7-rc1.md
│ ├── release-notes-2.0.7.md
│ ├── release-notes-2.1.0-1.md
│ ├── release-notes-2.1.0-rc1.md
│ ├── release-notes-2.1.0.md
│ ├── release-notes-2.1.1-1.md
│ ├── release-notes-2.1.1-rc1.md
│ ├── release-notes-2.1.1-rc2.md
│ ├── release-notes-2.1.1.md
│ ├── release-notes-2.1.2-1.md
│ ├── release-notes-2.1.2-2.md
│ ├── release-notes-2.1.2-3.md
│ ├── release-notes-2.1.2-rc1.md
│ ├── release-notes-2.1.2.md
│ ├── release-notes-3.0.0-rc1.md
│ ├── release-notes-3.0.0.md
│ ├── release-notes-3.1.0-rc1.md
│ ├── release-notes-3.1.0-rc2.md
│ ├── release-notes-3.1.0.md
│ ├── release-notes-4.0.0-rc1.md
│ ├── release-notes-4.0.0.md
│ ├── release-notes-4.1.0-rc1.md
│ ├── release-notes-4.1.0.md
│ ├── release-notes-4.1.1.md
│ ├── release-notes-4.2.0-rc1.md
│ ├── release-notes-4.2.0.md
│ ├── release-notes-4.3.0-rc1.md
│ ├── release-notes-4.3.0.md
│ ├── release-notes-4.4.0-rc1.md
│ ├── release-notes-4.4.0.md
│ ├── release-notes-4.4.1-rc1.md
│ └── release-notes-4.4.1.md
├── release-process.md
├── security-warnings.md
├── shield-coinbase.md
├── tor.md
├── translation_strings_policy.md
├── unit-tests.md
├── wallet-backup.md
└── zmq.md
├── docker
└── Dockerfile
├── libzcash_script.pc.in
├── mkreleaselinux.sh
├── mkwinrelease.sh
├── qa
├── README.md
├── pull-tester
│ ├── rpc-tests.py
│ └── tests_config.ini.in
├── rpc-tests
│ ├── .gitignore
│ ├── README.md
│ ├── addressindex.py
│ ├── bip65-cltv-p2p.py
│ ├── bipdersig-p2p.py
│ ├── blockchain.py
│ ├── coinbase_funding_streams.py
│ ├── create_cache.py
│ ├── decodescript.py
│ ├── disablewallet.py
│ ├── feature_logging.py
│ ├── feature_walletfile.py
│ ├── feature_zip221.py
│ ├── finalsaplingroot.py
│ ├── forknotify.py
│ ├── framework.py
│ ├── fundrawtransaction.py
│ ├── getblocktemplate.py
│ ├── getblocktemplate_longpoll.py
│ ├── getblocktemplate_proposals.py
│ ├── getchaintips.py
│ ├── getrawtransaction_insight.py
│ ├── golden
│ │ ├── blossom.tar.gz
│ │ └── heartwood.tar.gz
│ ├── hardforkdetection.py
│ ├── httpbasics.py
│ ├── invalidateblock.py
│ ├── invalidblockrequest.py
│ ├── ivk_import_export.py
│ ├── key_import_export.py
│ ├── keypool.py
│ ├── listtransactions.py
│ ├── maxblocksinflight.py
│ ├── maxuploadtarget.py
│ ├── mempool_limit.py
│ ├── mempool_nu_activation.py
│ ├── mempool_reorg.py
│ ├── mempool_resurrect_test.py
│ ├── mempool_spendcoinbase.py
│ ├── mempool_tx_expiry.py
│ ├── mergetoaddress_helper.py
│ ├── mergetoaddress_mixednotes.py
│ ├── mergetoaddress_sapling.py
│ ├── mergetoaddress_sprout.py
│ ├── merkle_blocks.py
│ ├── mining_shielded_coinbase.py
│ ├── multi_rpc.py
│ ├── nodehandling.py
│ ├── p2p-acceptblock.py
│ ├── p2p-fullblocktest.py
│ ├── p2p_node_bloom.py
│ ├── p2p_nu_peer_management.py
│ ├── p2p_txexpiringsoon.py
│ ├── p2p_txexpiry_dos.py
│ ├── paymentdisclosure.py
│ ├── post_heartwood_rollback.py
│ ├── prioritisetransaction.py
│ ├── proxy_test.py
│ ├── pruning.py
│ ├── rawtransactions.py
│ ├── receivedby.py
│ ├── regtest_signrawtransaction.py
│ ├── reindex.py
│ ├── remove_sprout_shielding.py
│ ├── reorg_limit.py
│ ├── rest.py
│ ├── rewind_index.py
│ ├── rpcbind_test.py
│ ├── sapling_rewind_check.py
│ ├── shorter_block_times.py
│ ├── signrawtransaction_offline.py
│ ├── signrawtransactions.py
│ ├── smartfees.py
│ ├── spentindex.py
│ ├── sprout_sapling_migration.py
│ ├── test_framework
│ │ ├── __init__.py
│ │ ├── authproxy.py
│ │ ├── bignum.py
│ │ ├── blockstore.py
│ │ ├── blocktools.py
│ │ ├── comptool.py
│ │ ├── coverage.py
│ │ ├── equihash.py
│ │ ├── flyclient.py
│ │ ├── key.py
│ │ ├── mininode.py
│ │ ├── netutil.py
│ │ ├── script.py
│ │ ├── socks5.py
│ │ ├── test_framework.py
│ │ └── util.py
│ ├── timestampindex.py
│ ├── turnstile.py
│ ├── tx_expiry_helper.py
│ ├── txn_doublespend.py
│ ├── upgrade_golden.py
│ ├── wallet.py
│ ├── wallet_1941.py
│ ├── wallet_addresses.py
│ ├── wallet_anchorfork.py
│ ├── wallet_broadcast.py
│ ├── wallet_changeaddresses.py
│ ├── wallet_changeindicator.py
│ ├── wallet_db_flush.py
│ ├── wallet_diversified_addresses.py
│ ├── wallet_import_export.py
│ ├── wallet_listnotes.py
│ ├── wallet_listreceived.py
│ ├── wallet_nullifiers.py
│ ├── wallet_overwintertx.py
│ ├── wallet_parsing_amounts.py
│ ├── wallet_persistence.py
│ ├── wallet_sapling.py
│ ├── wallet_sendmany_any_taddr.py
│ ├── wallet_shieldcoinbase.py
│ ├── wallet_shieldcoinbase_sapling.py
│ ├── wallet_shieldcoinbase_sprout.py
│ ├── wallet_shieldingcoinbase.py
│ ├── wallet_treestate.py
│ ├── wallet_z_sendmany.py
│ ├── wallet_zero_value.py
│ ├── walletbackup.py
│ ├── zapwallettxes.py
│ ├── zcjoinsplit.py
│ ├── zcjoinsplitdoublespend.py
│ ├── zkey_import_export.py
│ └── zmq_test.py
└── zcash
│ ├── checksec.sh
│ ├── create_benchmark_archive.py
│ ├── create_wallet_200k_utxos.py
│ ├── full_test_suite.py
│ ├── performance-measurements.sh
│ ├── postponed-updates.txt
│ ├── smoke_tests.py
│ ├── test-depends-sources-mirror.py
│ └── updatecheck.py
├── rust-toolchain
├── share
├── genbuild.sh
└── rpcuser
│ ├── README.md
│ └── rpcuser.py
├── src
├── .clang-format
├── Makefile.am
├── Makefile.bench.include
├── Makefile.crc32c.include
├── Makefile.gtest.include
├── Makefile.leveldb.include
├── Makefile.test.include
├── addrdb.cpp
├── addrdb.h
├── addressindex.h
├── addrman.cpp
├── addrman.h
├── alert.cpp
├── alert.h
├── alertkeys.h
├── amount.cpp
├── amount.h
├── arith_uint256.cpp
├── arith_uint256.h
├── asyncrpcoperation.cpp
├── asyncrpcoperation.h
├── asyncrpcqueue.cpp
├── asyncrpcqueue.h
├── base58.cpp
├── base58.h
├── bech32.cpp
├── bech32.h
├── bench
│ ├── .gitignore
│ ├── Examples.cpp
│ ├── base58.cpp
│ ├── bench.cpp
│ ├── bench.h
│ ├── bench_bitcoin.cpp
│ ├── checkqueue.cpp
│ ├── crypto_hash.cpp
│ ├── lockedpool.cpp
│ ├── perf.cpp
│ ├── perf.h
│ ├── prevector_destructor.cpp
│ ├── rollingbloom.cpp
│ └── verification.cpp
├── bitcoin-cli-res.rc
├── bitcoin-cli.cpp
├── bitcoin-tx-res.rc
├── bitcoin-tx.cpp
├── bitcoind-res.rc
├── bitcoind.cpp
├── bloom.cpp
├── bloom.h
├── chain.cpp
├── chain.h
├── chainparams.cpp
├── chainparams.h
├── chainparamsbase.cpp
├── chainparamsbase.h
├── chainparamsseeds.h
├── checkpoints.cpp
├── checkpoints.h
├── checkqueue.h
├── clientversion.cpp
├── clientversion.h
├── coincontrol.h
├── coins.cpp
├── coins.h
├── compat.h
├── compat
│ ├── byteswap.h
│ ├── endian.h
│ ├── glibc_compat.cpp
│ ├── glibc_sanity.cpp
│ ├── glibcxx_sanity.cpp
│ ├── sanity.h
│ └── strnlen.cpp
├── compressor.cpp
├── compressor.h
├── config
│ └── .empty
├── consensus
│ ├── consensus.h
│ ├── funding.cpp
│ ├── funding.h
│ ├── params.cpp
│ ├── params.h
│ ├── upgrades.cpp
│ ├── upgrades.h
│ └── validation.h
├── core_io.h
├── core_memusage.h
├── core_read.cpp
├── core_write.cpp
├── crc32c
│ ├── .appveyor.yml
│ ├── .clang-format
│ ├── .clang_complete
│ ├── .gitignore
│ ├── .gitmodules
│ ├── .travis.yml
│ ├── .ycm_extra_conf.py
│ ├── AUTHORS
│ ├── CMakeLists.txt
│ ├── CONTRIBUTING.md
│ ├── Crc32cConfig.cmake
│ ├── LICENSE
│ ├── README.md
│ ├── include
│ │ └── crc32c
│ │ │ └── crc32c.h
│ └── src
│ │ ├── crc32c.cc
│ │ ├── crc32c_arm64.cc
│ │ ├── crc32c_arm64.h
│ │ ├── crc32c_arm64_linux_check.h
│ │ ├── crc32c_arm64_unittest.cc
│ │ ├── crc32c_benchmark.cc
│ │ ├── crc32c_capi_unittest.c
│ │ ├── crc32c_config.h.in
│ │ ├── crc32c_extend_unittests.h
│ │ ├── crc32c_internal.h
│ │ ├── crc32c_portable.cc
│ │ ├── crc32c_portable_unittest.cc
│ │ ├── crc32c_prefetch.h
│ │ ├── crc32c_prefetch_unittest.cc
│ │ ├── crc32c_read_le.h
│ │ ├── crc32c_read_le_unittest.cc
│ │ ├── crc32c_round_up.h
│ │ ├── crc32c_round_up_unittest.cc
│ │ ├── crc32c_sse42.cc
│ │ ├── crc32c_sse42.h
│ │ ├── crc32c_sse42_check.h
│ │ ├── crc32c_sse42_unittest.cc
│ │ ├── crc32c_test_main.cc
│ │ └── crc32c_unittest.cc
├── crypto
│ ├── aes.cpp
│ ├── aes.h
│ ├── chacha20.cpp
│ ├── chacha20.h
│ ├── common.h
│ ├── ctaes
│ │ ├── COPYING
│ │ ├── README.md
│ │ ├── bench.c
│ │ ├── ctaes.c
│ │ ├── ctaes.h
│ │ └── test.c
│ ├── equihash.cpp
│ ├── equihash.h
│ ├── equihash.tcc
│ ├── hmac_sha256.cpp
│ ├── hmac_sha256.h
│ ├── hmac_sha512.cpp
│ ├── hmac_sha512.h
│ ├── ripemd160.cpp
│ ├── ripemd160.h
│ ├── sha1.cpp
│ ├── sha1.h
│ ├── sha256.cpp
│ ├── sha256.h
│ ├── sha256_avx2.cpp
│ ├── sha256_shani.cpp
│ ├── sha256_sse4.cpp
│ ├── sha256_sse41.cpp
│ ├── sha512.cpp
│ └── sha512.h
├── dbwrapper.cpp
├── dbwrapper.h
├── deprecation.cpp
├── deprecation.h
├── experimental_features.cpp
├── experimental_features.h
├── fs.cpp
├── fs.h
├── fuzzing
│ ├── CheckBlock
│ │ ├── fuzz.cpp
│ │ └── input
│ │ │ ├── 0.bin
│ │ │ ├── 476431.bin
│ │ │ └── 620000.bin
│ ├── DecodeHexTx
│ │ ├── fuzz.cpp
│ │ └── input
│ │ │ ├── coinbase.txt
│ │ │ ├── manyoutputs.txt
│ │ │ ├── sapling.txt
│ │ │ └── sprout.txt
│ ├── DeserializeAddrMan
│ │ ├── fuzz.cpp
│ │ └── input
│ │ │ └── peers.dat-minus-4-byte-header
│ ├── DeserializeTx
│ │ ├── fuzz.cpp
│ │ └── input
│ │ │ ├── coinbase.bin
│ │ │ ├── manyoutputs.bin
│ │ │ ├── sapling.bin
│ │ │ └── sprout.bin
│ ├── ReadFeeEstimates
│ │ ├── fuzz.cpp
│ │ └── input
│ │ │ └── fee_estimates.dat
│ └── UniValue__Read
│ │ ├── dict
│ │ ├── fuzz.cpp
│ │ └── input
│ │ ├── fail1.json
│ │ ├── fail10.json
│ │ ├── fail11.json
│ │ ├── fail12.json
│ │ ├── fail13.json
│ │ ├── fail14.json
│ │ ├── fail15.json
│ │ ├── fail16.json
│ │ ├── fail17.json
│ │ ├── fail18.json
│ │ ├── fail19.json
│ │ ├── fail2.json
│ │ ├── fail20.json
│ │ ├── fail21.json
│ │ ├── fail22.json
│ │ ├── fail23.json
│ │ ├── fail24.json
│ │ ├── fail25.json
│ │ ├── fail26.json
│ │ ├── fail27.json
│ │ ├── fail28.json
│ │ ├── fail29.json
│ │ ├── fail3.json
│ │ ├── fail30.json
│ │ ├── fail31.json
│ │ ├── fail32.json
│ │ ├── fail33.json
│ │ ├── fail34.json
│ │ ├── fail35.json
│ │ ├── fail36.json
│ │ ├── fail37.json
│ │ ├── fail38.json
│ │ ├── fail39.json
│ │ ├── fail4.json
│ │ ├── fail40.json
│ │ ├── fail41.json
│ │ ├── fail42.json
│ │ ├── fail5.json
│ │ ├── fail6.json
│ │ ├── fail7.json
│ │ ├── fail8.json
│ │ ├── fail9.json
│ │ ├── pass1.json
│ │ ├── pass2.json
│ │ ├── pass3.json
│ │ ├── round1.json
│ │ ├── round2.json
│ │ ├── round3.json
│ │ ├── round4.json
│ │ ├── round5.json
│ │ ├── round6.json
│ │ └── round7.json
├── gtest
│ ├── json_test_vectors.cpp
│ ├── json_test_vectors.h
│ ├── main.cpp
│ ├── test_allocator.cpp
│ ├── test_block.cpp
│ ├── test_checkblock.cpp
│ ├── test_checktransaction.cpp
│ ├── test_consensus.cpp
│ ├── test_deprecation.cpp
│ ├── test_dynamicusage.cpp
│ ├── test_equihash.cpp
│ ├── test_feature_flagging.cpp
│ ├── test_foundersreward.cpp
│ ├── test_history.cpp
│ ├── test_httprpc.cpp
│ ├── test_joinsplit.cpp
│ ├── test_keys.cpp
│ ├── test_keystore.cpp
│ ├── test_libzcash_utils.cpp
│ ├── test_mempool.cpp
│ ├── test_mempoollimit.cpp
│ ├── test_merkletree.cpp
│ ├── test_metrics.cpp
│ ├── test_miner.cpp
│ ├── test_noteencryption.cpp
│ ├── test_pedersen_hash.cpp
│ ├── test_pow.cpp
│ ├── test_random.cpp
│ ├── test_rpc.cpp
│ ├── test_sapling_note.cpp
│ ├── test_tautology.cpp
│ ├── test_timedata.cpp
│ ├── test_transaction.cpp
│ ├── test_transaction_builder.cpp
│ ├── test_txid.cpp
│ ├── test_upgrades.cpp
│ ├── test_validation.cpp
│ ├── test_zip32.cpp
│ ├── utils.cpp
│ └── utils.h
├── hash.cpp
├── hash.h
├── httprpc.cpp
├── httprpc.h
├── httpserver.cpp
├── httpserver.h
├── init.cpp
├── init.h
├── key.cpp
├── key.h
├── key_constants.h
├── key_io.cpp
├── key_io.h
├── keystore.cpp
├── keystore.h
├── leveldb
│ ├── .appveyor.yml
│ ├── .clang-format
│ ├── .gitignore
│ ├── .travis.yml
│ ├── AUTHORS
│ ├── CMakeLists.txt
│ ├── CONTRIBUTING.md
│ ├── LICENSE
│ ├── NEWS
│ ├── README.md
│ ├── TODO
│ ├── benchmarks
│ │ ├── db_bench.cc
│ │ ├── db_bench_sqlite3.cc
│ │ └── db_bench_tree_db.cc
│ ├── cmake
│ │ └── leveldbConfig.cmake
│ ├── db
│ │ ├── autocompact_test.cc
│ │ ├── builder.cc
│ │ ├── builder.h
│ │ ├── c.cc
│ │ ├── c_test.c
│ │ ├── corruption_test.cc
│ │ ├── db_impl.cc
│ │ ├── db_impl.h
│ │ ├── db_iter.cc
│ │ ├── db_iter.h
│ │ ├── db_test.cc
│ │ ├── dbformat.cc
│ │ ├── dbformat.h
│ │ ├── dbformat_test.cc
│ │ ├── dumpfile.cc
│ │ ├── fault_injection_test.cc
│ │ ├── filename.cc
│ │ ├── filename.h
│ │ ├── filename_test.cc
│ │ ├── leveldbutil.cc
│ │ ├── log_format.h
│ │ ├── log_reader.cc
│ │ ├── log_reader.h
│ │ ├── log_test.cc
│ │ ├── log_writer.cc
│ │ ├── log_writer.h
│ │ ├── memtable.cc
│ │ ├── memtable.h
│ │ ├── recovery_test.cc
│ │ ├── repair.cc
│ │ ├── skiplist.h
│ │ ├── skiplist_test.cc
│ │ ├── snapshot.h
│ │ ├── table_cache.cc
│ │ ├── table_cache.h
│ │ ├── version_edit.cc
│ │ ├── version_edit.h
│ │ ├── version_edit_test.cc
│ │ ├── version_set.cc
│ │ ├── version_set.h
│ │ ├── version_set_test.cc
│ │ ├── write_batch.cc
│ │ ├── write_batch_internal.h
│ │ └── write_batch_test.cc
│ ├── doc
│ │ ├── benchmark.html
│ │ ├── impl.md
│ │ ├── index.md
│ │ ├── log_format.md
│ │ └── table_format.md
│ ├── helpers
│ │ └── memenv
│ │ │ ├── memenv.cc
│ │ │ ├── memenv.h
│ │ │ └── memenv_test.cc
│ ├── include
│ │ └── leveldb
│ │ │ ├── c.h
│ │ │ ├── cache.h
│ │ │ ├── comparator.h
│ │ │ ├── db.h
│ │ │ ├── dumpfile.h
│ │ │ ├── env.h
│ │ │ ├── export.h
│ │ │ ├── filter_policy.h
│ │ │ ├── iterator.h
│ │ │ ├── options.h
│ │ │ ├── slice.h
│ │ │ ├── status.h
│ │ │ ├── table.h
│ │ │ ├── table_builder.h
│ │ │ └── write_batch.h
│ ├── issues
│ │ ├── issue178_test.cc
│ │ ├── issue200_test.cc
│ │ └── issue320_test.cc
│ ├── port
│ │ ├── README.md
│ │ ├── port.h
│ │ ├── port_config.h.in
│ │ ├── port_example.h
│ │ ├── port_stdcxx.h
│ │ └── thread_annotations.h
│ ├── table
│ │ ├── block.cc
│ │ ├── block.h
│ │ ├── block_builder.cc
│ │ ├── block_builder.h
│ │ ├── filter_block.cc
│ │ ├── filter_block.h
│ │ ├── filter_block_test.cc
│ │ ├── format.cc
│ │ ├── format.h
│ │ ├── iterator.cc
│ │ ├── iterator_wrapper.h
│ │ ├── merger.cc
│ │ ├── merger.h
│ │ ├── table.cc
│ │ ├── table_builder.cc
│ │ ├── table_test.cc
│ │ ├── two_level_iterator.cc
│ │ └── two_level_iterator.h
│ └── util
│ │ ├── arena.cc
│ │ ├── arena.h
│ │ ├── arena_test.cc
│ │ ├── bloom.cc
│ │ ├── bloom_test.cc
│ │ ├── cache.cc
│ │ ├── cache_test.cc
│ │ ├── coding.cc
│ │ ├── coding.h
│ │ ├── coding_test.cc
│ │ ├── comparator.cc
│ │ ├── crc32c.cc
│ │ ├── crc32c.h
│ │ ├── crc32c_test.cc
│ │ ├── env.cc
│ │ ├── env_posix.cc
│ │ ├── env_posix_test.cc
│ │ ├── env_posix_test_helper.h
│ │ ├── env_test.cc
│ │ ├── env_windows.cc
│ │ ├── env_windows_test.cc
│ │ ├── env_windows_test_helper.h
│ │ ├── filter_policy.cc
│ │ ├── hash.cc
│ │ ├── hash.h
│ │ ├── hash_test.cc
│ │ ├── histogram.cc
│ │ ├── histogram.h
│ │ ├── logging.cc
│ │ ├── logging.h
│ │ ├── logging_test.cc
│ │ ├── mutexlock.h
│ │ ├── no_destructor.h
│ │ ├── no_destructor_test.cc
│ │ ├── options.cc
│ │ ├── posix_logger.h
│ │ ├── random.h
│ │ ├── status.cc
│ │ ├── status_test.cc
│ │ ├── testharness.cc
│ │ ├── testharness.h
│ │ ├── testutil.cc
│ │ ├── testutil.h
│ │ └── windows_logger.h
├── limitedmap.h
├── logging.cpp
├── logging.h
├── main.cpp
├── main.h
├── mempool_limit.cpp
├── mempool_limit.h
├── memusage.h
├── merkleblock.cpp
├── merkleblock.h
├── metrics.cpp
├── metrics.h
├── miner.cpp
├── miner.h
├── net.cpp
├── net.h
├── netbase.cpp
├── netbase.h
├── noui.cpp
├── noui.h
├── obj
│ └── .gitignore
├── policy
│ ├── fees.cpp
│ ├── fees.h
│ ├── policy.cpp
│ └── policy.h
├── pow.cpp
├── pow.h
├── pow
│ └── tromp
│ │ ├── equi.h
│ │ ├── equi_miner.h
│ │ └── osx_barrier.h
├── prevector.h
├── primitives
│ ├── block.cpp
│ ├── block.h
│ ├── transaction.cpp
│ └── transaction.h
├── proof_verifier.cpp
├── proof_verifier.h
├── protocol.cpp
├── protocol.h
├── pubkey.cpp
├── pubkey.h
├── random.cpp
├── random.h
├── rest.cpp
├── reverse_iterator.h
├── reverselock.h
├── rpc
│ ├── blockchain.cpp
│ ├── client.cpp
│ ├── client.h
│ ├── mining.cpp
│ ├── misc.cpp
│ ├── net.cpp
│ ├── protocol.cpp
│ ├── protocol.h
│ ├── rawtransaction.cpp
│ ├── register.h
│ ├── server.cpp
│ └── server.h
├── rust
│ ├── README.md
│ ├── include
│ │ ├── librustzcash.h
│ │ ├── rust
│ │ │ ├── VA_OPT.hpp
│ │ │ ├── blake2b.h
│ │ │ ├── ed25519.h
│ │ │ ├── ed25519
│ │ │ │ └── types.h
│ │ │ ├── helpers.h
│ │ │ ├── map.h
│ │ │ ├── metrics.h
│ │ │ └── types.h
│ │ └── tracing.h
│ └── src
│ │ ├── blake2b.rs
│ │ ├── ed25519.rs
│ │ ├── metrics_ffi.rs
│ │ ├── metrics_ffi
│ │ └── prometheus.rs
│ │ ├── rustzcash.rs
│ │ ├── tests
│ │ ├── key_agreement.rs
│ │ ├── key_components.rs
│ │ ├── mmr.rs
│ │ ├── mod.rs
│ │ ├── notes.rs
│ │ ├── res
│ │ │ ├── tree1023.dat
│ │ │ └── tree16.dat
│ │ └── signatures.rs
│ │ └── tracing_ffi.rs
├── scheduler.cpp
├── scheduler.h
├── script
│ ├── interpreter.cpp
│ ├── interpreter.h
│ ├── ismine.cpp
│ ├── ismine.h
│ ├── script.cpp
│ ├── script.h
│ ├── script_error.cpp
│ ├── script_error.h
│ ├── sigcache.cpp
│ ├── sigcache.h
│ ├── sign.cpp
│ ├── sign.h
│ ├── standard.cpp
│ ├── standard.h
│ ├── zcash_script.cpp
│ └── zcash_script.h
├── secp256k1
│ ├── .cirrus.yml
│ ├── .gitattributes
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── COPYING
│ ├── Makefile.am
│ ├── README.md
│ ├── SECURITY.md
│ ├── autogen.sh
│ ├── build-aux
│ │ └── m4
│ │ │ └── bitcoin_secp.m4
│ ├── ci
│ │ ├── cirrus.sh
│ │ └── linux-debian.Dockerfile
│ ├── configure.ac
│ ├── contrib
│ │ ├── lax_der_parsing.c
│ │ ├── lax_der_parsing.h
│ │ ├── lax_der_privatekey_parsing.c
│ │ └── lax_der_privatekey_parsing.h
│ ├── doc
│ │ ├── release-process.md
│ │ └── safegcd_implementation.md
│ ├── examples
│ │ ├── EXAMPLES_COPYING
│ │ ├── ecdh.c
│ │ ├── ecdsa.c
│ │ ├── random.h
│ │ └── schnorr.c
│ ├── include
│ │ ├── secp256k1.h
│ │ ├── secp256k1_ecdh.h
│ │ ├── secp256k1_extrakeys.h
│ │ ├── secp256k1_preallocated.h
│ │ ├── secp256k1_recovery.h
│ │ └── secp256k1_schnorrsig.h
│ ├── libsecp256k1.pc.in
│ ├── sage
│ │ ├── gen_exhaustive_groups.sage
│ │ ├── gen_split_lambda_constants.sage
│ │ ├── group_prover.sage
│ │ ├── prove_group_implementations.sage
│ │ ├── secp256k1_params.sage
│ │ └── weierstrass_prover.sage
│ └── src
│ │ ├── asm
│ │ └── field_10x26_arm.s
│ │ ├── assumptions.h
│ │ ├── bench.c
│ │ ├── bench.h
│ │ ├── bench_ecmult.c
│ │ ├── bench_internal.c
│ │ ├── ecdsa.h
│ │ ├── ecdsa_impl.h
│ │ ├── eckey.h
│ │ ├── eckey_impl.h
│ │ ├── ecmult.h
│ │ ├── ecmult_compute_table.h
│ │ ├── ecmult_compute_table_impl.h
│ │ ├── ecmult_const.h
│ │ ├── ecmult_const_impl.h
│ │ ├── ecmult_gen.h
│ │ ├── ecmult_gen_compute_table.h
│ │ ├── ecmult_gen_compute_table_impl.h
│ │ ├── ecmult_gen_impl.h
│ │ ├── ecmult_impl.h
│ │ ├── field.h
│ │ ├── field_10x26.h
│ │ ├── field_10x26_impl.h
│ │ ├── field_5x52.h
│ │ ├── field_5x52_asm_impl.h
│ │ ├── field_5x52_impl.h
│ │ ├── field_5x52_int128_impl.h
│ │ ├── field_impl.h
│ │ ├── group.h
│ │ ├── group_impl.h
│ │ ├── hash.h
│ │ ├── hash_impl.h
│ │ ├── int128.h
│ │ ├── int128_impl.h
│ │ ├── int128_native.h
│ │ ├── int128_native_impl.h
│ │ ├── int128_struct.h
│ │ ├── int128_struct_impl.h
│ │ ├── modinv32.h
│ │ ├── modinv32_impl.h
│ │ ├── modinv64.h
│ │ ├── modinv64_impl.h
│ │ ├── modules
│ │ ├── ecdh
│ │ │ ├── Makefile.am.include
│ │ │ ├── bench_impl.h
│ │ │ ├── main_impl.h
│ │ │ └── tests_impl.h
│ │ ├── extrakeys
│ │ │ ├── Makefile.am.include
│ │ │ ├── main_impl.h
│ │ │ ├── tests_exhaustive_impl.h
│ │ │ └── tests_impl.h
│ │ ├── recovery
│ │ │ ├── Makefile.am.include
│ │ │ ├── bench_impl.h
│ │ │ ├── main_impl.h
│ │ │ ├── tests_exhaustive_impl.h
│ │ │ └── tests_impl.h
│ │ └── schnorrsig
│ │ │ ├── Makefile.am.include
│ │ │ ├── bench_impl.h
│ │ │ ├── main_impl.h
│ │ │ ├── tests_exhaustive_impl.h
│ │ │ └── tests_impl.h
│ │ ├── precompute_ecmult.c
│ │ ├── precompute_ecmult_gen.c
│ │ ├── precomputed_ecmult.c
│ │ ├── precomputed_ecmult.h
│ │ ├── precomputed_ecmult_gen.c
│ │ ├── precomputed_ecmult_gen.h
│ │ ├── scalar.h
│ │ ├── scalar_4x64.h
│ │ ├── scalar_4x64_impl.h
│ │ ├── scalar_8x32.h
│ │ ├── scalar_8x32_impl.h
│ │ ├── scalar_impl.h
│ │ ├── scalar_low.h
│ │ ├── scalar_low_impl.h
│ │ ├── scratch.h
│ │ ├── scratch_impl.h
│ │ ├── secp256k1.c
│ │ ├── selftest.h
│ │ ├── testrand.h
│ │ ├── testrand_impl.h
│ │ ├── tests.c
│ │ ├── tests_exhaustive.c
│ │ ├── util.h
│ │ └── valgrind_ctime_test.c
├── sendalert.cpp
├── serialize.h
├── spentindex.h
├── streams.h
├── support
│ ├── allocators
│ │ ├── secure.h
│ │ └── zeroafterfree.h
│ ├── cleanse.cpp
│ ├── cleanse.h
│ ├── events.h
│ ├── lockedpool.cpp
│ └── lockedpool.h
├── sync.cpp
├── sync.h
├── test
│ ├── Checkpoints_tests.cpp
│ ├── DoS_tests.cpp
│ ├── Makefile
│ ├── README.md
│ ├── addrman_tests.cpp
│ ├── alert_tests.cpp
│ ├── allocator_tests.cpp
│ ├── arith_uint256_tests.cpp
│ ├── base32_tests.cpp
│ ├── base58_tests.cpp
│ ├── base64_tests.cpp
│ ├── bctest.py
│ ├── bech32_tests.cpp
│ ├── bip32_tests.cpp
│ ├── bitcoin-util-test.py
│ ├── bloom_tests.cpp
│ ├── buildenv.py.in
│ ├── checkblock_tests.cpp
│ ├── checkqueue_tests.cpp
│ ├── coins_tests.cpp
│ ├── compress_tests.cpp
│ ├── convertbits_tests.cpp
│ ├── crypto_tests.cpp
│ ├── data
│ │ ├── README.md
│ │ ├── alertTests.raw
│ │ ├── base58_encode_decode.json
│ │ ├── base58_keys_invalid.json
│ │ ├── base58_keys_valid.json
│ │ ├── bitcoin-util-test.json
│ │ ├── blanktx.hex
│ │ ├── blanktx.json
│ │ ├── merkle_commitments.json
│ │ ├── merkle_commitments_sapling.json
│ │ ├── merkle_path.json
│ │ ├── merkle_path_sapling.json
│ │ ├── merkle_roots.json
│ │ ├── merkle_roots_sapling.json
│ │ ├── merkle_serialization.json
│ │ ├── merkle_serialization_sapling.json
│ │ ├── merkle_witness_serialization.json
│ │ ├── merkle_witness_serialization_sapling.json
│ │ ├── sapling_key_components.json
│ │ ├── script_invalid.json
│ │ ├── script_valid.json
│ │ ├── sighash.json
│ │ ├── tt-delin1-out.hex
│ │ ├── tt-delin1-out.json
│ │ ├── tt-delout1-out.hex
│ │ ├── tt-delout1-out.json
│ │ ├── tt-locktime317000-out.hex
│ │ ├── tt-locktime317000-out.json
│ │ ├── tx394b54bb.hex
│ │ ├── tx_invalid.json
│ │ ├── tx_valid.json
│ │ ├── txcreate1.hex
│ │ ├── txcreate1.json
│ │ ├── txcreate2.hex
│ │ ├── txcreate2.json
│ │ ├── txcreatedata_seq0.hex
│ │ ├── txcreatedata_seq0.json
│ │ ├── txcreatedata_seq1.hex
│ │ ├── txcreatedata_seq1.json
│ │ ├── txcreatesign.hex
│ │ └── txcreatesign.json
│ ├── dbwrapper_tests.cpp
│ ├── equihash_tests.cpp
│ ├── getarg_tests.cpp
│ ├── hash_tests.cpp
│ ├── key_tests.cpp
│ ├── limitedmap_tests.cpp
│ ├── main_tests.cpp
│ ├── mempool_tests.cpp
│ ├── miner_tests.cpp
│ ├── multisig_tests.cpp
│ ├── net_tests.cpp
│ ├── netbase_tests.cpp
│ ├── pmt_tests.cpp
│ ├── policyestimator_tests.cpp
│ ├── pow_tests.cpp
│ ├── prevector_tests.cpp
│ ├── raii_event_tests.cpp
│ ├── random_tests.cpp
│ ├── reverselock_tests.cpp
│ ├── rpc_tests.cpp
│ ├── sanity_tests.cpp
│ ├── scheduler_tests.cpp
│ ├── script_P2PKH_tests.cpp
│ ├── script_P2SH_tests.cpp
│ ├── script_standard_tests.cpp
│ ├── script_tests.cpp
│ ├── scriptnum10.h
│ ├── scriptnum_tests.cpp
│ ├── serialize_tests.cpp
│ ├── sha256compress_tests.cpp
│ ├── sighash_tests.cpp
│ ├── sigopcount_tests.cpp
│ ├── skiplist_tests.cpp
│ ├── streams_tests.cpp
│ ├── test_bitcoin.cpp
│ ├── test_bitcoin.h
│ ├── test_random.h
│ ├── test_util.cpp
│ ├── test_util.h
│ ├── torcontrol_tests.cpp
│ ├── transaction_tests.cpp
│ ├── txvalidationcache_tests.cpp
│ ├── uint256_tests.cpp
│ ├── univalue_tests.cpp
│ └── util_tests.cpp
├── threadsafety.h
├── timedata.cpp
├── timedata.h
├── timestampindex.h
├── tinyformat.h
├── torcontrol.cpp
├── torcontrol.h
├── transaction_builder.cpp
├── transaction_builder.h
├── txdb.cpp
├── txdb.h
├── txmempool.cpp
├── txmempool.h
├── ui_interface.h
├── uint252.h
├── uint256.cpp
├── uint256.h
├── undo.h
├── univalue
│ ├── .gitignore
│ ├── .travis.yml
│ ├── COPYING
│ ├── Makefile.am
│ ├── README.md
│ ├── TODO
│ ├── autogen.sh
│ ├── build-aux
│ │ └── m4
│ │ │ └── .gitignore
│ ├── configure.ac
│ ├── gen
│ │ └── gen.cpp
│ ├── include
│ │ └── univalue.h
│ ├── lib
│ │ ├── .gitignore
│ │ ├── univalue.cpp
│ │ ├── univalue_escapes.h
│ │ ├── univalue_get.cpp
│ │ ├── univalue_read.cpp
│ │ ├── univalue_utffilter.h
│ │ └── univalue_write.cpp
│ ├── pc
│ │ ├── libunivalue-uninstalled.pc.in
│ │ └── libunivalue.pc.in
│ └── test
│ │ ├── .gitignore
│ │ ├── fail1.json
│ │ ├── fail10.json
│ │ ├── fail11.json
│ │ ├── fail12.json
│ │ ├── fail13.json
│ │ ├── fail14.json
│ │ ├── fail15.json
│ │ ├── fail16.json
│ │ ├── fail17.json
│ │ ├── fail18.json
│ │ ├── fail19.json
│ │ ├── fail2.json
│ │ ├── fail20.json
│ │ ├── fail21.json
│ │ ├── fail22.json
│ │ ├── fail23.json
│ │ ├── fail24.json
│ │ ├── fail25.json
│ │ ├── fail26.json
│ │ ├── fail27.json
│ │ ├── fail28.json
│ │ ├── fail29.json
│ │ ├── fail3.json
│ │ ├── fail30.json
│ │ ├── fail31.json
│ │ ├── fail32.json
│ │ ├── fail33.json
│ │ ├── fail34.json
│ │ ├── fail35.json
│ │ ├── fail36.json
│ │ ├── fail37.json
│ │ ├── fail38.json
│ │ ├── fail39.json
│ │ ├── fail4.json
│ │ ├── fail40.json
│ │ ├── fail41.json
│ │ ├── fail42.json
│ │ ├── fail44.json
│ │ ├── fail45.json
│ │ ├── fail5.json
│ │ ├── fail6.json
│ │ ├── fail7.json
│ │ ├── fail8.json
│ │ ├── fail9.json
│ │ ├── no_nul.cpp
│ │ ├── object.cpp
│ │ ├── pass1.json
│ │ ├── pass2.json
│ │ ├── pass3.json
│ │ ├── pass4.json
│ │ ├── round1.json
│ │ ├── round2.json
│ │ ├── round3.json
│ │ ├── round4.json
│ │ ├── round5.json
│ │ ├── round6.json
│ │ ├── round7.json
│ │ ├── test_json.cpp
│ │ └── unitester.cpp
├── util.cpp
├── util.h
├── utilmoneystr.cpp
├── utilmoneystr.h
├── utilstrencodings.cpp
├── utilstrencodings.h
├── utiltest.cpp
├── utiltest.h
├── utiltime.cpp
├── utiltime.h
├── validationinterface.cpp
├── validationinterface.h
├── version.h
├── wallet
│ ├── asyncrpcoperation_common.cpp
│ ├── asyncrpcoperation_common.h
│ ├── asyncrpcoperation_mergetoaddress.cpp
│ ├── asyncrpcoperation_mergetoaddress.h
│ ├── asyncrpcoperation_saplingconsolidation.cpp
│ ├── asyncrpcoperation_saplingconsolidation.h
│ ├── asyncrpcoperation_saplingmigration.cpp
│ ├── asyncrpcoperation_saplingmigration.h
│ ├── asyncrpcoperation_sendmany.cpp
│ ├── asyncrpcoperation_sendmany.h
│ ├── asyncrpcoperation_shieldcoinbase.cpp
│ ├── asyncrpcoperation_shieldcoinbase.h
│ ├── crypter.cpp
│ ├── crypter.h
│ ├── db.cpp
│ ├── db.h
│ ├── gtest
│ │ ├── test_paymentdisclosure.cpp
│ │ ├── test_wallet.cpp
│ │ └── test_wallet_zkeys.cpp
│ ├── paymentdisclosure.cpp
│ ├── paymentdisclosure.h
│ ├── paymentdisclosuredb.cpp
│ ├── paymentdisclosuredb.h
│ ├── rpcdisclosure.cpp
│ ├── rpcdump.cpp
│ ├── rpcwallet.cpp
│ ├── rpcwallet.h
│ ├── test
│ │ ├── accounting_tests.cpp
│ │ ├── crypto_tests.cpp
│ │ ├── rpc_wallet_tests.cpp
│ │ ├── wallet_test_fixture.cpp
│ │ ├── wallet_test_fixture.h
│ │ └── wallet_tests.cpp
│ ├── wallet.cpp
│ ├── wallet.h
│ ├── walletdb.cpp
│ └── walletdb.h
├── warnings.cpp
├── warnings.h
├── zcash
│ ├── Address.cpp
│ ├── Address.hpp
│ ├── History.cpp
│ ├── History.hpp
│ ├── IncrementalMerkleTree.cpp
│ ├── IncrementalMerkleTree.hpp
│ ├── JoinSplit.cpp
│ ├── JoinSplit.hpp
│ ├── Note.cpp
│ ├── Note.hpp
│ ├── NoteEncryption.cpp
│ ├── NoteEncryption.hpp
│ ├── Proof.hpp
│ ├── Zcash.h
│ ├── address
│ │ ├── sapling.cpp
│ │ ├── sapling.hpp
│ │ ├── sprout.cpp
│ │ ├── sprout.hpp
│ │ ├── zip32.cpp
│ │ └── zip32.h
│ ├── prf.cpp
│ ├── prf.h
│ ├── util.cpp
│ └── util.h
├── zcbenchmarks.cpp
├── zcbenchmarks.h
└── zmq
│ ├── zmqabstractnotifier.cpp
│ ├── zmqabstractnotifier.h
│ ├── zmqconfig.h
│ ├── zmqnotificationinterface.cpp
│ ├── zmqnotificationinterface.h
│ ├── zmqpublishnotifier.cpp
│ └── zmqpublishnotifier.h
├── test
└── lint
│ ├── README.md
│ ├── commit-script-check.sh
│ ├── git-subtree-check.sh
│ ├── lint-all.sh
│ ├── lint-include-guards.sh
│ ├── lint-includes.sh
│ ├── lint-locale-dependence.sh
│ ├── lint-python-utf8-encoding.sh
│ ├── lint-shebang.sh
│ ├── lint-shell-locale.sh
│ ├── lint-shell.sh
│ └── lint-whitespace.sh
└── zcutil
├── afl
├── afl-build.sh
├── afl-get.sh
├── afl-getbuildrun.sh
├── afl-run.sh
├── zcash-wrapper
├── zcash-wrapper-clang
├── zcash-wrapper-clang++
├── zcash-wrapper-g++
└── zcash-wrapper-gcc
├── build-debian-package.sh
├── build.sh
├── clean.sh
├── cleanup-tags.sh
├── distclean.sh
├── fetch-params.sh
├── libfuzzer
├── libfuzzer-build.sh
├── zcash-wrapper
├── zcash-wrapper-clang
└── zcash-wrapper-clang++
├── make-release.py
└── release-notes.py
/.cargo/config.offline:
--------------------------------------------------------------------------------
1 | [source.crates-io]
2 | replace-with = "vendored-sources"
3 |
4 | [source."https://github.com/ycashfoundation/librustzcash.git"]
5 | git = "https://github.com/ycashfoundation/librustzcash.git"
6 | rev = "cc26e791eb5cf2fb140b4cc0335b1f0d94206c2c"
7 | replace-with = "vendored-sources"
8 |
9 | [source.vendored-sources]
10 | # The directory for this source is set to RUST_VENDORED_SOURCES by src/Makefile.am
11 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | src/clientversion.cpp export-subst
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for zcashd.
4 | title: ''
5 | labels: 'use case'
6 | assignees: ''
7 |
8 | ---
9 |
10 | ## Is your feature request related to a problem? Please describe.
11 | A clear and concise description of what the problem is. Example: I'm always
12 | frustrated when [...]
13 |
14 | ## Describe the solution you'd like
15 | A clear and concise description of what you want to happen.
16 |
17 | ## Alternatives you've considered
18 | A clear and concise description of any alternative solutions or features you've
19 | considered.
20 |
21 | ## Additional context
22 | Add any other context or screenshots about the feature request here.
23 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/ux-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: UX report
3 | about: Was zcashd hard to use? It's not you, it's us. We want to hear about it.
4 | title: 'UX: '
5 | labels: 'usability'
6 | assignees: ''
7 |
8 | ---
9 |
10 |
14 |
15 | ## What were you trying to do
16 |
17 | ## What happened
18 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ycashfoundation/ycash/a1b0f39a4338c58be1e7509423d255c153d7975e/.github/pull_request_template.md
--------------------------------------------------------------------------------
/.github/workflows/book.yml:
--------------------------------------------------------------------------------
1 | name: zcashd book
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 |
8 | jobs:
9 | deploy:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v2
13 |
14 | - name: Setup mdBook
15 | uses: peaceiris/actions-mdbook@v1
16 | with:
17 | mdbook-version: '0.4.7'
18 |
19 | - name: Install mdbook-katex
20 | uses: actions-rs/cargo@v1
21 | with:
22 | command: install
23 | args: mdbook-katex
24 |
25 | - name: Build zcashd book
26 | run: mdbook build doc/book/
27 |
28 | - name: Deploy to GitHub Pages
29 | uses: peaceiris/actions-gh-pages@v3
30 | with:
31 | github_token: ${{ secrets.GITHUB_TOKEN }}
32 | publish_dir: ./book/book
33 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Please read [our Development Guidelines](https://zcash.readthedocs.io/en/latest/rtd_pages/development_guidelines.html).
2 |
--------------------------------------------------------------------------------
/INSTALL:
--------------------------------------------------------------------------------
1 | Building Zcash
2 |
3 | See the Zcash documentation wiki (https://zcash.readthedocs.io/en/latest/rtd_pages/user_guide.html) for instructions on building zcashd,
4 | the intended-for-services, no-graphical-interface, reference
5 | implementation of Zcash.
6 |
--------------------------------------------------------------------------------
/autogen.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Copyright (c) 2016-2019 The Zcash developers
3 | # Copyright (c) 2013-2019 The Bitcoin Core developers
4 | # Copyright (c) 2013-2019 Bitcoin Developers
5 | # Distributed under the MIT software license, see the accompanying
6 | # file COPYING or https://www.opensource.org/licenses/mit-license.php .
7 |
8 | export LC_ALL=C
9 | set -e
10 | srcdir="$(dirname $0)"
11 | cd "$srcdir"
12 | if [ -z ${LIBTOOLIZE} ] && GLIBTOOLIZE="$(command -v glibtoolize)"; then
13 | LIBTOOLIZE="${GLIBTOOLIZE}"
14 | export LIBTOOLIZE
15 | fi
16 | autoreconf --install --force --warnings=all
17 |
--------------------------------------------------------------------------------
/build-aux/m4/bitcoin_subdir_to_include.m4:
--------------------------------------------------------------------------------
1 | dnl Copyright (c) 2016-2019 The Zcash developers
2 | dnl Copyright (c) 2013-2019 The Bitcoin Core developers
3 | dnl Copyright (c) 2013-2019 Bitcoin Developers
4 | dnl Distributed under the MIT software license, see the accompanying
5 | dnl file COPYING or https://www.opensource.org/licenses/mit-license.php .
6 |
7 | dnl BITCOIN_SUBDIR_TO_INCLUDE([CPPFLAGS-VARIABLE-NAME],[SUBDIRECTORY-NAME],[HEADER-FILE])
8 | dnl SUBDIRECTORY-NAME must end with a path separator
9 | AC_DEFUN([BITCOIN_SUBDIR_TO_INCLUDE],[
10 | if test "x$2" = "x"; then
11 | AC_MSG_RESULT([default])
12 | else
13 | echo "#include <$2$3.h>" >conftest.cpp
14 | newinclpath=`${CXXCPP} ${CPPFLAGS} -M conftest.cpp 2>/dev/null | [ tr -d '\\n\\r\\\\' | sed -e 's/^.*[[:space:]:]\(\/[^[:space:]]*\)]$3[\.h[[:space:]].*$/\1/' -e t -e d`]
15 | AC_MSG_RESULT([${newinclpath}])
16 | if test "x${newinclpath}" != "x"; then
17 | eval "$1=\"\$$1\"' -I${newinclpath}'"
18 | fi
19 | fi
20 | ])
21 |
--------------------------------------------------------------------------------
/contrib/bitrpc/README.md:
--------------------------------------------------------------------------------
1 | ### BitRPC
2 | Allows for sending of all standard Bitcoin commands via RPC rather than as command line args.
3 |
4 | ### Looking for Wallet Tools?
5 | BitRPC.py is able to do the exact same thing as `walletchangepass.py` and `walletunlock.py`. Their respective commands in BitRPC.py are:
6 |
7 | bitrpc.py walletpassphrasechange
8 | bitrpc.py walletpassphrase
--------------------------------------------------------------------------------
/contrib/ci-builders/buildbot/Dockerfile-build-python.apt:
--------------------------------------------------------------------------------
1 | ARG FROMBASEOS
2 | ARG FROMBASEOS_BUILD_TAG
3 | FROM $FROMBASEOS:$FROMBASEOS_BUILD_TAG
4 | ARG DEBIAN_FRONTEND=noninteractive
5 |
6 | ADD apt-package-list.txt /tmp/apt-package-list.txt
7 | RUN apt-get update \
8 | && apt-get install -y $(tr "\n" " " < /tmp/apt-package-list.txt) \
9 | && update-alternatives --install /usr/bin/python python /usr/bin/python3 1
10 |
11 | ARG PYTHONVERSION=3.7.5
12 | RUN apt-get install -y \
13 | build-essential \
14 | zlib1g-dev \
15 | libncurses5-dev \
16 | libgdbm-dev \
17 | libnss3-dev \
18 | libssl-dev \
19 | libreadline-dev \
20 | libffi-dev \
21 | curl
22 | WORKDIR /tmp
23 | RUN curl https://www.python.org/ftp/python/$PYTHONVERSION/Python-$PYTHONVERSION.tar.xz -o python.tar.xz \
24 | && tar -xf python.tar.xz \
25 | && cd Python-$PYTHONVERSION \
26 | && ./configure --enable-optimizations \
27 | && make -j 8 \
28 | && make altinstall \
29 | && update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 1
30 | RUN update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.7 1
--------------------------------------------------------------------------------
/contrib/ci-builders/buildbot/Dockerfile-build.apt:
--------------------------------------------------------------------------------
1 | ARG FROMBASEOS
2 | ARG FROMBASEOS_BUILD_TAG
3 | FROM $FROMBASEOS:$FROMBASEOS_BUILD_TAG
4 | ARG DEBIAN_FRONTEND=noninteractive
5 |
6 | ADD apt-package-list.txt /tmp/apt-package-list.txt
7 | RUN apt-get update \
8 | && apt-get install -y $(tr "\n" " " < /tmp/apt-package-list.txt) \
9 | && update-alternatives --install /usr/bin/python python /usr/bin/python3 1
10 |
--------------------------------------------------------------------------------
/contrib/ci-builders/buildbot/Dockerfile-build.arch:
--------------------------------------------------------------------------------
1 | ARG ARCHLINUX_TAG
2 | FROM archlinux:$ARCHLINUX_TAG
3 |
4 | RUN pacman -Syyu --noconfirm \
5 | && pacman -S --noconfirm \
6 | base-devel \
7 | git \
8 | python3 \
9 | python-pip \
10 | wget
11 |
12 | RUN wget -O /usr/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64
13 | RUN chmod +x /usr/bin/dumb-init
14 | RUN python -m pip install virtualenv
15 | # AUR for libtinfo5 Source: https://dev.to/cloudx/testing-our-package-build-in-the-docker-world-34p0
16 | RUN useradd builduser -m \
17 | && passwd -d builduser \
18 | && cd /home/builduser \
19 | && git clone "https://aur.archlinux.org/ncurses5-compat-libs.git" ncurses5-compat-libs \
20 | && chown builduser -R ncurses5-compat-libs \
21 | && (printf 'builduser ALL=(ALL) ALL\n' | tee -a /etc/sudoers) \
22 | && sudo -u builduser bash -c 'gpg --keyserver pool.sks-keyservers.net --recv-keys 702353E0F7E48EDB' \
23 | && sudo -u builduser bash -c 'cd ~/ncurses5-compat-libs && makepkg -si --noconfirm'
--------------------------------------------------------------------------------
/contrib/ci-builders/buildbot/Dockerfile-build.centos8:
--------------------------------------------------------------------------------
1 | FROM centos:8
2 |
3 | RUN yum update -y \
4 | && dnf group install -y "Development Tools" \
5 | && yum install -y \
6 | ncurses-compat-libs \
7 | python3 \
8 | python3-devel \
9 | wget
10 |
11 | RUN wget -O /usr/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64
12 | RUN chmod +x /usr/bin/dumb-init
13 | RUN alternatives --set python /usr/bin/python3 \
14 | && python3 -m pip install virtualenv
15 |
--------------------------------------------------------------------------------
/contrib/ci-builders/buildbot/Dockerfile-gitian.apt:
--------------------------------------------------------------------------------
1 | ARG FROMBASEOS
2 | ARG FROMBASEOS_BUILD_TAG=latest
3 | FROM electriccoinco/zcashd-build-$FROMBASEOS$FROMBASEOS_BUILD_TAG
4 |
5 | RUN useradd -ms /bin/bash -U debian
6 | USER debian:debian
7 | WORKDIR /home/debian
8 | CMD ["sleep", "infinity"]
--------------------------------------------------------------------------------
/contrib/ci-builders/buildbot/apt-package-list.txt:
--------------------------------------------------------------------------------
1 | autoconf
2 | bsdmainutils
3 | build-essential
4 | cmake
5 | curl
6 | g++-aarch64-linux-gnu
7 | git
8 | lcov
9 | libcap-dev
10 | libffi-dev
11 | libtinfo5
12 | libtool
13 | libssl-dev
14 | libz-dev
15 | libbz2-dev
16 | mingw-w64
17 | pkg-config
18 | python3
19 | python3-dev
20 | python3-venv
21 | valgrind
22 | wget
23 | zstd
24 |
--------------------------------------------------------------------------------
/contrib/ci-builders/buildbot/bbworker-requirements.txt:
--------------------------------------------------------------------------------
1 | buildbot-worker
2 | pyblake2
3 | pyflakes
4 | pyutil
5 | pyzmq
6 | requests
7 | simplejson
8 | twisted[tls]
9 | wheel
10 |
--------------------------------------------------------------------------------
/contrib/ci-builders/tekton/Dockerfile-build.apt:
--------------------------------------------------------------------------------
1 | ARG FROMBASEOS
2 | ARG FROMBASEOS_BUILD_TAG
3 | FROM $FROMBASEOS:$FROMBASEOS_BUILD_TAG
4 | ARG DEBIAN_FRONTEND=noninteractive
5 |
6 | ADD apt-package-list.txt /tmp/apt-package-list.txt
7 | RUN apt-get update \
8 | && apt-get install -y $(tr "\n" " " < /tmp/apt-package-list.txt) \
9 | && update-alternatives --install /usr/bin/python python /usr/bin/python3 1
10 |
--------------------------------------------------------------------------------
/contrib/ci-builders/tekton/Dockerfile-build.arch:
--------------------------------------------------------------------------------
1 | ARG FROMBASEOS
2 | ARG FROMBASEOS_BUILD_TAG
3 | FROM $FROMBASEOS:$FROMBASEOS_BUILD_TAG
4 |
5 | RUN pacman -Syyu --noconfirm \
6 | && pacman -S --noconfirm \
7 | base-devel \
8 | git \
9 | python3 \
10 | python-pip \
11 | ncurses \
12 | wget
13 |
14 | RUN sudo link /lib/libtinfo.so.6 /lib/libtinfo.so.5
15 |
--------------------------------------------------------------------------------
/contrib/ci-builders/tekton/Dockerfile-build.centos8:
--------------------------------------------------------------------------------
1 | FROM centos:8
2 |
3 | RUN yum update -y \
4 | && dnf group install -y "Development Tools" \
5 | && yum install -y \
6 | ncurses-compat-libs \
7 | python3 \
8 | python3-devel \
9 | wget
10 |
11 | RUN wget -O /usr/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64
12 | RUN chmod +x /usr/bin/dumb-init
13 | RUN alternatives --set python /usr/bin/python3 \
14 | && python3 -m pip install virtualenv
15 |
--------------------------------------------------------------------------------
/contrib/ci-builders/tekton/Dockerfile-tekton-worker:
--------------------------------------------------------------------------------
1 | ARG FROMBASEOS
2 | ARG FROMBASEOS_BUILD_TAG
3 | FROM electriccoinco/zcashd-build-$FROMBASEOS$FROMBASEOS_BUILD_TAG
4 |
5 | ADD requirements.txt requirements.txt
6 | RUN python -m venv venv \
7 | && . venv/bin/activate \
8 | && pip install --upgrade pip \
9 | && python -m pip install -r requirements.txt
10 |
11 | ADD ./zcash-params /home/.zcash-params
12 |
--------------------------------------------------------------------------------
/contrib/ci-builders/tekton/apt-package-tekton-list.txt:
--------------------------------------------------------------------------------
1 | autoconf
2 | bsdmainutils
3 | build-essential
4 | cmake
5 | curl
6 | g++-aarch64-linux-gnu
7 | git
8 | lcov
9 | libcap-dev
10 | libffi-dev
11 | libtinfo5
12 | libtool
13 | libssl-dev
14 | libz-dev
15 | libbz2-dev
16 | mingw-w64
17 | pkg-config
18 | python3
19 | python3-pip
20 | python3-dev
21 | python3-venv
22 | valgrind
23 | wget
24 | zstd
25 |
--------------------------------------------------------------------------------
/contrib/ci-builders/tekton/requirements.txt:
--------------------------------------------------------------------------------
1 | wheel
2 | pyblake2
3 | pyflakes
4 | pyutil
5 | pyzmq
6 | requests
7 | simplejson
8 | twisted[tls]
9 |
--------------------------------------------------------------------------------
/contrib/ci-workers/ansible.cfg:
--------------------------------------------------------------------------------
1 | [ssh_connection]
2 | pipelining = True
3 |
--------------------------------------------------------------------------------
/contrib/ci-workers/files/bashrc:
--------------------------------------------------------------------------------
1 | export PATH=$HOME/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2 | export EDITOR=vim
3 |
--------------------------------------------------------------------------------
/contrib/ci-workers/grind.yml:
--------------------------------------------------------------------------------
1 | ---
2 | # Configure a Buildbot worker
3 | - include: unix.yml
4 |
5 | - name: Install grind-specific worker dependencies
6 | hosts: zcash-ci-worker-unix
7 | become: true
8 |
9 | vars_files:
10 | - vars/default.yml
11 |
12 | tasks:
13 | - name: Get dependencies for distribution
14 | include_vars: "{{ item }}"
15 | with_first_found:
16 | - files:
17 | - "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
18 | - "vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version | int }}.yml"
19 | - "vars/{{ ansible_distribution }}.yml"
20 | - "vars/{{ ansible_os_family }}.yml"
21 | skip: true
22 |
23 | - name: Install required packages
24 | package:
25 | name: "{{ item }}"
26 | state: present
27 | with_items: "{{ grind_deps }}"
28 |
--------------------------------------------------------------------------------
/contrib/ci-workers/tasks/install-brew.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Check if brew is installed
3 | stat:
4 | path: /usr/local/bin/brew
5 | register: brew_check
6 |
7 | - name: Fail if brew is unavailable
8 | fail:
9 | msg: 'brew is not installed! Please install Homebrew: https://docs.brew.sh/Installation.html'
10 | when: not brew_check.stat.exists
11 |
--------------------------------------------------------------------------------
/contrib/ci-workers/tasks/install-pip.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Fetch pip installer
3 | get_url:
4 | url: https://bootstrap.pypa.io/get-pip.py
5 | dest: /tmp/get-pip.py
6 |
7 | - name: Install pip
8 | command: "{{ ansible_python.executable }} /tmp/get-pip.py"
9 |
--------------------------------------------------------------------------------
/contrib/ci-workers/templates/buildbot-worker.plist.j2:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Label
6 | net.buildbot.worker
7 | ProgramArguments
8 |
9 | {{ buildbot_worker_dir }}/venv/bin/buildbot-worker
10 | start
11 | {{ buildbot_worker_name }}
12 |
13 | WorkingDirectory
14 | {{ buildbot_worker_dir }}
15 | UserName
16 | {{ buildbot_worker_user }}
17 | KeepAlive
18 |
19 | NetworkState
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/contrib/ci-workers/templates/buildbot-worker.service.j2:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Buildbot worker
3 | Wants=network.target
4 | After=network.target
5 |
6 | [Service]
7 | Type=forking
8 | PIDFile={{ buildbot_worker_dir }}/{{ buildbot_worker_name }}/twistd.pid
9 | WorkingDirectory={{ buildbot_worker_dir }}
10 | ExecStart={{ buildbot_worker_dir }}/venv/bin/buildbot-worker start {{ buildbot_worker_name }}
11 | ExecReload={{ buildbot_worker_dir }}/venv/bin/buildbot-worker restart {{ buildbot_worker_name }}
12 | ExecStop={{ buildbot_worker_dir }}/venv/bin/buildbot-worker stop {{ buildbot_worker_name }}
13 | Restart=always
14 | User={{ buildbot_worker_user }}
15 |
16 | [Install]
17 | WantedBy=multi-user.target
18 |
--------------------------------------------------------------------------------
/contrib/ci-workers/templates/host.ec2.j2:
--------------------------------------------------------------------------------
1 | OS: {{ ansible_distribution }} {{ ansible_distribution_version }}
2 |
--------------------------------------------------------------------------------
/contrib/ci-workers/templates/host.j2:
--------------------------------------------------------------------------------
1 | OS: {{ ansible_distribution }} {{ ansible_distribution_version }}
2 | Memory: {{ ansible_memtotal_mb }} MB
3 | CPU: {{ ansible_processor if ansible_processor is string else ansible_processor[1] }} ({{ ansible_processor_cores }} cores)
4 |
--------------------------------------------------------------------------------
/contrib/ci-workers/vars/Archlinux.yml:
--------------------------------------------------------------------------------
1 | ---
2 | buildbot_deps:
3 | - python2-pip
4 | build_deps:
5 | - cmake
6 | - multilib/gcc
7 | - make
8 |
--------------------------------------------------------------------------------
/contrib/ci-workers/vars/CentOS.yml:
--------------------------------------------------------------------------------
1 | ---
2 | buildbot_deps: [] # Empty to remove python-pip
3 | build_deps:
4 | - bzip2
5 | - cmake
6 | - gcc
7 | - gcc-c++
8 | - make
9 | - patch
10 | dist_deps:
11 | - pkgconfig # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in
12 | - python-devel
13 | - redhat-rpm-config
14 |
--------------------------------------------------------------------------------
/contrib/ci-workers/vars/Debian.yml:
--------------------------------------------------------------------------------
1 | ---
2 | build_deps:
3 | - build-essential # Depends on g++, libc6-dev, make
4 | - cmake
5 | dist_deps:
6 | - python-dev
7 |
--------------------------------------------------------------------------------
/contrib/ci-workers/vars/Fedora.yml:
--------------------------------------------------------------------------------
1 | ---
2 | build_deps:
3 | - cmake
4 | - gcc
5 | - gcc-c++
6 | - make
7 | - patch
8 | dist_deps:
9 | - pkgconfig # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in
10 | - python-devel
11 | - redhat-rpm-config
12 |
--------------------------------------------------------------------------------
/contrib/ci-workers/vars/FreeBSD.yml:
--------------------------------------------------------------------------------
1 | ---
2 | buildbot_deps:
3 | - py27-pip
4 | build_deps:
5 | - cmake
6 | - gcc
7 | - gmake
8 | dist_deps:
9 | - bash
10 | - pkgconf # Required until b556beda264308e040f8d88aca4f2f386a0183d9 is pulled in
11 |
--------------------------------------------------------------------------------
/contrib/ci-workers/vars/MacOSX.yml:
--------------------------------------------------------------------------------
1 | ---
2 | buildbot_deps:
3 | - coreutils # For gnproc etc.
4 | # Most are already installed
5 | build_deps:
6 | - cmake
7 |
--------------------------------------------------------------------------------
/contrib/ci-workers/vars/Ubuntu.yml:
--------------------------------------------------------------------------------
1 | ---
2 | build_deps:
3 | - build-essential # Depends on g++, libc6-dev, make
4 | - cmake
5 |
--------------------------------------------------------------------------------
/contrib/ci-workers/vars/buildbot.yml:
--------------------------------------------------------------------------------
1 | ---
2 | buildbot_worker_user: zcbbworker
3 | buildbot_master_host: dev-ci.z.cash
4 | buildbot_master_port: 9899
5 | buildbot_worker_host_template: templates/host.j2
6 |
--------------------------------------------------------------------------------
/contrib/debian/compat:
--------------------------------------------------------------------------------
1 | 9
2 |
--------------------------------------------------------------------------------
/contrib/debian/control:
--------------------------------------------------------------------------------
1 | Source: zcash
2 | Section: utils
3 | Priority: optional
4 | Maintainer: Electric Coin Company
5 | Homepage: https://z.cash
6 | Build-Depends: autoconf, automake, bsdmainutils, build-essential,
7 | git, g++-multilib, libc6-dev, libtool,
8 | m4, ncurses-dev, pkg-config, python,
9 | unzip, wget, zlib1g-dev
10 | Vcs-Git: https://github.com/zcash/zcash.git
11 | Vcs-Browser: https://github.com/zcash/zcash
12 |
13 | Package: zcash
14 | Architecture: amd64
15 | Depends: ${shlibs:Depends}
16 | Description: Zcash libraries and tools
17 | Based on Bitcoin's code, it intends to offer a far higher standard
18 | of privacy and anonymity through a sophisticiated zero-knowledge
19 | proving scheme which preserves confidentiality of transaction metadata.
20 | Think of it as HTTPS for money.
21 | This package provides the daemon, zcashd, and the CLI tool,
22 | zcash-cli, to interact with the daemon.
23 |
--------------------------------------------------------------------------------
/contrib/debian/postinst:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # postinst script for zcash
3 | #
4 | # see: dh_installdeb(1)
5 |
6 | set -e
7 |
8 | # summary of how this script can be called:
9 | # * `configure'
10 | # * `abort-upgrade'
11 | # * `abort-remove' `in-favour'
12 | #
13 | # * `abort-remove'
14 | # * `abort-deconfigure' `in-favour'
15 | # `removing'
16 | #
17 | # for details, see https://www.debian.org/doc/debian-policy/ or
18 | # the debian-policy package
19 |
20 |
21 | case "$1" in
22 | configure)
23 | ;;
24 |
25 | abort-upgrade|abort-remove|abort-deconfigure)
26 | ;;
27 |
28 | *)
29 | echo "postinst called with unknown argument \`$1'" >&2
30 | exit 1
31 | ;;
32 | esac
33 |
34 | # dh_installdeb will replace this with shell code automatically
35 | # generated by other debhelper scripts.
36 |
37 | #DEBHELPER#
38 |
39 | exit 0
40 |
--------------------------------------------------------------------------------
/contrib/debian/postrm:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # postrm script for zcash
3 | #
4 | # see: dh_installdeb(1)
5 |
6 | set -e
7 |
8 | # summary of how this script can be called:
9 | # * `remove'
10 | # * `purge'
11 | # * `upgrade'
12 | # * `failed-upgrade'
13 | # * `abort-install'
14 | # * `abort-install'
15 | # * `abort-upgrade'
16 | # * `disappear'
17 | #
18 | # for details, see https://www.debian.org/doc/debian-policy/ or
19 | # the debian-policy package
20 |
21 |
22 | case "$1" in
23 | purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
24 | ;;
25 |
26 | *)
27 | echo "postrm called with unknown argument \`$1'" >&2
28 | exit 1
29 | ;;
30 | esac
31 |
32 | # dh_installdeb will replace this with shell code automatically
33 | # generated by other debhelper scripts.
34 |
35 | #DEBHELPER#
36 |
37 | exit 0
38 |
--------------------------------------------------------------------------------
/contrib/debian/preinst:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # preinst script for zcash
3 | #
4 | # see: dh_installdeb(1)
5 |
6 | set -e
7 |
8 | # summary of how this script can be called:
9 | # * `install'
10 | # * `install'
11 | # * `upgrade'
12 | # * `abort-upgrade'
13 | # for details, see https://www.debian.org/doc/debian-policy/ or
14 | # the debian-policy package
15 |
16 |
17 | case "$1" in
18 | install|upgrade)
19 | ;;
20 |
21 | abort-upgrade)
22 | ;;
23 |
24 | *)
25 | echo "preinst called with unknown argument \`$1'" >&2
26 | exit 1
27 | ;;
28 | esac
29 |
30 | # dh_installdeb will replace this with shell code automatically
31 | # generated by other debhelper scripts.
32 |
33 | #DEBHELPER#
34 |
35 | exit 0
36 |
--------------------------------------------------------------------------------
/contrib/debian/prerm:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # prerm script for zcash
3 | #
4 | # see: dh_installdeb(1)
5 |
6 | set -e
7 |
8 | # summary of how this script can be called:
9 | # * `remove'
10 | # * `upgrade'
11 | # * `failed-upgrade'
12 | # * `remove' `in-favour'
13 | # * `deconfigure' `in-favour'
14 | # `removing'
15 | #
16 | # for details, see https://www.debian.org/doc/debian-policy/ or
17 | # the debian-policy package
18 |
19 |
20 | case "$1" in
21 | remove|upgrade|deconfigure)
22 | ;;
23 |
24 | failed-upgrade)
25 | ;;
26 |
27 | *)
28 | echo "prerm called with unknown argument \`$1'" >&2
29 | exit 1
30 | ;;
31 | esac
32 |
33 | # dh_installdeb will replace this with shell code automatically
34 | # generated by other debhelper scripts.
35 |
36 | #DEBHELPER#
37 |
38 | exit 0
39 |
--------------------------------------------------------------------------------
/contrib/debian/rules:
--------------------------------------------------------------------------------
1 | #!/usr/bin/make -f
2 | # See debhelper(7) (uncomment to enable)
3 | # output every command that modifies files on the build system.
4 | #export DH_VERBOSE = 1
5 |
6 |
7 | # see FEATURE AREAS in dpkg-buildflags(1)
8 | #export DEB_BUILD_MAINT_OPTIONS = hardening=+all
9 |
10 | # see ENVIRONMENT in dpkg-buildflags(1)
11 | # package maintainers to append CFLAGS
12 | #export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
13 | # package maintainers to append LDFLAGS
14 | #export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
15 |
16 |
17 | %:
18 | dh $@ --with autotools_dev
19 |
20 |
21 | # dh_make generated override targets
22 | # This is example for Cmake (See https://bugs.debian.org/641051 )
23 | #override_dh_auto_configure:
24 | # dh_auto_configure -- # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)
25 |
26 |
--------------------------------------------------------------------------------
/contrib/debian/zcash.examples:
--------------------------------------------------------------------------------
1 | DEBIAN/examples/ycash.conf
2 |
--------------------------------------------------------------------------------
/contrib/debian/zcash.install:
--------------------------------------------------------------------------------
1 | usr/bin/zcashd
2 | usr/bin/zcash-cli
3 | usr/bin/zcash-fetch-params
4 |
--------------------------------------------------------------------------------
/contrib/debian/zcash.manpages:
--------------------------------------------------------------------------------
1 | DEBIAN/manpages/zcash-cli.1
2 | DEBIAN/manpages/zcashd.1
3 |
--------------------------------------------------------------------------------
/contrib/devtools/split-debug.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | if [ $# -ne 3 ];
4 | then echo "usage: $0 "
5 | fi
6 |
7 | /usr/bin/objcopy --enable-deterministic-archives -p --only-keep-debug $1 $3
8 | /usr/bin/objcopy --enable-deterministic-archives -p --strip-debug $1 $2
9 | /usr/bin/strip --enable-deterministic-archives -p -s $2
10 | /usr/bin/objcopy --enable-deterministic-archives -p --add-gnu-debuglink=$3 $2
11 |
--------------------------------------------------------------------------------
/contrib/docker/.dockerignore:
--------------------------------------------------------------------------------
1 | ./zcash-data-dir/
2 | ./zcash-params-dir/
3 |
--------------------------------------------------------------------------------
/contrib/docker/.env.example:
--------------------------------------------------------------------------------
1 | ZCASHD_NETWORK=testnet
2 | ZCASHD_LOGIPS=1
3 | ZCASHD_EXPERIMENTALFEATURES=1
4 | ZCASHD_GEN=0
5 | ZCASHD_RPCUSER=zcashrpc
6 | ZCASHD_RPCPASSWORD=notsecure
7 | ZCASHD_RPCBIND=0.0.0.0
8 | ZCASHD_ALLOWIP=0.0.0.0/0
9 | ZCASHD_TXINDEX=1
10 | ZCASHD_INSIGHTEXPLORER=1
11 | ZCASHD_ZMQPORT=9994
12 | ZCASHD_ZMQBIND=0.0.0.0
13 |
--------------------------------------------------------------------------------
/contrib/docker/.gitignore:
--------------------------------------------------------------------------------
1 | ./zcash-data-dir/
2 | ./zcash-params-dir/
3 | .env
4 |
--------------------------------------------------------------------------------
/contrib/docker/docker-compose.yml:
--------------------------------------------------------------------------------
1 | ---
2 | version: '3'
3 |
4 | services:
5 | zcashd:
6 | build: .
7 | env_file:
8 | - .env
9 | volumes:
10 | - ./zcash-params-dir:/srv/zcashd/.zcash-params
11 | - ./zcash-data-dir:/srv/zcashd/.zcash
12 |
--------------------------------------------------------------------------------
/contrib/linearize/example-linearize.cfg:
--------------------------------------------------------------------------------
1 |
2 | # bitcoind RPC settings (linearize-hashes)
3 | rpcuser=someuser
4 | rpcpassword=somepassword
5 | host=127.0.0.1
6 | port=8832
7 | #port=18832
8 |
9 | # bootstrap.dat hashlist settings (linearize-hashes)
10 | max_height=313000
11 |
12 | # bootstrap.dat input/output settings (linearize-data)
13 |
14 | # mainnet
15 | netmagic=f9beb4d9
16 | genesis=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
17 | input=/home/example/.bitcoin/blocks
18 |
19 | # testnet
20 | #netmagic=0b110907
21 | #genesis=000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943
22 | #input=/home/example/.bitcoin/testnet3/blocks
23 |
24 | output_file=/home/example/Downloads/bootstrap.dat
25 | hashlist=hashlist.txt
26 | split_year=1
27 |
28 | # Maxmimum size in bytes of out-of-order blocks cache in memory
29 | out_of_order_cache_sz = 100000000
30 |
--------------------------------------------------------------------------------
/contrib/metrics/prometheus.yaml:
--------------------------------------------------------------------------------
1 | scrape_configs:
2 | - job_name: 'zcashd'
3 | scrape_interval: 500ms
4 | metrics_path: '/'
5 | static_configs:
6 | - targets: ['127.0.0.1:9969']
7 |
--------------------------------------------------------------------------------
/contrib/qos/README.md:
--------------------------------------------------------------------------------
1 | ### Qos ###
2 |
3 | This is a Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the Bitcoin network. It limits outbound TCP traffic with a source or destination port of 8833, but not if the destination IP is within a LAN (defined as 192.168.x.x).
4 |
5 | This means one can have an always-on bitcoind instance running, and another local bitcoind/bitcoin-qt instance which connects to this node and receives blocks from it.
6 |
--------------------------------------------------------------------------------
/contrib/seeds/README.md:
--------------------------------------------------------------------------------
1 | ### Seeds ###
2 |
3 | Utility to generate the seeds.txt list that is compiled into the client
4 | (see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and other utilities in [contrib/seeds](/contrib/seeds)).
--------------------------------------------------------------------------------
/contrib/testgen/README.md:
--------------------------------------------------------------------------------
1 | ### TestGen ###
2 |
3 | Utilities to generate test vectors for the data-driven Bitcoin tests.
4 |
5 | Usage:
6 |
7 | gen_base58_test_vectors.py valid 50 > ../../src/test/data/base58_keys_valid.json
8 | gen_base58_test_vectors.py invalid 50 > ../../src/test/data/base58_keys_invalid.json
--------------------------------------------------------------------------------
/depends/.gitignore:
--------------------------------------------------------------------------------
1 | SDKs/
2 | work/
3 | built/
4 | sources/
5 | config.site
6 | x86_64*
7 | i686*
8 | mips*
9 | arm*
10 | aarch64*
11 |
--------------------------------------------------------------------------------
/depends/builders/default.mk:
--------------------------------------------------------------------------------
1 | default_build_CC = gcc
2 | default_build_CXX = g++
3 | default_build_AR = ar
4 | default_build_RANLIB = ranlib
5 | default_build_STRIP = strip
6 | default_build_NM = nm
7 | default_build_OTOOL = otool
8 | default_build_INSTALL_NAME_TOOL = install_name_tool
9 |
10 | define add_build_tool_func
11 | build_$(build_os)_$1 ?= $$(default_build_$1)
12 | build_$(build_arch)_$(build_os)_$1 ?= $$(build_$(build_os)_$1)
13 | build_$1=$$(build_$(build_arch)_$(build_os)_$1)
14 | endef
15 | $(foreach var,CC CXX AR RANLIB NM STRIP SHA256SUM DOWNLOAD OTOOL INSTALL_NAME_TOOL,$(eval $(call add_build_tool_func,$(var))))
16 | define add_build_flags_func
17 | build_$(build_arch)_$(build_os)_$1 += $(build_$(build_os)_$1)
18 | build_$1=$$(build_$(build_arch)_$(build_os)_$1)
19 | endef
20 | $(foreach flags, CFLAGS CXXFLAGS LDFLAGS, $(eval $(call add_build_flags_func,$(flags))))
21 |
--------------------------------------------------------------------------------
/depends/builders/freebsd.mk:
--------------------------------------------------------------------------------
1 | build_freebsd_SHA256SUM = shasum -a 256
2 | build_freebsd_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o
3 |
--------------------------------------------------------------------------------
/depends/builders/linux.mk:
--------------------------------------------------------------------------------
1 | build_linux_SHA256SUM = sha256sum
2 | build_linux_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o
3 |
--------------------------------------------------------------------------------
/depends/hosts/freebsd.mk:
--------------------------------------------------------------------------------
1 | freebsd_CFLAGS=-pipe
2 | freebsd_CXXFLAGS=$(freebsd_CFLAGS)
3 |
4 | freebsd_release_CFLAGS=-O3
5 | freebsd_release_CXXFLAGS=$(freebsd_release_CFLAGS)
6 |
7 | freebsd_debug_CFLAGS=-O0
8 | freebsd_debug_CXXFLAGS=$(freebsd_debug_CFLAGS)
9 |
10 | freebsd_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC
11 |
12 | # Changes below have not been tested. If you try to build on FreeBSD,
13 | # please let us know how it goes.
14 |
15 | ifneq ($(YCASH_TOOLCHAIN), GCC)
16 | freebsd_LDFLAGS?=-fuse-ld=lld
17 | endif
18 |
19 | i686_freebsd_CC=$(default_host_CC) -m32
20 | i686_freebsd_CXX=$(default_host_CXX) -m32
21 | x86_64_freebsd_CC=$(default_host_CC) -m64
22 | x86_64_freebsd_CXX=$(default_host_CXX) -m64
23 |
--------------------------------------------------------------------------------
/depends/hosts/mingw32.mk:
--------------------------------------------------------------------------------
1 | mingw32_CFLAGS=-pipe
2 | mingw32_CXXFLAGS=$(mingw32_CFLAGS)
3 |
4 | ifneq ($(YCASH_TOOLCHAIN), GCC)
5 | mingw32_CXXFLAGS += -isystem $(host_prefix)/include/c++/v1
6 | mingw32_LDFLAGS?=-fuse-ld=lld
7 | else
8 | mingw32_CC = $(host_toolchain)gcc-posix
9 | mingw32_CXX = $(host_toolchain)g++-posix
10 | endif
11 |
12 | mingw32_release_CFLAGS=-O3
13 | mingw32_release_CXXFLAGS=$(mingw32_release_CFLAGS)
14 |
15 | mingw32_debug_CFLAGS=-O0
16 | mingw32_debug_CXXFLAGS=$(mingw32_debug_CFLAGS)
17 |
18 | mingw32_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC
19 |
--------------------------------------------------------------------------------
/depends/packages/libsodium.mk:
--------------------------------------------------------------------------------
1 | package=libsodium
2 | $(package)_version=1.0.18
3 | $(package)_download_path=https://download.libsodium.org/libsodium/releases/
4 | $(package)_file_name=$(package)-$($(package)_version).tar.gz
5 | $(package)_sha256_hash=6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1
6 | $(package)_dependencies=
7 | $(package)_patches=1.0.15-pubkey-validation.diff 1.0.15-signature-validation.diff
8 | $(package)_config_opts=
9 |
10 | define $(package)_preprocess_cmds
11 | patch -p1 < $($(package)_patch_dir)/1.0.15-pubkey-validation.diff && \
12 | patch -p1 < $($(package)_patch_dir)/1.0.15-signature-validation.diff && \
13 | cd $($(package)_build_subdir); DO_NOT_UPDATE_CONFIG_SCRIPTS=1 ./autogen.sh
14 | endef
15 |
16 | define $(package)_config_cmds
17 | $($(package)_autoconf) --enable-static --disable-shared
18 | endef
19 |
20 | define $(package)_build_cmds
21 | $(MAKE)
22 | endef
23 |
24 | define $(package)_stage_cmds
25 | $(MAKE) DESTDIR=$($(package)_staging_dir) install
26 | endef
27 |
--------------------------------------------------------------------------------
/depends/packages/native_b2.mk:
--------------------------------------------------------------------------------
1 | package=native_b2
2 | $(package)_version=$(boost_version)
3 | $(package)_download_path=$(boost_download_path)
4 | $(package)_file_name=$(boost_file_name)
5 | $(package)_sha256_hash=$(boost_sha256_hash)
6 | $(package)_build_subdir=tools/build/src/engine
7 |
8 | ifneq ($(YCASH_TOOLCHAIN), GCC)
9 | ifneq ($(host_os),darwin)
10 | $(package)_dependencies=native_clang
11 | endif
12 | $(package)_toolset_$(host_os)=clang
13 | else
14 | $(package)_toolset_$(host_os)=gcc
15 | endif
16 |
17 | define $(package)_build_cmds
18 | CXX="$($(package)_cxx)" CXXFLAGS="$($(package)_cxxflags)" ./build.sh "$($(package)_toolset_$(host_os))"
19 | endef
20 |
21 | define $(package)_stage_cmds
22 | mkdir -p "$($(package)_staging_prefix_dir)"/bin/ && \
23 | cp b2 "$($(package)_staging_prefix_dir)"/bin/
24 | endef
25 |
--------------------------------------------------------------------------------
/depends/packages/native_ccache.mk:
--------------------------------------------------------------------------------
1 | package=native_ccache
2 | $(package)_version=3.7.12
3 | $(package)_download_path=https://github.com/ccache/ccache/releases/download/v$($(package)_version)
4 | $(package)_file_name=ccache-$($(package)_version).tar.gz
5 | $(package)_sha256_hash=d2abe88d4c283ce960e233583061127b156ffb027c6da3cf10770fc0c7244194
6 |
7 | define $(package)_set_vars
8 | $(package)_config_opts=
9 | endef
10 |
11 | define $(package)_config_cmds
12 | $($(package)_autoconf)
13 | endef
14 |
15 | define $(package)_build_cmds
16 | $(MAKE)
17 | endef
18 |
19 | define $(package)_stage_cmds
20 | $(MAKE) DESTDIR=$($(package)_staging_dir) install
21 | endef
22 |
23 | define $(package)_postprocess_cmds
24 | rm -rf lib include
25 | endef
26 |
--------------------------------------------------------------------------------
/depends/packages/native_libtinfo5.mk:
--------------------------------------------------------------------------------
1 | package=native_libtinfo5
2 | $(package)_version=6.2
3 |
4 | # We only enable this if build_os is linux.
5 | $(package)_download_path=http://ftp.debian.org/debian/pool/main/n/ncurses/
6 | $(package)_download_file=libtinfo5_$($(package)_version)+20201114-2+deb11u2_amd64.deb
7 | $(package)_file_name=libtinfo5-$($(package)_version).deb
8 | $(package)_sha256_hash=69e131ce3f790a892ca1b0ae3bfad8659daa2051495397eee1b627d9783a6797
9 |
10 | define $(package)_extract_cmds
11 | mkdir -p $($(package)_extract_dir) && \
12 | echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
13 | $(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
14 | mkdir -p libtinfo5 && \
15 | cd libtinfo5 && \
16 | ar x $($(package)_source_dir)/$($(package)_file_name) && \
17 | tar xf data.tar.xz
18 | endef
19 |
20 | define $(package)_stage_cmds
21 | pwd && \
22 | mkdir -p $($(package)_staging_prefix_dir)/lib && \
23 | cp libtinfo5/lib/x86_64-linux-gnu/libtinfo.so.5.9 $($(package)_staging_prefix_dir)/lib/libtinfo.so.5
24 | endef
25 |
--------------------------------------------------------------------------------
/depends/packages/packages.mk:
--------------------------------------------------------------------------------
1 | zcash_packages := libsodium utfcpp
2 | packages := boost libevent zeromq $(zcash_packages) googletest
3 | ifneq ($(YCASH_TOOLCHAIN), GCC)
4 | native_packages := native_clang native_ccache native_rust
5 | else
6 | native_packages := native_ccache native_rust
7 | endif
8 |
9 | ifeq ($(build_os),linux)
10 | native_packages += native_libtinfo5
11 | endif
12 |
13 | wallet_packages=bdb
14 |
15 | $(host_arch)_$(host_os)_native_packages += native_b2
16 |
17 | ifneq ($(build_os),darwin)
18 | darwin_native_packages=native_cctools
19 | endif
20 |
21 | ifneq ($(YCASH_TOOLCHAIN), GCC)
22 | # We use a complete SDK for Darwin, which includes libc++.
23 | ifneq ($(host_os),darwin)
24 | packages += libcxx
25 | endif
26 | endif
27 |
--------------------------------------------------------------------------------
/depends/packages/utfcpp.mk:
--------------------------------------------------------------------------------
1 | package=utfcpp
2 | $(package)_version=3.2.1
3 | $(package)_download_path=https://github.com/nemtrif/$(package)/archive/
4 | $(package)_file_name=$(package)-$($(package)_version).tar.gz
5 | $(package)_download_file=v$($(package)_version).tar.gz
6 | $(package)_sha256_hash=8d6aa7d77ad0abb35bb6139cb9a33597ac4c5b33da6a004ae42429b8598c9605
7 |
8 | define $(package)_stage_cmds
9 | cp -a ./source $($(package)_staging_dir)$(host_prefix)/include
10 | endef
11 |
--------------------------------------------------------------------------------
/depends/patches/libevent/0001-fix-windows-getaddrinfo.patch:
--------------------------------------------------------------------------------
1 | diff -ur libevent-2.1.8-stable.orig/configure.ac libevent-2.1.8-stable/configure.ac
2 | --- libevent-2.1.8-stable.orig/configure.ac 2017-01-29 17:51:00.000000000 +0000
3 | +++ libevent-2.1.8-stable/configure.ac 2020-03-07 01:11:16.311335005 +0000
4 | @@ -389,6 +389,10 @@
5 | #ifdef HAVE_NETDB_H
6 | #include
7 | #endif
8 | +#ifdef _WIN32
9 | +#include
10 | +#include
11 | +#endif
12 | ]],
13 | [[
14 | getaddrinfo;
15 | Only in libevent-2.1.8-stable: configure.ac~
16 |
--------------------------------------------------------------------------------
/depends/patches/libsodium/1.0.15-pubkey-validation.diff:
--------------------------------------------------------------------------------
1 | diff -ur libsodium-1.0.18-orig/src/libsodium/crypto_sign/ed25519/ref10/open.c libsodium-1.0.18/src/libsodium/crypto_sign/ed25519/ref10/open.c
2 | --- libsodium-1.0.18-orig/src/libsodium/crypto_sign/ed25519/ref10/open.c 2019-05-18 16:32:11.000000000 -0400
3 | +++ libsodium-1.0.18/src/libsodium/crypto_sign/ed25519/ref10/open.c 2020-01-21 18:55:22.474233831 -0500
4 | @@ -32,8 +32,11 @@
5 | ge25519_has_small_order(sig) != 0) {
6 | return -1;
7 | }
8 | - if (ge25519_is_canonical(pk) == 0 ||
9 | - ge25519_has_small_order(pk) != 0) {
10 | + unsigned char d = 0;
11 | + for (int i = 0; i < 32; ++i) {
12 | + d |= pk[i];
13 | + }
14 | + if (d == 0) {
15 | return -1;
16 | }
17 | #endif
18 |
--------------------------------------------------------------------------------
/depends/patches/zeromq/stats_proxy-missing-braces.diff:
--------------------------------------------------------------------------------
1 | diff -ur zeromq-4.3.5-orig/src/proxy.cpp zeromq-4.3.5/src/proxy.cpp
2 | --- zeromq-4.3.5-orig/src/proxy.cpp 2023-10-09 09:37:00.000000000 +0000
3 | +++ zeromq-4.3.5/src/proxy.cpp 2023-12-18 21:24:25.551814814 +0000
4 | @@ -499,7 +499,7 @@
5 | zmq_pollitem_t itemsout[] = {{frontend_, 0, ZMQ_POLLOUT, 0},
6 | {backend_, 0, ZMQ_POLLOUT, 0}};
7 |
8 | - stats_proxy stats = {0};
9 | + stats_proxy stats = {{{0}}};
10 |
11 | // Proxy can be in these three states
12 | proxy_state_t state = active;
13 | Only in zeromq-4.3.5/src: .proxy.cpp.swp
14 |
--------------------------------------------------------------------------------
/doc/bips.md:
--------------------------------------------------------------------------------
1 | BIPs that are implemented by Zcash (up-to-date up to **v1.1.0**):
2 |
3 | * Numerous historic BIPs were present in **v1.0.0** at launch; see [the protocol spec](https://github.com/zcash/zips/blob/master/protocol/protocol.pdf) for details.
4 | * [`BIP 111`](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki): `NODE_BLOOM` service bit added, but only enforced for peer versions `>=170004` as of **v1.1.0** ([PR #2814](https://github.com/zcash/zcash/pull/2814)).
5 |
--------------------------------------------------------------------------------
/doc/book/.gitignore:
--------------------------------------------------------------------------------
1 | book
2 |
--------------------------------------------------------------------------------
/doc/book/book.toml:
--------------------------------------------------------------------------------
1 | [book]
2 | authors = ["Jack Grigg"]
3 | language = "en"
4 | multilingual = false
5 | src = "src"
6 | title = "The zcashd Book"
7 |
--------------------------------------------------------------------------------
/doc/book/src/README.md:
--------------------------------------------------------------------------------
1 | {{#include ../../../README.md}}
2 |
--------------------------------------------------------------------------------
/doc/book/src/SUMMARY.md:
--------------------------------------------------------------------------------
1 | # The zcashd Book
2 |
3 | [zcashd](README.md)
4 | - [User Documentation](user.md)
5 | - [Metrics](user/metrics.md)
6 | - [Design](design.md)
7 | - [Chain state](design/chain-state.md)
8 | - ["Coins" view](design/coins-view.md)
9 |
--------------------------------------------------------------------------------
/doc/book/src/design.md:
--------------------------------------------------------------------------------
1 | # Design
2 |
3 | Zcash was originally a fork of Bitcoin 0.11.2, and as such the `zcashd` node architecture
4 | is very similar to `bitcoind`. There are however several differences, most notably the
5 | addition of shielded pools to the consensus logic and full node state.
6 |
7 | In this section of the book, we describe the overall architecture that we inherit from
8 | `bitcoind`, the changes we have made to the inherited components, and the new components
9 | we have introduced.
10 |
--------------------------------------------------------------------------------
/doc/book/src/design/chain-state.md:
--------------------------------------------------------------------------------
1 | # Chain state
2 |
3 | TBD
4 |
--------------------------------------------------------------------------------
/doc/book/src/design/coins-view.md:
--------------------------------------------------------------------------------
1 | # "Coins" view
2 |
3 | TBD
4 |
--------------------------------------------------------------------------------
/doc/book/src/doc/imgs/logo.png:
--------------------------------------------------------------------------------
1 | ../../../../imgs/logo.png
--------------------------------------------------------------------------------
/doc/book/src/doc/imgs/zcashd_screen.gif:
--------------------------------------------------------------------------------
1 | ../../../../imgs/zcashd_screen.gif
--------------------------------------------------------------------------------
/doc/book/src/user.md:
--------------------------------------------------------------------------------
1 | # User Documentation
2 |
3 | This section contains user documentation specific to `zcashd`.
4 |
5 | See [here](https://zcash.readthedocs.io/) for more general Zcash documentation, as well as
6 | installation instructions for `zcashd`.
7 |
--------------------------------------------------------------------------------
/doc/dnsseed-policy.md:
--------------------------------------------------------------------------------
1 | Expectations for DNS Seed operators
2 | ====================================
3 |
4 | This document has been relocated to https://zcash.readthedocs.io/en/latest/rtd_pages/dnsseed_policy.html
5 |
6 | The source for this document is available at https://gitlab.com/zcash-docs/zcash-docs/blob/master/source/rtd_pages/dnsseed_policy.rst
--------------------------------------------------------------------------------
/doc/files.md:
--------------------------------------------------------------------------------
1 | # Data Directory Files
2 |
3 | This document has been relocated to https://zcash.readthedocs.io/en/latest/rtd_pages/files.html
4 |
5 | The source for this document is available at https://gitlab.com/zcash-docs/zcash-docs/blob/master/source/rtd_pages/files.rst
6 |
--------------------------------------------------------------------------------
/doc/imgs/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ycashfoundation/ycash/a1b0f39a4338c58be1e7509423d255c153d7975e/doc/imgs/logo.png
--------------------------------------------------------------------------------
/doc/imgs/zcashd_screen.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ycashfoundation/ycash/a1b0f39a4338c58be1e7509423d255c153d7975e/doc/imgs/zcashd_screen.gif
--------------------------------------------------------------------------------
/doc/imgs/zcashd_screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ycashfoundation/ycash/a1b0f39a4338c58be1e7509423d255c153d7975e/doc/imgs/zcashd_screenshot.png
--------------------------------------------------------------------------------
/doc/man/Makefile.am:
--------------------------------------------------------------------------------
1 | dist_man1_MANS=zcashd.1 zcash-cli.1 zcash-fetch-params.1 zcash-tx.1
2 |
--------------------------------------------------------------------------------
/doc/man/zcash-fetch-params.1:
--------------------------------------------------------------------------------
1 | .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
2 | .TH ZCASH-FETCH-PARAMS "1" "January 2017" "Zcash - zcash-fetch-params" "User Commands"
3 | .SH NAME
4 | zcash-fetch-params \- Downloads the Zcash network parameters
5 | .SH DESCRIPTION
6 | Zcash \- zcash-fetch\-params
7 | .PP
8 | This script will fetch the Zcash zkSNARK parameters and verify their
9 | integrity with sha256sum.
10 | .PP
11 | If they already exist locally, it will exit now and do nothing else.
12 | .PP
13 | This script will fetch the Zcash zkSNARK parameters and verify their
14 | integrity with sha256sum.
15 | .PP
16 | If they already exist locally, it will exit now and do nothing else.
17 | .SH "SEE ALSO"
18 | The full documentation for
19 | .B Zcash
20 | is maintained as a Texinfo manual. If the
21 | .B info
22 | and
23 | .B Zcash
24 | programs are properly installed at your site, the command
25 | .IP
26 | .B info Zcash
27 | .PP
28 | should give you access to the complete manual.
29 |
--------------------------------------------------------------------------------
/doc/payment-api.md:
--------------------------------------------------------------------------------
1 | # Zcash Payment API
2 |
3 | This document has been relocated to https://zcash.readthedocs.io/en/latest/rtd_pages/payment_api.html
4 |
5 | The source for this document is available at https://gitlab.com/zcash-docs/zcash-docs/blob/master/source/rtd_pages/payment_api.rst
--------------------------------------------------------------------------------
/doc/reducing-memory-usage.md:
--------------------------------------------------------------------------------
1 | In-memory caches
2 | ----------------
3 |
4 | The size of some in-memory caches can be reduced. As caches trade off memory usage for performance, usually reducing these have a negative effect on performance.
5 |
6 | - `-dbcache=` - the UTXO database cache size, this defaults to `450` (`100` before 1.0.15). The unit is MiB (where 1 GiB = 1024 MiB).
7 | - The minimum value for `-dbcache` is 4.
8 | - A lower dbcache make initial sync time much longer. After the initial sync, the effect is less pronounced for most use-cases, unless fast validation of blocks is important such as for mining.
9 |
--------------------------------------------------------------------------------
/doc/release-notes.md:
--------------------------------------------------------------------------------
1 | (note: this is a temporary file, to be added-to by anybody, and moved to
2 | release-notes at release time)
3 |
4 | Notable changes
5 | ===============
6 |
7 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-0.11.2.z6.md:
--------------------------------------------------------------------------------
1 | Jack Grigg (4):
2 | Equihash: Only compare the first n/(k+1) bits when sorting.
3 | Randomise the nonce in the block header.
4 | Clear mempool before using it for benchmark test, fix parameter name.
5 | Fix memory leak in large tx benchmark.
6 |
7 | Sean Bowe (5):
8 | Increase block size to 2MB and update performance test.
9 | Make sigop limit `20000` just as in Bitcoin, ignoring our change to the blocksize limit.
10 | Remove the mainnet checkpoints.
11 | Fix performance test for block verification.
12 | Make `validatelargetx` test more accurate.
13 |
14 | Taylor Hornby (1):
15 | Add example mock test of CheckTransaction.
16 |
17 | aniemerg (1):
18 | Suppress Libsnark Debugging Info.
19 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-1.0.0-rc4.md:
--------------------------------------------------------------------------------
1 | Daira Hopwood (3):
2 | Update pchMessageStart for mainnet and testnet.
3 | Update version numbers for 1.0.0-rc4.
4 | Add release notes for 1.0.0-rc4.
5 |
6 | Jack Grigg (4):
7 | Integrate production Founders' Reward keys
8 | Remove Founders' Reward override from #1398
9 | Regenerate mainnet and testnet genesis blocks for nMaxTipAge change
10 | Update tests for new genesis blocks
11 |
12 | Sean Bowe (1):
13 | Zcash zk-SNARK public parameters for 1.0 "Sprout".
14 |
15 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-1.0.0.md:
--------------------------------------------------------------------------------
1 | Jack Grigg (8):
2 | Rework zcutil/build-debian-package.sh to place files correctly
3 | Add lintian check to zcutil/build-debian-package.sh
4 | Fix DEBIAN/control errors raised by lintian
5 | Build libsnark with -march=x86-64 instead of -march=native
6 | Disable the metrics screen on regtest
7 | Add the Zcash genesis blocks
8 | Update tests for new genesis blocks
9 | Update version strings to 1.0.0
10 |
11 | Kevin Gallagher (6):
12 | Use fakeroot to build Debian package
13 | Update Debian package maintainer scripts
14 | Fixes executable mode of maintainer scripts
15 | Add DEBIAN/rules file (required by policy)
16 | Adds zcash.examples and zcash.manpages
17 | Run Lintian after built package is copied to $SRC_PATH
18 |
19 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-1.0.10-1.md:
--------------------------------------------------------------------------------
1 | Jack Grigg (1):
2 | Disable building Proton in Gitian
3 |
4 | Sean Bowe (2):
5 | Revert "Remove an unneeded version workaround as per @str4d's review comment."
6 | Revert "Delete old protocol version constants and simplify code that used them."
7 |
8 | Simon Liu (2):
9 | make-release.py: Versioning changes for 1.0.10-1.
10 | make-release.py: Updated manpages for 1.0.10-1.
11 |
12 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-1.0.2.md:
--------------------------------------------------------------------------------
1 | ITH4Coinomia (2):
2 | Update security-warnings.md
3 | Update init.cpp
4 |
5 | S. Matthew English (1):
6 | enforcing consistency 'tor' to 'Tor'
7 |
8 | Sean Bowe (1):
9 | Write R1CS output to file in GenerateParams.
10 |
11 | Simon (4):
12 | Fixes #1762 segfault when miner is interrupted.
13 | Fixes #1779 so that sending to multiple zaddrs no longer fails.
14 | Add GenIdentity, an identity function for MappedShuffle.
15 | Add transaction size and zaddr output limit checks to z_sendmany.
16 |
17 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-1.0.7-1.md:
--------------------------------------------------------------------------------
1 | Jay Graber (3):
2 | Add -t to git fetch for release-notes.py
3 | Update version to 1.0.7-1
4 | Update auto-generated manpages to 1.0.7-1
5 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-1.0.8-1.md:
--------------------------------------------------------------------------------
1 | Daira Hopwood (3):
2 | Don't rely on a finite upper bound on fee rate or priority.
3 | Simplify JoinSplit priority calculation. refs 1896
4 | Add check for JoinSplit priority as calculated by CCoinsViewCache::GetPriority.
5 |
6 | Jack Grigg (1):
7 | Use a larger -rpcclienttimeout for slow performance measurements
8 |
9 | Nathan Wilcox (2):
10 | Bump version numbers for v1.0.8-1.
11 | Commit the changes from gen-manpages.sh, except manually tweak the version strings.
12 |
13 | str4d (2):
14 | Update tests to check actual infinity as well as INF_FEERATE
15 | Add unit test for security issue 2017-04-11.a
16 |
17 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-2.0.7-2.md:
--------------------------------------------------------------------------------
1 | Notable changes
2 | ===============
3 |
4 |
5 | Pre-Blossom EOS Halt
6 | --------------------
7 | v2.0.7-2 contains a shortened EOS halt so that is in alignment with v2.0.7.
8 |
9 |
10 | Testnet Blossom Rewind
11 | ----------------------
12 | Testnet users needed to upgrade to 2.0.7 before Blossom activated. The amount
13 | of notice given to these users was brief, so many were not able to upgrade in
14 | time. These users may now be on the wrong branch. v2.0.7-2 adds an "intended
15 | rewind" to prevent having to manually reindex when reconnecting to the correct
16 | chain.
17 |
18 |
19 | Insight Explorer Logging Fix
20 | ----------------------------
21 | Fixed an issue where `ERROR: spent index not enabled` would be logged unnecessarily.
22 |
23 | Changelog
24 | =========
25 |
26 | Eirik Ogilvie-Wigley (3):
27 | Notable changes for v2.0.7-2
28 | make-release.py: Versioning changes for 2.0.7-2.
29 | make-release.py: Updated manpages for 2.0.7-2.
30 |
31 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-2.1.0-1.md:
--------------------------------------------------------------------------------
1 | Changelog
2 | =========
3 |
4 | Jack Grigg (2):
5 | make-release.py: Versioning changes for 2.1.0-1.
6 | make-release.py: Updated manpages for 2.1.0-1.
7 |
8 | Sean Bowe (1):
9 | Fix of CVE-2017-18350
10 |
11 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-2.1.2-1.md:
--------------------------------------------------------------------------------
1 | Notable changes
2 | ===============
3 |
4 | This release solves an issue where nodes that did not follow the Heartwood activation on testnet (by running a version prior to v2.1.2) but then upgraded to v2.1.2 or later would be incapable of rolling back and following the Heartwood activation without performing a reindex operation.
5 |
6 | Changelog
7 | =========
8 |
9 | Jack Grigg (1):
10 | txdb/chain: Restrict Heartwood chain consistency check to block index objects that were created by Heartwood-unaware clients.
11 |
12 | Sean Bowe (4):
13 | Add the intended testnet activation block of Heartwood to our intended rewind logic.
14 | Don't throw exception in PopHistoryNode when popping from empty tree.
15 | make-release.py: Versioning changes for 2.1.2-1.
16 | make-release.py: Updated manpages for 2.1.2-1.
17 |
18 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-2.1.2-2.md:
--------------------------------------------------------------------------------
1 | Notable changes
2 | ===============
3 |
4 | This release fixes an issue that was identified by the Heartwood activation on testnet. v2.1.2 nodes that followed the Heartwood activation on testnet would crash on restart if, prior to shutdown, they had received a block from a miner that had not activated Heartwood, which is very likely. This release fixes that crash.
5 |
6 | Changelog
7 | =========
8 |
9 | Daira Hopwood (1):
10 | txdb: log additional debug information.
11 |
12 | Jack Grigg (1):
13 | txdb: More complete fix for the Heartwood chain consistency check issue.
14 |
15 | Sean Bowe (2):
16 | make-release.py: Versioning changes for 2.1.2-2.
17 | make-release.py: Updated manpages for 2.1.2-2.
18 |
19 |
--------------------------------------------------------------------------------
/doc/release-notes/release-notes-2.1.2-3.md:
--------------------------------------------------------------------------------
1 | Notable changes
2 | ===============
3 |
4 | This release sets the EOS halt date to roughly July 14th, which was our original intention.
5 |
6 | Changelog
7 | =========
8 |
9 | Sean Bowe (2):
10 | make-release.py: Versioning changes for 2.1.2-3.
11 | make-release.py: Updated manpages for 2.1.2-3.
12 |
13 |
--------------------------------------------------------------------------------
/doc/security-warnings.md:
--------------------------------------------------------------------------------
1 | Security Warnings
2 | ====================
3 |
4 | This document has been relocated to https://zcash.readthedocs.io/en/latest/rtd_pages/security_warnings.html
5 |
6 | The source for this document is available at https://gitlab.com/zcash-docs/zcash-docs/blob/master/source/rtd_pages/security_warnings.rst
--------------------------------------------------------------------------------
/doc/shield-coinbase.md:
--------------------------------------------------------------------------------
1 | # Shielding Coinbase UTXOs
2 |
3 | This document has been relocated to https://zcash.readthedocs.io/en/latest/rtd_pages/shield_coinbase.html
4 |
5 | The source for this document is available at https://gitlab.com/zcash-docs/zcash-docs/blob/master/source/rtd_pages/shield_coinbase.rst
--------------------------------------------------------------------------------
/doc/tor.md:
--------------------------------------------------------------------------------
1 | TOR SUPPORT IN ZCASH
2 | ====================
3 |
4 | This document has been relocated to https://zcash.readthedocs.io/en/latest/rtd_pages/tor.html
5 |
6 | The source for this document is available at https://gitlab.com/zcash-docs/zcash-docs/blob/master/source/rtd_pages/tor.rst
--------------------------------------------------------------------------------
/doc/unit-tests.md:
--------------------------------------------------------------------------------
1 | Compiling/running automated tests
2 | ---------------------------------
3 |
4 | This document has been relocated to https://zcash.readthedocs.io/en/latest/rtd_pages/development_guidelines.html#testing
5 |
6 | The source for this document is available at https://gitlab.com/zcash-docs/zcash-docs/blob/master/source/rtd_pages/development_guidelines.rst
7 |
--------------------------------------------------------------------------------
/doc/wallet-backup.md:
--------------------------------------------------------------------------------
1 | # Wallet Backup Instructions
2 |
3 | This document has been relocated to https://zcash.readthedocs.io/en/latest/rtd_pages/wallet_backup.html
4 |
5 | The source for this document is available at https://gitlab.com/zcash-docs/zcash-docs/blob/master/source/rtd_pages/wallet_backup.rst
--------------------------------------------------------------------------------
/docker/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu:16.04
2 | LABEL Description="Ycash Build Env"
3 |
4 | # Dependencies of the Qt offline installer
5 | RUN apt-get -y update && apt-get install -y \
6 | g++ build-essential cmake wget git \
7 | autoconf automake autopoint gperf libtool libtool-bin intltool unzip pkg-config bsdmainutils curl
8 |
9 |
--------------------------------------------------------------------------------
/libzcash_script.pc.in:
--------------------------------------------------------------------------------
1 | prefix=@prefix@
2 | exec_prefix=@exec_prefix@
3 | libdir=@libdir@
4 | includedir=@includedir@
5 |
6 | Name: Zcash transparent script verification library
7 | Description: Library for verifying scripts against the Zcash consensus protocol.
8 | Version: @PACKAGE_VERSION@
9 | Libs: -L${libdir} -lzcash_script
10 | Cflags: -I${includedir}
11 |
--------------------------------------------------------------------------------
/mkreleaselinux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "Building Linux"
4 | make clean >/dev/null
5 | ./zcutil/build.sh --disable-tests -j8 >/dev/null
6 | strip src/ycashd
7 | strip src/ycash-cli
8 | cp src/ycashd ../ycash/artifacts/
9 | cp src/ycash-cli ../ycash/artifacts/
10 |
11 |
--------------------------------------------------------------------------------
/mkwinrelease.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "Building Windows"
4 | make clean > /dev/null
5 | HOST=x86_64-w64-mingw32 ./zcutil/build.sh --disable-tests -j8 >/dev/null
6 | strip src/ycashd.exe
7 | strip src/ycash-cli.exe
8 | cp src/ycashd.exe ../ycash/artifacts/
9 | cp src/ycash-cli.exe ../ycash/artifacts/
10 |
11 |
--------------------------------------------------------------------------------
/qa/pull-tester/tests_config.ini.in:
--------------------------------------------------------------------------------
1 | # Copyright (c) 2013-2016 The Bitcoin Core developers
2 | # Distributed under the MIT software license, see the accompanying
3 | # file COPYING or https://www.opensource.org/licenses/mit-license.php .
4 |
5 | # These environment variables are set by the build process and read by
6 | # rpc-tests.py
7 |
8 | [environment]
9 | SRCDIR=@abs_top_srcdir@
10 | BUILDDIR=@abs_top_builddir@
11 | EXEEXT=@EXEEXT@
12 |
13 | [components]
14 | # Which components are enabled. These are commented out by `configure` if they were disabled when running config.
15 | @ENABLE_WALLET_TRUE@ENABLE_WALLET=true
16 | @BUILD_BITCOIN_UTILS_TRUE@ENABLE_UTILS=true
17 | @BUILD_BITCOIND_TRUE@ENABLE_BITCOIND=true
18 | @ENABLE_ZMQ_TRUE@ENABLE_ZMQ=true
19 |
--------------------------------------------------------------------------------
/qa/rpc-tests/.gitignore:
--------------------------------------------------------------------------------
1 | *.pyc
2 | cache
3 |
--------------------------------------------------------------------------------
/qa/rpc-tests/create_cache.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # Copyright (c) 2016 The Bitcoin Core developers
3 | # Distributed under the MIT software license, see the accompanying
4 | # file COPYING or https://www.opensource.org/licenses/mit-license.php .
5 |
6 | #
7 | # Helper script to create the cache
8 | # (see BitcoinTestFramework.setup_chain)
9 | #
10 |
11 | from test_framework.test_framework import BitcoinTestFramework
12 |
13 | class CreateCache(BitcoinTestFramework):
14 |
15 | def __init__(self):
16 | super().__init__()
17 |
18 | # Test network and test nodes are not required:
19 | self.num_nodes = 0
20 | self.nodes = []
21 |
22 | def setup_network(self):
23 | pass
24 |
25 | def run_test(self):
26 | pass
27 |
28 | if __name__ == '__main__':
29 | CreateCache().main()
30 |
--------------------------------------------------------------------------------
/qa/rpc-tests/golden/blossom.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ycashfoundation/ycash/a1b0f39a4338c58be1e7509423d255c153d7975e/qa/rpc-tests/golden/blossom.tar.gz
--------------------------------------------------------------------------------
/qa/rpc-tests/golden/heartwood.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ycashfoundation/ycash/a1b0f39a4338c58be1e7509423d255c153d7975e/qa/rpc-tests/golden/heartwood.tar.gz
--------------------------------------------------------------------------------
/qa/rpc-tests/mergetoaddress_sapling.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # Copyright (c) 2018 The Zcash developers
3 | # Distributed under the MIT software license, see the accompanying
4 | # file COPYING or https://www.opensource.org/licenses/mit-license.php .
5 |
6 | from test_framework.test_framework import BitcoinTestFramework
7 | from mergetoaddress_helper import MergeToAddressHelper
8 |
9 |
10 | class MergeToAddressSapling (BitcoinTestFramework):
11 | # 13505 would be the maximum number of utxos based on the transaction size limits for Sapling
12 | # but testing this causes the test to take an indeterminately long time to run.
13 | helper = MergeToAddressHelper('sapling', 'ANY_SAPLING', 800, 800, 0)
14 |
15 | def setup_chain(self):
16 | self.helper.setup_chain(self)
17 |
18 | def setup_network(self, split=False):
19 | self.helper.setup_network(self)
20 |
21 | def run_test(self):
22 | self.helper.run_test(self)
23 |
24 |
25 | if __name__ == '__main__':
26 | MergeToAddressSapling().main()
27 |
--------------------------------------------------------------------------------
/qa/rpc-tests/mergetoaddress_sprout.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # Copyright (c) 2018 The Zcash developers
3 | # Distributed under the MIT software license, see the accompanying
4 | # file COPYING or https://www.opensource.org/licenses/mit-license.php .
5 |
6 | from test_framework.test_framework import BitcoinTestFramework
7 | from mergetoaddress_helper import MergeToAddressHelper
8 |
9 |
10 | class MergeToAddressSprout (BitcoinTestFramework):
11 | # 13505 would be the maximum number of utxos based on the transaction size limits for Sapling
12 | # but testing this causes the test to take an indeterminately long time to run.
13 | helper = MergeToAddressHelper('sprout', 'ANY_SPROUT', 800, 800, 0)
14 |
15 | def setup_chain(self):
16 | self.helper.setup_chain(self)
17 |
18 | def setup_network(self, split=False):
19 | self.helper.setup_network(self)
20 |
21 | def run_test(self):
22 | self.helper.run_test(self)
23 |
24 |
25 | if __name__ == '__main__':
26 | MergeToAddressSprout().main()
27 |
--------------------------------------------------------------------------------
/qa/rpc-tests/regtest_signrawtransaction.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # Copyright (c) 2018 The Zcash developers
3 | # Distributed under the MIT software license, see the accompanying
4 | # file COPYING or https://www.opensource.org/licenses/mit-license.php .
5 |
6 | from test_framework.test_framework import BitcoinTestFramework
7 | from test_framework.util import wait_and_assert_operationid_status
8 |
9 | class RegtestSignrawtransactionTest (BitcoinTestFramework):
10 |
11 | def run_test(self):
12 | self.nodes[0].generate(1)
13 | self.sync_all()
14 | taddr = self.nodes[1].getnewaddress()
15 | zaddr1 = self.nodes[1].z_getnewaddress()
16 |
17 | self.nodes[0].sendtoaddress(taddr, 2.0)
18 | self.nodes[0].generate(1)
19 | self.sync_all()
20 |
21 | # Create and sign Sapling transaction.
22 | # If the incorrect consensus branch id is selected, there will be a signing error.
23 | opid = self.nodes[1].z_sendmany(taddr,
24 | [{'address': zaddr1, 'amount': 1}])
25 | wait_and_assert_operationid_status(self.nodes[1], opid)
26 |
27 | if __name__ == '__main__':
28 | RegtestSignrawtransactionTest().main()
29 |
--------------------------------------------------------------------------------
/qa/rpc-tests/test_framework/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ycashfoundation/ycash/a1b0f39a4338c58be1e7509423d255c153d7975e/qa/rpc-tests/test_framework/__init__.py
--------------------------------------------------------------------------------
/qa/rpc-tests/wallet_shieldcoinbase_sapling.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | from wallet_shieldcoinbase import WalletShieldCoinbaseTest
4 |
5 | class WalletShieldCoinbaseSapling(WalletShieldCoinbaseTest):
6 | def __init__(self):
7 | super(WalletShieldCoinbaseSapling, self).__init__('sapling')
8 |
9 | if __name__ == '__main__':
10 | WalletShieldCoinbaseSapling().main()
11 |
--------------------------------------------------------------------------------
/qa/rpc-tests/wallet_shieldcoinbase_sprout.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | from wallet_shieldcoinbase import WalletShieldCoinbaseTest
4 |
5 | class WalletShieldCoinbaseSprout(WalletShieldCoinbaseTest):
6 | def __init__(self):
7 | super(WalletShieldCoinbaseSprout, self).__init__('sprout')
8 |
9 | if __name__ == '__main__':
10 | WalletShieldCoinbaseSprout().main()
11 |
--------------------------------------------------------------------------------
/rust-toolchain:
--------------------------------------------------------------------------------
1 | 1.51.0
2 |
--------------------------------------------------------------------------------
/share/rpcuser/README.md:
--------------------------------------------------------------------------------
1 | RPC Tools
2 | ---------------------
3 |
4 | ### [RPCUser](/share/rpcuser) ###
5 |
6 | Create an RPC user login credential.
7 |
8 | Usage:
9 |
10 | ./rpcuser.py
11 |
--------------------------------------------------------------------------------
/src/amount.cpp:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2009-2010 Satoshi Nakamoto
2 | // Copyright (c) 2009-2014 The Bitcoin Core developers
3 | // Distributed under the MIT software license, see the accompanying
4 | // file COPYING or https://www.opensource.org/licenses/mit-license.php .
5 |
6 | #include "amount.h"
7 | #include "policy/fees.h"
8 |
9 | #include "tinyformat.h"
10 |
11 | const std::string CURRENCY_UNIT = "YEC";
12 | const std::string MINOR_CURRENCY_UNIT = "yoshis";
13 |
14 | CFeeRate::CFeeRate(const CAmount& nFeePaid, size_t nSize)
15 | {
16 | if (nSize > 0)
17 | nSatoshisPerK = nFeePaid*1000/nSize;
18 | else
19 | nSatoshisPerK = 0;
20 | }
21 |
22 | CAmount CFeeRate::GetFeeForRelay(size_t nSize) const
23 | {
24 | return std::min(GetFee(nSize), DEFAULT_FEE);
25 | }
26 |
27 | CAmount CFeeRate::GetFee(size_t nSize) const
28 | {
29 | CAmount nFee = nSatoshisPerK*nSize / 1000;
30 |
31 | if (nFee == 0 && nSatoshisPerK > 0)
32 | nFee = nSatoshisPerK;
33 |
34 | return nFee;
35 | }
36 |
37 | std::string CFeeRate::ToString() const
38 | {
39 | return strprintf("%d.%08d %s/kB", nSatoshisPerK / COIN, nSatoshisPerK % COIN, CURRENCY_UNIT);
40 | }
41 |
--------------------------------------------------------------------------------
/src/bech32.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2017 Pieter Wuille
2 | // Distributed under the MIT software license, see the accompanying
3 | // file COPYING or https://www.opensource.org/licenses/mit-license.php .
4 |
5 | // Bech32 is a string encoding format used in newer address types.
6 | // The output consists of a human-readable part (alphanumeric), a
7 | // separator character (1), and a base32 data section, the last
8 | // 6 characters of which are a checksum.
9 | //
10 | // For more information, see BIP 173.
11 |
12 | #ifndef BITCOIN_BECH32_H
13 | #define BITCOIN_BECH32_H
14 |
15 | #include
16 | #include
17 | #include
18 |
19 | namespace bech32
20 | {
21 |
22 | /** Encode a Bech32 string. Returns the empty string in case of failure. */
23 | std::string Encode(const std::string& hrp, const std::vector& values);
24 |
25 | /** Decode a Bech32 string. Returns (hrp, data). Empty hrp means failure. */
26 | std::pair> Decode(const std::string& str);
27 |
28 | } // namespace bech32
29 |
30 | #endif // BITCOIN_BECH32_H
31 |
--------------------------------------------------------------------------------
/src/bench/.gitignore:
--------------------------------------------------------------------------------
1 | bench_bitcoin
2 |
--------------------------------------------------------------------------------
/src/bench/Examples.cpp:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2015 The Bitcoin Core developers
2 | // Distributed under the MIT software license, see the accompanying
3 | // file COPYING or https://www.opensource.org/licenses/mit-license.php .
4 |
5 | #include "bench.h"
6 | #include "main.h"
7 | #include "utiltime.h"
8 |
9 | // Sanity test: this should loop ten times, and
10 | // min/max/average should be close to 100ms.
11 | static void Sleep100ms(benchmark::State& state)
12 | {
13 | while (state.KeepRunning()) {
14 | MilliSleep(100);
15 | }
16 | }
17 |
18 | BENCHMARK(Sleep100ms);
19 |
20 | // Extremely fast-running benchmark:
21 | #include
22 |
23 | volatile double sum = 0.0; // volatile, global so not optimized away
24 |
25 | static void Trig(benchmark::State& state)
26 | {
27 | double d = 0.01;
28 | while (state.KeepRunning()) {
29 | sum += sin(d);
30 | d += 0.000001;
31 | }
32 | }
33 |
34 | BENCHMARK(Trig);
35 |
--------------------------------------------------------------------------------
/src/bench/perf.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2016 The Bitcoin Core developers
2 | // Distributed under the MIT software license, see the accompanying
3 | // file COPYING or https://www.opensource.org/licenses/mit-license.php .
4 |
5 | /** Functions for measurement of CPU cycles */
6 | #ifndef BITCOIN_BENCH_PERF_H
7 | #define BITCOIN_BENCH_PERF_H
8 |
9 | #include
10 |
11 | #if defined(__i386__)
12 |
13 | static inline uint64_t perf_cpucycles(void)
14 | {
15 | uint64_t x;
16 | __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
17 | return x;
18 | }
19 |
20 | #elif defined(__x86_64__)
21 |
22 | static inline uint64_t perf_cpucycles(void)
23 | {
24 | uint32_t hi, lo;
25 | __asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
26 | return ((uint64_t)lo)|(((uint64_t)hi)<<32);
27 | }
28 | #else
29 |
30 | uint64_t perf_cpucycles(void);
31 |
32 | #endif
33 |
34 | void perf_init(void);
35 | void perf_fini(void);
36 |
37 | #endif // BITCOIN_BENCH_PERF_H
38 |
--------------------------------------------------------------------------------
/src/bench/prevector_destructor.cpp:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2015-2017 The Bitcoin Core developers
2 | // Distributed under the MIT software license, see the accompanying
3 | // file COPYING or https://www.opensource.org/licenses/mit-license.php .
4 |
5 | #include "bench.h"
6 | #include "prevector.h"
7 |
8 | static void PrevectorDestructor(benchmark::State& state)
9 | {
10 | while (state.KeepRunning()) {
11 | for (auto x = 0; x < 1000; ++x) {
12 | prevector<28, unsigned char> t0;
13 | prevector<28, unsigned char> t1;
14 | t0.resize(28);
15 | t1.resize(29);
16 | }
17 | }
18 | }
19 |
20 | static void PrevectorClear(benchmark::State& state)
21 | {
22 |
23 | while (state.KeepRunning()) {
24 | for (auto x = 0; x < 1000; ++x) {
25 | prevector<28, unsigned char> t0;
26 | prevector<28, unsigned char> t1;
27 | t0.resize(28);
28 | t0.clear();
29 | t1.resize(29);
30 | t0.clear();
31 | }
32 | }
33 | }
34 |
35 | BENCHMARK(PrevectorDestructor);
36 | BENCHMARK(PrevectorClear);
37 |
--------------------------------------------------------------------------------
/src/chainparamsseeds.h:
--------------------------------------------------------------------------------
1 | #ifndef BITCOIN_CHAINPARAMSSEEDS_H
2 | #define BITCOIN_CHAINPARAMSSEEDS_H
3 | /**
4 | * List of fixed seed nodes for the bitcoin network
5 | * AUTOGENERATED by contrib/seeds/generate-seeds.py
6 | *
7 | * Each line contains a 16-byte IPv6 address and a port.
8 | * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.
9 | */
10 | static SeedSpec6 pnSeed6_main[] = {
11 | {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x03,0x82,0x90,0x41}, 8833},
12 | {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0d,0x7e,0x3a,0xed}, 8833}
13 | };
14 |
15 | static SeedSpec6 pnSeed6_test[] = {
16 | {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x34,0x0e,0xf1,0xb7}, 18833}
17 | };
18 |
19 | #endif // BITCOIN_CHAINPARAMSSEEDS_H
20 |
--------------------------------------------------------------------------------
/src/checkpoints.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2009-2014 The Bitcoin Core developers
2 | // Distributed under the MIT software license, see the accompanying
3 | // file COPYING or https://www.opensource.org/licenses/mit-license.php .
4 |
5 | #ifndef BITCOIN_CHECKPOINTS_H
6 | #define BITCOIN_CHECKPOINTS_H
7 |
8 | #include "uint256.h"
9 |
10 | #include