Commit Graph
100 Commits
Author SHA1 Message Date
Jack Grigg 1cbeac9d59 zcash_client_sqlite: Support sending to t-addrs 2019-08-29 17:54:26 +01:00
Jack Grigg 1c60a79ec1 Implement TransparentAddress encoding and decoding 2019-08-29 17:53:51 +01:00
Jack Grigg 601e88c633 Chain validity and reorg handling 2019-08-29 17:53:50 +01:00
Jack Grigg 98db781931 Add mainnet support to zcash_client_sqlite via a feature flag 2019-08-29 17:53:49 +01:00
Jack Grigg 2419c6648c Add security disclaimer to README 2019-08-29 17:53:48 +01:00
Jack Grigg cfaa0cf067 zcash_client_sqlite::query::get_*_memo_as_utf8() 2019-08-29 17:53:47 +01:00
Jack Grigg 4c1237fa50 zcash_client_sqlite::transact::create_to_address() 2019-08-29 17:53:40 +01:00
Jack Grigg 9a742d25ea zcash_client_sqlite::scan::scan_cached_blocks() 2019-08-29 17:52:42 +01:00
Jack Grigg 68291090c6 zcash_client_sqlite::query::{get_balance, get_verified_balance} 2019-08-29 17:52:41 +01:00
Jack Grigg 0bf1fad0ed zcash_client_sqlite::query::get_address() 2019-08-29 17:52:40 +01:00
Jack Grigg bee4d6a92b SQLite database structure and initialisation 2019-08-29 17:52:32 +01:00
Jack Grigg 99aef05318 Store witness inside WalletShieldedOutput 2019-08-26 12:41:44 +01:00
Jack Grigg 8cd6666e56 Move cmu and epk parsing onto CompactOutput struct 2019-08-26 12:41:43 +01:00
Jack Grigg 789e2ff216 Travis CI: Build before formatting check
cargo fmt does not build the code, and running it in a fresh clone of
the codebase will fail because the protobuf code has not been generated.
2019-08-22 15:18:50 +01:00
Jack Grigg 2bafc688ff Test nullifiers in constant time
Checking for spent notes in a block is still not completely constant
time, due to filtering out negative results of the constant-time
comparison.

