Commit graph

3870 commits

Author SHA1 Message Date
Chris Stewart
e3f96968b2 Successfully building crediting tx and spending tx for bitcoin core tests inside of script_valid.json 2016-03-19 21:12:40 -05:00
Chris Stewart
cbac956ba7 adding requirement to buildSpendingTransaction to make sure it is the same as bitcoin core's buildSpendingTransaction 2016-03-19 15:12:32 -05:00
Chris Stewart
a9c52728f3 Adding code to mimic how transactions are built for script_valid.json inside of bitcoin core 2016-03-18 13:12:42 -05:00
Chris Stewart
86c7841cac Fixing bug in how p2pk are evaluated in opCheckSig 2016-03-17 11:26:59 -05:00
Chris Stewart
f90b5d15d5 Fixing bug where p2pk scriptPubKeys were not being assigned the correct case class 2016-03-16 13:14:56 -05:00
Chris Stewart
f2f849f23b Adding functionality to parse a p2pk scriptSig into the correct case class 2016-03-16 13:01:33 -05:00
Chris Stewart
82eac5ea15 Refactoring codebase back to use explicit ScriptPubKeyFactory & ScriptSignatureFactory - I think this will be better for long term maintainability 2016-03-16 09:46:34 -05:00
Chris Stewart
207674c6f9 Fixing bug in finding requiredSigs for MultiSignatureScriptPubKey - the number of sigs always follows the OP_0 that has to be placed in the scriptPubKey 2016-03-15 13:05:29 -05:00
Chris Stewart
c8ed1662d7 Addign case object to represent the empty script sig 2016-03-15 12:07:23 -05:00
Chris Stewart
0efe9d970b Adding case inside of ECDigitalSignature for empty digital signatures - these are used inside of Bitcoin Core's script_valid.json test cases 2016-03-15 10:09:12 -05:00
Chris Stewart
00fde6fe56 Refactoring interface for script interpreter - now clients are responsible for building ScriptPrograms. Also adding another parameter for scriptSigs/scriptPubKeys to pass in the parsed asm representation along with the hexadecimal representation 2016-03-14 15:56:28 -05:00
Chris Stewart
4843ee5c5e Adding a wrapper scriptSig/scriptPubKey from core test cases 2016-03-14 12:52:23 -05:00
Chris Stewart
26d827cde9 Merge pull request #2 from Christewart/checksig_implementation
Checksig implementation
2016-03-14 10:13:14 -05:00
Chris Stewart
a4a4b0bea4 Cleaning up some compiler warnings 2016-03-14 10:08:48 -05:00
Chris Stewart
2e9d362a83 Validating 2/3 p2sh scriptSig and making sure it fails to validate a 2/3 scriptSig that doesn't have enough sigs 2016-03-14 09:46:52 -05:00
Chris Stewart
aa25c4d199 Adding scaladocs for traits 2016-03-13 19:37:00 -05:00
Chris Stewart
df73627ae5 Removing ScriptSignatureFactory companion object - creating dependency inside of ScriptSignatureFactory to be injected with a ScriptSignature 2016-03-12 07:02:32 -06:00
Chris Stewart
57920765dc Fixing compiler warnings about matching exhaustiveness inside of TransactionSignatureChecker - adding BitcoinSLogger trait for common logging across the implementation 2016-03-11 10:24:58 -06:00
Chris Stewart
588737eec8 Removing ScriptPubKeyFactory companion objecting - creating dependency of ScriptPubKeyFactory to be injected with a ScriptPubKey 2016-03-11 09:44:39 -06:00
Chris Stewart
23dfba3788 Adding case to handle p2pk scriptSignature type inside of TransactionSignatureChecker 2016-03-10 07:08:10 -06:00
Chris Stewart
db0355a453 Successfully verifying a 2 of 2 p2sh scriptSig against its scriptPubKey - next is validating m/n where m != n 2016-03-09 19:12:40 -06:00
Chris Stewart
c800777981 Fixing bug in SIGHASH_SINGLE implementation - now added a regression test in the translated bitcoinj hashForSignature & my home grown translated version to make sure the hashes are identical 2016-03-09 18:19:12 -06:00
Chris Stewart
22fa7af6dc Changing type of redeemScript inside of P2SHScriptSignature from Seq[ScriptToken] to ScriptPubKey 2016-03-08 19:51:06 -06:00
Chris Stewart
629c65cd7b Refactoring test cases from scriptPubkeys/scriptSigs into their own files 2016-03-08 09:53:24 -06:00
Chris Stewart
dbfb367fac Successfully validating a multisignature script signature is spending a multi signature scriptPubKey correctly 2016-03-07 15:59:17 -06:00
Chris Stewart
f5063bc8c2 Implementing function to find public keys, required sigs, and maximum signatures inside a multisignature scriptPubKey output 2016-03-07 15:28:58 -06:00
Chris Stewart
002d1111f3 Creating product types for scriptPubKeys 2016-03-07 14:49:05 -06:00
Chris Stewart
30821f32bd Creating product types for scriptSignatures 2016-03-07 14:04:36 -06:00
Chris Stewart
71a3a5d707 Fixing bug in ECFactory to change dumped private key's from bitcoin-cli into native Bitcoin-S ECPrivateKeys 2016-03-07 11:13:39 -06:00
Chris Stewart
bbedc9b5e3 Major refactor in scriptPubKey - the byte size of the scriptPubKey is now in the TransactionOutput NOT the scriptPubKey. 2016-03-06 19:59:23 -06:00
Chris Stewart
c5b3590dff partially refactoring the ScriptPubKey parsing - now everything goes through ScriptPubKeyFactory - need to figure out how to handle the scriptPubKey size - does the bytes/hex need to contain the script size or not? Right now it does which has issues with compatability with bitcionj 2016-03-05 11:01:41 -06:00
Chris Stewart
ebc5ebe1cf Explicitly parsing the redeem script to a list of script tokens inside of a scriptSignature - previously was just placed into a ScriptConstant 2016-03-04 11:24:52 -06:00
Chris Stewart
69d6cc58b1 Creating bitcoinj test util 2016-03-03 16:28:58 -06:00
Chris Stewart
0a43d8a5aa Successfully checking the signature of a p2pkh output script 2016-03-03 15:47:47 -06:00
Chris Stewart
a20325713a Fixing serialization bug for p2pkh script types and adding rule for serializing multsignature script 2016-03-03 11:40:36 -06:00
Chris Stewart
ca81008edb Adding functionality to check if the type of a ScriptPubKey is a Multisignature script 2016-03-03 11:04:38 -06:00
Chris Stewart
b7436731b5 Adding unit tests to check address types in a scriptPubKey - also adding unit tests for TransactionSignatureSerialization of p2pkh outputs 2016-03-03 10:33:05 -06:00
Chris Stewart
2ad2bcd037 Adding utility function to serialize asm scripts to their byte/hex value - fixing bug in TransactionSerializer that caused issues with serializing/hashing txs for signing 2016-03-02 11:36:08 -06:00
Chris Stewart
69fd641b87 Adding some scaladocs for ECFactory - removing redudant factory functions 2016-03-01 09:16:31 -06:00
Chris Stewart
4b9a203786 Removing inheritance for ScriptPubKeyFactory from ScriptSignature - these are unique enough to not warrant inheritance 2016-02-29 15:44:37 -06:00
Chris Stewart
fa31877758 Doing basic digital signature signing & validation - uses bitcoinj as the underlying elliptic curve implementation 2016-02-29 12:47:30 -06:00
Chris Stewart
d74fdcfd8c Changing more instances of ScalacoinUtil to BitcoinSUtil 2016-02-28 19:55:18 -06:00
Chris Stewart
2d30310c69 Adding some more scaladocs, changing some references of ScalacoinUtil to BitcoinSUtil 2016-02-28 18:22:24 -06:00
Chris Stewart
cc95d6c514 Implementing hashing for combinations of hash types with SIGHASH_ANYONECANPAY 2016-02-27 12:10:26 -06:00
Chris Stewart
9787cfe772 Factoring out SIGHASH implementations inside of TransactionSignatureSerializer into their own functions 2016-02-27 11:52:50 -06:00
Chris Stewart
fdc4b9fb9f Adding SIGHASH types combined with SIGHASH_ANYONECANPAY 2016-02-27 10:42:58 -06:00
Chris Stewart
0d340d33b8 Removing BaseSignatureSerializer class - transaction now need to be passed explicitly to TransactionSignatureSerializer 2016-02-26 15:36:42 -06:00
Chris Stewart
14172a966c Adding Factory trait to overlay all of our factory traits 2016-02-26 14:33:49 -06:00
Chris Stewart
9ccc7be853 Adding factory method to build a ScriptSignature from a list of digtal signatures and a redeem script 2016-02-26 14:04:23 -06:00
Chris Stewart
f17ef4ee40 Implementing factory function to create a scriptSig for a pay to pubkey hash output 2016-02-26 13:17:02 -06:00