zcashd/doc/release-notes/release-notes-4.0.0.md

291 lines
13 KiB
Markdown

Notable changes
===============
The mainnet activation of the Canopy network upgrade is supported by the 4.0.0
release, with an activation height of 1046400, which should occur roughly in the
middle of November — following the targeted EOS halt of our 3.1.0 release.
Please upgrade to this release, or any subsequent release, in order to follow
the Canopy network upgrade.
The following ZIPs are being deployed as part of this upgrade:
* [ZIP 207: Funding Streams](https://zips.z.cash/zip-0207) in conjunction with [ZIP 214: Consensus rules for a Zcash Development Fund](https://zips.z.cash/zip-0214)
* [ZIP 211: Disabling Addition of New Value to the Sprout Value Pool](https://zips.z.cash/zip-0211)
* [ZIP 212: Allow Recipient to Derive Sapling Ephemeral Secret from Note Plaintext](https://zips.z.cash/zip-0212)
* [ZIP 215: Explicitly Defining and Modifying Ed25519 Validation Rules](https://zips.z.cash/zip-0215)
In order to help the ecosystem prepare for the mainnet activation, Canopy has
already been activated on the Zcash testnet. Any node version 3.1.0 or higher,
including this release, supports the Canopy activation on testnet.
Disabling new value in the Sprout value pool
--------------------------------------------
After the mainnet activation of Canopy, it will not be possible to send funds to
Sprout z-addresses from any _other_ kind of address, as described in [ZIP 211](https://zips.z.cash/zip-0211).
It will still be possible to send funds _from_ a Sprout z-address and to send
funds between Sprout addresses. Users of Sprout z-addresses are encouraged to
use Sapling z-addresses instead, and to migrate their remaining Sprout funds
into a Sapling z-address using the migration utility in zcashd: set `migrate=1`
in your `zcash.conf` file, or use the `z_setmigration` RPC.
New logging system
------------------
The `zcashd` logging system is now powered by the Rust `tracing` crate. This
has two main benefits:
- `tracing` supports the concept of "spans", which represent periods of time
with a beginning and end. These enable logging additional information about
temporality and causality of events. (Regular log lines, which represent
moments in time, are called `events` in `tracing`.)
- Spans and events are structured, and can record typed data in addition to text
messages. This structure can then be filtered dynamically.
The existing `-debug=target` config flags are mapped to `tracing` log filters,
and will continue to correctly enable additional logging when starting `zcashd`.
A new `setlogfilter` RPC method has been introduced that enables reconfiguring
the log filter at runtime. See `zcash-cli help setlogfilter` for its syntax.
As a minor note, `zcashd` no longer reopens the `debug.log` file on `SIGHUP`.
This behaviour was originally introduced in upstream Bitcoin Core to support log
rotation using external tools. `tracing` supports log rotation internally (which
is currently disabled), as well as a variety of interesting backends (such as
`journald` and OpenTelemetry integration); we are investigating how these might
be exposed in future releases.
Compatibility
-------------
macOS versions earlier than 10.12 (Sierra) are no longer supported.
Changelog
=========
Alfredo Garcia (3):
only allow duplicates for certain options of the config
install bdb binaries
add more allowed duplicates
Andrew Chow (1):
Fix naming of macOS SDK and clarify version
Carl Dong (8):
contrib: macdeploy: Correctly generate macOS SDK
Adapt rest of tooling to new SDK naming scheme
native_cctools: Don't use libc++ from pinned clang
contrib: macdeploy: Use apple-sdk-tools instead of xar+pbzx
contrib: macdeploy: Remove historical extraction notes
depends: Decouple toolchain + binutils
depends: Specify path to native binaries as clang argument
depends: Add justifications for macOS clang flags
Charlie O'Keefe (1):
Remove 'jessie' (debian 8) from suites list in linux gitian descriptors
Cory Fields (14):
crypto: add AES 128/256 CBC classes
crypto: add aes cbc tests
crypter: fix the stored initialization vector size
crypter: constify encrypt/decrypt
crypter: hook up the new aes cbc classes
crypter: add a BytesToKey clone to replace the use of openssl
crypter: add tests for crypter
build: Enumerate ctaes rather than globbing
depends: bump MacOS toolchain
macos: Bump to xcode 11.3.1 and 10.15 SDK
darwin: pass mlinker-version so that clang enables new features
depends: specify libc++ header location for darwin
depends: enable lto support for Apple's ld64
depends: bump native_cctools for fixed lto with external clang
Daira Hopwood (7):
zcutil/distclean.sh: remove BDB utility programs.
Update .gitignore.
Fix a return status issue.
Update Makefile.am
Newer version of checksec.sh from https://github.com/slimm609/checksec.sh/commit/a6df608ac077689b2160e521db6601abc7b9e26e
Repair full_test_suite.py for new checksec.sh.
Clarify a comment about the ZF and MG addresses
Dimitris Apostolou (1):
Remove deprecated contrib utilities
Jack Grigg (65):
Move GrothProof and SproutProof definitions into zcash/Proof.hpp
Remove unused declarations left over from libsnark verification
Make ZCJoinSplit::prove static and remove ZCJoinSplit globals
Move ProofVerifier out of the libzcash namespace
Move JSDescription::Verify to ProofVerifier::VerifySprout
Skip Sprout proof verification for ProofVerifier::Disabled
Send alert to put pre-Heartwood nodes into safe mode.
Squashed 'src/crypto/ctaes/' content from commit 003a4acfc
build: shuffle gtest Makefile so that crypto can be used by the wallet
metrics: Collect general stats before clearing screen
Debian: Add copyright entries for ctaes and secp256k1
Revert "Rename FALLBACK_DOWNLOAD_PATH to PRIORITY_DOWNLOAD_PATH"
Revert "Try downloading from our mirror first to avoid headaches."
depends: Use FALLBACK_DOWNLOAD_PATH if the primary's hash doesn't match
test: Remove obsolete TransactionBuilder test
Add tracing to librustzcash dependencies
FFI wrapper around tracing crate
Replace C++ logging with tracing logging
Use a tracing EnvFilter directive for -debug flags
Add support for reloading the tracing filter
Add an RPC method for setting the tracing filter directives
Add support for tracing spans
Add some spans to the Zcash codebase
FFI: Extract common codeunit types into a rust/types.h header
tracing: Use 'static constexpr' hack in macros
wallet: Fix logging to satisfy constexpr requirements
FFI: Add missing <stddef.h> includes
init: Place additional constraints on pathDebug
rpc: Throw error in setlogfilter if filter reloading fails
tracing: Log field values that aren't valid UTF-8
tracing: Document macro arguments that MUST be static constant UTF-8 strings
doc: Update release notes for tracing backend
qa: Add tracing dependencies to updatecheck.py
depends: tracing-core 0.1.13
Revert "Add check-depends step to STAGE_COMMANDS list"
contrib: Update macdeploy README
depends: Rework Rust integration
depends: Add platform-specific overrides for download files
depends: Split check-packages and check-sources across categories
FFI: Fix tracing log path handling on Windows
tracing: Add MAP macro
tracing: Add support for event fields
tracing: Add support for span fields
tracing: Format field values with Display
Add fields to logging in CNode and UpdateTip
util: Use DEBUG level for LogPrint(), leaving INFO for LogPrintf()
tracing: Parse log_path into an Option<Path>
tracing: Rework tracing_init into a single function
init: Rework tracing_init call
init: Add spans for initialization and shutdown
Replace libsodium's randombytes_buf with rand_core::OsRng::fill_bytes
consensus: Add assertions for Params::HalvingHeight parameters
consensus: Document the empty conditional branch in ContextualCheckBlock
consensus: Statically check funding stream numerators and denominators
consensus: Clearly gate active funding stream elements on Canopy
Replace libsodium's crypto_sign with ed25519-zebra
ed25519: Panic (triggering abort) if nullptr passed into APIs
test: Update ZIP 215 test cases from ed25519-zebra
depends: Migrate to zcash_* 0.3.0 Rust crates
FFI: Remove circuit parameter hashes from librustzcash_init_zksnark_params
FFI: Migrate to bls12_381 and jubjub crates
depends: cargo update
qa: Update list of postponed crate versions
FFI: Rename to librustzcash_sapling_compute_cmu
FFI: Rename r to rcm
Kris Nuttycombe (13):
Remove amqp code and Proton library depenencies & flags.
Remove Proton license from contrib/debian/copyright
consensus: Clean up some whitespace and variable names
consensus: Refactor Sprout contextual rules to match the rest
consensus: Remove canopyActive gate around GetActiveFundingStreamElements
consensus: Combine heartwoodActive conditionals
consensus: Add a placeholder for !canopyActive
consensus: Move overwinterActive rules ahead of saplingActive rules
consensus: Combine saplingActive conditionals
consensus: Move Sapling-disabled Overwinter rules above Sapling rules
consensus: Reorder Overwinter+!Sapling rules
consensus: Remove redundant contextual consensus rules
Add comment in lieu of redundant overwinter version check & fix tests.
Larry Ruane (2):
flush wallet db (SetBestChain()) on clean shutdown
wallet: lock cs_main while accessing chainActive
LongShao007 (1):
fix bug of bdb.mk
Per Grön (11):
Get rid of implicit hidden dependencies between test .cpp files
Add missing #includes to test_block.cpp
Add actual header file for utilities in gtest/utils.cpp
Fix linkage issue with consts in primitives/block.h
Remove Checkpoints_tests.cpp
libsnark: Don't (implicitly) rely on other tests initializing the public params
Add missing libsnark initialization call
Don't clobber cwd in rpc_wallet_tests.cpp
Include header files within the source tree using "" instead of <>
Be consistent about what path to include bitcoin-config.h with
Be consistent with how to #include test data headers
Pieter Wuille (1):
Add ctaes-based constant time AES implementation
Sean Bowe (13):
Postpone boost 1.74.0 update
Postpone rust updates
make-release.py: Versioning changes for 4.0.0-rc1.
make-release.py: Updated manpages for 4.0.0-rc1.
make-release.py: Updated release notes and changelog for 4.0.0-rc1.
Add release notes to describe the Canopy network upgrade.
Update names of contributors in release notes.
Specify 4.0.0 in release notes
Add dev fund addresses for mainnet.
Set activation height for Canopy on mainnet.
Postpone updates for dependencies until after 4.0.0 release.
make-release.py: Versioning changes for 4.0.0.
make-release.py: Updated manpages for 4.0.0.
Taylor Hornby (5):
Implement system for postponing dependency updates.
Change release instructions to block the release when dependencies are not updated and not postponed.
Enforce pre-release dependency update check in make-release.py
Extend deadline for postponing dependency updates
Add new dependencies to updatecheck.py, add a flag we can use to have our CI test it.
Ariel Gabizon (1):
explain expiry error
Benjamin Winston (2):
Added support for afl-clang-fast.
Added libfuzzer support.
elbandi (3):
Allow configure params directory
Add paramsdir option for manpage
Throw error if -paramsdir not a valid directory
fanquake (8):
depends: set OSX_MIN_VERSION to 10.10
doc: mention that macOS 10.10 is now required
scripted-diff: prefer MAC_OSX over `__APPLE__`
build: set minimum supported macOS to 10.12
depends: clang 6.0.1
depends: native_cctools 921, ld64 409.12, libtapi 1000.10.8
build: use macOS 10.14 SDK
doc: explain why passing -mlinker-version is required
noname45688@gmail.com (2):
Updating to Python 3
Update to Python 3
Jack Grigg (2):
debian: Rename X11 to Expat-with-advertising-clause in copyright
Adjust GetActiveFundingStream* comments
teor (1):
Fix a comment typo in pow.cpp
Ying Tong Lai (7):
Add Debian8 deprecation to release notes
Add missing curly braces after if statement
Add test for garbage memory in history nodes
Add documentation specific to ZIP 212
Move esk derivation check to beginning of plaintext_checks_without_height()
Define PRF diversifiers in prf.h
assert(leadbyte == 0x02) after every if(leadbyte != 0x01)
ying tong (4):
Update doc/release-notes/release-notes-3.1.0.md
Make sure garbage bytes are different
Rename PRV_DIVERSIFIER to PRF_TAG
Add link to ZIP212 in coinbase comment
Zancas Wilcox (1):
make deprecation.h include consensus/params.h