Part of #84.
2019-08-22 12:52:01 +01:00
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
Jack Grigg 2e038207f0 Update new witnesses with subsequent transactions in the same block 2019-08-22 12:50:06 +01:00
Jack Grigg 36f1ef62de Add tx index within block to WalletTx struct 2019-08-22 12:50:05 +01:00
Jack Grigg c1e6b1844c Detect change notes while scanning blocks 2019-08-22 12:50:04 +01:00
Jack Grigg 9c51f3426b Check for spent notes while scanning blocks 2019-08-22 12:50:02 +01:00
Jack Grigg 8b353b3d55 Return the entire note and recipient address when scanning an output 2019-08-22 12:49:28 +01:00
Jack Grigg c3a30b9597 Increment the commitment tree and witnesses while scanning blocks 2019-08-22 12:49:27 +01:00
Jack Grigg 5ec94b5db5 Parse compact blocks to find wallet transactions 2019-08-22 12:49:22 +01:00
Jack Grigg 2dd2fc620e Build protobufs for compact formats 2019-08-21 11:04:16 +01:00
str4d 7b11d64cf9 Merge pull request #111 from jimpo/master
Fix off-by-one so pedersen_hash doesn't consume too many generators.
2019-08-20 21:14:48 +01:00
Jack Grigg 388a585515 transaction::Builder::add_transparent_input() 2019-08-16 17:13:24 +01:00
Jack Grigg 2a8748582b Pass Script to signature_hash by reference 2019-08-16 16:22:47 +01:00
Jack Grigg ff5775418b legacy::Script::address
This is the counterpart to legacy::TransparentAddress::script.
2019-08-16 16:21:59 +01:00
str4d 3584485516 Merge pull request #104 from str4d/remove-sapling-crypto
Refactor to remove sapling-crypto
2019-08-15 17:20:07 +01:00
Jack Grigg 1b865ecfdf Remove sapling-crypto 2019-08-14 10:48:06 +01:00
Jack Grigg 5fb9b86ba0 Move Jubjub, Pedersen hash and primitives into zcash_primitives 2019-08-14 10:47:22 +01:00
Jack Grigg b8af749b40 Move generic circuit gadgets into bellman 2019-08-14 10:45:58 +01:00
Jack Grigg 61c633db1e Move Jubjub and Pedersen hash gadgets into zcash_proofs
These are currently too Zcash-specific to be generalized, and need some
targeted refactoring.
2019-08-14 10:45:57 +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
str4d f931562431 Merge pull request #94 from str4d/upgrade-deps
Upgrade dependencies
2019-08-14 10:39:42 +01:00
Jack Grigg 81786c24c0 Fix clippy linter errors in pairing crate 2019-08-14 01:14:05 +01:00
Jack Grigg 13933d8c51 Use modern clippy linter syntax 2019-08-14 01:14:04 +01:00
Jack Grigg 3e35dd215c cargo update 2019-08-14 01:14:02 +01:00
Jack Grigg 3211536324 Upgrade to crypto_api_chachapoly >= 0.2.1 2019-08-14 01:12:26 +01:00
Jack Grigg ec321382e1 Upgrade to bech32 0.7 2019-08-14 01:12:25 +01:00
Jack Grigg a12b8053b0 Upgrade to digest 0.8 2019-08-14 01:12:24 +01:00
Jack Grigg 2f1cae62b1 Upgrade to fpe 0.2 2019-08-14 01:12:23 +01:00
str4d 52ea437e11 Merge pull request #92 from str4d/transaction-builder
Transaction builder
2019-08-14 01:11:12 +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
str4d 4255b44b21 Merge pull request #13 from str4d/nullifier-test-vectors
Test note nullifier in key component test vectors
2019-08-02 10:03:07 +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 54ef63bace Place zcash_proofs::prover::LocalTxProver behind a feature flag
This enables zcash_proofs to be compiled to WASM, which the directories
crate doesn't support.
2019-07-27 00:28:03 +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
Jack Grigg c4e14ad0b1 Address libc deprecations 2019-07-19 00:47:42 +02:00
Jack Grigg 6f9083b5ab Migrate to rand 0.7 2019-07-19 00:47:40 +02:00
Jack Grigg b0913afdd7 Migrate remaining crates to rand_core 0.4 2019-07-19 00:46:37 +02:00
Jack Grigg 8f7adec0d9 Migrate zcash_primitives to rand_core 0.4 2019-07-19 00:46:37 +02:00
Jack Grigg 60d344a0a7 Migrate sapling-crypto to rand_core 0.4 2019-07-19 00:46:34 +02:00
Jack Grigg 83e1af104e Migrate ff, group, pairing, and bellman to rand 0.6 2019-07-19 00:42:39 +02:00
Jack Grigg 5728bda2c1 Replace rust-crypto with sha2 in sapling-crypto dev-dependencies
This removes rand < 0.5 from our Cargo.lock.
2019-07-19 00:35:06 +02:00
Jack Grigg ccf75c39c1 Migrate remaining crates to rand 0.5 2019-07-19 00:35:06 +02:00
Jack Grigg 6149166ccb Migrate zcash_primitives to rand 0.5 2019-07-19 00:35:06 +02:00
Jack Grigg adfc88926b Migrate sapling-crypto to rand 0.5 2019-07-19 00:35:06 +02:00
Jack Grigg 4606a0cefb Migrate bellman to rand 0.5 2019-07-19 00:35:06 +02:00
Jack Grigg a7e22b3550 Migrate pairing to rand 0.5 2019-07-19 00:35:06 +02:00
Jack Grigg ce6e2a5825 Migrate group to rand 0.5 2019-07-19 00:35:06 +02:00
Jack Grigg 7a6642b221 Migrate ff to rand_core 0.3 (used by rand 0.5) 2019-07-19 00:35:06 +02:00
str4d 9e758dc7d9 Merge pull request #83 from str4d/blake2_simd
Migrate to blake2b_simd and blake2s_simd crates
2019-07-18 17:41:59 +01:00
str4d 8361674efc Merge branch 'master' into blake2_simd 2019-07-18 18:22:20 +02:00
str4d 5e3409ea85 Merge pull request #68 from str4d/sapling-commitment-tree
Sapling commitment tree
2019-07-15 16:52:46 +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 d1ce6749fe Bump minimum Rust version to 1.36 2019-07-10 13:12:26 -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
str4d 91c6b0b3f0 Merge pull request #88 from str4d/address-encodings
Sapling address encodings
2019-07-10 07:04:37 -04:00