Andrew Poelstra
f66b4ff6b3
Fix for upstream, add some address generation benchmarks
2014-09-01 09:24:17 -07:00
Andrew Poelstra
931df9f68d
Add Address support
2014-08-31 19:24:31 -07:00
Andrew Poelstra
853d644649
Minor cleanup for script analyzer
2014-08-31 19:20:11 -07:00
Andrew Poelstra
a8ecf00e35
Fix recursion to carry the execution state stack
2014-08-31 16:55:39 -07:00
Andrew Poelstra
9d283150c9
Fix GT/LT/GTEQ/LTEQ handling to not compare bools
...
I was trying to do something clever by making sure that the numeric
bounds were consistent with whatever ordering relation we were checking,
AND that the boolean values were also consistent...this is Wrong is the
case of negative numbers, and pointless anyway since I recently fixed
`set_bool_value`, `set_num_lo` and `set_num_hi` to update both numeric
and boolean information if possible, so they will always contain the
same info.
2014-08-31 16:43:26 -07:00
Andrew Poelstra
1515f68748
Minor cleanup of utxoset input checking
2014-08-31 16:35:30 -07:00
Andrew Poelstra
d880bd1ccc
Ensure execution state stack is empty at the start
...
We had a single `true` on the execution state stack, which would
allow scripts to have one more OP_ENDIF than they are allowed.
2014-08-31 16:23:47 -07:00
Andrew Poelstra
340b569c73
Add much more agressive provably-false checker
...
Now unspendable outs are determined by attempting to create a minimal
satisfying input script. If this can't be done, the output is unspendable.
(Unfortunately this "minimal satisfying script" is not (yet) something
that can be shown to the user, since it is more a bundle of constraints
than actual data pushes.)
Current limitations:
- OP_ADD and friends mean the checker gives the script a free pass.
There is no fundamental reason for this, I just didn't get to it
yet.
- Pubkeys are checked for DER encoding but signatures aren't. This
is because secp256k1 exposes a method for pubkeys, but not one
for sigs :). Signatures are loosely length checked.
2014-08-31 16:01:24 -07:00
Andrew Poelstra
8f5c28a533
Fixes for rustc changes
2014-08-30 16:08:38 -07:00
Andrew Poelstra
38f8132067
Fix for upstream
2014-08-28 11:13:33 -07:00
Andrew Poelstra
94cecfbd60
Travis supports rust directly now :D
2014-08-28 10:09:51 -07:00
Andrew Poelstra
6bf553c6fe
Add BIP32 key support; unify array newtyping; improve base58 trait
...
Sorry for so many things in one commit ... it was an iterative
process depending as I worked on BIP32 to get the other stuff
working. (And I was too lazy to separate it out after the fact.)
A breaking change by the array newtyping is that Show for Sha256dHash
now outputs the slice Show. You have to use `{:x}` to get the old hex
output.
2014-08-28 09:49:03 -07:00
Andrew Poelstra
4ab69b8a77
script tracer: add `op_count` a running opcode count
2014-08-25 21:39:16 -07:00
Andrew Poelstra
46bffa304c
script tracer: Put an obvious "opcode failed" message in the pre-execute stack
2014-08-25 16:09:00 -07:00
Andrew Poelstra
47c346be71
Add base58 decode/encode functionality
2014-08-24 23:03:47 -07:00
Andrew Poelstra
688a77ef38
Rename Hash->Uint functions to denote endianness
2014-08-24 12:28:02 -07:00
Andrew Poelstra
3a921e6b9c
Add support for `tx` messages
2014-08-23 16:37:01 -07:00
Andrew Poelstra
4ba533514e
Add Default impl to Script
2014-08-23 16:20:46 -07:00
Andrew Poelstra
6e6da2a756
Allow transaction inputs to be validated individually
2014-08-23 15:09:50 -07:00
Andrew Poelstra
7eadf72a1a
Add serialize_hex method to do string conversion for serializations
2014-08-22 20:53:49 -07:00
Andrew Poelstra
18a61dd560
Add blockdata::constants::max_money
2014-08-22 20:29:16 -07:00
Andrew Poelstra
e3445ebef7
Pull script tracing code out of Transcation so it can be used independently
2014-08-22 12:14:39 -07:00
Andrew Poelstra
611b1f57c9
Add a bunch of small hashtypes for cheap'n'collidey hashtables
2014-08-22 11:32:42 -07:00
Andrew Poelstra
1522ab841d
Generalize consensus encode/decoders for HashMap
2014-08-18 19:49:09 -07:00
Andrew Poelstra
e29fdb90c8
fix for upstream
2014-08-18 18:04:32 -07:00
Andrew Poelstra
c54f0c36a3
Add `ldconfig` line to travis.yml
2014-08-17 18:42:11 -07:00
Andrew Poelstra
d3ef264b44
Add txid to transaction trace
2014-08-17 17:25:47 -07:00
Andrew Poelstra
7059c21ef4
tx trace: add `executed` boolean, add a trace even for ops that fail
2014-08-17 13:35:57 -07:00
Andrew Poelstra
09679b8d9f
Add a copy of the script to ScriptTrace
2014-08-16 19:21:07 -07:00
Andrew Poelstra
62dd2e7cee
Add transaction trace capability for debugging scripts
2014-08-16 19:04:57 -07:00
Andrew Poelstra
8d1a3e1f7c
Some error improvements
2014-08-16 13:33:13 -07:00
Andrew Poelstra
4c99653933
Move TX validation into Transaction, call from UtxoSet
2014-08-16 12:57:39 -07:00
Andrew Poelstra
8a814e4331
Add P2SH support
2014-08-15 17:37:40 -07:00
Andrew Poelstra
fa859b3490
Fix VERIFY-op handling in provably-unspendable code
2014-08-14 20:32:36 -07:00
Andrew Poelstra
07c3d335aa
Return proper errors from UtxoSet::update
2014-08-14 20:17:41 -07:00
Andrew Poelstra
61969ce6ee
Fix overflow in script
2014-08-14 20:09:54 -07:00
Andrew Poelstra
c28c261b74
utxoset: Fix parallel script checking to use only as many threads as CPUs
2014-08-14 17:20:43 -07:00
Andrew Poelstra
fc04462682
Implement pruning
2014-08-14 17:05:07 -07:00
Andrew Poelstra
d9d7416e32
Fixes for recent stdlib changes
2014-08-14 15:20:39 -07:00
Andrew Poelstra
6d4861b472
Fix typo in .travis.yml
2014-08-14 07:50:56 -07:00
Andrew Poelstra
8e7d763310
Parallelize transaction verification in utxoset
...
We no longer confirm that chained transactions occur in the correct order
in blocks, which is a minor consensus regression and should be dealt with
in future.
2014-08-13 23:42:01 -07:00
Andrew Poelstra
cfe7d5eb26
Use slices rather than allocations in most parts of script
2014-08-13 20:25:28 -07:00
Andrew Poelstra
886dd68eb7
Minor correction to opcode docs
2014-08-12 22:50:40 -07:00
Andrew Poelstra
526f9fc574
Remove -all- CODESEPARATORS before serializing the script, even though only one has effect
...
I can validate the whole testnet chain now :) onto P2SH!
2014-08-12 21:34:46 -07:00
Andrew Poelstra
29d0701faa
Fix off-by-one error handling OP_CODESEPARATOR
2014-08-11 22:43:24 -07:00
Andrew Poelstra
c8f29b8d96
Add secp256k1 to travis
2014-08-11 22:05:16 -07:00
Andrew Poelstra
38593dd2ab
Remove entire signature push operation, not just signature data, when hashing for checksig
2014-08-11 21:40:30 -07:00
Andrew Poelstra
2469820863
Merge pull request #3 from jkozera/patch-2
...
Use apoelstra's secp256k1
2014-08-11 20:15:22 -07:00
Jerzy Kozera
3d940a85fe
Use apoelstra's secp256k1
...
dpc's version doesn't contain secp256k1:🔑 :PublicKey which is used in blockdata/script.rs
2014-08-12 04:52:33 +02:00
Andrew Poelstra
dea6d457f4
Clean up `read_uint` as in PR #2 (thanks @jkozera)
2014-08-11 19:20:39 -07:00