Kris Nuttycombe
f58263e211
zcash_client_backend: Require the tree state for the start of each scanned range.
...
In order to support constructing the anchor for multiple pools with a
common anchor height, we must be able to checkpoint each note commitment
tree (and consequently compute the root) at that height. Since we may
not have the information in the tree needed to do so, we require that it
be provided.
As a bonus, this change makes it possible to improve the UX around
spendability, because we will no longer require subtree ranges below
received notes to be fully scanned; the inserted frontier provides
sufficient information to make them spendable.
2024-03-12 18:14:11 -06:00
Kris Nuttycombe
0c5a365c60
zcash_client_sqlite: Update to make use of `orchard::note::Rho`
2024-03-12 17:28:10 -06:00
Jack Grigg
6898dbf094
Replace `unstable-nu6` and `zfuture` feature flags with cfg flags
...
Neither of these should have been feature flags, as they gate breaking
changes to the Zcash consensus rules (and in some ways are incompatible
with each other), while feature flags should be additive.
2024-03-10 18:42:39 +00:00
Jack Grigg
75c5f31ab0
zcash_client_sqlite: Use a seeded RNG in `TestState`
...
This makes individual instances of `TestState` deterministic, which
helps with debugging.
2024-03-10 01:10:50 +00:00
Jack Grigg
390b536950
zcash_client_sqlite: Use `LocalNetwork` for testing
...
This enables us to activate Sapling and NU5 at the same height, to
simplify reuse of test logic between Sapling and Orchard.
As a side-effect, `zcash_extensions` is removed from the workspace
because it enables the `zfuture` feature flag unconditionally, which
breaks workspace-level builds because this causes the `zfuture` feature
flag on `zcash_protocol` to be enabled without the corresponding feature
flag on `zcash_client_sqlite` being enabled. We will fix this by moving
from feature flags to config flags for unstable features.
2024-03-10 01:10:28 +00:00
Kris Nuttycombe
8f4de9b235
Merge pull request #1235 from zcash/diverse_accounts
...
zcash_client_sqlite: Rework accounts to support imported viewing keys
2024-03-08 13:39:08 -07:00
Jack Grigg
bfc2278bfe
Encode UIVK Sapling component with `sapling-crypto`
2024-03-08 20:22:45 +00:00
Jack Grigg
6c6080c99c
`impl TestFvk for orchard::keys::FullViewingKey`
2024-03-08 13:28:55 +00:00
Jack Grigg
d0673c9bc3
zcash_protocol 0.1.0
2024-03-06 15:07:11 +00:00
Kris Nuttycombe
66c6bba84e
Add stub for a `zcash_protocol` crate.
2024-03-05 09:45:24 -07:00
Jack Grigg
dfb6c65edd
zcash_client_backend 0.11.0
...
Closes zcash/librustzcash#962 .
2024-03-01 01:16:04 +00:00
Jack Grigg
3135c31d1a
zcash_keys 0.1.0
2024-03-01 01:14:34 +00:00
Jack Grigg
d0c380114a
zcash_proofs 0.14.0
...
Closes zcash/librustzcash#1034 .
2024-03-01 01:13:49 +00:00
Jack Grigg
599aa45a56
zcash_primitives 0.14.0
2024-03-01 01:12:43 +00:00
Kris Nuttycombe
e5f23b9126
Update `orchard` dependency version to `0.7.1`
2024-02-29 15:39:44 -07:00
Kris Nuttycombe
7e8723bea9
zcash_client_backend: Add Orchard support to batch scanning.
2024-02-29 12:04:53 -07:00
Kris Nuttycombe
74b487e4c9
Apply suggestions from code review
...
Co-authored-by: str4d <thestr4d@gmail.com>
2024-02-15 20:51:24 -07:00
Kris Nuttycombe
6aabe60d21
zcash_client_backend: Add validation to the `Proposal::multi_step` constructor.
2024-02-15 13:09:52 -07:00
Jack Grigg
8ca1fcee92
Migrate to `sapling-crypto 0.1` and `orchard 0.7`
2024-01-26 20:43:58 +00:00
str4d
b6caa483b4
Merge pull request #1116 from zcash/zcash_keys
...
Split `zcash_keys` crate out from `zcash_client_backend`
2024-01-16 22:09:41 +00:00
Kris Nuttycombe
0ca955336d
Split `zcash_keys` crate out from `zcash_client_backend`
...
This change makes it easier for third parties to make use of the Unified
key infrastructure without incurring a dependency upon the rest of the
`zcash_client_backend` interfaces.
2024-01-16 13:49:42 -07:00
Kris Nuttycombe
cc39bf4429
zcash_primitives: Add Orchard bundle metadata to transaction builder.
2024-01-16 13:19:24 -07:00
Jack Grigg
2ea83243a7
Document the feature flags
2024-01-03 20:15:21 +00:00
Kris Nuttycombe
704e8e1144
zcash_primitives: Updates to reflect `sapling-crypto` and `orchard` builder changes.
2024-01-02 13:00:11 -07:00
Jack Grigg
dc8094856b
Migrate to `sapling-crypto` crate outside this repository
2023-12-11 17:27:34 +00:00
Jack Grigg
6acc64e61c
Move `zcash_primitives::sapling` module into `sapling-crypto`
2023-12-11 17:07:45 +00:00
Jack Grigg
e7f71c3f1f
Revert "Remove sapling-crypto"
...
This reverts commit 1b865ecfdf
.
2023-12-11 17:07:45 +00:00
Jack Grigg
ce7b7df0cc
zcash_primitives: Switch to type-safe `PRF^expand`
...
Part of zcash/librustzcash#1044 .
2023-12-07 17:09:44 +00:00
Jack Grigg
3dfd478141
Migrate to published `zip32` crate outside this repository
2023-12-06 18:04:09 +00:00
Jack Grigg
5aa0e6c6ee
Revert "Convert zip32 crate into a module of zcash_primitives"
...
This reverts commit f25a8a557e
.
2023-12-05 18:07:53 +00:00
Kris Nuttycombe
374882b7bc
Move `zcash_note_encryption` component to https://github.com/zcash/zcash_note_encryption
...
The `zcash_note_encryption` component crate has been factored out to
its own repository, to avoid circular crate dependencies involving
https://github.com/zcash/librustzcash and the
https://github.com/zcash/orchard and
https://github.com/zcash/sapling-crypto repositories.
2023-11-17 20:39:14 -07:00
Kris Nuttycombe
aa063ae3fd
zcash_client_backend: Factor out input source traits from `WalletRead`
...
Prior to this change, it's necessary to implement the entirety of the
`WalletRead` trait in order to be able to use the input selection
functionality provided by `zcash_client_backend::data_api::input_selection`.
This change factors out the minimal operations required for transaction
proposal construction to better reflect the principle of least authority
and make the input selection code reusable in more contexts.
In order to minimize the operations of the newly-created `InputSource`
and `ShieldingSource` traits, this change also removes the
`min_confirmations` field from transaction proposals, in favor of
storing explicit target and anchor heights. This has the effect of
limiting the lifetime of transaction proposals to `PRUNING_DEPTH -
min_confirmations` blocks.
2023-11-08 12:41:49 -07:00
Jack Grigg
7e89300db9
Move common package and dependency configs into workspace config
...
The MSRV for the main crates is 1.65, which is higher than the Rust
version that stabilised workplace dependencies (1.64). The implicit MSRV
for the component crates is still lower than this, so we don't migrate
these crates.
2023-09-26 22:01:32 +00:00
Jack Grigg
94c1f2413d
Migrate to `incrementalmerkletree 0.5`, `orchard 0.6`
2023-09-08 18:57:25 +00:00
Jack Grigg
facd4ccac5
Migrate to latest `shardtree` revision
2023-07-25 20:57:49 +00:00
Jack Grigg
99ecdf3a89
zcash_client_sqlite: Build subtrees from new commitments in a threadpool
...
The new `multicore` feature flag can be used to disable this behaviour.
2023-07-25 15:59:03 +00:00
Jack Grigg
98ea08e497
Migrate to latest `shardtree` to improve performance
2023-07-19 14:54:01 +00:00
Jack Grigg
a11545459b
Bump patched dependencies to bring in shardtree bugfixes
2023-07-06 22:19:21 +00:00
Kris Nuttycombe
3e358bc1c9
zcash_client_backend: Use `shardtree` for note commitments in block scanning.
...
Also adds a skeleton `zcash_client_sqlite` implementation of
`shardtree::ShardStore` and a skeleton migration for related
database changes.
2023-06-29 15:35:18 -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
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
980736806f
Upgrade `incrementalmerkletree` & `orchard` patch versions.
2023-05-25 12:33:25 -06:00
Kris Nuttycombe
69430c3da2
Upgrade incrementalmerkletree and use bridgetree crate for `Bridgetree`.
2023-05-04 12:08:38 -06:00
Jack Grigg
2fcde5e047
Migrate to `orchard 0.4.0`
...
Closes zcash/librustzcash#766 .
2023-04-11 13:25:17 +00:00
Kris Nuttycombe
4fea57dcac
Upgrade orchard patch dependency.
2023-04-03 16:28:53 -06: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
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
Kris Nuttycombe
fa8f5771cc
Upgrade to schemer-rusqlite version 0.2.1
2022-11-10 19:12:38 -07:00
Sean Bowe
176e21b015
Update zcash_primitives to orchard 0.3; release zcash_primitives and zcash_proofs 0.8.
2022-10-19 13:32:51 -06:00
Jack Grigg
cf5af3edbc
Point to `orchard` commit with `zcash_note_encryption 0.2`
2022-10-13 21:42:46 +00:00
Jack Grigg
24f7d1c9bc
zcash_primitives: Require `group 0.12.1` for `wnaf-memuse` feature flag
2022-10-13 06:19:34 +00:00
Jack Grigg
1d8fca848e
Point to upstream schemer repository
...
We can do this now that https://github.com/aschampion/schemer/pull/15
has been merged.
2022-10-11 20:40:41 +00:00
Kris Nuttycombe
f7aa7b2c84
Upgrade rusqlite to version 0.25
2022-10-03 08:12:37 -06:00
Jack Grigg
913aa0a988
zcash_client_backend: Correctly track heap usage of batch items
...
As of zcash/librustzcash#633 , `SaplingDomain::IncomingViewingKey` now
allocates memory internally, and this memory persists as long as the
`BatchRunner` is alive. Now that we have decoupled the measurement of
heap usage for batch tasks from their internals, we can add bounds to
all of the generic parameters of `Batch` to enable correctly measuring
their actual heap usage.
We also add `DynamicUsage` impls for a bunch of `zcash_primitives` types
that will be used with `BatchRunner` (or its equivalent implementation
in `zcashd`) by callers.
2022-09-24 21:01:19 +00:00
Daira Hopwood
20e869f501
zcash_primitives: Use prepared epk and ivk in Sapling note decryption
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-09-15 03:40:45 +01:00
Daira Hopwood
515b0a40ec
zcash_note_encryption: Add API to prepare epk.
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-09-15 03:22:41 +01:00
Kris Nuttycombe
5d817f6120
Update to schemer 0.2
2022-08-19 09:55:55 -06:00
Kris Nuttycombe
7c5b320108
Introduce wallet database schema migrations.
...
This replaces the current wallet initialization code with a migration
that brings the database up to the state produced by release 0.3.0.
A subsequent commit will add migrations that correctly produce the
database state as of zcash/librustzcash@602270cb1f .
Fixes #369
2022-08-18 10:15:58 -06:00
Jack Grigg
9ebbd42401
orchard 0.1
2022-05-10 23:06:31 +00:00
Jack Grigg
a565c7e113
hdwallet 0.3.1
...
This release bumped secp256k1 to 0.21.
2022-05-10 23:00:43 +00:00
Jack Grigg
144512b547
Migrate to `ff 0.12`
2022-05-06 20:03:49 +00:00
Kris Nuttycombe
8bb1962153
Update incrementalmerkletree version and add SER_V2 serialization constant.
2022-05-04 09:25:07 -06:00
Kris Nuttycombe
9416ab3a3e
Update to secp256k1 v0.21
2022-04-06 16:09:45 -06: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
2d34ac5654
Update incrementalmerkletree version.
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
bdaad53832
Update `orchard` revision
2022-02-28 21:34:03 +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
Jack Grigg
12700b4c17
Migrate to `orchard` revision with the Orchard circuit changes
2022-02-15 23:37:52 +00: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
Jack Grigg
07a95d70c9
incrementalmerkletree 0.2
2021-12-17 23:46:00 +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
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
da3c84ff31
Update hdwallet to depend upon secp256k1-v0.20
2021-10-01 12:52:19 -06:00
Jack Grigg
e1abca5032
Update patch to latest orchard crate revision
...
Includes circuit bugfixes and uses halo2 0.1.0-beta.1.
2021-09-28 22:08:27 +01:00
Jack Grigg
056e2c62f9
Pin halo2 and orchard crate versions with BOSL exception
2021-09-22 22:18:20 +01:00
Jack Grigg
06b7f13356
Empty f4jumble crate
2021-09-22 14:13:34 +01:00
Jack Grigg
4770675542
Bump Orchard patch to include Merkle path cleanups
2021-09-16 22:55:22 +01:00
Jack Grigg
65e1d32774
ff 0.11, group 0.11, etc.
2021-09-09 18:20:37 +01: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
ecb82ed813
nom 7
2021-08-23 20:15:51 +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
Jack Grigg
d8410063ab
zcash_primitives: Implement `Domain::batch_epk` for `jubjub`
2021-08-11 00:21:00 +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
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
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
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
4aa83d3048
bellman 0.10
2021-06-04 22:20:25 +01: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
Jack Grigg
c754363c07
zcash_address: Initial empty library crate
2021-05-20 14:54:25 +01:00
Jack Grigg
b7c31e3f54
Empty zcash_note_encryption crate
2021-03-20 09:56:20 +13:00
Kris Nuttycombe
aed2759e1e
Use NetworkUpgrade for TZE epoch determination.
...
This adds a `Future` variant for both BranchId and NetworkUpgrade.
2020-09-10 14:52:47 -06:00
Kris Nuttycombe
8299f336d3
Add test for tze txn parsing.
2020-09-10 11:58:40 -06:00
Jack Grigg
961d251178
Add transaction-builder suport for TZE-bearing transactions.
2020-09-10 11:58:40 -06:00
Jack Grigg
90a17b3c31
Core TZE traits and structs
...
Co-authored-by: Kris Nuttycombe <kris.nuttycombe@gmail.com>
2020-09-10 11:58:40 -06:00
Jack Grigg
3a4ea5da18
Remove subtree crates
...
Now that we have finished the large refactor, we can make subsequent
refactoring changes within the individual crates, and propagate the
changes into the Zcash crates via normal dependency updates.
2020-08-27 23:25:47 +01:00
str4d
f55f094ef6
Merge pull request #248 from str4d/equihash-crate
...
Move Equihash verifier into equihash crate
2020-07-10 11:57:11 +12:00
Jack Grigg
d71a599191
Empty equihash crate
2020-06-26 12:53:07 +12:00
Jack Grigg
c0cf55c127
SQLite database structure and initialisation
2020-06-25 18:54:34 +12:00
Jack Grigg
16ba891726
Remove librustzcash crate
...
This crate now lives in https://github.com/zcash/zcash , which is the
sole intended consumer of the C FFI.
2020-03-14 10:50:04 +13:00
Jack Grigg
2df2a2b2f2
Merge branch 'develop'
2020-03-14 10:36:58 +13:00
Sean Bowe
9379eec1b8
Bring zcash_mmr into workspace.
2020-03-03 18:04:18 -07:00
Sean Bowe
a4f7c4eef3
Include jubjub and bls12_381 crates in the workspace.
2019-12-12 11:40:48 -07:00
Jack Grigg
1b865ecfdf
Remove sapling-crypto
2019-08-14 10:48:06 +01:00
Jack Grigg
f25a8a557e
Convert zip32 crate into a module of zcash_primitives
2019-06-27 16:14:24 +01:00
Jack Grigg
fae919ec1c
Rename zcash_wallet to zcash_client_backend, set to 2018 edition
2019-06-27 16:02:12 +01:00
Jack Grigg
482bef87f0
Add ff and group crates to Cargo workspace
2019-01-06 09:50:07 +00:00
Jack Grigg
6e0364cd42
Update workspace after pulling in zip32 crate
2018-08-29 09:57:52 +01:00
Jack Grigg
a9059c9372
Update workspace after pulling in external crates
2018-08-28 23:06:15 +01:00
Jack Grigg
ad16ba6a35
Empty crates as a base for code refactoring
2018-08-28 22:24:14 +01:00
Jack Grigg
0ec85d362d
Set up a Cargo workspace
2018-08-23 21:10:04 +01:00
Jack Grigg
d7257ce010
Move librustzcash crate into subdir
2018-08-23 21:04:02 +01:00
Sean Bowe
bd9b8aabb9
Update sapling-crypto
2018-07-30 18:52:03 -06:00
Sean Bowe
0800976a57
Add implementation of Sapling proof API
2018-07-17 16:46:10 -06:00
Simon
943df43a89
Update authors.
2018-06-04 14:24:24 -07:00
str4d
d19c9b5645
Implement Equihash validator
...
Follows Zcash implementation as closely as possible.
2018-05-24 16:30:56 +12:00
Sean Bowe
f8f8954608
Update sapling-crypto
2018-05-18 12:47:35 -06:00
Sean Bowe
d14b12aae4
Switch to little endian encoding for everything.
2018-05-17 16:06:31 -06:00
Sean Bowe
fefa46b4c4
Implementation of Sprout proving and verifying
2018-05-10 14:29:02 -06:00
Sean Bowe
d73044896e
Update sapling-crypto dependency.
2018-05-07 17:52:44 -06:00
Sean Bowe
4f9953f18f
Support loading zk-SNARK parameters
2018-04-17 14:16:14 -06:00
Sean Bowe
37f20fb90c
Use lazy_static to initialize the Jubjub parameters, to avoid passing parameters around.
2018-04-12 18:38:25 -06:00
Sean Bowe
cb8c9ebbce
Make panic abort to avoid FFI problems.
2018-04-12 15:35:20 -06:00
Sean Bowe
f1d35708bc
Expose API for init/free of parameters and, to test, a merkle tree hash invocation.
2018-04-11 21:51:30 -06:00
str4d
222e0b3515
Add sapling-crypto to dependencies
2018-04-09 18:28:42 -06:00
Sean Bowe
d7085b90c8
Initial commit.
2017-03-17 11:07:23 -06:00