Commit graph

293 commits

Author SHA1 Message Date
Chris Stewart
960e0fd009 Trying to fix build issues with travis-ci - hopefully scala 2.10.x works now 2016-04-08 14:17:37 -05:00
Chris Stewart
45fb82d2b7 Matching OP_RESERVED operations in interpreter, making OP_VERIF && OP_VERNOTIF operations illegal in the script 2016-04-08 13:05:56 -05:00
Chris Stewart
bc3c27d782 fixing bug in parsing byte array strings - now failing if there isn't enough data for an OP_PUSHDATA op, also not evaluating serialized script inside of p2sh scriptSig if the p2sh script flag is not set 2016-04-08 12:45:31 -05:00
Chris Stewart
f2430cf8d7 Refactoring all OP_PUSHDATA operations to use pushNumberBytesToStack - also fixing bug in opNumEqual 2016-04-08 10:39:59 -05:00
Chris Stewart
3abb542189 bumping scala version trying to get continous integration working 2016-04-08 08:37:42 -05:00
Chris Stewart
9c18a8dbf4 All tests passing in script_valid.json again - we now have broken up scriptSig & scriptPubKey execution into two parts with the stack state copied from scriptSig exection to scriptPubKey execution 2016-04-07 22:03:40 -05:00
Chris Stewart
be45a5c3ec Implementing alternative for opCodeSeparator 2016-04-07 09:27:41 -05:00
Chris Stewart
6b34cc43c7 Major refactor on how scripts are run through the interpreter. Now first the scriptSignature is run through the intrpreter then the stack state from the scriptSig execution is copied into a new script program and run with the scriptPubKey as the script instructions 2016-04-06 16:26:14 -05:00
Chris Stewart
7d8024a67d Major refactor in ScriptNumbers - creating ScriptNumberFactory which should be gone through to create ScriptNumbers. We now keep the byte representation of the number underneath the hood. This is needed for checking byte equality of numbers 2016-04-05 09:38:16 -05:00
Chris Stewart
8dadfad1aa Fixing various bugs in Arithmetic interpreter - also fixing bug in ScriptInterpreter for detecting if the return value is false 2016-04-04 15:26:20 -05:00
Chris Stewart
fc71293256 Adding disabled bitwise operations 2016-04-04 13:14:36 -05:00
Chris Stewart
e382607837 Implementing code to check the p2sh serialized script after verifying the hash is the same as the hash in the scriptPubKey 2016-04-04 12:14:54 -05:00
Chris Stewart
d3c8cf2fd2 90% test coverage reached 2016-04-03 11:16:35 -05:00
Chris Stewart
27cad4c583 test coverage now at 88% 2016-04-02 16:08:45 -05:00
Chris Stewart
cb21705228 Refactoring stack interpreter to remove redudancy on error throwing 2016-04-01 14:48:07 -05:00
Chris Stewart
4d43762cdf Removing unused functions, increasing test coverage 2016-04-01 14:07:41 -05:00
Chris Stewart
eb69e1e65b Refactoring how test transactions are built to make them more scalable - fixing bug in OP_CHECKSIG implementation to pass an explicit signature & pubkey for all OP_CHECKSIG evaluations. This shouldn't be done for standard scripsigs/scriptPubkeys but it makes the implementation smaller & easier to read for now 2016-04-01 10:43:43 -05:00
Chris Stewart
966c8d1c83 Increasing more test coverage - 85% now 2016-03-31 18:59:36 -05:00
Chris Stewart
ae573b0658 Fixing bug in how OP_RETURN is evaluated by the ControlOperationsInterpreter 2016-03-31 11:28:23 -05:00
Chris Stewart
a71b62808f fixing various bugs, increasing test coverage 2016-03-31 10:09:03 -05:00
Chris Stewart
d7f236d2db Deleting some uneeded complexity inside of Transaction 2016-03-30 14:37:43 -05:00
Chris Stewart
3279e5c45f Adding test cases to LockTimeInterpreter 2016-03-30 12:45:31 -05:00
Chris Stewart
716758cd64 Removing script types from ScriptPubKey's - this was redundant 2016-03-30 12:06:22 -05:00
Chris Stewart
816205e5f5 Removing the 'n' field from our TransactionOutput definition. This should not have been here - it is not in the bitcoin developer reference 2016-03-30 10:07:48 -05:00
Chris Stewart
6fa21f4d85 Refactoring factories for Transaction components to explicitly use their factories instead of implictly using them through Transaction companion objects 2016-03-30 09:52:27 -05:00
Chris Stewart
122f119f6c All tests pass in script_valid.json as of this point - starting script_invalid.json 2016-03-30 08:51:12 -05:00
Chris Stewart
aa622b2009 Adding more error handling inside of decodeSignature to handle improperly encoded DER Signatures found in script_valid.json 2016-03-30 08:47:13 -05:00
Chris Stewart
2b5379ba14 Fixing a couple bugs with signature checking non standard txs, adding a object to hold our crypto params 2016-03-29 09:59:27 -05:00
Chris Stewart
4e63ce2079 Adding StackPushOperationFactory - this contains all of the push operations inside of the Script language 2016-03-28 20:12:30 -05:00
Chris Stewart
ff0b117c0e Adding code to implement the script flag NULLDUMMy, changing how mulsignature script sigs are assigned in the factory. Now it can be ANY script number operation. When the script is evaluated it checks the NULLDUMMY flag and if the scriptsig starts with an OP_0 2016-03-28 09:22:52 -05:00
Chris Stewart
2a1f8742ce Changing SIGHASH_ALL to be a case class so it can hold the byte of whatever the last byte in a signature is. This is needed because if the last byte does not match any other hash types it is classified as a SIGHASH_ALL 2016-03-27 12:05:41 -05:00
Chris Stewart
89b9c7f29f Factoring out TransactionSignatureCheckerResult into it's own file 2016-03-27 10:48:42 -05:00
Chris Stewart
0af48b52f6 Changing hash type factory to default to SIGHASH_ALL if the input does not match any other SIGHASH types 2016-03-27 10:35:45 -05:00
Chris Stewart
2b1395ce1d Adding three result types for transaction signature checker - can succeeed, can fail because of der encoding, and can fail because of incorrect signatures. This takes care of issues of BIP66 examples 2016-03-26 15:01:18 -05:00
Chris Stewart
46eb3eb7ea Fixing bug of finding hash type of the empty digital signature 2016-03-26 14:34:02 -05:00
Chris Stewart
932705595b Fixing more bugs with calculating maxSigs & requiredSigs inside of multisignatureScriptPubKey 2016-03-25 17:58:19 -05:00
Chris Stewart
e075a239a4 Adding restrictions inside of ScriptPubKeyFactory for MultiSignaturePubKeys, now need to have atleast 2 ScriptNumberOperations 2016-03-25 14:22:23 -05:00
Chris Stewart
c891d220ac Refactoring functionality inside of TranasctionSignatureChecker to reuse the same code for both p2sh multisig redeem scripts & regular multisig scripts. Also redoing how maxSigs is calculated for MultiSignatureScriptPubKeys 2016-03-25 13:48:03 -05:00
Chris Stewart
c495261f3a Adding empty signature to ECDigitalSignature, adding unit tests for empty signature. Factoring DER signature encoding out of TransactionSignatureChecker 2016-03-25 12:03:47 -05:00
Chris Stewart
c141bbda7d Putting band aid on bip66 example 6 right now using a Try type if public key verification fails inside of bitcoinj 2016-03-24 21:02:14 -05:00
Chris Stewart
b2332596e2 Fixing bug where isStrictDerEncoding was not working for the empty signature 2016-03-24 20:20:55 -05:00
Chris Stewart
4b7eb99836 Adding functionality inside of OP_CHECKSIG to see if the DERSIG flag is set 2016-03-24 19:35:16 -05:00
Chris Stewart
215cdddf20 Adding function to detect if a signature is strictly der encoded according to BIP66 2016-03-24 17:43:18 -05:00
Chris Stewart
7d8699e822 Adding ScriptVerifyFlag to indicate if CLTV is enforced or not 2016-03-24 11:23:19 -05:00
Chris Stewart
91feb92709 Creating ScriptFlagFactory to parse script flags and create them from strings 2016-03-23 15:25:57 -05:00
Chris Stewart
be8ae500c7 Adding ScriptVerify flags for script evaluation 2016-03-23 13:40:54 -05:00
Chris Stewart
07c2ed3669 Decoding (r,s) from DER signatures 2016-03-23 11:25:48 -05:00
Chris Stewart
72657b898f Adding functionality to check if a signature isDEREncoded' 2016-03-22 20:05:45 -05:00
Chris Stewart
b9197a8613 Adding spongycastle as a dependency, cleaning up more usages of ScalacoinUtil 2016-03-22 08:15:16 -05:00
Chris Stewart
82d5713549 Fixing bug where single OP_0 was being classified as a MultiSignatureScriptSig 2016-03-21 15:41:15 -05:00