Commit graph

3870 commits

Author SHA1 Message Date
Chris Stewart
ee39a2f815 Merge pull request #5 from Christewart/script_program_refactoring
Script program refactoring
2016-04-20 14:32:47 -05:00
Chris Stewart
5b3096b76a ScriptProgram is now working to where the script branch in script_valid.json 2016-04-20 14:24:35 -05:00
Chris Stewart
2c86075961 All script_valid.json scripts pass again after ScriptProgram refactoring 2016-04-20 14:03:48 -05:00
Chris Stewart
2c3a734376 fixing compilation errors in test cases for ScriptProgram 2016-04-20 11:15:22 -05:00
Chris Stewart
8a45232d22 Src files now compile on using ScriptProgram's new factory functions 2016-04-19 19:30:06 -05:00
Chris Stewart
87beb9ec8d Refactoring ArithmeticInterpreter, BitwiseInterpreter, ConstantInterpreter, ControlOperationsInterpreter, and CryptoInterpreter to set ScriptErrors 2016-04-19 10:27:54 -05:00
Chris Stewart
481173dd3a Refactoring SpliceInterpreter and LocktimeInterpreter to set script errors on the ScriptProgram 2016-04-19 10:05:45 -05:00
Chris Stewart
6286300c70 Fixing StackInterpreter to set script errors inside a script program now 2016-04-19 09:57:47 -05:00
Chris Stewart
8f11393f68 Refactoring ScriptProgram into sum types - PreExecutionScriptProgram, ExecutionInProgressScriptProggram and ExecutedScriptProgram to represent the three states of a script program 2016-04-19 09:19:25 -05:00
Chris Stewart
00f792c6e6 Adding ScriptError types and a ScriptError companion object to be a factory 2016-04-18 19:32:50 -05:00
Chris Stewart
3099051e78 Fixing merge conflict in CryptoInterpreter 2016-04-18 19:30:36 -05:00
Chris Stewart
fe9225ba97 Merge pull request #4 from TomMcCabe/factory_refactoring
Factory refactoring
2016-04-18 19:11:38 -05:00
Tom McCabe
2d621f9c83 refactored ScriptProgramFactory with ScriptProgram companion object 2016-04-18 18:23:35 -05:00
Tom McCabe
17e9061215 refactored TransactionOutputFactory with TransactionOutput companion object 2016-04-18 14:38:32 -05:00
Tom McCabe
455f980e38 refactored TransactionInputFactory with TransactionInput companion object 2016-04-18 14:29:49 -05:00
Tom McCabe
28c97a6772 refactored AddressFactory with Address companion object 2016-04-18 14:12:23 -05:00
Tom McCabe
e857ad2085 refactored TransactionFactory to use Transaction companion object 2016-04-18 13:43:04 -05:00
Tom McCabe
d8b6211334 refactored TransactionOutPointFactory to use TransactionOutPoint companion object 2016-04-18 13:43:04 -05:00
Tom McCabe
fdde131d29 refactored ScriptSignatureFactory to use ScriptSignature companion object 2016-04-18 13:43:02 -05:00
Tom McCabe
46617658b9 refactored ScriptPubKeyFactory to use ScriptPubKey companion object 2016-04-18 13:42:43 -05:00
Tom McCabe
79d8277e2c refactored ScriptPubKeyFactory to use ScriptPubKey companion object 2016-04-18 11:44:14 -05:00
Chris Stewart
3a9736aa21 Adding new TransactionSignatureInvalid type to represent when we don't have enough sigs to meet the required signature threshold - fixing bug in ECPublicKey 2016-04-18 08:48:02 -05:00
Chris Stewart
994c73062a Refactoring old requirements on stack sizes to log errors and return script programs that are marked invalid 2016-04-17 21:02:24 -05:00
Chris Stewart
a25ed9aaef Implementing functionality to mark script as invalid if we see a script op code that is not defined by the Script documentation 2016-04-17 19:57:17 -05:00
Chris Stewart
48b0e4ad80 Fixing bug in OP_TOALTSTACK implementation, adding restriction to allow a max of 10,000 byte script to be run through the interpreter 2016-04-17 19:14:44 -05:00
Chris Stewart
89010e0e6d Merge pull request #3 from Christewart/script_parsing_refactor
Script parsing refactor
2016-04-17 15:39:59 -05:00
Chris Stewart
2046146e0b Cleaning up the codebase 2016-04-17 15:04:47 -05:00
Chris Stewart
42ec9e90b1 Fixing a few more bugs to force constants to be interpreted as numbers 2016-04-17 14:58:33 -05:00
Chris Stewart
df939d7693 fixing bug with what op codes are counted towards bitcoin core's op code limit 2016-04-17 10:52:26 -05:00
Chris Stewart
e3fce380c1 Fixing bug in how we kept tract of op counts in a script 2016-04-16 08:54:49 -05:00
Chris Stewart
6eece17379 fixing bug in script parser for dealing with OP_PUSHDATA operations from string constants in script_valid.json 2016-04-15 19:23:39 -05:00
Chris Stewart
2a3e4928dd Fixing bugs in OP_ROLL, OP_PICK. Fixing bug in .toLong for ScriptTokens 2016-04-14 19:21:54 -05:00
Chris Stewart
9bb5f60bf4 Adding more documentation to types in the Script language class hierarchy 2016-04-14 15:04:32 -05:00
Chris Stewart
5b06e2e066 Refactoring ScriptProgram.stackTopIsFalse to check the underlying hex representation to see if the stacktop is true/false 2016-04-14 13:31:24 -05:00
Chris Stewart
2312459c73 Refactoring script interpreter to push OP_0s onto the stack instead of empty byte vectors - changing ArithmeticInterpreter to try and interpretet numbers from a script constant if it is passed on 2016-04-14 12:52:26 -05:00
Chris Stewart
bdb8f55564 All ScriptParserTests are now passing - essentially all strings are converted to byte arrays then run through ScriptParser.fromBytes 2016-04-13 20:43:00 -05:00
Chris Stewart
f1042f87d4 Cleaning up TestUtil to use appropriate factory functions 2016-04-13 18:53:40 -05:00
Chris Stewart
8160b8c3f2 Starting to refactor fromString to just convert the string into a byte array to be passed to fromBytes inside of the ScriptParser 2016-04-13 15:06:17 -05:00
Chris Stewart
61ede1f214 implementing function in BitcoinScriptUtil to count the number of script operations - ScriptInterpreter now fails script if there are > 201 script operations 2016-04-12 20:05:08 -05:00
Chris Stewart
631be78b82 Refactoring CryptoInterpreter hash functions to use a higher order helper function 2016-04-12 09:17:16 -05:00
Chris Stewart
245e7ab741 Adding new factory function for script signatures which allows you to pass in the scriptPubKey 2016-04-12 08:30:17 -05:00
Chris Stewart
471e31a7a0 Refactoring Arithmetic interpretations to go through one of three higher order helper functions 2016-04-11 12:03:41 -05:00
Chris Stewart
8e48598785 Implementing operations that are currently illegal to Script - they just mark the script program as invalid right away 2016-04-10 10:02:25 -05:00
Chris Stewart
25ae09b5b1 Finishing modifying stack operations to mark script as invalid instad of throwing exception 2016-04-09 10:29:53 -05:00
Chris Stewart
27226ae0e7 Modifying stack interpreter operations to mark the script program as false instead of throwing exceptions 2016-04-09 09:29:04 -05:00
Chris Stewart
737d7369b8 Fixing bug in OP_TUCK implementation, adding comments to indicate that the boolean returned by 'loop' inside of interpreter indicates if any invalid things were done inside the evaluation of the script - NOT if the stack ended up as true or false 2016-04-08 18:43:50 -05:00
Chris Stewart
5c9fedb0be Fixing bug in checking for that OP_IF/OP_NOTIFs have matching OP_ENDIFs 2016-04-08 16:14:48 -05:00
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