Commit Graph

831 Commits

Author SHA1 Message Date
Jack Grigg 76d015ed11 zcash_client_backend: Fix `UnifiedFullViewingKey` Sapling item type
Per ZIP 316, the Sapling FVK Encoding only includes `(ak, nk, ovk, dk)`
which is a subset of the Sapling `ExtendedFullViewingKey`. We therefore
need to use `DiversifiableFullViewingKey` inside `UnifiedFullViewingKey`
in order to make it parseable from the UFVK string encoding.

`zcash_client_sqlite::wallet::get_extended_full_viewing_keys` has been
removed as a consequence of this change: we can no longer reconstruct
the correct `ExtendedFullViewingKey` from the `UnifiedFullViewingKey`.
2022-06-17 10:03:17 +00:00
Jack Grigg df1105b996 zcash_primitives: Add `DiversifiableFullViewingKey` 2022-06-14 02:18:25 +00:00
Kris Nuttycombe 7bce52f235 Update NU5 mainnet activation height. 2022-05-11 12:22:20 -06:00
Jack Grigg 3ecfd26d79 zcash_primitives 0.6.0 2022-05-10 23:33:05 +00:00
Jack Grigg 6976d3fe85 zcash_encoding 0.1.0 2022-05-10 23:33:05 +00:00
Jack Grigg 9ebbd42401 orchard 0.1 2022-05-10 23:06:31 +00:00
Jack Grigg c17af47d8f pprof 0.8 2022-05-10 23:04:48 +00:00
Jack Grigg a565c7e113 hdwallet 0.3.1
This release bumped secp256k1 to 0.21.
2022-05-10 23:00:43 +00:00
ebfull 71e2f395d4
Merge pull request #547 from nuttycom/fix_merkle_tree_complete
Allow CommitmentTree completeness & auth paths to be computed at arbitrary depths.
2022-05-06 17:42:01 -06:00
Jack Grigg 144512b547 Migrate to `ff 0.12` 2022-05-06 20:03:49 +00:00
Kris Nuttycombe a63a37aab2 Allow CommitmentTree completeness & auth paths to be computed at arbitrary depths.
Fixes #546
2022-05-06 11:45:06 -06:00
Kris Nuttycombe 4969d81ad3 Add a test for merkle_tree::CommitmentTree::is_complete 2022-05-06 11:44:04 -06:00
Kris Nuttycombe 8bb1962153 Update incrementalmerkletree version and add SER_V2 serialization constant. 2022-05-04 09:25:07 -06:00
Kris Nuttycombe d14e7a707c Set NU5 testnet reactivation height. 2022-04-13 16:47:33 -06:00
Kris Nuttycombe 4d5b3831d1 Add conversion from incrementalmerkletree::bridgetree::Frontier -> CommitmentTree
Also, add roundtrip property tests to ensure the correctness of the
conversion.
2022-04-08 13:08:48 -06:00
Kris Nuttycombe 9416ab3a3e Update to secp256k1 v0.21 2022-04-06 16:09:45 -06:00
Jack Grigg ffa669a958 Migrate to orchard 0.1.0-beta.3 2022-04-06 21:00:25 +00:00
Jack Grigg 6e8c457e30 zcash_primitives: Show hex encoding of `BlockHash` in its `Debug` impl
The (byte-flipped) hex string is more useful than the raw bytes, because
we can look that up in RPC methods and block explorers.
2022-04-05 17:55:56 +00:00
Jack Grigg 7447a599f7 zcash_primitives: Show hex encoding of `TxId` in its `Debug` impl
The (byte-flipped) hex string is more useful than the raw bytes, because
we can look that up in RPC methods and block explorers.
2022-04-05 17:52:48 +00:00
Jack Grigg 9c1ed86c5a Update NU5 consensus branch ID and remove testnet activation height
Part of zcash/librustzcash#456.
2022-03-23 00:35:20 +00:00
Jack Grigg 5668804629 Migrate to beta releases of incrementalmerkletree and orchard 2022-03-23 00:04:32 +00:00
Jack Grigg 494092223b Merge branch 'master' into non-consensus-changes-on-branchid-37519621 2022-03-23 00:00:21 +00:00
Kris Nuttycombe 71657b4f18 Generalize vector and array writes & reads.
In a number of places, we transform other kinds of collections with
known length information into vectors simply to be able to use them with
`Vector::write` or `Vector::read`. We can avoid these extra allocations
by writing from iterators directly, and similarly by reading directly
into our desired collection types.
2022-03-11 16:48:28 -07:00
Kris Nuttycombe d602c01ef6 Standardize how we write and read usize values for incrementalmerkletree.
Also, make consistent use of helper functions for reading
and writing `Position` values.
2022-03-11 16:48:28 -07:00
Jack Grigg 91d9a42a08 Merge branch 'non-consensus-changes-on-branchid-37519621' into merge-non-consensus-changes-3 2022-02-28 23:22:40 +00:00
Jack Grigg 22ebe95de6 zcash_primitives: Replace custom `Debug` impl on `TransactionData` 2022-02-28 22:39:43 +00:00
Kris Nuttycombe b97d777361 Update the versions of incrementalmerkletree & orchard.
This removes unreleased incrementalmerkletree::BridgeTree serialization
that was zcashd-specific.
2022-02-24 13:54:31 -07:00
Kris Nuttycombe 600c06a408 Update MSRV to 1.56.1 2022-02-24 12:26:14 -07:00
Jack Grigg 12700b4c17 Migrate to `orchard` revision with the Orchard circuit changes 2022-02-15 23:37:52 +00:00
Jack Grigg f822d7aabc Bump MSRV to 1.54.0
This is the MSRV for the orchard crate version that contains the changes
to the Orchard circuit.

