Commit Graph
54 Commits
Author SHA1 Message Date
zkbot 741cf2cedf Auto merge of #1115 - ebfull:shorten-proving-key, r=ebfull
Remove the constraint system from the alpha proving key.

This removes the constraint system from the `z5-proving.key`, shortening it by about 35%. It appeared at the end of the file, which is why we didn't need to change public parameters in #1104.
2016-07-19 22:38:50 +00:00
zkbot 431604c7d9 Auto merge of #1094 - ThisIsNotOfficialCodeItsJustForks:t488-document-side-channel-attacks, r=ebfull
Add security warnings doc with warning about side channels.

Closes #5. Closes #785. Closes #488. Closes #784.

Let's only merge this once we're sure the warning is at least as strong as it needs to be (and thus sufficient to close those tickets).
2016-07-19 17:39:27 +00:00
zkbot d20d866d89 Auto merge of #1105 - bitcartel:zc.v0.11.2.z6_issue_424, r=ebfull
New private/public key pairs for broadcasting alert messages

Implements #424

Fixes and integrates method of sending alerts as described by upstream here:
- https://gist.github.com/laanwj/0e689cfa37b52bcbbb44

To send an alert:
- Copy private keys into alertkeys.h.
- Modify alert parameters and message found in sendalert.cpp
- Build and run to send the alert e.g. ./zcashd -printtoconsole -sendalert

Tested and verified with local nodes on alpha 6 testnet.
2016-07-18 21:09:46 +00:00
zkbot 4d459f93a4 Auto merge of #1090 - ebfull:rename-pour-and-serial, r=ebfull
Rename things to match protocol specification

This is a pass through the code to eliminate usage of "pour" and "serial" and any other outdated terminology.

Closes #602
2016-07-18 19:58:25 +00:00
zkbot e613014526 Auto merge of #1104 - ebfull:libsnark-updates, r=ebfull
Update libsnark

We have now forked libsnark's current master and applied the following patches:

