Commit Graph

482 Commits

Author SHA1 Message Date
Jack Grigg 88474c71c7 Simplify expressions 2020-10-30 13:51:40 +00:00
Jack Grigg 0cb51f963c Remove unnecessary clones 2020-10-30 13:51:40 +00:00
Jack Grigg bc9ca20d56 Make use of assignment operators 2020-10-30 13:26:36 +00:00
Jack Grigg 890648df4d Use !x.is_empty() instead of x.len() > 0 2020-10-30 13:25:08 +00:00
Jack Grigg 0bbcd8c408 Remove unnecessary imports 2020-10-30 13:22:46 +00:00
Aditya Kulkarni 70ecd6b2d8 Export notesize constants 2020-10-26 11:31:22 -07:00
Jack Grigg d657ff906e zcash_primitives: Small simplification to Script::address 2020-10-18 13:17:16 +01:00
Kris Nuttycombe b1c3f9d3f0
ZIP 321 Reference Implementation (#294)
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2020-10-15 14:03:40 +01:00
Kris Nuttycombe eeb0c2b08a
Update comment in zcash_primitives/src/transaction/builder.rs 2020-10-13 14:28:54 -06:00
Kris Nuttycombe 536c77bea7 Fix formatting. 2020-10-13 07:12:33 -06:00
Kris Nuttycombe cc121ede8e Document `TzeIn` serialization. 2020-10-09 16:37:00 -06:00
Kris Nuttycombe 39ab6e5b95
Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-10-09 16:19:44 -06:00
Kris Nuttycombe 26aa23988c Replace domain separator with a 1-byte tag. 2020-09-30 10:22:51 -06:00
Kris Nuttycombe 03b4e56a44 Formatting fix. 2020-09-23 17:14:35 -06:00
Kris Nuttycombe b6cd096c10 Generate plausible scripts for transaction proptests.
Co-authored-by: str4d <thestr4d@gmail.com>
2020-09-23 14:48:10 -06:00
Kris Nuttycombe 9963fb9e57 Use CompactSize & Vector::write for tze sighash construction. 2020-09-23 14:37:48 -06:00
Kris Nuttycombe 995d063992 Documentation fixes from code review.
Co-authored-by: str4d <thestr4d@gmail.com>
2020-09-23 14:16:29 -06:00
Kris Nuttycombe 6a536aa88a Use more informative type names in Extension trait. 2020-09-23 13:35:14 -06:00
Kris Nuttycombe 36c28341b3 Additional future -> zfuture renaming. 2020-09-23 13:11:47 -06:00
Kris Nuttycombe 99eb5b9336 Rename `Future -> ZFuture`
Proactively distinguish against future use of the
futures crate for source greppability.
2020-09-22 10:17:58 -06:00
Kris Nuttycombe a0a36eddfd Merge remote-tracking branch 'upstream/master' into zip-tzes
Fix benchmark build issues.
2020-09-21 16:43:33 -06:00
Kris Nuttycombe ab2d5bf603 Merge remote-tracking branch 'upstream/master' into zip-tzes 2020-09-21 10:08:05 -06:00
str4d e0587e752b
Merge pull request #290 from str4d/273-remove-decryption-epk-subgroup-check
Take epk as a jubjub::ExtendedPoint for note decryption
2020-09-22 03:05:35 +12:00
Kris Nuttycombe 924ee09bc4 Add documentation to primary `Extension` trait 2020-09-18 11:21:44 -06:00
Kris Nuttycombe cfb6850d7c Rustfmt 2020-09-18 10:52:58 -06:00
Kris Nuttycombe 80e1d35ea6 Apply additional suggestions from code review. 2020-09-18 10:40:30 -06:00
Kris Nuttycombe 90d8980162
Apply suggestions from code review
Co-authored-by: str4d <thestr4d@gmail.com>
2020-09-18 10:39:37 -06:00
Kris Nuttycombe d232133216 Add constants to support static resolution of network parameters. 2020-09-17 12:58:23 -06:00
Kris Nuttycombe 1ad9294933 Remove static determination of network state.
In the interest of making the library usable for both
testnet and mainnet without recompilation, static resolution
of network parameters has been replaced with a parameter passed
to the relevant functions. This also moves addres prefix constants
into the network parameters.
2020-09-17 10:34:42 -06:00
Kris Nuttycombe efaba87681 Add newtype for block height. 2020-09-17 10:26:41 -06:00
Kris Nuttycombe c35c501734 Add comment on FUTURE_TX_VERSION/GROUP_ID` 2020-09-10 14:52:47 -06:00
Kris Nuttycombe 208208238d Add property test for round-trip serialization of TZE-bearing transactions. 2020-09-10 14:52:47 -06:00
Kris Nuttycombe a5d5f87b48 Bind TZE inputs and outputs in signature. 2020-09-10 14:52:47 -06:00
Kris Nuttycombe eb4a2d5032 Add domain separator to transparent signatures.
Once TZEs are active, we would like to ensure that collisions
between TZE input signatures and transparent input signatures
cannot occur, so we add a domain separator to both.

This also ensures that if TZE inputs are presented for signature
without using the `Future` sighash version, that the signing
code will report an error.
2020-09-10 14:52:47 -06:00
Kris Nuttycombe 5a432b5e2b Ensure that prevout, extension_id & mode data can be signed in builder. 2020-09-10 14:52:47 -06:00
Kris Nuttycombe 1a8168e1c9 Document transaction builder methods. 2020-09-10 14:52:47 -06:00
Kris Nuttycombe 671caa8b84 Remove unused Epoch trait. 2020-09-10 14:52:47 -06:00
Kris Nuttycombe 23634d4cd0 Document ExtensionTxBuilder methods 2020-09-10 14:52:47 -06:00
Kris Nuttycombe 9d2f388b3b Apply idiomatic rustlang suggestions from code review
Co-authored-by: str4d <thestr4d@gmail.com>
2020-09-10 14:52:47 -06:00
Kris Nuttycombe 9ef15b536c Update method documentation in zcash_primitives/src/extensions/transparent.rs
Co-authored-by: str4d <thestr4d@gmail.com>
2020-09-10 14:52:47 -06:00
Kris Nuttycombe b15e49ef47 Documentation update to zcash_primitives/src/extensions/transparent.rs
Co-authored-by: str4d <thestr4d@gmail.com>
2020-09-10 14:52:47 -06:00
Kris Nuttycombe af931d524a Demo TZE fixes in response to PR comments. 2020-09-10 14:52:47 -06: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 81b6f8afd7 Formatter fix. 2020-09-10 14:52:47 -06:00
Kris Nuttycombe 4bf6309c54 Update to non-yanked version of subtle crate. 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
Kris Nuttycombe dc9b007e8e Add signature hash over TZE data. 2020-09-10 11:58:40 -06:00
Kris Nuttycombe 294aa86195 Change extension_id and mode types to u32 2020-09-10 11:58:40 -06:00
Kris Nuttycombe 4edbd26d7f Keep transaction details private. 2020-09-10 11:58:40 -06:00
Kris Nuttycombe fe6bea1fce Check transparent input for correctness before modifying vin. 2020-09-10 11:58:40 -06:00
Kris Nuttycombe 4a954c7f8f Add tests for transaction builder support. 2020-09-10 11:58:40 -06:00
Kris Nuttycombe ca8e24eef5 Add validation to demo transaction builder. 2020-09-10 11:58:40 -06:00
Kris Nuttycombe 659c34a954 Make error a type member of FromPayload trait rather than a type variable.
Fix demo test compilation errors.
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 bf7f95b0e9 TZE consensus context and program sets
Co-authored-by: Kris Nuttycombe <kris.nuttycombe@gmail.com>
2020-09-10 11:58:40 -06:00
Jack Grigg ce9a695ded Demo TZE parsing and consensus logic 2020-09-10 11:58:40 -06:00
Jack Grigg b3332db3e9 Add TZEs to transaction format 2020-09-10 11:58:40 -06:00
Jack Grigg 192db29a25 Take epk as a jubjub::ExtendedPoint for note decryption
We don't need to check if epk is in the prime-order subgroup before we
trial-decrypt, which saves a third of the cost of trial-decrypting
outputs that are not ours.
2020-09-10 00:39:21 +01:00
Jack Grigg 0b9063e479 zcash_primitives: Add benchmark for Sapling note decryption 2020-09-10 00:21:05 +01:00
Sean Bowe d4cba74402
Version bump 0.4.0 for crates
Bumps zcash_proofs, zcash_primitives, zcash_client_backend to 0.4.0
Also bumps zcash_client_sqlite to 0.2.0
2020-09-09 14:41:19 -06:00
ebfull c7e9523dce
Merge pull request #284 from str4d/259-ovk-none
zcash_primitives: Support ovk = ⊥ in note encryption
2020-09-09 14:32:57 -06:00
Jack Grigg 59e26a0c0f bls12_381 0.3.1 and jubjub 0.5.1 2020-09-09 16:51:53 +01:00
Jack Grigg 6a62993714 secp256k1 0.19 2020-09-09 00:38:54 +01:00
Jack Grigg 96bd59b942 Migrate to ff 0.8 and bellman 0.8
bellman 0.8 includes fixes for several performance regressions.

MSRV is now 1.44.0, matching the ff crate.
2020-09-09 00:27:51 +01:00
Jack Grigg 40e135783c zcash_primitives: Support ovk = ⊥ in note encryption
Closes zcash/librustzcash#259.
2020-08-28 21:17:16 +01:00
Jack Grigg 72817b0edc zcash_primitives: Add OutgoingCipherKey struct 2020-08-28 16:17:15 +01:00
Jack Grigg 3f06d92eec Depend on published versions of subtree crates 2020-08-27 23:25:20 +01:00
Jack Grigg e25a7dacdf zcash_primitives 0.3.0 2020-08-23 16:23:53 +01:00
Jack Grigg d112add8a3 jubjub 0.4.0 2020-08-23 16:23:53 +01:00
Jack Grigg 5f99c52143 bls12_381 0.2.0 2020-08-23 16:23:53 +01:00
Jack Grigg bdb42bcbc8 pairing 0.17.0 2020-08-23 15:31:09 +01:00
Jack Grigg ee3e8fbfbb group 0.7.0 2020-08-23 15:31:09 +01:00
Jack Grigg 55fa366730 ff 0.7.0 2020-08-23 15:31:09 +01:00
Jack Grigg a3cb89dff9 zcash_primitives: Add feature flags to docs.rs documentation 2020-08-23 06:56:03 +01:00
Daira Hopwood cfed47c176 Rename ValueCommitment.cm() to .commitment() (because it's confusing to have cm referring to both note and value commitments).
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-08-22 01:28:13 +01:00
Daira Hopwood 20c5096793 Fix remaining cases of cm -> cmu.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-08-22 01:28:13 +01:00
Daira Hopwood ee6c21f95b Scripted diff:
```
find . -not -path '*/.git/*' -a -type f -exec sed -i -e 's/hash_x/hash_u/g' {} \;
find . -not -path '*/.git/*' -a -type f -exec sed -i -e 's/hash_y/hash_v/g' {} \;
```

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-08-22 01:28:13 +01:00
Jack Grigg d15acf8acc zcash_primitives: Rename Note::cm to Note::cmu 2020-08-21 18:35:04 +01:00
Jack Grigg 7a6223202e zcash_primitives: Remove redundant TODO
The primitives are no longer generic over a curve; we hard-code Jubjub,
so we know that the smallest u-coordinate that is not on the curve is 1.
2020-08-21 18:27:09 +01:00
Jack Grigg ca5bc6b0ae zcash_primitives: Fix names of some test vector macros 2020-08-21 18:25:30 +01:00
Jack Grigg ed3489a111 zcash_primitives: Explicitly type zero-initialised arrays 2020-08-21 18:22:29 +01:00
Jack Grigg b9a8e1e415 zcash_primitives: Remove Jubjub implementation
We now use the jubjub crate for this.
2020-08-19 23:08:19 +01:00
Jack Grigg fdf06032e3 s/{pairing::bls12_381, zcash_primitives::jubjub}/{bls12_381, jubjub}
FINALLY.
2020-08-19 23:08:19 +01:00
Jack Grigg 10c571f2cd zcash_primitives: Define generator constants using new crates
Includes tests to ensure that the new generator constants match the
current zcash_primitives::JUBJUB generators.
2020-08-19 23:08:19 +01:00
Matthew Fors b86558c63a
Decrypt sapling output description given OCK (#271)
* decrypt sapling outputs directly with ock
* make prf_ock public
* unit tests for ock sapling output decryption
2020-08-19 06:38:09 +12:00
Jack Grigg 45a7861720 zcash_primitives: fpe 0.3 2020-08-16 11:16:23 +01:00
Jack Grigg 751ddad17d zcash_primitives: crypto_api_chachapoly 0.4 2020-08-14 17:44:17 +01:00
Jack Grigg 9ced89a1b0 zcash_primitives: secp256k1 0.17 2020-08-14 17:44:17 +01:00
Jack Grigg bc8a839c61 Migrate to hex 0.4 2020-08-14 17:44:17 +01:00
Jack Grigg 5fe2d6a57c zcash_primitives: ripemd160 0.9 and sha2 0.9 2020-08-14 17:44:17 +01:00
ying tong 72cc8fc916
Minor refactor of enumeration in tests in note_encryption.rs
Co-authored-by: str4d <thestr4d@gmail.com>
2020-08-07 08:46:15 +08:00
ying tong 13f4d0844e
Avoid using unwrap() when calling derive_esk()
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-08-07 00:12:07 +08:00
therealyingtong d54fd09c5f
Add esk check in parse_note_plaintext_without_memo() and try_sapling_output_recovery() 2020-08-06 18:39:49 +08:00
therealyingtong 5480a376df
Extract derive_esk() into separate function 2020-08-06 18:21:27 +08:00
therealyingtong 7cee29bbcc
Use <P: consensus::Parameters> type for Builder impl 2020-08-06 18:12:15 +08:00
ying tong 0f8f1b3f5d
Fix parsing of rseed in parse_note_plaintext_without_memo() and try_sapling_output_recovery()
Co-authored-by: str4d <thestr4d@gmail.com>
2020-08-06 18:12:15 +08:00
ying tong 40a908e0a8
Refactor leadbyte_array in note_encryption tests
Co-authored-by: str4d <thestr4d@gmail.com>
2020-08-06 18:12:10 +08:00
therealyingtong 8968547981
Document pub enum Rseed<Fs> with link to ZIP 212 2020-08-06 13:13:49 +08:00
therealyingtong 878646855c
Switch on leadbyte instead of tx height when decrypting outputs 2020-08-06 12:57:48 +08:00
therealyingtong c3d89644e2
Revert SaplingNoteEncryption::new() API to take rng instead of esk 2020-08-06 12:47:35 +08:00
therealyingtong 4f22077cf6
Remove const activation heights from consensus.rs 2020-08-06 12:30:48 +08:00
therealyingtong 9970a8aefd
Hard-code NetworkUpgrade::Canopy in generate_random_rseed 2020-08-06 12:27:20 +08:00
therealyingtong 44f46e50ce
Add <P: consensus::Parameters> type parameter to Builder struct 2020-08-06 11:43:07 +08:00
therealyingtong 88072d64ec
Remove network cfg from zcash_client_backend and zcash_primitives 2020-08-06 11:35:05 +08:00
therealyingtong c8fcdeb50b
Minor changes in note_encryption.rs 2020-08-05 15:45:18 +08:00
therealyingtong 2ed9b6f881
Refactor contextual random rseed generation into util method in zcash_primitives 2020-08-05 15:21:42 +08:00
therealyingtong a3ae1b273d
Switch plaintext version on height for dummy outputs in Builder 2020-08-05 14:27:36 +08:00
therealyingtong a25348dfba
Revert passing Parameters to methods 2020-08-05 12:47:29 +08:00
therealyingtong 0a47a9dbea
Pass rseed to Prover 2020-08-04 16:40:53 +08:00
therealyingtong b34e8b903c
Add invalid version byte tests for ZIP212 2020-08-03 13:51:45 +08:00
therealyingtong eba542c95f
Add activation heights as consts in consensus::Parameters 2020-08-03 13:40:39 +08:00
therealyingtong b1ddd556af
Check derived esk against claimed epk when decrypting note 2020-07-31 22:40:52 +08:00
therealyingtong 895e251793
Fix tests 2020-07-31 22:40:48 +08:00
therealyingtong 6904c8f933
Implement plaintext_version_is_valid() 2020-07-31 22:28:51 +08:00
therealyingtong eda00ec7ad
Pass esk to SaplingNoteEncryption::new and add generate_or_derive_esk() 2020-07-31 22:28:50 +08:00
therealyingtong 65504d9ca7
Add enum Rseed<E::Fs> to Note struct 2020-07-31 22:28:40 +08:00
therealyingtong b537f0f712
Pass height to methods which encrypt or decrypt Sapling outputs 2020-07-31 12:39:39 +08:00
therealyingtong 71d31abad6
Set activation heights for Canopy 2020-07-30 12:52:02 +08: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 b5bd52e7a1 equihash 0.1.0 2020-07-10 10:25:52 +12:00
str4d d380a8c8d2
Merge pull request #246 from str4d/zcash_client_sqlite
zcash_client_sqlite crate
2020-07-10 10:22:37 +12:00
Jack Grigg 5b2c71e112 Move Equihash verification APIs into equihash crate 2020-06-26 13:01:04 +12:00
Jack Grigg 34725df086 zcash_client_sqlite::transact::create_to_address() 2020-06-25 18:54:41 +12:00
therealyingtong a4b010e003 Placeholders for Canopy network upgrade 2020-06-04 15:44:15 +08:00
Jack Grigg 3779c12e31 Set activation heights for Heartwood network upgrade 2020-06-04 15:33:07 +12:00
Aditya Kulkarni 4b1d8e5226 Add methods to get OutPoint n, hash 2020-05-22 18:02:44 -07:00
Jack Grigg 4edff96321 Fix various lints 2020-05-22 18:52:35 +12:00
Jack Grigg d7d49285d8 Remove explicit std::marker from Sized bound
Sized is always part of the prelude, and binding on std causes
compilation issues for no-std crates.
2020-05-15 00:20:32 +12:00
Jack Grigg c597db59a6 ff: Rename PrimeField::into_repr -> PrimeField::to_repr 2020-05-02 18:55:13 +12:00
Jack Grigg 15e229509a ff: Move pow_vartime back into Field trait
The only places we don't use constant u64 limbs, we use PrimeField::char
instead (except in a single test where we use a field element).
2020-05-02 18:54:02 +12:00
Jack Grigg fb31d09218 ff: Remove Ord bound from PrimeField
ff_derive still implements Ord and PartialOrd for the fields it
implements, because pairing::bls12_381 internally assumes that those are
implemented. Once we delete that implementation, we will remove the Ord
and PartialOrd implementations from ff_derive.
2020-05-02 18:54:02 +12:00
Jack Grigg 38f87c2e73 ff: Add PrimeField::ReprEndianness associated type
This enables generic code to reliably operate on the bits of an encoded
field element, by converting them to and from a known (little)
endianness.

The BitAnd and Shr bounds on PrimeField are now removed, as users can
perform these operations themselves as needed.
2020-05-02 18:54:02 +12:00
Jack Grigg 55568b4d6e ff: Remove frobenius_map from Field trait
It is only used internally in the bls12_381 crate, and field extensions
aren't exposed anywhere in the Zcash stack.
2020-05-02 16:07:48 +12:00
Jack Grigg 1761ebfb35 ff: Remove SqrtField trait
The sqrt() function is now part of the Field trait. ff_derive returns an
error on fields for which it does not support generating a square root
function.

Note that Fq6 and Fq12 in pairing::bls12_381 leave the function
unimplemented. They will be dropped once the migration to the bls12_381
crate is complete. The equivalent structs in that crate are not exposed.
2020-05-02 16:07:48 +12:00
str4d b02cf3b467
Merge pull request #223 from str4d/remove-primefieldrepr
Remove ff::PrimeFieldRepr
2020-05-01 08:59:41 +12:00
Jack Grigg 49f119fb03 ff: Remove PrimeFieldRepr trait
The ff::PrimeField::Repr associated type now has the minimal necessary
bounds, which can be satisfied by a newtype around a byte array.
2020-04-23 18:15:14 +12:00
Jack Grigg 1fe3e3784c ff: Add Ord bound to PrimeField 2020-04-23 17:31:33 +12:00
Jack Grigg 1a40cfd39c zcash_primitives: Make jubjub::Fs::invert constant time 2020-04-23 16:23:24 +12:00
Jack Grigg 08500ee712 ff: PrimeField: BitAnd<u64, Output = u64> + Shr<u32, Output = Self> 2020-04-23 16:23:24 +12:00
Jack Grigg 1fdca393bb ff: PrimeField::{is_even, is_odd} 2020-04-23 16:23:24 +12:00
Jack Grigg 232f0a50b8 ff: Rework BitIterator to work with both u8 and u64 limb sizes
This enables BitIterator to be used with both the byte encoding and limb
representation of scalars.
2020-04-23 16:23:24 +12:00
Jack Grigg fd79de5408 ff: Add PrimeField: From<u64> constraint 2020-04-23 16:23:24 +12:00
Aditya Kulkarni 3ccadf3017 Add binding signature only if needed 2020-04-04 10:29:30 -07:00
Jack Grigg b6457a905b ff: Move pow_vartime into a trait that is generic over the limb size
The trait is implemented by default for u8 and u64, allowing pow_vartime
to be used with both the byte encoding and limb representation of field
elements.
2020-03-28 00:27:59 +13:00
Jack Grigg 2df2a2b2f2 Merge branch 'develop' 2020-03-14 10:36:58 +13:00
Sean Bowe 100878cd14
Version bump of all crates (except librustzcash) 2020-03-12 15:59:19 -06:00
Sean Bowe b52e4aac3a
Fix Field::random method declarations. 2020-03-03 17:47:29 -07:00
Jack Grigg 2d30c29d06 Pass &impl TxProver to Builder::build
This allows the caller to build multiple transactions with a single
proving backend.
2020-02-08 00:37:31 +00:00
Jack Grigg 76e0f658c1 Rename CommitmentTreeWitness -> MerklePath 2020-02-08 00:36:40 +00:00
Jack Grigg 3a3008caf9 Pass CommitmentTreeWitness directly into Builder::add_sapling_spend
This is more likely to be the data that the caller has available, and
is all we need now that a CommitmentTreeWitness can compute its root.
2020-02-07 17:31:38 +00:00
Jack Grigg 8a210ec271 CommitmentTreeWitness::root(leaf) 2020-02-07 17:21:59 +00:00
Jack Grigg 2064d1c801 Refactor zcash_primitives::merkle_tree::CommitmentTreeWitness
- The internal Option wrapper was an unnecessary leftover from when this
  code was directly inside the prover, where Some(x) represents an
  assigned variable.
- CommitmentTreeWitness::from_slice_with_depth is more idiomatic Rust.
2020-02-07 00:06:57 +00:00
François Garillot 865275e2a2
Correcting some trivial Rust option/iterator warts 2020-01-29 13:53:05 -08:00
Jack Grigg 00499b3441
Migrate zcash_primitives benchmarks to criterion 2019-12-19 16:11:11 -06:00
Jack Grigg ec2c304efd
no_std support for ff crate 2019-12-14 12:55:34 +00:00
Jack Grigg 1c9f5742fa
Improve Field::pow API and impl
Renamed to Field::pow_vartime to indicate it is still variable time with
respect to the exponent.
2019-12-14 12:27:48 +00:00
Jack Grigg 3d2acf48ce
Constant-time field square root
WARNING: THIS IS NOT FULLY CONSTANT TIME YET!

This will be fixed once we migrate to the jubjub and bls12_381 crates.
2019-12-13 20:13:30 +00:00
Jack Grigg 40749da9a7
Constant-time field inversion
WARNING: THIS IS NOT ACTUALLY CONSTANT TIME YET!

The jubjub and bls12_381 crates will replace our constant-time usages,
but we NEED to fix ff_derive because other users will expect it to
implement the Field trait correctly.
2019-12-13 19:46:04 +00:00
Jack Grigg 662be3551f
impl ConditionallySelectable for Field 2019-12-12 23:15:48 +00:00
Jack Grigg cded08b0c5
Make Field::square take &self and return Self 2019-12-12 23:09:28 +00:00
Jack Grigg 9dac748224
Make Field::double take &self and return Self 2019-12-12 22:59:18 +00:00
Jack Grigg 91c32f1c7c
Move from Field::negate to Neg operator 2019-12-12 22:52:17 +00:00
Jack Grigg 27c8f34601
Move Field operations to operator-backed traits
The ff_derive, pairing, zcash_primitives::jubjub, and bellman dummy_engine
changes are minimally implemented on top of the existing *_assign()
functions.
2019-12-12 21:19:46 +00:00
zancas 0aa127d7b1
refactor to manage test code and data in separate modules 2019-12-11 23:58:13 +00:00
Jack Grigg e6a8630b35
impl TryFrom<u32> for BranchId 2019-11-27 13:18:31 +00:00
Jack Grigg cd326f2b6a
Consensus parameters for network upgrades 2019-11-27 13:18:30 +00:00
Jack Grigg c24024b8e1
Create a consensus::BranchId enum for type safety
Includes all currently-known consensus branch IDs for the Zcash network.
2019-11-25 21:04:20 +00:00
Aditya Kulkarni 219391ac92 Add missing sighash declaration 2019-11-14 09:54:07 -08:00
str4d 67d700feab
Merge pull request #107 from str4d/transaction-builder-transparent-inputs
Add P2PKH transparent input support to transaction::Builder
2019-11-13 22:15:55 +00:00
Jack Grigg 8d6f882510
Renames after moves 2019-11-13 19:21:47 +00:00
Jack Grigg 8d967c8609
Move transparent input pushing onto TransparentInputs 2019-11-13 19:20:09 +00:00
Jack Grigg d9d50b98ab
Move transparent signing onto TransparentInputs 2019-11-13 19:12:55 +00:00
str4d 5823a695e2
Merge pull request #139 from adityapk00/tx_compare
Implement sorting for TxIDs
2019-11-04 16:29:59 +00:00
str4d 40d22ea2cc
Merge pull request #135 from NikVolf/extern-purge
Remove unneeded "extern crate"
2019-10-31 17:12:26 +00:00
Aditya Kulkarni b479981689
Implement clone for some structs 2019-10-15 17:47:53 +13:00
Aditya Kulkarni 885e09a82f
Create OutPoint from hash and n 2019-10-15 17:47:23 +13:00
Aditya Kulkarni fab9160b26
transparent inputs should use serialize_der() 2019-10-15 17:46:33 +13:00
Aditya Kulkarni 5a177eea27
Make mod serialize public 2019-10-15 17:42:49 +13:00
Jack Grigg 3425eabda2
transaction::Builder::add_transparent_input() 2019-10-15 17:42:46 +13:00
Jack Grigg 70857b0eed
Pass Script to signature_hash by reference 2019-10-15 17:32:34 +13:00
Jack Grigg 42b7f328fb
legacy::Script::address
This is the counterpart to legacy::TransparentAddress::script.
2019-10-15 17:32:34 +13:00
Aditya Kulkarni cd1083e086 Implememt sorting for TxIDs 2019-10-14 13:40:08 -07:00
Jack Grigg 2bbd25b36b
Add prevHash field to CompactBlock
This enables basic verification of chain validity when CompactBlocks are
received without the full header.
2019-10-09 14:11:14 +13:00
Jack Grigg a3b85b8fe6
Compute and store BlockHash inside BlockHeader 2019-10-09 14:11:14 +13:00
NikVolf 7844394364 Remove unneeded extern crate 2019-10-08 16:12:14 +03:00
Jack Grigg 8b08528bb0
zcash_primitives 0.1.0 2019-10-08 17:43:33 +13:00
str4d 2399d9f3e3
Merge pull request #93 from defuse/qed-it-lrz
Bring in QED-it Tests
2019-10-08 13:47:36 +13:00
Jim Posen 93563c3c65 Specify rand_core >= 0.5.1 for OsRng import. 2019-10-05 12:16:10 +02:00
str4d 524055bbb4
Merge pull request #134 from NikVolf/z-rng
Avoid using rand_os crate (fixes warnings)
2019-10-02 17:35:56 -06:00
NikVolf 730d2cbc7e fix outdated example 2019-09-28 12:50:28 +03:00
NikVolf b42477a0bf update from rand_os to fix warnings 2019-09-28 10:48:43 +03:00
Jack Grigg 4ad3988e43
Crate docs 2019-09-24 14:23:59 +01:00
Jack Grigg 7f3036d2c8
Update READMEs 2019-09-24 14:23:55 +01:00
Jack Grigg d9a0b9c83f
CI: Check intra-doc links
Credit: https://twitter.com/tomaka17/status/1176017851410526208
2019-09-24 10:35:12 +01:00
Jack Grigg 1d02363752
Add READMEs to Cargo.toml files
This will cause crates.io to render each crate's README as its
information page.
2019-09-23 14:42:38 +01:00
Taylor Hornby 3701c2b442
Increase the number of pedersen hash generators, exercise all test vectors. 2019-09-17 00:05:54 +01:00
Taylor Hornby 4dff8055bf
Remove unfinished find_group_hash test. 2019-09-16 23:44:14 +01:00
Taylor Hornby e391594e9e
Fix broken linear relation checking 2019-09-16 22:51:11 +01:00
Kobi Gurkan 15b4c37ab0
adds test for linear relation between pedersen hash generators 2019-09-16 22:23:28 +01:00
Aurélien Nicolas 68ba93f5fd
PH test vectors for edge-cases 2019-09-16 21:58:28 +01:00