Commit Graph

120 Commits

Author SHA1 Message Date
Alfredo Garcia a57c09a3b8
Orchard data in V5 parsing (#2116)
* initialize the work on parsing orchard data in V5
* add the rest of orchard serialization
* fix serialization according to spec
* fix arbitrary for Signature<SpendAuth>
* move deserialization of AuthorizedAction to shielded_data module
* use `from_bits_truncate` to generate valid arbitrary flags
* change panic message
* fix serialization/deserialization when nActionsOrchard is empty
* fix Halo2Proof deserialization
* implement ZcashSerialize and ZcashDeserialize for flags
* implement ZcashSerialize and ZcashDeserialize for orchard::tree::Root
* use ZcashSerialize and ZcashDeserialize for binding_sig
* implement from_parts()
* implement Arbitrary for  Signature<Binding>
* add trusted preallocate with tests
* fix Arbitrary for orchard Nullifier
* Use zcash_serialize_bytes instead of write_compactsize

Co-authored-by: teor <teor@riseup.net>
2021-05-21 00:42:06 +00:00
teor 2827f6a7e6
Orchard: disable clippy warnings about comparing a newly created struct (#2117)
In Orchard, we compare canonical Pallas bytes with a supplied byte array.

Since we need to perform calculations to get it into canonical form, we
need to create a newly owned object.
2021-05-10 19:16:21 -03:00
Deirdre Connolly d0180423c1 Tidy up sinsemilla_hash_to_point() with bitvec 2021-04-30 00:48:23 -04:00
Deirdre Connolly 42999b2112 Remove FromStr impls for orchard keys for now, pending Unifed versions of those
Also modify the string encoding/decoding rountrip proptest to be just an exerciser of the keygen
for now.
2021-04-30 00:48:23 -04:00
Deirdre Connolly 6d4ecff24b Pin halo2 commit and update usage of pasta_curves accordingly 2021-04-30 00:48:23 -04:00
Deirdre Connolly f5206af470 Rename all Orchard spec references to nu5.pdf 2021-04-30 00:48:23 -04:00
Deirdre Connolly 26fc6b1908 Doing math in u16 collector obviates passing of Bit(Slice/Vector)
But I added a max 10-bit value check in S() on j.
2021-04-30 00:48:23 -04:00
Deirdre Connolly af32851aa1 Add TODO to fill in the Sinsemilla test vectors from zcash-hackworks 2021-04-30 00:48:23 -04:00
Deirdre Connolly aa81876e32 Move Value Commitment generator points into static via lazy_static 2021-04-30 00:48:23 -04:00
Deirdre Connolly 39b8e9859f Do not derive Hash for orchard::Nullifier as pallas::Base doesn't have it
If we need Hash, we may need to replace the inner type with bytes.
2021-04-30 00:48:23 -04:00
Deirdre Connolly 70bf4f80fb Add TODO for Poseidon hash implementation 2021-04-30 00:48:23 -04:00
Deirdre Connolly d7d8986849 Tidy up network handling for Orchard keys/addresses 2021-04-30 00:48:23 -04:00
Deirdre Connolly a1a59a7f76 Clean up orchard::tree tests for now 2021-04-30 00:48:23 -04:00
Deirdre Connolly 86c3b69720 IncomingViewingKey inherits network when derived from FullViewingKey 2021-04-30 00:48:23 -04:00
Deirdre Connolly d33947b331 Impl FullViewingKey::from_spending_key(SpendingKey, Network)
Remove From impl
2021-04-30 00:48:23 -04:00
Deirdre Connolly 1ff84c3d43 Refer to const generics issue 2021-04-30 00:48:23 -04:00
Deirdre Connolly d8d25d1a82 Add TODO 2021-04-30 00:48:23 -04:00
Deirdre Connolly 698f9620da Clippy +nightly 2021-04-30 00:48:23 -04:00
Deirdre Connolly 48674a9749 Remove standalone Orchard address Display, FromStr impls and related parts
NU5 proposes Unified Addresses, which would supplant any classic standalone pool address for Orchard.
https://github.com/ZcashFoundation/zebra/pull/1885#discussion_r607000460
2021-04-30 00:48:23 -04:00
Deirdre Connolly 72491df4ff orchard: move IncomingViewingKey::from([u8; 32]) to a ::from_bytes([u8; 32], Newtwork) 2021-04-30 00:48:23 -04:00
Deirdre Connolly 8d357faf73 Tried and discarded lazy_static! of value commitment generator points 2021-04-30 00:48:23 -04:00
Deirdre Connolly 81038e0fcb orchard: ValueCommit ops implementation tests 2021-04-30 00:48:23 -04:00
Deirdre Connolly db8f9cb81a orchard: Better Debug impls for some keys 2021-04-30 00:48:23 -04:00
Deirdre Connolly eb68caf14c Orchard: update Debug impl for commitments 2021-04-30 00:48:23 -04:00
Deirdre Connolly cc2e58fade Remove done TODO 2021-04-30 00:48:23 -04:00
Deirdre Connolly 376603d4c0 Flesh out Orchard note and nullifier derivation 2021-04-30 00:48:23 -04:00
Deirdre Connolly 37c32e9c94 Apply docstring suggestions from code review
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly 44966326c1 Orchard: turns out you can't store 10 bits in a u8 2021-04-30 00:48:23 -04:00
Deirdre Connolly 5e95d11fd9 Orchard: fix typos 2021-04-30 00:48:23 -04:00
Deirdre Connolly 34fe78bd0c Fix str match for key and addr decoding 2021-04-30 00:48:23 -04:00
Deirdre Connolly ec5d3a647f Remove commented out orchard::Address FromStr/Display test vector test for now 2021-04-30 00:48:23 -04:00
Deirdre Connolly f067a25d50 Update zebra-chain/src/orchard/address.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly f577cb8eb4 Update zebra-chain/src/orchard/address.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly b23093ca66 Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly bbb6b341ae Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly a73914a838 Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly bba99098f3 Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly e2989e3edf Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly e4fe8bb320 Update zebra-chain/src/orchard/note/nullifiers.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly 81da8363a8 Update zebra-chain/src/orchard/sinsemilla.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly dbd2ce6dd8 Update zebra-chain/src/orchard/sinsemilla.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly ebe0c002a9 Update zebra-chain/src/orchard/sinsemilla.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly 8461c2153e Update diversify_hash and its use to match spec updates 2021-04-30 00:48:23 -04:00
Deirdre Connolly 73e0f4f98a Orchard: fix some tests, etc 2021-04-30 00:48:23 -04:00
Deirdre Connolly 87f65b8b01 Orchard: update merkle_crh_orchard to use the appropriate l=10 bits, not 6 2021-04-30 00:48:23 -04:00
Deirdre Connolly 5ede33b231 Orchard: update nullifiers 2021-04-30 00:48:23 -04:00
Deirdre Connolly c892b93f61 Orchard: update merkle_crh_orchard correctly 2021-04-30 00:48:23 -04:00
Deirdre Connolly 218bb9b7c2 Orchard: remove unused imports 2021-04-30 00:48:23 -04:00
Deirdre Connolly f3501333b7 Orchard: tidy 2021-04-30 00:48:23 -04:00
Deirdre Connolly 1c903cab0f Orchard: fix into() call inside extract_x 2021-04-30 00:48:23 -04:00
Deirdre Connolly d11a4419ac Orchard: add a serde helper for pallas::Base 2021-04-30 00:48:23 -04:00
Deirdre Connolly 0351e6481d Orchard: tidy keys 2021-04-30 00:48:23 -04:00
Deirdre Connolly e85359c756 Orchard: tidy 2021-04-30 00:48:23 -04:00
Deirdre Connolly d3f0b226e6 Orchard: tidy nullifiers 2021-04-30 00:48:23 -04:00
Deirdre Connolly 009e1dd37e Orchard: some Action (de)serialization fixes 2021-04-30 00:48:23 -04:00
Deirdre Connolly f3cf6966a5 Orchard: tidy commitments etc 2021-04-30 00:48:23 -04:00
Deirdre Connolly cb9d6956d7 Orchard: Fix trait imports and Arbitrary for Action 2021-04-30 00:48:23 -04:00
Deirdre Connolly 981080f049 Orchard: Tidy Debug impl's for keys, cast a pallas::Base into a pallas::Scalar 2021-04-30 00:48:23 -04:00
Deirdre Connolly 6e51671c93 Tidy prf's 2021-04-30 00:48:23 -04:00
Deirdre Connolly 120b065a94 Action should use VerificationKeyBytes 2021-04-30 00:48:23 -04:00
Deirdre Connolly 01fed3e0f3 Tidy impl From<SpendingKey> for IvkCommitRandomness 2021-04-30 00:48:23 -04:00
Deirdre Connolly bd4e5e1f38 Cleanup 2021-04-30 00:48:23 -04:00
Deirdre Connolly df1ecc72b1 Most things are filled in, including a guess at Pallas-based Mixing Pedersen Hash 2021-04-30 00:48:23 -04:00
Deirdre Connolly 23e391894b Tidy 2021-04-30 00:48:23 -04:00
Deirdre Connolly de051c727c orchard: DiversifierKey is a newtype refinement of 32 bytes 2021-04-30 00:48:23 -04:00
Deirdre Connolly fd29708ecc orchard: derive IncomingViewingKey from FullViewingKey
Includes sinsemilla commit and short commit
2021-04-30 00:48:23 -04:00
Deirdre Connolly 6e1d2f1fb1 orchard: impl From<SpendingKey> for NullifierDerivingKey 2021-04-30 00:48:23 -04:00
Deirdre Connolly f50d8697d4 impl orchard SpendingKey::new() 2021-04-30 00:48:23 -04:00
Deirdre Connolly c3e40d73cf Bunch more work implementing orchard, porting from sapling where applicable 2021-04-30 00:48:23 -04:00
Deirdre Connolly 40383b2741 Partway done with typing out Orchard chain types 2021-04-30 00:48:23 -04:00