Commit Graph

15528 Commits

Author SHA1 Message Date
Kris Nuttycombe 735ecd0906 Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2021-12-22 15:57:47 -07:00
Kris Nuttycombe 9b72fff365 Fix handling of unified full viewing key metadata.
This fixes two issues with the management of unified full viewing
key metadata:
* Adds a reverse mapping from ufvkid to account id.
* Ensures that UFVK metadata is correctly initialized when USK
  metadata is loaded from disk.
2021-12-22 15:57:47 -07:00
Kris Nuttycombe b34fd6a816 Add test for CKeyStore::AddUnifiedAddress 2021-12-22 15:57:47 -07:00
Kris Nuttycombe 009ba76b0e Add test for wallet UA generation & detection. 2021-12-22 15:57:47 -07:00
Kris Nuttycombe 700b98f0b0 Add tests for keystore storage and retrieval of UFVKs. 2021-12-22 15:57:47 -07:00
Kris Nuttycombe 0dcdc28a38 Add CWallet::GetUnifiedForReceiver 2021-12-22 15:57:47 -07:00
Kris Nuttycombe 8337442553 Add newly generated transparent UA receivers to the wallet. 2021-12-22 15:57:47 -07:00
Kris Nuttycombe 290985ba48 AddTransparentSecretKey does not need to take a CExtKey 2021-12-22 15:57:47 -07:00
Kris Nuttycombe b29ca10b8d Add unified address generation.
Generate unified addresses from UFVKs, and add the associated
metadata to the wallet database.
2021-12-22 15:57:47 -07:00
Kris Nuttycombe ca20cf512c Add key metadata to walletdb. 2021-12-22 15:57:47 -07:00
Kris Nuttycombe d869d7f4a3 Load unified full viewing keys from the walletdb. 2021-12-22 15:57:47 -07:00
Kris Nuttycombe e56f252a86 Add unified address tracking to KeyStore 2021-12-22 15:55:36 -07:00
Kris Nuttycombe ef068c51a9 Store ufvks to the wallet database. 2021-12-22 15:55:36 -07:00
Kris Nuttycombe 6d36921b94 Add unified key components to the transparent & Sapling wallet parts. 2021-12-15 13:53:10 -07:00
Kris Nuttycombe 24ff7b36ec Add ZcashdUnifiedKeyMetadata and libzcash::ReceiverType 2021-12-15 13:53:10 -07:00
Kris Nuttycombe 4966bf315a Compute key id for UFVKs. 2021-12-15 13:53:10 -07:00
Kris Nuttycombe 48446b5e39 Add functions for generating BIP-44 and ZIP-32 keypaths 2021-12-14 15:10:27 -07:00
str4d 87eeee0607
Merge pull request #5400 from nuttycom/feature/wallet_orchard-ufvks
Add types & FFI for serialization of unified full viewing keys.
2021-12-14 21:38:53 +00:00
Kris Nuttycombe 1e18410b55 Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-12-14 13:02:41 -07:00
Kris Nuttycombe d1890ebd24 Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2021-12-13 21:03:36 -07:00
Kris Nuttycombe 6cccc4ad3c Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-12-13 18:53:27 -07:00
Kris Nuttycombe 8ae8ddd7d1 Add tests for ufvk roundtrip serialization. 2021-12-13 18:53:27 -07:00
Kris Nuttycombe 22cd218e83 Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-12-13 18:53:27 -07:00
Kris Nuttycombe 217c56811d Add UnifiedFullViewingKey type.
This type is backed by the `zcash_address` implementaion of
unified full viewing keys. It is intended for serialization
and parsing of UFVKs, and provides conversion functions that
allow for construction to and from ZcashdUnifiedFullViewingKey
values.
2021-12-13 18:53:27 -07:00
Kris Nuttycombe c78887a148 Add Rust FFI components for unified full viewing keys. 2021-12-13 18:53:27 -07:00
Kris Nuttycombe 4257abd328 Adds SaplingDiversifiableFullViewingKey
Adds SaplingDiversifiableFullViewingKey as a superclass of
SaplingExtendedFullViewingKey, and reduces the Sapling component
of UnifiedFullViewingKey to the new intermediate type. This
permits deserialization from the data that will be present
in the serialized form of the Sapling component of a UFVK.
2021-12-13 18:53:25 -07:00
Kris Nuttycombe 640f31463f Update to ufvk zcash_address build. 2021-12-13 18:51:15 -07:00
Kris Nuttycombe c908a3b059
Merge pull request #5396 from nuttycom/feature/wallet_orchard-unified_addrs_prereq
Prerequisites for adding unified addresses to the wallet.
2021-11-30 18:24:50 -07:00
Kris Nuttycombe 3bfb9d0c84 Remove ZcashdUnifiedAddress in favor of UnifiedAddress 2021-11-30 12:58:29 -07:00
Kris Nuttycombe a2f8e3b56c Use CKeyID and CScriptID instead of new P2PKH/P2SHAddress classes. 2021-11-30 11:24:37 -07:00
Kris Nuttycombe d65200c860 Refine structure of Zcash address generation.
This commit does not include functional changes; it merely
breaks up content previously included in `zcash/address/zip32.h`
into smaller and more focused components.
2021-11-30 11:22:37 -07:00
Kris Nuttycombe aa808eb07d
Merge pull request #5357 from nuttycom/feature/wallet_orchard-add_key_types
Add Orchard Address, IncomingViewingKey, and FullViewingKey types.
2021-11-30 07:13:22 -07:00
Kris Nuttycombe 782c705cb1 Remove Orchard spending key equality implementation. 2021-11-29 14:26:25 -07:00
Kris Nuttycombe bde245d8bc
Remove incorrect FFI method documentation.
Co-authored-by: str4d <jack@electriccoin.co>
2021-11-29 13:08:30 -07:00
Kris Nuttycombe e7c507cfb3 Update orchard & librustzcash dependency versions. 2021-11-29 13:05:54 -07:00
Kris Nuttycombe 6ee0dea218 Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-11-26 08:41:52 -07:00
Kris Nuttycombe 59a4c84112 Adds Orchard Address, IncomingViewingKey, FullViewingKey, and SpendingKey types. 2021-11-24 19:08:17 -07:00
Kris Nuttycombe 8f5591a9c1 Add libzcash::AccountId type. 2021-11-24 18:59:25 -07:00
Kris Nuttycombe 9202b127d0 Merge remote-tracking branch 'upstream/master' into feature/wallet_orchard 2021-11-23 18:38:07 -07:00
str4d c76b756a68
Merge pull request #5356 from nuttycom/feature/wallet_orchard-rename_tree_types
Rename OrchardMerkleTree -> OrchardMerkleFrontier, remove IncrementalSinsemillaTree
2021-11-23 20:34:23 +00:00
Kris Nuttycombe f49f4c73d8 Rename OrchardMerkleTree -> OrchardMerkleFrontier
Remove IncrementalSinsemillaTree; this will be replaced by
a more full-featured OrchardWallet type which embeds the
incremental merkle tree used in wallet operations.
2021-11-23 07:27:34 -07:00
str4d f8e99e7ba5
Merge pull request #5373 from ZcashFoundation/lib-zcash-script-sigops
Add legacy sigops counts to the zcash_script library API
2021-11-22 16:03:48 +00:00
Kris Nuttycombe 13b9a69230
Merge pull request #5306 from nuttycom/feature/mnemonic_seeds
Adds HD seed derivation from ZIP-339 mnemonic phrases.