* [`9216072`: Remove code that we don't use.](https://github.com/zcash/libsnark/commit/9216072c3b20d65359f4d5f3982c8270dab422b6) (unblocks #69)
* [`dcb78b2`: Modify makefile to stop compiling things we removed.](https://github.com/zcash/libsnark/commit/dcb78b24d9de86522f7f976741111e9e66804889)
* [`a6b0ad0`: Use libsodium's PRNG](https://github.com/zcash/libsnark/commit/a6b0ad0c801fe96d0e12e5961279cdf306a412fa) (closes #780)
* [`4036716`: Don't (de)serialize the constraint system in the proving key.](https://github.com/zcash/libsnark/commit/403671675ada05caf7446f9676fa3c54d5830325) (closes #491)
* [`a703148`: Taylor's compilation patch](https://github.com/zcash/libsnark/commit/a7031481fd8d2360337321401fe8e24f0359317a) (@defuse can you submit this to upstream?)

This PR adopts those changes, and makes the requisite changes to Zcash to support them. I have decided to not bring libsnark in tree for the time being, though it should be incredibly easy to do later if we're *absolutely* sure we should.
2016-07-18 18:04:56 +00:00
zkbot f30580744f Auto merge of #1059 - bitcartel:zc.v0.11.2.z5_getblocksubsidy, r=ebfull
Add getblocksubsidy RPC command to return block reward taking into account mining slow start

This PR adds a new RPC command to return the block reward as defined by function `GetBlockSubsidy`.

Usage:
`zcash-cli getblocksubsidy blockheight
`

The basis for this PR is that some users have been unaware of the mining slow start and they subsequently sought help to clarify if they were mining blocks correctly or if there was a bug in the reward schedule.
2016-07-17 16:19:39 +00:00
zkbot fc127fc2db Auto merge of #1051 - ThisIsNotOfficialCodeItsJustForks:t863-mock-coverage-of-checktransaction, r=ebfull
Add mock test coverage of CheckTransaction

Closes #863.
2016-07-14 18:43:07 +00:00
zkbot 4bcdd85583 Auto merge of #1047 - aniemerg:fix/get-difficulty-fix2, r=ebfull
Update GetDifficulty() to use consensus.powLimit from consensus parameters.

Fixes #1032.
2016-07-14 04:18:56 +00:00
zkbot 331cae91bc Auto merge of #1085 - zcash:daira-clang-cpp11, r=ebfull
.clang-format: change standard to C++11

A nitpick for folks who want to test with clang.
2016-07-14 03:08:55 +00:00
zkbot 42825a9f6a Auto merge of #979 - nathan-at-least:nathan.cleanup-nonofficial-tags, r=ebfull
A script to remove "unofficial" tags from a remote, such as github.

Officialness is determined by a regular expression. ;-)

This is handy because we often want upstream Bitcoin tags for local
diffs, but sometimes we accidentally upload them to github which then
claims they are our releases, which is confusing and misleading.
2016-07-13 02:23:14 +00:00
zkbot 2b75ad0bd4 Auto merge of #1089 - ThisIsNotOfficialCodeItsJustForks:t960-rename-zerocash-zcash, r=ebfull
Rename zerocash to zcash in places

Closes #960.
2016-07-13 01:51:22 +00:00
zkbot 46187fbe7a Auto merge of #1082 - ebfull:reorder-logs, r=ebfull
Reorder initialization routines to ensure verifying key log messages appear in debug.log.

Closes #721
2016-07-12 04:41:10 +00:00
zkbot 04932a64e8 Auto merge of #1080 - ebfull:performance-check-valid-pour, r=ebfull
Always check valid joinsplits during performance tests

This will generate a valid joinsplit instead of using one from an environment variable.
2016-07-11 22:38:25 +00:00
zkbot 6caacc892e Auto merge of #1058 - ebfull:coin-cache, r=ebfull
Flush to disk more consistently by accounting memory usage of serials/anchors in cache.

Closes #626.

It's important that this at least *approximates* the memory usage, so that we flush the cache to disk as expected. It's okay that we overestimate. The serials are stored in keys in the `boost::unordered_map`, so we can simply use that map's `DynamicMemoryUsage`. The anchors are another story.
2016-07-11 17:23:19 +00:00
zkbot ecef582339 Auto merge of #1061 - ebfull:remove-libzerocash-completely, r=ebfull
Remove the rest of libzerocash.

Closes #510.
2016-07-11 16:17:35 +00:00
zkbot 3c72ec710e Auto merge of #1044 - bitcartel:zc.v0.11.2.z5_issue_932, r=ebfull
Disable USE_ASM when building libsnark

For #932.
2016-07-09 17:36:19 +00:00
zkbot 89a9e46cc9 Auto merge of #1049 - str4d:equihash-faster-sort-comparison, r=bitcartel
Only compare the first n/(k+1) bits when sorting

We only need to sort based on the bits we are colliding. In earlier solver rounds, this speeds up the comparison considerably (calling `memcmp()` on 3 bytes instead of 12 in the first round for the current parameters).
2016-07-07 20:43:42 +00:00
zkbot 99edcaaf53 Auto merge of #1062 - ebfull:remove-mainnet-checkpoints, r=ebfull
Remove the mainnet checkpoints.

This removes the checkpoints from mainnet (just as we have with the other chain parameters).

Closes #695.
2016-06-30 17:56:28 +00:00
zkbot 16abefdd22 Auto merge of #1060 - str4d:1033-randomise-nonce, r=ebfull
Randomise the nonce in the block header

The top and bottom 16 bits of the nonce are left clear for local use as thread
flags and counters. This does not leak any more local information about the
miner than is currently exposed.

The cleared bits should not be considered a consensus rule, as miners are free
to set all bits of the nonce however they wish.

Closes #1033
2016-06-29 19:15:23 +00:00
zkbot 0df212bae3 Auto merge of #1046 - str4d:971-large-tx-benchmark, r=ebfull
Add performance tests for creating and validating a MAX_BLOCK_SIZE transaction

Closes #971.
2016-06-29 07:54:28 +00:00
zkbot 68b8b95c53 Auto merge of #962 - ebfull:2mb-blocks, r=ebfull
Increase block size limit to 2MB.

http://gavinandresen.ninja/a-guided-tour-of-the-2mb-fork

Closes #765.
2016-06-28 17:46:47 +00:00
zkbot 658cdb15f7 Auto merge of #1027 - ThisIsNotOfficialCodeItsJustForks:t862-trivial-mock-test-example, r=ebfull
Add example mock test of CheckTransaction

Closes #862.
2016-06-22 14:30:12 +00:00
zkbot 62a2d12672 Auto merge of #1026 - ebfull:address-serialization, r=ebfull
Zcash address encoding

We need to encode Zcash addresses so they aren't as large and unweildy. We're using Base58Check just like upstream does, and to ensure the first character is "z" in our addresses we must use two bytes for the version string. Two bytes gives us an extra character for free, so this PR targets the beginning of addresses to have "zc".

```
$ ./src/zcash-cli zcrawkeygen
{
    "zcaddress" : "tnvaj4ZbZG83tj4RwZcFeLgJoSt8nw1ZvSCG8EMyowAsXTQgJPat77Y43BVdVCrwrbLy7GG9msJDYdn5hmreHmkXAkX17hb",
    "zcsecretkey" : "SKzkxCRWvscKnroSFyhCqhY332KcDMH4LLNdK2TsSvbmr3CGAB8B",
    "zcviewingkey" : "10aa74046f31cbe5eaa8965d1e104853234c3d6c6e45f9c497ca3a025d159755"
}
```

This PR also encodes the spending keys with a prefix that targets "SK". The spec needs to be updated with these changes.

Testnet addresses will start with "tn".

Closes #572
2016-06-16 18:52:30 +00:00
zkbot 1178df0883 Auto merge of #1004 - str4d:931-difficulty-algorithm, r=ebfull
Implement new difficulty algorithm

Closes #931. Closes #696.
2016-06-15 23:26:49 +00:00
zkbot fe97a405e3 Auto merge of #994 - ebfull:remove-redundant-constraints, r=ebfull
Final changes to the circuit

* Remove [redundant](https://github.com/scipr-lab/libsnark/issues/37) bitness constraints that I pointed out in #908.
* The depth is increased from 20 to 29. I chose 29 because the QAP degree ends up being a power of two, which is probably going to be useful for the FFT in our MPC. (Closes #16)

If we're happy with depth 29 (over 268 million possible joinsplits), this will probably be the final change to the constraint system before 1.0.
2016-06-15 21:39:32 +00:00
zkbot 6793168a2e Auto merge of #1017 - ebfull:coinbase-must-be-protected, r=ebfull
Enforce that coinbases must be protected

This PR forces miners to place their funds in the private value transfer system, making "transparent coins" opt-in for users, and increasing privacy for all participants on a systemic level.

Closes #101.
2016-06-15 03:06:23 +00:00
zkbot c80ce72845 Auto merge of #1019 - ebfull:mempool-integrity-chained-pours, r=ebfull
Ensure mempool integrity checks don't trip on chained joinsplits.
2016-06-14 02:43:28 +00:00
zkbot 1a30d65859 Auto merge of #1008 - str4d:850-platform-independent-equihash, r=str4d
Implement Equihash in a platform-independent manner

Closes #850.
2016-06-13 21:48:56 +00:00
zkbot 47e6645005 Auto merge of #1009 - ThisIsNotOfficialCodeItsJustForks:t171-hard-fork-alerts-and-tests, r=ebfull
Enable -alertnotify for hard fork detection. Test it.

Closes #171. Closes #131.
2016-06-12 18:04:53 +00:00
zkbot 7232b5d70a Auto merge of #988 - str4d:optimised-equihash, r=ebfull
Use depth-first scan for eliminating partial solutions instead of breadth-first

This reduces the peak number of lists in-memory from 2^k to k, and enables the
solver to eliminate most duplicates before it has instantiated the full set of
leaves.

Part of #857.
2016-06-09 22:43:09 +00:00
zkbot b3418be123 Auto merge of #1005 - bitcartel:zc.v0.11.2.z4_issue_857_optimize, r=ebfull
Equihash - Optimization to DistinctIndices function (rebased PR)

Update to DistinctIndices function (for issue #857).
Replaces pull request #974.
2016-06-09 03:49:22 +00:00
zkbot 5d9f28cfc7 Auto merge of #1001 - str4d:904-disable-relaypriority, r=ebfull
Set -relaypriority default to false

This enables spending of individual coins during mining slow start.

Closes #904.
2016-06-08 18:07:05 +00:00
zkbot 6ccd212218 Auto merge of #973 - ebfull:chained-pours, r=ebfull
Add chained `JoinSplit`s

Closes #555
2016-06-08 15:23:57 +00:00
zkbot d0cc00207b Auto merge of #929 - bitcartel:zc.v0.11.2.z2_fix_717, r=ebfull
Fix issue #717 t

Fix issue #717 where if addrman is starved of addresses (e.g. on testnet)
the Select_() function will loop endlessly trying to find an address,
and therefore eat up 100% cpu time on the 'opencon' thread.

Solution is to (1) add a delay to the loop and (2) restrict the number
of attempts to find an address.  On exiting the loop, we return
to an outer loop in net.cpp which will sleep, add seed nodes and
calculate new addresses.
2016-06-06 20:03:16 +00:00
zkbot 55bf149df9 Auto merge of #921 - str4d:optimised-equihash, r=daira
Optimise memory usage of Equihash implementation

Part of #857.
2016-06-01 13:10:26 +00:00
zkbot 19769ba6c5 Auto merge of #976 - ebfull:implement-joinsplit-signatures, r=ebfull
Signing pours with ed25519

This is an alternative to #964 which uses ed25519 instead of secp256k1, and avoids the separate hash for fitting the public key into the `h_sig` block. It's based on @defuse's work in that branch.

Closes #808.
2016-05-31 03:46:30 +00:00
zkbot 212cdc4fa4 Auto merge of #972 - bitcartel:zc.v0.11.2.z3_issue_651_remove_bitcoin_seeds, r=ebfull
Remove Bitcoin mainnet and testnet seeds.

Simple patch for issue #651 to remove hard-coded mainnet and testnet seeds
- they currently point to bitcoin nodes
- some are .onion addresses but Tor support has not yet been added
- gets rid of error messages in debug.log which might confuse people testing the alpha builds
2016-05-27 18:55:42 +00:00
zkbot b1f699660f Auto merge of #887 - str4d:mining-slow-start, r=ebfull
Implement mining slow start

Closes #762.
2016-05-27 02:15:24 +00:00
zkbot 8ff7c0752e Auto merge of #954 - ebfull:fix-cpourtx-structure, r=ebfull
CPourTx structural changes

* Enable binary serialization of proofs and the proving key (closes #799) and make the proofs fixed-size.
* Reorder fields of CPourTx to match the spec (closes #927)
2016-05-25 16:33:31 +00:00
zkbot 1f07deb5db Auto merge of #956 - ebfull:uint252, r=ebfull
Enforce first four bits are zero for all spending keys and phi.

This introduces a `uint252` to ensure these fields are 252-bits for the PRFs.

Closes #899
2016-05-25 14:59:00 +00:00
zkbot 9cf13a3e85 Auto merge of #955 - loxal:zc.v0.11.2.latest, r=ebfull
#776 add sha256sum support for Mac OS X
2016-05-24 03:47:03 +00:00
zkbot 4ac1841614 Auto merge of #958 - ebfull:prf-refactor, r=ebfull
Refactor PRF_gadget to hand responsibility to PRF_addr_a_pk_gadget for creating the '0' argument to the PRF

Closes #930
2016-05-24 01:11:44 +00:00
zkbot 0395055549 Auto merge of #961 - alfiedotwtf:zc.v0.11.2.latest, r=ebfull
Rename libzerocash to libzcash

Rename libzerocash to libzcash in Makefiles and source (C++ namespace) #960
2016-05-23 22:49:59 +00:00
zkbot a09517f313 Auto merge of #948 - nathan-at-least:t946.fix-cov-zcash, r=nathan-at-least
Fix a test name bug so that ``make cov-zcash`` correctly runs the ``zcash-gtest`` binary. Fixes #946.
2016-05-23 21:44:20 +00:00
zkbot 671b9562f1 Auto merge of #943 - str4d:938-clientversion, r=ebfull
Update version and help strings for Zcash

Closes #938.
2016-05-21 00:30:13 +00:00
zkbot 9e387120eb Auto merge of #908 - ebfull:trafford, r=ebfull
libzcash and new zkSNARK circuit implementation

This PR completes [`libzcash`](https://github.com/zcash/zcash/tree/zc.v0.11.2.latest/src/zcash), the implementation of the [Zcash protocol specification](https://github.com/zcash/zips/blob/9bb4410e45394c8b7e43e35622f54dd4041a4ddd/protocol/protocol.pdf) and replacement of [`libzerocash`](https://github.com/Zerocash/libzerocash), our old Zerocash protocol implementation. The new spec comes with some improvements to security and terminology, with minimal differences from the original academic design.

This implementation includes:

* A rewrite of the zkSNARK circuit for `JoinSplit` operations. This rewrite is cleaner, broken up into separate gadgets, easier to audit and review, and fixes some security bugs. (Closes #822, Closes #809, Closes #500, Closes #854)
* A minimal API for interacting with `JoinSplit`s and surrounding primitives. This PR removes almost twice as much code as it introduces. (Closes #877, Closes #315, Closes #824, Closes #798, Closes #707, Closes #512, Closes #247, Closes #128, Closes #514)
2016-05-17 01:04:49 +00:00
zkbot 35fd74e598 Auto merge of #924 - ebfull:init-sodium-gtest, r=ebfull
Initialize libsodium in the gtest suite.

We left behind this initialization routine when we switched to gtest. I would rather we had moved those tests over in a separate PR instead of changing existing PRs at the last second -- we would have paid more attention to the consequences.
2016-05-12 21:33:21 +00:00
zkbot c9a2eea5e2 Auto merge of #905 - ebfull:test-suite-fixes, r=ebfull
Run `zcash-gtest` in `make check` and fix performance tests.

* gtest tests weren't being run by make check
* performance tests were broken
* We need to automatically upload graphs of performance, [see this PR](https://github.com/Electric-Coin-Company/bbotzc/pull/15).
* Moves zerocash tests into `zcash`'s full test suite, we're removing them anyway later and it'd be nice to remove them in the PR instead of from buildbot
2016-05-05 23:29:34 +00:00
zkbot 87485d5ff3 Auto merge of #907 - DoNotUseThisCodeJUSTFORKS:t844-rename-bitcoin-conf, r=defuse
Rename bitcoin.conf and bitcoind.pid

This leaves the mentions of those files in `doc/` and `contrib/` unchanged.

**FORCE PUSHED**
2016-05-04 00:55:10 +00:00
zkbot 92f3c6082a Auto merge of #889 - ebfull:new-imt-redux, r=ebfull
Implement and integrate new Incremental Merkle Tree

This supersedes #823.

----

This is an implementation of a new incremental merkle tree with

* no memory safety issues
* a more sensible internal design
* better space efficiency (tree representation, witnessing)
* simpler API

It is intended that this tracks the behavior of the previous tree, which it does, as verified by tests. I even wrote a little circuit for testing that all the paths work.

This PR also integrates the tree into the codebase and deprecates the old tree in almost all of our code. (I left it alone in `zerocashTest` but everything else has been changed.)

This change is compatible with the testnet but you will need to clear your *local* blockchain data out since the serialized representation of the merkle tree is now different.

Closes #517, Closes #519, Closes #591, Closes #460, Closes #473
2016-05-03 17:33:27 +00:00
zkbot 94f0dcddb4 Auto merge of #873 - nathan-at-least:t832-zc2-release, r=nathan-at-least
Update release process docs; release notes; clean up ./docs directory a bit.

closes #834
2016-04-13 00:12:35 +00:00
zkbot f2e157ab25 Auto merge of #846 - DoNotUseThisCodeJUSTFORKS:automated-performance-measurement-zcash-cli-method, r=ebfull
Automated performance measurement

Supersedes #843 because that one would have merged into the wrong branch. (Oh yeah and I rebased).

**REBASED AND FORCE PUSHED**
2016-04-11 21:56:12 +00:00
zkbot 4d322a4497 Auto merge of #831 - ebfull:foundersreward, r=nathan-at-least
Implement Founders' Reward

More info:  https://z.cash/blog/funding.html

The consensus rule is as follows:

```
All blocks before the first subsidy halving block, with the exception of
the genesis block, must contain an output which sends 20% of the block
subsidy value to a scriptPubKey `FOUNDERS_REWARD_SCRIPT`.
```

Right now, `FOUNDERS_REWARD_SCRIPT` is a 2-of-3 multisig P2SH.

Closes #125
2016-04-11 19:21:41 +00:00
zkbot 9b7606fb6e Auto merge of #800 - str4d:592-disable-comparison-utility, r=defuse
Disable comparison utility

Also fixes `configure` to check that Java is present if `--with-comparison-tool` is set.

Closes #592
2016-04-01 00:02:59 +00:00