Commit Graph

303 Commits

Author SHA1 Message Date
Alfredo Garcia 9cbd369a59
Refactor block module to have submodules (#512)
* create hash submodule for block

* create header submodule for block

* create serialize submodule for block

* add newline to hash.rs (fmt)

* Update zebra-chain/src/block/tests.rs

Co-authored-by: Jane Lusby <jlusby42@gmail.com>

Co-authored-by: Henry de Valence <hdevalence@hdevalence.ca>
Co-authored-by: Jane Lusby <jlusby42@gmail.com>
2020-06-25 09:18:05 -07:00
teor a9efb8715e chain: Update the note about time truncation 2020-06-24 18:22:36 +10:00
teor 3f5e2695e3 chain: Tweak the version and time test bounds
Use MAX constants for the block header version and time arbitrary test
ranges. Reduces the block header time arbitrary test range from 2**32 to
2**32-1 (u32::MAX). (2**32 is an invalid time value, which gets
truncated to 0 during serialization.)

Also add some comments about DateTime conversions.

Part of #477.
2020-06-24 18:22:36 +10:00
teor 719aa75581 chain: Add a comment about transaction sizes
We don't need to check transaction sizes yet, because we aren't
parsing or generating transactions outside of blocks.

Part of #483.
2020-06-24 18:22:36 +10:00
Henry de Valence e8561d8f9e rename zebra-test-vectors to zebra-test 2020-06-22 20:23:02 -07:00
teor d8b48f885b
consensus: Add a checkpoint verifier stub (#502)
consensus: Add a checkpoint verifier stub

This stub only verifies blocks whose hashes are in the checkpoint
list.

It doesn't have tests, chain child verifies to their ancestors, or
support checkpoint maximum height queries.

Part of #429.
2020-06-22 08:51:43 +10:00
Henry de Valence a0e0e2302b Update ed25519-zebra to 0.4 2020-06-16 14:35:42 -07:00
Henry de Valence 9ddcccdcb4 Update ed25519-zebra to 0.3 2020-06-16 00:42:25 -04:00
Henry de Valence a023ba9b16
Add serde bounds to zebra-chain structures. (#231) 2020-06-15 15:08:14 -07:00
teor 210e11a86d chain: Check the maximum block size when parsing
The maximum block size is 2,000,000 bytes. This commit also limits the
maximum transaction size in parsed blocks. (See #484 for the
corresponding limit on mempool transactions.)

The proptests might test the maximum block size, but they are
randomised. So we also want to explicitly test large block sizes.
(See #482 for these test cases and tests.)

Part of #477.
2020-06-15 11:00:48 -07:00
teor 585fa7a1ae chain: Verify the solutionSize field in block headers
Verify the value of the equihash solution size field in block headers.

This field isn't stored in the BlockHeader struct, so we need to verify
it at parse time.

Part of #477.
2020-06-15 19:04:43 +10:00
Jane Lusby 9f802cd8dd Wrap Transaction in Arc 2020-06-06 18:13:17 -04:00
Deirdre Connolly b263489af6
Export ed25519 zebra (#445)
And use that one, and our similar redjubjub export, everywhere.

Fixes #405

* Move PRs to 'In Progress' column on project board when created
2020-06-06 18:10:32 -04:00
teor f1de07889c Fix a typo in a comment in block.rs 2020-06-04 04:49:23 -04:00
Jane Lusby e9af80b875
Add initial version of zebra-state (#414)
* rename zebra-storage to zebra-state

* Setup initial skeleton for zebra-state

* add test

* Apply suggestions from code review

Co-authored-by: Henry de Valence <hdevalence@hdevalence.ca>

* move shared test vectors to a common crate

Co-authored-by: Jane Lusby <jane@zfnd.org>
Co-authored-by: Henry de Valence <hdevalence@hdevalence.ca>
2020-06-02 16:16:17 -07:00
dependabot-preview[bot] 145d9a1835 Bump proptest from 0.9.6 to 0.10.0
Bumps [proptest](https://github.com/altsysrq/proptest) from 0.9.6 to 0.10.0.
- [Release notes](https://github.com/altsysrq/proptest/releases)
- [Changelog](https://github.com/AltSysrq/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/altsysrq/proptest/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-29 15:06:40 -04:00
dependabot-preview[bot] e317b68b1d Bump proptest-derive from 0.1.2 to 0.2.0
Bumps [proptest-derive](https://github.com/AltSysrq/proptest) from 0.1.2 to 0.2.0.
- [Release notes](https://github.com/AltSysrq/proptest/releases)
- [Changelog](https://github.com/AltSysrq/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/AltSysrq/proptest/compare/proptest-derive-0.1.2...proptest-derive-0.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-28 23:00:29 -04:00
Jane Lusby 4a2d2a359c
add cargo fmt to ci (#403)
* add cargo fmt to ci

* rebase on main

* switch to stable

Co-authored-by: Jane Lusby <jane@zfnd.org>
2020-05-27 19:12:25 -07:00
Jane Lusby 4dc307f2f3 fix last warnings 2020-05-27 15:42:29 -04:00
Jane Lusby b6b35364f3 cleanup warnings throughout codebase 2020-05-27 15:42:29 -04:00
Deirdre Connolly 8d29d05761 Upgrade sha2 to 0.8.2 release
Resolves #326
2020-05-23 21:32:37 -04:00
Kiminuo 6465689555 transaction/hash.rs: Add FromStr implementation (issue #299)
Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
2020-05-14 15:30:11 -04:00
Deirdre Connolly 6ed6ccd62e Clean up imports and some doc comments 2020-04-29 22:42:52 -04:00
Deirdre Connolly 7367daef9f Tidy TransparentAddress FromStr/Display 2020-04-22 02:17:17 -04:00
Deirdre Connolly df7ed7ae81
Move note encryption types around (#362)
* Move around and dedupe note *Cipertext types

* Bump code coverage test timeout to 5 minutes

* Try uploading coverage to codecov.io
2020-04-19 14:45:25 -04:00
Deirdre Connolly 21eca164d8 Refine Output description ephemeral_key to jubjub::AffinePoint
And impl Arbitrary for Output to support better generation of those points in proptests.
2020-04-18 22:05:13 -04:00
Deirdre Connolly 7a4be955be Remove todo 2020-04-18 22:05:13 -04:00
Deirdre Connolly b53be18c8f Remove unused From<[u8; 32]> for SpendAuthorizingKey 2020-04-18 04:40:31 -04:00
Deirdre Connolly 630d021886 Remove unused From<[u8; 32]> for ProofAuthorizingKey 2020-04-18 04:40:31 -04:00
Deirdre Connolly d445799626 Remove the Deref's and make the From's consistent for all key types 2020-04-18 04:40:31 -04:00
Deirdre Connolly 37337c9e44 Remove some impl Deref's and PartialEq's that weren't used
Add some impl From<T> for [u8; 32] 's
2020-04-18 04:40:31 -04:00
Deirdre Connolly f8022442cf Remove some currently unused From impls for [u8; 32] 2020-04-18 04:40:31 -04:00
Deirdre Connolly 252acd85d8 Tidy imports 2020-04-18 04:40:31 -04:00
Deirdre Connolly 2156c6143b Complete impl Arbitrary for TransmissionKey 2020-04-18 04:40:31 -04:00
Deirdre Connolly abcca2c76b Finish Sapling keys roundtrip proptest 2020-04-18 04:40:31 -04:00
Deirdre Connolly 001b39c588 Impl PartialEq for AuthorizingKey and FullViewingKey 2020-04-18 04:40:31 -04:00
Deirdre Connolly 5d430cff12 Do not try to make a jubjub extended point work as a scalar in redjubjub PublicKey From impl 2020-04-18 04:40:31 -04:00
Deirdre Connolly 94c6d74ecb Add sapling key derivation bech32 encoding roundtrip proptest
And fix SpendingKey Display impl bug.
2020-04-18 04:40:31 -04:00
Deirdre Connolly 9daa1ba3c8 Impl PartialEq for some Sapling keys 2020-04-18 04:40:31 -04:00
Deirdre Connolly ba3ba6d2d9 Impl From<SpendingKey> for Diversifier
This is the _DefaultDiversifier_ method.
2020-04-18 04:40:31 -04:00
Deirdre Connolly 16f1e3061f Impl From<(AuthorizingKey, NullifierDerivingKey)> for IncomingViewingKey 2020-04-18 04:40:31 -04:00
Deirdre Connolly e508d09e9b Move sapling key tests to own module, test key derivation against test vectors
Impl a few From<[u8; 32]>'s for a few key types.
2020-04-18 04:40:31 -04:00
Deirdre Connolly ce1415a8ee Add generated test vectors from zcash-hackworks/zcash-test-vectors 2020-04-18 04:40:31 -04:00
Deirdre Connolly f01ea1b4fa Fix some Sprout key doc/message nits 2020-04-18 04:40:31 -04:00
Deirdre Connolly adab7335b6 Impl From<[u8; 32]>/Display/FromStr for Sapling SpendingKey, including network field 2020-04-18 04:40:31 -04:00
Deirdre Connolly 68c281c590 Impl Display/FromStr for Sapling IncomingViewingKey, including network field 2020-04-18 04:40:31 -04:00
Deirdre Connolly cdfcdc4751 Tidy imports 2020-04-18 04:40:31 -04:00
Deirdre Connolly 3eeb9925eb Impl Debug, Display, and FromStr for Sapling FullViewingKey 2020-04-18 04:40:31 -04:00
Deirdre Connolly c30a5a64b2 Get Sapling zaddr encoding roundtrip proptest working for now
TransmissionKey is just the jubjub affine point identity for now. :/
2020-04-18 04:40:31 -04:00
Deirdre Connolly aa18937b60 Add network, impl Display and FromStr for SaplingShieldedAddress 2020-04-18 04:40:31 -04:00