This replaces random generation of transparent spending keys with BIP-44-compatible derivation from a mnemonic seed phrase, and replaces the random HD seed previously used for Sapling HD key derivation
with the same mnemonic seed. After this change, all new transparent and Sapling addresses
will be derived from a new randomly generated mnemonic seed, which is produced in such a way that 
it is guaranteed to produce valid unified spending keys at account 0 for all address types.

Closes #5176.
Closes #2673.
2021-11-18 17:52:36 -07:00
Kris Nuttycombe c7089d2086
Merge pull request #5374 from rex4539/typos
Fix typos
2021-11-18 15:08:13 -07:00
Kris Nuttycombe 14f95572fa
Improve documentation of the `-walletrequirebackup` zcashd wallet configuration option. 2021-11-18 15:05:46 -07:00
Kris Nuttycombe 7be1ec9c23
Minor textual fixes to release notes.
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-11-18 11:40:23 -07:00
Kris Nuttycombe 92445ba0a5 Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2021-11-18 10:54:12 -07:00
str4d e9f450281b
Merge pull request #5388 from str4d/ci-pyflakes
CI: Add Pyflakes to lints workflow
2021-11-18 17:23:35 +00:00
str4d 0268ce0ad0
Merge pull request #5370 from str4d/dep-updates
Dependency updates
2021-11-18 15:01:09 +00:00
Jack Grigg 9fd44c76fa CI: Add Pyflakes to lints workflow 2021-11-18 14:45:39 +00:00