Kris Nuttycombe
7fe02f0606
Remove needless bound on `FeeRule` from builder `Error` type.
2023-06-23 15:24:38 -06:00
Kris Nuttycombe
1b4017e0d1
Apply suggestions from code review
...
Co-authored-by: str4d <thestr4d@gmail.com>
2023-06-23 15:16:10 -06:00
Kris Nuttycombe
95abfe5836
Improve documentation for `zcash_primitives::transaction::builder::Error::OrchardAnchorNotAvailable`
...
Co-authored-by: str4d <thestr4d@gmail.com>
2023-06-23 14:56:49 -06:00
Hazel OHearn
4fbdd64c89
Add Orchard support to `zcash_primitives::transaction::builder::Builder`
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
Co-authored-by: Kris Nuttycombe <kris@nutty.land>
2023-06-23 14:09:59 -06:00
Hazel OHearn
dce8676974
Remove impls of `{PartialEq, Eq}` for `zcash_primitives::transaction::builder::Error`
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2023-06-23 14:07:15 -06:00
Kris Nuttycombe
f9cacc5b21
Release zcash_primitives 0.12.0
2023-06-06 15:56:28 -06:00
Kris Nuttycombe
60ac1070c5
Release zcash_address version 0.3.0
2023-06-06 15:53:16 -06:00
Kris Nuttycombe
3dd0c63095
Update to `incrementalmerkletree 0.4`, `orchard 0.5`
2023-06-06 14:27:39 -06:00
Kris Nuttycombe
ebcfae987d
Update the data access API in preparation for shardtree introduction.
2023-06-02 10:59:17 -06:00
Kris Nuttycombe
59eef51b9e
Merge pull request #851 from zcash/simplify_parse_note_plaintext_ovk_args
...
Remove esk and ephemeral_key arguments from `parse_note_plaintext_ovk`
2023-05-31 12:54:04 -06:00
Kris Nuttycombe
36d7222685
Merge pull request #844 from zcash/temporary-zcashd-parse-sapling
...
zcash_primitives: Changes needed for `zcashd` Sapling oxidation
2023-05-30 17:30:47 -06:00
Kris Nuttycombe
696a9be0a0
Update `zcash_primitives` to reflect argument changes to `parse_note_plaintext_without_memo_ovk`
2023-05-26 09:43:26 -06:00
Kris Nuttycombe
3ae90020c3
Merge pull request #848 from zcash/note-encryption-avoid-redundant-checks
...
Avoid redundant checks during note decryption
2023-05-26 09:10:52 -06:00
Kris Nuttycombe
980736806f
Upgrade `incrementalmerkletree` & `orchard` patch versions.
2023-05-25 12:33:25 -06:00
Jack Grigg
2ae4d87cbf
zcash_primitives: Remove redundant checks from Sapling note decryption
...
- The consistency check between `esk` and `ephemeral_key` is checked
inside `zcash_note_encryption::try_output_recovery_with_ock`.
- The `diversifier` validity check is necessarily performed when
deriving `pk_d` for the `ivk` pathway, so we keep it there for the
`ovk` pathway as well, and drop the check from the `PaymentAddress`
internal constructor.
2023-05-19 16:36:55 +00:00
Jack Grigg
8db7a071a0
zcash_primitives: `impl DynamicUsage for sapling::Bundle<Authorized>`
2023-05-17 03:44:24 +00:00
Jack Grigg
26d95b4a0e
zcash_primitives: Temporarily expose v5 Sapling bundle parsing
...
This is currently exposed via `Transaction` for usage in `zcashd`, but
may be removed in future (if `zcashd` moves transaction parsing entirely
into Rust), or renamed and stabilised.
2023-05-17 03:44:24 +00:00
Jack Grigg
a092da8d5d
Fix clippy lints for 1.65
2023-05-16 15:59:58 +00:00
Jack Grigg
6419e1e363
Remove `inferno` pin now that its MSRV is compatible with ours
2023-05-16 15:39:06 +00:00
Jack Grigg
8681b56d52
Bump MSRV for `zcash_primitives` and dependents to 1.65
2023-05-16 15:37:07 +00:00
Kris Nuttycombe
bc55893267
Merge pull request #838 from daira/update-fee-constants
...
Revert #830 and instead modify `zcash_primitives::transaction::fees::fixed::FeeRule::standard()`
2023-05-09 13:17:27 -06:00
Daira Emma Hopwood
32296e7327
Update `DEFAULT_TX_EXPIRY_DELTA` to 40 blocks, as specified in
...
<https://zips.z.cash/zip-0203#changes-for-blossom >. fixes #837 .
Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-05-09 18:38:39 +01:00
Daira Emma Hopwood
3903935234
Deprecate `transaction::components::amount::DEFAULT_FEE` and
...
`zcash_primitives::transaction::fees::fixed::FeeRule::standard()`.
Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-05-09 17:18:34 +01:00
Daira Emma Hopwood
736d11b45b
Change `transaction::fees::fixed::FeeRule::standard()` to use the ZIP 317
...
minimum fee (10000 zatoshis rather than 1000 zatoshis) as the fixed fee.
Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-05-09 16:42:41 +01:00
Daira Emma Hopwood
043cc59c76
Add `transaction::fees::zip317::MINIMUM_FEE` constant and
...
`transaction::components::amount::Amount::const_from_i64`.
Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-05-09 16:42:19 +01:00
Daira Emma Hopwood
4cf27126e5
Revert "Update DEFAULT_FEE to 10_000 from 1000"
...
This reverts commit 2a6dc59c5d
.
Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-05-09 13:15:52 +01:00
Kris Nuttycombe
d37e6adee5
Merge pull request #783 from nuttycom/upgrade_bridgetree
...
Upgrade `zcash_primitives` to use updated `incrementalmerkletree` types.
2023-05-08 12:00:00 -06:00
str4d
579ab92b93
Merge branch 'main' into 823-secp256k1-0.26
2023-05-08 18:53:33 +01:00
Kris Nuttycombe
ec29836df9
Remove `bridgetree` dependency from `zcash_primitives`.
...
This also now makes `zcash_extensions` use `incrementalmerkletree`
transitively via type aliases in `zcash_primitives`.
2023-05-04 15:42:39 -06:00
Kris Nuttycombe
c9f53ddde5
Apply suggestions from code review
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2023-05-04 14:46:34 -06:00
Kris Nuttycombe
4d32a8ac20
Remove serialization version constants.
2023-05-04 12:46:15 -06:00
Kris Nuttycombe
71f74d4ac1
Remove the `merkle_tree::incremental` module.
...
This consolidates all the seralization code for frontiers and
incremental witnesses in the `merkle_tree` module.
2023-05-04 12:46:15 -06:00
Kris Nuttycombe
6aaa96d377
Remove zcashd-specific `bridgetree` serialization.
2023-05-04 12:46:15 -06:00
Kris Nuttycombe
1f9747e15f
Move merkle tree types to the `incrementalmerkletree` crate.
...
This removes the `CommitmentTree`, `IncrementalWitness`, and
`MerklePath` types in favor of equivalent versions available
from the `incrementalmerkletree` crate.
2023-05-04 12:30:56 -06:00
Kris Nuttycombe
667a7b841e
Move-only: restructure merkle tree source for extraction.
2023-05-04 12:21:50 -06:00
Kris Nuttycombe
6f2cbfc7de
Factor serialization out from merkle tree data structures.
2023-05-04 12:21:47 -06:00
Kris Nuttycombe
831a6cd396
Remove superfluous inner functions now that tree depth is a constant.
2023-05-04 12:16:09 -06:00
Kris Nuttycombe
ec57d23115
Use const generics to set commitment tree & incremental witness depths.
...
This is in preparation for extraction into the `incrementalmerkletree`
crate, which is not Sapling-specific and therefore cannot hard-code
the depths of these data structures.
2023-05-04 12:16:09 -06:00
Kris Nuttycombe
69430c3da2
Upgrade incrementalmerkletree and use bridgetree crate for `Bridgetree`.
2023-05-04 12:08:38 -06:00
Hazel OHearn
2a6dc59c5d
Update DEFAULT_FEE to 10_000 from 1000
2023-05-03 16:42:01 -03:00
Jack Grigg
ec1c1bcf21
Migrate to `secp256k1 0.26`, `hdwallet 0.4`
...
Closes zcash/librustzcash#823 .
2023-04-19 19:33:34 +00:00
Jack Grigg
a419b56e80
zcash_primitives 0.11.0
2023-04-14 23:56:16 +00:00
Jack Grigg
7be5d1bf7d
Update changelogs
2023-04-14 23:49:13 +00:00
Kris Nuttycombe
30dfcd79cc
Merge pull request #809 from nuttycom/test/merkle_tree_serialization
...
Add roundtrip and golden tests for v1 `MerkleBridge` serialization.
2023-04-12 13:40:49 -06:00
Jack Grigg
edb1941f19
zcash_primitives: Downgrade to `bip0039 0.10`
...
`bip0039 0.11` switched from language function arguments to a generic
parameter. We aren't ready to migrate to this yet.
2023-04-12 16:19:03 +00:00
Kris Nuttycombe
b2139c0b97
Add roundtrip and golden tests for v1 `MerkleBridge` serialization.
2023-04-11 16:45:09 -06:00
Kris Nuttycombe
3ff5fa5288
Merge pull request #793 from zcash/zip32_seed_signature
...
[#792 ] zcash_primitives: implement Seed Signature section of ZIP-32
2023-04-11 12:58:39 -06:00
Jack Grigg
878f3e9214
zcash_primitives: Migrate to `sha2 0.10`, `bip0039 0.11`
2023-04-11 15:48:44 +00:00
Jack Grigg
d2ccd1f017
zcash_primitives: Migrate to `fpe 0.6`
...
Part of zcash/librustzcash#757 .
2023-04-11 15:48:44 +00:00
Jack Grigg
2fcde5e047
Migrate to `orchard 0.4.0`
...
Closes zcash/librustzcash#766 .
2023-04-11 13:25:17 +00:00
Francisco Gindre
e3f09ba66a
[ #792 ] zcash_primitives: implement Seed Signature section of ZIP-32
...
Implements a type to enclose a Seed Fingerprint byte sequence
called `SeedFingerprint`
implements a public function to create a `SeedFingerprint` from
seed bytes
Closes #792
Credits for PR Suggestions by Daira and Kris
Edit: Added suggestions from Daira Emma and a test for returning `None`
Added test refactor suggestions as well
removed reference to test vectors
2023-03-30 18:41:57 -03:00
Kris Nuttycombe
d6fafa291b
Update Sapling note encryption for `zcash_note_encryption 0.3.0`
...
Fixes zcash/librustzcash#455
2023-03-21 11:09:38 -06:00
Kris Nuttycombe
c696069f93
Bump zcash_note_encryption to version 0.3.0 for release.
...
This removes the path-based dependencies on the `zcash_note_encryption`
crate in favor of using versioned dependencies locally. This better
reflects the future state in which `zcash_note_encryption` is factored
out of the workspace and maintained in a separate repository.
2023-03-20 16:16:34 -06:00
Kris Nuttycombe
cb1be45f22
Update CHANGELOGs to reflect the addition of the zcash_primitives/multicore feature.
2023-03-20 15:11:05 -06:00
Kris Nuttycombe
7c1a4c898d
Fix wasm32 CI runner.
...
The `halo2_proofs/multicore` flag must be disabled when running wasm
builds; this ensures that we do not accidentally include it as a
transitive dependency when building with `--no-default-features`.
2023-03-20 14:39:07 -06:00
Kris Nuttycombe
77fbd8cb4f
Update dependencies to reflect changes in ff 0.13
2023-03-20 14:35:45 -06:00
Jack Grigg
2530eb3a9d
Temporarily re-expose Sapling `NoteCommitment` derivation
2023-03-16 23:27:01 +00:00
Jack Grigg
a8003c8ff5
Temporarily re-expose ability to construct invalid Sapling bundles
...
Until zcash/zcash#6397 is closed, this ability is needed by `zcashd` for
crossing the FFI.
2023-03-08 03:45:01 +00:00
Kris Nuttycombe
9c56b21de7
Pin the `inferno` transitive dependency to avoid MSRV errors.
2023-02-16 11:06:24 -07:00
Jack Grigg
9852c31970
zcash_primitives 0.10.0
2023-02-01 02:10:42 +00:00
Jack Grigg
7f970bb82f
Use `EphemeralSecretKey, EphemeralPublicKey, SharedSecret` types in APIs
2023-01-24 15:02:49 +00:00
Jack Grigg
bc99cd2634
Move prepared key types into `sapling::keys`
...
We re-export them under `sapling::note_encryption` for now to make the
API changes smaller.
2023-01-24 15:02:43 +00:00
Jack Grigg
ded14adbb3
Add `sapling::keys::DiversifiedTransmissionKey`
2023-01-24 15:02:38 +00:00
Jack Grigg
06ba399d80
Clean up the `sapling::Note` API
2023-01-24 15:02:32 +00:00
Jack Grigg
87d0bd7db1
Refactor `sapling::Note`
...
Its internals are now private, and it stores a `PaymentAddress` (and by
extension the diversifier) instead of `g_d`.
2023-01-24 15:02:27 +00:00
Jack Grigg
dff21222fb
Require `PaymentAddress` to contain a valid diversifier
2023-01-24 14:51:13 +00:00
Jack Grigg
42c332a7a8
Use `sapling::note::ExtractedNoteCommitment` type in APIs
2023-01-24 14:37:11 +00:00
Jack Grigg
0a26c812e0
Split `sapling::Authorization::Proof` type into Spend and Output types
...
While the Groth16 proofs have identical encodings, they are technically
for different circuits, and we need the ability to differentiate them
during bundle building.
2023-01-20 11:12:49 +00:00
Kris Nuttycombe
79f3f10714
Merge pull request #760 from zcash/759-msrv-1.60
...
Bump MSRV for `zcash_primitives` and dependents to 1.60
2023-01-19 19:33:15 -07:00
Jack Grigg
809427f6bd
criterion 0.4
2023-01-20 00:03:10 +00:00
Jack Grigg
49b1cb3e69
Bump MSRV for `zcash_primitives` and dependents to 1.60
...
The MSRVs of the component crates are left as-is, partly because our
dependencies don't require us to bump them, and partly because those
crates have no pending changes and are relatively stable. We also plan
to split the component crates out into a separate repository, where it
will be easier to have a separate MSRV.
Closes zcash/librustzcash#759 .
2023-01-19 23:48:24 +00:00
Jack Grigg
19d8e2125e
Introduce `sapling::keys::{EphemeralSecretKey, EphemeralPublicKey}` types
2023-01-06 22:42:33 +00:00
Jack Grigg
7fb80d55d6
Introduce `sapling::keys::SharedSecret` type
2023-01-06 22:24:40 +00:00
Jack Grigg
1df49c517e
Refactor Sapling key derivation
2023-01-06 22:24:40 +00:00
Jack Grigg
88d46fd6b3
Refactor Sapling note commitment derivation
2023-01-06 22:24:40 +00:00
Jack Grigg
65271b49e5
Refactor Sapling nullifier derivation
2023-01-06 22:24:40 +00:00
Jack Grigg
f1d3e03a9b
zcash_primitives: Reorganise `sapling` module into submodules
...
The module structure now matches the `orchard` crate, to make subsequent
refactoring easier. The public API is not altered by this commit.
2023-01-06 22:24:35 +00:00
Kris Nuttycombe
95cbc7abaf
Merge pull request #734 from zcash/sapling-type-safety
...
Improve Sapling type safety
2023-01-05 13:12:45 -07:00
Jack Grigg
23922ca290
Add Sapling value types
...
These are modeled after the value types developed for the `orchard`
crate.
2022-12-20 05:16:39 +00:00
Kris Nuttycombe
125d2bc3d5
Merge pull request #727 from nuttycom/test/shield_transparent_funds
...
Add `shielding_threshold` argument to `shield_transparent_funds`.
2022-12-15 13:11:55 -07:00
Jack Grigg
fee0b6a18d
Make Sapling transaction structs non-transparent
...
We instead provide getters for the struct fields.
2022-12-13 04:03:06 +00:00
str4d
51932b7366
Merge pull request #732 from nuttycom/fix/clippy_lints
...
Fix clippy complaints.
2022-12-10 02:21:54 +00:00
Kris Nuttycombe
bbe6280bb0
Fix clippy complaints.
2022-12-09 09:32:34 -07:00
Kris Nuttycombe
0f56f095c2
Add `shielding_threshold` argument to `shield_transparent_funds`.
...
Previously, the shielding threshold was fixed to 100000 zatoshis.
Fixes #726
2022-12-08 17:15:48 -07:00
Kris Nuttycombe
fff6983512
Replace a number of uses of `assert!(matches!(...))` with `assert_matches!(...)`
...
The remaining uses of `assert!(matches!(...))` are all in cases where
for some reason the `assert_matches` macro interferes with correct
type inference.
2022-12-08 12:17:14 -07:00
Jack Grigg
4435c4789f
zcash_primitives 0.9.1
2022-12-06 06:14:28 +00:00
Jack Grigg
a1da018f1c
zcash_primitives: Count Sapling padding in `Builder::build_zfuture` fees
...
Closes zcash/librustzcash#709 .
2022-12-06 06:13:09 +00:00
Hazel OHearn
08bf711744
We now pad sapling outputs to two with at least one input for fee calculation
2022-11-18 17:30:49 -04:00
Jack Grigg
c3b6e5a72a
zcash_primitives 0.9.0
2022-11-11 20:37:55 +00:00
Jack Grigg
318d1b7522
Clean up changelogs
2022-11-11 20:29:26 +00:00
str4d
116ed0a3fc
Merge pull request #699 from zcash/wallet/error_display
...
Add missing `std::fmt::Display` implementations for error types.
2022-11-11 07:26:04 +00:00
str4d
53d56362cd
Fix typos in error type `Display` messages
2022-11-11 05:33:48 +00:00
Kris Nuttycombe
ed96131c4f
Add missing `std::fmt::Display` implementations for error types.
2022-11-10 21:17:57 -07:00
Jack Grigg
69665b9284
Add identity `MapAuth` implementations
2022-11-11 03:38:58 +00:00
Kris Nuttycombe
73ab884073
Implement ZIP 317 fee estimation, calculation, & change selection
2022-11-10 15:30:13 -07:00
Kris Nuttycombe
847ba49761
Add dust note detection to change selection.
...
The change selection algorithm has the most useful information for
determining whether or not a note is dust, so this adds a new error case
to `ChangeError` that allows the change selection to report the presence
of input notes without economic value back to its caller.
2022-11-10 12:18:30 -07:00
Kris Nuttycombe
9a7dc0db84
Add traits for fee estimation and input selection
...
This adds a set of abstractions that allow wallets to provide
independent strategies for fee estimation and note selection, and
implementations of these strategies that perform these operations in the
same fashion as the existing `spend` and `shield_transparent_funds`
functions.
This required a somewhat hefty rework of the error handling in
zcash_client_backend. It fixes an issue with the error types whereby
callees needed to have a bit too much information about the error
types produced by their callers.
Reflect the updated note selection and error handling in zcash_client_sqlite.
2022-11-10 12:17:59 -07:00
Kris Nuttycombe
981d45e966
Documentation & changelog fixes.
2022-11-03 19:27:17 -06:00
Kris Nuttycombe
cdfca848ea
Improve type safety of note commitment tree node construction.
2022-11-03 18:44:48 -06:00
Kris Nuttycombe
1be86b7a54
Derive the correct note when spending from a change address.
2022-11-03 18:44:48 -06:00