2020-11-02 12:40:54 -08:00
|
|
|
Notable changes
|
|
|
|
===============
|
|
|
|
|
|
|
|
Migration to Clang and static libc++
|
|
|
|
------------------------------------
|
|
|
|
|
|
|
|
`zcashd` now builds its C++ (and C) dependencies entirely with a pinned version
|
|
|
|
of Clang, and statically links libc++ instead of dynamically linking libstdc++.
|
|
|
|
This migration enables us to reliably use newer C++ features while supporting
|
|
|
|
older LTS platforms, be more confident in the compiler's optimisations, and
|
2020-11-03 01:52:59 -08:00
|
|
|
leverage security features such as sanitisers and efficient fuzzing. In future,
|
|
|
|
this will also allow optimizing across the boundary between Rust and C++.
|
2020-11-02 12:40:54 -08:00
|
|
|
|
|
|
|
The system compiler is still used to compile a few native dependencies (used by
|
|
|
|
the build machine to then compile `zcashd` for the target machine). These will
|
|
|
|
likely also be migrated to use the pinned Clang in a future release.
|
|
|
|
|
2020-11-03 01:51:08 -08:00
|
|
|
|
|
|
|
Fast sync for initial block download
|
|
|
|
------------------------------------
|
|
|
|
|
|
|
|
The `-ibdskiptxverification` flag allows faster synchronization during initial
|
|
|
|
block sync, by skipping transaction verification and instead verifying only PoW.
|
|
|
|
Note that this mode requires checkpoints to be enabled, to make sure that each
|
|
|
|
block under inspection is an ancestor of the latest checkpoint.
|
|
|
|
|
|
|
|
Convenient testing for invalid note plaintexts
|
|
|
|
----------------------------------------------
|
|
|
|
|
|
|
|
After the mainnet activation of Canopy (block 1046400), correct wallet software
|
|
|
|
will no longer produce v1 note plaintexts (with a lead byte of `0x01`). However,
|
|
|
|
v1 note plaintexts will continue to be accepted for a grace period of 32256
|
|
|
|
blocks (about 4 weeks), as specified in [ZIP 212](https://zips.z.cash/zip-0212).
|
|
|
|
The new `receiveunsafe` log category complains if an invalid note plaintext is
|
|
|
|
received.
|
|
|
|
|
|
|
|
Additional lightwalletd and light client RPCs
|
|
|
|
---------------------------------------------
|
|
|
|
|
|
|
|
- lightwalletd is now able to retrieve all UTXOs related to a t-address through
|
|
|
|
the `getaddressutxos` RPC. (Previously, this was only available to the Insight
|
|
|
|
Explorer.)
|
|
|
|
- The new `z_gettreestate` RPC returns the Sprout and Sapling treestate at a
|
|
|
|
given block height or block hash. This makes it easier for light clients to
|
|
|
|
generate checkpoints.
|
|
|
|
|
|
|
|
Update/removal of several cryptographic dependencies
|
|
|
|
----------------------------------------------------
|
|
|
|
|
|
|
|
This release updates secp256k1 to enable the GLV endomorphism optimisation by
|
|
|
|
default, after the recent expiry of the GLV patents. It also removes OpenSSL,
|
|
|
|
and replaces libsodium BLAKE2b usage with the [blake2b_simd Rust crate](https://github.com/oconnor663/blake2_simd).
|
2020-11-02 12:40:54 -08:00
|
|
|
Changelog
|
|
|
|
=========
|
|
|
|
|
|
|
|
Aditya Kulkarni (1):
|
|
|
|
Add a config option to skip transaction verification in IBD mode
|
|
|
|
|
|
|
|
Ahmad Kazi (1):
|
|
|
|
[Trivial] Add BITCOIN_FS_H endif footer in fs.h
|
|
|
|
|
|
|
|
Alfredo Garcia (9):
|
|
|
|
add timestamp to warnings
|
|
|
|
change order of returned pair, fix compatibility issue
|
|
|
|
revert result key change, fix calls to getime
|
|
|
|
add shielded balance to getwalletinfo
|
|
|
|
Add null check to feof.
|
|
|
|
allow wallet file to be outside datadir
|
|
|
|
Apply suggestions from code review
|
|
|
|
simplify TestBlockValidity
|
|
|
|
update function comment
|
|
|
|
|
|
|
|
Ben Wilson (4):
|
|
|
|
Added libtinfo5 to ci builder containers
|
|
|
|
Added Arch and Centos to script, added libtinfo5 for arch
|
|
|
|
Fixed Centos and Arch python requirements
|
|
|
|
Build python for debian9 and ubuntu16.04
|
|
|
|
|
|
|
|
Carl Dong (3):
|
|
|
|
depends: Build secondary deps statically.
|
|
|
|
depends: Purge libtool archives
|
|
|
|
scripted-diff: Run scripted-diff in subshell
|
|
|
|
|
|
|
|
Cory Fields (8):
|
|
|
|
leveldb: integrate leveldb into our buildsystem
|
|
|
|
build: No need to check for leveldb atomics
|
|
|
|
build: out-of-tree fixups
|
|
|
|
leveldb: enable runtime-detected crc32 instructions
|
|
|
|
build: verify that the assembler can handle crc32 functions
|
|
|
|
httpserver: use a future rather than relying on boost's try_join_for
|
|
|
|
httpserver: replace boost threads with std
|
|
|
|
devtools: add script to verify scriptable changes
|
|
|
|
|
|
|
|
Daira Hopwood (30):
|
|
|
|
CBufferedFile: assert that Fill() is only called when nReadPos == nSrcPos, and simplify based on that assumption.
|
|
|
|
CBufferedFile: use eof() method rather than feof(src) in error message.
|
|
|
|
Make some conversions explicit to reduce sanitizer warnings.
|
|
|
|
Rename z_*_balance fields of getwalletinfo output to shielded_*_balance
|
|
|
|
Fix grammar in error messages.
|
|
|
|
Ensure that the absolute path used in the test definitely does not exist.
|
|
|
|
Line-wrap addition to README.md
|
|
|
|
Minor additional OpenSSL scouring.
|
|
|
|
Avoid undefined behaviour in scriptnum tests.
|
|
|
|
Add assertions for CScriptNum[10] +/- int64_t to avoid the possibility of UB.
|
|
|
|
It's unnecessary to pass int64_t by const reference.
|
|
|
|
Cosmetics in CScriptNum code and tests.
|
|
|
|
Add logging when we receive an invalid note plaintext (using the "receiveunsafe" log category).
|
|
|
|
Fix a new warning about use of boost::bind placeholders after updating Boost. closes #4774
|
|
|
|
Beef up the CoC to address use of dog-whistles.
|
|
|
|
Fix warnings surfaced by compiling with clang++.
|
|
|
|
Use the current time as the timestamp if we override a misc warning.
|
|
|
|
qa/zcash/full_test_suite.py: changes needed for macOS. fixes #4785
|
|
|
|
qa/zcash/full_test_suite.py: print immediately if a test fails.
|
|
|
|
log(x)/log(2.0) can be written as log2(x).
|
|
|
|
Fix integer types in DisplayDuration.
|
|
|
|
Rename `time` to `duration` in `DisplayDuration`.
|
|
|
|
Update contrib/devtools/symbol-check.py
|
|
|
|
contrib/devtools/symbol-check.py: add info about Fedora-based distributions.
|
|
|
|
Comment and error message cleanups for transaction checks.
|
|
|
|
Add new copyright entries for build-aux/m4/ax_cxx_compile_stdcxx.m4
|
|
|
|
Fix death gtests on macOS by switching to the threadsafe style.
|
|
|
|
Fix an error reporting bug in "Checksum missing or mismatched ..."
|
|
|
|
Rename the FS_ZIP214_ECC funding stream to FS_ZIP214_BP. See also https://github.com/zcash/zips/pull/412 .
|
|
|
|
Gitian builds: Remove manual CFLAGS and CXXFLAGS from descriptor.
|
|
|
|
|
|
|
|
Dimitris Apostolou (5):
|
|
|
|
Remove reference to cargo-checksum.sh
|
|
|
|
Fix typos
|
|
|
|
Fix zeromq warning
|
|
|
|
Remove deprecated init.md
|
|
|
|
Remove Bitcoin release notes
|
|
|
|
|
|
|
|
Dimitris Tsapakidis (1):
|
|
|
|
Fixed multiple typos
|
|
|
|
|
|
|
|
Hennadii Stepanov (1):
|
|
|
|
Enable ShellCheck rules
|
|
|
|
|
|
|
|
Jack Grigg (79):
|
|
|
|
Assorted small changes to the locked pool manager
|
|
|
|
wallet: Add ANY_TADDR special string to z_sendmany
|
|
|
|
Allow multiple nuparams options in config file
|
|
|
|
depends: Switch to `cargo vendor` for Rust dependencies
|
|
|
|
QA: Comment out Rust crate checks in updatecheck.py
|
|
|
|
depends: Ensure that SOURCES_PATH exists before vendoring crates
|
|
|
|
wallet: Ignore coinbase UTXOs with z_sendmany ANY_TADDR
|
|
|
|
rpc: Fix comma spacing in example z_sendmany commands
|
|
|
|
Squashed 'src/leveldb/' changes from 20ca81f08..a31c8aa40
|
|
|
|
Squashed 'src/leveldb/' changes from a31c8aa40..196962ff0
|
|
|
|
Squashed 'src/leveldb/' changes from 196962ff0..c521b3ac6
|
|
|
|
Squashed 'src/leveldb/' changes from c521b3ac6..64052c76c
|
|
|
|
Squashed 'src/leveldb/' changes from 64052c76c..524b7e36a
|
|
|
|
Squashed 'src/leveldb/' changes from 524b7e36a..f545dfabf
|
|
|
|
depends: Remove cargo-checksum.sh
|
|
|
|
Replace libsodium's crypto_generichash_blake2b with blake2b_simd
|
|
|
|
blake2b: Allow consuming partial BLAKE2b output
|
|
|
|
tracing: Correctly override tracing::Span move constructors
|
|
|
|
build: Remove Rust staticlib naming workaround
|
|
|
|
depends: Update to latest config.guess & config.sub
|
|
|
|
build: out-of-tree fixups
|
|
|
|
leveldb: Assert that ssize_t is the same size as size_t on Windows
|
|
|
|
LockedPool: Fix LockedPool::free(nullptr) to be a no-op
|
|
|
|
LockedPool: Make Arena::free and LockedPool::free noexcept
|
|
|
|
allocators: Apply Allocator named requirements to secure_allocator::deallocate
|
|
|
|
depends: Update map of GCC canonical hosts to Rust targets
|
|
|
|
QA: Switch to x86_64-pc-linux-gnu for hard-coded Linux HOST
|
|
|
|
build: Switch to x86_64-pc-linux-gnu for codecov filtering
|
|
|
|
gitian: Switch from x86_64-unknown-linux-gnu to x86_64-linux-gnu
|
|
|
|
util: Remove OpenSSL multithreading infrastructure
|
|
|
|
Remove remaining OpenSSL references
|
|
|
|
QA: Remove OpenSSL from updatecheck.py
|
|
|
|
build: Remove a stray -lcrypto
|
|
|
|
Squashed 'src/secp256k1/' changes from 6ad5cdb42..8ab24e8da
|
|
|
|
build: Use the endomorphism optimization for secp256k1
|
|
|
|
depends: libevent 2.1.12
|
|
|
|
depends: ccache 3.7.11
|
|
|
|
depends: googletest 1.8.1
|
|
|
|
depends: utfcpp 3.1.2
|
|
|
|
depends: Use correct HOST for download-linux target
|
|
|
|
QA: Fix backporting bugs in httpbasics.py
|
|
|
|
depends: Boost 1.74.0
|
|
|
|
depends: ccache 3.7.12
|
|
|
|
cargo update
|
|
|
|
depends: ZeroMQ 4.3.3
|
|
|
|
FFI: Merge librustzcash_init_zksnark_params variants into one function
|
|
|
|
depends: Postpone current and scheduled Rust releases until 2021
|
|
|
|
MOVEONLY: Move logging code from util.{h,cpp} to new files
|
|
|
|
depends: Add Clang 8.0.0
|
|
|
|
depends: Use vendored Clang for native compilation
|
|
|
|
depends: Use vendored Clang for macOS cross-compilation
|
|
|
|
depends: Vendor LLD and use it for linking
|
|
|
|
depends: Add libc++ as a dependency
|
|
|
|
depends: Don't replace default CXXFLAGS in C++ dependencies
|
|
|
|
depends: Add multilib paths for Linux cross-compile
|
|
|
|
build: Statically link libc++
|
|
|
|
build: Add missing LIBUNIVALUE to Makefile.bench.include LDADD
|
|
|
|
depends: Fix "unused variables" warning when compiling zeromq for Windows
|
|
|
|
depends: Rename Boost libraries to follow MinGW/GCC convention
|
|
|
|
depends: Fix boost::iostreams usage on Windows with libc++
|
|
|
|
build: Compile secp256k1 with C99
|
|
|
|
build: Add -lpthread to univalue test LDFLAGS
|
|
|
|
qa: Disable FORTIFY_SOURCE checks
|
|
|
|
QA: Add native_clang and libcxx to updatecheck.py
|
|
|
|
test: Fix various pyflakes warnings
|
|
|
|
doc: Add Clang and libc++ migration to release notes
|
|
|
|
build: Update AX_CXX_COMPILE_STDCXX macro
|
|
|
|
build: Require and build with C++ 17
|
|
|
|
depends: Build C++ dependencies with C++ 17
|
|
|
|
Switch from std::random_shuffle to std::shuffle
|
|
|
|
Squashed 'src/secp256k1/' changes from 8ab24e8da..c6b6b8f1b
|
|
|
|
build: Update secp256k1 configure flags
|
|
|
|
Improve reject reasons for unmet shielded requirements
|
|
|
|
Add logging to CCoinsViewCache::HaveShieldedRequirements
|
|
|
|
utils: Remove unnecessary GetTempPath()
|
|
|
|
Add txid to "shielded requirements not met" messages
|
|
|
|
test/lint: Check for working changes before checking scripted diffs
|
|
|
|
tests: Update chained_joinsplits test for HaveShieldedRequirements API change
|
|
|
|
scripted-diff: Remove BOOST_STATIC_ASSERT
|
|
|
|
|
|
|
|
Jeffrey Czyz (2):
|
|
|
|
Fix compilation errors in support/lockedpool.cpp
|
|
|
|
Fix segfault in allocator_tests/arena_tests
|
|
|
|
|
|
|
|
Jeremy Rubin (1):
|
|
|
|
Fix subscript[0] potential bugs in key.cpp
|
|
|
|
|
|
|
|
John Newbery (1):
|
|
|
|
[docs] document scripted-diff
|
|
|
|
|
|
|
|
Jonas Schnelli (2):
|
|
|
|
NotifyBlockTip signal: switch from hash (uint256) to CBlockIndex*
|
|
|
|
Move uiInterface.NotifyBlockTip signal above the core/wallet signal
|
|
|
|
|
|
|
|
Kaz Wesley (3):
|
|
|
|
LockedPool: test handling of invalid allocations
|
|
|
|
LockedPool: fix explosion for illegal-sized alloc
|
|
|
|
LockedPool: avoid quadratic-time allocation
|
|
|
|
|
|
|
|
Kris Nuttycombe (14):
|
|
|
|
Prevent creation of shielded transactions in initial block download.
|
|
|
|
Revert the move of the `getBalanceZaddr` block for ease of review.
|
|
|
|
Fix forward declaration.
|
|
|
|
Remove redundant CheckBlock calls.
|
|
|
|
Reduce diff complexity.
|
|
|
|
Apply style suggestions from code review
|
|
|
|
-ibdskiptxverification must imply -checkpoints
|
|
|
|
Apply suggestions from code review
|
|
|
|
Ensure conflicting flags are reported as an error.
|
|
|
|
Reject incompatible flags in "Step 2"
|
|
|
|
Rename IBDSkipTxVerification back to ShouldCheckTransaction
|
|
|
|
Fix command-line help for -ibdskiptxverification
|
|
|
|
Fix invocation of updatecheck.py in make-release.py
|
|
|
|
Replace invalid characters in log message decoding.
|
|
|
|
|
|
|
|
Larry Ruane (4):
|
|
|
|
Flush witness data when consistent (part 2)
|
|
|
|
performance: auto params = CChainParams::GetConsensus()
|
|
|
|
allow getaddressutxos if -lightwalletd
|
|
|
|
add z_gettreestate rpc
|
|
|
|
|
|
|
|
Luke Dashjr (2):
|
|
|
|
lockedpool: When possible, use madvise to avoid including sensitive information in core dumps
|
|
|
|
Add MIT license to Makefiles
|
|
|
|
|
|
|
|
Marco Falke (3):
|
|
|
|
Limit scope of all global std::once_flag
|
|
|
|
Add extra LevelDB source to Makefile
|
|
|
|
test: Move linters to test/lint, add readme
|
|
|
|
|
|
|
|
Martin Ankerl (2):
|
|
|
|
Use best-fit strategy in Arena, now O(log(n)) instead O(n)
|
|
|
|
fix nits: variable naming, typos
|
|
|
|
|
|
|
|
Mustafa (2):
|
|
|
|
Add a source file for unit test utils.
|
|
|
|
Move GetTempPath() to testutil.
|
|
|
|
|
|
|
|
Nate Wilcox (3):
|
|
|
|
Link the README.md to the specific readthedocs.io page for building on Debian/Ubuntu.
|
|
|
|
Convert a sed command to a static patch file.
|
|
|
|
depends: fix a logging bug for multi-archive packages.
|
|
|
|
|
|
|
|
Nick (1):
|
|
|
|
[RPC] Add transaction size to JSON output
|
|
|
|
|
|
|
|
Pavel Janík (2):
|
|
|
|
Do not shadow variable, use deprecated MAP_ANON if MAP_ANONYMOUS is not defined.
|
|
|
|
Do not include env_win.cc on non-Windows systems
|
|
|
|
|
|
|
|
Pieter Wuille (2):
|
|
|
|
Remove some unused functions and methods
|
|
|
|
Fail on commit with VERIFY SCRIPT but no scripted-diff
|
|
|
|
|
|
|
|
Sean Bowe (6):
|
|
|
|
Update Rust to 1.44.1.
|
|
|
|
cargo update
|
|
|
|
Update to latest zcash_* and zkcrypto crates.
|
|
|
|
Postpone clang and libc++ dependency updates until after the 4.1.0 release.
|
|
|
|
make-release.py: Versioning changes for 4.1.0.
|
|
|
|
make-release.py: Updated manpages for 4.1.0.
|
|
|
|
|
|
|
|
Taylor Hornby (3):
|
|
|
|
Fix buffer overflows in P2PKH tests
|
|
|
|
Add a missing % to a string interpolation in rpc test framework
|
|
|
|
Fix undefined behavior in the test_bitcoin tests
|
|
|
|
|
|
|
|
Thomas Snider (1):
|
|
|
|
[trivial] Switched constants to sizeof()
|
|
|
|
|
|
|
|
Vasil Dimov (1):
|
|
|
|
lockedpool: avoid sensitive data in core files (FreeBSD)
|
|
|
|
|
|
|
|
Wladimir J. van der Laan (19):
|
|
|
|
wallet: Change CCrypter to use vectors with secure allocator
|
|
|
|
wallet: Get rid of LockObject and UnlockObject calls in key.h
|
|
|
|
support: Add LockedPool
|
|
|
|
rpc: Add `getmemoryinfo` call
|
|
|
|
bench: Add benchmark for lockedpool allocation/deallocation
|
|
|
|
http: Restrict maximum size of request line + headers
|
|
|
|
Replace scriptnum_test's normative ScriptNum implementation
|
|
|
|
build: remove libcrypto as internal dependency in libbitcoinconsensus.pc
|
|
|
|
http: Do a pending c++11 simplification
|
|
|
|
http: Add log message when work queue is full
|
|
|
|
http: Change boost::scoped_ptr to std::unique_ptr in HTTPRequest
|
|
|
|
http: use std::move to move HTTPRequest into HTTPWorkItem
|
|
|
|
Add fs.cpp/h
|
|
|
|
Replace includes of boost/filesystem.h with fs.h
|
|
|
|
Replace uses of boost::filesystem with fs
|
|
|
|
Use fsbridge for fopen and freopen
|
|
|
|
torcontrol: Use fs::path instead of std::string for private key path
|
|
|
|
Remove `namespace fs=fs`
|
|
|
|
test: Mention commit id in scripted diff error
|
|
|
|
|
|
|
|
fanquake (8):
|
|
|
|
build: remove SSL lib detection
|
|
|
|
build: remove OpenSSL detection and libs
|
|
|
|
depends: remove OpenSSL package
|
|
|
|
doc: remove OpenSSL from build instructions and licensing info
|
|
|
|
depends: Disable unused ZeroMQ features
|
|
|
|
depends: zeromq: disable draft classes and methods
|
|
|
|
build: only pass --disable-dependency-tracking to packages that understand it
|
|
|
|
build: pass --enable-option-checking to applicable packages
|
|
|
|
|
|
|
|
mruddy (1):
|
|
|
|
[depends, zmq, doc] avoid deprecated zeromq api functions
|
|
|
|
|
|
|
|
practicalswift (7):
|
|
|
|
Fix out-of-bounds write in case of failing mmap(...) in PosixLockedPageAllocator::AllocateLocked
|
|
|
|
Improve readability by removing redundant casts to same type (on all platforms)
|
|
|
|
tests: Remove OldSetKeyFromPassphrase/OldEncrypt/OldDecrypt
|
|
|
|
Remove unused Boost includes
|
|
|
|
Add "export LC_ALL=C" to all shell scripts
|
|
|
|
Add error handling: exit if cd fails
|
|
|
|
Use bash instead of POSIX sh. POSIX sh does not support arrays.
|
|
|
|
|
|
|
|
Jack Grigg (9):
|
|
|
|
Update license headers
|
|
|
|
leveldb: Fix typo
|
|
|
|
LockedPool: Switch to HTTPS URLs in licenses and comments
|
|
|
|
test: Fix LFSR period in comments
|
|
|
|
httpserver: Code style cleanups
|
|
|
|
depends: Update packages documentation for Zcash
|
|
|
|
depends: Add untested note to FreeBSD host
|
|
|
|
Update example scripted-diff comit in doc/developer-notes.md
|
|
|
|
Use HTTPS in script license headers
|
|
|
|
|
|
|
|
syd (1):
|
|
|
|
Add assert_raises_message to the python test framework.
|
|
|
|
|
|
|
|
Ying Tong Lai (11):
|
|
|
|
Add funding stream addresses to getblocksubsidy RPC output
|
|
|
|
Fix CScript encoding
|
|
|
|
Handle shielded address case
|
|
|
|
Minor cleanups
|
|
|
|
Only return address instead of CScript
|
|
|
|
Remove void declaration of ScriptPubKeyToJSON()
|
|
|
|
Postpone native_ccache 4.0
|
|
|
|
make-release.py: Versioning changes for 4.1.0-rc1.
|
|
|
|
make-release.py: Updated manpages for 4.1.0-rc1.
|
|
|
|
make-release.py: Updated release notes and changelog for 4.1.0-rc1.
|
|
|
|
Update release-notes-4.1.0-rc1.md
|
|
|
|
|
|
|
|
ying tong (1):
|
|
|
|
Apply suggestions from code review
|
|
|
|
|
|
|
|
Benjamin Winston (1):
|
|
|
|
Postponed dependency updates, refer to core team sync meeting.
|