Commit graph

2679 commits

Author SHA1 Message Date
Chris Stewart
756d7740b3 Adding functionality to test pubkey encoding, fails the script with appropriate error if the pubkey is not encoded correctly 2016-04-25 09:56:03 -05:00
Chris Stewart
f5c7ed0345 Fixing some broken unit tests inside of CryptoInterpreterTest & ArithmeticInterpreterTest 2016-04-24 13:23:26 -05:00
Chris Stewart
915bade46d Fixing more MINIMALDATA bugs - now the failing script_invalid.json test cases are realted to pubkey encoding in OP_CHECKMULTISIG 2016-04-24 12:16:02 -05:00
Chris Stewart
9d264c2e62 Merge pull request #6 from TomMcCabe/rpc-merge
This pull request implements an RPC client for bitcoin. This gives us the functionality to make calls to a running instance of bitcoin-cli and marshal the returned string into a native Scala objects.
2016-04-23 21:12:29 -05:00
Chris Stewart
9c8458a45c Finishing implementation for MINIMALDATA - making sure that all scripts pass that should, and scripts that fail should fail with the MINIMALDATA flag 2016-04-23 20:21:34 -05:00
Tom McCabe
bf4a0915ae add .idea to .gitignore and rm uiDesigner.xml 2016-04-23 12:10:04 -05:00
Chris Stewart
84d9cf505f Enforcing p2sh scriptSigs can only contain push operations 2016-04-22 09:11:30 -05:00
Chris Stewart
f45823df76 Adding functionality to error if we have more than the maximum amount of public keys around or if we have more sigs than public keys in OP_CHECKMULTISIG 2016-04-22 08:08:38 -05:00
Chris Stewart
2c68f90236 Adding script op check for every script operation run during an OP_CHECKMULTISIG or OP_CHECKMULTISIGVERIFY op 2016-04-21 17:23:23 -05:00
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