Commit Graph

66 Commits

Author SHA1 Message Date
Sean Bowe
b7a6c32178 Integrate Groth16 verification and proving. 2018-05-14 16:26:23 -06:00
Jack Grigg
0fe0ca7948 Add contextual comment for GetValueOut() and GetShieldedValueIn() 2018-05-10 09:34:19 -04:00
Jack Grigg
97b46f00cc Add valueBalance to value balances, and enforce its consensus rules 2018-05-09 11:34:41 +01:00
Jack Grigg
b1608eed82 Add a constant for Overwinter's transaction version 2018-04-23 20:39:04 +01:00
Jack Grigg
b4f7174a88 Implement SpendDescription and OutputDescription datastructures
Co-authored-by: George Tankersley <george@z.cash>
2018-04-23 20:39:00 +01:00
Jack Grigg
72540cee4a Add Sapling v4 transactions to IsStandard 2018-04-19 16:25:04 +01:00
Jack Grigg
b7e75b17af Implement basic Sapling v4 transaction parser
Details of Sapling datatypes will be filled in later; for now, they are treated
as binary blobs.

Includes code cherry-picked from upstream commit:
    7030d9eb47254499bba14f1c00abc6bf493efd91
    BIP144: Serialization, hashes, relay (sender side)
2018-04-19 05:01:47 +01:00
Jack Grigg
987b8ee60e Adjust consensus rules to require v4 transactions from Sapling activation 2018-04-19 05:01:47 +01:00
Pieter Wuille
c7d71985c9 Add deserializing constructors to CTransaction and CMutableTransaction 2018-04-17 13:29:51 +01:00
Jack Grigg
68a1a592ca Remove nType and nVersion from Zcash-specific code 2018-04-17 13:09:47 +01:00
Pieter Wuille
242f1421db Get rid of nType and nVersion
Remove the nType and nVersion as parameters to all serialization methods
and functions. There is only one place where it's read and has an impact
(in CAddress), and even there it does not impact any of the recursively
invoked serializers.

Instead, the few places that need nType or nVersion are changed to read
it directly from the stream object, through GetType() and GetVersion()
methods which are added to all stream classes.
2018-04-17 13:09:28 +01:00
Pieter Wuille
b8a6579366 Make GetSerializeSize a wrapper on top of CSizeComputer
Given that in default GetSerializeSize implementations created by
ADD_SERIALIZE_METHODS we're already using CSizeComputer(), get rid
of the specialized GetSerializeSize methods everywhere, and just use
CSizeComputer. This removes a lot of code which isn't actually used
anywhere.

For CCompactSize and CVarInt this actually removes a more efficient
size computing algorithm, which is brought back in a later commit.
2018-04-16 07:38:38 -06:00
Pieter Wuille
29a8ade782 Prevector type 2018-04-16 07:38:36 -06:00
Jay Graber
9bb37bf0d5 Implement transaction expiry for Overwinter 2018-02-23 00:12:03 -08:00
Ariel
7245f32835 update SignatureHash according to Overwinter spec
with help from str4d
2018-02-20 04:22:21 +00:00
Simon
072099d788 Implementation of Overwinter transaction format ZIP 202. 2018-02-16 10:10:15 -08:00
Simon
45232b1961 Add payment disclosure as experimental feature. 2017-11-14 13:29:05 -08:00
zathras-crypto
a11c4bbd26 Exempt unspendable transaction outputs from dust checks
Since unspendable outputs can't be spent, there is no threshold at which it would be uneconomic to spend them.

This primarily targets transaction outputs with `OP_RETURN`.

---

Initially based on:

commit 9cf0ae26350033d43d5dd3c95054c0d1b1641eda
Author: zathras-crypto <zathrasc@gmail.com>
Date:   Wed Mar 25 02:04:02 2015 -0700

Changes:

- cherry-picked on top of bitcoin:master
- added RPC test for fundrawtransaction
2017-03-02 13:26:34 -08:00
Simon
ebe750a882 Part of #1969. Changing min fee calculation also changes the dust threshold. 2017-02-28 11:44:07 -08:00
Sean Bowe
bc59f53722 Isolate verification to a ProofVerifier context object that allows verification behavior to be tuned by the caller. 2016-12-05 12:40:06 -07:00
Daira Hopwood
a5fd8da7ba Static assertion that standard and network min tx versions are consistent.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2016-10-22 13:46:22 +01:00
zkbot
a12eaa2bf2 Auto merge of #1581 - bitcartel:1464_ncc_2016_008, r=str4d
Fixes for NCC-2016-008

To close #1464 NCC-2016-088

- This PR
- https://github.com/zcash/libsnark/pull/8

