Commit Graph

830 Commits

Author SHA1 Message Date
Tom McCabe
8b1f4db05f Merge branch 'segwit' of https://github.com/Christewart/bitcoin-s-core into segwit 2016-12-14 13:25:56 -06:00
Chris Stewart
2aab5071fe Removing 'TransactionInputWitness' data structure as it is redundant, now a TransactionWitness just contains a sequence of ScriptWitness 2016-12-14 10:20:41 -06:00
Chris Stewart
306c9727fc Removing 'CurrencyUnit' return type from generators were it is irrelevant 2016-12-14 09:30:11 -06:00
Chris Stewart
52103c1d44 Fixing nits/random code redundancies in src 2016-12-13 19:50:45 -06:00
Chris Stewart
b542961ed9 Implementing generator for p2sh(p2wsh) transactions 2016-12-13 13:31:15 -06:00
Chris Stewart
202c5df832 Implementing spec for P2SH(P2WPKH) signature generation 2016-12-13 10:24:13 -06:00
Chris Stewart
3b03138be0 Implementing WitnessScriptPubKey as a redeem script inside of P2SHScriptSignature 2016-12-12 12:55:28 -06:00
Chris Stewart
2be925542a Implementing P2WSH(MultiSig) and fixing bugs in maxSigs/requiredSigs inside of MultiSignatureScriptPubKey 2016-12-11 14:34:49 -06:00
Chris Stewart
899c0e029e Refactoring code for WitnessGenerators 2016-12-10 19:26:55 -06:00
Chris Stewart
e99a9f1602 Adding generator and spec for P2WSH(P2PKH) witness txs 2016-12-10 18:46:03 -06:00
Chris Stewart
05f3b5fefc Implementing ScriptFactory inside of ScriptSignature 2016-12-09 20:01:40 -06:00
Chris Stewart
725dce2da0 Creating ScriptFactory, implementing it inside of ScriptPubKey 2016-12-09 19:42:50 -06:00
Chris Stewart
10892612e2 Wrote property to check all P2WSH(P2PK) txs can be created and verified 2016-12-09 15:50:53 -06:00
Chris Stewart
a106d23610 Implementing a generator to created a signed witness transaction taht spends a P2WPKH output, create a spec that verifies we can spend all of those outputs 2016-12-08 17:12:21 -06:00
Chris Stewart
86d8a92657 Refactoring WitnessTransactionSignatureComponentV0 to remove explicit paramter of 'ScriptWitness' -- this can be derived from the inputIndex 2016-12-07 11:17:44 -06:00
Chris Stewart
ac2c583905 Adding generators for witnessScriptPubKey types 2016-12-07 09:50:37 -06:00
Chris Stewart
ece7c57abb Fixing bug in OP_CHECKMULTISIG that would loop infinitely 2016-12-07 08:27:43 -06:00
Chris Stewart
2a2c551f7d Implementing NULLFAIL flag inside of script_tests.json 2016-12-06 10:09:09 -06:00
Chris Stewart
2b3010b808 Implementing ScriptErrorWitnessUnexpected for the case of having a witness without a WitnessScriptPubKey 2016-12-05 15:52:04 -06:00
Chris Stewart
5d29512fe2 Implementing invariant for p2wsh scriptSigs being one push followed by the redeemScript 2016-12-05 14:28:53 -06:00
Chris Stewart
17654062c8 Implementing script_tests for the case when we have a witness scriptpubkey but no witness 2016-12-05 12:16:00 -06:00
Chris Stewart
31add907be Implementing 'UnassignedWitnessScriptPubKey' type for all witness types that are not defined yet in bitcoin protocol 2016-12-05 09:41:15 -06:00
Chris Stewart
2a48a15e53 Implementing P2SH(P2WPKH) 2016-12-04 16:51:15 -06:00
Chris Stewart
030f75b408 Fixing bug in serialization of tx for signature with P2SH(P2WSH) txs 2016-12-04 16:07:18 -06:00
Chris Stewart
ec2bef7a27 Implementing P2SH(P2WSH) 2016-12-04 11:58:49 -06:00
Chris Stewart
62e63afe39 First P2WPKH script_test.json passing 2016-12-03 12:01:17 -06:00
Chris Stewart
564003abfc Fixing bug in 'buildCreditingTransaction' for script_tests.json 2016-12-02 22:00:39 -06:00
Chris Stewart
f8b15175f8 Fixed all test cases that needed to be change due to moving CompactSizeUInts into ScriptSignature/ScriptPubKey -- now need to implement rest of segwit 2016-12-02 19:04:14 -06:00
Chris Stewart
ed0a1b37e7 Adding 'asmBytes' val to ScriptSignature -- this is the raw byte array from the scriptSig WITHOUT the a CompactSizeUInt bytes at the beginning 2016-12-02 16:32:20 -06:00
Chris Stewart
974829cc2d Successfully passing all ScriptSignature tests with new serialization algorithm 2016-12-02 14:23:14 -06:00
Chris Stewart
50705b3117 Successfully passing all ScriptPubKey tests with new serialization algorithm 2016-12-01 14:44:44 -06:00
Chris Stewart
df47efa634 Refactoring ScriptPubKey to incloude the CompactSizeUInt indicating how long it is, removing it from TransactionOutput 2016-11-30 15:46:07 -06:00
Chris Stewart
f4beb545cc Making WitnessV0TransactionSignatureComponent contain a WitnessTransaction 2016-11-29 14:33:29 -06:00
Chris Stewart
3c1cbf7ac1 Successfully serializing first transaction for a segwit signature 2016-11-28 19:18:40 -06:00
Chris Stewart
2a42c9b3f9 Adding WitnessTransaction serialization symmetry spec 2016-11-28 14:08:50 -06:00
Chris Stewart
600597ee45 Adding property for serialization symmetry for TransactionInputWitness 2016-11-28 13:08:47 -06:00
Chris Stewart
9c3b3f0eb2 Removing 'marker' and 'flag' field from witness tx, as bitcoin core does not stores those in CTransaction 2016-11-25 19:42:00 -06:00
Chris Stewart
badca76e98 Fixing serialization bug, stacks are using a FP convention of prepending to a list, so the first, and to extract from the stack you can use cons to in O(1) time 2016-11-25 11:18:58 -06:00
Chris Stewart
b96d4c32c4 Correctly serializing an example witness tx from script_tests.json 2016-11-24 21:44:22 -06:00
Chris Stewart
886b17a76a Refactoring the main factory function inside of 'Transaction' companion object to allocate WitnessTransactions/BaseTransactions 2016-11-23 10:51:09 -06:00
Chris Stewart
7b0bb21404 Creating two distianct algebraic data types for txs, BaseTransaction and WitnessTransaction 2016-11-22 09:07:25 -06:00
Chris Stewart
215d8a1df2 Modifying data structure inside of ScriptWitness to be a Seq[Seq[Byte]] instead of Seq[ScriptConstant] since BIP141 says the witness is NOT Script 2016-11-21 16:25:11 -06:00
Chris Stewart
e90d5acaa7 Refactoring Hashtypes to be simpler 2016-11-21 12:58:59 -06:00
Chris Stewart
eb2beb9b69 Fixing bug in serialization for p2sh signature 2016-11-18 16:46:13 -06:00
Chris Stewart
a83b04e63b Adding BaseTransactionSignatureComponent type and WitnessV0TransactionSignatureComponent type to differentiate the two signature components 2016-11-18 16:28:31 -06:00
Chris Stewart
26b65aec87 Creating 'SigVersion' type, adding it to TxSignatureComponent 2016-11-18 09:59:57 -06:00
Chris Stewart
a4a17c7cb0 Implemented SigErrorNullFail for OP_CHECKSIG/OP_CHECKSIGVERIFY 2016-11-17 15:10:32 -06:00
Chris Stewart
cea410d09f Passing the first segwit test inside of script_tests.json 2016-11-16 15:51:02 -06:00
Chris Stewart
a6912e49ec fixing a bug with creating the scriptPubKey ScriptProgram 2016-11-15 14:04:21 -06:00
Chris Stewart
78d945ccf4 Refactoring ScriptProgram to remove all 'factory' functions 2016-11-15 13:06:48 -06:00