107 Commits

Author SHA1 Message Date
Jack Grigg
2774d2730f
Add prevHash field to CompactBlock
This enables basic verification of chain validity when CompactBlocks are
received without the full header.
2019-08-22 12:50:08 +01:00
Jack Grigg
fd87121244
Compute and store BlockHash inside BlockHeader 2019-08-22 12:50:07 +01: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
Jack Grigg
8f3f95ee08
Sapling commitment tree empty roots 2019-07-10 13:44:21 -04:00
Jack Grigg
785f22ca5a
Move Sapling commitment tree hash into zcash_primitives 2019-07-10 13:44:19 -04:00
Jack Grigg
999dcbfcab
Migrate to blake2b_simd and blake2s_simd crates
The primary reason for migrating is that these crates provide APIs for
setting the personalisation string. This enables us to depend solely on
published crates, and thus publish our own crates.

The SIMD implementations are ported from libsodium.

Closes #67.
2019-07-10 13:12:14 -04:00
Jack Grigg
f25a8a557e
Convert zip32 crate into a module of zcash_primitives 2019-06-27 16:14:24 +01:00
str4d
3b6f5e3d5e
Merge pull request #69 from str4d/sapling-note-encryption
Sapling note encryption
2019-06-06 20:50:17 +01:00