Closes zcash/librustzcash#513.
2022-02-15 16:39:29 +00:00
Jack Grigg dbfa673500 Merge branch 'non-consensus-changes-on-branchid-37519621' into merge-non-consensus-changes-again 2022-02-14 18:11:09 +00:00
Kris Nuttycombe a15f426ff3
Merge pull request #506 from rex4539/typos
Fix typos
2022-02-13 20:29:50 -07:00
Jack Grigg 54e3dded92 Add `TransactionData::map_bundles`
This is needed for FFI-crossing in `zcashd`.
2022-02-12 02:59:18 +00:00
Kris Nuttycombe f590134ee8 Add transaction::Transaction::into_data 2022-02-11 15:29:44 -07:00
Kris Nuttycombe af9edcea25 Define transaction::TransactionData::map_authorization 2022-02-11 15:29:44 -07:00
Kris Nuttycombe e20de50b84 Make AccountId internal representation private. 2022-02-10 11:30:02 -07:00
Kris Nuttycombe 970b6d6750 Add missing trait impls for AccountId 2022-02-10 09:12:18 -07:00
Kris Nuttycombe 2425a08690
Merge pull request #493 from zcash/485-zip244-coinbase-fix
zcash_primitives: Update ZIP 244 with coinbase fix
2022-02-08 08:16:19 -07:00
Dimitris Apostolou e600d7b917
Fix typos 2022-02-03 20:15:32 +02:00
str4d 9319dd4c3e Implement XNOR using `assert_eq!`
Because of course that is simpler than building it from XOR.

Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-02-03 00:12:55 +00:00
Kris Nuttycombe a304c3953b Fix Clippy beta linting complaints. 2022-02-02 16:02:45 -07:00
Kris Nuttycombe 60d9124453 Merge branch 'non-consensus-changes-on-branchid-37519621' into 'master' 2022-02-02 14:38:09 -07:00
Kris Nuttycombe 1507d1de0a Fix incorrect construction of transparent OVKs. 2022-02-02 10:33:44 -07:00
Kris Nuttycombe b4ff3f368e Add test vectors for transparent OVKs. 2022-02-02 10:33:44 -07:00
therealyingtong 0c80399fe1 zcash_primitives::zip32::tests: Use internal test vectors. 2022-02-02 10:33:44 -07:00
therealyingtong cf4c982483 zcash_primitives::zip32: Include test vectors for internal key components. 2022-02-02 10:33:44 -07:00
Kris Nuttycombe 9c2d485c80 Address comments from code review.
Co-authored-by: str4d <jack@electriccoin.co>
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-02-02 10:33:41 -07:00
Kris Nuttycombe 3d51c53d68 Address comments from code review.
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-02-02 10:32:33 -07:00
Kris Nuttycombe 8916a16f38 Replace ripemd160 dependency with ripemd 2022-02-02 10:30:43 -07:00
Jack Grigg d7fe28ac3f zcash_primitives: Update ZIP 244 with coinbase fix
This corresponds to the ZIP 244 changes in zcash/zips#587.

