Commit Graph

25 Commits

Author SHA1 Message Date
Daira Hopwood 1c10ad5f4a Avoid the need to specify a `rust_fmt` function for Options.
This does not change test vectors.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-12 20:57:37 +00:00
Daira Hopwood 54f168a30b Include the seed used for derivation in UA/UIVK/UFVK test vectors.
Also change variable-length vectors to use 'bitcoin_flavoured': False.

Co-authored-by: Kris Nuttycombe <kris@nutty.land>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-12 17:31:25 +00:00
Daira Hopwood 189cadb357 Reduce run times of unified_{address, incoming_viewing_keys, full_viewing_keys}.py by over half
by avoiding duplicated work in deriving levels of the key hierarchy above the account level.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-11 16:29:14 +00:00
Daira Hopwood f8a462d859 Make the test vectors for UAs, UIVKs, and UFVKs match up, and allow unknown items for UAs.
Also increase the number of test vectors to 20 (10 might be insufficient to see some corner cases).

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-11 16:29:14 +00:00
Daira Hopwood 3477c241aa Add BIP 32 key derivation and test vectors.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-11 16:29:14 +00:00
Daira Hopwood e5d31fea89 Implement ZIP 32 derivation for Orchard and use it for the Unified Address, IVK and FVK test vectors.
This commit only affects the Orchard test vectors.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-11 16:29:14 +00:00
Daira Hopwood 68e4ed1ee2 Change the seed used for Unified Address, IVK and FVK test vectors to be deterministic.
As of this commit, this only affects the Sapling test vectors (we still sample the same
randomness to avoid disturbing the others).

A "diversifier_index" field is added to the Unified Address test vectors. (This is not needed
for UIVKs/UFVKs since they do not depend on the diversifier index for any protocol.)

We also add an "account" field to make the account number explicit, even though it could be
inferred from the test vector index.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-11 16:29:14 +00:00
Daira Hopwood 060ea786f7 Refactor Zcash SLIP 44 coin type and the `hardened` function into a separate file,
since they are not specific to Sapling.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-11 16:29:14 +00:00
Daira Hopwood d6d69f8388 Merge files that were only separate in order to provide multiple entry points.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-08 15:11:15 +00:00
Daira Hopwood f07451a025 Move remaining scripts out of the root directory.
closes #79

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-08 13:53:57 +00:00
Daira Hopwood 823c8a54f4 Fix serialization of nested arrays in JSON.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-07 22:58:59 +00:00
Daira Hopwood 49a20a87d7 Remove dependency on pyblake2.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-02 02:44:40 +00:00
Kris Nuttycombe b682f6f306 Use secp256k1 for generation of transparent OVK test vectors. 2022-02-01 16:12:22 -07:00
Kris Nuttycombe b4ccca8d17 Add test vectors for transparent OVKs
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-02-01 14:35:46 -07:00
Daira Hopwood 674dc7c054 Cosmetics.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-01 20:29:09 +00:00
Daira Hopwood f7f726bf0d Add `internal_ivk` and `internal_fp` to Sapling internal key test vector fields.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-01 20:29:09 +00:00
Daira Hopwood b955625f52 Calls to `self.tag()` in Sapling internal key derivation should have been to `self.parent_tag()`
Co-authored-by: Ying Tong Lai <yingtong@z.cash>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-01 20:29:09 +00:00
Daira Hopwood 2234fa1242 Refactor the Orchard FullViewingKey constructor by adding FullViewingKey.from_spending_key.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-01 20:29:09 +00:00
Daira Hopwood 6c2bac7b73 Add test vectors for Orchard internal key derivation.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-01 20:29:09 +00:00
Daira Hopwood b10115d363 Add test vectors for Sapling internal key derivation.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-02-01 20:29:09 +00:00
Daira Hopwood f81796c12a Coinbase scripts generated by zcashd have an extra OP_0, and nSequence == 0xFFFFFFFF.
Also, the height in coinbase needs to match nExpiryHeight.

Co-authored-by: Jack Grigg <str4d@electriccoin.co>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-01-31 21:38:31 +00:00
Daira Hopwood 60faf1c2c5 Generate some v5 coinbase transactions.
Co-authored-by: Kris Nuttycombe <kris@nutty.land>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-01-27 23:43:29 +00:00
Daira Hopwood ff9e171ff3 Update the computation of ZIP 244 test vectors to match https://github.com/zcash/zips/pull/587 .
Co-authored-by: Kris Nuttycombe <kris@nutty.land>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-01-27 23:34:40 +00:00
Kris Nuttycombe 0afbd1f240 Correct the types of variable-length fields for ZIP 244 test vectors.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-01-27 22:52:50 +00:00
Jack Grigg 2093b309f4 Refactor test vectors into package
Scripts that were previously run via:
    poetry run python ./SCRIPT_NAME.py

and have been moved, can now be run as:
    poetry run SCRIPT_NAME

Some top-level scripts remain, where they only generate test vectors and
do not contain any Zcash logic. These now use the `zcash_test_vectors`
package, and can't be run directly unless this package is made available
in `PYTHONPATH`.
2022-01-13 02:46:20 +00:00