├── .cirrus.yml ├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE.md ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ ├── good_first_issue.md │ └── gui_issue.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .python-version ├── .style.yapf ├── .tx └── config ├── CONTRIBUTING.md ├── COPYING ├── INSTALL.md ├── Makefile.am ├── README.md ├── REVIEWERS ├── SECURITY.md ├── autogen.sh ├── build-aux └── m4 │ ├── ax_boost_base.m4 │ ├── ax_check_compile_flag.m4 │ ├── ax_check_link_flag.m4 │ ├── ax_check_preproc_flag.m4 │ ├── ax_cxx_compile_stdcxx.m4 │ ├── ax_pthread.m4 │ ├── bitcoin_find_bdb48.m4 │ ├── bitcoin_qt.m4 │ ├── bitcoin_runtime_lib.m4 │ ├── bitcoin_subdir_to_include.m4 │ ├── l_atomic.m4 │ ├── l_filesystem.m4 │ └── l_socket.m4 ├── build_msvc ├── .gitignore ├── README.md ├── bench_bitcoin │ └── bench_bitcoin.vcxproj.in ├── bitcoin-cli │ └── bitcoin-cli.vcxproj ├── bitcoin-qt │ └── bitcoin-qt.vcxproj ├── bitcoin-tx │ └── bitcoin-tx.vcxproj ├── bitcoin-util │ └── bitcoin-util.vcxproj ├── bitcoin-wallet │ └── bitcoin-wallet.vcxproj ├── bitcoin.sln ├── bitcoin_config.h.in ├── bitcoind │ └── bitcoind.vcxproj ├── common.init.vcxproj.in ├── common.qt.init.vcxproj ├── common.vcxproj ├── libbitcoin_cli │ └── libbitcoin_cli.vcxproj.in ├── libbitcoin_common │ └── libbitcoin_common.vcxproj.in ├── libbitcoin_crypto │ └── libbitcoin_crypto.vcxproj.in ├── libbitcoin_node │ └── libbitcoin_node.vcxproj.in ├── libbitcoin_qt │ └── libbitcoin_qt.vcxproj ├── libbitcoin_util │ └── libbitcoin_util.vcxproj.in ├── libbitcoin_wallet │ └── libbitcoin_wallet.vcxproj.in ├── libbitcoin_wallet_tool │ └── libbitcoin_wallet_tool.vcxproj.in ├── libbitcoin_zmq │ └── libbitcoin_zmq.vcxproj.in ├── libbitcoinconsensus │ └── libbitcoinconsensus.vcxproj ├── libleveldb │ └── libleveldb.vcxproj ├── libminisketch │ └── libminisketch.vcxproj ├── libsecp256k1 │ └── libsecp256k1.vcxproj ├── libsecp256k1_config.h ├── libtest_util │ └── libtest_util.vcxproj.in ├── libunivalue │ └── libunivalue.vcxproj ├── msbuild │ └── tasks │ │ ├── hexdump.targets │ │ └── replaceinfile.targets ├── msvc-autogen.py ├── test_bitcoin-qt │ └── test_bitcoin-qt.vcxproj ├── test_bitcoin │ └── test_bitcoin.vcxproj └── vcpkg.json ├── ci ├── README.md ├── lint │ ├── 04_install.sh │ └── 06_script.sh ├── lint_run_all.sh ├── retry │ ├── README.md │ └── retry ├── test │ ├── 00_setup_env.sh │ ├── 00_setup_env_android.sh │ ├── 00_setup_env_arm.sh │ ├── 00_setup_env_i686_centos.sh │ ├── 00_setup_env_i686_multiprocess.sh │ ├── 00_setup_env_mac.sh │ ├── 00_setup_env_mac_native_arm64.sh │ ├── 00_setup_env_native_asan.sh │ ├── 00_setup_env_native_fuzz.sh │ ├── 00_setup_env_native_fuzz_with_msan.sh │ ├── 00_setup_env_native_fuzz_with_valgrind.sh │ ├── 00_setup_env_native_msan.sh │ ├── 00_setup_env_native_nowallet_libbitcoinkernel.sh │ ├── 00_setup_env_native_qt5.sh │ ├── 00_setup_env_native_tidy.sh │ ├── 00_setup_env_native_tsan.sh │ ├── 00_setup_env_native_valgrind.sh │ ├── 00_setup_env_s390x.sh │ ├── 00_setup_env_win64.sh │ ├── 04_install.sh │ ├── 05_before_script.sh │ ├── 06_script_a.sh │ ├── 06_script_b.sh │ ├── wrap-qemu.sh │ ├── wrap-valgrind.sh │ ├── wrap-wine.sh │ └── wrapped-cl.bat └── test_run_all.sh ├── configure.ac ├── contrib ├── README.md ├── builder-keys │ ├── README.md │ └── keys.txt ├── completions │ ├── bash │ │ ├── bitcoin-cli.bash-completion │ │ ├── bitcoin-tx.bash-completion │ │ └── bitcoind.bash-completion │ └── fish │ │ ├── bitcoin-cli.fish │ │ ├── bitcoin-qt.fish │ │ ├── bitcoin-tx.fish │ │ ├── bitcoin-util.fish │ │ ├── bitcoin-wallet.fish │ │ └── bitcoind.fish ├── debian │ └── copyright ├── devtools │ ├── README.md │ ├── circular-dependencies.py │ ├── clang-format-diff.py │ ├── copyright_header.py │ ├── gen-bitcoin-conf.sh │ ├── gen-manpages.py │ ├── iwyu │ │ └── bitcoin.core.imp │ ├── security-check.py │ ├── split-debug.sh.in │ ├── symbol-check.py │ ├── test-security-check.py │ ├── test-symbol-check.py │ ├── test_deterministic_coverage.sh │ ├── utils.py │ └── utxo_snapshot.sh ├── filter-lcov.py ├── guix │ ├── INSTALL.md │ ├── README.md │ ├── guix-attest │ ├── guix-build │ ├── guix-clean │ ├── guix-codesign │ ├── guix-verify │ ├── libexec │ │ ├── build.sh │ │ ├── codesign.sh │ │ └── prelude.bash │ ├── manifest.scm │ └── patches │ │ ├── gcc-10-remap-guix-store.patch │ │ ├── gcc-broken-longjmp.patch │ │ ├── glibc-2.24-elfm-loadaddr-dynamic-rewrite.patch │ │ ├── glibc-2.24-fcommon.patch │ │ ├── glibc-2.24-guix-prefix.patch │ │ ├── glibc-2.24-no-build-time-cxx-header-run.patch │ │ ├── glibc-2.27-dont-redefine-nss-database.patch │ │ ├── glibc-2.27-guix-prefix.patch │ │ ├── glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch │ │ ├── glibc-ldd-x86_64.patch │ │ ├── glibc-versioned-locpath.patch │ │ ├── lief-fix-ppc64-nx-default.patch │ │ ├── nsis-disable-installer-reloc.patch │ │ ├── nsis-gcc-10-memmove.patch │ │ ├── oscrypto-hard-code-openssl.patch │ │ └── vmov-alignment.patch ├── init │ ├── README.md │ ├── bitcoind.conf │ ├── bitcoind.init │ ├── bitcoind.openrc │ ├── bitcoind.openrcconf │ ├── bitcoind.service │ └── org.bitcoin.bitcoind.plist ├── install_db4.sh ├── linearize │ ├── README.md │ ├── example-linearize.cfg │ ├── linearize-data.py │ └── linearize-hashes.py ├── macdeploy │ ├── LICENSE │ ├── README.md │ ├── background.tiff │ ├── detached-sig-create.sh │ ├── gen-sdk │ └── macdeployqtplus ├── message-capture │ ├── message-capture-docs.md │ └── message-capture-parser.py ├── qos │ ├── README.md │ └── tc.sh ├── seeds │ ├── .gitignore │ ├── README.md │ ├── asmap.py │ ├── generate-seeds.py │ ├── makeseeds.py │ ├── nodes_main.txt │ ├── nodes_main_manual.txt │ └── nodes_test.txt ├── shell │ ├── git-utils.bash │ └── realpath.bash ├── signet │ ├── README.md │ ├── getcoins.py │ └── miner ├── testgen │ ├── README.md │ └── gen_key_io_test_vectors.py ├── tracing │ ├── README.md │ ├── connectblock_benchmark.bt │ ├── log_p2p_traffic.bt │ ├── log_raw_p2p_msgs.py │ ├── log_utxocache_flush.py │ ├── log_utxos.bt │ └── p2p_monitor.py ├── valgrind.supp ├── verify-commits │ ├── README.md │ ├── allow-incorrect-sha512-commits │ ├── allow-revsig-commits │ ├── allow-unclean-merge-commits │ ├── gpg.sh │ ├── pre-push-hook.sh │ ├── trusted-git-root │ ├── trusted-keys │ ├── trusted-sha512-root-commit │ └── verify-commits.py ├── verifybinaries │ ├── README.md │ └── verify.py ├── windeploy │ ├── detached-sig-create.sh │ └── win-codesign.cert └── zmq │ └── zmq_sub.py ├── depends ├── .gitignore ├── Makefile ├── README.md ├── builders │ ├── darwin.mk │ ├── default.mk │ ├── freebsd.mk │ ├── linux.mk │ ├── netbsd.mk │ └── openbsd.mk ├── config.guess ├── config.site.in ├── config.sub ├── description.md ├── funcs.mk ├── gen_id ├── hosts │ ├── android.mk │ ├── darwin.mk │ ├── default.mk │ ├── freebsd.mk │ ├── linux.mk │ ├── mingw32.mk │ ├── netbsd.mk │ └── openbsd.mk ├── packages.md ├── packages │ ├── bdb.mk │ ├── boost.mk │ ├── capnp.mk │ ├── expat.mk │ ├── fontconfig.mk │ ├── freetype.mk │ ├── libXau.mk │ ├── libevent.mk │ ├── libmultiprocess.mk │ ├── libnatpmp.mk │ ├── libxcb.mk │ ├── libxcb_util.mk │ ├── libxcb_util_image.mk │ ├── libxcb_util_keysyms.mk │ ├── libxcb_util_render.mk │ ├── libxcb_util_wm.mk │ ├── libxkbcommon.mk │ ├── miniupnpc.mk │ ├── native_capnp.mk │ ├── native_cctools.mk │ ├── native_clang.mk │ ├── native_ds_store.mk │ ├── native_libmultiprocess.mk │ ├── native_libtapi.mk │ ├── native_mac_alias.mk │ ├── packages.mk │ ├── qrencode.mk │ ├── qt.mk │ ├── sqlite.mk │ ├── systemtap.mk │ ├── xcb_proto.mk │ ├── xproto.mk │ └── zeromq.mk └── patches │ ├── bdb │ └── clang_cxx_11.patch │ ├── fontconfig │ └── gperf_header_regen.patch │ ├── libxcb │ └── remove_pthread_stubs.patch │ ├── miniupnpc │ ├── dont_leak_info.patch │ └── respect_mingw_cflags.patch │ ├── qt │ ├── dont_hardcode_pwd.patch │ ├── dont_hardcode_x86_64.patch │ ├── duplicate_lcqpafonts.patch │ ├── fast_fixed_dtoa_no_optimize.patch │ ├── fix_android_jni_static.patch │ ├── fix_montery_include.patch │ ├── fix_qt_pkgconfig.patch │ ├── guix_cross_lib_path.patch │ ├── mac-qmake.conf │ ├── no-xlib.patch │ ├── qt.pro │ ├── qtbase-moc-ignore-gcc-macro.patch │ ├── qttools_src.pro │ ├── rcc_hardcode_timestamp.patch │ └── use_android_ndk23.patch │ ├── systemtap │ └── remove_SDT_ASM_SECTION_AUTOGROUP_SUPPORT_check.patch │ └── zeromq │ ├── netbsd_kevent_void.patch │ └── remove_libstd_link.patch ├── doc ├── .gitignore ├── Doxyfile.in ├── JSON-RPC-interface.md ├── README.md ├── README_doxygen.md ├── README_windows.txt ├── REST-interface.md ├── assets-attribution.md ├── benchmarking.md ├── bips.md ├── bitcoin-conf.md ├── bitcoin_logo_doxygen.png ├── build-android.md ├── build-freebsd.md ├── build-netbsd.md ├── build-openbsd.md ├── build-osx.md ├── build-unix.md ├── build-windows.md ├── cjdns.md ├── dependencies.md ├── descriptors.md ├── design │ ├── assumeutxo.md │ ├── libraries.md │ └── multiprocess.md ├── developer-notes.md ├── dnsseed-policy.md ├── external-signer.md ├── files.md ├── fuzzing.md ├── guix.md ├── i2p.md ├── init.md ├── man │ ├── Makefile.am │ ├── bitcoin-cli.1 │ ├── bitcoin-qt.1 │ ├── bitcoin-tx.1 │ ├── bitcoin-util.1 │ ├── bitcoin-wallet.1 │ └── bitcoind.1 ├── managing-wallets.md ├── multisig-tutorial.md ├── p2p-bad-ports.md ├── policy │ ├── README.md │ ├── mempool-limits.md │ ├── mempool-replacements.md │ └── packages.md ├── productivity.md ├── psbt.md ├── reduce-memory.md ├── reduce-traffic.md ├── release-notes-19762.md ├── release-notes-22087.md ├── release-notes-25412.md ├── release-notes-25730.md ├── release-notes-25934.md ├── release-notes-empty-template.md ├── release-notes │ ├── release-notes-0.10.0.md │ ├── release-notes-0.10.1.md │ ├── release-notes-0.10.2.md │ ├── release-notes-0.10.3.md │ ├── release-notes-0.10.4.md │ ├── release-notes-0.11.0.md │ ├── release-notes-0.11.1.md │ ├── release-notes-0.11.2.md │ ├── release-notes-0.12.0.md │ ├── release-notes-0.12.1.md │ ├── release-notes-0.13.0.md │ ├── release-notes-0.13.1.md │ ├── release-notes-0.13.2.md │ ├── release-notes-0.14.0.md │ ├── release-notes-0.14.1.md │ ├── release-notes-0.14.2.md │ ├── release-notes-0.14.3.md │ ├── release-notes-0.15.0.1.md │ ├── release-notes-0.15.0.md │ ├── release-notes-0.15.1.md │ ├── release-notes-0.15.2.md │ ├── release-notes-0.16.0.md │ ├── release-notes-0.16.1.md │ ├── release-notes-0.16.2.md │ ├── release-notes-0.16.3.md │ ├── release-notes-0.17.0.1.md │ ├── release-notes-0.17.0.md │ ├── release-notes-0.17.1.md │ ├── release-notes-0.18.0.md │ ├── release-notes-0.18.1.md │ ├── release-notes-0.19.0.1.md │ ├── release-notes-0.19.0.md │ ├── release-notes-0.19.1.md │ ├── release-notes-0.20.0.md │ ├── release-notes-0.20.1.md │ ├── release-notes-0.20.2.md │ ├── release-notes-0.21.0.md │ ├── release-notes-0.21.1.md │ ├── release-notes-0.21.2.md │ ├── release-notes-0.3.12.md │ ├── release-notes-0.3.13.md │ ├── release-notes-0.3.14.md │ ├── release-notes-0.3.15.md │ ├── release-notes-0.3.16.md │ ├── release-notes-0.3.17.md │ ├── release-notes-0.3.18.md │ ├── release-notes-0.3.19.md │ ├── release-notes-0.3.20.1.md │ ├── release-notes-0.3.20.2.md │ ├── release-notes-0.3.20.md │ ├── release-notes-0.3.21.md │ ├── release-notes-0.3.22.md │ ├── release-notes-0.3.23.md │ ├── release-notes-0.3.24.md │ ├── release-notes-0.4.0.md │ ├── release-notes-0.4.1.md │ ├── release-notes-0.4.2.md │ ├── release-notes-0.4.3.md │ ├── release-notes-0.4.4.md │ ├── release-notes-0.4.5.md │ ├── release-notes-0.4.6.md │ ├── release-notes-0.5.0.md │ ├── release-notes-0.5.1.md │ ├── release-notes-0.5.2.md │ ├── release-notes-0.5.3.md │ ├── release-notes-0.5.4.md │ ├── release-notes-0.5.5.md │ ├── release-notes-0.6.0.md │ ├── release-notes-0.6.1.md │ ├── release-notes-0.6.2.md │ ├── release-notes-0.6.3.md │ ├── release-notes-0.7.0.md │ ├── release-notes-0.7.1.md │ ├── release-notes-0.7.2.md │ ├── release-notes-0.8.0.md │ ├── release-notes-0.8.1.md │ ├── release-notes-0.8.2.md │ ├── release-notes-0.8.3.md │ ├── release-notes-0.8.4.md │ ├── release-notes-0.8.5.md │ ├── release-notes-0.8.6.md │ ├── release-notes-0.9.0.md │ ├── release-notes-0.9.1.md │ ├── release-notes-0.9.2.1.md │ ├── release-notes-0.9.2.md │ ├── release-notes-0.9.3.md │ ├── release-notes-0.9.4.md │ ├── release-notes-0.9.5.md │ ├── release-notes-22.0.md │ ├── release-notes-23.0.md │ ├── release-notes-24.0.1.md │ └── release-notes-24.0.md ├── release-process.md ├── shared-libraries.md ├── tor.md ├── tracing.md ├── translation_process.md ├── translation_strings_policy.md └── zmq.md ├── libbitcoinconsensus.pc.in ├── share ├── examples │ └── bitcoin.conf ├── genbuild.sh ├── pixmaps │ ├── bitcoin.ico │ ├── bitcoin128.png │ ├── bitcoin128.xpm │ ├── bitcoin16.png │ ├── bitcoin16.xpm │ ├── bitcoin256.png │ ├── bitcoin256.xpm │ ├── bitcoin32.png │ ├── bitcoin32.xpm │ ├── bitcoin64.png │ ├── bitcoin64.xpm │ ├── nsis-header.bmp │ └── nsis-wizard.bmp ├── qt │ ├── Info.plist.in │ └── extract_strings_qt.py ├── rpcauth │ ├── README.md │ └── rpcauth.py └── setup.nsi.in ├── src ├── .bear-tidy-config ├── .clang-format ├── .clang-tidy ├── Makefile.am ├── Makefile.bench.include ├── Makefile.crc32c.include ├── Makefile.leveldb.include ├── Makefile.minisketch.include ├── Makefile.qt.include ├── Makefile.qt_locale.include ├── Makefile.qttest.include ├── Makefile.test.include ├── Makefile.test_fuzz.include ├── Makefile.test_util.include ├── Makefile.univalue.include ├── addrdb.cpp ├── addrdb.h ├── addrman.cpp ├── addrman.h ├── addrman_impl.h ├── arith_uint256.cpp ├── arith_uint256.h ├── attributes.h ├── banman.cpp ├── banman.h ├── base58.cpp ├── base58.h ├── bech32.cpp ├── bech32.h ├── bench │ ├── .gitignore │ ├── addrman.cpp │ ├── base58.cpp │ ├── bech32.cpp │ ├── bench.cpp │ ├── bench.h │ ├── bench_bitcoin.cpp │ ├── block_assemble.cpp │ ├── ccoins_caching.cpp │ ├── chacha20.cpp │ ├── chacha_poly_aead.cpp │ ├── checkblock.cpp │ ├── checkqueue.cpp │ ├── coin_selection.cpp │ ├── crypto_hash.cpp │ ├── data.cpp │ ├── data.h │ ├── data │ │ └── block413567.raw │ ├── descriptors.cpp │ ├── duplicate_inputs.cpp │ ├── examples.cpp │ ├── gcs_filter.cpp │ ├── hashpadding.cpp │ ├── load_external.cpp │ ├── lockedpool.cpp │ ├── logging.cpp │ ├── mempool_eviction.cpp │ ├── mempool_stress.cpp │ ├── merkle_root.cpp │ ├── nanobench.cpp │ ├── nanobench.h │ ├── peer_eviction.cpp │ ├── poly1305.cpp │ ├── prevector.cpp │ ├── rollingbloom.cpp │ ├── rpc_blockchain.cpp │ ├── rpc_mempool.cpp │ ├── strencodings.cpp │ ├── util_time.cpp │ ├── verify_script.cpp │ ├── wallet_balance.cpp │ ├── wallet_create_tx.cpp │ └── wallet_loading.cpp ├── bitcoin-chainstate.cpp ├── bitcoin-cli-res.rc ├── bitcoin-cli.cpp ├── bitcoin-tx-res.rc ├── bitcoin-tx.cpp ├── bitcoin-util-res.rc ├── bitcoin-util.cpp ├── bitcoin-wallet-res.rc ├── bitcoin-wallet.cpp ├── bitcoind-res.rc ├── bitcoind.cpp ├── blockencodings.cpp ├── blockencodings.h ├── blockfilter.cpp ├── blockfilter.h ├── chain.cpp ├── chain.h ├── chainparams.cpp ├── chainparams.h ├── chainparamsbase.cpp ├── chainparamsbase.h ├── chainparamsseeds.h ├── checkqueue.h ├── clientversion.cpp ├── clientversion.h ├── coins.cpp ├── coins.h ├── common │ ├── bloom.cpp │ ├── bloom.h │ ├── interfaces.cpp │ ├── run_command.cpp │ ├── run_command.h │ ├── url.cpp │ └── url.h ├── compat │ ├── assumptions.h │ ├── byteswap.h │ ├── compat.h │ ├── cpuid.h │ ├── endian.h │ ├── stdin.cpp │ └── stdin.h ├── compressor.cpp ├── compressor.h ├── config │ └── .empty ├── consensus │ ├── amount.h │ ├── consensus.h │ ├── merkle.cpp │ ├── merkle.h │ ├── params.h │ ├── tx_check.cpp │ ├── tx_check.h │ ├── tx_verify.cpp │ ├── tx_verify.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.in │ ├── LICENSE │ ├── README.md │ ├── include │ │ └── crc32c │ │ │ └── crc32c.h │ └── src │ │ ├── crc32c.cc │ │ ├── crc32c_arm64.cc │ │ ├── crc32c_arm64.h │ │ ├── crc32c_arm64_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 │ ├── chacha_poly_aead.cpp │ ├── chacha_poly_aead.h │ ├── common.h │ ├── ctaes │ │ ├── COPYING │ │ ├── README.md │ │ ├── bench.c │ │ ├── ctaes.c │ │ ├── ctaes.h │ │ └── test.c │ ├── hkdf_sha256_32.cpp │ ├── hkdf_sha256_32.h │ ├── hmac_sha256.cpp │ ├── hmac_sha256.h │ ├── hmac_sha512.cpp │ ├── hmac_sha512.h │ ├── muhash.cpp │ ├── muhash.h │ ├── poly1305.cpp │ ├── poly1305.h │ ├── ripemd160.cpp │ ├── ripemd160.h │ ├── sha1.cpp │ ├── sha1.h │ ├── sha256.cpp │ ├── sha256.h │ ├── sha256_arm_shani.cpp │ ├── sha256_avx2.cpp │ ├── sha256_sse4.cpp │ ├── sha256_sse41.cpp │ ├── sha256_x86_shani.cpp │ ├── sha3.cpp │ ├── sha3.h │ ├── sha512.cpp │ ├── sha512.h │ ├── siphash.cpp │ └── siphash.h ├── cuckoocache.h ├── dbwrapper.cpp ├── dbwrapper.h ├── deploymentinfo.cpp ├── deploymentinfo.h ├── deploymentstatus.cpp ├── deploymentstatus.h ├── dummywallet.cpp ├── external_signer.cpp ├── external_signer.h ├── flatfile.cpp ├── flatfile.h ├── fs.cpp ├── fs.h ├── hash.cpp ├── hash.h ├── headerssync.cpp ├── headerssync.h ├── httprpc.cpp ├── httprpc.h ├── httpserver.cpp ├── httpserver.h ├── i2p.cpp ├── i2p.h ├── index │ ├── base.cpp │ ├── base.h │ ├── blockfilterindex.cpp │ ├── blockfilterindex.h │ ├── coinstatsindex.cpp │ ├── coinstatsindex.h │ ├── disktxpos.h │ ├── txindex.cpp │ └── txindex.h ├── indirectmap.h ├── init.cpp ├── init.h ├── init │ ├── bitcoin-gui.cpp │ ├── bitcoin-node.cpp │ ├── bitcoin-qt.cpp │ ├── bitcoin-wallet.cpp │ ├── bitcoind.cpp │ ├── common.cpp │ └── common.h ├── interfaces │ ├── README.md │ ├── chain.h │ ├── echo.h │ ├── handler.h │ ├── init.h │ ├── ipc.h │ ├── node.h │ └── wallet.h ├── ipc │ ├── capnp │ │ ├── .gitignore │ │ ├── context.h │ │ ├── echo.capnp │ │ ├── init-types.h │ │ ├── init.capnp │ │ ├── protocol.cpp │ │ └── protocol.h │ ├── context.h │ ├── exception.h │ ├── interfaces.cpp │ ├── process.cpp │ ├── process.h │ └── protocol.h ├── kernel │ ├── bitcoinkernel.cpp │ ├── chain.cpp │ ├── chain.h │ ├── chainstatemanager_opts.h │ ├── checks.cpp │ ├── checks.h │ ├── coinstats.cpp │ ├── coinstats.h │ ├── context.cpp │ ├── context.h │ ├── mempool_entry.h │ ├── mempool_limits.h │ ├── mempool_options.h │ ├── mempool_persist.cpp │ ├── mempool_persist.h │ └── validation_cache_sizes.h ├── key.cpp ├── key.h ├── key_io.cpp ├── key_io.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 ├── logging.cpp ├── logging.h ├── logging │ └── timer.h ├── mapport.cpp ├── mapport.h ├── memusage.h ├── merkleblock.cpp ├── merkleblock.h ├── minisketch │ ├── .cirrus.yml │ ├── .gitignore │ ├── LICENSE │ ├── Makefile.am │ ├── README.md │ ├── autogen.sh │ ├── build-aux │ │ └── m4 │ │ │ ├── ax_check_compile_flag.m4 │ │ │ ├── ax_check_link_flag.m4 │ │ │ ├── ax_check_preproc_flag.m4 │ │ │ └── ax_cxx_compile_stdcxx.m4 │ ├── ci │ │ ├── cirrus.sh │ │ └── linux-debian.Dockerfile │ ├── configure.ac │ ├── doc │ │ ├── example.c │ │ ├── gen_basefpbits.sage │ │ ├── gen_params.sage │ │ ├── log2_factorial.sage │ │ ├── math.md │ │ ├── minisketch-vs.png │ │ ├── moduli.md │ │ ├── plot_bits.png │ │ ├── plot_capacity.png │ │ ├── plot_diff.png │ │ ├── plot_size.png │ │ └── protocoltips.md │ ├── include │ │ └── minisketch.h │ ├── sources.mk │ ├── src │ │ ├── bench.cpp │ │ ├── false_positives.h │ │ ├── fielddefines.h │ │ ├── fields │ │ │ ├── clmul_1byte.cpp │ │ │ ├── clmul_2bytes.cpp │ │ │ ├── clmul_3bytes.cpp │ │ │ ├── clmul_4bytes.cpp │ │ │ ├── clmul_5bytes.cpp │ │ │ ├── clmul_6bytes.cpp │ │ │ ├── clmul_7bytes.cpp │ │ │ ├── clmul_8bytes.cpp │ │ │ ├── clmul_common_impl.h │ │ │ ├── generic_1byte.cpp │ │ │ ├── generic_2bytes.cpp │ │ │ ├── generic_3bytes.cpp │ │ │ ├── generic_4bytes.cpp │ │ │ ├── generic_5bytes.cpp │ │ │ ├── generic_6bytes.cpp │ │ │ ├── generic_7bytes.cpp │ │ │ ├── generic_8bytes.cpp │ │ │ └── generic_common_impl.h │ │ ├── int_utils.h │ │ ├── lintrans.h │ │ ├── minisketch.cpp │ │ ├── sketch.h │ │ ├── sketch_impl.h │ │ ├── test.cpp │ │ └── util.h │ └── tests │ │ └── pyminisketch.py ├── net.cpp ├── net.h ├── net_permissions.cpp ├── net_permissions.h ├── net_processing.cpp ├── net_processing.h ├── net_types.cpp ├── net_types.h ├── netaddress.cpp ├── netaddress.h ├── netbase.cpp ├── netbase.h ├── netgroup.cpp ├── netgroup.h ├── netmessagemaker.h ├── node │ ├── README.md │ ├── blockstorage.cpp │ ├── blockstorage.h │ ├── caches.cpp │ ├── caches.h │ ├── chainstate.cpp │ ├── chainstate.h │ ├── chainstatemanager_args.cpp │ ├── chainstatemanager_args.h │ ├── coin.cpp │ ├── coin.h │ ├── connection_types.cpp │ ├── connection_types.h │ ├── context.cpp │ ├── context.h │ ├── eviction.cpp │ ├── eviction.h │ ├── interface_ui.cpp │ ├── interface_ui.h │ ├── interfaces.cpp │ ├── mempool_args.cpp │ ├── mempool_args.h │ ├── mempool_persist_args.cpp │ ├── mempool_persist_args.h │ ├── miner.cpp │ ├── miner.h │ ├── minisketchwrapper.cpp │ ├── minisketchwrapper.h │ ├── psbt.cpp │ ├── psbt.h │ ├── transaction.cpp │ ├── transaction.h │ ├── txreconciliation.cpp │ ├── txreconciliation.h │ ├── utxo_snapshot.cpp │ ├── utxo_snapshot.h │ ├── validation_cache_args.cpp │ └── validation_cache_args.h ├── noui.cpp ├── noui.h ├── outputtype.cpp ├── outputtype.h ├── policy │ ├── feerate.cpp │ ├── feerate.h │ ├── fees.cpp │ ├── fees.h │ ├── fees_args.cpp │ ├── fees_args.h │ ├── packages.cpp │ ├── packages.h │ ├── policy.cpp │ ├── policy.h │ ├── rbf.cpp │ ├── rbf.h │ ├── settings.cpp │ └── settings.h ├── pow.cpp ├── pow.h ├── prevector.h ├── primitives │ ├── block.cpp │ ├── block.h │ ├── transaction.cpp │ └── transaction.h ├── protocol.cpp ├── protocol.h ├── psbt.cpp ├── psbt.h ├── pubkey.cpp ├── pubkey.h ├── qt │ ├── Makefile │ ├── README.md │ ├── addressbookpage.cpp │ ├── addressbookpage.h │ ├── addresstablemodel.cpp │ ├── addresstablemodel.h │ ├── android │ │ ├── .gitignore │ │ ├── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── res │ │ │ ├── drawable-hdpi │ │ │ │ └── bitcoin.png │ │ │ ├── drawable-ldpi │ │ │ │ └── bitcoin.png │ │ │ ├── drawable-mdpi │ │ │ │ └── bitcoin.png │ │ │ ├── drawable-xhdpi │ │ │ │ └── bitcoin.png │ │ │ ├── drawable-xxhdpi │ │ │ │ └── bitcoin.png │ │ │ ├── drawable-xxxhdpi │ │ │ │ └── bitcoin.png │ │ │ └── values │ │ │ │ └── libs.xml │ │ └── src │ │ │ └── org │ │ │ └── bitcoincore │ │ │ └── qt │ │ │ └── BitcoinQtActivity.java │ ├── askpassphrasedialog.cpp │ ├── askpassphrasedialog.h │ ├── bantablemodel.cpp │ ├── bantablemodel.h │ ├── bitcoin.cpp │ ├── bitcoin.h │ ├── bitcoin.qrc │ ├── bitcoin_locale.qrc │ ├── bitcoinaddressvalidator.cpp │ ├── bitcoinaddressvalidator.h │ ├── bitcoinamountfield.cpp │ ├── bitcoinamountfield.h │ ├── bitcoingui.cpp │ ├── bitcoingui.h │ ├── bitcoinstrings.cpp │ ├── bitcoinunits.cpp │ ├── bitcoinunits.h │ ├── clientmodel.cpp │ ├── clientmodel.h │ ├── coincontroldialog.cpp │ ├── coincontroldialog.h │ ├── coincontroltreewidget.cpp │ ├── coincontroltreewidget.h │ ├── createwalletdialog.cpp │ ├── createwalletdialog.h │ ├── csvmodelwriter.cpp │ ├── csvmodelwriter.h │ ├── editaddressdialog.cpp │ ├── editaddressdialog.h │ ├── forms │ │ ├── addressbookpage.ui │ │ ├── askpassphrasedialog.ui │ │ ├── coincontroldialog.ui │ │ ├── createwalletdialog.ui │ │ ├── debugwindow.ui │ │ ├── editaddressdialog.ui │ │ ├── helpmessagedialog.ui │ │ ├── intro.ui │ │ ├── modaloverlay.ui │ │ ├── openuridialog.ui │ │ ├── optionsdialog.ui │ │ ├── overviewpage.ui │ │ ├── psbtoperationsdialog.ui │ │ ├── receivecoinsdialog.ui │ │ ├── receiverequestdialog.ui │ │ ├── sendcoinsdialog.ui │ │ ├── sendcoinsentry.ui │ │ ├── signverifymessagedialog.ui │ │ └── transactiondescdialog.ui │ ├── guiconstants.h │ ├── guiutil.cpp │ ├── guiutil.h │ ├── initexecutor.cpp │ ├── initexecutor.h │ ├── intro.cpp │ ├── intro.h │ ├── locale │ │ ├── bitcoin_am.ts │ │ ├── bitcoin_ar.ts │ │ ├── bitcoin_az.ts │ │ ├── bitcoin_be.ts │ │ ├── bitcoin_bg.ts │ │ ├── bitcoin_bn.ts │ │ ├── bitcoin_bs.ts │ │ ├── bitcoin_ca.ts │ │ ├── bitcoin_cs.ts │ │ ├── bitcoin_cy.ts │ │ ├── bitcoin_da.ts │ │ ├── bitcoin_de.ts │ │ ├── bitcoin_el.ts │ │ ├── bitcoin_en.ts │ │ ├── bitcoin_en.xlf │ │ ├── bitcoin_eo.ts │ │ ├── bitcoin_es.ts │ │ ├── bitcoin_es_CL.ts │ │ ├── bitcoin_es_CO.ts │ │ ├── bitcoin_es_DO.ts │ │ ├── bitcoin_es_MX.ts │ │ ├── bitcoin_es_VE.ts │ │ ├── bitcoin_et.ts │ │ ├── bitcoin_eu.ts │ │ ├── bitcoin_fa.ts │ │ ├── bitcoin_fi.ts │ │ ├── bitcoin_fil.ts │ │ ├── bitcoin_fr.ts │ │ ├── bitcoin_ga.ts │ │ ├── bitcoin_gd.ts │ │ ├── bitcoin_gl.ts │ │ ├── bitcoin_gl_ES.ts │ │ ├── bitcoin_gu.ts │ │ ├── bitcoin_he.ts │ │ ├── bitcoin_hr.ts │ │ ├── bitcoin_hu.ts │ │ ├── bitcoin_id.ts │ │ ├── bitcoin_is.ts │ │ ├── bitcoin_it.ts │ │ ├── bitcoin_ja.ts │ │ ├── bitcoin_ka.ts │ │ ├── bitcoin_kk.ts │ │ ├── bitcoin_kl.ts │ │ ├── bitcoin_km.ts │ │ ├── bitcoin_ko.ts │ │ ├── bitcoin_ku_IQ.ts │ │ ├── bitcoin_ky.ts │ │ ├── bitcoin_la.ts │ │ ├── bitcoin_lt.ts │ │ ├── bitcoin_lv.ts │ │ ├── bitcoin_mk.ts │ │ ├── bitcoin_ml.ts │ │ ├── bitcoin_mn.ts │ │ ├── bitcoin_mr_IN.ts │ │ ├── bitcoin_ms.ts │ │ ├── bitcoin_my.ts │ │ ├── bitcoin_nb.ts │ │ ├── bitcoin_ne.ts │ │ ├── bitcoin_nl.ts │ │ ├── bitcoin_no.ts │ │ ├── bitcoin_pam.ts │ │ ├── bitcoin_pl.ts │ │ ├── bitcoin_pt.ts │ │ ├── bitcoin_pt_BR.ts │ │ ├── bitcoin_ro.ts │ │ ├── bitcoin_ru.ts │ │ ├── bitcoin_sc.ts │ │ ├── bitcoin_si.ts │ │ ├── bitcoin_sk.ts │ │ ├── bitcoin_sl.ts │ │ ├── bitcoin_sn.ts │ │ ├── bitcoin_sq.ts │ │ ├── bitcoin_sr.ts │ │ ├── bitcoin_sr@latin.ts │ │ ├── bitcoin_sv.ts │ │ ├── bitcoin_sw.ts │ │ ├── bitcoin_szl.ts │ │ ├── bitcoin_ta.ts │ │ ├── bitcoin_te.ts │ │ ├── bitcoin_th.ts │ │ ├── bitcoin_tr.ts │ │ ├── bitcoin_ug.ts │ │ ├── bitcoin_uk.ts │ │ ├── bitcoin_ur.ts │ │ ├── bitcoin_uz@Cyrl.ts │ │ ├── bitcoin_uz@Latn.ts │ │ ├── bitcoin_vi.ts │ │ ├── bitcoin_yo.ts │ │ ├── bitcoin_zh-Hans.ts │ │ ├── bitcoin_zh.ts │ │ ├── bitcoin_zh_CN.ts │ │ ├── bitcoin_zh_HK.ts │ │ ├── bitcoin_zh_TW.ts │ │ └── bitcoin_zu.ts │ ├── macdockiconhandler.h │ ├── macdockiconhandler.mm │ ├── macnotificationhandler.h │ ├── macnotificationhandler.mm │ ├── macos_appnap.h │ ├── macos_appnap.mm │ ├── main.cpp │ ├── modaloverlay.cpp │ ├── modaloverlay.h │ ├── networkstyle.cpp │ ├── networkstyle.h │ ├── notificator.cpp │ ├── notificator.h │ ├── openuridialog.cpp │ ├── openuridialog.h │ ├── optionsdialog.cpp │ ├── optionsdialog.h │ ├── optionsmodel.cpp │ ├── optionsmodel.h │ ├── overviewpage.cpp │ ├── overviewpage.h │ ├── paymentserver.cpp │ ├── paymentserver.h │ ├── peertablemodel.cpp │ ├── peertablemodel.h │ ├── peertablesortproxy.cpp │ ├── peertablesortproxy.h │ ├── platformstyle.cpp │ ├── platformstyle.h │ ├── psbtoperationsdialog.cpp │ ├── psbtoperationsdialog.h │ ├── qrimagewidget.cpp │ ├── qrimagewidget.h │ ├── qvalidatedlineedit.cpp │ ├── qvalidatedlineedit.h │ ├── qvaluecombobox.cpp │ ├── qvaluecombobox.h │ ├── receivecoinsdialog.cpp │ ├── receivecoinsdialog.h │ ├── receiverequestdialog.cpp │ ├── receiverequestdialog.h │ ├── recentrequeststablemodel.cpp │ ├── recentrequeststablemodel.h │ ├── res │ │ ├── animation │ │ │ ├── makespinner.sh │ │ │ ├── spinner-000.png │ │ │ ├── spinner-001.png │ │ │ ├── spinner-002.png │ │ │ ├── spinner-003.png │ │ │ ├── spinner-004.png │ │ │ ├── spinner-005.png │ │ │ ├── spinner-006.png │ │ │ ├── spinner-007.png │ │ │ ├── spinner-008.png │ │ │ ├── spinner-009.png │ │ │ ├── spinner-010.png │ │ │ ├── spinner-011.png │ │ │ ├── spinner-012.png │ │ │ ├── spinner-013.png │ │ │ ├── spinner-014.png │ │ │ ├── spinner-015.png │ │ │ ├── spinner-016.png │ │ │ ├── spinner-017.png │ │ │ ├── spinner-018.png │ │ │ ├── spinner-019.png │ │ │ ├── spinner-020.png │ │ │ ├── spinner-021.png │ │ │ ├── spinner-022.png │ │ │ ├── spinner-023.png │ │ │ ├── spinner-024.png │ │ │ ├── spinner-025.png │ │ │ ├── spinner-026.png │ │ │ ├── spinner-027.png │ │ │ ├── spinner-028.png │ │ │ ├── spinner-029.png │ │ │ ├── spinner-030.png │ │ │ ├── spinner-031.png │ │ │ ├── spinner-032.png │ │ │ ├── spinner-033.png │ │ │ ├── spinner-034.png │ │ │ └── spinner-035.png │ │ ├── bitcoin-qt-res.rc │ │ ├── fonts │ │ │ └── RobotoMono-Bold.ttf │ │ ├── icons │ │ │ ├── add.png │ │ │ ├── address-book.png │ │ │ ├── bitcoin.icns │ │ │ ├── bitcoin.ico │ │ │ ├── bitcoin.png │ │ │ ├── bitcoin_testnet.ico │ │ │ ├── chevron.png │ │ │ ├── clock1.png │ │ │ ├── clock2.png │ │ │ ├── clock3.png │ │ │ ├── clock4.png │ │ │ ├── clock5.png │ │ │ ├── connect0.png │ │ │ ├── connect1.png │ │ │ ├── connect2.png │ │ │ ├── connect3.png │ │ │ ├── connect4.png │ │ │ ├── edit.png │ │ │ ├── editcopy.png │ │ │ ├── editpaste.png │ │ │ ├── export.png │ │ │ ├── eye.png │ │ │ ├── eye_minus.png │ │ │ ├── eye_plus.png │ │ │ ├── fontbigger.png │ │ │ ├── fontsmaller.png │ │ │ ├── hd_disabled.png │ │ │ ├── hd_enabled.png │ │ │ ├── history.png │ │ │ ├── lock_closed.png │ │ │ ├── lock_open.png │ │ │ ├── network_disabled.png │ │ │ ├── overview.png │ │ │ ├── proxy.png │ │ │ ├── receive.png │ │ │ ├── remove.png │ │ │ ├── send.png │ │ │ ├── synced.png │ │ │ ├── transaction0.png │ │ │ ├── transaction2.png │ │ │ ├── transaction_abandoned.png │ │ │ ├── transaction_conflicted.png │ │ │ ├── tx_inout.png │ │ │ ├── tx_input.png │ │ │ ├── tx_mined.png │ │ │ ├── tx_output.png │ │ │ └── warning.png │ │ └── src │ │ │ ├── bitcoin.svg │ │ │ ├── clock_0.svg │ │ │ ├── clock_1.svg │ │ │ ├── clock_2.svg │ │ │ ├── clock_3.svg │ │ │ ├── clock_4.svg │ │ │ ├── connect-0.svg │ │ │ ├── connect-1.svg │ │ │ ├── connect-2.svg │ │ │ ├── connect-3.svg │ │ │ ├── connect-4.svg │ │ │ ├── hd_disabled.svg │ │ │ ├── hd_enabled.svg │ │ │ ├── mine.svg │ │ │ ├── network_disabled.svg │ │ │ ├── proxy.svg │ │ │ ├── qt.svg │ │ │ ├── spinner.png │ │ │ ├── transaction0.svg │ │ │ ├── tx_in.svg │ │ │ └── tx_inout.svg │ ├── rpcconsole.cpp │ ├── rpcconsole.h │ ├── sendcoinsdialog.cpp │ ├── sendcoinsdialog.h │ ├── sendcoinsentry.cpp │ ├── sendcoinsentry.h │ ├── sendcoinsrecipient.h │ ├── signverifymessagedialog.cpp │ ├── signverifymessagedialog.h │ ├── splashscreen.cpp │ ├── splashscreen.h │ ├── test │ │ ├── Makefile │ │ ├── addressbooktests.cpp │ │ ├── addressbooktests.h │ │ ├── apptests.cpp │ │ ├── apptests.h │ │ ├── optiontests.cpp │ │ ├── optiontests.h │ │ ├── rpcnestedtests.cpp │ │ ├── rpcnestedtests.h │ │ ├── test_main.cpp │ │ ├── uritests.cpp │ │ ├── uritests.h │ │ ├── util.cpp │ │ ├── util.h │ │ ├── wallettests.cpp │ │ └── wallettests.h │ ├── trafficgraphwidget.cpp │ ├── trafficgraphwidget.h │ ├── transactiondesc.cpp │ ├── transactiondesc.h │ ├── transactiondescdialog.cpp │ ├── transactiondescdialog.h │ ├── transactionfilterproxy.cpp │ ├── transactionfilterproxy.h │ ├── transactionoverviewwidget.cpp │ ├── transactionoverviewwidget.h │ ├── transactionrecord.cpp │ ├── transactionrecord.h │ ├── transactiontablemodel.cpp │ ├── transactiontablemodel.h │ ├── transactionview.cpp │ ├── transactionview.h │ ├── utilitydialog.cpp │ ├── utilitydialog.h │ ├── walletcontroller.cpp │ ├── walletcontroller.h │ ├── walletframe.cpp │ ├── walletframe.h │ ├── walletmodel.cpp │ ├── walletmodel.h │ ├── walletmodeltransaction.cpp │ ├── walletmodeltransaction.h │ ├── walletview.cpp │ ├── walletview.h │ ├── winshutdownmonitor.cpp │ └── winshutdownmonitor.h ├── random.cpp ├── random.h ├── randomenv.cpp ├── randomenv.h ├── rest.cpp ├── rest.h ├── reverse_iterator.h ├── rpc │ ├── blockchain.cpp │ ├── blockchain.h │ ├── client.cpp │ ├── client.h │ ├── external_signer.cpp │ ├── fees.cpp │ ├── mempool.cpp │ ├── mempool.h │ ├── mining.cpp │ ├── mining.h │ ├── net.cpp │ ├── node.cpp │ ├── output_script.cpp │ ├── protocol.h │ ├── rawtransaction.cpp │ ├── rawtransaction_util.cpp │ ├── rawtransaction_util.h │ ├── register.h │ ├── request.cpp │ ├── request.h │ ├── server.cpp │ ├── server.h │ ├── server_util.cpp │ ├── server_util.h │ ├── signmessage.cpp │ ├── txoutproof.cpp │ ├── util.cpp │ └── util.h ├── scheduler.cpp ├── scheduler.h ├── script │ ├── bitcoinconsensus.cpp │ ├── bitcoinconsensus.h │ ├── descriptor.cpp │ ├── descriptor.h │ ├── interpreter.cpp │ ├── interpreter.h │ ├── keyorigin.h │ ├── miniscript.cpp │ ├── miniscript.h │ ├── script.cpp │ ├── script.h │ ├── script_error.cpp │ ├── script_error.h │ ├── sigcache.cpp │ ├── sigcache.h │ ├── sign.cpp │ ├── sign.h │ ├── signingprovider.cpp │ ├── signingprovider.h │ ├── standard.cpp │ └── standard.h ├── secp256k1 │ ├── .cirrus.yml │ ├── .gitattributes │ ├── .gitignore │ ├── 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 │ │ ├── CHANGELOG.md │ │ ├── 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 │ │ ├── basic-config.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 │ │ ├── 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 ├── serialize.h ├── shutdown.cpp ├── shutdown.h ├── signet.cpp ├── signet.h ├── span.h ├── streams.h ├── support │ ├── allocators │ │ ├── secure.h │ │ └── zeroafterfree.h │ ├── cleanse.cpp │ ├── cleanse.h │ ├── events.h │ ├── lockedpool.cpp │ └── lockedpool.h ├── sync.cpp ├── sync.h ├── test │ ├── Makefile │ ├── README.md │ ├── addrman_tests.cpp │ ├── allocator_tests.cpp │ ├── amount_tests.cpp │ ├── argsman_tests.cpp │ ├── arith_uint256_tests.cpp │ ├── banman_tests.cpp │ ├── base32_tests.cpp │ ├── base58_tests.cpp │ ├── base64_tests.cpp │ ├── bech32_tests.cpp │ ├── bip32_tests.cpp │ ├── blockchain_tests.cpp │ ├── blockencodings_tests.cpp │ ├── blockfilter_index_tests.cpp │ ├── blockfilter_tests.cpp │ ├── blockmanager_tests.cpp │ ├── bloom_tests.cpp │ ├── bswap_tests.cpp │ ├── checkqueue_tests.cpp │ ├── coins_tests.cpp │ ├── coinstatsindex_tests.cpp │ ├── compilerbug_tests.cpp │ ├── compress_tests.cpp │ ├── crypto_tests.cpp │ ├── cuckoocache_tests.cpp │ ├── data │ │ ├── README.md │ │ ├── asmap.raw │ │ ├── base58_encode_decode.json │ │ ├── bip341_wallet_vectors.json │ │ ├── blockfilters.json │ │ ├── key_io_invalid.json │ │ ├── key_io_valid.json │ │ ├── script_tests.json │ │ ├── sighash.json │ │ ├── tx_invalid.json │ │ └── tx_valid.json │ ├── dbwrapper_tests.cpp │ ├── denialofservice_tests.cpp │ ├── descriptor_tests.cpp │ ├── flatfile_tests.cpp │ ├── fs_tests.cpp │ ├── fuzz │ │ ├── FuzzedDataProvider.h │ │ ├── addition_overflow.cpp │ │ ├── addrman.cpp │ │ ├── asmap.cpp │ │ ├── asmap_direct.cpp │ │ ├── autofile.cpp │ │ ├── banman.cpp │ │ ├── base_encode_decode.cpp │ │ ├── bech32.cpp │ │ ├── bitdeque.cpp │ │ ├── block.cpp │ │ ├── block_header.cpp │ │ ├── blockfilter.cpp │ │ ├── bloom_filter.cpp │ │ ├── buffered_file.cpp │ │ ├── chain.cpp │ │ ├── checkqueue.cpp │ │ ├── coins_view.cpp │ │ ├── connman.cpp │ │ ├── crypto.cpp │ │ ├── crypto_aes256.cpp │ │ ├── crypto_aes256cbc.cpp │ │ ├── crypto_chacha20.cpp │ │ ├── crypto_chacha20_poly1305_aead.cpp │ │ ├── crypto_common.cpp │ │ ├── crypto_diff_fuzz_chacha20.cpp │ │ ├── crypto_hkdf_hmac_sha256_l32.cpp │ │ ├── crypto_poly1305.cpp │ │ ├── cuckoocache.cpp │ │ ├── decode_tx.cpp │ │ ├── descriptor_parse.cpp │ │ ├── deserialize.cpp │ │ ├── eval_script.cpp │ │ ├── fee_rate.cpp │ │ ├── fees.cpp │ │ ├── flatfile.cpp │ │ ├── float.cpp │ │ ├── fuzz.cpp │ │ ├── fuzz.h │ │ ├── golomb_rice.cpp │ │ ├── hex.cpp │ │ ├── http_request.cpp │ │ ├── i2p.cpp │ │ ├── integer.cpp │ │ ├── key.cpp │ │ ├── key_io.cpp │ │ ├── kitchen_sink.cpp │ │ ├── load_external_block_file.cpp │ │ ├── locale.cpp │ │ ├── merkleblock.cpp │ │ ├── message.cpp │ │ ├── miniscript.cpp │ │ ├── minisketch.cpp │ │ ├── muhash.cpp │ │ ├── multiplication_overflow.cpp │ │ ├── net.cpp │ │ ├── net_permissions.cpp │ │ ├── netaddress.cpp │ │ ├── netbase_dns_lookup.cpp │ │ ├── node_eviction.cpp │ │ ├── p2p_transport_serialization.cpp │ │ ├── parse_hd_keypath.cpp │ │ ├── parse_numbers.cpp │ │ ├── parse_script.cpp │ │ ├── parse_univalue.cpp │ │ ├── policy_estimator.cpp │ │ ├── policy_estimator_io.cpp │ │ ├── pow.cpp │ │ ├── prevector.cpp │ │ ├── primitives_transaction.cpp │ │ ├── process_message.cpp │ │ ├── process_messages.cpp │ │ ├── protocol.cpp │ │ ├── psbt.cpp │ │ ├── random.cpp │ │ ├── rbf.cpp │ │ ├── rolling_bloom_filter.cpp │ │ ├── rpc.cpp │ │ ├── script.cpp │ │ ├── script_assets_test_minimizer.cpp │ │ ├── script_bitcoin_consensus.cpp │ │ ├── script_descriptor_cache.cpp │ │ ├── script_flags.cpp │ │ ├── script_format.cpp │ │ ├── script_interpreter.cpp │ │ ├── script_ops.cpp │ │ ├── script_sigcache.cpp │ │ ├── script_sign.cpp │ │ ├── scriptnum_ops.cpp │ │ ├── secp256k1_ec_seckey_import_export_der.cpp │ │ ├── secp256k1_ecdsa_signature_parse_der_lax.cpp │ │ ├── signature_checker.cpp │ │ ├── signet.cpp │ │ ├── socks5.cpp │ │ ├── span.cpp │ │ ├── spanparsing.cpp │ │ ├── string.cpp │ │ ├── strprintf.cpp │ │ ├── system.cpp │ │ ├── timedata.cpp │ │ ├── torcontrol.cpp │ │ ├── transaction.cpp │ │ ├── tx_in.cpp │ │ ├── tx_out.cpp │ │ ├── tx_pool.cpp │ │ ├── txorphan.cpp │ │ ├── txrequest.cpp │ │ ├── util.cpp │ │ ├── util.h │ │ ├── util │ │ │ ├── mempool.cpp │ │ │ ├── mempool.h │ │ │ ├── net.cpp │ │ │ └── net.h │ │ ├── utxo_snapshot.cpp │ │ ├── validation_load_mempool.cpp │ │ └── versionbits.cpp │ ├── getarg_tests.cpp │ ├── hash_tests.cpp │ ├── headers_sync_chainwork_tests.cpp │ ├── httpserver_tests.cpp │ ├── i2p_tests.cpp │ ├── interfaces_tests.cpp │ ├── key_io_tests.cpp │ ├── key_tests.cpp │ ├── logging_tests.cpp │ ├── main.cpp │ ├── mempool_tests.cpp │ ├── merkle_tests.cpp │ ├── merkleblock_tests.cpp │ ├── miner_tests.cpp │ ├── miniscript_tests.cpp │ ├── minisketch_tests.cpp │ ├── multisig_tests.cpp │ ├── net_peer_eviction_tests.cpp │ ├── net_tests.cpp │ ├── netbase_tests.cpp │ ├── orphanage_tests.cpp │ ├── pmt_tests.cpp │ ├── policy_fee_tests.cpp │ ├── policyestimator_tests.cpp │ ├── pow_tests.cpp │ ├── prevector_tests.cpp │ ├── raii_event_tests.cpp │ ├── random_tests.cpp │ ├── rbf_tests.cpp │ ├── rest_tests.cpp │ ├── result_tests.cpp │ ├── reverselock_tests.cpp │ ├── rpc_tests.cpp │ ├── sanity_tests.cpp │ ├── scheduler_tests.cpp │ ├── script_p2sh_tests.cpp │ ├── script_parse_tests.cpp │ ├── script_segwit_tests.cpp │ ├── script_standard_tests.cpp │ ├── script_tests.cpp │ ├── scriptnum10.h │ ├── scriptnum_tests.cpp │ ├── serfloat_tests.cpp │ ├── serialize_tests.cpp │ ├── settings_tests.cpp │ ├── sighash_tests.cpp │ ├── sigopcount_tests.cpp │ ├── skiplist_tests.cpp │ ├── sock_tests.cpp │ ├── streams_tests.cpp │ ├── sync_tests.cpp │ ├── system_tests.cpp │ ├── timedata_tests.cpp │ ├── torcontrol_tests.cpp │ ├── transaction_tests.cpp │ ├── txindex_tests.cpp │ ├── txpackage_tests.cpp │ ├── txreconciliation_tests.cpp │ ├── txrequest_tests.cpp │ ├── txvalidation_tests.cpp │ ├── txvalidationcache_tests.cpp │ ├── uint256_tests.cpp │ ├── util │ │ ├── README.md │ │ ├── blockfilter.cpp │ │ ├── blockfilter.h │ │ ├── chainstate.h │ │ ├── logging.cpp │ │ ├── logging.h │ │ ├── mining.cpp │ │ ├── mining.h │ │ ├── net.cpp │ │ ├── net.h │ │ ├── script.cpp │ │ ├── script.h │ │ ├── setup_common.cpp │ │ ├── setup_common.h │ │ ├── str.cpp │ │ ├── str.h │ │ ├── transaction_utils.cpp │ │ ├── transaction_utils.h │ │ ├── txmempool.cpp │ │ ├── txmempool.h │ │ ├── validation.cpp │ │ └── validation.h │ ├── util_tests.cpp │ ├── util_threadnames_tests.cpp │ ├── validation_block_tests.cpp │ ├── validation_chainstate_tests.cpp │ ├── validation_chainstatemanager_tests.cpp │ ├── validation_flush_tests.cpp │ ├── validation_tests.cpp │ ├── validationinterface_tests.cpp │ └── versionbits_tests.cpp ├── threadsafety.h ├── timedata.cpp ├── timedata.h ├── tinyformat.h ├── torcontrol.cpp ├── torcontrol.h ├── txdb.cpp ├── txdb.h ├── txmempool.cpp ├── txmempool.h ├── txorphanage.cpp ├── txorphanage.h ├── txrequest.cpp ├── txrequest.h ├── uint256.cpp ├── uint256.h ├── undo.h ├── univalue │ ├── .gitignore │ ├── include │ │ ├── univalue.h │ │ ├── univalue_escapes.h │ │ └── univalue_utffilter.h │ ├── lib │ │ ├── .gitignore │ │ ├── univalue.cpp │ │ ├── univalue_get.cpp │ │ ├── univalue_read.cpp │ │ └── univalue_write.cpp │ ├── sources.mk │ └── 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 │ │ ├── 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 │ ├── asmap.cpp │ ├── asmap.h │ ├── bip32.cpp │ ├── bip32.h │ ├── bitdeque.h │ ├── bytevectorhash.cpp │ ├── bytevectorhash.h │ ├── check.cpp │ ├── check.h │ ├── epochguard.h │ ├── error.cpp │ ├── error.h │ ├── fastrange.h │ ├── fees.cpp │ ├── fees.h │ ├── getuniquepath.cpp │ ├── getuniquepath.h │ ├── golombrice.h │ ├── hash_type.h │ ├── hasher.cpp │ ├── hasher.h │ ├── macros.h │ ├── message.cpp │ ├── message.h │ ├── moneystr.cpp │ ├── moneystr.h │ ├── overflow.h │ ├── overloaded.h │ ├── rbf.cpp │ ├── rbf.h │ ├── readwritefile.cpp │ ├── readwritefile.h │ ├── result.h │ ├── serfloat.cpp │ ├── serfloat.h │ ├── settings.cpp │ ├── settings.h │ ├── sock.cpp │ ├── sock.h │ ├── spanparsing.cpp │ ├── spanparsing.h │ ├── strencodings.cpp │ ├── strencodings.h │ ├── string.cpp │ ├── string.h │ ├── syscall_sandbox.cpp │ ├── syscall_sandbox.h │ ├── syserror.cpp │ ├── syserror.h │ ├── system.cpp │ ├── system.h │ ├── thread.cpp │ ├── thread.h │ ├── threadinterrupt.cpp │ ├── threadinterrupt.h │ ├── threadnames.cpp │ ├── threadnames.h │ ├── time.cpp │ ├── time.h │ ├── tokenpipe.cpp │ ├── tokenpipe.h │ ├── trace.h │ ├── translation.h │ ├── types.h │ ├── ui_change_type.h │ └── vector.h ├── validation.cpp ├── validation.h ├── validationinterface.cpp ├── validationinterface.h ├── version.h ├── versionbits.cpp ├── versionbits.h ├── wallet │ ├── bdb.cpp │ ├── bdb.h │ ├── coincontrol.cpp │ ├── coincontrol.h │ ├── coinselection.cpp │ ├── coinselection.h │ ├── context.cpp │ ├── context.h │ ├── crypter.cpp │ ├── crypter.h │ ├── db.cpp │ ├── db.h │ ├── dump.cpp │ ├── dump.h │ ├── external_signer_scriptpubkeyman.cpp │ ├── external_signer_scriptpubkeyman.h │ ├── feebumper.cpp │ ├── feebumper.h │ ├── fees.cpp │ ├── fees.h │ ├── init.cpp │ ├── interfaces.cpp │ ├── ismine.h │ ├── load.cpp │ ├── load.h │ ├── receive.cpp │ ├── receive.h │ ├── rpc │ │ ├── addresses.cpp │ │ ├── backup.cpp │ │ ├── coins.cpp │ │ ├── encrypt.cpp │ │ ├── signmessage.cpp │ │ ├── spend.cpp │ │ ├── transactions.cpp │ │ ├── util.cpp │ │ ├── util.h │ │ ├── wallet.cpp │ │ └── wallet.h │ ├── salvage.cpp │ ├── salvage.h │ ├── scriptpubkeyman.cpp │ ├── scriptpubkeyman.h │ ├── spend.cpp │ ├── spend.h │ ├── sqlite.cpp │ ├── sqlite.h │ ├── test │ │ ├── availablecoins_tests.cpp │ │ ├── coinselector_tests.cpp │ │ ├── db_tests.cpp │ │ ├── feebumper_tests.cpp │ │ ├── fuzz │ │ │ ├── coinselection.cpp │ │ │ ├── notifications.cpp │ │ │ └── parse_iso8601.cpp │ │ ├── init_test_fixture.cpp │ │ ├── init_test_fixture.h │ │ ├── init_tests.cpp │ │ ├── ismine_tests.cpp │ │ ├── psbt_wallet_tests.cpp │ │ ├── rpc_util_tests.cpp │ │ ├── scriptpubkeyman_tests.cpp │ │ ├── spend_tests.cpp │ │ ├── util.cpp │ │ ├── util.h │ │ ├── wallet_crypto_tests.cpp │ │ ├── wallet_test_fixture.cpp │ │ ├── wallet_test_fixture.h │ │ ├── wallet_tests.cpp │ │ ├── wallet_transaction_tests.cpp │ │ ├── walletdb_tests.cpp │ │ └── walletload_tests.cpp │ ├── transaction.cpp │ ├── transaction.h │ ├── wallet.cpp │ ├── wallet.h │ ├── walletdb.cpp │ ├── walletdb.h │ ├── wallettool.cpp │ ├── wallettool.h │ ├── walletutil.cpp │ └── walletutil.h ├── walletinitinterface.h ├── warnings.cpp ├── warnings.h └── zmq │ ├── zmqabstractnotifier.cpp │ ├── zmqabstractnotifier.h │ ├── zmqnotificationinterface.cpp │ ├── zmqnotificationinterface.h │ ├── zmqpublishnotifier.cpp │ ├── zmqpublishnotifier.h │ ├── zmqrpc.cpp │ ├── zmqrpc.h │ ├── zmqutil.cpp │ └── zmqutil.h └── test ├── README.md ├── config.ini.in ├── functional ├── .gitignore ├── README.md ├── combine_logs.py ├── combined_log_template.html ├── create_cache.py ├── data │ ├── __init__.py │ ├── blockheader_testnet3.hex │ ├── invalid_txs.py │ ├── rpc_bip67.json │ ├── rpc_decodescript.json │ ├── rpc_getblockstats.json │ └── rpc_psbt.json ├── example_test.py ├── feature_abortnode.py ├── feature_addrman.py ├── feature_anchors.py ├── feature_asmap.py ├── feature_assumevalid.py ├── feature_backwards_compatibility.py ├── feature_bind_extra.py ├── feature_bind_port_discover.py ├── feature_bind_port_externalip.py ├── feature_bip68_sequence.py ├── feature_block.py ├── feature_blocksdir.py ├── feature_cltv.py ├── feature_coinstatsindex.py ├── feature_config_args.py ├── feature_csv_activation.py ├── feature_dbcrash.py ├── feature_dersig.py ├── feature_dirsymlinks.py ├── feature_discover.py ├── feature_fee_estimation.py ├── feature_filelock.py ├── feature_help.py ├── feature_includeconf.py ├── feature_index_prune.py ├── feature_init.py ├── feature_loadblock.py ├── feature_logging.py ├── feature_maxtipage.py ├── feature_maxuploadtarget.py ├── feature_minchainwork.py ├── feature_notifications.py ├── feature_nulldummy.py ├── feature_presegwit_node_upgrade.py ├── feature_proxy.py ├── feature_pruning.py ├── feature_rbf.py ├── feature_reindex.py ├── feature_segwit.py ├── feature_settings.py ├── feature_shutdown.py ├── feature_signet.py ├── feature_startupnotify.py ├── feature_syscall_sandbox.py ├── feature_taproot.py ├── feature_txindex_compatibility.py ├── feature_uacomment.py ├── feature_unsupported_utxo_db.py ├── feature_utxo_set_hash.py ├── feature_versionbits_warning.py ├── interface_bitcoin_cli.py ├── interface_http.py ├── interface_rest.py ├── interface_rpc.py ├── interface_usdt_coinselection.py ├── interface_usdt_net.py ├── interface_usdt_utxocache.py ├── interface_usdt_validation.py ├── interface_zmq.py ├── mempool_accept.py ├── mempool_accept_wtxid.py ├── mempool_compatibility.py ├── mempool_datacarrier.py ├── mempool_expiry.py ├── mempool_limit.py ├── mempool_package_limits.py ├── mempool_package_onemore.py ├── mempool_packages.py ├── mempool_persist.py ├── mempool_reorg.py ├── mempool_resurrect.py ├── mempool_spend_coinbase.py ├── mempool_unbroadcast.py ├── mempool_updatefromblock.py ├── mining_basic.py ├── mining_getblocktemplate_longpoll.py ├── mining_prioritisetransaction.py ├── mocks │ ├── invalid_signer.py │ ├── multi_signers.py │ └── signer.py ├── p2p_add_connections.py ├── p2p_addr_relay.py ├── p2p_addrfetch.py ├── p2p_addrv2_relay.py ├── p2p_block_sync.py ├── p2p_blockfilters.py ├── p2p_blocksonly.py ├── p2p_compactblocks.py ├── p2p_compactblocks_blocksonly.py ├── p2p_compactblocks_hb.py ├── p2p_disconnect_ban.py ├── p2p_dns_seeds.py ├── p2p_dos_header_tree.py ├── p2p_eviction.py ├── p2p_feefilter.py ├── p2p_filter.py ├── p2p_fingerprint.py ├── p2p_getaddr_caching.py ├── p2p_getdata.py ├── p2p_headers_sync_with_minchainwork.py ├── p2p_i2p_ports.py ├── p2p_i2p_sessions.py ├── p2p_ibd_txrelay.py ├── p2p_initial_headers_sync.py ├── p2p_invalid_block.py ├── p2p_invalid_locator.py ├── p2p_invalid_messages.py ├── p2p_invalid_tx.py ├── p2p_leak.py ├── p2p_leak_tx.py ├── p2p_message_capture.py ├── p2p_nobloomfilter_messages.py ├── p2p_node_network_limited.py ├── p2p_permissions.py ├── p2p_ping.py ├── p2p_segwit.py ├── p2p_sendheaders.py ├── p2p_sendtxrcncl.py ├── p2p_timeouts.py ├── p2p_tx_download.py ├── p2p_tx_privacy.py ├── p2p_unrequested_blocks.py ├── rpc_bind.py ├── rpc_blockchain.py ├── rpc_createmultisig.py ├── rpc_decodescript.py ├── rpc_deprecated.py ├── rpc_deriveaddresses.py ├── rpc_dumptxoutset.py ├── rpc_estimatefee.py ├── rpc_fundrawtransaction.py ├── rpc_generate.py ├── rpc_getblockfilter.py ├── rpc_getblockfrompeer.py ├── rpc_getblockstats.py ├── rpc_getchaintips.py ├── rpc_getdescriptorinfo.py ├── rpc_help.py ├── rpc_invalid_address_message.py ├── rpc_invalidateblock.py ├── rpc_mempool_info.py ├── rpc_misc.py ├── rpc_named_arguments.py ├── rpc_net.py ├── rpc_packages.py ├── rpc_preciousblock.py ├── rpc_psbt.py ├── rpc_rawtransaction.py ├── rpc_scanblocks.py ├── rpc_scantxoutset.py ├── rpc_setban.py ├── rpc_signer.py ├── rpc_signmessagewithprivkey.py ├── rpc_signrawtransactionwithkey.py ├── rpc_txoutproof.py ├── rpc_uptime.py ├── rpc_users.py ├── rpc_whitelist.py ├── test-shell.md ├── test_framework │ ├── __init__.py │ ├── address.py │ ├── authproxy.py │ ├── bdb.py │ ├── bip340_test_vectors.csv │ ├── blockfilter.py │ ├── blocktools.py │ ├── coverage.py │ ├── descriptors.py │ ├── key.py │ ├── messages.py │ ├── muhash.py │ ├── netutil.py │ ├── p2p.py │ ├── psbt.py │ ├── ripemd160.py │ ├── script.py │ ├── script_util.py │ ├── segwit_addr.py │ ├── siphash.py │ ├── socks5.py │ ├── test_framework.py │ ├── test_node.py │ ├── test_shell.py │ ├── util.py │ ├── wallet.py │ └── wallet_util.py ├── test_runner.py ├── tool_signet_miner.py ├── tool_wallet.py ├── wallet_abandonconflict.py ├── wallet_address_types.py ├── wallet_avoid_mixing_output_types.py ├── wallet_avoidreuse.py ├── wallet_backup.py ├── wallet_balance.py ├── wallet_basic.py ├── wallet_bumpfee.py ├── wallet_coinbase_category.py ├── wallet_create_tx.py ├── wallet_createwallet.py ├── wallet_crosschain.py ├── wallet_descriptor.py ├── wallet_disable.py ├── wallet_dump.py ├── wallet_encryption.py ├── wallet_fallbackfee.py ├── wallet_fast_rescan.py ├── wallet_groups.py ├── wallet_hd.py ├── wallet_implicitsegwit.py ├── wallet_import_rescan.py ├── wallet_import_with_label.py ├── wallet_importdescriptors.py ├── wallet_importmulti.py ├── wallet_importprunedfunds.py ├── wallet_inactive_hdchains.py ├── wallet_keypool.py ├── wallet_keypool_topup.py ├── wallet_labels.py ├── wallet_listdescriptors.py ├── wallet_listreceivedby.py ├── wallet_listsinceblock.py ├── wallet_listtransactions.py ├── wallet_migration.py ├── wallet_miniscript.py ├── wallet_multisig_descriptor_psbt.py ├── wallet_multiwallet.py ├── wallet_orphanedreward.py ├── wallet_reorgsrestore.py ├── wallet_resendwallettransactions.py ├── wallet_send.py ├── wallet_sendall.py ├── wallet_signer.py ├── wallet_signmessagewithaddress.py ├── wallet_signrawtransactionwithwallet.py ├── wallet_simulaterawtx.py ├── wallet_startup.py ├── wallet_taproot.py ├── wallet_timelock.py ├── wallet_transactiontime_rescan.py ├── wallet_txn_clone.py ├── wallet_txn_doublespend.py ├── wallet_upgradewallet.py └── wallet_watchonly.py ├── fuzz └── test_runner.py ├── get_previous_releases.py ├── lint ├── README.md ├── all-lint.py ├── check-doc.py ├── commit-script-check.sh ├── git-subtree-check.sh ├── lint-assertions.py ├── lint-circular-dependencies.py ├── lint-files.py ├── lint-format-strings.py ├── lint-git-commit-check.py ├── lint-include-guards.py ├── lint-includes.py ├── lint-locale-dependence.py ├── lint-logs.py ├── lint-python-dead-code.py ├── lint-python-mutable-default-parameters.py ├── lint-python-utf8-encoding.py ├── lint-python.py ├── lint-shell-locale.py ├── lint-shell.py ├── lint-spelling.py ├── lint-submodule.py ├── lint-tests.py ├── lint-whitespace.py ├── run-lint-format-strings.py └── spelling.ignore-words.txt ├── sanitizer_suppressions ├── lsan ├── tsan └── ubsan └── util ├── data ├── bitcoin-util-test.json ├── blanktxv1.hex ├── blanktxv1.json ├── blanktxv2.hex ├── blanktxv2.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 ├── txcreate1.hex ├── txcreate1.json ├── txcreate2.hex ├── txcreate2.json ├── txcreatedata1.hex ├── txcreatedata1.json ├── txcreatedata2.hex ├── txcreatedata2.json ├── txcreatedata_seq0.hex ├── txcreatedata_seq0.json ├── txcreatedata_seq1.hex ├── txcreatedata_seq1.json ├── txcreatemultisig1.hex ├── txcreatemultisig1.json ├── txcreatemultisig2.hex ├── txcreatemultisig2.json ├── txcreatemultisig3.hex ├── txcreatemultisig3.json ├── txcreatemultisig4.hex ├── txcreatemultisig4.json ├── txcreatemultisig5.json ├── txcreateoutpubkey1.hex ├── txcreateoutpubkey1.json ├── txcreateoutpubkey2.hex ├── txcreateoutpubkey2.json ├── txcreateoutpubkey3.hex ├── txcreateoutpubkey3.json ├── txcreatescript1.hex ├── txcreatescript1.json ├── txcreatescript2.hex ├── txcreatescript2.json ├── txcreatescript3.hex ├── txcreatescript3.json ├── txcreatescript4.hex ├── txcreatescript4.json ├── txcreatescript5.hex ├── txcreatescript6.hex ├── txcreatesignsegwit1.hex ├── txcreatesignv1.hex ├── txcreatesignv1.json └── txcreatesignv2.hex ├── rpcauth-test.py └── test_runner.py /.editorconfig: -------------------------------------------------------------------------------- 1 | # This is the top-most EditorConfig file. 2 | root = true 3 | 4 | # For all files. 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_style = space 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | # Source code files 13 | [*.{h,cpp,py,sh}] 14 | indent_size = 4 15 | 16 | # .cirrus.yml, .fuzzbuzz.yml, etc. 17 | [*.yml] 18 | indent_size = 2 19 | 20 | # Makefiles 21 | [{*.am,Makefile.*.include}] 22 | indent_style = tab 23 | 24 | # Autoconf scripts 25 | [configure.ac] 26 | indent_size = 2 27 | -------------------------------------------------------------------------------- /.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 this project 4 | title: '' 5 | labels: Feature 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | 12 | 13 | **Describe the solution you'd like** 14 | 15 | 16 | **Describe alternatives you've considered** 17 | 18 | 19 | **Additional context** 20 | 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/gui_issue.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: An issue or feature request related to the GUI 3 | about: Any report, issue or feature request related to the GUI should be reported at https://github.com/bitcoin-core/gui/issues/ 4 | title: Any report, issue or feature request related to the GUI should be reported at https://github.com/bitcoin-core/gui/issues/ 5 | labels: GUI 6 | assignees: '' 7 | 8 | --- 9 | 10 | Any report, issue or feature request related to the GUI should be reported at 11 | https://github.com/bitcoin-core/gui/issues/ 12 | -------------------------------------------------------------------------------- /.python-version: -------------------------------------------------------------------------------- 1 | 3.6.15 2 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | 4 | [o:bitcoin:p:bitcoin:r:qt-translation-024x] 5 | file_filter = src/qt/locale/bitcoin_.xlf 6 | source_file = src/qt/locale/bitcoin_en.xlf 7 | source_lang = en 8 | -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | See [doc/build-\*.md](/doc) -------------------------------------------------------------------------------- /autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright (c) 2013-2019 The Bitcoin Core developers 3 | # Distributed under the MIT software license, see the accompanying 4 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 5 | 6 | export LC_ALL=C 7 | set -e 8 | srcdir="$(dirname "$0")" 9 | cd "$srcdir" 10 | if [ -z "${LIBTOOLIZE}" ] && GLIBTOOLIZE="$(command -v glibtoolize)"; then 11 | LIBTOOLIZE="${GLIBTOOLIZE}" 12 | export LIBTOOLIZE 13 | fi 14 | command -v autoreconf >/dev/null || \ 15 | (echo "configuration failed, please install autoconf first" && exit 1) 16 | autoreconf --install --force --warnings=all 17 | -------------------------------------------------------------------------------- /build_msvc/.gitignore: -------------------------------------------------------------------------------- 1 | # Build directories 2 | Debug/* 3 | Release/* 4 | .vs 5 | packages/* 6 | */Obj 7 | */Debug 8 | */Release 9 | */x64 10 | *.vcxproj.user 11 | 12 | # .vcxproj files that are auto-generated by the msvc-autogen.py script. 13 | libbitcoin_cli/libbitcoin_cli.vcxproj 14 | libbitcoin_common/libbitcoin_common.vcxproj 15 | libbitcoin_crypto/libbitcoin_crypto.vcxproj 16 | libbitcoin_node/libbitcoin_node.vcxproj 17 | libbitcoin_util/libbitcoin_util.vcxproj 18 | libbitcoin_wallet_tool/libbitcoin_wallet_tool.vcxproj 19 | libbitcoin_wallet/libbitcoin_wallet.vcxproj 20 | libbitcoin_zmq/libbitcoin_zmq.vcxproj 21 | bench_bitcoin/bench_bitcoin.vcxproj 22 | libtest_util/libtest_util.vcxproj 23 | 24 | /bitcoin_config.h 25 | /common.init.vcxproj 26 | 27 | */Win32 28 | libbitcoin_qt/QtGeneratedFiles/* 29 | test_bitcoin-qt/QtGeneratedFiles/* 30 | vcpkg_installed -------------------------------------------------------------------------------- /build_msvc/common.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | $(BuildDependsOn);CopyBuildArtifacts 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /build_msvc/libbitcoin_cli/libbitcoin_cli.vcxproj.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {0667528C-D734-4009-ADF9-C0D6C4A5A5A6} 6 | 7 | 8 | StaticLibrary 9 | 10 | 11 | @SOURCE_FILES@ 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /build_msvc/libbitcoin_common/libbitcoin_common.vcxproj.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {7C87E378-DF58-482E-AA2F-1BC129BC19CE} 6 | 7 | 8 | StaticLibrary 9 | 10 | 11 | 12 | @SOURCE_FILES@ 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /build_msvc/libbitcoin_crypto/libbitcoin_crypto.vcxproj.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {6190199C-6CF4-4DAD-BFBD-93FA72A760C1} 6 | 7 | 8 | StaticLibrary 9 | 10 | 11 | @SOURCE_FILES@ 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /build_msvc/libbitcoin_util/libbitcoin_util.vcxproj.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {B53A5535-EE9D-4C6F-9A26-F79EE3BC3754} 6 | 7 | 8 | StaticLibrary 9 | 10 | 11 | @SOURCE_FILES@ 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /build_msvc/libbitcoin_wallet_tool/libbitcoin_wallet_tool.vcxproj.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {F91AC55E-6F5E-4C58-9AC5-B40DB7DEEF93} 6 | 7 | 8 | StaticLibrary 9 | 10 | 11 | @SOURCE_FILES@ 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /build_msvc/libbitcoin_zmq/libbitcoin_zmq.vcxproj.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {792D487F-F14C-49FC-A9DE-3FC150F31C3F} 6 | 7 | 8 | StaticLibrary 9 | 10 | 11 | @SOURCE_FILES@ 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /build_msvc/libsecp256k1_config.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * Copyright (c) 2013, 2014 Pieter Wuille * 3 | * Distributed under the MIT software license, see the accompanying * 4 | * file COPYING or http://www.opensource.org/licenses/mit-license.php.* 5 | **********************************************************************/ 6 | 7 | #ifndef BITCOIN_LIBSECP256K1_CONFIG_H 8 | #define BITCOIN_LIBSECP256K1_CONFIG_H 9 | 10 | #undef USE_ASM_X86_64 11 | 12 | #define ECMULT_GEN_PREC_BITS 4 13 | #define ECMULT_WINDOW_SIZE 15 14 | 15 | #endif // BITCOIN_LIBSECP256K1_CONFIG_H 16 | -------------------------------------------------------------------------------- /build_msvc/libtest_util/libtest_util.vcxproj.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {868474FD-35F6-4400-8EED-30A33E7521D4} 6 | 7 | 8 | StaticLibrary 9 | 10 | 11 | @SOURCE_FILES@ 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /build_msvc/vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bitcoin-core", 3 | "version-string": "1", 4 | "dependencies": [ 5 | "berkeleydb", 6 | "boost-multi-index", 7 | "boost-process", 8 | "boost-signals2", 9 | "boost-test", 10 | "sqlite3", 11 | { 12 | "name": "libevent", 13 | "features": ["thread"] 14 | }, 15 | "zeromq" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /ci/lint_run_all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2019-2020 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | set -o errexit; source ./ci/test/00_setup_env.sh 10 | set -o errexit; source ./ci/lint/04_install.sh 11 | set -o errexit; source ./ci/lint/06_script.sh 12 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_i686_centos.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2020-2021 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | export HOST=i686-pc-linux-gnu 10 | export CONTAINER_NAME=ci_i686_centos 11 | export DOCKER_NAME_TAG=quay.io/centos/centos:stream8 12 | export DOCKER_PACKAGES="gcc-c++ glibc-devel.x86_64 libstdc++-devel.x86_64 glibc-devel.i686 libstdc++-devel.i686 ccache libtool make git python3 python3-pip which patch lbzip2 xz procps-ng dash rsync coreutils bison" 13 | export PIP_PACKAGES="pyzmq" 14 | export GOAL="install" 15 | export BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-reduce-exports" 16 | export CONFIG_SHELL="/bin/dash" 17 | export TEST_RUNNER_ENV="LC_ALL=en_US.UTF-8" 18 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_i686_multiprocess.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2020-2021 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | export HOST=i686-pc-linux-gnu 10 | export CONTAINER_NAME=ci_i686_multiprocess 11 | export DOCKER_NAME_TAG=ubuntu:20.04 12 | export PACKAGES="cmake python3 llvm clang g++-multilib" 13 | export DEP_OPTS="DEBUG=1 MULTIPROCESS=1" 14 | export GOAL="install" 15 | export BITCOIN_CONFIG="--enable-debug CC='clang -m32' CXX='clang++ -m32' LDFLAGS='--rtlib=compiler-rt -lgcc_s'" 16 | export TEST_RUNNER_ENV="BITCOIND=bitcoin-node" 17 | export TEST_RUNNER_EXTRA="--nosandbox" 18 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_mac.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2019-2021 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | export CONTAINER_NAME=ci_macos_cross 10 | export DOCKER_NAME_TAG=ubuntu:20.04 # Check that Focal can cross-compile to macos 11 | export HOST=x86_64-apple-darwin 12 | export PACKAGES="cmake libz-dev libtinfo5 python3-setuptools xorriso" 13 | export XCODE_VERSION=12.2 14 | export XCODE_BUILD_ID=12B45b 15 | export RUN_UNIT_TESTS=false 16 | export RUN_FUNCTIONAL_TESTS=false 17 | export GOAL="deploy" 18 | export BITCOIN_CONFIG="--with-gui --enable-reduce-exports" 19 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_mac_native_arm64.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2019-2021 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | export HOST=arm64-apple-darwin 10 | export PIP_PACKAGES="zmq" 11 | export GOAL="install" 12 | export BITCOIN_CONFIG="--with-gui --with-miniupnpc --with-natpmp --enable-reduce-exports" 13 | export CI_OS_NAME="macos" 14 | export NO_DEPENDS=1 15 | export OSX_SDK="" 16 | export CCACHE_SIZE=300M 17 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_native_fuzz.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2019-2021 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | export DOCKER_NAME_TAG="ubuntu:22.04" 10 | export CONTAINER_NAME=ci_native_fuzz 11 | export PACKAGES="clang llvm python3 libevent-dev bsdmainutils libboost-dev libsqlite3-dev" 12 | export NO_DEPENDS=1 13 | export RUN_UNIT_TESTS=false 14 | export RUN_FUNCTIONAL_TESTS=false 15 | export RUN_FUZZ_TESTS=true 16 | export GOAL="install" 17 | export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer,address,undefined,integer CC='clang -ftrivial-auto-var-init=pattern' CXX='clang++ -ftrivial-auto-var-init=pattern'" 18 | export CCACHE_SIZE=200M 19 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_native_tsan.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2019-2021 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | export CONTAINER_NAME=ci_native_tsan 10 | export DOCKER_NAME_TAG=ubuntu:22.04 11 | export PACKAGES="clang-13 llvm-13 libc++abi-13-dev libc++-13-dev python3-zmq" 12 | export DEP_OPTS="CC=clang-13 CXX='clang++-13 -stdlib=libc++'" 13 | export GOAL="install" 14 | export BITCOIN_CONFIG="--enable-zmq CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER -DDEBUG_LOCKCONTENTION' CXXFLAGS='-g' --with-sanitizers=thread CC=clang-13 CXX='clang++-13 -stdlib=libc++'" 15 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_win64.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2019-2021 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | export CONTAINER_NAME=ci_win64 10 | export DOCKER_NAME_TAG=ubuntu:22.04 # Check that Jammy can cross-compile to win64 11 | export HOST=x86_64-w64-mingw32 12 | export DPKG_ADD_ARCH="i386" 13 | export PACKAGES="python3 nsis g++-mingw-w64-x86-64-posix wine-binfmt wine64 wine32 file" 14 | export RUN_FUNCTIONAL_TESTS=false 15 | export GOAL="deploy" 16 | export BITCOIN_CONFIG="--enable-reduce-exports --disable-external-signer --disable-gui-tests" 17 | -------------------------------------------------------------------------------- /ci/test/wrap-qemu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2018-2021 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | for b_name in {"${BASE_OUTDIR}/bin"/*,src/secp256k1/*tests,src/minisketch/test{,-verify},src/univalue/{test_json,unitester,object}}; do 10 | # shellcheck disable=SC2044 11 | for b in $(find "${BASE_ROOT_DIR}" -executable -type f -name "$(basename "$b_name")"); do 12 | echo "Wrap $b ..." 13 | mv "$b" "${b}_orig" 14 | echo '#!/usr/bin/env bash' > "$b" 15 | echo "$QEMU_USER_CMD \"${b}_orig\" \"\$@\"" >> "$b" 16 | chmod +x "$b" 17 | done 18 | done 19 | -------------------------------------------------------------------------------- /ci/test/wrap-valgrind.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2018-2021 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | for b_name in "${BASE_OUTDIR}/bin"/*; do 10 | # shellcheck disable=SC2044 11 | for b in $(find "${BASE_ROOT_DIR}" -executable -type f -name "$(basename "$b_name")"); do 12 | echo "Wrap $b ..." 13 | mv "$b" "${b}_orig" 14 | echo '#!/usr/bin/env bash' > "$b" 15 | echo "valgrind --gen-suppressions=all --quiet --error-exitcode=1 --suppressions=${BASE_ROOT_DIR}/contrib/valgrind.supp \"${b}_orig\" \"\$@\"" >> "$b" 16 | chmod +x "$b" 17 | done 18 | done 19 | -------------------------------------------------------------------------------- /ci/test/wrapped-cl.bat: -------------------------------------------------------------------------------- 1 | ccache cl %* 2 | -------------------------------------------------------------------------------- /ci/test_run_all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2019-2020 The Bitcoin Core developers 4 | # Distributed under the MIT software license, see the accompanying 5 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | export LC_ALL=C.UTF-8 8 | 9 | set -o errexit; source ./ci/test/00_setup_env.sh 10 | set -o errexit; source ./ci/test/04_install.sh 11 | set -o errexit; source ./ci/test/05_before_script.sh 12 | set -o errexit; source ./ci/test/06_script_a.sh 13 | set -o errexit; source ./ci/test/06_script_b.sh 14 | -------------------------------------------------------------------------------- /contrib/devtools/iwyu/bitcoin.core.imp: -------------------------------------------------------------------------------- 1 | # Fixups / upstreamed changes 2 | [ 3 | { include: [ "", private, "", public ] }, 4 | { include: [ "", private, "", public ] }, 5 | { include: [ "", private, "", public ] }, 6 | { include: [ "", private, "", public ] }, 7 | ] 8 | -------------------------------------------------------------------------------- /contrib/devtools/split-debug.sh.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | if [ $# -ne 3 ]; 4 | then echo "usage: $0 " 5 | fi 6 | 7 | @OBJCOPY@ --enable-deterministic-archives -p --only-keep-debug $1 $3 8 | @OBJCOPY@ --enable-deterministic-archives -p --strip-debug $1 $2 9 | @STRIP@ --enable-deterministic-archives -p -s $2 10 | @OBJCOPY@ --enable-deterministic-archives -p --add-gnu-debuglink=$3 $2 11 | -------------------------------------------------------------------------------- /contrib/devtools/utils.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright (c) 2021 The Bitcoin Core developers 3 | # Distributed under the MIT software license, see the accompanying 4 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 5 | ''' 6 | Common utility functions 7 | ''' 8 | import shutil 9 | import sys 10 | import os 11 | from typing import List 12 | 13 | 14 | def determine_wellknown_cmd(envvar, progname) -> List[str]: 15 | maybe_env = os.getenv(envvar) 16 | maybe_which = shutil.which(progname) 17 | if maybe_env: 18 | return maybe_env.split(' ') # Well-known vars are often meant to be word-split 19 | elif maybe_which: 20 | return [ maybe_which ] 21 | else: 22 | sys.exit(f"{progname} not found") 23 | -------------------------------------------------------------------------------- /contrib/guix/patches/glibc-ldd-x86_64.patch: -------------------------------------------------------------------------------- 1 | By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas 2 | it's in 'lib/' for us. This patch fixes that. 3 | 4 | --- glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2012-12-25 04:02:13.000000000 +0100 5 | +++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2013-09-15 23:08:03.000000000 +0200 6 | @@ -1,3 +1,3 @@ 7 | /LD_TRACE_LOADED_OBJECTS=1/a\ 8 | add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out" 9 | -s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \264\4-x86-64\6 \2x32\4-x32\6"_ 10 | +s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \2\4-x86-64\6 \2x32\4-x32\6"_ 11 | -------------------------------------------------------------------------------- /contrib/guix/patches/oscrypto-hard-code-openssl.patch: -------------------------------------------------------------------------------- 1 | diff --git a/oscrypto/__init__.py b/oscrypto/__init__.py 2 | index eb27313..371ab24 100644 3 | --- a/oscrypto/__init__.py 4 | +++ b/oscrypto/__init__.py 5 | @@ -302,3 +302,8 @@ def load_order(): 6 | 'oscrypto._win.tls', 7 | 'oscrypto.tls', 8 | ] 9 | + 10 | + 11 | +paths = '@GUIX_OSCRYPTO_USE_OPENSSL@'.split(',') 12 | +assert len(paths) == 2, 'Value for OSCRYPTO_USE_OPENSSL env var must be two paths separated by a comma' 13 | +use_openssl(*paths) 14 | -------------------------------------------------------------------------------- /contrib/init/README.md: -------------------------------------------------------------------------------- 1 | Sample configuration files for: 2 | ``` 3 | systemd: bitcoind.service 4 | Upstart: bitcoind.conf 5 | OpenRC: bitcoind.openrc 6 | bitcoind.openrcconf 7 | CentOS: bitcoind.init 8 | macOS: org.bitcoin.bitcoind.plist 9 | ``` 10 | have been made available to assist packagers in creating node packages here. 11 | 12 | See [doc/init.md](../../doc/init.md) for more information. 13 | -------------------------------------------------------------------------------- /contrib/init/org.bitcoin.bitcoind.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Label 6 | org.bitcoin.bitcoind 7 | ProgramArguments 8 | 9 | /usr/local/bin/bitcoind 10 | 11 | RunAtLoad 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /contrib/macdeploy/background.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/contrib/macdeploy/background.tiff -------------------------------------------------------------------------------- /contrib/qos/README.md: -------------------------------------------------------------------------------- 1 | ### QoS (Quality of service) ### 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 8333, but not if the destination IP is within a LAN. 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/.gitignore: -------------------------------------------------------------------------------- 1 | seeds_main.txt 2 | asmap-filled.dat 3 | -------------------------------------------------------------------------------- /contrib/shell/git-utils.bash: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | git_root() { 4 | git rev-parse --show-toplevel 2> /dev/null 5 | } 6 | 7 | git_head_version() { 8 | local recent_tag 9 | if recent_tag="$(git describe --exact-match HEAD 2> /dev/null)"; then 10 | echo "${recent_tag#v}" 11 | else 12 | git rev-parse --short=12 HEAD 13 | fi 14 | } 15 | -------------------------------------------------------------------------------- /contrib/testgen/README.md: -------------------------------------------------------------------------------- 1 | ### TestGen ### 2 | 3 | Utilities to generate test vectors for the data-driven Bitcoin tests. 4 | 5 | To use inside a scripted-diff (or just execute directly): 6 | 7 | ./gen_key_io_test_vectors.py valid 70 > ../../src/test/data/key_io_valid.json 8 | ./gen_key_io_test_vectors.py invalid 70 > ../../src/test/data/key_io_invalid.json 9 | -------------------------------------------------------------------------------- /contrib/tracing/log_p2p_traffic.bt: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bpftrace 2 | 3 | BEGIN 4 | { 5 | printf("Logging P2P traffic\n") 6 | } 7 | 8 | usdt:./src/bitcoind:net:inbound_message 9 | { 10 | $peer_id = (int64) arg0; 11 | $peer_addr = str(arg1); 12 | $peer_type = str(arg2); 13 | $msg_type = str(arg3); 14 | $msg_len = arg4; 15 | printf("inbound '%s' msg from peer %d (%s, %s) with %d bytes\n", $msg_type, $peer_id, $peer_type, $peer_addr, $msg_len); 16 | } 17 | 18 | usdt:./src/bitcoind:net:outbound_message 19 | { 20 | $peer_id = (int64) arg0; 21 | $peer_addr = str(arg1); 22 | $peer_type = str(arg2); 23 | $msg_type = str(arg3); 24 | $msg_len = arg4; 25 | 26 | printf("outbound '%s' msg to peer %d (%s, %s) with %d bytes\n", $msg_type, $peer_id, $peer_type, $peer_addr, $msg_len); 27 | } 28 | 29 | -------------------------------------------------------------------------------- /contrib/verify-commits/allow-incorrect-sha512-commits: -------------------------------------------------------------------------------- 1 | f8feaa4636260b599294c7285bcf1c8b7737f74e 2 | 8040ae6fc576e9504186f2ae3ff2c8125de1095c 3 | -------------------------------------------------------------------------------- /contrib/verify-commits/allow-unclean-merge-commits: -------------------------------------------------------------------------------- 1 | 6052d509105790a26b3ad5df43dd61e7f1b24a12 2 | 3798e5de334c3deb5f71302b782f6b8fbd5087f1 3 | 326ffed09bfcc209a2efd6a2ebc69edf6bd200b5 4 | 97d83739db0631be5d4ba86af3616014652c00ec 5 | -------------------------------------------------------------------------------- /contrib/verify-commits/pre-push-hook.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright (c) 2014-2021 The Bitcoin Core developers 3 | # Distributed under the MIT software license, see the accompanying 4 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 5 | 6 | export LC_ALL=C 7 | if ! [[ "$2" =~ ^(git@)?(www.)?github.com(:|/)bitcoin/bitcoin(.git)?$ ]]; then 8 | exit 0 9 | fi 10 | 11 | while read LINE; do 12 | set -- A "$LINE" 13 | if [ "$4" != "refs/heads/master" ]; then 14 | continue 15 | fi 16 | if ! ./contrib/verify-commits/verify-commits.py "$3" > /dev/null 2>&1; then 17 | echo "ERROR: A commit is not signed, can't push" 18 | ./contrib/verify-commits/verify-commits.py 19 | exit 1 20 | fi 21 | done < /dev/stdin 22 | -------------------------------------------------------------------------------- /contrib/verify-commits/trusted-git-root: -------------------------------------------------------------------------------- 1 | 577bd51a4b8de066466a445192c1c653872657e2 2 | -------------------------------------------------------------------------------- /contrib/verify-commits/trusted-keys: -------------------------------------------------------------------------------- 1 | 71A3B16735405025D447E8F274810B012346C9A6 2 | B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B 3 | E777299FC265DD04793070EB944D35F9AC3DB76A 4 | D1DBF2C4B96F2DEBF4C16654410108112E7EA81F 5 | 152812300785C96444D3334D17565732E08E5E41 6 | 6B002C6EA3F91B1B0DF0C9BC8F617F1200A6D25C 7 | -------------------------------------------------------------------------------- /contrib/verify-commits/trusted-sha512-root-commit: -------------------------------------------------------------------------------- 1 | 309bf16257b2395ce502017be627186b749ee749 2 | -------------------------------------------------------------------------------- /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 | powerpc* 12 | riscv32* 13 | riscv64* 14 | s390x* 15 | -------------------------------------------------------------------------------- /depends/builders/default.mk: -------------------------------------------------------------------------------- 1 | default_build_CC = gcc 2 | default_build_CXX = g++ 3 | default_build_AR = ar 4 | default_build_TAR = tar 5 | default_build_RANLIB = ranlib 6 | default_build_STRIP = strip 7 | default_build_NM = nm 8 | 9 | define add_build_tool_func 10 | build_$(build_os)_$1 ?= $$(default_build_$1) 11 | build_$(build_arch)_$(build_os)_$1 ?= $$(build_$(build_os)_$1) 12 | build_$1=$$(build_$(build_arch)_$(build_os)_$1) 13 | endef 14 | $(foreach var,CC CXX AR TAR RANLIB NM STRIP SHA256SUM DOWNLOAD OTOOL INSTALL_NAME_TOOL DSYMUTIL,$(eval $(call add_build_tool_func,$(var)))) 15 | define add_build_flags_func 16 | build_$(build_arch)_$(build_os)_$1 += $(build_$(build_os)_$1) 17 | build_$1=$$(build_$(build_arch)_$(build_os)_$1) 18 | endef 19 | $(foreach flags, CFLAGS CXXFLAGS LDFLAGS, $(eval $(call add_build_flags_func,$(flags)))) 20 | -------------------------------------------------------------------------------- /depends/builders/freebsd.mk: -------------------------------------------------------------------------------- 1 | build_freebsd_CC=clang 2 | build_freebsd_CXX=clang++ 3 | 4 | build_freebsd_SHA256SUM = shasum -a 256 5 | build_freebsd_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o 6 | -------------------------------------------------------------------------------- /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/builders/netbsd.mk: -------------------------------------------------------------------------------- 1 | build_netbsd_SHA256SUM = shasum -a 256 2 | build_netbsd_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o 3 | -------------------------------------------------------------------------------- /depends/builders/openbsd.mk: -------------------------------------------------------------------------------- 1 | build_openbsd_CC = clang 2 | build_openbsd_CXX = clang++ 3 | 4 | build_openbsd_SHA256SUM = sha256 5 | build_openbsd_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o 6 | 7 | build_openbsd_TAR = gtar 8 | -------------------------------------------------------------------------------- /depends/hosts/android.mk: -------------------------------------------------------------------------------- 1 | ifeq ($(HOST),armv7a-linux-android) 2 | android_CXX=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)eabi$(ANDROID_API_LEVEL)-clang++ 3 | android_CC=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)eabi$(ANDROID_API_LEVEL)-clang 4 | else 5 | android_CXX=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)$(ANDROID_API_LEVEL)-clang++ 6 | android_CC=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)$(ANDROID_API_LEVEL)-clang 7 | endif 8 | 9 | android_CFLAGS=-std=$(C_STANDARD) 10 | android_CXXFLAGS=-std=$(CXX_STANDARD) 11 | 12 | ifneq ($(LTO),) 13 | android_CFLAGS += -flto 14 | android_LDFLAGS += -flto 15 | endif 16 | 17 | android_AR=$(ANDROID_TOOLCHAIN_BIN)/llvm-ar 18 | android_RANLIB=$(ANDROID_TOOLCHAIN_BIN)/llvm-ranlib 19 | 20 | android_cmake_system=Android 21 | -------------------------------------------------------------------------------- /depends/hosts/mingw32.mk: -------------------------------------------------------------------------------- 1 | ifneq ($(shell $(SHELL) $(.SHELLFLAGS) "command -v $(host)-g++-posix"),) 2 | mingw32_CXX := $(host)-g++-posix 3 | endif 4 | 5 | mingw32_CFLAGS=-pipe -std=$(C_STANDARD) 6 | mingw32_CXXFLAGS=-pipe -std=$(CXX_STANDARD) 7 | 8 | ifneq ($(LTO),) 9 | mingw32_CFLAGS += -flto 10 | mingw32_CXXFLAGS += -flto 11 | mingw32_LDFLAGS += -flto 12 | 13 | mingw32_AR = $(host_toolchain)gcc-ar 14 | mingw32_NM = $(host_toolchain)gcc-nm 15 | mingw32_RANLIB = $(host_toolchain)gcc-ranlib 16 | endif 17 | 18 | mingw32_release_CFLAGS=-O2 19 | mingw32_release_CXXFLAGS=$(mingw32_release_CFLAGS) 20 | 21 | mingw32_debug_CFLAGS=-O1 22 | mingw32_debug_CXXFLAGS=$(mingw32_debug_CFLAGS) 23 | 24 | mingw32_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC 25 | 26 | mingw32_cmake_system=Windows 27 | -------------------------------------------------------------------------------- /depends/packages/boost.mk: -------------------------------------------------------------------------------- 1 | package=boost 2 | $(package)_version=1.80.0 3 | $(package)_download_path=https://boostorg.jfrog.io/artifactory/main/release/$($(package)_version)/source/ 4 | $(package)_file_name=boost_$(subst .,_,$($(package)_version)).tar.bz2 5 | $(package)_sha256_hash=1e19565d82e43bc59209a168f5ac899d3ba471d55c7610c677d4ccf2c9c500c0 6 | 7 | define $(package)_stage_cmds 8 | mkdir -p $($(package)_staging_prefix_dir)/include && \ 9 | cp -r boost $($(package)_staging_prefix_dir)/include 10 | endef 11 | -------------------------------------------------------------------------------- /depends/packages/native_capnp.mk: -------------------------------------------------------------------------------- 1 | package=native_capnp 2 | $(package)_version=0.7.0 3 | $(package)_download_path=https://capnproto.org/ 4 | $(package)_download_file=capnproto-c++-$($(package)_version).tar.gz 5 | $(package)_file_name=capnproto-cxx-$($(package)_version).tar.gz 6 | $(package)_sha256_hash=c9a4c0bd88123064d483ab46ecee777f14d933359e23bff6fb4f4dbd28b4cd41 7 | 8 | define $(package)_config_cmds 9 | $($(package)_autoconf) 10 | endef 11 | 12 | define $(package)_build_cmds 13 | $(MAKE) 14 | endef 15 | 16 | define $(package)_stage_cmds 17 | $(MAKE) DESTDIR=$($(package)_staging_dir) install 18 | endef 19 | -------------------------------------------------------------------------------- /depends/packages/native_ds_store.mk: -------------------------------------------------------------------------------- 1 | package=native_ds_store 2 | $(package)_version=1.3.0 3 | $(package)_download_path=https://github.com/dmgbuild/ds_store/archive/ 4 | $(package)_file_name=v$($(package)_version).tar.gz 5 | $(package)_sha256_hash=76b3280cd4e19e5179defa23fb594a9dd32643b0c80d774bd3108361d94fb46d 6 | $(package)_install_libdir=$(build_prefix)/lib/python3/dist-packages 7 | 8 | define $(package)_build_cmds 9 | python3 setup.py build 10 | endef 11 | 12 | define $(package)_stage_cmds 13 | mkdir -p $($(package)_install_libdir) && \ 14 | python3 setup.py install --root=$($(package)_staging_dir) --prefix=$(build_prefix) --install-lib=$($(package)_install_libdir) 15 | endef 16 | -------------------------------------------------------------------------------- /depends/packages/native_libmultiprocess.mk: -------------------------------------------------------------------------------- 1 | package=native_libmultiprocess 2 | $(package)_version=d576d975debdc9090bd2582f83f49c76c0061698 3 | $(package)_download_path=https://github.com/chaincodelabs/libmultiprocess/archive 4 | $(package)_file_name=$($(package)_version).tar.gz 5 | $(package)_sha256_hash=9f8b055c8bba755dc32fe799b67c20b91e7b13e67cadafbc54c0f1def057a370 6 | $(package)_dependencies=native_capnp 7 | 8 | define $(package)_config_cmds 9 | $($(package)_cmake) . 10 | endef 11 | 12 | define $(package)_build_cmds 13 | $(MAKE) 14 | endef 15 | 16 | define $(package)_stage_cmds 17 | $(MAKE) DESTDIR=$($(package)_staging_dir) install 18 | endef 19 | -------------------------------------------------------------------------------- /depends/packages/native_libtapi.mk: -------------------------------------------------------------------------------- 1 | package=native_libtapi 2 | $(package)_version=664b8414f89612f2dfd35a9b679c345aa5389026 3 | $(package)_download_path=https://github.com/tpoechtrager/apple-libtapi/archive 4 | $(package)_file_name=$($(package)_version).tar.gz 5 | $(package)_sha256_hash=62e419c12d1c9fad67cc1cd523132bc00db050998337c734c15bc8d73cc02b61 6 | 7 | ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),) 8 | $(package)_dependencies=native_clang 9 | endif 10 | 11 | define $(package)_build_cmds 12 | CC=$(clang_prog) CXX=$(clangxx_prog) INSTALLPREFIX=$($(package)_staging_prefix_dir) ./build.sh 13 | endef 14 | 15 | define $(package)_stage_cmds 16 | ./install.sh 17 | endef 18 | -------------------------------------------------------------------------------- /depends/packages/native_mac_alias.mk: -------------------------------------------------------------------------------- 1 | package=native_mac_alias 2 | $(package)_version=2.2.0 3 | $(package)_download_path=https://github.com/dmgbuild/mac_alias/archive/ 4 | $(package)_file_name=v$($(package)_version).tar.gz 5 | $(package)_sha256_hash=421e6d7586d1f155c7db3e7da01ca0dacc9649a509a253ad7077b70174426499 6 | $(package)_install_libdir=$(build_prefix)/lib/python3/dist-packages 7 | 8 | define $(package)_build_cmds 9 | python3 setup.py build 10 | endef 11 | 12 | define $(package)_stage_cmds 13 | mkdir -p $($(package)_install_libdir) && \ 14 | python3 setup.py install --root=$($(package)_staging_dir) --prefix=$(build_prefix) --install-lib=$($(package)_install_libdir) 15 | endef 16 | -------------------------------------------------------------------------------- /depends/packages/systemtap.mk: -------------------------------------------------------------------------------- 1 | package=systemtap 2 | $(package)_version=4.7 3 | $(package)_download_path=https://sourceware.org/systemtap/ftp/releases/ 4 | $(package)_file_name=$(package)-$($(package)_version).tar.gz 5 | $(package)_sha256_hash=43a0a3db91aa4d41e28015b39a65e62059551f3cc7377ebf3a3a5ca7339e7b1f 6 | $(package)_patches=remove_SDT_ASM_SECTION_AUTOGROUP_SUPPORT_check.patch 7 | 8 | define $(package)_preprocess_cmds 9 | patch -p1 < $($(package)_patch_dir)/remove_SDT_ASM_SECTION_AUTOGROUP_SUPPORT_check.patch && \ 10 | mkdir -p $($(package)_staging_prefix_dir)/include/sys && \ 11 | cp includes/sys/sdt.h $($(package)_staging_prefix_dir)/include/sys/sdt.h 12 | endef 13 | -------------------------------------------------------------------------------- /depends/packages/xcb_proto.mk: -------------------------------------------------------------------------------- 1 | package=xcb_proto 2 | $(package)_version=1.14.1 3 | $(package)_download_path=https://xorg.freedesktop.org/archive/individual/proto 4 | $(package)_file_name=xcb-proto-$($(package)_version).tar.xz 5 | $(package)_sha256_hash=f04add9a972ac334ea11d9d7eb4fc7f8883835da3e4859c9afa971efdf57fcc3 6 | 7 | define $(package)_config_cmds 8 | $($(package)_autoconf) 9 | endef 10 | 11 | define $(package)_build_cmds 12 | $(MAKE) 13 | endef 14 | 15 | define $(package)_stage_cmds 16 | $(MAKE) DESTDIR=$($(package)_staging_dir) install 17 | endef 18 | 19 | define $(package)_postprocess_cmds 20 | rm -rf lib/python*/site-packages/xcbgen/__pycache__ 21 | endef 22 | -------------------------------------------------------------------------------- /depends/patches/libxcb/remove_pthread_stubs.patch: -------------------------------------------------------------------------------- 1 | Remove uneeded pthread-stubs dependency 2 | --- a/configure 3 | +++ b/configure 4 | @@ -19695,7 +19695,7 @@ fi 5 | NEEDED="xau >= 0.99.2" 6 | case $host_os in 7 | linux*) ;; 8 | - *) NEEDED="$NEEDED pthread-stubs" ;; 9 | + *) NEEDED="$NEEDED" ;; 10 | esac 11 | 12 | pkg_failed=no 13 | -------------------------------------------------------------------------------- /depends/patches/qt/fix_android_jni_static.patch: -------------------------------------------------------------------------------- 1 | --- old/qtbase/src/plugins/platforms/android/androidjnimain.cpp 2 | +++ new/qtbase/src/plugins/platforms/android/androidjnimain.cpp 3 | @@ -943,6 +943,14 @@ Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void */*reserved*/) 4 | __android_log_print(ANDROID_LOG_FATAL, "Qt", "registerNatives failed"); 5 | return -1; 6 | } 7 | + 8 | + const jint ret = QT_PREPEND_NAMESPACE(QtAndroidPrivate::initJNI(vm, env)); 9 | + if (ret != 0) 10 | + { 11 | + __android_log_print(ANDROID_LOG_FATAL, "Qt", "initJNI failed"); 12 | + return ret; 13 | + } 14 | + 15 | QWindowSystemInterfacePrivate::TabletEvent::setPlatformSynthesizesMouse(false); 16 | 17 | m_javaVM = vm; 18 | 19 | -------------------------------------------------------------------------------- /depends/patches/qt/fix_qt_pkgconfig.patch: -------------------------------------------------------------------------------- 1 | --- old/qtbase/mkspecs/features/qt_module.prf 2 | +++ new/qtbase/mkspecs/features/qt_module.prf 3 | @@ -269,7 +269,7 @@ load(qt_installs) 4 | load(qt_targets) 5 | 6 | # this builds on top of qt_common 7 | -!internal_module:if(unix|mingw):!if(darwin:debug_and_release:CONFIG(debug, debug|release)) { 8 | +if(unix|mingw):!if(darwin:debug_and_release:CONFIG(debug, debug|release)) { 9 | CONFIG += create_pc 10 | QMAKE_PKGCONFIG_DESTDIR = pkgconfig 11 | host_build: \ 12 | -------------------------------------------------------------------------------- /depends/patches/qt/qt.pro: -------------------------------------------------------------------------------- 1 | # Create the super cache so modules will add themselves to it. 2 | cache(, super) 3 | 4 | !QTDIR_build: cache(CONFIG, add, $$list(QTDIR_build)) 5 | 6 | prl = no_install_prl 7 | CONFIG += $$prl 8 | cache(CONFIG, add stash, prl) 9 | 10 | TEMPLATE = subdirs 11 | SUBDIRS = qtbase qttools qttranslations 12 | 13 | qttools.depends = qtbase 14 | qttranslations.depends = qttools 15 | 16 | load(qt_configure) 17 | -------------------------------------------------------------------------------- /depends/patches/qt/qttools_src.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | SUBDIRS = linguist 3 | 4 | fb = force_bootstrap 5 | CONFIG += $$fb 6 | cache(CONFIG, add, fb) 7 | -------------------------------------------------------------------------------- /depends/patches/qt/use_android_ndk23.patch: -------------------------------------------------------------------------------- 1 | Use Android NDK r23 LTS 2 | 3 | --- old/qtbase/mkspecs/features/android/default_pre.prf 4 | +++ new/qtbase/mkspecs/features/android/default_pre.prf 5 | @@ -76,7 +76,7 @@ else: equals(QT_ARCH, x86_64): CROSS_COMPILE = $$NDK_LLVM_PATH/bin/x86_64-linux- 6 | else: equals(QT_ARCH, arm64-v8a): CROSS_COMPILE = $$NDK_LLVM_PATH/bin/aarch64-linux-android- 7 | else: CROSS_COMPILE = $$NDK_LLVM_PATH/bin/arm-linux-androideabi- 8 | 9 | -QMAKE_RANLIB = $${CROSS_COMPILE}ranlib 10 | +QMAKE_RANLIB = $$NDK_LLVM_PATH/bin/llvm-ranlib 11 | QMAKE_LINK_SHLIB = $$QMAKE_LINK 12 | QMAKE_LFLAGS = 13 | 14 | -------------------------------------------------------------------------------- /doc/.gitignore: -------------------------------------------------------------------------------- 1 | Doxyfile 2 | -------------------------------------------------------------------------------- /doc/assets-attribution.md: -------------------------------------------------------------------------------- 1 | The list of assets used in the bitcoin source and their attribution can now be found in [contrib/debian/copyright](../contrib/debian/copyright). 2 | -------------------------------------------------------------------------------- /doc/bitcoin_logo_doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/doc/bitcoin_logo_doxygen.png -------------------------------------------------------------------------------- /doc/guix.md: -------------------------------------------------------------------------------- 1 | # Bootstrappable Bitcoin Core Builds 2 | 3 | See [contrib/guix/README.md](../contrib/guix/README.md) 4 | -------------------------------------------------------------------------------- /doc/man/Makefile.am: -------------------------------------------------------------------------------- 1 | dist_man1_MANS= 2 | 3 | if BUILD_BITCOIND 4 | dist_man1_MANS+=bitcoind.1 5 | endif 6 | 7 | if ENABLE_QT 8 | dist_man1_MANS+=bitcoin-qt.1 9 | endif 10 | 11 | if BUILD_BITCOIN_CLI 12 | dist_man1_MANS+=bitcoin-cli.1 13 | endif 14 | 15 | if BUILD_BITCOIN_TX 16 | dist_man1_MANS+=bitcoin-tx.1 17 | endif 18 | 19 | if BUILD_BITCOIN_UTIL 20 | dist_man1_MANS+=bitcoin-util.1 21 | endif 22 | 23 | if ENABLE_WALLET 24 | if BUILD_BITCOIN_WALLET 25 | dist_man1_MANS+=bitcoin-wallet.1 26 | endif 27 | endif 28 | -------------------------------------------------------------------------------- /doc/man/bitcoin-cli.1: -------------------------------------------------------------------------------- 1 | .TH BITCOIN-CLI "1" 2 | .SH NAME 3 | bitcoin-cli \- manual page for bitcoin-cli 4 | 5 | This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release. 6 | -------------------------------------------------------------------------------- /doc/man/bitcoin-qt.1: -------------------------------------------------------------------------------- 1 | .TH BITCOIN-QT "1" 2 | .SH NAME 3 | bitcoin-qt \- manual page for bitcoin-qt 4 | 5 | This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release. 6 | -------------------------------------------------------------------------------- /doc/man/bitcoin-tx.1: -------------------------------------------------------------------------------- 1 | .TH BITCOIN-TX "1" 2 | .SH NAME 3 | bitcoin-tx \- manual page for bitcoin-tx 4 | 5 | This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release. 6 | -------------------------------------------------------------------------------- /doc/man/bitcoin-util.1: -------------------------------------------------------------------------------- 1 | .TH BITCOIN-UTIL "1" 2 | .SH NAME 3 | bitcoin-util \- manual page for bitcoin-util 4 | 5 | This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release. 6 | -------------------------------------------------------------------------------- /doc/man/bitcoin-wallet.1: -------------------------------------------------------------------------------- 1 | .TH BITCOIN-WALLET "1" 2 | .SH NAME 3 | bitcoin-wallet \- manual page for bitcoin-wallet 4 | 5 | This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release. 6 | -------------------------------------------------------------------------------- /doc/man/bitcoind.1: -------------------------------------------------------------------------------- 1 | .TH BITCOIND "1" 2 | .SH NAME 3 | bitcoind \- manual page for bitcoind 4 | 5 | This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release. 6 | -------------------------------------------------------------------------------- /doc/policy/README.md: -------------------------------------------------------------------------------- 1 | # Transaction Relay Policy 2 | 3 | **Policy** (Mempool or Transaction Relay Policy) is the node's set of validation rules, in addition 4 | to consensus, enforced for unconfirmed transactions before submitting them to the mempool. These 5 | rules are local to the node and configurable (e.g. `-minrelaytxfee`, `-limitancestorsize`, 6 | `-incrementalrelayfee`). Policy may include restrictions on the transaction itself, the transaction 7 | in relation to the current chain tip, and the transaction in relation to the node's mempool 8 | contents. Policy is *not* applied to transactions in blocks. 9 | 10 | This documentation is not an exhaustive list of all policy rules. 11 | 12 | - [Mempool Limits](mempool-limits.md) 13 | - [Mempool Replacements](mempool-replacements.md) 14 | - [Packages](packages.md) 15 | 16 | -------------------------------------------------------------------------------- /doc/release-notes-19762.md: -------------------------------------------------------------------------------- 1 | JSON-RPC 2 | --- 3 | 4 | All JSON-RPC methods accept a new [named 5 | parameter](JSON-RPC-interface.md#parameter-passing) called `args` that can 6 | contain positional parameter values. This is a convenience to allow some 7 | parameter values to be passed by name without having to name every value. The 8 | python test framework and `bitcoin-cli` tool both take advantage of this, so 9 | for example: 10 | 11 | ```sh 12 | bitcoin-cli -named createwallet wallet_name=mywallet load_on_startup=1 13 | ``` 14 | 15 | Can now be shortened to: 16 | 17 | ```sh 18 | bitcoin-cli -named createwallet mywallet load_on_startup=1 19 | ``` 20 | -------------------------------------------------------------------------------- /doc/release-notes-22087.md: -------------------------------------------------------------------------------- 1 | Updated settings 2 | ---------------- 3 | 4 | - Ports specified in `-port` and `-rpcport` options are now validated at startup. Values that previously worked and were considered valid can now result in errors. (#22087) 5 | -------------------------------------------------------------------------------- /doc/release-notes-25412.md: -------------------------------------------------------------------------------- 1 | New REST endpoint 2 | ----------------- 3 | 4 | - A new `/rest/deploymentinfo` endpoint has been added for fetching various 5 | state info regarding deployments of consensus changes. (#25412) 6 | -------------------------------------------------------------------------------- /doc/release-notes-25730.md: -------------------------------------------------------------------------------- 1 | RPC Wallet 2 | ---------- 3 | 4 | - RPC `listunspent` now has a new argument `include_immature_coinbase` 5 | to include coinbase UTXOs that don't meet the minimum spendability 6 | depth requirement (which before were silently skipped). (#25730) -------------------------------------------------------------------------------- /doc/release-notes-25934.md: -------------------------------------------------------------------------------- 1 | Low-level changes 2 | ================= 3 | 4 | RPC 5 | --- 6 | 7 | - RPC `listsinceblock` now accepts an optional `label` argument 8 | to fetch incoming transactions having the specified label. (#25934) -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.19.0.md: -------------------------------------------------------------------------------- 1 | 0.19.0 note 2 | ----------- 3 | 4 | Due to a last-minute issue (#17449), 0.19.0, although it was tagged, was never released. 5 | 6 | See the release notes for 0.19.0.1 instead. 7 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.3.14.md: -------------------------------------------------------------------------------- 1 | Version 0.3.14 is now available 2 | http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.14/ 3 | 4 | Changes: 5 | * Key pool feature for safer wallet backup 6 | Gavin Andresen: 7 | * TEST network mode with switch -testnet 8 | * Option to use SSL for JSON-RPC connections on unix/osx 9 | * validateaddress RPC command 10 | eurekafag: 11 | * Russian translation 12 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.3.15.md: -------------------------------------------------------------------------------- 1 | * paytxfee switch is now per KB, so it adds the correct fee for large transactions 2 | * sending avoids using coins with less than 6 confirmations if it can 3 | * BitcoinMiner processes transactions in priority order based on age of dependencies 4 | * make sure generation doesn't start before block 74000 downloaded 5 | * bugfixes by Dean Gores 6 | * testnet, keypoololdest and paytxfee added to getinfo 7 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.3.16.md: -------------------------------------------------------------------------------- 1 | Never released. 2 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.3.17.md: -------------------------------------------------------------------------------- 1 | Version 0.3.17 is now available. 2 | 3 | Changes: 4 | * new getwork, thanks m0mchil 5 | * added transaction fee setting in UI options menu 6 | * free transaction limits 7 | * sendtoaddress returns transaction id instead of "sent" 8 | * getaccountaddress 9 | 10 | The UI transaction fee setting was easy since it was still there from 0.1.5 and all I had to do was re-enable it. 11 | 12 | The accounts-based commands: move, sendfrom and getbalance will be in the next release. We still have some more changes to make first. 13 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.3.18.md: -------------------------------------------------------------------------------- 1 | Changes: 2 | * Fixed a wallet.dat compatibility problem if you downgraded from 0.3.17 and then upgraded again 3 | * IsStandard() check to only include known transaction types in blocks 4 | * Jgarzik's optimisation to speed up the initial block download a little 5 | 6 | The main addition in this release is the Accounts-Based JSON-RPC commands that Gavin's been working on (more details at http://www.bitcoin.org/smf/index.php?topic=1886.0). 7 | * getaccountaddress 8 | * sendfrom 9 | * move 10 | * getbalance 11 | * listtransactions 12 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.3.20.1.md: -------------------------------------------------------------------------------- 1 | Never released or release notes were lost. 2 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.3.20.2.md: -------------------------------------------------------------------------------- 1 | The maxsendbuffer bug (0.3.20.1 clients not being able to download the block chain from other 0.3.20.1 clients) was only going to get 2 | worse as people upgraded, so I cherry-picked the bug fix and created a minor release yesterday. 3 | 4 | The Amazon Machine Images I used to do the builds are available: 5 | 6 | ami-38a05251 Bitcoin-v0.3.20.2 Mingw (Windows; Administrator password 'bitcoin development') 7 | ami-30a05259 Bitcoin_0.3.20.2 Linux32 8 | ami-8abc4ee3 Bitcoin_0.3.20.2 Linux64 9 | 10 | (mac build will be done soon) 11 | 12 | If you have already downloaded version 0.3.20.1, please either add this to your bitcoin.conf file: 13 | 14 | maxsendbuffer=10000 15 | maxreceivebuffer=10000 16 | 17 | ... or download the new version. 18 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.3.23.md: -------------------------------------------------------------------------------- 1 | Win32, Linux, MacOSX and source releases for bitcoin v0.3.23 have been uploaded to 2 | https://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.23/ 3 | 4 | This is another quick bugfix release, trying to deal with the influx of new bitcoin users. 5 | 6 | Main items of note: 7 | 8 | * P2P connect-to-node logic changed to reduce timeout a bit. The network saw a huge influx of new users, who do not permit incoming connections. This change is a short-term hack, to more quickly hunt for useful P2P connections. Better "leaf node" logic is in the works, but this should let us limp along until then. One may use -upnp to properly forward ports, and help the network. 9 | * Transaction fee reduced to 0.0005 for new transactions 10 | * Client will relay transactions with fees as low as 0.0001 BTC 11 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.4.2.md: -------------------------------------------------------------------------------- 1 | Never released or release notes were lost. 2 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.4.5.md: -------------------------------------------------------------------------------- 1 | Never released or release notes were lost. 2 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.6.1.md: -------------------------------------------------------------------------------- 1 | Never released 2 | 3 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-0.8.3.md: -------------------------------------------------------------------------------- 1 | Bitcoin-Qt version 0.8.3 is now available from: 2 | http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.3/ 3 | 4 | This is a maintenance release to fix a denial-of-service attack that 5 | can cause nodes to crash. 6 | 7 | Please report bugs using the issue tracker at github: 8 | https://github.com/bitcoin/bitcoin/issues 9 | 10 | 0.8.3 Release notes 11 | 12 | Truncate over-size messages to prevent a memory exhaustion attack. 13 | 14 | Fix a regression that causes excessive re-writing of the 'peers.dat' file. 15 | 16 | 17 | Thanks to Peter Todd for responsibly disclosing the vulnerability 18 | ( CVE-2013-4627 ) and creating a fix. 19 | -------------------------------------------------------------------------------- /doc/release-notes/release-notes-24.0.md: -------------------------------------------------------------------------------- 1 | Due to last-minute issues (#26616), 24.0, although tagged, was never fully 2 | announced or released. 3 | 4 | See the release notes for 24.0.1 instead. 5 | -------------------------------------------------------------------------------- /libbitcoinconsensus.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: @PACKAGE_NAME@ consensus library 7 | Description: Library for the Bitcoin consensus protocol. 8 | Version: @PACKAGE_VERSION@ 9 | Libs: -L${libdir} -lbitcoinconsensus 10 | Cflags: -I${includedir} 11 | -------------------------------------------------------------------------------- /share/examples/bitcoin.conf: -------------------------------------------------------------------------------- 1 | # This is a placeholder file. Please follow the instructions in `contrib/devtools/README.md` to generate a bitcoin.conf file. 2 | -------------------------------------------------------------------------------- /share/pixmaps/bitcoin.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/share/pixmaps/bitcoin.ico -------------------------------------------------------------------------------- /share/pixmaps/bitcoin128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/share/pixmaps/bitcoin128.png -------------------------------------------------------------------------------- /share/pixmaps/bitcoin16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/share/pixmaps/bitcoin16.png -------------------------------------------------------------------------------- /share/pixmaps/bitcoin256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/share/pixmaps/bitcoin256.png -------------------------------------------------------------------------------- /share/pixmaps/bitcoin32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/share/pixmaps/bitcoin32.png -------------------------------------------------------------------------------- /share/pixmaps/bitcoin64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/share/pixmaps/bitcoin64.png -------------------------------------------------------------------------------- /share/pixmaps/nsis-header.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/share/pixmaps/nsis-header.bmp -------------------------------------------------------------------------------- /share/pixmaps/nsis-wizard.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/share/pixmaps/nsis-wizard.bmp -------------------------------------------------------------------------------- /share/rpcauth/README.md: -------------------------------------------------------------------------------- 1 | RPC Tools 2 | --------------------- 3 | 4 | ### [RPCAuth](/share/rpcauth) ### 5 | 6 | ``` 7 | usage: rpcauth.py [-h] username [password] 8 | 9 | Create login credentials for a JSON-RPC user 10 | 11 | positional arguments: 12 | username the username for authentication 13 | password leave empty to generate a random password or specify "-" to 14 | prompt for password 15 | 16 | optional arguments: 17 | -h, --help show this help message and exit 18 | ``` 19 | -------------------------------------------------------------------------------- /src/.bear-tidy-config: -------------------------------------------------------------------------------- 1 | { 2 | "output": { 3 | "content": { 4 | "include_only_existing_source": true, 5 | "paths_to_include": [], 6 | "paths_to_exclude": [ 7 | "src/leveldb" 8 | ] 9 | }, 10 | "format": { 11 | "command_as_array": true, 12 | "drop_output_field": false 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/.clang-tidy: -------------------------------------------------------------------------------- 1 | Checks: ' 2 | -*, 3 | bugprone-argument-comment, 4 | bugprone-use-after-move, 5 | misc-unused-using-decls, 6 | modernize-use-default-member-init, 7 | modernize-use-nullptr, 8 | performance-for-range-copy, 9 | performance-move-const-arg, 10 | performance-unnecessary-copy-initialization, 11 | readability-redundant-declaration, 12 | readability-redundant-string-init, 13 | ' 14 | WarningsAsErrors: ' 15 | bugprone-argument-comment, 16 | bugprone-use-after-move, 17 | misc-unused-using-decls, 18 | modernize-use-default-member-init, 19 | modernize-use-nullptr, 20 | performance-for-range-copy, 21 | performance-move-const-arg, 22 | performance-unnecessary-copy-initialization, 23 | readability-redundant-declaration, 24 | readability-redundant-string-init, 25 | ' 26 | CheckOptions: 27 | - key: performance-move-const-arg.CheckTriviallyCopyableMove 28 | value: false 29 | -------------------------------------------------------------------------------- /src/Makefile.test_fuzz.include: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013-2020 The Bitcoin Core developers 2 | # Distributed under the MIT software license, see the accompanying 3 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | LIBTEST_FUZZ=libtest_fuzz.a 6 | 7 | EXTRA_LIBRARIES += \ 8 | $(LIBTEST_FUZZ) 9 | 10 | TEST_FUZZ_H = \ 11 | test/fuzz/fuzz.h \ 12 | test/fuzz/FuzzedDataProvider.h \ 13 | test/fuzz/util.h \ 14 | test/fuzz/util/mempool.h \ 15 | test/fuzz/util/net.h 16 | 17 | libtest_fuzz_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BOOST_CPPFLAGS) 18 | libtest_fuzz_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) 19 | libtest_fuzz_a_SOURCES = \ 20 | test/fuzz/fuzz.cpp \ 21 | test/fuzz/util.cpp \ 22 | test/fuzz/util/mempool.cpp \ 23 | test/fuzz/util/net.cpp \ 24 | $(TEST_FUZZ_H) 25 | -------------------------------------------------------------------------------- /src/Makefile.univalue.include: -------------------------------------------------------------------------------- 1 | include univalue/sources.mk 2 | 3 | LIBUNIVALUE = libunivalue.la 4 | noinst_LTLIBRARIES += $(LIBUNIVALUE) 5 | libunivalue_la_SOURCES = $(UNIVALUE_LIB_SOURCES_INT) $(UNIVALUE_DIST_HEADERS_INT) $(UNIVALUE_LIB_HEADERS_INT) $(UNIVALUE_TEST_FILES_INT) 6 | libunivalue_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) 7 | -------------------------------------------------------------------------------- /src/attributes.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-2010 Satoshi Nakamoto 2 | // Copyright (c) 2009-2020 The Bitcoin Core developers 3 | // Distributed under the MIT software license, see the accompanying 4 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 5 | 6 | #ifndef BITCOIN_ATTRIBUTES_H 7 | #define BITCOIN_ATTRIBUTES_H 8 | 9 | #if defined(__clang__) 10 | # if __has_attribute(lifetimebound) 11 | # define LIFETIMEBOUND [[clang::lifetimebound]] 12 | # else 13 | # define LIFETIMEBOUND 14 | # endif 15 | #else 16 | # define LIFETIMEBOUND 17 | #endif 18 | 19 | #endif // BITCOIN_ATTRIBUTES_H 20 | -------------------------------------------------------------------------------- /src/bench/.gitignore: -------------------------------------------------------------------------------- 1 | bench_bitcoin 2 | -------------------------------------------------------------------------------- /src/bench/data.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019-2021 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #include 6 | 7 | namespace benchmark { 8 | namespace data { 9 | 10 | #include 11 | const std::vector block413567{std::begin(block413567_raw), std::end(block413567_raw)}; 12 | 13 | } // namespace data 14 | } // namespace benchmark 15 | -------------------------------------------------------------------------------- /src/bench/data.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_BENCH_DATA_H 6 | #define BITCOIN_BENCH_DATA_H 7 | 8 | #include 9 | #include 10 | 11 | namespace benchmark { 12 | namespace data { 13 | 14 | extern const std::vector block413567; 15 | 16 | } // namespace data 17 | } // namespace benchmark 18 | 19 | #endif // BITCOIN_BENCH_DATA_H 20 | -------------------------------------------------------------------------------- /src/bench/data/block413567.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/src/bench/data/block413567.raw -------------------------------------------------------------------------------- /src/bench/examples.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015-2020 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #include 6 | 7 | // Extremely fast-running benchmark: 8 | #include 9 | 10 | volatile double sum = 0.0; // volatile, global so not optimized away 11 | 12 | static void Trig(benchmark::Bench& bench) 13 | { 14 | double d = 0.01; 15 | bench.run([&] { 16 | sum = sum + sin(d); 17 | d += 0.000001; 18 | }); 19 | } 20 | 21 | BENCHMARK(Trig, benchmark::PriorityLevel::HIGH); 22 | -------------------------------------------------------------------------------- /src/bench/nanobench.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019-2020 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #define ANKERL_NANOBENCH_IMPLEMENT 6 | #include 7 | -------------------------------------------------------------------------------- /src/bench/strencodings.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | static void HexStrBench(benchmark::Bench& bench) 10 | { 11 | auto const& data = benchmark::data::block413567; 12 | bench.batch(data.size()).unit("byte").run([&] { 13 | auto hex = HexStr(data); 14 | ankerl::nanobench::doNotOptimizeAway(hex); 15 | }); 16 | } 17 | 18 | BENCHMARK(HexStrBench, benchmark::PriorityLevel::HIGH); 19 | -------------------------------------------------------------------------------- /src/common/run_command.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_COMMON_RUN_COMMAND_H 6 | #define BITCOIN_COMMON_RUN_COMMAND_H 7 | 8 | #include 9 | 10 | class UniValue; 11 | 12 | /** 13 | * Execute a command which returns JSON, and parse the result. 14 | * 15 | * @param str_command The command to execute, including any arguments 16 | * @param str_std_in string to pass to stdin 17 | * @return parsed JSON 18 | */ 19 | UniValue RunCommandParseJSON(const std::string& str_command, const std::string& str_std_in=""); 20 | 21 | #endif // BITCOIN_COMMON_RUN_COMMAND_H 22 | -------------------------------------------------------------------------------- /src/common/url.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015-2019 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #include 6 | 7 | #include 8 | 9 | #include 10 | #include 11 | 12 | std::string urlDecode(const std::string &urlEncoded) { 13 | std::string res; 14 | if (!urlEncoded.empty()) { 15 | char *decoded = evhttp_uridecode(urlEncoded.c_str(), false, nullptr); 16 | if (decoded) { 17 | res = std::string(decoded); 18 | free(decoded); 19 | } 20 | } 21 | return res; 22 | } 23 | -------------------------------------------------------------------------------- /src/common/url.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015-2020 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_COMMON_URL_H 6 | #define BITCOIN_COMMON_URL_H 7 | 8 | #include 9 | 10 | using UrlDecodeFn = std::string(const std::string& url_encoded); 11 | UrlDecodeFn urlDecode; 12 | extern UrlDecodeFn* const URL_DECODE; 13 | 14 | #endif // BITCOIN_COMMON_URL_H 15 | -------------------------------------------------------------------------------- /src/compat/stdin.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_COMPAT_STDIN_H 6 | #define BITCOIN_COMPAT_STDIN_H 7 | 8 | struct NoechoInst { 9 | NoechoInst(); 10 | ~NoechoInst(); 11 | }; 12 | 13 | #define NO_STDIN_ECHO() NoechoInst _no_echo 14 | 15 | bool StdinTerminal(); 16 | bool StdinReady(); 17 | 18 | #endif // BITCOIN_COMPAT_STDIN_H 19 | -------------------------------------------------------------------------------- /src/config/.empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/src/config/.empty -------------------------------------------------------------------------------- /src/consensus/tx_check.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017-2019 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_CONSENSUS_TX_CHECK_H 6 | #define BITCOIN_CONSENSUS_TX_CHECK_H 7 | 8 | /** 9 | * Context-independent transaction checking code that can be called outside the 10 | * bitcoin server and doesn't depend on chain or mempool state. Transaction 11 | * verification code that does call server functions or depend on server state 12 | * belongs in tx_verify.h/cpp instead. 13 | */ 14 | 15 | class CTransaction; 16 | class TxValidationState; 17 | 18 | bool CheckTransaction(const CTransaction& tx, TxValidationState& state); 19 | 20 | #endif // BITCOIN_CONSENSUS_TX_CHECK_H 21 | -------------------------------------------------------------------------------- /src/crc32c/.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | BasedOnStyle: Google 4 | -------------------------------------------------------------------------------- /src/crc32c/.clang_complete: -------------------------------------------------------------------------------- 1 | -Ibuild/include/ 2 | -Ibuild/third_party/glog/ 3 | -Iinclude/ 4 | -Ithird_party/benchmark/include/ 5 | -Ithird_party/googletest/googletest/include/ 6 | -Ithird_party/googletest/googlemock/include/ 7 | -Ithird_party/glog/src/ 8 | -std=c++11 9 | -------------------------------------------------------------------------------- /src/crc32c/.gitignore: -------------------------------------------------------------------------------- 1 | # Editors. 2 | *.sw* 3 | .DS_Store 4 | /.vscode 5 | 6 | # Build directory. 7 | build/ 8 | out/ 9 | -------------------------------------------------------------------------------- /src/crc32c/.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mononaut/bitcoin/3eaf7be6ade22c99f3c0000122e49b94de868d74/src/crc32c/.gitmodules -------------------------------------------------------------------------------- /src/crc32c/AUTHORS: -------------------------------------------------------------------------------- 1 | # This is the list of CRC32C authors for copyright purposes. 2 | # 3 | # This does not necessarily list everyone who has contributed code, since in 4 | # some cases, their employer may be the copyright holder. To see the full list 5 | # of contributors, see the revision history in source control. 6 | Google Inc. 7 | 8 | Fangming Fang 9 | Vadim Skipin 10 | Rodrigo Tobar 11 | Harry Mallon 12 | -------------------------------------------------------------------------------- /src/crc32c/Crc32cConfig.cmake.in: -------------------------------------------------------------------------------- 1 | # Copyright 2017 The CRC32C Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. See the AUTHORS file for names of contributors. 4 | 5 | @PACKAGE_INIT@ 6 | 7 | include("${CMAKE_CURRENT_LIST_DIR}/Crc32cTargets.cmake") 8 | 9 | check_required_components(Crc32c) 10 | -------------------------------------------------------------------------------- /src/crc32c/src/crc32c_arm64.h: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The CRC32C Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. See the AUTHORS file for names of contributors. 4 | 5 | // ARM-specific code 6 | 7 | #ifndef CRC32C_CRC32C_ARM_H_ 8 | #define CRC32C_CRC32C_ARM_H_ 9 | 10 | #include 11 | #include 12 | 13 | #ifdef CRC32C_HAVE_CONFIG_H 14 | #include "crc32c/crc32c_config.h" 15 | #endif 16 | 17 | #if HAVE_ARM64_CRC32C 18 | 19 | namespace crc32c { 20 | 21 | uint32_t ExtendArm64(uint32_t crc, const uint8_t* data, size_t count); 22 | 23 | } // namespace crc32c 24 | 25 | #endif // HAVE_ARM64_CRC32C 26 | 27 | #endif // CRC32C_CRC32C_ARM_H_ 28 | -------------------------------------------------------------------------------- /src/crc32c/src/crc32c_arm64_unittest.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The CRC32C Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. See the AUTHORS file for names of contributors. 4 | 5 | #include "gtest/gtest.h" 6 | 7 | #include "./crc32c_arm64.h" 8 | #include "./crc32c_extend_unittests.h" 9 | 10 | namespace crc32c { 11 | 12 | #if HAVE_ARM64_CRC32C 13 | 14 | struct Arm64TestTraits { 15 | static uint32_t Extend(uint32_t crc, const uint8_t* data, size_t count) { 16 | return ExtendArm64(crc, data, count); 17 | } 18 | }; 19 | 20 | INSTANTIATE_TYPED_TEST_SUITE_P(Arm64, ExtendTest, Arm64TestTraits); 21 | 22 | #endif // HAVE_ARM64_CRC32C 23 | 24 | } // namespace crc32c 25 | -------------------------------------------------------------------------------- /src/crc32c/src/crc32c_internal.h: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The CRC32C Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. See the AUTHORS file for names of contributors. 4 | 5 | #ifndef CRC32C_CRC32C_INTERNAL_H_ 6 | #define CRC32C_CRC32C_INTERNAL_H_ 7 | 8 | // Internal functions that may change between releases. 9 | 10 | #include 11 | #include 12 | 13 | namespace crc32c { 14 | 15 | // Un-accelerated implementation that works on all CPUs. 16 | uint32_t ExtendPortable(uint32_t crc, const uint8_t* data, size_t count); 17 | 18 | // CRCs are pre- and post- conditioned by xoring with all ones. 19 | static constexpr const uint32_t kCRC32Xor = static_cast(0xffffffffU); 20 | 21 | } // namespace crc32c 22 | 23 | #endif // CRC32C_CRC32C_INTERNAL_H_ 24 | -------------------------------------------------------------------------------- /src/crc32c/src/crc32c_portable_unittest.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The CRC32C Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. See the AUTHORS file for names of contributors. 4 | 5 | #include "gtest/gtest.h" 6 | 7 | #include "./crc32c_extend_unittests.h" 8 | #include "./crc32c_internal.h" 9 | 10 | namespace crc32c { 11 | 12 | struct PortableTestTraits { 13 | static uint32_t Extend(uint32_t crc, const uint8_t* data, size_t count) { 14 | return ExtendPortable(crc, data, count); 15 | } 16 | }; 17 | 18 | INSTANTIATE_TYPED_TEST_SUITE_P(Portable, ExtendTest, PortableTestTraits); 19 | 20 | } // namespace crc32c 21 | -------------------------------------------------------------------------------- /src/crc32c/src/crc32c_prefetch_unittest.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The CRC32C Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. See the AUTHORS file for names of contributors. 4 | 5 | #include "./crc32c_prefetch.h" 6 | 7 | // There is no easy way to test cache prefetching. We can only test that the 8 | // crc32c_prefetch.h header compiles on its own, so it doesn't have any unstated 9 | // dependencies. 10 | -------------------------------------------------------------------------------- /src/crc32c/src/crc32c_sse42_unittest.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The CRC32C Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. See the AUTHORS file for names of contributors. 4 | 5 | #include "gtest/gtest.h" 6 | 7 | #include "./crc32c_extend_unittests.h" 8 | #include "./crc32c_sse42.h" 9 | 10 | namespace crc32c { 11 | 12 | #if HAVE_SSE42 && (defined(_M_X64) || defined(__x86_64__)) 13 | 14 | struct Sse42TestTraits { 15 | static uint32_t Extend(uint32_t crc, const uint8_t* data, size_t count) { 16 | return ExtendSse42(crc, data, count); 17 | } 18 | }; 19 | 20 | INSTANTIATE_TYPED_TEST_SUITE_P(Sse42, ExtendTest, Sse42TestTraits); 21 | 22 | #endif // HAVE_SSE42 && (defined(_M_X64) || defined(__x86_64__)) 23 | 24 | } // namespace crc32c 25 | -------------------------------------------------------------------------------- /src/crc32c/src/crc32c_test_main.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The CRC32C Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifdef CRC32C_HAVE_CONFIG_H 6 | #include "crc32c/crc32c_config.h" 7 | #endif 8 | 9 | #include "gtest/gtest.h" 10 | 11 | #if CRC32C_TESTS_BUILT_WITH_GLOG 12 | #include "glog/logging.h" 13 | #endif // CRC32C_TESTS_BUILT_WITH_GLOG 14 | 15 | int main(int argc, char** argv) { 16 | #if CRC32C_TESTS_BUILT_WITH_GLOG 17 | google::InitGoogleLogging(argv[0]); 18 | google::InstallFailureSignalHandler(); 19 | #endif // CRC32C_TESTS_BUILT_WITH_GLOG 20 | testing::InitGoogleTest(&argc, argv); 21 | return RUN_ALL_TESTS(); 22 | } 23 | -------------------------------------------------------------------------------- /src/crypto/poly1305.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_CRYPTO_POLY1305_H 6 | #define BITCOIN_CRYPTO_POLY1305_H 7 | 8 | #include 9 | #include 10 | 11 | #define POLY1305_KEYLEN 32 12 | #define POLY1305_TAGLEN 16 13 | 14 | void poly1305_auth(unsigned char out[POLY1305_TAGLEN], const unsigned char *m, size_t inlen, 15 | const unsigned char key[POLY1305_KEYLEN]); 16 | 17 | #endif // BITCOIN_CRYPTO_POLY1305_H 18 | -------------------------------------------------------------------------------- /src/crypto/ripemd160.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2016 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_CRYPTO_RIPEMD160_H 6 | #define BITCOIN_CRYPTO_RIPEMD160_H 7 | 8 | #include 9 | #include 10 | 11 | /** A hasher class for RIPEMD-160. */ 12 | class CRIPEMD160 13 | { 14 | private: 15 | uint32_t s[5]; 16 | unsigned char buf[64]; 17 | uint64_t bytes; 18 | 19 | public: 20 | static const size_t OUTPUT_SIZE = 20; 21 | 22 | CRIPEMD160(); 23 | CRIPEMD160& Write(const unsigned char* data, size_t len); 24 | void Finalize(unsigned char hash[OUTPUT_SIZE]); 25 | CRIPEMD160& Reset(); 26 | }; 27 | 28 | #endif // BITCOIN_CRYPTO_RIPEMD160_H 29 | -------------------------------------------------------------------------------- /src/crypto/sha1.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2016 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_CRYPTO_SHA1_H 6 | #define BITCOIN_CRYPTO_SHA1_H 7 | 8 | #include 9 | #include 10 | 11 | /** A hasher class for SHA1. */ 12 | class CSHA1 13 | { 14 | private: 15 | uint32_t s[5]; 16 | unsigned char buf[64]; 17 | uint64_t bytes; 18 | 19 | public: 20 | static const size_t OUTPUT_SIZE = 20; 21 | 22 | CSHA1(); 23 | CSHA1& Write(const unsigned char* data, size_t len); 24 | void Finalize(unsigned char hash[OUTPUT_SIZE]); 25 | CSHA1& Reset(); 26 | }; 27 | 28 | #endif // BITCOIN_CRYPTO_SHA1_H 29 | -------------------------------------------------------------------------------- /src/crypto/sha512.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2014-2019 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_CRYPTO_SHA512_H 6 | #define BITCOIN_CRYPTO_SHA512_H 7 | 8 | #include 9 | #include 10 | 11 | /** A hasher class for SHA-512. */ 12 | class CSHA512 13 | { 14 | private: 15 | uint64_t s[8]; 16 | unsigned char buf[128]; 17 | uint64_t bytes; 18 | 19 | public: 20 | static constexpr size_t OUTPUT_SIZE = 64; 21 | 22 | CSHA512(); 23 | CSHA512& Write(const unsigned char* data, size_t len); 24 | void Finalize(unsigned char hash[OUTPUT_SIZE]); 25 | CSHA512& Reset(); 26 | uint64_t Size() const { return bytes; } 27 | }; 28 | 29 | #endif // BITCOIN_CRYPTO_SHA512_H 30 | -------------------------------------------------------------------------------- /src/init/bitcoin-wallet.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #include 6 | 7 | #include 8 | 9 | namespace interfaces { 10 | std::unique_ptr MakeWalletInit(int argc, char* argv[], int& exit_status) 11 | { 12 | return std::make_unique(); 13 | } 14 | } // namespace interfaces 15 | -------------------------------------------------------------------------------- /src/init/common.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | //! @file 6 | //! @brief Common init functions shared by bitcoin-node, bitcoin-wallet, etc. 7 | 8 | #ifndef BITCOIN_INIT_COMMON_H 9 | #define BITCOIN_INIT_COMMON_H 10 | 11 | class ArgsManager; 12 | 13 | namespace init { 14 | void AddLoggingArgs(ArgsManager& args); 15 | void SetLoggingOptions(const ArgsManager& args); 16 | void SetLoggingCategories(const ArgsManager& args); 17 | void SetLoggingLevel(const ArgsManager& args); 18 | bool StartLogging(const ArgsManager& args); 19 | void LogPackageVersion(); 20 | } // namespace init 21 | 22 | #endif // BITCOIN_INIT_COMMON_H 23 | -------------------------------------------------------------------------------- /src/interfaces/echo.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_INTERFACES_ECHO_H 6 | #define BITCOIN_INTERFACES_ECHO_H 7 | 8 | #include 9 | #include 10 | 11 | namespace interfaces { 12 | //! Simple string echoing interface for testing. 13 | class Echo 14 | { 15 | public: 16 | virtual ~Echo() {} 17 | 18 | //! Echo provided string. 19 | virtual std::string echo(const std::string& echo) = 0; 20 | }; 21 | 22 | //! Return implementation of Echo interface. 23 | std::unique_ptr MakeEcho(); 24 | } // namespace interfaces 25 | 26 | #endif // BITCOIN_INTERFACES_ECHO_H 27 | -------------------------------------------------------------------------------- /src/ipc/capnp/.gitignore: -------------------------------------------------------------------------------- 1 | # capnp generated files 2 | *.capnp.* 3 | -------------------------------------------------------------------------------- /src/ipc/capnp/echo.capnp: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The Bitcoin Core developers 2 | # Distributed under the MIT software license, see the accompanying 3 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | @0x888b4f7f51e691f7; 6 | 7 | using Cxx = import "/capnp/c++.capnp"; 8 | $Cxx.namespace("ipc::capnp::messages"); 9 | 10 | using Proxy = import "/mp/proxy.capnp"; 11 | $Proxy.include("interfaces/echo.h"); 12 | $Proxy.include("ipc/capnp/echo.capnp.h"); 13 | 14 | interface Echo $Proxy.wrap("interfaces::Echo") { 15 | destroy @0 (context :Proxy.Context) -> (); 16 | echo @1 (context :Proxy.Context, echo: Text) -> (result :Text); 17 | } 18 | -------------------------------------------------------------------------------- /src/ipc/capnp/init-types.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_IPC_CAPNP_INIT_TYPES_H 6 | #define BITCOIN_IPC_CAPNP_INIT_TYPES_H 7 | 8 | #include 9 | 10 | #endif // BITCOIN_IPC_CAPNP_INIT_TYPES_H 11 | -------------------------------------------------------------------------------- /src/ipc/capnp/init.capnp: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The Bitcoin Core developers 2 | # Distributed under the MIT software license, see the accompanying 3 | # file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | @0xf2c5cfa319406aa6; 6 | 7 | using Cxx = import "/capnp/c++.capnp"; 8 | $Cxx.namespace("ipc::capnp::messages"); 9 | 10 | using Proxy = import "/mp/proxy.capnp"; 11 | $Proxy.include("interfaces/echo.h"); 12 | $Proxy.include("interfaces/init.h"); 13 | $Proxy.includeTypes("ipc/capnp/init-types.h"); 14 | 15 | using Echo = import "echo.capnp"; 16 | 17 | interface Init $Proxy.wrap("interfaces::Init") { 18 | construct @0 (threadMap: Proxy.ThreadMap) -> (threadMap :Proxy.ThreadMap); 19 | makeEcho @1 (context :Proxy.Context) -> (result :Echo.Echo); 20 | } 21 | -------------------------------------------------------------------------------- /src/ipc/capnp/protocol.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_IPC_CAPNP_PROTOCOL_H 6 | #define BITCOIN_IPC_CAPNP_PROTOCOL_H 7 | 8 | #include 9 | 10 | namespace ipc { 11 | class Protocol; 12 | namespace capnp { 13 | std::unique_ptr MakeCapnpProtocol(); 14 | } // namespace capnp 15 | } // namespace ipc 16 | 17 | #endif // BITCOIN_IPC_CAPNP_PROTOCOL_H 18 | -------------------------------------------------------------------------------- /src/ipc/context.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_IPC_CONTEXT_H 6 | #define BITCOIN_IPC_CONTEXT_H 7 | 8 | namespace ipc { 9 | //! Context struct used to give IPC protocol implementations or implementation 10 | //! hooks access to application state, in case they need to run extra code that 11 | //! isn't needed within a single process, like code copying global state from an 12 | //! existing process to a new process when it's initialized, or code dealing 13 | //! with shared objects that are created or destroyed remotely. 14 | struct Context 15 | { 16 | }; 17 | } // namespace ipc 18 | 19 | #endif // BITCOIN_IPC_CONTEXT_H 20 | -------------------------------------------------------------------------------- /src/ipc/exception.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_IPC_EXCEPTION_H 6 | #define BITCOIN_IPC_EXCEPTION_H 7 | 8 | #include 9 | 10 | namespace ipc { 11 | //! Exception class thrown when a call to remote method fails due to an IPC 12 | //! error, like a socket getting disconnected. 13 | class Exception : public std::runtime_error 14 | { 15 | public: 16 | using std::runtime_error::runtime_error; 17 | }; 18 | } // namespace ipc 19 | 20 | #endif // BITCOIN_IPC_EXCEPTION_H 21 | -------------------------------------------------------------------------------- /src/kernel/bitcoinkernel.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #include 6 | #include 7 | 8 | // Define G_TRANSLATION_FUN symbol in libbitcoinkernel library so users of the 9 | // library aren't required to export this symbol 10 | extern const std::function G_TRANSLATION_FUN = nullptr; 11 | -------------------------------------------------------------------------------- /src/kernel/chain.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_KERNEL_CHAIN_H 6 | #define BITCOIN_KERNEL_CHAIN_H 7 | 8 | class CBlock; 9 | class CBlockIndex; 10 | namespace interfaces { 11 | struct BlockInfo; 12 | } // namespace interfaces 13 | 14 | namespace kernel { 15 | //! Return data from block index. 16 | interfaces::BlockInfo MakeBlockInfo(const CBlockIndex* block_index, const CBlock* data = nullptr); 17 | } // namespace kernel 18 | 19 | #endif // BITCOIN_KERNEL_CHAIN_H 20 | -------------------------------------------------------------------------------- /src/kernel/checks.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_KERNEL_CHECKS_H 6 | #define BITCOIN_KERNEL_CHECKS_H 7 | 8 | #include 9 | 10 | struct bilingual_str; 11 | 12 | namespace kernel { 13 | 14 | struct Context; 15 | 16 | /** 17 | * Ensure a usable environment with all necessary library support. 18 | */ 19 | std::optional SanityChecks(const Context&); 20 | 21 | } 22 | 23 | #endif // BITCOIN_KERNEL_CHECKS_H 24 | -------------------------------------------------------------------------------- /src/kernel/context.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #include 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include 14 | 15 | 16 | namespace kernel { 17 | 18 | Context::Context() 19 | { 20 | std::string sha256_algo = SHA256AutoDetect(); 21 | LogPrintf("Using the '%s' SHA256 implementation\n", sha256_algo); 22 | RandomInit(); 23 | ECC_Start(); 24 | ecc_verify_handle.reset(new ECCVerifyHandle()); 25 | } 26 | 27 | Context::~Context() 28 | { 29 | ecc_verify_handle.reset(); 30 | ECC_Stop(); 31 | } 32 | 33 | } // namespace kernel 34 | -------------------------------------------------------------------------------- /src/kernel/validation_cache_sizes.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 The Bitcoin Core developers 2 | // Distributed under the MIT software license, see the accompanying 3 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 | 5 | #ifndef BITCOIN_KERNEL_VALIDATION_CACHE_SIZES_H 6 | #define BITCOIN_KERNEL_VALIDATION_CACHE_SIZES_H 7 | 8 | #include