Of the 101 issues in NCC-2016-088, 62 are in dependencies, and many of the remainder are duplicates of the CIDs fixed in this PR.

Commit log message is: CID Type (Type is from scan.coverity Type column)
2016-10-22 00:56:08 -04:00
Simon
e11e61ddb1 Workaround g++ 5.x bug with brace enclosed initializer.
http://stackoverflow.com/questions/32912921/whats-wrong-with-this-inline-initialization-of-stdarray/32912976#32912976
2016-10-21 21:50:25 -07:00
zkbot
c99a1c7e4f Auto merge of #1566 - daira:1557.make-v2-txns-standard, r=ageis
1557.make v2 txns standard

Make v2 transactions standard. This also corrects a rule about admitting large orphan transactions into the mempool, to account for v2-specific fields. ref #1557
2016-10-21 01:10:37 -04:00
Simon
ccc0f9af42 Fixes CID 1352714 uninitialized scalar variable. 2016-10-20 11:41:28 -07:00
Simon
fed6c83ccf Fixes CID 1352727 uninitialized scalar variable. 2016-10-20 11:40:22 -07:00
Simon
351b38fd5b Fixes CID 1352599 unitialized scalar variable 2016-10-20 11:35:51 -07:00
Daira Hopwood
e923e3ae0f Make v2 transactions standard.
This also corrects a rule about admitting large orphan transactions into the mempool, to account for v2-specific fields.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2016-10-18 19:37:55 +01:00
Jack Grigg
3774c944f8 Refactor test code to better test JSDescription::Randomized() 2016-10-18 12:44:56 -05:00
Jack Grigg
7f0aa74666 Implement static method for creating a randomized JSDescription 2016-10-18 10:41:00 -05:00
Simon
33264f5b46 Remove GetTxid() from CTransaction and update test_txid 2016-09-07 15:12:09 -07:00
Simon
82f3c490b1 Remove #1144 from transaction.h.
Reverts to 4bc00dc with commits f0dab51 (snark) and f5e5707 (joinsplit) retained.
GetTxid() is now an alias for GetHash().
2016-09-07 15:12:09 -07:00
Jack Grigg
5db5e42ec3 Add optional bool to disable computation of proof in JSDescription constructor 2016-08-30 00:29:49 +12:00
Sean Bowe
f0dab51cf3 Implement zkSNARK compression. 2016-08-22 00:36:12 -06:00
Sean Bowe
f5e5707d4c Change memo field size and relocate ciphertexts field of JoinSplit description. 2016-08-15 09:39:14 -06:00
Simon
74cd8821c7 Remove GetSerializeHash() method. 2016-07-29 23:28:34 -07:00
Simon
c63af91a78 Update comment. 2016-07-28 18:44:00 -07:00
Simon
92f7426d19 Make txid const. 2016-07-27 12:14:44 -07:00
Simon
07e6d5b025 Refactor GetTxid() into UpdateTxid() to match coding style of hash member variable.
UpdateTxid() is called alongside UpdateHash() when a CTransaction is
deserialized or constructed.  GetTxid() now returns a const reference.
2016-07-26 17:13:03 -07:00
Simon
1e84d84d3a Rename GetHash() method to GetSerializeHash().
When pulling from upstream we are now forced to examine GetHash() usage
and replace with GetSerializeHash() if the caller wants a double SHA256
hash, or with GetTxid() if the caller wants a transaction id.
2016-07-26 17:09:27 -07:00
Simon
49689a574c Add GetTxid() which returns a non-malleable txid. 2016-07-26 17:09:27 -07:00
Daira Hopwood
4bc00dc141 Bucket -> note.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2016-07-18 10:06:18 -06:00
Sean Bowe
b7e4abd6f7 Rename some usage of 'pour'. 2016-07-18 10:06:18 -06:00
Sean Bowe
942bc46756 Rename GetPourValueIn to GetJoinSplitValueIn 2016-07-18 10:06:18 -06:00
Sean Bowe
bfeaf0049a Rename JSDescription's serials to nullifiers. 2016-07-18 10:06:18 -06:00
Sean Bowe
8675d94b63 Rename vpour to vjoinsplit. 2016-07-18 10:06:18 -06:00
Sean Bowe
a8c68ffe99 Rename CPourTx to JSDescription. 2016-07-18 10:06:18 -06:00
Sean Bowe
1e99cbab04 Use joinsplit_sig_t in more places. 2016-05-30 19:33:28 -06:00
Sean Bowe
320f2cc7e0 Switch to Ed25519 for cryptographic binding of joinsplits to transactions. 2016-05-30 11:05:55 -06:00
Taylor Hornby
6aae9d1a55 Sign JoinSplit transactions 2016-05-30 11:05:31 -06:00