├── .appveyor.yml ├── .cirrus.yml ├── .fuzzbuzz.yml ├── .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 ├── .travis.yml ├── .tx └── config ├── CODEOWNERS ├── CONTRIBUTING.md ├── COPYING ├── INSTALL.md ├── Makefile.am ├── README.md ├── SECURITY.md ├── autogen.sh ├── build-aux └── m4 │ ├── ax_boost_base.m4 │ ├── ax_boost_filesystem.m4 │ ├── ax_boost_process.m4 │ ├── ax_boost_system.m4 │ ├── ax_boost_thread.m4 │ ├── ax_boost_unit_test_framework.m4 │ ├── ax_check_compile_flag.m4 │ ├── ax_check_link_flag.m4 │ ├── ax_check_preproc_flag.m4 │ ├── ax_cxx_compile_stdcxx.m4 │ ├── ax_gcc_func_attribute.m4 │ ├── ax_pthread.m4 │ ├── bitcoin_find_bdb48.m4 │ ├── bitcoin_qt.m4 │ ├── bitcoin_subdir_to_include.m4 │ ├── l_atomic.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-wallet │ └── bitcoin-wallet.vcxproj ├── bitcoin.sln ├── bitcoin_config.h ├── bitcoind │ └── bitcoind.vcxproj ├── common.init.vcxproj ├── 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_qt │ └── libbitcoin_qt.vcxproj ├── libbitcoin_server │ └── libbitcoin_server.vcxproj.in ├── 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 ├── 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 ├── testconsensus │ ├── testconsensus.cpp │ └── testconsensus.vcxproj └── vcpkg.json ├── ci ├── README.md ├── lint │ ├── 04_install.sh │ ├── 05_before_script.sh │ └── 06_script.sh ├── retry │ ├── README.md │ └── retry ├── test │ ├── 00_setup_env.sh │ ├── 00_setup_env_arm.sh │ ├── 00_setup_env_i686_centos.sh │ ├── 00_setup_env_mac.sh │ ├── 00_setup_env_mac_host.sh │ ├── 00_setup_env_native_asan.sh │ ├── 00_setup_env_native_fuzz.sh │ ├── 00_setup_env_native_fuzz_with_valgrind.sh │ ├── 00_setup_env_native_msan.sh │ ├── 00_setup_env_native_multiprocess.sh │ ├── 00_setup_env_native_nowallet.sh │ ├── 00_setup_env_native_qt5.sh │ ├── 00_setup_env_native_tsan.sh │ ├── 00_setup_env_native_valgrind.sh │ ├── 00_setup_env_s390x.sh │ ├── 00_setup_env_win64.sh │ ├── 03_before_install.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 └── test_run_all.sh ├── configure.ac ├── contrib ├── README.md ├── bitcoin-cli.bash-completion ├── bitcoin-qt.pro ├── bitcoin-tx.bash-completion ├── bitcoind.bash-completion ├── debian │ └── copyright ├── devtools │ ├── README.md │ ├── circular-dependencies.py │ ├── clang-format-diff.py │ ├── copyright_header.py │ ├── gen-manpages.sh │ ├── security-check.py │ ├── split-debug.sh.in │ ├── symbol-check.py │ ├── test-security-check.py │ ├── test_deterministic_coverage.sh │ └── utxo_snapshot.sh ├── filter-lcov.py ├── gitian-build.py ├── gitian-descriptors │ ├── assign_DISTNAME │ ├── gitian-linux.yml │ ├── gitian-osx-signer.yml │ ├── gitian-osx.yml │ ├── gitian-win-signer.yml │ └── gitian-win.yml ├── gitian-keys │ ├── README.md │ ├── coblee-key.pgp │ ├── davidburkett38-key.pgp │ ├── keys.txt │ ├── losh11-key.pgp │ ├── oharareidryan-key.pgp │ ├── rromanchuk-key.pgp │ ├── theholyroger-key.pgp │ ├── thrasher-key.pgp │ ├── ultragtx-key.pgp │ ├── void-main.pgp │ ├── xinxi-wang-key.pgp │ └── zhiyan-key.pgp ├── guix │ ├── README.md │ ├── guix-build.sh │ ├── libexec │ │ └── build.sh │ └── manifest.scm ├── 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.svg │ ├── custom_dsstore.py │ ├── detached-sig-apply.sh │ ├── detached-sig-create.sh │ ├── extract-osx-sdk.sh │ ├── fancy.plist │ ├── gen-sdk │ └── macdeployqtplus ├── qos │ ├── README.md │ └── tc.sh ├── seeds │ ├── .gitignore │ ├── README.md │ ├── generate-seeds.py │ ├── makeseeds.py │ ├── nodes_main.txt │ ├── nodes_test.txt │ └── suspicious_hosts.txt ├── testgen │ ├── README.md │ ├── base58.py │ └── gen_key_io_test_vectors.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.sh ├── windeploy │ ├── detached-sig-create.sh │ └── win-codesign.cert └── zmq │ └── zmq_sub.py ├── depends ├── .gitignore ├── Makefile ├── README.md ├── builders │ ├── darwin.mk │ ├── default.mk │ └── linux.mk ├── cmake │ └── mingw-w64-x86_64.cmake ├── config.guess ├── config.site.in ├── config.sub ├── description.md ├── funcs.mk ├── hosts │ ├── android.mk │ ├── darwin.mk │ ├── default.mk │ ├── linux.mk │ └── mingw32.mk ├── packages.md ├── packages │ ├── bdb.mk │ ├── boost.mk │ ├── capnp.mk │ ├── expat.mk │ ├── fontconfig.mk │ ├── freetype.mk │ ├── libXau.mk │ ├── libevent.mk │ ├── libfmt.mk │ ├── libmultiprocess.mk │ ├── libxcb.mk │ ├── miniupnpc.mk │ ├── native_biplist.mk │ ├── native_capnp.mk │ ├── native_cctools.mk │ ├── native_clang.mk │ ├── native_ds_store.mk │ ├── native_libdmg-hfsplus.mk │ ├── native_libmultiprocess.mk │ ├── native_libtapi.mk │ ├── native_mac_alias.mk │ ├── openssl.mk │ ├── packages.mk │ ├── qrencode.mk │ ├── qt.mk │ ├── sqlite.mk │ ├── xcb_proto.mk │ ├── xproto.mk │ ├── zeromq.mk │ └── zlib.mk └── patches │ ├── bdb │ └── clang_cxx_11.patch │ ├── boost │ └── unused_var_in_process.patch │ ├── fontconfig │ ├── gperf_header_regen.patch │ └── remove_char_width_usage.patch │ ├── libevent │ └── 0001-fix-windows-getaddrinfo.patch │ ├── miniupnpc │ └── dont_leak_info.patch │ ├── native_libdmg-hfsplus │ └── remove-libcrypto-dependency.patch │ ├── openssl │ └── 0001-Add-OpenSSL-termios-fix-for-musl-libc.patch │ ├── qt │ ├── dont_hardcode_pwd.patch │ ├── drop_lrelease_dependency.patch │ ├── fix_android_jni_static.patch │ ├── fix_android_qmake_conf.patch │ ├── fix_configure_mac.patch │ ├── fix_no_printer.patch │ ├── fix_powerpc_libpng.patch │ ├── fix_qt_pkgconfig.patch │ ├── fix_rcc_determinism.patch │ ├── fix_riscv64_arch.patch │ ├── freetype_back_compat.patch │ ├── mac-qmake.conf │ ├── no-xlib.patch │ └── xkb-default.patch │ └── zeromq │ └── 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-freebsd.md ├── build-netbsd.md ├── build-openbsd.md ├── build-osx.md ├── build-unix.md ├── build-windows.md ├── dependencies.md ├── descriptors.md ├── developer-notes.md ├── dnsseed-policy.md ├── files.md ├── fuzzing.md ├── gitian-building.md ├── init.md ├── litecoin-release-notes │ ├── release-notes-0.10.2.2.md │ ├── release-notes-0.10.4.md │ ├── release-notes-0.13.2.md │ ├── release-notes-0.13.3.md │ ├── release-notes-0.14.2.md │ ├── release-notes-0.15.0.1.md │ ├── release-notes-0.15.1.md │ ├── release-notes-0.16.0.md │ ├── release-notes-0.16.2.md │ ├── release-notes-0.16.3.md │ ├── release-notes-0.17.1.md │ ├── release-notes-0.18.1.md │ ├── release-notes-0.21.1.md │ ├── release-notes-0.21.2.1.md │ ├── release-notes-0.21.2.2.md │ ├── release-notes-0.21.2.md │ ├── release-notes-0.21.3.md │ └── release-notes-0.21.4.md ├── man │ ├── Makefile.am │ ├── litecoin-cli.1 │ ├── litecoin-qt.1 │ ├── litecoin-tx.1 │ ├── litecoin-wallet.1 │ └── litecoind.1 ├── multiprocess.md ├── mweb │ ├── light-clients.md │ ├── mining-changes.md │ ├── pmmr.md │ ├── stealth-addresses.md │ └── store.md ├── productivity.md ├── psbt.md ├── reduce-memory.md ├── reduce-traffic.md ├── release-notes-litecoin.md ├── release-notes.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.21.0.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-process.md ├── shared-libraries.md ├── tor.md ├── translation_process.md ├── translation_strings_policy.md └── zmq.md ├── libbitcoinconsensus.pc.in ├── share ├── examples │ └── litecoin.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 ├── .clang-format ├── Makefile.am ├── Makefile.bench.include ├── Makefile.crc32c.include ├── Makefile.leveldb.include ├── Makefile.qt.include ├── Makefile.qt_locale.include ├── Makefile.qttest.include ├── Makefile.test.include ├── Makefile.test_fuzz.include ├── Makefile.test_util.include ├── addrdb.cpp ├── addrdb.h ├── addrman.cpp ├── addrman.h ├── amount.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 │ ├── duplicate_inputs.cpp │ ├── examples.cpp │ ├── gcs_filter.cpp │ ├── hashpadding.cpp │ ├── lockedpool.cpp │ ├── mempool_eviction.cpp │ ├── mempool_stress.cpp │ ├── merkle_root.cpp │ ├── nanobench.cpp │ ├── nanobench.h │ ├── poly1305.cpp │ ├── prevector.cpp │ ├── rollingbloom.cpp │ ├── rpc_blockchain.cpp │ ├── rpc_mempool.cpp │ ├── util_time.cpp │ ├── verify_script.cpp │ └── wallet_balance.cpp ├── bitcoin-cli-res.rc ├── bitcoin-cli.cpp ├── bitcoin-tx-res.rc ├── bitcoin-tx.cpp ├── bitcoin-wallet-res.rc ├── bitcoin-wallet.cpp ├── bitcoind-res.rc ├── bitcoind.cpp ├── blockencodings.cpp ├── blockencodings.h ├── blockfilter.cpp ├── blockfilter.h ├── bloom.cpp ├── bloom.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 ├── compat.h ├── compat │ ├── assumptions.h │ ├── byteswap.h │ ├── cpuid.h │ ├── endian.h │ ├── glibc_compat.cpp │ ├── glibc_sanity.cpp │ ├── glibcxx_sanity.cpp │ ├── sanity.h │ ├── stdin.cpp │ ├── stdin.h │ └── strnlen.cpp ├── compressor.cpp ├── compressor.h ├── config │ └── .empty ├── consensus │ ├── 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 │ ├── blake3 │ │ ├── .gitignore │ │ ├── Makefile.testing │ │ ├── README.md │ │ ├── blake3.c │ │ ├── blake3.h │ │ ├── blake3_avx2.c │ │ ├── blake3_avx2_x86-64_unix.S │ │ ├── blake3_avx2_x86-64_windows_gnu.S │ │ ├── blake3_avx2_x86-64_windows_msvc.asm │ │ ├── blake3_avx512.c │ │ ├── blake3_avx512_x86-64_unix.S │ │ ├── blake3_avx512_x86-64_windows_gnu.S │ │ ├── blake3_avx512_x86-64_windows_msvc.asm │ │ ├── blake3_dispatch.c │ │ ├── blake3_impl.h │ │ ├── blake3_neon.c │ │ ├── blake3_portable.c │ │ ├── blake3_sse2.c │ │ ├── blake3_sse2_x86-64_unix.S │ │ ├── blake3_sse2_x86-64_windows_gnu.S │ │ ├── blake3_sse2_x86-64_windows_msvc.asm │ │ ├── blake3_sse41.c │ │ ├── blake3_sse41_x86-64_unix.S │ │ ├── blake3_sse41_x86-64_windows_gnu.S │ │ ├── blake3_sse41_x86-64_windows_msvc.asm │ │ ├── example.c │ │ ├── main.c │ │ └── test.py │ ├── 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 │ ├── poly1305.cpp │ ├── poly1305.h │ ├── ripemd160.cpp │ ├── ripemd160.h │ ├── scrypt-sse2.cpp │ ├── scrypt.cpp │ ├── scrypt.h │ ├── sha1.cpp │ ├── sha1.h │ ├── sha256.cpp │ ├── sha256.h │ ├── sha256_avx2.cpp │ ├── sha256_shani.cpp │ ├── sha256_sse4.cpp │ ├── sha256_sse41.cpp │ ├── sha3.cpp │ ├── sha3.h │ ├── sha512.cpp │ ├── sha512.h │ ├── siphash.cpp │ └── siphash.h ├── cuckoocache.h ├── dbwrapper.cpp ├── dbwrapper.h ├── dummywallet.cpp ├── flatfile.cpp ├── flatfile.h ├── fs.cpp ├── fs.h ├── hash.cpp ├── hash.h ├── httprpc.cpp ├── httprpc.h ├── httpserver.cpp ├── httpserver.h ├── index │ ├── base.cpp │ ├── base.h │ ├── blockfilterindex.cpp │ ├── blockfilterindex.h │ ├── disktxpos.h │ ├── txindex.cpp │ └── txindex.h ├── indirectmap.h ├── init.cpp ├── init.h ├── interfaces │ ├── README.md │ ├── chain.cpp │ ├── chain.h │ ├── handler.cpp │ ├── handler.h │ ├── node.cpp │ ├── node.h │ ├── wallet.cpp │ └── wallet.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 ├── libmw │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── deps │ │ ├── caches │ │ │ ├── LICENSE.md │ │ │ ├── README.md │ │ │ └── include │ │ │ │ └── caches │ │ │ │ ├── Cache.h │ │ │ │ └── internal │ │ │ │ ├── cache.hpp │ │ │ │ ├── cache_policy.hpp │ │ │ │ ├── fifo_cache_policy.hpp │ │ │ │ ├── lfu_cache_policy.hpp │ │ │ │ └── lru_cache_policy.hpp │ │ ├── ghc │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── include │ │ │ │ └── ghc │ │ │ │ ├── filesystem.hpp │ │ │ │ ├── fs_fwd.hpp │ │ │ │ ├── fs_impl.hpp │ │ │ │ ├── fs_std.hpp │ │ │ │ ├── fs_std_fwd.hpp │ │ │ │ └── fs_std_impl.hpp │ │ └── mio │ │ │ └── include │ │ │ └── mio │ │ │ └── mmap.hpp │ ├── include │ │ └── mw │ │ │ ├── common │ │ │ ├── BitSet.h │ │ │ ├── Lock.h │ │ │ ├── Logger.h │ │ │ ├── Macros.h │ │ │ └── Traits.h │ │ │ ├── consensus │ │ │ ├── Aggregation.h │ │ │ ├── KernelSumValidator.h │ │ │ ├── Params.h │ │ │ ├── StealthSumValidator.h │ │ │ └── Weight.h │ │ │ ├── crypto │ │ │ ├── Blinds.h │ │ │ ├── Bulletproofs.h │ │ │ ├── Hasher.h │ │ │ ├── Keys.h │ │ │ ├── MuSig.h │ │ │ ├── Pedersen.h │ │ │ ├── PublicKeys.h │ │ │ ├── Schnorr.h │ │ │ └── SecretKeys.h │ │ │ ├── db │ │ │ ├── CoinDB.h │ │ │ ├── LeafDB.h │ │ │ └── MMRInfoDB.h │ │ │ ├── exceptions │ │ │ ├── CryptoException.h │ │ │ ├── DatabaseException.h │ │ │ ├── DeserializationException.h │ │ │ ├── FileException.h │ │ │ ├── InsufficientFundsException.h │ │ │ ├── LTCException.h │ │ │ ├── NotFoundException.h │ │ │ └── ValidationException.h │ │ │ ├── file │ │ │ ├── AppendOnlyFile.h │ │ │ ├── File.h │ │ │ ├── FilePath.h │ │ │ └── MemMap.h │ │ │ ├── interfaces │ │ │ └── db_interface.h │ │ │ ├── mmr │ │ │ ├── Index.h │ │ │ ├── Leaf.h │ │ │ ├── LeafIndex.h │ │ │ ├── LeafSet.h │ │ │ ├── MMR.h │ │ │ ├── MMRInfo.h │ │ │ ├── MMRUtil.h │ │ │ ├── PruneList.h │ │ │ └── Segment.h │ │ │ ├── models │ │ │ ├── block │ │ │ │ ├── Block.h │ │ │ │ ├── BlockUndo.h │ │ │ │ └── Header.h │ │ │ ├── crypto │ │ │ │ ├── BigInteger.h │ │ │ │ ├── BlindingFactor.h │ │ │ │ ├── Commitment.h │ │ │ │ ├── Hash.h │ │ │ │ ├── ProofData.h │ │ │ │ ├── ProofMessage.h │ │ │ │ ├── PublicKey.h │ │ │ │ ├── RangeProof.h │ │ │ │ ├── RewoundProof.h │ │ │ │ ├── SecretKey.h │ │ │ │ ├── Signature.h │ │ │ │ └── SignedMessage.h │ │ │ ├── tx │ │ │ │ ├── Input.h │ │ │ │ ├── Kernel.h │ │ │ │ ├── Output.h │ │ │ │ ├── OutputMask.h │ │ │ │ ├── PegInCoin.h │ │ │ │ ├── PegOutCoin.h │ │ │ │ ├── Transaction.h │ │ │ │ ├── TxBody.h │ │ │ │ └── UTXO.h │ │ │ └── wallet │ │ │ │ ├── Coin.h │ │ │ │ ├── KeyChainPath.h │ │ │ │ ├── Recipient.h │ │ │ │ └── StealthAddress.h │ │ │ ├── node │ │ │ ├── BlockBuilder.h │ │ │ ├── BlockValidator.h │ │ │ └── CoinsView.h │ │ │ ├── util │ │ │ ├── BitUtil.h │ │ │ ├── StringUtil.h │ │ │ └── VectorUtil.h │ │ │ └── wallet │ │ │ ├── Keychain.h │ │ │ └── TxBuilder.h │ ├── src │ │ ├── common │ │ │ └── Logger.cpp │ │ ├── crypto │ │ │ ├── Bulletproofs.cpp │ │ │ ├── Context.h │ │ │ ├── ConversionUtil.cpp │ │ │ ├── ConversionUtil.h │ │ │ ├── Hasher.cpp │ │ │ ├── MuSig.cpp │ │ │ ├── Pedersen.cpp │ │ │ ├── PublicKeys.cpp │ │ │ ├── Schnorr.cpp │ │ │ ├── SecretKeys.cpp │ │ │ └── secp256k1-zkp.h │ │ ├── db │ │ │ ├── CoinDB.cpp │ │ │ ├── LeafDB.cpp │ │ │ ├── MMRInfoDB.cpp │ │ │ └── common │ │ │ │ ├── DBEntry.h │ │ │ │ ├── DBTable.h │ │ │ │ ├── DBTransaction.h │ │ │ │ ├── Database.h │ │ │ │ ├── OrderedMultimap.h │ │ │ │ └── SerializableVec.h │ │ ├── file │ │ │ └── File.cpp │ │ ├── mmr │ │ │ ├── ILeafSet.cpp │ │ │ ├── IMMR.cpp │ │ │ ├── Index.cpp │ │ │ ├── LeafSet.cpp │ │ │ ├── LeafSetCache.cpp │ │ │ ├── MMRUtil.cpp │ │ │ ├── MemMMR.cpp │ │ │ ├── PMMR.cpp │ │ │ ├── PMMRCache.cpp │ │ │ ├── PruneList.cpp │ │ │ └── Segment.cpp │ │ ├── models │ │ │ ├── block │ │ │ │ └── Block.cpp │ │ │ ├── crypto │ │ │ │ ├── Commitment.cpp │ │ │ │ └── PublicKey.cpp │ │ │ └── tx │ │ │ │ ├── Input.cpp │ │ │ │ ├── Kernel.cpp │ │ │ │ ├── Output.cpp │ │ │ │ ├── Transaction.cpp │ │ │ │ └── TxBody.cpp │ │ ├── node │ │ │ ├── BlockBuilder.cpp │ │ │ ├── BlockValidator.cpp │ │ │ ├── CoinActions.h │ │ │ ├── CoinsViewCache.cpp │ │ │ └── CoinsViewDB.cpp │ │ └── wallet │ │ │ ├── Keychain.cpp │ │ │ └── TxBuilder.cpp │ └── test │ │ ├── framework │ │ ├── include │ │ │ └── test_framework │ │ │ │ ├── Deserializer.h │ │ │ │ ├── Miner.h │ │ │ │ ├── TestLeafSet.h │ │ │ │ ├── TestMWEB.h │ │ │ │ ├── TxBuilder.h │ │ │ │ └── models │ │ │ │ ├── MinedBlock.h │ │ │ │ ├── Tx.h │ │ │ │ ├── TxInput.h │ │ │ │ └── TxOutput.h │ │ └── src │ │ │ ├── TxBuilder.cpp │ │ │ └── models │ │ │ └── Tx.cpp │ │ └── tests │ │ ├── consensus │ │ ├── Test_Aggregation.cpp │ │ ├── Test_KernelSumValidator.cpp │ │ ├── Test_StealthSumValidator.cpp │ │ └── Test_Weight.cpp │ │ ├── crypto │ │ ├── Test_AddCommitments.cpp │ │ ├── Test_AggSig.cpp │ │ ├── Test_Keys.cpp │ │ └── Test_RangeProofs.cpp │ │ ├── db │ │ └── Test_LeafDB.cpp │ │ ├── mmr │ │ ├── Test_Index.cpp │ │ ├── Test_LeafIndex.cpp │ │ ├── Test_LeafSet.cpp │ │ ├── Test_LeafSetCache.cpp │ │ ├── Test_MMR.cpp │ │ ├── Test_MMRUtil.cpp │ │ ├── Test_PruneList.cpp │ │ └── Test_Segment.cpp │ │ ├── models │ │ ├── block │ │ │ ├── Test_Block.cpp │ │ │ └── Test_Header.cpp │ │ ├── crypto │ │ │ └── Test_BigInteger.cpp │ │ └── tx │ │ │ ├── Test_Input.cpp │ │ │ ├── Test_Kernel.cpp │ │ │ ├── Test_Output.cpp │ │ │ ├── Test_PegInCoin.cpp │ │ │ ├── Test_PegOutCoin.cpp │ │ │ ├── Test_Transaction.cpp │ │ │ ├── Test_TxBody.cpp │ │ │ └── Test_UTXO.cpp │ │ ├── node │ │ ├── Test_BlockBuilder.cpp │ │ ├── Test_BlockValidator.cpp │ │ ├── Test_CoinsView.cpp │ │ ├── Test_MineChain.cpp │ │ └── Test_Reorg.cpp │ │ └── wallet │ │ └── Test_Keychain.cpp ├── logging.cpp ├── logging.h ├── logging │ └── timer.h ├── memusage.h ├── merkleblock.cpp ├── merkleblock.h ├── miner.cpp ├── miner.h ├── mweb │ ├── mweb_db.h │ ├── mweb_miner.cpp │ ├── mweb_miner.h │ ├── mweb_models.h │ ├── mweb_node.cpp │ ├── mweb_node.h │ ├── mweb_policy.cpp │ ├── mweb_policy.h │ ├── mweb_transact.cpp │ ├── mweb_transact.h │ ├── mweb_wallet.cpp │ └── mweb_wallet.h ├── net.cpp ├── net.h ├── net_permissions.cpp ├── net_permissions.h ├── net_processing.cpp ├── net_processing.h ├── net_types.h ├── netaddress.cpp ├── netaddress.h ├── netbase.cpp ├── netbase.h ├── netmessagemaker.h ├── node │ ├── README.md │ ├── coin.cpp │ ├── coin.h │ ├── coinstats.cpp │ ├── coinstats.h │ ├── context.cpp │ ├── context.h │ ├── psbt.cpp │ ├── psbt.h │ ├── transaction.cpp │ ├── transaction.h │ ├── ui_interface.cpp │ ├── ui_interface.h │ └── utxo_snapshot.h ├── noui.cpp ├── noui.h ├── optional.h ├── outputtype.cpp ├── outputtype.h ├── policy │ ├── feerate.cpp │ ├── feerate.h │ ├── fees.cpp │ ├── fees.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 │ ├── 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 │ ├── intro.cpp │ ├── intro.h │ ├── locale │ │ ├── bitcoin_af.ts │ │ ├── bitcoin_am.ts │ │ ├── bitcoin_ar.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_GB.ts │ │ ├── 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_gl_ES.ts │ │ ├── bitcoin_he.ts │ │ ├── bitcoin_hi.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_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_my.ts │ │ ├── bitcoin_nb.ts │ │ ├── bitcoin_ne.ts │ │ ├── bitcoin_nl.ts │ │ ├── bitcoin_pam.ts │ │ ├── bitcoin_pl.ts │ │ ├── bitcoin_pt.ts │ │ ├── bitcoin_pt_BR.ts │ │ ├── bitcoin_ro.ts │ │ ├── bitcoin_ru.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_szl.ts │ │ ├── bitcoin_ta.ts │ │ ├── bitcoin_te.ts │ │ ├── bitcoin_th.ts │ │ ├── bitcoin_tr.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 │ ├── 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 │ │ ├── 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 │ │ │ ├── litecoin_splash.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 │ │ ├── compattests.cpp │ │ ├── compattests.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.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 ├── reverse_iterator.h ├── rpc │ ├── blockchain.cpp │ ├── blockchain.h │ ├── client.cpp │ ├── client.h │ ├── mining.cpp │ ├── mining.h │ ├── misc.cpp │ ├── net.cpp │ ├── protocol.h │ ├── rawtransaction.cpp │ ├── rawtransaction_util.cpp │ ├── rawtransaction_util.h │ ├── register.h │ ├── request.cpp │ ├── request.h │ ├── server.cpp │ ├── server.h │ ├── util.cpp │ └── util.h ├── scheduler.cpp ├── scheduler.h ├── script │ ├── address.cpp │ ├── address.h │ ├── bitcoinconsensus.cpp │ ├── bitcoinconsensus.h │ ├── descriptor.cpp │ ├── descriptor.h │ ├── interpreter.cpp │ ├── interpreter.h │ ├── keyorigin.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-zkp │ ├── .gitignore │ ├── .travis.yml │ ├── COPYING │ ├── Makefile.am │ ├── README.md │ ├── TODO │ ├── autogen.sh │ ├── build-aux │ │ └── m4 │ │ │ ├── ax_jni_include_dir.m4 │ │ │ ├── ax_prog_cc_for_build.m4 │ │ │ └── bitcoin_secp.m4 │ ├── configure.ac │ ├── contrib │ │ ├── lax_der_parsing.c │ │ ├── lax_der_parsing.h │ │ ├── lax_der_privatekey_parsing.c │ │ └── lax_der_privatekey_parsing.h │ ├── include │ │ ├── secp256k1.h │ │ ├── secp256k1_aggsig.h │ │ ├── secp256k1_bulletproofs.h │ │ ├── secp256k1_commitment.h │ │ ├── secp256k1_ecdh.h │ │ ├── secp256k1_extrakeys.h │ │ ├── secp256k1_generator.h │ │ ├── secp256k1_rangeproof.h │ │ ├── secp256k1_recovery.h │ │ ├── secp256k1_schnorrsig.h │ │ ├── secp256k1_surjectionproof.h │ │ └── secp256k1_whitelist.h │ ├── libsecp256k1-config-nix.h │ ├── libsecp256k1-config.h │ ├── libsecp256k1.pc.in │ ├── obj │ │ └── .gitignore │ ├── sage │ │ ├── group_prover.sage │ │ ├── secp256k1.sage │ │ ├── shallue_van_de_woestijne.sage │ │ └── weierstrass_prover.sage │ └── src │ │ ├── asm │ │ └── field_10x26_arm.s │ │ ├── basic-config.h │ │ ├── bench.h │ │ ├── bench_bulletproof.c │ │ ├── bench_ecdh.c │ │ ├── bench_ecmult.c │ │ ├── bench_generator.c │ │ ├── bench_internal.c │ │ ├── bench_rangeproof.c │ │ ├── bench_recover.c │ │ ├── bench_schnorrsig.c │ │ ├── bench_sign.c │ │ ├── bench_verify.c │ │ ├── bench_whitelist.c │ │ ├── ecdsa.h │ │ ├── ecdsa_impl.h │ │ ├── eckey.h │ │ ├── eckey_impl.h │ │ ├── ecmult.h │ │ ├── ecmult_const.h │ │ ├── ecmult_const_impl.h │ │ ├── ecmult_gen.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 │ │ ├── gen_context.c │ │ ├── group.h │ │ ├── group_impl.h │ │ ├── hash.h │ │ ├── hash_impl.h │ │ ├── java │ │ ├── org │ │ │ └── bitcoin │ │ │ │ ├── NativeSecp256k1.java │ │ │ │ ├── NativeSecp256k1Test.java │ │ │ │ ├── NativeSecp256k1Util.java │ │ │ │ └── Secp256k1Context.java │ │ ├── org_bitcoin_NativeSecp256k1.c │ │ ├── org_bitcoin_NativeSecp256k1.h │ │ ├── org_bitcoin_Secp256k1Context.c │ │ └── org_bitcoin_Secp256k1Context.h │ │ ├── modules │ │ ├── aggsig │ │ │ ├── Makefile.am.include │ │ │ ├── main_impl.h │ │ │ └── tests_impl.h │ │ ├── bulletproofs │ │ │ ├── Makefile.am.include │ │ │ ├── inner_product_impl.h │ │ │ ├── main_impl.h │ │ │ ├── rangeproof_impl.h │ │ │ ├── tests_impl.h │ │ │ └── util.h │ │ ├── commitment │ │ │ ├── Makefile.am.include │ │ │ ├── main_impl.h │ │ │ ├── pedersen_impl.h │ │ │ └── tests_impl.h │ │ ├── ecdh │ │ │ ├── Makefile.am.include │ │ │ ├── main_impl.h │ │ │ └── tests_impl.h │ │ ├── extrakeys │ │ │ ├── Makefile.am.include │ │ │ ├── main_impl.h │ │ │ ├── tests_exhaustive_impl.h │ │ │ └── tests_impl.h │ │ ├── generator │ │ │ ├── Makefile.am.include │ │ │ ├── main_impl.h │ │ │ └── tests_impl.h │ │ ├── rangeproof │ │ │ ├── Makefile.am.include │ │ │ ├── borromean.h │ │ │ ├── borromean_impl.h │ │ │ ├── main_impl.h │ │ │ ├── rangeproof.h │ │ │ ├── rangeproof_impl.h │ │ │ └── tests_impl.h │ │ ├── recovery │ │ │ ├── Makefile.am.include │ │ │ ├── main_impl.h │ │ │ └── tests_impl.h │ │ ├── schnorrsig │ │ │ ├── Makefile.am.include │ │ │ ├── main_impl.h │ │ │ └── tests_impl.h │ │ ├── surjection │ │ │ ├── Makefile.am.include │ │ │ ├── main_impl.h │ │ │ ├── surjection.h │ │ │ ├── surjection.md │ │ │ ├── surjection_impl.h │ │ │ └── tests_impl.h │ │ └── whitelist │ │ │ ├── Makefile.am.include │ │ │ ├── main_impl.h │ │ │ ├── tests_impl.h │ │ │ ├── whitelist.md │ │ │ └── whitelist_impl.h │ │ ├── num.h │ │ ├── num_gmp.h │ │ ├── num_gmp_impl.h │ │ ├── num_impl.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 │ │ ├── testrand.h │ │ ├── testrand_impl.h │ │ ├── tests.c │ │ ├── tests_exhaustive.c │ │ └── util.h ├── 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 │ ├── arith_uint256_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 │ ├── bloom_tests.cpp │ ├── bswap_tests.cpp │ ├── checkqueue_tests.cpp │ ├── coins_tests.cpp │ ├── compilerbug_tests.cpp │ ├── compress_tests.cpp │ ├── crypto_tests.cpp │ ├── cuckoocache_tests.cpp │ ├── data │ │ ├── README.md │ │ ├── asmap.raw │ │ ├── base58_encode_decode.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 │ │ ├── addrdb.cpp │ │ ├── addrman.cpp │ │ ├── asmap.cpp │ │ ├── asmap_direct.cpp │ │ ├── autofile.cpp │ │ ├── banman.cpp │ │ ├── base_encode_decode.cpp │ │ ├── bech32.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_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 │ │ ├── integer.cpp │ │ ├── key.cpp │ │ ├── key_io.cpp │ │ ├── kitchen_sink.cpp │ │ ├── load_external_block_file.cpp │ │ ├── locale.cpp │ │ ├── merkleblock.cpp │ │ ├── message.cpp │ │ ├── multiplication_overflow.cpp │ │ ├── net.cpp │ │ ├── net_permissions.cpp │ │ ├── netaddress.cpp │ │ ├── p2p_transport_deserializer.cpp │ │ ├── parse_hd_keypath.cpp │ │ ├── parse_iso8601.cpp │ │ ├── parse_numbers.cpp │ │ ├── parse_script.cpp │ │ ├── parse_univalue.cpp │ │ ├── partially_downloaded_block.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 │ │ ├── script.cpp │ │ ├── script_assets_test_minimizer.cpp │ │ ├── script_bitcoin_consensus.cpp │ │ ├── script_descriptor_cache.cpp │ │ ├── script_flags.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 │ │ ├── span.cpp │ │ ├── spanparsing.cpp │ │ ├── string.cpp │ │ ├── strprintf.cpp │ │ ├── system.cpp │ │ ├── timedata.cpp │ │ ├── transaction.cpp │ │ ├── tx_in.cpp │ │ ├── tx_out.cpp │ │ ├── txrequest.cpp │ │ ├── util.h │ │ └── versionbits.cpp │ ├── getarg_tests.cpp │ ├── hash_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 │ ├── multisig_tests.cpp │ ├── net_tests.cpp │ ├── netbase_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 │ ├── ref_tests.cpp │ ├── reverselock_tests.cpp │ ├── rpc_tests.cpp │ ├── sanity_tests.cpp │ ├── scheduler_tests.cpp │ ├── script_p2sh_tests.cpp │ ├── script_standard_tests.cpp │ ├── script_tests.cpp │ ├── scriptnum10.h │ ├── scriptnum_tests.cpp │ ├── scrypt_tests.cpp │ ├── serialize_tests.cpp │ ├── settings_tests.cpp │ ├── sighash_tests.cpp │ ├── sigopcount_tests.cpp │ ├── skiplist_tests.cpp │ ├── streams_tests.cpp │ ├── sync_tests.cpp │ ├── system_tests.cpp │ ├── timedata_tests.cpp │ ├── torcontrol_tests.cpp │ ├── transaction_tests.cpp │ ├── txindex_tests.cpp │ ├── txrequest_tests.cpp │ ├── txvalidation_tests.cpp │ ├── txvalidationcache_tests.cpp │ ├── uint256_tests.cpp │ ├── util │ │ ├── README.md │ │ ├── blockfilter.cpp │ │ ├── blockfilter.h │ │ ├── logging.cpp │ │ ├── logging.h │ │ ├── mining.cpp │ │ ├── mining.h │ │ ├── net.cpp │ │ ├── net.h │ │ ├── setup_common.cpp │ │ ├── setup_common.h │ │ ├── str.cpp │ │ ├── str.h │ │ ├── transaction_utils.cpp │ │ ├── transaction_utils.h │ │ ├── validation.cpp │ │ ├── validation.h │ │ ├── wallet.cpp │ │ └── wallet.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 ├── threadinterrupt.cpp ├── threadinterrupt.h ├── threadsafety.h ├── timedata.cpp ├── timedata.h ├── tinyformat.h ├── torcontrol.cpp ├── torcontrol.h ├── txdb.cpp ├── txdb.h ├── txmempool.cpp ├── txmempool.h ├── txrequest.cpp ├── txrequest.h ├── uint256.cpp ├── uint256.h ├── undo.h ├── univalue │ ├── .gitignore │ ├── .travis.yml │ ├── COPYING │ ├── Makefile.am │ ├── README.md │ ├── TODO │ ├── autogen.sh │ ├── build-aux │ │ └── m4 │ │ │ └── .gitignore │ ├── configure.ac │ ├── gen │ │ └── gen.cpp │ ├── include │ │ └── univalue.h │ ├── lib │ │ ├── .gitignore │ │ ├── univalue.cpp │ │ ├── univalue_escapes.h │ │ ├── univalue_get.cpp │ │ ├── univalue_read.cpp │ │ ├── univalue_utffilter.h │ │ └── univalue_write.cpp │ ├── pc │ │ ├── libunivalue-uninstalled.pc.in │ │ └── libunivalue.pc.in │ └── test │ │ ├── .gitignore │ │ ├── fail1.json │ │ ├── fail10.json │ │ ├── fail11.json │ │ ├── fail12.json │ │ ├── fail13.json │ │ ├── fail14.json │ │ ├── fail15.json │ │ ├── fail16.json │ │ ├── fail17.json │ │ ├── fail18.json │ │ ├── fail19.json │ │ ├── fail2.json │ │ ├── fail20.json │ │ ├── fail21.json │ │ ├── fail22.json │ │ ├── fail23.json │ │ ├── fail24.json │ │ ├── fail25.json │ │ ├── fail26.json │ │ ├── fail27.json │ │ ├── fail28.json │ │ ├── fail29.json │ │ ├── fail3.json │ │ ├── fail30.json │ │ ├── fail31.json │ │ ├── fail32.json │ │ ├── fail33.json │ │ ├── fail34.json │ │ ├── fail35.json │ │ ├── fail36.json │ │ ├── fail37.json │ │ ├── fail38.json │ │ ├── fail39.json │ │ ├── fail4.json │ │ ├── fail40.json │ │ ├── fail41.json │ │ ├── fail42.json │ │ ├── fail44.json │ │ ├── fail45.json │ │ ├── fail5.json │ │ ├── fail6.json │ │ ├── fail7.json │ │ ├── fail8.json │ │ ├── fail9.json │ │ ├── no_nul.cpp │ │ ├── object.cpp │ │ ├── pass1.json │ │ ├── pass2.json │ │ ├── pass3.json │ │ ├── pass4.json │ │ ├── round1.json │ │ ├── round2.json │ │ ├── round3.json │ │ ├── round4.json │ │ ├── round5.json │ │ ├── round6.json │ │ ├── round7.json │ │ ├── test_json.cpp │ │ └── unitester.cpp ├── util │ ├── asmap.cpp │ ├── asmap.h │ ├── bip32.cpp │ ├── bip32.h │ ├── bytevectorhash.cpp │ ├── bytevectorhash.h │ ├── check.h │ ├── error.cpp │ ├── error.h │ ├── fees.cpp │ ├── fees.h │ ├── golombrice.h │ ├── macros.h │ ├── memory.h │ ├── message.cpp │ ├── message.h │ ├── moneystr.cpp │ ├── moneystr.h │ ├── rbf.cpp │ ├── rbf.h │ ├── ref.h │ ├── settings.cpp │ ├── settings.h │ ├── spanparsing.cpp │ ├── spanparsing.h │ ├── strencodings.cpp │ ├── strencodings.h │ ├── string.cpp │ ├── string.h │ ├── system.cpp │ ├── system.h │ ├── threadnames.cpp │ ├── threadnames.h │ ├── time.cpp │ ├── time.h │ ├── translation.h │ ├── ui_change_type.h │ ├── url.cpp │ ├── url.h │ └── vector.h ├── validation.cpp ├── validation.h ├── validationinterface.cpp ├── validationinterface.h ├── version.h ├── versionbits.cpp ├── versionbits.h ├── versionbitsinfo.cpp ├── versionbitsinfo.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 │ ├── feebumper.cpp │ ├── feebumper.h │ ├── fees.cpp │ ├── fees.h │ ├── init.cpp │ ├── ismine.h │ ├── load.cpp │ ├── load.h │ ├── reserve.cpp │ ├── reserve.h │ ├── rpcdump.cpp │ ├── rpcwallet.cpp │ ├── rpcwallet.h │ ├── salvage.cpp │ ├── salvage.h │ ├── scriptpubkeyman.cpp │ ├── scriptpubkeyman.h │ ├── sqlite.cpp │ ├── sqlite.h │ ├── test │ │ ├── coinselector_tests.cpp │ │ ├── db_tests.cpp │ │ ├── init_test_fixture.cpp │ │ ├── init_test_fixture.h │ │ ├── init_tests.cpp │ │ ├── ismine_tests.cpp │ │ ├── psbt_wallet_tests.cpp │ │ ├── scriptpubkeyman_tests.cpp │ │ ├── wallet_crypto_tests.cpp │ │ ├── wallet_test_fixture.cpp │ │ ├── wallet_test_fixture.h │ │ └── wallet_tests.cpp │ ├── txassembler.cpp │ ├── txassembler.h │ ├── txlist.cpp │ ├── txlist.h │ ├── txrecord.cpp │ ├── txrecord.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 │ ├── blockheader_testnet4.hex │ ├── invalid_txs.py │ ├── rpc_bip67.json │ ├── rpc_getblockstats.json │ └── rpc_psbt.json ├── example_test.py ├── feature_abortnode.py ├── feature_asmap.py ├── feature_assumevalid.py ├── feature_backwards_compatibility.py ├── feature_bip68_sequence.py ├── feature_block.py ├── feature_blocksdir.py ├── feature_cltv.py ├── feature_config_args.py ├── feature_csv_activation.py ├── feature_dbcrash.py ├── feature_dersig.py ├── feature_fee_estimation.py ├── feature_filelock.py ├── feature_help.py ├── feature_includeconf.py ├── feature_loadblock.py ├── feature_logging.py ├── feature_maxuploadtarget.py ├── feature_minchainwork.py ├── feature_notifications.py ├── feature_nulldummy.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_taproot.py ├── feature_uacomment.py ├── feature_versionbits_warning.py ├── interface_bitcoin_cli.py ├── interface_http.py ├── interface_rest.py ├── interface_rpc.py ├── interface_zmq.py ├── ltc_replacebyfee.py ├── mempool_accept.py ├── mempool_compatibility.py ├── mempool_expiry.py ├── mempool_limit.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 ├── mweb_basic.py ├── mweb_mining.py ├── mweb_node_compatibility.py ├── mweb_p2p.py ├── mweb_pegout_all.py ├── mweb_reorg.py ├── mweb_wallet_address.py ├── mweb_wallet_basic.py ├── mweb_wallet_upgrade.py ├── mweb_weight.py ├── p2p_addr_relay.py ├── p2p_addrv2_relay.py ├── p2p_blockfilters.py ├── p2p_blocksonly.py ├── p2p_compactblocks.py ├── p2p_disconnect_ban.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_ibd_txrelay.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_nobloomfilter_messages.py ├── p2p_node_network_limited.py ├── p2p_permissions.py ├── p2p_ping.py ├── p2p_segwit.py ├── p2p_sendheaders.py ├── p2p_timeouts.py ├── p2p_tx_download.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_generateblock.py ├── rpc_getblockfilter.py ├── rpc_getblockstats.py ├── rpc_getchaintips.py ├── rpc_getdescriptorinfo.py ├── rpc_getpeerinfo_deprecation.py ├── rpc_help.py ├── rpc_invalid_address_message.py ├── rpc_invalidateblock.py ├── rpc_misc.py ├── rpc_named_arguments.py ├── rpc_net.py ├── rpc_preciousblock.py ├── rpc_psbt.py ├── rpc_rawtransaction.py ├── rpc_scantxoutset.py ├── rpc_setban.py ├── rpc_signmessage.py ├── rpc_signrawtransaction.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 │ ├── blocktools.py │ ├── coverage.py │ ├── descriptors.py │ ├── key.py │ ├── ltc_util.py │ ├── messages.py │ ├── muhash.py │ ├── netutil.py │ ├── p2p.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_wallet.py ├── wallet_abandonconflict.py ├── wallet_address_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_descriptor.py ├── wallet_disable.py ├── wallet_dump.py ├── wallet_encryption.py ├── wallet_fallbackfee.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_keypool.py ├── wallet_keypool_topup.py ├── wallet_labels.py ├── wallet_listreceivedby.py ├── wallet_listsinceblock.py ├── wallet_listtransactions.py ├── wallet_listwallettransactions.py ├── wallet_multiwallet.py ├── wallet_reorgsrestore.py ├── wallet_resendwallettransactions.py ├── wallet_scriptaddress2.py ├── wallet_send.py ├── wallet_startup.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 ├── check-doc.py ├── check-rpc-mappings.py ├── commit-script-check.sh ├── extended-lint-all.sh ├── extended-lint-cppcheck.sh ├── git-subtree-check.sh ├── lint-all.sh ├── lint-assertions.sh ├── lint-circular-dependencies.sh ├── lint-cpp.sh ├── lint-filenames.sh ├── lint-format-strings.py ├── lint-format-strings.sh ├── lint-git-commit-check.sh ├── lint-include-guards.sh ├── lint-includes.sh ├── lint-locale-dependence.sh ├── lint-logs.sh ├── lint-python-mutable-default-parameters.sh ├── lint-python-utf8-encoding.sh ├── lint-python.sh ├── lint-qt.sh ├── lint-rpc-help.sh ├── lint-shebang.sh ├── lint-shell-locale.sh ├── lint-shell.sh ├── lint-spelling.ignore-words.txt ├── lint-spelling.sh ├── lint-submodule.sh ├── lint-tests.sh └── lint-whitespace.sh ├── sanitizer_suppressions ├── lsan ├── tsan └── ubsan └── util ├── bitcoin-util-test.py ├── 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 ├── txcreatesignv1.hex ├── txcreatesignv1.json └── txcreatesignv2.hex └── rpcauth-test.py /.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.5.6 2 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | 4 | [bitcoin.qt-translation-021x] 5 | file_filter = src/qt/locale/bitcoin_.ts 6 | source_file = src/qt/locale/bitcoin_en.ts 7 | source_lang = en 8 | -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | Building Litecoin 2 | ================ 3 | 4 | See doc/build-*.md for instructions on building the various 5 | elements of the Litecoin Core reference implementation of Litecoin. 6 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Reporting a Vulnerability 4 | 5 | To report security issues send an email to contact@litecoin.org (not for support). 6 | 7 | The following keys may be used to communicate sensitive information to developers: 8 | 9 | | Name | Fingerprint | 10 | |------|-------------| 11 | | Charlie Lee | 1A2511E978239E491A096D0A828AC1F94EF26053 | 12 | | Xinxi Wang | EEF1C9FE09262D71DDE83C223EF697503BF73187 | 13 | | Adrian Gallagher | 59CAF0E96F23F53747945FD4FE3348877809386C | 14 | 15 | You can import a key by running the following command with that individual’s fingerprint: `gpg --recv-keys ""` Ensure that you put quotes around fingerprints containing spaces. 16 | -------------------------------------------------------------------------------- /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_server/libbitcoin_server.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 | */Win32 25 | libbitcoin_qt/QtGeneratedFiles/* 26 | test_bitcoin-qt/QtGeneratedFiles/* 27 | 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 | @SOURCE_FILES@ 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /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 | 12 | @SOURCE_FILES@ 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /build_msvc/libbitcoin_wallet/libbitcoin_wallet.vcxproj.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {93B86837-B543-48A5-A89B-7C87ABB77DF2} 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/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-filesystem", 7 | "boost-multi-index", 8 | "boost-process", 9 | "boost-signals2", 10 | "boost-test", 11 | "boost-thread", 12 | "sqlite3", 13 | "double-conversion", 14 | { 15 | "name": "libevent", 16 | "features": ["thread"] 17 | }, 18 | "zeromq" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /ci/lint/05_before_script.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2018-2019 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 8 | 9 | git fetch --unshallow 10 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_i686_centos.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 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 | export HOST=i686-pc-linux-gnu 10 | export CONTAINER_NAME=ci_i686_centos_7 11 | export DOCKER_NAME_TAG=centos:7 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 python36-zmq which patch lbzip2 dash" 13 | export GOAL="install" 14 | export BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-reduce-exports --with-boost-process" 15 | export CONFIG_SHELL="/bin/dash" 16 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_mac_host.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 | export HOST=x86_64-apple-darwin18 10 | export PIP_PACKAGES="zmq" 11 | export GOAL="install" 12 | export BITCOIN_CONFIG="--with-gui --enable-reduce-exports --enable-werror --with-boost-process" 13 | export CI_OS_NAME="macos" 14 | export NO_DEPENDS=1 15 | export OSX_SDK="" 16 | export CCACHE_SIZE=300M 17 | 18 | export RUN_SECURITY_TESTS="true" 19 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_native_fuzz.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 | export DOCKER_NAME_TAG="ubuntu:20.04" 10 | export CONTAINER_NAME=ci_native_fuzz 11 | export PACKAGES="clang llvm python3 libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-test-dev libboost-thread-dev libssl-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 CC=clang CXX=clang++ --with-boost-process" 18 | export CCACHE_SIZE=200M 19 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_native_fuzz_with_valgrind.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 | export DOCKER_NAME_TAG="ubuntu:20.04" 10 | export CONTAINER_NAME=ci_native_fuzz_valgrind 11 | export PACKAGES="clang llvm python3 libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-test-dev libboost-thread-dev valgrind" 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 FUZZ_TESTS_CONFIG="--valgrind" 17 | export GOAL="install" 18 | export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer CC=clang CXX=clang++" 19 | export CCACHE_SIZE=200M 20 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_native_multiprocess.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 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 | export CONTAINER_NAME=ci_native_multiprocess 10 | export DOCKER_NAME_TAG=ubuntu:20.04 11 | export PACKAGES="cmake python3" 12 | export DEP_OPTS="MULTIPROCESS=1" 13 | export GOAL="install" 14 | export BITCOIN_CONFIG="--with-boost-process" 15 | export TEST_RUNNER_ENV="BITCOIND=litecoin-node" 16 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_native_nowallet.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 | export CONTAINER_NAME=ci_native_nowallet 10 | export DOCKER_NAME_TAG=ubuntu:16.04 # Use xenial to have one config run the tests in python3.5, see doc/dependencies.md 11 | export PACKAGES="python3-zmq clang-3.8 llvm-3.8" # Use clang-3.8 to test C++11 compatibility, see doc/dependencies.md 12 | export DEP_OPTS="NO_WALLET=1" 13 | export GOAL="install" 14 | export BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports CC=clang-3.8 CXX=clang++-3.8 --with-boost-process" 15 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_native_tsan.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 | export CONTAINER_NAME=ci_native_tsan 10 | export DOCKER_NAME_TAG=ubuntu:20.04 11 | export PACKAGES="clang llvm libc++abi-dev libc++-dev python3-zmq" 12 | export DEP_OPTS="CC=clang CXX='clang++ -stdlib=libc++'" 13 | export TEST_RUNNER_EXTRA="--exclude feature_block" # Low memory on Travis machines, exclude feature_block. 14 | export GOAL="install" 15 | export BITCOIN_CONFIG="--enable-zmq --with-gui=no CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER' CXXFLAGS='-g' --with-sanitizers=thread CC=clang CXX='clang++ -stdlib=libc++' --with-boost-process" 16 | -------------------------------------------------------------------------------- /ci/test/00_setup_env_win64.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 | export CONTAINER_NAME=ci_win64 10 | export DOCKER_NAME_TAG=ubuntu:18.04 # Check that bionic can cross-compile to win64 (bionic is used in the gitian build as well) 11 | export HOST=x86_64-w64-mingw32 12 | export PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64 file" 13 | export RUN_FUNCTIONAL_TESTS=false 14 | export RUN_SECURITY_TESTS="true" 15 | export GOAL="deploy" 16 | export BITCOIN_CONFIG="--enable-reduce-exports --disable-gui-tests --without-boost-process" 17 | -------------------------------------------------------------------------------- /ci/test/03_before_install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2018-2019 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 | BEGIN_FOLD () { 10 | echo "" 11 | CURRENT_FOLD_NAME=$1 12 | echo "travis_fold:start:${CURRENT_FOLD_NAME}" 13 | } 14 | 15 | END_FOLD () { 16 | RET=$? 17 | echo "travis_fold:end:${CURRENT_FOLD_NAME}" 18 | if [ $RET != 0 ]; then 19 | echo "${CURRENT_FOLD_NAME} failed with status code ${RET}" 20 | fi 21 | } 22 | 23 | -------------------------------------------------------------------------------- /ci/test/wrap-qemu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2018-2019 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-zkp/*tests,src/univalue/{no_nul,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-2019 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/wrap-wine.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 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 | for b_name in {"${BASE_OUTDIR}/bin"/*,src/secp256k1-zkp/*tests,src/univalue/{no_nul,test_json,unitester,object}}.exe; do 10 | # shellcheck disable=SC2044 11 | for b in $(find "${BASE_ROOT_DIR}" -executable -type f -name "$(basename $b_name)"); do 12 | if (file "$b" | grep "Windows"); then 13 | echo "Wrap $b ..." 14 | mv "$b" "${b}_orig" 15 | echo '#!/usr/bin/env bash' > "$b" 16 | echo "wine64 \"${b}_orig\" \"\$@\"" >> "$b" 17 | chmod +x "$b" 18 | fi 19 | done 20 | done 21 | -------------------------------------------------------------------------------- /ci/test_run_all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2019 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/03_before_install.sh 11 | set -o errexit; source ./ci/test/04_install.sh 12 | set -o errexit; source ./ci/test/05_before_script.sh 13 | set -o errexit; source ./ci/test/06_script_a.sh 14 | set -o errexit; source ./ci/test/06_script_b.sh 15 | -------------------------------------------------------------------------------- /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/gitian-descriptors/assign_DISTNAME: -------------------------------------------------------------------------------- 1 | # Copyright (c) 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 | # A helper script to be sourced into the gitian descriptors 6 | 7 | if RECENT_TAG="$(git describe --exact-match HEAD)"; then 8 | VERSION="${RECENT_TAG#v}" 9 | else 10 | VERSION="$(git rev-parse --short=12 HEAD)" 11 | fi 12 | DISTNAME="litecoin-${VERSION}" 13 | -------------------------------------------------------------------------------- /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 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/detached-sig-apply.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright (c) 2014-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 | 9 | UNSIGNED="$1" 10 | SIGNATURE="$2" 11 | ROOTDIR=dist 12 | OUTDIR=signed-app 13 | SIGNAPPLE=signapple 14 | 15 | if [ -z "$UNSIGNED" ]; then 16 | echo "usage: $0 " 17 | exit 1 18 | fi 19 | 20 | if [ -z "$SIGNATURE" ]; then 21 | echo "usage: $0 " 22 | exit 1 23 | fi 24 | 25 | ${SIGNAPPLE} apply ${UNSIGNED} ${SIGNATURE} 26 | mv ${ROOTDIR} ${OUTDIR} 27 | echo "Signed: ${OUTDIR}" 28 | -------------------------------------------------------------------------------- /contrib/macdeploy/detached-sig-create.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright (c) 2014-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 | 9 | ROOTDIR=dist 10 | BUNDLE="${ROOTDIR}/Litecoin-Qt.app" 11 | SIGNAPPLE=signapple 12 | TEMPDIR=sign.temp 13 | OUT=signature-osx.tar.gz 14 | OUTROOT=osx/dist 15 | 16 | if [ -z "$1" ]; then 17 | echo "usage: $0 " 18 | echo "example: $0 " 19 | exit 1 20 | fi 21 | 22 | rm -rf ${TEMPDIR} 23 | mkdir -p ${TEMPDIR} 24 | 25 | ${SIGNAPPLE} sign --hardened-runtime -f --detach "${TEMPDIR}/${OUTROOT}" "$@" "${BUNDLE}" 26 | 27 | tar -C "${TEMPDIR}" -czf "${OUT}" . 28 | rm -rf "${TEMPDIR}" 29 | echo "Created ${OUT}" 30 | -------------------------------------------------------------------------------- /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 Litecoin network. It limits outbound TCP traffic with a source or destination port of 9333, but not if the destination IP is within a LAN (defined as 192.168.x.x). 4 | 5 | This means one can have an always-on litecoind instance running, and another local litecoind/litecoin-qt instance which connects to this node and receives blocks from it. 6 | -------------------------------------------------------------------------------- /contrib/seeds/.gitignore: -------------------------------------------------------------------------------- 1 | seeds_main.txt 2 | -------------------------------------------------------------------------------- /contrib/seeds/suspicious_hosts.txt: -------------------------------------------------------------------------------- 1 | 130.211.129.106 2 | 148.251.238.178 3 | 176.9.46.6 4 | 178.63.107.226 5 | 54.173.72.127 6 | 54.174.10.182 7 | 54.183.64.54 8 | 54.194.231.211 9 | 54.66.214.167 10 | 54.66.220.137 11 | 54.67.33.14 12 | 54.77.251.214 13 | 54.94.195.96 14 | 54.94.200.247 15 | 83.81.130.26 16 | 88.198.17.7 -------------------------------------------------------------------------------- /contrib/testgen/README.md: -------------------------------------------------------------------------------- 1 | ### TestGen ### 2 | 3 | Utilities to generate test vectors for the data-driven Litecoin tests. 4 | 5 | Usage: 6 | 7 | PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py valid 70 > ../../src/test/data/key_io_valid.json 8 | PYTHONPATH=../../test/functional/test_framework ./gen_key_io_test_vectors.py invalid 70 > ../../src/test/data/key_io_invalid.json 9 | -------------------------------------------------------------------------------- /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-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 | 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 | 82bcf405f6db1d55b684a1f63a4aabad376cdad7 2 | -------------------------------------------------------------------------------- /contrib/verify-commits/trusted-keys: -------------------------------------------------------------------------------- 1 | 71A3B16735405025D447E8F274810B012346C9A6 2 | 133EAC179436F14A5CF1B794860FEB804E669320 3 | 32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC 4 | B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B 5 | CA03882CB1FC067B5D3ACFE4D300116E1C875A3D 6 | E777299FC265DD04793070EB944D35F9AC3DB76A 7 | 59CAF0E96F23F53747945FD4FE3348877809386C 8 | 812C7C9946D314F6A4B70D2D805300481F14DD8B 9 | EEF1C9FE09262D71DDE83C223EF697503BF73187 10 | 1A2511E978239E491A096D0A828AC1F94EF26053 11 | -------------------------------------------------------------------------------- /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/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/cmake/mingw-w64-x86_64.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Windows) 2 | set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) 3 | 4 | set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc-posix) 5 | set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++-posix) -------------------------------------------------------------------------------- /depends/hosts/android.mk: -------------------------------------------------------------------------------- 1 | ifeq ($(HOST),armv7a-linux-android) 2 | android_AR=$(ANDROID_TOOLCHAIN_BIN)/arm-linux-androideabi-ar 3 | android_CXX=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)eabi$(ANDROID_API_LEVEL)-clang++ 4 | android_CC=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)eabi$(ANDROID_API_LEVEL)-clang 5 | android_RANLIB=$(ANDROID_TOOLCHAIN_BIN)/arm-linux-androideabi-ranlib 6 | else 7 | android_AR=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)-ar 8 | android_CXX=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)$(ANDROID_API_LEVEL)-clang++ 9 | android_CC=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)$(ANDROID_API_LEVEL)-clang 10 | android_RANLIB=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)-ranlib 11 | endif 12 | android_cmake_system=Android 13 | -------------------------------------------------------------------------------- /depends/hosts/mingw32.mk: -------------------------------------------------------------------------------- 1 | mingw32_CFLAGS=-pipe 2 | mingw32_CXXFLAGS=$(mingw32_CFLAGS) 3 | 4 | mingw32_release_CFLAGS=-O2 5 | mingw32_release_CXXFLAGS=$(mingw32_release_CFLAGS) 6 | 7 | mingw32_debug_CFLAGS=-O1 8 | mingw32_debug_CXXFLAGS=$(mingw32_debug_CFLAGS) 9 | 10 | mingw32_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC 11 | 12 | mingw_cmake_system=Windows 13 | -------------------------------------------------------------------------------- /depends/packages/capnp.mk: -------------------------------------------------------------------------------- 1 | package=capnp 2 | $(package)_version=$(native_$(package)_version) 3 | $(package)_download_path=$(native_$(package)_download_path) 4 | $(package)_file_name=$(native_$(package)_file_name) 5 | $(package)_sha256_hash=$(native_$(package)_sha256_hash) 6 | $(package)_dependencies=native_$(package) 7 | 8 | define $(package)_config_cmds 9 | $($(package)_autoconf) --with-external-capnp 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/libfmt.mk: -------------------------------------------------------------------------------- 1 | package=libfmt 2 | $(package)_version=7.1.3 3 | $(package)_download_path=https://github.com/fmtlib/fmt/archive/ 4 | $(package)_file_name=$($(package)_version).tar.gz 5 | $(package)_sha256_hash=5cae7072042b3043e12d53d50ef404bbb76949dad1de368d7f993a15c8c05ecc 6 | 7 | define $(package)_config_cmds 8 | $($(package)_cmake) -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true 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 | -------------------------------------------------------------------------------- /depends/packages/libmultiprocess.mk: -------------------------------------------------------------------------------- 1 | package=libmultiprocess 2 | $(package)_version=$(native_$(package)_version) 3 | $(package)_download_path=$(native_$(package)_download_path) 4 | $(package)_file_name=$(native_$(package)_file_name) 5 | $(package)_sha256_hash=$(native_$(package)_sha256_hash) 6 | $(package)_dependencies=native_$(package) boost 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_biplist.mk: -------------------------------------------------------------------------------- 1 | package=native_biplist 2 | $(package)_version=1.0.3 3 | $(package)_download_path=https://bitbucket.org/wooster/biplist/downloads 4 | $(package)_file_name=biplist-$($(package)_version).tar.gz 5 | $(package)_sha256_hash=4c0549764c5fe50b28042ec21aa2e14fe1a2224e239a1dae77d9e7f3932aa4c6 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_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.1.2 3 | $(package)_download_path=https://github.com/al45tair/ds_store/archive/ 4 | $(package)_file_name=v$($(package)_version).tar.gz 5 | $(package)_sha256_hash=3b3ecb7bf0a5157f5b6010bc3af7c141fb0ad3527084e63336220d22744bc20c 6 | $(package)_install_libdir=$(build_prefix)/lib/python3/dist-packages 7 | $(package)_dependencies=native_biplist 8 | 9 | define $(package)_build_cmds 10 | python3 setup.py build 11 | endef 12 | 13 | define $(package)_stage_cmds 14 | mkdir -p $($(package)_install_libdir) && \ 15 | python3 setup.py install --root=$($(package)_staging_dir) --prefix=$(build_prefix) --install-lib=$($(package)_install_libdir) 16 | endef 17 | -------------------------------------------------------------------------------- /depends/packages/native_libmultiprocess.mk: -------------------------------------------------------------------------------- 1 | package=native_libmultiprocess 2 | $(package)_version=5741d750a04e644a03336090d8979c6d033e32c0 3 | $(package)_download_path=https://github.com/chaincodelabs/libmultiprocess/archive 4 | $(package)_file_name=$($(package)_version).tar.gz 5 | $(package)_sha256_hash=ac848db49a6ed53e423c62d54bd87f1f08cbb0326254a8667e10bbfe5bf032a4 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_mac_alias.mk: -------------------------------------------------------------------------------- 1 | package=native_mac_alias 2 | $(package)_version=2.0.7 3 | $(package)_download_path=https://github.com/al45tair/mac_alias/archive/ 4 | $(package)_file_name=v$($(package)_version).tar.gz 5 | $(package)_sha256_hash=6f606d3b6bccd2112aeabf1a063f5b5ece87005a5d7e97c8faca23b916e88838 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/xcb_proto.mk: -------------------------------------------------------------------------------- 1 | package=xcb_proto 2 | $(package)_version=1.10 3 | $(package)_download_path=https://xcb.freedesktop.org/dist 4 | $(package)_file_name=xcb-proto-$($(package)_version).tar.bz2 5 | $(package)_sha256_hash=7ef40ddd855b750bc597d2a435da21e55e502a0fefa85b274f2c922800baaf05 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 | find -name "*.pyc" -delete && \ 21 | find -name "*.pyo" -delete 22 | endef 23 | -------------------------------------------------------------------------------- /depends/patches/boost/unused_var_in_process.patch: -------------------------------------------------------------------------------- 1 | commit dbd95cdaefdea95307d004f019a1c394cf9389f0 2 | Author: fanquake 3 | Date: Mon Aug 17 20:15:17 2020 +0800 4 | 5 | Remove unused variable in Boost Process 6 | 7 | This causes issues with our linters / CI. 8 | 9 | Can be removed once depends Boost is 1.71.0 or later. 10 | 11 | diff --git a/boost/process/detail/posix/wait_group.hpp b/boost/process/detail/posix/wait_group.hpp 12 | index 9dc249803..2502d9772 100644 13 | --- a/boost/process/detail/posix/wait_group.hpp 14 | +++ b/boost/process/detail/posix/wait_group.hpp 15 | @@ -137,7 +137,6 @@ inline bool wait_until( 16 | 17 | do 18 | { 19 | - int ret_sig = 0; 20 | int status; 21 | if ((::waitpid(timeout_pid, &status, WNOHANG) != 0) 22 | && (WIFEXITED(status) || WIFSIGNALED(status))) 23 | -------------------------------------------------------------------------------- /depends/patches/libevent/0001-fix-windows-getaddrinfo.patch: -------------------------------------------------------------------------------- 1 | diff -ur libevent-2.1.8-stable.orig/configure.ac libevent-2.1.8-stable/configure.ac 2 | --- libevent-2.1.8-stable.orig/configure.ac 2017-01-29 17:51:00.000000000 +0000 3 | +++ libevent-2.1.8-stable/configure.ac 2020-03-07 01:11:16.311335005 +0000 4 | @@ -389,6 +389,10 @@ 5 | #ifdef HAVE_NETDB_H 6 | #include 7 | #endif 8 | +#ifdef _WIN32 9 | +#include 10 | +#include 11 | +#endif 12 | ]], 13 | [[ 14 | getaddrinfo; 15 | Only in libevent-2.1.8-stable: configure.ac~ 16 | -------------------------------------------------------------------------------- /depends/patches/openssl/0001-Add-OpenSSL-termios-fix-for-musl-libc.patch: -------------------------------------------------------------------------------- 1 | diff --git a/crypto/ui/ui_openssl.c b/crypto/ui/ui_openssl.c 2 | index a38c758..d99edc2 100644 3 | --- a/crypto/ui/ui_openssl.c 4 | +++ b/crypto/ui/ui_openssl.c 5 | @@ -190,9 +190,9 @@ 6 | # undef SGTTY 7 | #endif 8 | 9 | -#if defined(linux) && !defined(TERMIO) 10 | -# undef TERMIOS 11 | -# define TERMIO 12 | +#if defined(linux) 13 | +# define TERMIOS 14 | +# undef TERMIO 15 | # undef SGTTY 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /depends/patches/qt/dont_hardcode_pwd.patch: -------------------------------------------------------------------------------- 1 | commit 0e953866fc4672486e29e1ba6d83b4207e7b2f0b 2 | Author: fanquake 3 | Date: Tue Aug 18 15:09:06 2020 +0800 4 | 5 | Don't hardcode pwd path 6 | 7 | Let a man use his builtins if he wants to! Also, removes the unnecessary 8 | assumption that pwd lives under /bin/pwd. 9 | 10 | See #15581. 11 | 12 | diff --git a/qtbase/configure b/qtbase/configure 13 | index 08b49a8d..faea5b55 100755 14 | --- a/qtbase/configure 15 | +++ b/qtbase/configure 16 | @@ -36,9 +36,9 @@ 17 | relconf=`basename $0` 18 | # the directory of this script is the "source tree" 19 | relpath=`dirname $0` 20 | -relpath=`(cd "$relpath"; /bin/pwd)` 21 | +relpath=`(cd "$relpath"; pwd)` 22 | # the current directory is the "build tree" or "object tree" 23 | -outpath=`/bin/pwd` 24 | +outpath=`pwd` 25 | 26 | WHICH="which" 27 | 28 | -------------------------------------------------------------------------------- /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 | @@ -890,6 +890,14 @@ 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_no_printer.patch: -------------------------------------------------------------------------------- 1 | --- x/qtbase/src/plugins/platforms/cocoa/qprintengine_mac_p.h 2 | +++ y/qtbase/src/plugins/platforms/cocoa/qprintengine_mac_p.h 3 | @@ -52,6 +52,7 @@ 4 | // 5 | 6 | #include 7 | +#include 8 | 9 | #ifndef QT_NO_PRINTER 10 | 11 | --- x/qtbase/src/plugins/plugins.pro 12 | +++ y/qtbase/src/plugins/plugins.pro 13 | @@ -8,6 +8,3 @@ qtHaveModule(gui) { 14 | qtConfig(imageformatplugin): SUBDIRS *= imageformats 15 | !android:qtConfig(library): SUBDIRS *= generic 16 | } 17 | - 18 | -!winrt:qtHaveModule(printsupport): \ 19 | - SUBDIRS += printsupport 20 | -------------------------------------------------------------------------------- /depends/patches/qt/fix_powerpc_libpng.patch: -------------------------------------------------------------------------------- 1 | commit 6f9feb773a43c5abfa3455da2e324180e789285b 2 | Author: fanquake 3 | Date: Tue Sep 15 21:44:31 2020 +0800 4 | 5 | Fix PowerPC build of libpng 6 | 7 | See https://bugreports.qt.io/browse/QTBUG-66388. 8 | 9 | Can be dropped when we are building qt 5.12.0 or later. 10 | 11 | diff --git a/qtbase/src/3rdparty/libpng/libpng.pro b/qtbase/src/3rdparty/libpng/libpng.pro 12 | index 577b61d8..a2f56669 100644 13 | --- a/qtbase/src/3rdparty/libpng/libpng.pro 14 | +++ b/qtbase/src/3rdparty/libpng/libpng.pro 15 | @@ -10,7 +10,7 @@ MODULE_INCLUDEPATH = $$PWD 16 | 17 | load(qt_helper_lib) 18 | 19 | -DEFINES += PNG_ARM_NEON_OPT=0 20 | +DEFINES += PNG_ARM_NEON_OPT=0 PNG_POWERPC_VSX_OPT=0 21 | SOURCES += \ 22 | png.c \ 23 | pngerror.c \ 24 | -------------------------------------------------------------------------------- /depends/patches/qt/fix_rcc_determinism.patch: -------------------------------------------------------------------------------- 1 | --- old/qtbase/src/tools/rcc/rcc.cpp 2 | +++ new/qtbase/src/tools/rcc/rcc.cpp 3 | @@ -207,7 +207,11 @@ void RCCFileInfo::writeDataInfo(RCCResourceLibrary &lib) 4 | if (lib.formatVersion() >= 2) { 5 | // last modified time stamp 6 | const QDateTime lastModified = m_fileInfo.lastModified(); 7 | - lib.writeNumber8(quint64(lastModified.isValid() ? lastModified.toMSecsSinceEpoch() : 0)); 8 | + quint64 lastmod = quint64(lastModified.isValid() ? lastModified.toMSecsSinceEpoch() : 0); 9 | + static const quint64 sourceDate = 1000 * qgetenv("QT_RCC_SOURCE_DATE_OVERRIDE").toULongLong(); 10 | + if (sourceDate != 0) 11 | + lastmod = sourceDate; 12 | + lib.writeNumber8(lastmod); 13 | if (text || pass1) 14 | lib.writeChar('\n'); 15 | } 16 | -------------------------------------------------------------------------------- /depends/patches/qt/fix_riscv64_arch.patch: -------------------------------------------------------------------------------- 1 | diff --git a/qtbase/src/3rdparty/double-conversion/include/double-conversion/utils.h b/qtbase/src/3rdparty/double-conversion/include/double-conversion/utils.h 2 | index 20bfd36..93729fa 100644 3 | --- a/qtbase/src/3rdparty/double-conversion/include/double-conversion/utils.h 4 | +++ b/qtbase/src/3rdparty/double-conversion/include/double-conversion/utils.h 5 | @@ -65,7 +65,8 @@ 6 | defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ 7 | defined(__SH4__) || defined(__alpha__) || \ 8 | defined(_MIPS_ARCH_MIPS32R2) || \ 9 | - defined(__AARCH64EL__) 10 | + defined(__AARCH64EL__) || defined(__aarch64__) || \ 11 | + defined(__riscv) 12 | #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 13 | #elif defined(_M_IX86) || defined(__i386__) || defined(__i386) 14 | #if defined(_WIN32) 15 | -------------------------------------------------------------------------------- /doc/.gitignore: -------------------------------------------------------------------------------- 1 | Doxyfile 2 | -------------------------------------------------------------------------------- /doc/assets-attribution.md: -------------------------------------------------------------------------------- 1 | The list of assets used in the litecoin 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/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/doc/bitcoin_logo_doxygen.png -------------------------------------------------------------------------------- /doc/gitian-building.md: -------------------------------------------------------------------------------- 1 | Gitian building 2 | ================ 3 | 4 | This file was moved to [the Bitcoin Core documentation repository](https://github.com/bitcoin-core/docs/blob/master/gitian-building.md) at [https://github.com/bitcoin-core/docs](https://github.com/bitcoin-core/docs). 5 | -------------------------------------------------------------------------------- /doc/litecoin-release-notes/release-notes-0.21.2.1.md: -------------------------------------------------------------------------------- 1 | Litecoin Core version 0.21.2.1 is now available from: 2 | 3 | . 4 | 5 | This includes a critical bug fix for upgraded wallets to receive via MWEB. 6 | 7 | Please report bugs using the issue tracker at GitHub: 8 | 9 | 10 | 11 | To receive security and update notifications, please subscribe to: 12 | 13 | 14 | 15 | Notable changes 16 | =============== 17 | 18 | An issue with MWEB key generation for older wallets that were upgraded was solved. 19 | Keys are now generated from the appropriate keypools, and coins sent to previously generated stealth addresses are recoverable. 20 | Use `rescanblockchain` after upgrading to recover any missing MWEB coins. 21 | 22 | -------------------------------------------------------------------------------- /doc/man/Makefile.am: -------------------------------------------------------------------------------- 1 | dist_man1_MANS= 2 | 3 | if BUILD_BITCOIND 4 | dist_man1_MANS+=litecoind.1 5 | endif 6 | 7 | if ENABLE_QT 8 | dist_man1_MANS+=litecoin-qt.1 9 | endif 10 | 11 | if BUILD_BITCOIN_CLI 12 | dist_man1_MANS+=litecoin-cli.1 13 | endif 14 | 15 | if BUILD_BITCOIN_TX 16 | dist_man1_MANS+=litecoin-tx.1 17 | endif 18 | 19 | if ENABLE_WALLET 20 | if BUILD_BITCOIN_WALLET 21 | dist_man1_MANS+=litecoin-wallet.1 22 | endif 23 | endif 24 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/pixmaps/bitcoin.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/share/pixmaps/bitcoin.ico -------------------------------------------------------------------------------- /share/pixmaps/bitcoin128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/share/pixmaps/bitcoin128.png -------------------------------------------------------------------------------- /share/pixmaps/bitcoin16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/share/pixmaps/bitcoin16.png -------------------------------------------------------------------------------- /share/pixmaps/bitcoin256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/share/pixmaps/bitcoin256.png -------------------------------------------------------------------------------- /share/pixmaps/bitcoin32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/share/pixmaps/bitcoin32.png -------------------------------------------------------------------------------- /share/pixmaps/bitcoin64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/share/pixmaps/bitcoin64.png -------------------------------------------------------------------------------- /share/pixmaps/nsis-header.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/share/pixmaps/nsis-header.bmp -------------------------------------------------------------------------------- /share/pixmaps/nsis-wizard.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/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/attributes.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-2010 Satoshi Nakamoto 2 | // Copyright (c) 2009-2018 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(__has_cpp_attribute) 10 | # if __has_cpp_attribute(nodiscard) 11 | # define NODISCARD [[nodiscard]] 12 | # endif 13 | #endif 14 | #ifndef NODISCARD 15 | # if defined(_MSC_VER) && _MSC_VER >= 1700 16 | # define NODISCARD _Check_return_ 17 | # else 18 | # define NODISCARD __attribute__((warn_unused_result)) 19 | # endif 20 | #endif 21 | 22 | #endif // BITCOIN_ATTRIBUTES_H 23 | -------------------------------------------------------------------------------- /src/bench/.gitignore: -------------------------------------------------------------------------------- 1 | bench_litecoin 2 | -------------------------------------------------------------------------------- /src/bench/data.cpp: -------------------------------------------------------------------------------- 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 | #include 6 | 7 | namespace benchmark { 8 | namespace data { 9 | 10 | #include 11 | const std::vector block413567{block413567_raw, block413567_raw + sizeof(block413567_raw) / sizeof(block413567_raw[0])}; 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/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/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 += sin(d); 17 | d += 0.000001; 18 | }); 19 | } 20 | 21 | BENCHMARK(Trig); 22 | -------------------------------------------------------------------------------- /src/bench/merkle_root.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016-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 | #include 8 | #include 9 | #include 10 | 11 | static void MerkleRoot(benchmark::Bench& bench) 12 | { 13 | FastRandomContext rng(true); 14 | std::vector leaves; 15 | leaves.resize(9001); 16 | for (auto& item : leaves) { 17 | item = rng.rand256(); 18 | } 19 | bench.batch(leaves.size()).unit("leaf").run([&] { 20 | bool mutation = false; 21 | uint256 hash = ComputeMerkleRoot(std::vector(leaves), &mutation); 22 | leaves[mutation] = hash; 23 | }); 24 | } 25 | 26 | BENCHMARK(MerkleRoot); 27 | -------------------------------------------------------------------------------- /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/compat/sanity.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-2014 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_SANITY_H 6 | #define BITCOIN_COMPAT_SANITY_H 7 | 8 | bool glibc_sanity_test(); 9 | bool glibcxx_sanity_test(); 10 | 11 | #endif // BITCOIN_COMPAT_SANITY_H 12 | -------------------------------------------------------------------------------- /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/compat/strnlen.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-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 | #if defined(HAVE_CONFIG_H) 6 | #include 7 | #endif 8 | 9 | #include 10 | 11 | #if HAVE_DECL_STRNLEN == 0 12 | size_t strnlen( const char *start, size_t max_len) 13 | { 14 | const char *end = (const char *)memchr(start, '\0', max_len); 15 | 16 | return end ? (size_t)(end - start) : max_len; 17 | } 18 | #endif // HAVE_DECL_STRNLEN 19 | -------------------------------------------------------------------------------- /src/config/.empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/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/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/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/blake3/.gitignore: -------------------------------------------------------------------------------- 1 | blake3 2 | example 3 | *.o 4 | -------------------------------------------------------------------------------- /src/crypto/blake3/example.c: -------------------------------------------------------------------------------- 1 | #include "blake3.h" 2 | #include 3 | #include 4 | 5 | int main() { 6 | // Initialize the hasher. 7 | blake3_hasher hasher; 8 | blake3_hasher_init(&hasher); 9 | 10 | // Read input bytes from stdin. 11 | unsigned char buf[65536]; 12 | ssize_t n; 13 | while ((n = read(STDIN_FILENO, buf, sizeof(buf))) > 0) { 14 | blake3_hasher_update(&hasher, buf, n); 15 | } 16 | 17 | // Finalize the hash. BLAKE3_OUT_LEN is the default output length, 32 bytes. 18 | uint8_t output[BLAKE3_OUT_LEN]; 19 | blake3_hasher_finalize(&hasher, output, BLAKE3_OUT_LEN); 20 | 21 | // Print the hash as hexadecimal. 22 | for (size_t i = 0; i < BLAKE3_OUT_LEN; i++) { 23 | printf("%02x", output[i]); 24 | } 25 | printf("\n"); 26 | return 0; 27 | } 28 | -------------------------------------------------------------------------------- /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/leveldb/.clang-format: -------------------------------------------------------------------------------- 1 | # Run manually to reformat a file: 2 | # clang-format -i --style=file 3 | # find . -iname '*.cc' -o -iname '*.h' -o -iname '*.h.in' | xargs clang-format -i --style=file 4 | BasedOnStyle: Google 5 | DerivePointerAlignment: false 6 | 7 | # Public headers are in a different location in the internal Google repository. 8 | # Order them so that when imported to the authoritative repository they will be 9 | # in correct alphabetical order. 10 | IncludeCategories: 11 | - Regex: '^(<|"(benchmarks|db|helpers)/)' 12 | Priority: 1 13 | - Regex: '^"(leveldb)/' 14 | Priority: 2 15 | - Regex: '^(<|"(issues|port|table|third_party|util)/)' 16 | Priority: 3 17 | - Regex: '.*' 18 | Priority: 4 19 | -------------------------------------------------------------------------------- /src/leveldb/.gitignore: -------------------------------------------------------------------------------- 1 | # Editors. 2 | *.sw* 3 | .vscode 4 | .DS_Store 5 | 6 | # Build directory. 7 | build/ 8 | out/ 9 | -------------------------------------------------------------------------------- /src/leveldb/AUTHORS: -------------------------------------------------------------------------------- 1 | # Names should be added to this file like so: 2 | # Name or Organization 3 | 4 | Google Inc. 5 | 6 | # Initial version authors: 7 | Jeffrey Dean 8 | Sanjay Ghemawat 9 | 10 | # Partial list of contributors: 11 | Kevin Regan 12 | Johan Bilien 13 | -------------------------------------------------------------------------------- /src/leveldb/NEWS: -------------------------------------------------------------------------------- 1 | Release 1.2 2011-05-16 2 | ---------------------- 3 | 4 | Fixes for larger databases (tested up to one billion 100-byte entries, 5 | i.e., ~100GB). 6 | 7 | (1) Place hard limit on number of level-0 files. This fixes errors 8 | of the form "too many open files". 9 | 10 | (2) Fixed memtable management. Before the fix, a heavy write burst 11 | could cause unbounded memory usage. 12 | 13 | A fix for a logging bug where the reader would incorrectly complain 14 | about corruption. 15 | 16 | Allow public access to WriteBatch contents so that users can easily 17 | wrap a DB. 18 | -------------------------------------------------------------------------------- /src/leveldb/TODO: -------------------------------------------------------------------------------- 1 | ss 2 | - Stats 3 | 4 | db 5 | - Maybe implement DB::BulkDeleteForRange(start_key, end_key) 6 | that would blow away files whose ranges are entirely contained 7 | within [start_key..end_key]? For Chrome, deletion of obsolete 8 | object stores, etc. can be done in the background anyway, so 9 | probably not that important. 10 | - There have been requests for MultiGet. 11 | 12 | After a range is completely deleted, what gets rid of the 13 | corresponding files if we do no future changes to that range. Make 14 | the conditions for triggering compactions fire in more situations? 15 | -------------------------------------------------------------------------------- /src/leveldb/cmake/leveldbConfig.cmake: -------------------------------------------------------------------------------- 1 | include("${CMAKE_CURRENT_LIST_DIR}/leveldbTargets.cmake") 2 | -------------------------------------------------------------------------------- /src/leveldb/helpers/memenv/memenv.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 The LevelDB 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 STORAGE_LEVELDB_HELPERS_MEMENV_MEMENV_H_ 6 | #define STORAGE_LEVELDB_HELPERS_MEMENV_MEMENV_H_ 7 | 8 | #include "leveldb/export.h" 9 | 10 | namespace leveldb { 11 | 12 | class Env; 13 | 14 | // Returns a new environment that stores its data in memory and delegates 15 | // all non-file-storage tasks to base_env. The caller must delete the result 16 | // when it is no longer needed. 17 | // *base_env must remain live while the result is in use. 18 | LEVELDB_EXPORT Env* NewMemEnv(Env* base_env); 19 | 20 | } // namespace leveldb 21 | 22 | #endif // STORAGE_LEVELDB_HELPERS_MEMENV_MEMENV_H_ 23 | -------------------------------------------------------------------------------- /src/leveldb/port/README.md: -------------------------------------------------------------------------------- 1 | This directory contains interfaces and implementations that isolate the 2 | rest of the package from platform details. 3 | 4 | Code in the rest of the package includes "port.h" from this directory. 5 | "port.h" in turn includes a platform specific "port_.h" file 6 | that provides the platform specific implementation. 7 | 8 | See port_stdcxx.h for an example of what must be provided in a platform 9 | specific header file. 10 | 11 | -------------------------------------------------------------------------------- /src/leveldb/port/port.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 The LevelDB 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 STORAGE_LEVELDB_PORT_PORT_H_ 6 | #define STORAGE_LEVELDB_PORT_PORT_H_ 7 | 8 | #include 9 | 10 | // Include the appropriate platform specific file below. If you are 11 | // porting to a new platform, see "port_example.h" for documentation 12 | // of what the new port_.h file must provide. 13 | #if defined(LEVELDB_PLATFORM_POSIX) || defined(LEVELDB_PLATFORM_WINDOWS) 14 | #include "port/port_stdcxx.h" 15 | #elif defined(LEVELDB_PLATFORM_CHROMIUM) 16 | #include "port/port_chromium.h" 17 | #endif 18 | 19 | #endif // STORAGE_LEVELDB_PORT_PORT_H_ 20 | -------------------------------------------------------------------------------- /src/leveldb/util/filter_policy.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2012 The LevelDB 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 "leveldb/filter_policy.h" 6 | 7 | namespace leveldb { 8 | 9 | FilterPolicy::~FilterPolicy() {} 10 | 11 | } // namespace leveldb 12 | -------------------------------------------------------------------------------- /src/leveldb/util/hash.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 The LevelDB 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 | // Simple hash function used for internal data structures 6 | 7 | #ifndef STORAGE_LEVELDB_UTIL_HASH_H_ 8 | #define STORAGE_LEVELDB_UTIL_HASH_H_ 9 | 10 | #include 11 | #include 12 | 13 | namespace leveldb { 14 | 15 | uint32_t Hash(const char* data, size_t n, uint32_t seed); 16 | 17 | } // namespace leveldb 18 | 19 | #endif // STORAGE_LEVELDB_UTIL_HASH_H_ 20 | -------------------------------------------------------------------------------- /src/leveldb/util/options.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 The LevelDB 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 "leveldb/options.h" 6 | 7 | #include "leveldb/comparator.h" 8 | #include "leveldb/env.h" 9 | 10 | namespace leveldb { 11 | 12 | Options::Options() : comparator(BytewiseComparator()), env(Env::Default()) {} 13 | 14 | } // namespace leveldb 15 | -------------------------------------------------------------------------------- /src/libmw/.gitignore: -------------------------------------------------------------------------------- 1 | out/ 2 | build/ 3 | bin/ 4 | build-aux/ 5 | 6 | .vs/ 7 | CMakeSettings.json 8 | libmw-config.h 9 | stamp-h1 -------------------------------------------------------------------------------- /src/libmw/deps/caches/include/caches/Cache.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "internal/cache.hpp" 4 | #include "internal/fifo_cache_policy.hpp" 5 | #include "internal/lru_cache_policy.hpp" 6 | 7 | template 8 | using FIFOCache = typename caches::fixed_sized_cache>; 9 | 10 | template 11 | using LRUCache = typename caches::fixed_sized_cache>; -------------------------------------------------------------------------------- /src/libmw/deps/ghc/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/libmw/deps/ghc/LICENSE -------------------------------------------------------------------------------- /src/libmw/deps/ghc/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/libmw/deps/ghc/README.md -------------------------------------------------------------------------------- /src/libmw/include/mw/common/Macros.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define MW_NAMESPACE namespace mw { 4 | #define MMR_NAMESPACE namespace mmr { 5 | #define TEST_NAMESPACE namespace test { 6 | #define END_NAMESPACE } -------------------------------------------------------------------------------- /src/libmw/include/mw/crypto/SecretKeys.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | class SecretKeys 6 | { 7 | public: 8 | static SecretKeys From(const SecretKey& secret_key); 9 | 10 | static SecretKeys Random() 11 | { 12 | return SecretKeys::From(SecretKey::Random()); 13 | } 14 | 15 | const SecretKey& Total() const noexcept { return m_key; } 16 | 17 | SecretKeys& Add(const SecretKey& secret_key); 18 | SecretKeys& Mul(const SecretKey& secret_key); 19 | 20 | private: 21 | SecretKeys(const SecretKey& key) 22 | : m_key(key) {} 23 | 24 | SecretKey m_key; 25 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/db/LeafDB.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | // Forward Declarations 8 | class Database; 9 | 10 | class LeafDB 11 | { 12 | public: 13 | LeafDB(const char prefix, mw::DBWrapper* pDBWrapper, mw::DBBatch* pBatch = nullptr); 14 | ~LeafDB(); 15 | 16 | std::unique_ptr Get(const mmr::LeafIndex& idx) const; 17 | void Add(const std::vector& leaves); 18 | void Remove(const std::vector& indices); 19 | void RemoveAll(); 20 | 21 | private: 22 | char m_prefix; 23 | std::unique_ptr m_pDatabase; 24 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/exceptions/CryptoException.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #define ThrowCrypto(msg) throw CryptoException(msg, __FUNCTION__) 7 | #define ThrowCrypto_F(msg, ...) throw CryptoException(StringUtil::Format(msg, __VA_ARGS__), __FUNCTION__) 8 | 9 | class CryptoException : public LTCException 10 | { 11 | public: 12 | CryptoException(const std::string& message, const std::string& function) 13 | : LTCException("CryptoException", message, function) 14 | { 15 | 16 | } 17 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/exceptions/DatabaseException.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #define ThrowDatabase(msg) throw DatabaseException(msg, __FUNCTION__) 7 | #define ThrowDatabase_F(msg, ...) throw DatabaseException(StringUtil::Format(msg, __VA_ARGS__), __FUNCTION__) 8 | 9 | class DatabaseException : public LTCException 10 | { 11 | public: 12 | DatabaseException(const std::string& message, const std::string& function) 13 | : LTCException("DatabaseException", message, function) 14 | { 15 | 16 | } 17 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/exceptions/DeserializationException.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #define ThrowDeserialization(msg) throw DeserializationException(msg, __FUNCTION__) 7 | #define ThrowDeserialization_F(msg, ...) throw DeserializationException(StringUtil::Format(msg, __VA_ARGS__), __FUNCTION__) 8 | 9 | class DeserializationException : public LTCException 10 | { 11 | public: 12 | DeserializationException(const std::string& message, const std::string& function) 13 | : LTCException("DeserializationException", message, function) 14 | { 15 | 16 | } 17 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/exceptions/FileException.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #define ThrowFile(msg) throw FileException(msg, __FUNCTION__) 7 | #define ThrowFile_F(msg, ...) throw FileException(StringUtil::Format(msg, __VA_ARGS__), __FUNCTION__) 8 | 9 | class FileException : public LTCException 10 | { 11 | public: 12 | FileException(const std::string& message, const std::string& function) 13 | : LTCException("FileException", message, function) 14 | { 15 | 16 | } 17 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/exceptions/InsufficientFundsException.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #define ThrowInsufficientFunds(msg) throw InsufficientFundsException(msg, __FUNCTION__) 7 | #define ThrowInsufficientFunds_F(msg, ...) throw InsufficientFundsException(StringUtil::Format(msg, __VA_ARGS__), __FUNCTION__) 8 | 9 | class InsufficientFundsException : public LTCException 10 | { 11 | public: 12 | InsufficientFundsException(const std::string& message, const std::string& function) 13 | : LTCException("InsufficientFundsException", message, function) 14 | { 15 | 16 | } 17 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/exceptions/NotFoundException.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #define ThrowNotFound(msg) throw NotFoundException(msg, __FUNCTION__) 7 | #define ThrowNotFound_F(msg, ...) throw NotFoundException(StringUtil::Format(msg, __VA_ARGS__), __FUNCTION__) 8 | 9 | class NotFoundException : public LTCException 10 | { 11 | public: 12 | NotFoundException(const std::string& message, const std::string& function) 13 | : LTCException("NotFoundException", message, function) 14 | { 15 | 16 | } 17 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/models/crypto/ProofData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | struct ProofData 8 | { 9 | Commitment commitment; 10 | RangeProof::CPtr pRangeProof; 11 | std::vector extraData; 12 | 13 | inline bool operator==(const ProofData& rhs) const noexcept 14 | { 15 | assert(rhs.pRangeProof != nullptr); 16 | 17 | return commitment == rhs.commitment 18 | && *pRangeProof == *rhs.pRangeProof 19 | && extraData == rhs.extraData; 20 | } 21 | 22 | inline bool operator!=(const ProofData& rhs) const noexcept { return !(rhs == *this); } 23 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/models/crypto/ProofMessage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Copyright (c) 2018-2019 David Burkett 4 | // Distributed under the MIT software license, see the accompanying 5 | // file LICENSE or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | #include 8 | 9 | class ProofMessage 10 | { 11 | public: 12 | ProofMessage() = default; 13 | ProofMessage(BigInt<20> bytes) : m_bytes(std::move(bytes)) { } 14 | 15 | const BigInt<20>& GetBytes() const { return m_bytes; } 16 | const uint8_t* data() const { return m_bytes.data(); } 17 | 18 | private: 19 | BigInt<20> m_bytes; 20 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/models/wallet/Recipient.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | MW_NAMESPACE 8 | 9 | struct Recipient { 10 | CAmount amount; 11 | StealthAddress address; 12 | }; 13 | 14 | END_NAMESPACE -------------------------------------------------------------------------------- /src/libmw/include/mw/node/BlockValidator.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | class BlockValidator 6 | { 7 | public: 8 | BlockValidator() = default; 9 | 10 | static bool ValidateBlock( 11 | const mw::Block::CPtr& pBlock, 12 | const std::vector& pegInCoins, 13 | const std::vector& pegOutCoins 14 | ) noexcept; 15 | 16 | private: 17 | static void ValidatePegInCoins( 18 | const mw::Block::CPtr& pBlock, 19 | const std::vector& pegInCoins 20 | ); 21 | 22 | static void ValidatePegOutCoins( 23 | const mw::Block::CPtr& pBlock, 24 | const std::vector& pegOutCoins 25 | ); 26 | }; -------------------------------------------------------------------------------- /src/libmw/include/mw/util/VectorUtil.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Copyright (c) 2018-2019 David Burkett 4 | // Distributed under the MIT software license, see the accompanying 5 | // file LICENSE or http://www.opensource.org/licenses/mit-license.php. 6 | 7 | #include 8 | #include 9 | 10 | class VectorUtil 11 | { 12 | public: 13 | template 14 | static std::vector ToPointerVec(std::vector& in) 15 | { 16 | std::vector out; 17 | out.reserve(in.size()); 18 | std::transform( 19 | in.begin(), in.end(), 20 | std::back_inserter(out), 21 | [](T& value) { return &value; } 22 | ); 23 | 24 | return out; 25 | } 26 | }; -------------------------------------------------------------------------------- /src/libmw/src/crypto/Hasher.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define BLAKE3_NO_AVX512 1 4 | #define BLAKE3_NO_AVX2 1 5 | #define BLAKE3_NO_SSE41 1 6 | #define BLAKE3_NO_SSE2 1 7 | extern "C" { 8 | #include 9 | #include 10 | #include 11 | } 12 | 13 | mw::Hash Hashed(const std::vector& serialized) 14 | { 15 | Hasher hasher; 16 | hasher.write((char*)serialized.data(), serialized.size()); 17 | return hasher.hash(); 18 | } 19 | 20 | mw::Hash Hashed(const Traits::ISerializable& serializable) 21 | { 22 | return Hashed(serializable.Serialized()); 23 | } -------------------------------------------------------------------------------- /src/libmw/src/db/common/DBEntry.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | template::value>> 9 | struct DBEntry 10 | { 11 | DBEntry(const std::string& _key, const std::shared_ptr& _item) 12 | : key(_key), item(_item) { } 13 | 14 | DBEntry(const std::string& _key, T _item) 15 | : key(_key), item(std::make_shared(std::move(_item))) { } 16 | 17 | std::string key; 18 | std::shared_ptr item; 19 | }; -------------------------------------------------------------------------------- /src/libmw/src/db/common/DBTable.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "DBEntry.h" 4 | 5 | #include 6 | #include 7 | 8 | class DBTable 9 | { 10 | public: 11 | DBTable(const char prefix) 12 | : m_prefix(prefix) { } 13 | 14 | std::string BuildKey(const std::string& itemKey) const noexcept { return m_prefix + itemKey; } 15 | 16 | template::value>> 18 | std::string BuildKey(const DBEntry& item) const noexcept { return BuildKey(item.key); } 19 | 20 | char GetPrefix() const noexcept { return m_prefix; } 21 | 22 | private: 23 | char m_prefix; 24 | }; -------------------------------------------------------------------------------- /src/libmw/src/db/common/SerializableVec.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | class SerializableVec : public Traits::ISerializable 6 | { 7 | public: 8 | SerializableVec() = default; 9 | SerializableVec(std::vector bytes) : m_bytes(std::move(bytes)) {} 10 | 11 | const std::vector& Get() const { return m_bytes; } 12 | 13 | IMPL_SERIALIZABLE(SerializableVec, obj) 14 | { 15 | READWRITE(obj.m_bytes); 16 | } 17 | 18 | private: 19 | std::vector m_bytes; 20 | }; -------------------------------------------------------------------------------- /src/libmw/src/mmr/IMMR.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace mmr; 5 | 6 | mw::Hash IMMR::Root() const 7 | { 8 | const uint64_t num_nodes = GetNumNodes(); 9 | 10 | // Find the "peaks" 11 | std::vector peak_indices = MMRUtil::CalcPeakIndices(num_nodes); 12 | 13 | // Bag 'em 14 | mw::Hash hash; 15 | for (auto iter = peak_indices.crbegin(); iter != peak_indices.crend(); iter++) { 16 | mw::Hash peakHash = GetHash(*iter); 17 | if (hash.IsZero()) { 18 | hash = peakHash; 19 | } else { 20 | hash = MMRUtil::CalcParentHash(Index::At(num_nodes), peakHash, hash); 21 | } 22 | } 23 | 24 | return hash; 25 | } -------------------------------------------------------------------------------- /src/libmw/src/models/block/Block.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | 6 | void mw::Block::Validate() const 7 | { 8 | if (m_pHeader->GetNumKernels() != m_body.GetKernels().size()) { 9 | ThrowValidation(EConsensusError::MMR_MISMATCH); 10 | } 11 | 12 | m_body.Validate(); 13 | 14 | StealthSumValidator::Validate(m_pHeader->GetStealthOffset(), m_body); 15 | 16 | MemMMR kernel_mmr; 17 | std::for_each( 18 | GetKernels().cbegin(), GetKernels().cend(), 19 | [&kernel_mmr](const Kernel& kernel) { kernel_mmr.Add(kernel); } 20 | ); 21 | if (m_pHeader->GetKernelRoot() != kernel_mmr.Root()) { 22 | ThrowValidation(EConsensusError::MMR_MISMATCH); 23 | } 24 | } -------------------------------------------------------------------------------- /src/libmw/src/models/crypto/Commitment.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | Commitment Commitment::Random() 8 | { 9 | return Commitment::Blinded(BlindingFactor::Random(), GetRand(MAX_MONEY)); 10 | } 11 | 12 | Commitment Commitment::Switch(const BlindingFactor& blind, const uint64_t value) 13 | { 14 | return Pedersen::Commit(value, Pedersen::BlindSwitch(blind, value)); 15 | } 16 | 17 | Commitment Commitment::Blinded(const BlindingFactor& blind, const uint64_t value) 18 | { 19 | return Pedersen::Commit(value, blind); 20 | } 21 | 22 | Commitment Commitment::Transparent(const uint64_t value) 23 | { 24 | return Pedersen::CommitTransparent(value); 25 | } -------------------------------------------------------------------------------- /src/libmw/test/framework/include/test_framework/TestMWEB.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | struct MWEBTestingSetup : public BasicTestingSetup { 8 | explicit MWEBTestingSetup() 9 | : BasicTestingSetup(CBaseChainParams::MAIN) 10 | { 11 | m_db = std::make_unique(GetDataDir() / "db", 1 << 15); 12 | m_mweb_db = std::make_shared(m_db.get()); 13 | } 14 | 15 | virtual ~MWEBTestingSetup() = default; 16 | 17 | mw::DBWrapper::Ptr GetDB() { return m_mweb_db; } 18 | 19 | private: 20 | std::unique_ptr m_db; 21 | std::shared_ptr m_mweb_db; 22 | }; -------------------------------------------------------------------------------- /src/libmw/test/framework/src/models/Tx.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | test::Tx test::Tx::CreatePegIn(const CAmount amount, const CAmount fee) 8 | { 9 | return test::TxBuilder() 10 | .AddPeginKernel(amount, fee) 11 | .AddOutput(amount, SecretKey::Random(), StealthAddress::Random()) 12 | .Build(); 13 | } 14 | 15 | test::Tx test::Tx::CreatePegOut(const test::TxOutput& input, const CAmount fee) 16 | { 17 | return test::TxBuilder() 18 | .AddInput(input) 19 | .AddPegoutKernel(input.GetAmount() - fee, fee, true) 20 | .Build(); 21 | } -------------------------------------------------------------------------------- /src/libmw/test/tests/crypto/Test_Keys.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 The Litecoin 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 | #include 9 | 10 | BOOST_FIXTURE_TEST_SUITE(TestKeys, MWEBTestingSetup) 11 | 12 | BOOST_AUTO_TEST_CASE(KeysTest) 13 | { 14 | SecretKey key1 = SecretKey::Random(); 15 | SecretKey key2 = SecretKey::Random(); 16 | SecretKey sum_keys = Blinds().Add(key1).Add(key2).ToKey(); 17 | PublicKey pubsum1 = Keys::From(key1).Add(key2).PubKey(); 18 | 19 | BOOST_REQUIRE(PublicKey::From(sum_keys) == pubsum1); 20 | } 21 | 22 | BOOST_AUTO_TEST_SUITE_END() -------------------------------------------------------------------------------- /src/libmw/test/tests/node/Test_CoinsView.cpp: -------------------------------------------------------------------------------- 1 | // MW: TODO - Write tests for CoinsViewCache::ApplyBlock using invalid blocks: 2 | // * Input commitment not in UTXO set 3 | // * Input's output pubkey doesn't match UTXO's receiver pubkey (K_o) 4 | // * Invalid output PMMR root 5 | // * Invalid output PMMR size 6 | // * Invalid leafset MMR root 7 | // * Invalid kernel excess sum -------------------------------------------------------------------------------- /src/mweb/mweb_miner.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | // Forward Declarations 7 | struct CBlockTemplate; 8 | 9 | namespace MWEB { 10 | 11 | class Miner 12 | { 13 | public: 14 | void NewBlock(const uint64_t nHeight); 15 | bool AddMWEBTransaction(CTxMemPool::txiter iter); 16 | void AddHogExTransaction(const CBlockIndex* pIndexPrev, CBlock* pblock, CBlockTemplate* pblocktemplate, CAmount& nFees); 17 | 18 | private: 19 | bool ValidatePegIns(const CTransactionRef& pTx, const std::vector& pegins) const; 20 | 21 | // MWEB Attributes 22 | mw::BlockBuilder::Ptr mweb_builder; 23 | CAmount mweb_amount_change; 24 | CAmount hogex_fees; 25 | int64_t hogex_sigops; 26 | std::vector hogex_inputs; 27 | std::vector hogex_outputs; 28 | }; 29 | 30 | } // namespace MWEB -------------------------------------------------------------------------------- /src/mweb/mweb_policy.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | // Forward Declarations 6 | class CTransaction; 7 | 8 | namespace MWEB { 9 | 10 | class Policy 11 | { 12 | public: 13 | /// 14 | /// Checks the transaction for violation of any MWEB-specific standard tx policies. 15 | /// 16 | /// The transaction to check. 17 | /// The reason it's non-standard, if any. 18 | /// True if the transaction is standard. 19 | static bool IsStandardTx(const CTransaction& tx, std::string& reason); 20 | }; 21 | 22 | } -------------------------------------------------------------------------------- /src/net_types.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_NET_TYPES_H 6 | #define BITCOIN_NET_TYPES_H 7 | 8 | #include 9 | 10 | class CBanEntry; 11 | class CSubNet; 12 | 13 | using banmap_t = std::map; 14 | 15 | #endif // BITCOIN_NET_TYPES_H 16 | -------------------------------------------------------------------------------- /src/node/coin.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_NODE_COIN_H 6 | #define BITCOIN_NODE_COIN_H 7 | 8 | #include 9 | 10 | class COutPoint; 11 | class Coin; 12 | struct NodeContext; 13 | 14 | /** 15 | * Look up unspent output information. Returns coins in the mempool and in the 16 | * current chain UTXO set. Iterates through all the keys in the map and 17 | * populates the values. 18 | * 19 | * @param[in] node The node context to use for lookup 20 | * @param[in,out] coins map to fill 21 | */ 22 | void FindCoins(const NodeContext& node, std::map& coins); 23 | 24 | #endif // BITCOIN_NODE_COIN_H 25 | -------------------------------------------------------------------------------- /src/node/context.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 | #include 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | NodeContext::NodeContext() {} 15 | NodeContext::~NodeContext() {} 16 | -------------------------------------------------------------------------------- /src/optional.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_OPTIONAL_H 6 | #define BITCOIN_OPTIONAL_H 7 | 8 | #include 9 | 10 | #include 11 | 12 | //! Substitute for C++17 std::optional 13 | template 14 | using Optional = boost::optional; 15 | 16 | //! Substitute for C++17 std::make_optional 17 | template 18 | Optional MakeOptional(bool condition, T&& value) 19 | { 20 | return boost::make_optional(condition, std::forward(value)); 21 | } 22 | 23 | //! Substitute for C++17 std::nullopt 24 | static auto& nullopt = boost::none; 25 | 26 | #endif // BITCOIN_OPTIONAL_H 27 | -------------------------------------------------------------------------------- /src/policy/settings.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-2010 Satoshi Nakamoto 2 | // Copyright (c) 2009-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 | #include 7 | 8 | #include 9 | #include 10 | 11 | bool fIsBareMultisigStd = DEFAULT_PERMIT_BAREMULTISIG; 12 | CFeeRate incrementalRelayFee = CFeeRate(DEFAULT_INCREMENTAL_RELAY_FEE); 13 | CFeeRate dustRelayFee = CFeeRate(DUST_RELAY_TX_FEE); 14 | unsigned int nBytesPerSigOp = DEFAULT_BYTES_PER_SIGOP; 15 | -------------------------------------------------------------------------------- /src/qt/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: FORCE 2 | all: FORCE 3 | $(MAKE) -C .. bitcoin_qt test_bitcoin_qt 4 | clean: FORCE 5 | $(MAKE) -C .. bitcoin_qt_clean test_bitcoin_qt_clean 6 | check: FORCE 7 | $(MAKE) -C .. test_bitcoin_qt_check 8 | bitcoin-qt bitcoin-qt.exe: FORCE 9 | $(MAKE) -C .. bitcoin_qt 10 | -------------------------------------------------------------------------------- /src/qt/coincontroltreewidget.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011-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_QT_COINCONTROLTREEWIDGET_H 6 | #define BITCOIN_QT_COINCONTROLTREEWIDGET_H 7 | 8 | #include 9 | #include 10 | 11 | class CoinControlTreeWidget : public QTreeWidget 12 | { 13 | Q_OBJECT 14 | 15 | public: 16 | explicit CoinControlTreeWidget(QWidget *parent = nullptr); 17 | 18 | protected: 19 | virtual void keyPressEvent(QKeyEvent *event) override; 20 | }; 21 | 22 | #endif // BITCOIN_QT_COINCONTROLTREEWIDGET_H 23 | -------------------------------------------------------------------------------- /src/qt/macdockiconhandler.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011-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_QT_MACDOCKICONHANDLER_H 6 | #define BITCOIN_QT_MACDOCKICONHANDLER_H 7 | 8 | #include 9 | 10 | /** macOS-specific Dock icon handler. 11 | */ 12 | class MacDockIconHandler : public QObject 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | static MacDockIconHandler *instance(); 18 | static void cleanup(); 19 | 20 | Q_SIGNALS: 21 | void dockIconClicked(); 22 | 23 | private: 24 | MacDockIconHandler(); 25 | }; 26 | 27 | #endif // BITCOIN_QT_MACDOCKICONHANDLER_H 28 | -------------------------------------------------------------------------------- /src/qt/macos_appnap.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011-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_QT_MACOS_APPNAP_H 6 | #define BITCOIN_QT_MACOS_APPNAP_H 7 | 8 | #include 9 | 10 | class CAppNapInhibitor final 11 | { 12 | public: 13 | explicit CAppNapInhibitor(); 14 | ~CAppNapInhibitor(); 15 | 16 | void disableAppNap(); 17 | void enableAppNap(); 18 | 19 | private: 20 | class CAppNapImpl; 21 | std::unique_ptr impl; 22 | }; 23 | 24 | #endif // BITCOIN_QT_MACOS_APPNAP_H 25 | -------------------------------------------------------------------------------- /src/qt/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018-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 | #include 8 | #include 9 | 10 | #include 11 | 12 | #include 13 | #include 14 | 15 | /** Translate string to current locale using Qt. */ 16 | extern const std::function G_TRANSLATION_FUN = [](const char* psz) { 17 | return QCoreApplication::translate("bitcoin-core", psz).toStdString(); 18 | }; 19 | UrlDecodeFn* const URL_DECODE = urlDecode; 20 | 21 | int main(int argc, char* argv[]) { return GuiMain(argc, argv); } 22 | -------------------------------------------------------------------------------- /src/qt/openuridialog.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011-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_QT_OPENURIDIALOG_H 6 | #define BITCOIN_QT_OPENURIDIALOG_H 7 | 8 | #include 9 | 10 | namespace Ui { 11 | class OpenURIDialog; 12 | } 13 | 14 | class OpenURIDialog : public QDialog 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | explicit OpenURIDialog(QWidget *parent); 20 | ~OpenURIDialog(); 21 | 22 | QString getURI(); 23 | 24 | protected Q_SLOTS: 25 | void accept() override; 26 | 27 | private: 28 | Ui::OpenURIDialog *ui; 29 | }; 30 | 31 | #endif // BITCOIN_QT_OPENURIDIALOG_H 32 | -------------------------------------------------------------------------------- /src/qt/res/animation/makespinner.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Copyright (c) 2014-2019 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 8 | FRAMEDIR=$(dirname $0) 9 | for i in {0..35} 10 | do 11 | frame=$(printf "%03d" $i) 12 | angle=$((i * 10)) 13 | convert $FRAMEDIR/../src/spinner.png -background "rgba(0,0,0,0.0)" -distort SRT $angle $FRAMEDIR/spinner-$frame.png 14 | done 15 | -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-000.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-001.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-002.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-003.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-004.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-005.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-006.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-007.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-008.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-009.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-010.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-011.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-012.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-013.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-014.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-015.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-016.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-017.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-018.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-018.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-019.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-020.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-021.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-022.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-023.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-024.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-025.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-025.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-026.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-026.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-027.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-027.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-028.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-028.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-029.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-029.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-030.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-030.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-031.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-031.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-032.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-032.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-033.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-033.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-034.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-034.png -------------------------------------------------------------------------------- /src/qt/res/animation/spinner-035.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/animation/spinner-035.png -------------------------------------------------------------------------------- /src/qt/res/icons/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/add.png -------------------------------------------------------------------------------- /src/qt/res/icons/address-book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/address-book.png -------------------------------------------------------------------------------- /src/qt/res/icons/bitcoin.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/bitcoin.icns -------------------------------------------------------------------------------- /src/qt/res/icons/bitcoin.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/bitcoin.ico -------------------------------------------------------------------------------- /src/qt/res/icons/bitcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/bitcoin.png -------------------------------------------------------------------------------- /src/qt/res/icons/bitcoin_testnet.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/bitcoin_testnet.ico -------------------------------------------------------------------------------- /src/qt/res/icons/chevron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/chevron.png -------------------------------------------------------------------------------- /src/qt/res/icons/clock1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/clock1.png -------------------------------------------------------------------------------- /src/qt/res/icons/clock2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/clock2.png -------------------------------------------------------------------------------- /src/qt/res/icons/clock3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/clock3.png -------------------------------------------------------------------------------- /src/qt/res/icons/clock4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/clock4.png -------------------------------------------------------------------------------- /src/qt/res/icons/clock5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/clock5.png -------------------------------------------------------------------------------- /src/qt/res/icons/connect0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/connect0.png -------------------------------------------------------------------------------- /src/qt/res/icons/connect1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/connect1.png -------------------------------------------------------------------------------- /src/qt/res/icons/connect2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/connect2.png -------------------------------------------------------------------------------- /src/qt/res/icons/connect3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/connect3.png -------------------------------------------------------------------------------- /src/qt/res/icons/connect4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/connect4.png -------------------------------------------------------------------------------- /src/qt/res/icons/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/edit.png -------------------------------------------------------------------------------- /src/qt/res/icons/editcopy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/editcopy.png -------------------------------------------------------------------------------- /src/qt/res/icons/editpaste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/editpaste.png -------------------------------------------------------------------------------- /src/qt/res/icons/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/export.png -------------------------------------------------------------------------------- /src/qt/res/icons/eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/eye.png -------------------------------------------------------------------------------- /src/qt/res/icons/eye_minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/eye_minus.png -------------------------------------------------------------------------------- /src/qt/res/icons/eye_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/eye_plus.png -------------------------------------------------------------------------------- /src/qt/res/icons/fontbigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/fontbigger.png -------------------------------------------------------------------------------- /src/qt/res/icons/fontsmaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/fontsmaller.png -------------------------------------------------------------------------------- /src/qt/res/icons/hd_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/hd_disabled.png -------------------------------------------------------------------------------- /src/qt/res/icons/hd_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/hd_enabled.png -------------------------------------------------------------------------------- /src/qt/res/icons/history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/history.png -------------------------------------------------------------------------------- /src/qt/res/icons/litecoin_splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/litecoin_splash.png -------------------------------------------------------------------------------- /src/qt/res/icons/lock_closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/lock_closed.png -------------------------------------------------------------------------------- /src/qt/res/icons/lock_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/lock_open.png -------------------------------------------------------------------------------- /src/qt/res/icons/network_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/network_disabled.png -------------------------------------------------------------------------------- /src/qt/res/icons/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/overview.png -------------------------------------------------------------------------------- /src/qt/res/icons/proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/proxy.png -------------------------------------------------------------------------------- /src/qt/res/icons/receive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/receive.png -------------------------------------------------------------------------------- /src/qt/res/icons/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/remove.png -------------------------------------------------------------------------------- /src/qt/res/icons/send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/send.png -------------------------------------------------------------------------------- /src/qt/res/icons/synced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/synced.png -------------------------------------------------------------------------------- /src/qt/res/icons/transaction0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/transaction0.png -------------------------------------------------------------------------------- /src/qt/res/icons/transaction2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/transaction2.png -------------------------------------------------------------------------------- /src/qt/res/icons/transaction_abandoned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/transaction_abandoned.png -------------------------------------------------------------------------------- /src/qt/res/icons/transaction_conflicted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/transaction_conflicted.png -------------------------------------------------------------------------------- /src/qt/res/icons/tx_inout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/tx_inout.png -------------------------------------------------------------------------------- /src/qt/res/icons/tx_input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/tx_input.png -------------------------------------------------------------------------------- /src/qt/res/icons/tx_mined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/tx_mined.png -------------------------------------------------------------------------------- /src/qt/res/icons/tx_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/tx_output.png -------------------------------------------------------------------------------- /src/qt/res/icons/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/icons/warning.png -------------------------------------------------------------------------------- /src/qt/res/src/spinner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/qt/res/src/spinner.png -------------------------------------------------------------------------------- /src/qt/res/src/tx_in.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /src/qt/test/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | $(MAKE) -C ../../ test_bitcoin_qt 3 | clean: 4 | $(MAKE) -C ../../ test_bitcoin_qt_clean 5 | check: 6 | $(MAKE) -C ../../ test_bitcoin_qt_check 7 | -------------------------------------------------------------------------------- /src/qt/test/addressbooktests.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018-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_QT_TEST_ADDRESSBOOKTESTS_H 6 | #define BITCOIN_QT_TEST_ADDRESSBOOKTESTS_H 7 | 8 | #include 9 | #include 10 | 11 | namespace interfaces { 12 | class Node; 13 | } // namespace interfaces 14 | 15 | class AddressBookTests : public QObject 16 | { 17 | public: 18 | AddressBookTests(interfaces::Node& node) : m_node(node) {} 19 | interfaces::Node& m_node; 20 | 21 | Q_OBJECT 22 | 23 | private Q_SLOTS: 24 | void addressBookTests(); 25 | }; 26 | 27 | #endif // BITCOIN_QT_TEST_ADDRESSBOOKTESTS_H 28 | -------------------------------------------------------------------------------- /src/qt/test/compattests.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016-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 | #if defined(HAVE_CONFIG_H) 6 | #include 7 | #endif 8 | 9 | #include 10 | 11 | #include 12 | 13 | void CompatTests::bswapTests() 14 | { 15 | // Sibling in bitcoin/src/test/bswap_tests.cpp 16 | uint16_t u1 = 0x1234; 17 | uint32_t u2 = 0x56789abc; 18 | uint64_t u3 = 0xdef0123456789abc; 19 | uint16_t e1 = 0x3412; 20 | uint32_t e2 = 0xbc9a7856; 21 | uint64_t e3 = 0xbc9a78563412f0de; 22 | QVERIFY(bswap_16(u1) == e1); 23 | QVERIFY(bswap_32(u2) == e2); 24 | QVERIFY(bswap_64(u3) == e3); 25 | } 26 | -------------------------------------------------------------------------------- /src/qt/test/compattests.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-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_QT_TEST_COMPATTESTS_H 6 | #define BITCOIN_QT_TEST_COMPATTESTS_H 7 | 8 | #include 9 | #include 10 | 11 | class CompatTests : public QObject 12 | { 13 | Q_OBJECT 14 | 15 | private Q_SLOTS: 16 | void bswapTests(); 17 | }; 18 | 19 | #endif // BITCOIN_QT_TEST_COMPATTESTS_H 20 | -------------------------------------------------------------------------------- /src/qt/test/rpcnestedtests.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2016-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_QT_TEST_RPCNESTEDTESTS_H 6 | #define BITCOIN_QT_TEST_RPCNESTEDTESTS_H 7 | 8 | #include 9 | #include 10 | 11 | namespace interfaces { 12 | class Node; 13 | } // namespace interfaces 14 | 15 | class RPCNestedTests : public QObject 16 | { 17 | public: 18 | RPCNestedTests(interfaces::Node& node) : m_node(node) {} 19 | interfaces::Node& m_node; 20 | 21 | Q_OBJECT 22 | 23 | private Q_SLOTS: 24 | void rpcNestedTests(); 25 | }; 26 | 27 | #endif // BITCOIN_QT_TEST_RPCNESTEDTESTS_H 28 | -------------------------------------------------------------------------------- /src/qt/test/uritests.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-2015 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_QT_TEST_URITESTS_H 6 | #define BITCOIN_QT_TEST_URITESTS_H 7 | 8 | #include 9 | #include 10 | 11 | class URITests : public QObject 12 | { 13 | Q_OBJECT 14 | 15 | private Q_SLOTS: 16 | void uriTests(); 17 | }; 18 | 19 | #endif // BITCOIN_QT_TEST_URITESTS_H 20 | -------------------------------------------------------------------------------- /src/qt/test/util.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018-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 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | void ConfirmMessage(QString* text, int msec) 13 | { 14 | QTimer::singleShot(msec, [text]() { 15 | for (QWidget* widget : QApplication::topLevelWidgets()) { 16 | if (widget->inherits("QMessageBox")) { 17 | QMessageBox* messageBox = qobject_cast(widget); 18 | if (text) *text = messageBox->text(); 19 | messageBox->defaultButton()->click(); 20 | } 21 | } 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /src/qt/test/util.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018-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_QT_TEST_UTIL_H 6 | #define BITCOIN_QT_TEST_UTIL_H 7 | 8 | #include 9 | 10 | /** 11 | * Press "Ok" button in message box dialog. 12 | * 13 | * @param text - Optionally store dialog text. 14 | * @param msec - Number of milliseconds to pause before triggering the callback. 15 | */ 16 | void ConfirmMessage(QString* text = nullptr, int msec = 0); 17 | 18 | #endif // BITCOIN_QT_TEST_UTIL_H 19 | -------------------------------------------------------------------------------- /src/qt/test/wallettests.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_QT_TEST_WALLETTESTS_H 6 | #define BITCOIN_QT_TEST_WALLETTESTS_H 7 | 8 | #include 9 | #include 10 | 11 | namespace interfaces { 12 | class Node; 13 | } // namespace interfaces 14 | 15 | class WalletTests : public QObject 16 | { 17 | public: 18 | WalletTests(interfaces::Node& node) : m_node(node) {} 19 | interfaces::Node& m_node; 20 | 21 | Q_OBJECT 22 | 23 | private Q_SLOTS: 24 | void walletTests(); 25 | }; 26 | 27 | #endif // BITCOIN_QT_TEST_WALLETTESTS_H 28 | -------------------------------------------------------------------------------- /src/randomenv.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-2010 Satoshi Nakamoto 2 | // Copyright (c) 2009-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 | #ifndef BITCOIN_RANDOMENV_H 7 | #define BITCOIN_RANDOMENV_H 8 | 9 | #include 10 | 11 | /** Gather non-cryptographic environment data that changes over time. */ 12 | void RandAddDynamicEnv(CSHA512& hasher); 13 | 14 | /** Gather non-cryptographic environment data that does not change over time. */ 15 | void RandAddStaticEnv(CSHA512& hasher); 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /src/rpc/mining.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 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_RPC_MINING_H 6 | #define BITCOIN_RPC_MINING_H 7 | 8 | /** Default max iterations to try in RPC generatetodescriptor, generatetoaddress, and generateblock. */ 9 | static const uint64_t DEFAULT_MAX_TRIES{1000000}; 10 | 11 | #endif // BITCOIN_RPC_MINING_H 12 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/TODO: -------------------------------------------------------------------------------- 1 | * Unit tests for fieldelem/groupelem, including ones intended to 2 | trigger fieldelem's boundary cases. 3 | * Complete constant-time operations for signing/keygen 4 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | autoreconf -if --warnings=all 4 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/libsecp256k1.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: libsecp256k1 7 | Description: Optimized C library for EC operations on curve secp256k1 8 | URL: https://github.com/bitcoin-core/secp256k1 9 | Version: @PACKAGE_VERSION@ 10 | Cflags: -I${includedir} 11 | Libs: -L${libdir} -lsecp256k1 12 | Libs.private: @SECP_LIBS@ 13 | 14 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/obj/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/secp256k1-zkp/obj/.gitignore -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/java/org_bitcoin_Secp256k1Context.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "org_bitcoin_Secp256k1Context.h" 4 | #include "include/secp256k1.h" 5 | 6 | SECP256K1_API jlong JNICALL Java_org_bitcoin_Secp256k1Context_secp256k1_1init_1context 7 | (JNIEnv* env, jclass classObject) 8 | { 9 | secp256k1_context *ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY); 10 | 11 | (void)classObject;(void)env; 12 | 13 | return (uintptr_t)ctx; 14 | } 15 | 16 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/java/org_bitcoin_Secp256k1Context.h: -------------------------------------------------------------------------------- 1 | /* DO NOT EDIT THIS FILE - it is machine generated */ 2 | #include 3 | #include "include/secp256k1.h" 4 | /* Header for class org_bitcoin_Secp256k1Context */ 5 | 6 | #ifndef _Included_org_bitcoin_Secp256k1Context 7 | #define _Included_org_bitcoin_Secp256k1Context 8 | #ifdef __cplusplus 9 | extern "C" { 10 | #endif 11 | /* 12 | * Class: org_bitcoin_Secp256k1Context 13 | * Method: secp256k1_init_context 14 | * Signature: ()J 15 | */ 16 | SECP256K1_API jlong JNICALL Java_org_bitcoin_Secp256k1Context_secp256k1_1init_1context 17 | (JNIEnv *, jclass); 18 | 19 | #ifdef __cplusplus 20 | } 21 | #endif 22 | #endif 23 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/aggsig/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_aggsig.h 2 | noinst_HEADERS += src/modules/aggsig/main_impl.h 3 | noinst_HEADERS += src/modules/aggsig/tests_impl.h 4 | if USE_BENCHMARK 5 | noinst_PROGRAMS += bench_aggsig 6 | bench_aggsig_SOURCES = src/bench_aggsig.c 7 | bench_aggsig_LDADD = libsecp256k1.la $(SECP_LIBS) $(COMMON_LIB) 8 | endif 9 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/bulletproofs/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_bulletproofs.h 2 | noinst_HEADERS += src/modules/bulletproofs/inner_product_impl.h 3 | noinst_HEADERS += src/modules/bulletproofs/rangeproof_impl.h 4 | noinst_HEADERS += src/modules/bulletproofs/main_impl.h 5 | noinst_HEADERS += src/modules/bulletproofs/tests_impl.h 6 | noinst_HEADERS += src/modules/bulletproofs/util.h 7 | if USE_BENCHMARK 8 | noinst_PROGRAMS += bench_bulletproof 9 | bench_bulletproof_SOURCES = src/bench_bulletproof.c 10 | bench_bulletproof_LDADD = libsecp256k1.la $(SECP_LIBS) 11 | bench_bulletproof_LDFLAGS = -static 12 | endif 13 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/commitment/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_commitment.h 2 | noinst_HEADERS += src/modules/commitment/main_impl.h 3 | noinst_HEADERS += src/modules/commitment/pedersen_impl.h 4 | noinst_HEADERS += src/modules/commitment/tests_impl.h 5 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/ecdh/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_ecdh.h 2 | noinst_HEADERS += src/modules/ecdh/main_impl.h 3 | noinst_HEADERS += src/modules/ecdh/tests_impl.h 4 | if USE_BENCHMARK 5 | noinst_PROGRAMS += bench_ecdh 6 | bench_ecdh_SOURCES = src/bench_ecdh.c 7 | bench_ecdh_LDADD = libsecp256k1.la $(SECP_LIBS) $(COMMON_LIB) 8 | endif 9 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/extrakeys/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_extrakeys.h 2 | noinst_HEADERS += src/modules/extrakeys/tests_impl.h 3 | noinst_HEADERS += src/modules/extrakeys/tests_exhaustive_impl.h 4 | noinst_HEADERS += src/modules/extrakeys/main_impl.h 5 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/generator/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_generator.h 2 | noinst_HEADERS += src/modules/generator/main_impl.h 3 | noinst_HEADERS += src/modules/generator/tests_impl.h 4 | if USE_BENCHMARK 5 | noinst_PROGRAMS += bench_generator 6 | bench_generator_SOURCES = src/bench_generator.c 7 | bench_generator_LDADD = libsecp256k1.la $(SECP_LIBS) 8 | bench_generator_LDFLAGS = -static 9 | endif 10 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/rangeproof/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_rangeproof.h 2 | noinst_HEADERS += src/modules/rangeproof/main_impl.h 3 | noinst_HEADERS += src/modules/rangeproof/borromean.h 4 | noinst_HEADERS += src/modules/rangeproof/borromean_impl.h 5 | noinst_HEADERS += src/modules/rangeproof/rangeproof.h 6 | noinst_HEADERS += src/modules/rangeproof/rangeproof_impl.h 7 | noinst_HEADERS += src/modules/rangeproof/tests_impl.h 8 | if USE_BENCHMARK 9 | noinst_PROGRAMS += bench_rangeproof 10 | bench_rangeproof_SOURCES = src/bench_rangeproof.c 11 | bench_rangeproof_LDADD = libsecp256k1.la $(SECP_LIBS) 12 | bench_rangeproof_LDFLAGS = -static 13 | endif 14 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/recovery/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_recovery.h 2 | noinst_HEADERS += src/modules/recovery/main_impl.h 3 | noinst_HEADERS += src/modules/recovery/tests_impl.h 4 | if USE_BENCHMARK 5 | noinst_PROGRAMS += bench_recover 6 | bench_recover_SOURCES = src/bench_recover.c 7 | bench_recover_LDADD = libsecp256k1.la $(SECP_LIBS) $(COMMON_LIB) 8 | endif 9 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/schnorrsig/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_schnorrsig.h 2 | noinst_HEADERS += src/modules/schnorrsig/main_impl.h 3 | noinst_HEADERS += src/modules/schnorrsig/tests_impl.h 4 | if USE_BENCHMARK 5 | noinst_PROGRAMS += bench_schnorrsig 6 | bench_schnorrsig_SOURCES = src/bench_schnorrsig.c 7 | bench_schnorrsig_LDADD = libsecp256k1.la $(SECP_LIBS) $(COMMON_LIB) 8 | endif 9 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/surjection/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_surjectionproof.h 2 | noinst_HEADERS += src/modules/surjection/main_impl.h 3 | noinst_HEADERS += src/modules/surjection/surjection.h 4 | noinst_HEADERS += src/modules/surjection/surjection_impl.h 5 | noinst_HEADERS += src/modules/surjection/tests_impl.h 6 | 7 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/modules/whitelist/Makefile.am.include: -------------------------------------------------------------------------------- 1 | include_HEADERS += include/secp256k1_whitelist.h 2 | noinst_HEADERS += src/modules/whitelist/whitelist_impl.h 3 | noinst_HEADERS += src/modules/whitelist/main_impl.h 4 | noinst_HEADERS += src/modules/whitelist/tests_impl.h 5 | if USE_BENCHMARK 6 | noinst_PROGRAMS += bench_whitelist 7 | bench_whitelist_SOURCES = src/bench_whitelist.c 8 | bench_whitelist_LDADD = libsecp256k1.la $(SECP_LIBS) 9 | bench_generator_LDFLAGS = -static 10 | endif 11 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/num_gmp.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 SECP256K1_NUM_REPR_H 8 | #define SECP256K1_NUM_REPR_H 9 | 10 | #include 11 | 12 | #define NUM_LIMBS ((256+GMP_NUMB_BITS-1)/GMP_NUMB_BITS) 13 | 14 | typedef struct { 15 | mp_limb_t data[2*NUM_LIMBS]; 16 | int neg; 17 | int limbs; 18 | } secp256k1_num; 19 | 20 | #endif /* SECP256K1_NUM_REPR_H */ 21 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/num_impl.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 SECP256K1_NUM_IMPL_H 8 | #define SECP256K1_NUM_IMPL_H 9 | 10 | #if defined HAVE_CONFIG_H 11 | #include "libsecp256k1-config.h" 12 | #endif 13 | 14 | #include "num.h" 15 | 16 | #if defined(USE_NUM_GMP) 17 | #include "num_gmp_impl.h" 18 | #elif defined(USE_NUM_NONE) 19 | /* Nothing. */ 20 | #else 21 | #error "Please select num implementation" 22 | #endif 23 | 24 | #endif /* SECP256K1_NUM_IMPL_H */ 25 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/scalar_8x32.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * Copyright (c) 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 SECP256K1_SCALAR_REPR_H 8 | #define SECP256K1_SCALAR_REPR_H 9 | 10 | #include 11 | 12 | /** A scalar modulo the group order of the secp256k1 curve. */ 13 | typedef struct { 14 | uint32_t d[8]; 15 | } secp256k1_scalar; 16 | 17 | #define SECP256K1_SCALAR_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {{(d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7)}} 18 | 19 | #endif /* SECP256K1_SCALAR_REPR_H */ 20 | -------------------------------------------------------------------------------- /src/secp256k1-zkp/src/scalar_low.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * Copyright (c) 2015 Andrew Poelstra * 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 SECP256K1_SCALAR_REPR_H 8 | #define SECP256K1_SCALAR_REPR_H 9 | 10 | #include 11 | 12 | /** A scalar modulo the group order of the secp256k1 curve. */ 13 | typedef uint32_t secp256k1_scalar; 14 | 15 | #define SECP256K1_SCALAR_CONST(d7, d6, d5, d4, d3, d2, d1, d0) (d0) 16 | 17 | #endif /* SECP256K1_SCALAR_REPR_H */ 18 | -------------------------------------------------------------------------------- /src/shutdown.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-2010 Satoshi Nakamoto 2 | // Copyright (c) 2009-2018 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 | #include 7 | 8 | #include 9 | 10 | static std::atomic fRequestShutdown(false); 11 | 12 | void StartShutdown() 13 | { 14 | fRequestShutdown = true; 15 | } 16 | void AbortShutdown() 17 | { 18 | fRequestShutdown = false; 19 | } 20 | bool ShutdownRequested() 21 | { 22 | return fRequestShutdown; 23 | } 24 | -------------------------------------------------------------------------------- /src/shutdown.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-2010 Satoshi Nakamoto 2 | // Copyright (c) 2009-2018 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_SHUTDOWN_H 7 | #define BITCOIN_SHUTDOWN_H 8 | 9 | void StartShutdown(); 10 | void AbortShutdown(); 11 | bool ShutdownRequested(); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /src/support/cleanse.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-2010 Satoshi Nakamoto 2 | // Copyright (c) 2009-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 | #ifndef BITCOIN_SUPPORT_CLEANSE_H 7 | #define BITCOIN_SUPPORT_CLEANSE_H 8 | 9 | #include 10 | 11 | /** Secure overwrite a buffer (possibly containing secret data) with zero-bytes. The write 12 | * operation will not be optimized out by the compiler. */ 13 | void memory_cleanse(void *ptr, size_t len); 14 | 15 | #endif // BITCOIN_SUPPORT_CLEANSE_H 16 | -------------------------------------------------------------------------------- /src/test/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | $(MAKE) -C .. bitcoin_test 3 | clean: 4 | $(MAKE) -C .. bitcoin_test_clean 5 | check: 6 | $(MAKE) -C .. bitcoin_test_check 7 | -------------------------------------------------------------------------------- /src/test/data/README.md: -------------------------------------------------------------------------------- 1 | Description 2 | ------------ 3 | 4 | This directory contains data-driven tests for various aspects of Litecoin. 5 | 6 | License 7 | -------- 8 | 9 | The data files in this directory are distributed under the MIT software 10 | license, see the accompanying file COPYING or 11 | http://www.opensource.org/licenses/mit-license.php. 12 | 13 | -------------------------------------------------------------------------------- /src/test/data/asmap.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/litecoin-project/litecoin/09a67c25495e2398437d6a388ee96fb6a266460e/src/test/data/asmap.raw -------------------------------------------------------------------------------- /src/test/fuzz/fuzz.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-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_TEST_FUZZ_FUZZ_H 6 | #define BITCOIN_TEST_FUZZ_FUZZ_H 7 | 8 | #include 9 | #include 10 | 11 | void initialize(); 12 | void test_one_input(const std::vector& buffer); 13 | 14 | #endif // BITCOIN_TEST_FUZZ_FUZZ_H 15 | -------------------------------------------------------------------------------- /src/test/fuzz/parse_script.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009-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 | #include