Commit Graph

412 Commits

Author SHA1 Message Date
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
Aurélien Nicolas 6240c02208
Long and random PH test vectors 2019-09-16 21:57:53 +01:00
Aurélien Nicolas be18eb240c
Move test vectors into own module 2019-09-16 21:57:42 +01:00
Aurélien Nicolas 9080b4ccf3
Many test vectors for pedersen hash 2019-09-16 20:52:11 +01:00
Aurélien Nicolas f5dfe07355
A test vector for pedersen hash 2019-09-16 20:50:22 +01:00
Kobi Gurkan 2edcc12e8e
group_hash: adds test vectors generated by go-jubjub 2019-09-16 20:34:14 +01:00
Kobi Gurkan 7ee61c4f94
pedersen_hash: adds test vectors for the circuit implementation 2019-09-16 20:23:07 +01:00
Kobi Gurkan 15633ad434
pedersen hashes: example of size limit bug 2019-09-16 20:17:50 +01:00
Kobi Gurkan 414d651c9c
pedersen_hash: adds tests for Daniel's vector 2019-09-16 20:12:38 +01:00
Kobi Gurkan 8541b2bde4
pedersen_hash: prints hashes, adds comments 2019-09-16 20:12:33 +01:00
Jack Grigg 0a3b0a9341
Upgrade to hex-literal 0.2 2019-09-12 19:38:51 +01:00
Jack Grigg d6f6b50ecd
Check try_sapling_output_recovery fails with identity as pk_d 2019-09-04 19:48:39 -04:00
Jack Grigg abbd43ff57
Make pk_d validity an invariant of PaymentAddress
Introduces a PaymentAddress::from_parts constructor, and getters for
the diversifier and pk_d fields (which are now private).
2019-09-04 19:48:35 -04:00
Jack Grigg 86142d044c
PaymentAddress::to_bytes 2019-09-04 19:46:46 -04:00
Jack Grigg 73ee19239c
Replace manual address decoding with PaymentAddress::from_bytes 2019-09-04 19:46:46 -04:00
Jack Grigg 0c7eb84d36
impl FromStr for Memo
Memo::from_str was previously shadowing a built-in trait method.
2019-08-24 00:40:32 +01:00
Jack Grigg 7c1d4d9a5b
Log distinct error cases in Equihash verification 2019-08-24 00:40:30 +01:00
Jack Grigg fe93f2ff6b
Rename into_ -> to_ where &self is used. 2019-08-24 00:39:54 +01:00
Jack Grigg 3a8efd9e67
Address various clippy warnings/errors in zcash_primitives 2019-08-24 00:39:49 +01:00
Jack Grigg d78c94b2a2
Move Equihash validator into zcash_primitives 2019-08-24 00:37:00 +01:00
Eirik Ogilvie-Wigley d63fa334ff
Remove unnecessary raw marker
Co-Authored-By: str4d <thestr4d@gmail.com>
2019-08-21 16:14:28 -06:00
Eirik Ogilvie-Wigley 76795a9014 cargo fmt 2019-08-20 22:22:03 -06:00
Eirik Ogilvie-Wigley c28ae31c71 cargo fix --edition-idioms for zcash_primitives 2019-08-20 22:20:22 -06:00
Eirik Ogilvie-Wigley 09882c6d08 Add edition = 2018 2019-08-20 18:31:20 -06:00
Eirik Ogilvie-Wigley b35a819a09 Replace try! macro 2019-08-20 18:24:47 -06:00
Eirik Ogilvie-Wigley f523ac285d cargo fmt 2019-08-20 17:17:21 -06:00
Eirik Ogilvie-Wigley b0d8747697 cargo fix --edition for zcash_primitives 2019-08-20 17:15:07 -06:00
Eirik Ogilvie-Wigley e12d315ab9 Warning cleanup 2019-08-20 16:45:10 -06:00
Eirik Ogilvie-Wigley 81c58172c3 cargo fmt zcash_primitives 2019-08-15 10:39:55 -06:00
Jack Grigg 5fb9b86ba0
Move Jubjub, Pedersen hash and primitives into zcash_primitives 2019-08-14 10:47:22 +01:00
Jack Grigg 2ae5804a67
Move Sprout and Sapling circuits into zcash_proofs 2019-08-14 10:45:55 +01:00
Jack Grigg 7ea6d10480
Move redjubjub into zcash_primitives 2019-08-14 10:43:25 +01:00
Jack Grigg 3211536324
Upgrade to crypto_api_chachapoly >= 0.2.1 2019-08-14 01:12:26 +01:00
Jack Grigg 2f1cae62b1
Upgrade to fpe 0.2 2019-08-14 01:12:23 +01:00
str4d 4a6c9ec425
Comment that we support a minimal set of script opcodes
Co-Authored-By: Daira Hopwood <daira@jacaranda.org>
2019-08-14 00:30:18 +01:00
Jack Grigg a28d94ff2e
Panic if Amount addition or subtraction overflows 2019-08-14 00:16:09 +01:00
Jack Grigg 1760b275a7
Simplify transaction builder tests
Requires impl PartialEq for Transaction, which is implemented as a TxId
comparison (relying on the invariant that Transaction is immutable).
2019-08-13 15:24:08 +01:00
Jack Grigg 3a73f946c5
Simplify structure of transaction builder errors 2019-08-13 15:10:57 +01:00
Jack Grigg e6663212ff
Improve documentation for Amount 2019-08-08 09:21:09 +01:00
Jack Grigg 7c07914bfd
Separate Amount::{from_i64, from_nonnegative_i64} APIs
This is more intuitive than a boolean flag for handling non-negative
Amounts stored in i64 values.
2019-08-08 00:55:23 +01:00
Jack Grigg 59ed258c7f
Make Amount opaque, and use it more
This helps to ensure type-safety of values that are required to satisfy
zatoshi range bounds.
2019-07-27 00:35:29 +01:00
Jack Grigg ab60b8804a
impl operators for Amount 2019-07-27 00:35:28 +01:00
Jack Grigg 0ea4408d46
Amount::{zero, is_positive, is_negative} 2019-07-27 00:35:27 +01:00
Jack Grigg fa50d551c8
Move Amount impl into a submodule 2019-07-27 00:35:26 +01:00
Jack Grigg 17f6bbcc67
Pass tx builder RNG to spend_sig() 2019-07-27 00:35:04 +01:00
Jack Grigg 532299d46e
Allow transaction::Builder RNG to be configured 2019-07-27 00:32:56 +01:00
Jack Grigg 4b61120cd0
Pass tx builder RNG to SaplingNoteEncryption 2019-07-27 00:31:16 +01:00
Jack Grigg a1cd9dfbac
transaction::Builder::add_transparent_output() 2019-07-27 00:28:02 +01:00
Jack Grigg c26188a0bb
TransparentAddress struct for P2PKH and P2SH 2019-07-27 00:28:01 +01:00
Jack Grigg dab3c002b7
Script opcode and data support
Overrides the shift-left operator for pushing opcodes onto the Script,
matching the notation used in zcashd.
2019-07-27 00:28:00 +01:00
Jack Grigg 1862354ea6
Sapling transaction builder 2019-07-27 00:27:50 +01:00
Jack Grigg 01618038bf
TxProver trait to abstract over the circuit parameters
An implementation using local parameters is provided in the zcash_proofs
crate.
2019-07-26 23:56:00 +01:00
str4d 05f098e893
Merge pull request #91 from str4d/upgrade-rand
Upgrade rand crate dependency to 0.7
2019-07-26 23:31:42 +01:00
str4d 5a48d179b8
Merge pull request #90 from adityapk00/paperwallet
Make some methods pub for use in External Wallet Generators