Closes zcash/librustzcash#485.
2022-02-01 15:57:39 +00:00
Jack Grigg f28f0b7476 Merge branch 'non-consensus-changes-on-branchid-37519621' 2022-02-01 15:57:13 +00:00
Kris Nuttycombe b3fbf2410d Allow use of internal deprecated pubkey_to_address method. 2022-01-27 21:21:18 -07:00
Kris Nuttycombe 2f1d3da26d Update changelogs. 2022-01-27 16:25:01 -07:00
Kris Nuttycombe 4057b066bd ExtendedFullViewingKey::chain_code should not be public. 2022-01-27 16:18:26 -07:00
Kris Nuttycombe 6e11f2d11a Validate ZIP 321 request by roundtrip through the URI format.
Co-authored-by: str4d <jack@electriccoin.co>
2022-01-27 16:08:04 -07:00
Kris Nuttycombe a1e693d15f Remove the Wif type; it should not be used.
We should attempt to avoid passing spending keys back and forth
across the FFI entirely, but in any case this is no longer the
correct type to use at this boundary; we should use the encoding
of the transparent component of a unified spending key instead.
2022-01-27 16:08:04 -07:00
Kris Nuttycombe 3a20176092 Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2022-01-27 15:00:37 -07:00
Kris Nuttycombe 132df78a31 Add serialization and deserialization for AccountPubKey 2022-01-27 08:52:12 -07:00
Kris Nuttycombe 6fcdfda69e Derive OVKs from transparent account-level key, not child keys.
This also renames a number of legacy key types to better reflect
their intended use.
2022-01-26 13:36:27 -07:00
Kris Nuttycombe 0b43535203 Move OutgoingViewingKey to zcash_primitives::keys 2022-01-25 08:53:51 -07:00
Kris Nuttycombe f58d191439 Move transparent account keys to zcash_primitives. 2022-01-25 08:53:51 -07:00
Kris Nuttycombe 72c2e54a7b Add explicit serialize and deserialize methods to ExternalPubKey
The serialization defined by HDWallet for the fields of ExtendedPubKey
is in the opposite field order from what is defined in ZIP 316.
2022-01-24 16:25:06 -07:00
therealyingtong 8b0c1c4ab2 transparent::ExternalPubKey: impl TryFrom for &[u8; 65]. 2022-01-24 14:41:40 +08:00
Kris Nuttycombe 4068075ffd Merge remote-tracking branch 'upstream/non-consensus-changes-on-branchid-37519621' into autoshield-poc-daa 2022-01-22 23:10:47 -07:00
Kris Nuttycombe 4dac37ffde Ensure that transparent input functionality is correctly feature-flagged. 2022-01-22 22:33:22 -07:00
therealyingtong a7ea5f0bc1 Implement TryFrom<&[u8] for ExternalPubKey. 2022-01-22 22:29:45 -07:00
therealyingtong 6f776aacc3 zcash_primitives::zip316::transparent: Parse Ufvk from zcash_address. 2022-01-22 22:29:45 -07:00
therealyingtong c9fe8402e2 Use transparent internal ovk in shield_transparent_funds(). 2022-01-22 22:29:45 -07:00
therealyingtong 5033d29d2f zip316::transparent: Implement ZIP 316 transparent internal ovk. 2022-01-22 22:29:45 -07:00
therealyingtong a4c9f53a3a Move ExternalPrivKey, ExternalPubKey to zcash_primitives. 2022-01-22 22:29:45 -07:00
therealyingtong 1f9b9fc147 zcash_primitives: Do not gate secp256k1 on transparent-inputs feature flag. 2022-01-22 22:04:32 -07:00
Kris Nuttycombe 54cca8081b Update zcash_primitives/CHANGELOG.md with change key derivation methods. 2022-01-22 19:35:01 -07:00
Kris Nuttycombe 7c03dbdc95 Add convenience method for amount sums. 2022-01-21 16:48:53 -07:00
therealyingtong eb80138cf9 Document new APIs for deriving internal keys. 2022-01-21 10:49:17 +08:00
Kris Nuttycombe 82c1d87dcd
Fix incorrect length of blake2b hashes for internal key derivation.
Co-authored-by: str4d <jack@electriccoin.co>
2022-01-20 18:08:01 -07:00
Kris Nuttycombe 37e6d3a2bc Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
Co-authored-by: ying tong <yingtong@z.cash>
2022-01-20 16:43:57 -07:00
Kris Nuttycombe 3dd1f310d9 Merge remote-tracking branch 'upstream/non-consensus-changes-on-branchid-37519621' into autoshield-poc-daa 2022-01-20 13:54:38 -07:00
Kris Nuttycombe da3833f906 Fix missing use of `dk` in derivation of sapling internal FVK.
Also, factor out sapling internal fvk derivation so that it only
requires (fvk, dk) since we may not have the full extfvk.
2022-01-20 13:50:12 -07:00
therealyingtong f6f5096ae4 Derive Sapling internal full viewing key.
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-01-20 13:50:12 -07:00
therealyingtong a98010a684 Derive Sapling internal spending key.
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-01-20 13:50:12 -07:00
Kris Nuttycombe eaa3ec56d0 Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-01-19 08:32:59 -07:00
Kris Nuttycombe 7b2f9e27ae Rename script_code to script_pubkey in zip244 test vectors. 2022-01-19 08:32:59 -07:00
Kris Nuttycombe fc82801d3d Update v5 transparent signature hashes to always commit to scriptPubKey 2022-01-19 08:32:59 -07:00
Kris Nuttycombe 3c6e19f4e4 Update test vectors. 2022-01-19 08:32:59 -07:00
Kris Nuttycombe 37fdf88462 Make hash_type a property of the SignableInput::Transparent 2022-01-19 08:32:59 -07:00
Kris Nuttycombe 145d1a57f7 Make transparent signatures commit to all input amounts & scripts.
Transparent UTXOs are referred as pair of previous txid and index. In
order to verify UTXO's amount in HWW (hardware wallet), whole previous
transaction containing this UTXO must be streamed into the device. This
increases complexity of signing process significantly.

