Kris Nuttycombe
16a0e43f2d
Update to Rust 2021 and explicitly set MSRVs
2022-09-02 12:05:09 -06:00
Jack Grigg
e5dad037e9
zcash_primitives: Make `NullifierDerivingKey` internals public
...
The `zcashd` Rust code relies on being able to construct the Sapling
types transparently. This part of the "public API" of the crate was
broken when the `NullifierDerivingKey` newtype was introduced. We do
want to migrate to all of these types having stronger type safety
guarantees (by only constructing them via constructors), but that should
be done consistently across the types. For now we maintain the existing
API by changing `NullifierDerivingKey` to be a transparent newtype.
2022-09-02 01:13:20 +00:00
Kris Nuttycombe
f5a18b8fa5
Add conversions from u32 and u64 to DiversifierIndex
2022-08-31 17:15:47 -06:00
Kris Nuttycombe
ba1bb65a5f
Apply suggestions from code review
...
Co-authored-by: str4d <thestr4d@gmail.com>
2022-08-26 16:09:05 -06:00
Kris Nuttycombe
c4da498cf4
Shield funds to the internal Sapling key for a specified account.
...
This updates `shield_transparent_funds` to look up the internal
(change) address for the account specified, and use that as the
destination for shielding transparent funds.
Fixed #614
2022-08-26 16:03:25 -06:00
Kris Nuttycombe
6156215d4c
Add parallelized batched trial decryption to wallet scanning.
...
Co-authored-by: str4d <jack@electriccoin.co>
2022-08-18 16:48:22 -06:00
Kris Nuttycombe
cdfaa57496
Add migrations to support using UFVKs instead of Sapling extfvks.
...
Fixes #594
2022-08-18 10:15:58 -06:00
Kris Nuttycombe
f1c2da7b1d
Add sapling::NullifierDerivingKey newtype.
...
Nullifier computation only requires the nullifier deriving key,
not the entire Sapling viewing key. This separation of concerns
will be needed for batch decryption when wallet-internal keys
will need to be considered.
2022-07-28 15:23:21 -06:00
Kris Nuttycombe
5873950648
Restructure batch decryption to avoid cartesian product of results.
...
While it is necessary in the worst case to perform `m * n` decryptions,
where `m` is the number of outputs being decrypted and `n` is the number
of IVKs, it is possible to stop performing trial decryptions when the
first successful decryption is performed. Also, it's inconvenient and
unnecessary to return the full cartesian product of these results, as
only one IVK will decrypt a given output. This commit modifies batch
trial decryption to stop on the first successful decryption, and instead
of returning the cartesian product of results we return the index of the
input IVK along with the output it decrypted. Note that this means that
trial decryption is not constant-time with respect to the number and/or
order of IVKs.
2022-07-28 15:23:21 -06:00
Kris Nuttycombe
94c8d8e7ef
Return the network type for encoding addresses as part of the network parameters.
2022-06-30 12:09:32 -06:00
Daira Hopwood
dae2e008e9
Merge pull request #577 from daira/bosl-notice
...
Projects that rely on BOSL exceptions should say that they do
2022-06-29 12:59:07 +01:00
Kris Nuttycombe
0142a3db1b
Merge pull request #570 from zcash/387-migrate-from-extfvk-to-ufvk
...
`zcash_client_*`: Migrate from `ExtendedFullViewingKey` to `UnifiedFullViewingKey`
2022-06-28 10:49:37 -06:00
Daira Hopwood
a9aa2929d2
Address feedback about the use of "permissive".
...
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-06-28 16:46:13 +01:00
Daira Hopwood
75ca854005
Projects that rely on BOSL exceptions should say that they do.
...
fixes #576
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-06-28 12:29:16 +01:00
Jack Grigg
e952ff637e
zcash_primitives 0.7.0
2022-06-24 17:00:39 +00:00
Jack Grigg
a3cae5d36a
equihash 0.2.0
2022-06-24 17:00:26 +00:00
Jack Grigg
59b20c6e31
pprof 0.9
2022-06-24 16:27:06 +00:00
Jack Grigg
18fb1f0b07
orchard 0.2
2022-06-24 16:25:51 +00:00
Jack Grigg
3a3c3863cd
zcash_primitives: Update changelog
2022-06-24 16:01:24 +00:00
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
Kris Nuttycombe
488d02aad3
Add Orchard bundle to TransactionData
...
This also adds parsing and serialization for Orchard bundle parts.
This requires changes to the TZE builder components, because they
refer to the TransactionData type in the context for witness creation.
2021-06-03 13:03:29 -06:00
Kris Nuttycombe
12d2dfd1bd
Merge pull request #386 from nuttycom/feature/zip-225-builder_modularization
...
ZIP-225/244 #2 : Refactor transaction builder to create separate builders for each section.
2021-06-02 21:29:19 -06:00
Kris Nuttycombe
2098196440
Fix errors caused by use of zero heights.
2021-06-02 21:07:29 -06:00
Kris Nuttycombe
2b96e2eb0c
Fix TZE demo test errors.
2021-06-02 18:23:25 -06:00
Kris Nuttycombe
e32e2d6e7f
Fix ordering of Sapling build errors.
2021-06-02 17:15:35 -06:00
Kris Nuttycombe
0743f9e815
Apply suggestions from code review
...
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-02 17:11:04 -06:00
Kris Nuttycombe
2c891a8000
Fix incorrect progress notifier.
2021-06-02 17:09:17 -06:00
Kris Nuttycombe
14d07cd826
Fix intra-doc links & rustfmt.
2021-06-02 17:09:17 -06:00
Kris Nuttycombe
d2402f4861
Apply changelog suggestions.
...
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-02 16:58:08 -06:00
Kris Nuttycombe
b487a7f820
Sapling builder can store network params.
2021-06-02 16:57:27 -06:00
Kris Nuttycombe
4878b5b19b
Address comments from review.
2021-06-02 16:48:55 -06:00
Kris Nuttycombe
72ac97a35f
Derive transaction version & branch id from target height.
2021-06-02 13:45:29 -06:00
Kris Nuttycombe
7466ef42d8
Move change_address back to the main builder
...
Also, store the target height in the sapling builder.
2021-06-02 12:35:18 -06:00
Kris Nuttycombe
bd3b2afa59
Update changelog.
2021-06-02 11:48:46 -06:00
Kris Nuttycombe
c872f39547
Restore progresscounter.
2021-06-02 11:48:46 -06:00
Kris Nuttycombe
3770e5de8b
Move TZE transaction builder to an independent module.
2021-06-02 11:48:46 -06:00
Kris Nuttycombe
c1a8de27f3
Move Sapling transaction builder to an independent module.
2021-06-02 11:48:46 -06:00
Kris Nuttycombe
ba6fc053b5
Move transparent transaction builder to an independent module.
2021-06-02 11:48:46 -06:00
Kris Nuttycombe
8267d06846
Refactor transaction builder to create separate builders for each section.
2021-06-02 11:48:46 -06:00
str4d
f7f5cd472b
Merge branch 'master' into note-decryption-fixes
2021-06-02 18:45:01 +01:00
Kris Nuttycombe
168314cec6
Update changelog.
2021-06-01 07:05:01 -06:00
Kris Nuttycombe
62bd06f14e
Apply suggestions from code review
...
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-01 07:03:31 -06:00
Kris Nuttycombe
76999eb5c7
Make txid contents private & use txid for TzeOutPoint
2021-06-01 07:03:31 -06:00
Kris Nuttycombe
936b552de2
Add NoteValue newtype, Nullifier::as_ref and proptest generation.
2021-06-01 07:03:31 -06:00
Kris Nuttycombe
3dc05a69eb
Add Nu5 NetworkUpgrade variant.
2021-06-01 07:03:31 -06:00
Kris Nuttycombe
4efb21d1c7
Make amount addition and subtraction traits use checked operations.
2021-06-01 07:03:31 -06:00
Jack Grigg
362838c3fa
zcash_note_encryption: Fix array size in Domain::extract_{esk, pk_d}
...
Decrypted output size is `OUT_PLAINTEXT_BYTES`, which the decryptor
can always provide (either by decrypting into the correct size array
as now, or truncating the buffer before passing it to the domain).
2021-05-28 23:48:03 +01:00
Jack Grigg
f6705f23c3
zcash_note_encryption: Add ovk recovery API
2021-05-28 23:45:23 +01:00
Jack Grigg
ae43e6c074
zcash_note_encryption: Pass cmstar_bytes to Domain::derive_ock
...
PRF^ock in the spec takes cm* as a byte array.
2021-05-28 23:41:13 +01:00
Jack Grigg
6f0e7c86a3
zcash_primitives: Add Builder::with_progress_notifier to changelog
2021-05-26 22:02:01 +01:00
Jack Grigg
d031dabcfc
Builder: Move progress notifier configuration to a builder method
...
This is what builder methods are for :) and it helps to limit the growth
of alternate `build` methods.
2021-05-26 21:58:08 +01:00