The exposed APIs may change in future crate versions.
2019-07-22 13:25:25 +01:00
Aditya Kulkarni 7f60f0f881 Make some methods in DiversifierKey, DiversiferIndex pub 2019-07-18 16:19:45 -07:00
Jack Grigg 6f9083b5ab
Migrate to rand 0.7 2019-07-19 00:47:40 +02:00
Jack Grigg 8f7adec0d9
Migrate zcash_primitives to rand_core 0.4 2019-07-19 00:46:37 +02:00
Jack Grigg 6149166ccb
Migrate zcash_primitives to rand 0.5 2019-07-19 00:35:06 +02:00
str4d 8361674efc
Merge branch 'master' into blake2_simd 2019-07-18 18:22:20 +02:00
Jack Grigg 504c3eaeae
Address Daira's review comments 2019-07-15 16:33:43 +02:00
Jack Grigg 07dbfbef59
Address Eirik's review comments 2019-07-10 13:53:22 -04:00
Jack Grigg 79006ecbdf
Unify Sapling tree depth constants
When sapling-crypto is refactored, the zcash_primitives::sapling
constant would become the canonical one.
2019-07-10 13:53:22 -04:00
Jack Grigg e67560b154
Document merkle_tree module 2019-07-10 13:53:22 -04:00
Jack Grigg b9cea33804
Move merkle_tree::Node into sapling module
This makes the merkle_tree module properly generic over the tree hash.
It still hard-codes a depth 32 tree, because Rust doesn't yet support
generic sizes, and we are unlikely to need to alter the tree depth in
future circuit changes.
2019-07-10 13:53:22 -04:00
Jack Grigg 263bbe1207
Use Iterator::all() in place of Iterator::fold() 2019-07-10 13:53:22 -04:00
Jack Grigg 98d7621135
Don't assert when parsing a CommitmentTreeWitness 2019-07-10 13:53:22 -04:00
Jack Grigg 9b4186705a
Add serialization APIs to CommitmentTree and IncrementalWitness 2019-07-10 13:53:22 -04:00
Jack Grigg 70a7069058
Helper for serializing Option<T> 2019-07-10 13:53:22 -04:00
Jack Grigg 667d6101c9
Sapling incremental witnesses 2019-07-10 13:53:20 -04:00
Jack Grigg bf74915053
Move CommitmentTreeWitness into zcash_primitives 2019-07-10 13:52:47 -04:00
Jack Grigg f4059a5faa
Sapling commitment tree 2019-07-10 13:44:21 -04:00