diff --git a/doc/README.md b/doc/README.md index bf93e1adf..112bee37e 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,4 +1,4 @@ -Zcash Core 0.11.2.z2 +Zcash Core 0.11.2.z3 ==================== [Zcash](https://z.cash/) is the Zcash client. It downloads and stores the entire history of Zcash transactions (which is currently several GBs); depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more. diff --git a/doc/release-notes/release-notes-0.11.2.z3.md b/doc/release-notes/release-notes-0.11.2.z3.md new file mode 100644 index 000000000..656c0df7d --- /dev/null +++ b/doc/release-notes/release-notes-0.11.2.z3.md @@ -0,0 +1,69 @@ +Daira Hopwood (1): + zkSNARK: Add constraint that the total value in a JoinSplit is a 64-bit integer. + +Nathan Wilcox (4): + Add a depends description for googletest. + Add a zcash-gtest binary to our build with a single tautological test. + Add coverage support scoped to only the zcash-gtest run; invoke with make zcash-cov; make cov is a superset. + Add googlemock 1.7.0 dependency. + +Sean Bowe (49): + Add serialization for primitive boost::optional. + New implementation of incremental merkle tree + Integrate new incremental merkle tree implementation into consensus. + Test old tree along with new tree as much as possible. + Deprecate the old tree and remove old tree tests from the test suite. + Initialize curve/field parameters in case another test hasn't done so. + Improve well-formedness checks and add additional serialization/deserialization tests. + Add more well-formedness checks/tests to tree. + Make appending algorithm more succinct. + Move incremental merkle tree tests to zcash-gtest. + NoteEncryption implementation and integration, removal of ECIES and crypto++ dependencies. + Move NoteEncryption tests to gtest suite. + Add additional tests for ephemeral key behavior. + Clarify the usage of decryption API. + Check exception has specific string message. + Small nit fixes + Run `zcash-gtest` in `make check` and fix performance tests. + Perform zerocash tests as part of full-test-suite, in preparation for removal of zerocash waterfall. + Distinguish the failure cases of wfcheck in tree. + Change ciphertext length to match protocol spec, and refactor the use of constants. + Initialize libsodium in the gtest suite. + Introduce new `libzcash` Zcash protocol API and crypto constructions surrounding the zkSNARK circuit. + zkSNARK: Foundations of circuit design and verification logic. + zkSNARK: Add "zero" constant variable. + zkSNARK: Enforce spend-authority of input notes. + zkSNARK: Enforce disclosure of input note nullifiers + zkSNARK: Authenticate h_sig with a_sk + zkSNARK: Enforce that new output notes have unique `rho` to prevent faerie gold attack. + zkSNARK: Enforce disclosure of commitments to output notes. + zkSNARK: Ensure that values balance correctly. + zkSNARK: Witness commitments to input notes. + zkSNARK: Enforce merkle authentication path from nonzero-valued public inputs to root. + libzcash: Add tests for API + Remove scriptPubKey/scriptSig from CPourTx, and add randomSeed. + Transplant of libzcash. + Added public zkSNARK parameter generation utility. + Stop testing old tree against new tree. + Remove nearly all of libzerocash. + Update public zkSNARK parameters for new circuit. + Fix performance measurements due to modified transaction structure. + Remove the zerocash tests from the full test suite. + Protect-style joinsplits should anchor to the latest root for now, until #604 is resolved. + Use inheritance for PRF gadgets. + Rename ZCASH_ constants to ZC_. + Rename hmac -> mac in circuit. + `Note` values should be little-endian byte order. + Update zkSNARK proving/verifying keys. + Add h_sig test vectors. + Change testnet network magics. + +Taylor Hornby (7): + Add check that vpubs are not both nonzero and test it. + Fix sighash tests + Add empty merkle/noteencryption tests so Sean can rebase. + Fix RPC tests + Rename bitcoin.conf and bitcoind.pid to zcash.conf and zcashd.pid in qa/ and src/ + Trivial change: Capitalize the Z in Zerocash + Remove the Merkle tree hash function's fixed point. + diff --git a/doc/release-process.md b/doc/release-process.md index fc83786e0..711c2a15a 100644 --- a/doc/release-process.md +++ b/doc/release-process.md @@ -1,60 +1,73 @@ Release Process ==================== +Meta: There should always be a single release engineer to disambiguate responsibility. -### Define the release version as: - - $ ZCASH_RELEASE=${UPSTREAM_VERSION}.z${ZCASH_RELEASE_COUNTER} +## A. Define the release version as: + $ ZCASH_RELEASE=${UPSTREAM_VERSION}.z${ZCASH_RELEASE_COUNTER} + Example: - $ ZCASH_RELEASE=0.11.2.z2 + $ ZCASH_RELEASE=0.11.2.z2 + +Also, the following commands use the ZCASH_RELEASE_PREV bash variable for the previous release: -Also, the following commands use the ZCASH_RELEASE_PREV bash variable -for the previous release: + $ ZCASH_RELEASE_PREV=0.11.2.z1 + +## B. create a new release branch / github PR +### B1. update (commit) version in sources - $ ZCASH_RELEASE_PREV=0.11.2.z1 - -### update (commit) version in sources - - doc/README.md - src/clientversion.h - -In clientverion.h change CLIENT_VERSION_IS_RELEASE to false while Zcash + doc/README.md + +In `clientversion.h` change CLIENT_VERSION_IS_RELEASE to false while Zcash is in alpha-test phase. -### write release notes +### B2. write release notes git shortlog helps a lot, for example: $ git shortlog --no-merges v${ZCASH_RELEASE_PREV}..HEAD \ > ./doc/release-notes/release-notes-${ZCASH_RELEASE}.md + +### B3. merge the previous changes -### merge the previous changes +Do the normal pull-request, review, testing process for this release PR. -Do the normal pull-request, review, testing process. +## C. Verify code artifact hosting -### make tags / release-branch for the newly merged result +### C1. Ensure depends tree is working + +http://ci.leastauthority.com:8010/builders/depends-sources + +### C2. Ensure public parameters work + +Run `./fetch-params.sh`. + +## D. make tags / release-branch for the newly merged result In this example, we ensure zc.v0.11.2.latest is up to date with the previous merged PR, then: - $ git tag v${ZCASH_RELEASE} + $ git tag v${ZCASH_RELEASE} $ git branch zc.v${ZCASH_RELEASE} $ git push origin v${ZCASH_RELEASE} $ git push origin zc.v${ZCASH_RELEASE} - -### update github default branch to this new release branch - -### write / publish a release announcement - -### celebrate - -### missing steps + +## E. update github default branch to this new release branch +## F. write / publish a release announcement +## G. deploy testnet +## H. write and publish appropriate announcements (blog, zcash-dev, slack) +## I. celebrate +## missing steps Zcash still needs: -a. deterministic build -b. signatured tags -c. thorough pre-release testing (presumably more thorough than standard PR tests) -d. release deployment steps (eg: updating build-depends mirror, deploying testnet, etc...) -e. proper zcash-specific versions and names in software and documentation. +* deterministic build + +* signatured tags + +* thorough pre-release testing (presumably more thorough than standard PR tests) + +* release deployment steps (eg: updating build-depends mirror, deploying testnet, etc...) + +* proper zcash-specific versions and names in software and documentation.