zcash/zips#574 identifies this problem and suggests a modification
to ZIP-244 to resolve this issue, by adding three new fields to
section S.2 of the signature hash.
2022-01-19 08:32:59 -07:00
Squirrel c910ffdb41
Remove unused dependencies (#479)
Remove unused dependencies

Co-authored-by: Kris Nuttycombe <kris.nuttycombe@gmail.com>
Co-authored-by: str4d <thestr4d@gmail.com>
2022-01-18 12:04:14 -07:00
Kris Nuttycombe e3c67ffee6 Pin pprof version 2022-01-04 11:48:59 -07:00
Jack Grigg fe05d2dc11 pprof 0.6 2021-12-17 23:47:00 +00:00
Jack Grigg 07a95d70c9 incrementalmerkletree 0.2 2021-12-17 23:46:00 +00:00
Jack Grigg d5a375919d blake2{b,s}_simd 1 2021-12-17 23:44:06 +00:00
Jack Grigg 36db7634a0 orchard 0.1.0-beta.1 2021-12-17 22:22:25 +00:00
Jack Grigg 142a38e792 zcash_note_encryption 0.1.0 2021-12-17 20:00:46 +00:00
Jack Grigg e148ca84ba Migrate to latest `zcash_note_encryption` API 2021-12-17 05:34:45 +00:00
Jack Grigg 01c768dbeb zcash_note_encryption: Place pre-ZIP 212 APIs behind a feature flag 2021-12-17 04:30:57 +00:00
Kris Nuttycombe c72ddb1251
Improve documentation of DiversifierKey#diversifier_index
Co-authored-by: str4d <jack@electriccoin.co>
2021-12-13 13:37:11 -07:00
Kris Nuttycombe 8e934682bb Add decryption of Sapling diversifiers.
Given a diversifier key, decrypts a diversifier to obtain
the diversifier index from which the diversifier was originally
produced.

Co-authored-by: str4d <jack@electriccoin.co>
2021-12-13 13:08:58 -07:00
Kris Nuttycombe 06bea7f936 Factors out sapling address generation from SaplingExtendedFullViewingKey.
Sapling address generation depends only on an FVK and
a diversifier key. For the purpose of unified full viewing
keys, we need to break the dependence upon Sapling extended
full viewing keys, so this makes the address generation
methods of SaplingExtendedFullViewingKey usable without
coupling them to the ability to derive child full viewing keys.
2021-11-30 20:00:36 -07:00
Kris Nuttycombe 0b9d7e4303 Merge remote-tracking branch 'upstream/master' into autoshield-poc-daa 2021-11-24 15:48:02 -07:00
Jack Grigg 5055033c31 zcash_primitives: Migrate to `zcash_note_encryption::BatchDomain` 2021-11-17 12:17:10 +00:00
Kris Nuttycombe fc0dd8e3eb Merge remote-tracking branch 'upstream/master' into autoshield-poc-daa 2021-10-25 13:24:03 -06:00
Kris Nuttycombe 48340a4846 Fix doc comment for default address generation. 2021-10-15 13:19:25 -06:00
Kris Nuttycombe 86d4affe73 Add tests for `ExtendedFullViewingKey::address` 2021-10-11 16:34:37 -06:00
Kris Nuttycombe 70e65081c5 Add a test for DiversifierKey::diversifier 2021-10-11 16:34:37 -06:00
Kris Nuttycombe 120cc70a6d Fix type of default_address 2021-10-11 16:34:37 -06:00
Daira Hopwood bec497f6bf Apply suggestions from code review
Co-authored-by: ying tong <yingtong@z.cash>
2021-10-11 16:34:37 -06:00
Kris Nuttycombe 1373221439 Renames the `ExtendedFullViewingKey::address` method to `find_address`.
This also adds a new semantically different `address` method which
attempts to produce an address given the specified diversifier index,
and returns `None` if that index does not produce a valid diversifier.

It is then up to the caller to search the diversifier index space if
the diversifier index that they are attempting to use does not result in
a valid diversifier.
2021-10-11 16:34:37 -06:00
Kris Nuttycombe 28112de234 Make it possible for callers to search for valid Sapling diversifiers. 2021-10-11 16:34:37 -06:00
Kris Nuttycombe 74b0c50294 Fix transitivity of the test-dependencies feature. 2021-10-01 15:20:01 -06:00
Kris Nuttycombe da3c84ff31 Update hdwallet to depend upon secp256k1-v0.20 2021-10-01 12:52:19 -06:00
Kris Nuttycombe 6cf0749ac9 Merge remote-tracking branch 'upstream/master' into autoshield-poc-reorder 2021-10-01 11:03:41 -06:00
Jack Grigg b29803ae34 Update ZIP 244 test vectors with new consensus branch ID 2021-09-28 22:31:11 +01:00
Jack Grigg a90af6cb2d Update NU5 consensus branch ID and set testnet activation height 2021-09-28 22:12:31 +01:00
Jack Grigg 8f9ea0d116 pasta_curves 0.2.1
This is the first version that was relicensed as MIT OR Apache-2.0.
2021-09-22 22:16:59 +01:00
Jack Grigg afd4a4803c bip0039 0.9 2021-09-22 22:14:03 +01:00
Jack Grigg 4770675542 Bump Orchard patch to include Merkle path cleanups 2021-09-16 22:55:22 +01:00
Jack Grigg eae4ac4110 `impl memuse::DynamicUsage for Amount`
Required to use `DynamicUsage` with `orchard::Bundle<_, Amount>`.
2021-09-14 20:48:58 +01:00
Jack Grigg 65e1d32774 ff 0.11, group 0.11, etc. 2021-09-09 18:20:37 +01:00
Kris Nuttycombe 427e6acbd4 Allow CompactSize deserialization to target any type that can be TryFrom<u64> 2021-09-01 13:57:51 -06:00
str4d edcde252de
Merge pull request #428 from nuttycom/public_compact_size
Move the CompactSize, Vector, Array and Option encodings to a new zcash_encoding crate.
2021-09-01 20:45:28 +01:00
Kris Nuttycombe c1bad64fbd Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2021-09-01 11:08:52 -06:00
Kris Nuttycombe fa092da456 Fix stray clippy complaints. 2021-08-31 13:19:24 -06:00
Kris Nuttycombe ef98c7e48c Add zcash_encoding crate.
The CompactSize type, and the standardized encodings for the Vector,
Array and Option types are moved to the newly created crate.
2021-08-31 13:19:24 -06:00
Jack Grigg f03f05f251 zcash_note_encryption: Switch to chacha20poly1305 crate 2021-08-30 15:03:39 +01:00
Kris Nuttycombe edd7471d90 Merge remote-tracking branch 'upstream/master' into autoshield-poc-daa 2021-08-27 11:08:50 -06:00
Kris Nuttycombe ac139c6e9b Make CompactSize serialization functions public. 2021-08-25 09:55:08 -06:00
Jack Grigg f185f8dc83 pprof 0.5 2021-08-23 20:18:45 +01:00
Jack Grigg 5054621a6d fpe 0.5 2021-08-23 20:16:40 +01:00
str4d 9be36f3e54
Merge pull request #417 from nuttycom/incremental_merkle_tree_ser
Add manual serialization for bridgetree::Frontier
2021-08-17 14:57:59 +01:00
Kris Nuttycombe 77bb78d960 Apply suggestions from code review. 2021-08-17 07:31:15 -06:00
Kris Nuttycombe 1ed538b655 Fix clippy complaints. 2021-08-16 17:36:07 -06:00
Kris Nuttycombe 7b953283ce Add blanket implementation of Hashable for incrementalmerkletree::Hashable + HashSer 2021-08-16 13:48:37 -06:00
Kris Nuttycombe 837ad19262
Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2021-08-16 10:20:14 -06:00
Kris Nuttycombe 5ba7bbc53b Serialize `Option` values by value, not by reference.
Co-authored-by: str4d <jack@electriccoin.co>
2021-08-16 10:06:38 -06:00
Kris Nuttycombe b783c4d0e7 Merge remote-tracking branch 'upstream/master' into autoshield-poc-daa 2021-08-12 11:21:30 -06:00
Kris Nuttycombe 98dc330cdb
Merge pull request #424 from daira/zip339-primitives
ZIP 339 support
2021-08-12 07:23:15 -06:00
Jack Grigg d8410063ab zcash_primitives: Implement `Domain::batch_epk` for `jubjub` 2021-08-11 00:21:00 +01:00
Jack Grigg 45521c7849 zcash_primitives: Test that batched trial decryption matches unbatched 2021-08-11 00:18:39 +01:00
Jack Grigg d0026b460b zcash_primitives: Implement batched trial decryption optimisation 2021-08-10 02:17:10 +01:00
Jack Grigg 0facec094f Update changelogs with `EphemeralKeyBytes` changes 2021-08-09 21:45:16 +01:00
Jack Grigg 279a8b6bb6 Use `EphemeralKeyBytes` type in place of `[u8; 32]` 2021-08-09 21:28:42 +01:00
Daira Hopwood d1443e5049 ZIP 339 support.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-08-07 01:07:54 +01:00
Jack Grigg 83c6a2d1ca Store OutputDescription `ephemeral_key` as bytes
This removes an unnecessary `to_bytes` during trial decryption of notes,
and more closely matches the protocol spec. We retain the consensus rule
canonicity check on epk due to `SaplingVerificationContext::check_output`
taking a `jubjub::ExtendedPoint`, forcing `zcashd` to parse the bytes.
2021-08-06 16:54:48 +01:00
str4d 945a199ddd
zcash_primitives: Use `not(unix)` instead of `windows` for flamegraphs
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-08-05 23:22:12 +01:00
Jack Grigg 16d38ea354 zcash_primitives: Remove spaces from benchmark group names 2021-08-05 22:40:46 +01:00
Jack Grigg 0f15743200 Disable default benchmark harness for all workspace crates
This is necessary in order to provide criterion-specific arguments to
`cargo bench`, such as `--profile-time`.
2021-08-05 22:39:36 +01:00
Jack Grigg 3ffa3ae435 zcash_primitives: Add flamegraph support to benchmarks on Unix
Use `cargo bench -- --profile-time TIME_IN_SECONDS` to measure the
flamegraphs. They will be placed in `target/criterion/`.
2021-08-05 22:24:16 +01:00
Jack Grigg 8b05727361 zcash_primitives: Benchmark trial decryption of compact outputs
These are effectively identical to full-output trial decryption (as the
primary cost is the scalar multiplication), but it's good to check.
2021-08-05 22:13:23 +01:00
Kris Nuttycombe 2945905d52 Implement manual serialization for incremental Merkle tree components.
This also adds parsing of the legacy CommitmentTree format,
to permit easy migration of persisted data.
2021-08-05 09:32:44 -06:00
Kris Nuttycombe 232feb71be Use orchard::Flags::to_byte/from_byte 2021-07-29 10:38:43 -06:00
Kris Nuttycombe 3b8f0214eb Move Orchard bundle commitments to the `orchard` crate. 2021-07-29 10:38:43 -06:00
Kris Nuttycombe 105f8da91f Update `nonempty` and `orchard` dependencies. 2021-06-30 12:57:56 -06:00
Kris Nuttycombe 1ae2bd727c Fix clippy complaints 2021-06-23 16:37:48 -06:00
Jack Grigg 69ee9f8ca5 Bump orchard deps
Includes additional patched dependencies, now that the orchard crate is
not pinning specific revisions of the in-development crates.
2021-06-15 20:20:53 +01:00
Jack Grigg 00b3e427e6 impl From<Amount> for orchard::ValueSum
This is necessary in order to be able to calculate bvk for Orchard
bundles.
2021-06-14 11:41:02 +01:00
Jack Grigg c7c79d266e zcash_note_encryption: Add `ShieldedOutput::ephemeral_key() -> EphemeralKeyBytes`
This replaces the `ShieldedOutput::epk() -> &Domain::EphemeralPublicKey`
which could not be satisfied by output types that did not parse epk.
2021-06-10 18:35:19 +01:00
str4d 3915abd0a1
Merge pull request #399 from str4d/zip-244-auth-digest-test-vectors
Bring in ZIP 244 auth digest test vectors.
2021-06-08 19:47:55 +01:00
Jack Grigg 684fd504a8 ZIP 244: Write transparent scripts in their consensus encoding 2021-06-08 18:47:34 +01:00
str4d fe07fb3c51
Merge pull request #396 from str4d/394-zip-216
Impl ZIP 216 on SaplingVerificationContext and redjubjub::PublicKey
2021-06-08 18:34:47 +01:00
Kris Nuttycombe 31ea91ced8 Ensure tze digest is only included if TZEs are in the consensus rules. 2021-06-08 11:33:52 -06:00
Jack Grigg acc19a76e2 Bring in ZIP 244 auth digest test vectors.
From https://github.com/zcash-hackworks/zcash-test-vectors/pull/34.
2021-06-08 18:17:30 +01:00
Jack Grigg 7e23b96a03 Extract ZIP 225 Orchard bundle parsing and serialization into helpers
These will be used by `zcashd` for handling the Orchard component of v5
transactions.
2021-06-08 17:29:04 +01:00
str4d 0bfd1f7544
Merge pull request #375 from nuttycom/feature/zip-225
ZIP 225 & ZIP 244
2021-06-08 17:28:25 +01:00
Kris Nuttycombe eb3d01aa6b
Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-06-08 07:02:52 -06:00
Kris Nuttycombe f70285d243 Fix error in transaction auth digest.
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-07 09:27:05 -06:00
Kris Nuttycombe 371f84dc9b Minor error message improvement.
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-07 09:27:05 -06:00
Kris Nuttycombe 0253442af0 Be more explicit about empty sapling & orchard hashes. 2021-06-07 09:27:05 -06:00
str4d 2f3e4989ba
Merge pull request #352 from str4d/zcash_address
New component: zcash_address crate
2021-06-07 00:36:48 +01:00
Jack Grigg e2fb5e6402 Impl ZIP 216 on SaplingVerificationContext and redjubjub::PublicKey
`PublicKey::verify` now always uses post-ZIP 216 validation rules, which
is fine in non-consensus contexts.

`SaplingVerificationContext` is used by `zcashd`'s consensus rules.
2021-06-06 23:45:15 +01:00
Kris Nuttycombe b93c503263 Deserialize signatures directly into actions.
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-05 10:19:36 -06:00
Kris Nuttycombe 4f764c3c80 Use Vector read/write operations where possible instead of Array
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-05 10:12:39 -06:00
Kris Nuttycombe 97bef30582 Remove consensus branch id from roundtrip serialization check.
Possible now that it's part of the transaction.
2021-06-05 09:48:52 -06:00
Kris Nuttycombe 47ce97c3d2 Keep builder spend data in spend_auth_sig fields. 2021-06-05 09:45:55 -06:00
Kris Nuttycombe 69e5a491ff Fix generation of arbitrary jubjub points. 2021-06-04 17:28:44 -06:00
Kris Nuttycombe d0a911cb87 Fix rustdocs 2021-06-04 16:38:01 -06:00
Kris Nuttycombe 28d3f481cd Apply suggestions from code review. 2021-06-04 16:38:01 -06:00
Kris Nuttycombe e71a1ce345 Rename Vector::write_items -> Array::write and Vector::read_count -> Array::read 2021-06-04 16:38:01 -06:00
Kris Nuttycombe 4623f98d9a Fix bugs in construction of Sapling txid hashes. 2021-06-04 16:38:01 -06:00
Kris Nuttycombe df0095ebba Add ZIP-244 test vectors. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe 6348400cf4 Store patial authorizing data for sapling components in bundle authorization. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe 6635895e55 Clean up TZE signature generation. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe ab1b31ebf6 Store partial authorizing data for transparent txs in transparent authorization. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe dac68ce2aa Drop proptest space size to reduce test runtime. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe 38b864c100 Implement V5 transaction serialization & roundtrip property tests. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe e828dbf5d0 Add v5 parsing and serialization for Sapling components. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe 1a5aad723b Use generalized signature_hash for transaction builder. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe 55d1090f70 Add v5 txid & signature hashing. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe 1138343c89 Add data structures for transaction digests. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe fd1790fec2 Move sighash.rs -> sighash_v4.rs 2021-06-04 15:45:39 -06:00
Kris Nuttycombe 4bcad97ba1 Add amount conversion for Orchard values. 2021-06-04 15:45:39 -06:00
Kris Nuttycombe 2ae55b4145 Add more flexibility to vector serialization. 2021-06-04 15:45:39 -06:00
Jack Grigg 1222391dd7 Migrate to bitvec 0.22, ff 0.10, etc.
Requires patching three dependencies:

- bellman is pending a new release.
- nom is part of the funty breakage; we are blocking on a new release.
- orchard is in development.
2021-06-04 22:02:48 +01:00
Kris Nuttycombe 9149d48afc
Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-03 20:25:10 -06:00
Kris Nuttycombe 231aa5d01a
Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-03 18:47:49 -06:00
Kris Nuttycombe cc9dbf8bde Fix clippy complaint. 2021-06-03 18:46:38 -06:00
Kris Nuttycombe 732b97d021 Update changelog. 2021-06-03 18:46:38 -06:00
Kris Nuttycombe a305760bb1 Move TZE components to a bundle within TransactionData 2021-06-03 18:46:38 -06:00
Kris Nuttycombe 523424e50b Move Transparent components to a bundle within TransactionData 2021-06-03 18:46:38 -06:00
Kris Nuttycombe 670d03e74f Move Sprout components to a bundle within TransactionData 2021-06-03 18:46:38 -06:00
Kris Nuttycombe 84e8952ec3 Move Sapling components to a bundle within TransactionData 2021-06-03 18:46:38 -06:00