Pieter Wuille
f972b04d63
Merge #7825 : Prevent multiple calls to ExtractDestination
...
0bf6f30 Prevent multiple calls to ExtractDestination (Pedro Branco)
2016-06-03 00:45:22 +02:00
Kaz Wesley
9805f4af7e
mapNextTx: use pointer as key, simplify value
...
Saves about 10% of application memory usage once the mempool warms up. Since the
mempool is DynamicUsage-regulated, this will translate to a larger mempool in
the same amount of space.
Map value type: eliminate the vin index; no users of the map need to know which
input of the transaction is spending the prevout.
Map key type: replace the COutPoint with a pointer to a COutPoint. A COutPoint
is 36 bytes, but each COutPoint is accessible from the same map entry's value.
A trivial DereferencingComparator functor allows indirect map keys, but the
resulting syntax is misleading: `map.find(&outpoint)`. Implement an indirectmap
that acts as a wrapper to a map that uses a DereferencingComparator, supporting
a syntax that accurately reflect the container's semantics: inserts and
iterators use pointers since they store pointers and need them to remain
constant and dereferenceable, but lookup functions take const references.
2016-06-02 12:31:51 -07:00
mrbandrews
12c5a16c4e
Catch exceptions from non-canonical encoding and print only to log
2016-06-02 14:43:18 -04:00
Pieter Wuille
ec45cc5e27
Merge #7992 : Extend #7956 with one more test.
...
269a440 Add test for dbwrapper iterators with same-prefix keys. (Matt Corallo)
6030625 test: Add more thorough test for dbwrapper iterators (Wladimir J. van der Laan)
84c13e7 chain: Add assertion in case of missing records in index db (Wladimir J. van der Laan)
2016-06-02 19:14:34 +02:00
Braydon Fuller
55fa4798eb
main: spentindex for the mempool
2016-06-02 12:15:59 -04:00
Braydon Fuller
4c7dc871d1
rpc: add input value and address to getrawtransaction if spentindex enabled
2016-06-02 12:15:38 -04:00
Braydon Fuller
16d35eb228
main: add amount and address to spentindex value
2016-06-02 12:15:38 -04:00
Braydon Fuller
87dfd13694
rpc: include satoshis in verbose raw transaction
2016-06-02 12:15:38 -04:00
Braydon Fuller
1c022b9fc2
rpc: add blockindex to getaddressdeltas method
...
for the purposes of secondary sorting by block order
2016-06-02 12:15:37 -04:00
Braydon Fuller
3c74fff552
rpc: include help text for addressindex and related commands
2016-06-02 12:15:37 -04:00
Braydon Fuller
eb82f39655
rpcclient: add params to be parsed as JSON
...
There was an issue where getblockhashes wouldn't work from bitcoin-cli
as the two params would be strings instead of integers. This fixes that
issue, and will parse the first param as JSON for other addressindex
related rpc methods.
2016-06-02 12:15:37 -04:00
Braydon Fuller
5fa85bc9ae
rpc: update oksafemode for address commands
2016-06-02 12:15:37 -04:00
Braydon Fuller
98f8fdddc8
rpc: optional "start" and "end" params for getaddressdeltas
2016-06-02 12:15:37 -04:00
Braydon Fuller
8391ff0b0a
rpc: include base58check encoded address in results
2016-06-02 12:15:37 -04:00
Braydon Fuller
5c3cf5f631
rpc: include prevhash and prevout information for spending deltas
2016-06-02 12:15:37 -04:00
Braydon Fuller
04da9306c6
build: fix darwin build
2016-06-02 12:15:37 -04:00
Braydon Fuller
94ea69a4d5
rpc: fix issue with querying txids by block heights
2016-06-02 12:15:37 -04:00
Braydon Fuller
96d8307b55
rpc: query txids for addresses within block height range
2016-06-02 12:15:37 -04:00
Braydon Fuller
abe40712ce
rpc: include height in spentinfo
2016-06-02 12:15:37 -04:00
Braydon Fuller
b752fbe09e
rpc: include spent info if spentindex enabled with getrawtransaction verbose
2016-06-02 12:15:37 -04:00
Braydon Fuller
e3d9207e5a
main: add spentindex option
2016-06-02 12:15:37 -04:00
Braydon Fuller
8636f36477
rpc: cast indexes to ints
2016-06-02 12:15:14 -04:00
Braydon Fuller
4678f2d438
build: add addressindex.h to make
2016-06-02 12:15:14 -04:00
Braydon Fuller
7c68235cf4
main: include timestampindex in help
2016-06-02 12:15:14 -04:00
Braydon Fuller
d99f17de1a
rpc: give back base58 encoded address format in utxos
2016-06-02 12:15:14 -04:00
Braydon Fuller
b66eff47cf
main: mempool address index
2016-06-02 12:15:14 -04:00
Braydon Fuller
1bd65a5c4b
main: sort address index utxos by height
2016-06-02 12:15:14 -04:00
Braydon Fuller
d0483c9aa0
main: remove spent address utxo indexes
2016-06-02 12:15:14 -04:00
Braydon Fuller
21c675855f
main: don't undo indexes when verifying blocks at startup
2016-06-02 12:15:14 -04:00
Braydon Fuller
24894cb748
main: update unspent address index during reorgs
2016-06-02 12:15:14 -04:00
Braydon Fuller
08836972c0
rpc: fix argument check for getaddressutxos
2016-06-02 12:15:14 -04:00
Braydon Fuller
0b42ba227a
main: index unspent outputs by address
2016-06-02 12:15:14 -04:00
Braydon Fuller
8597289d8b
main: fix order of address index when disconnecting block
2016-06-02 12:15:14 -04:00
Braydon Fuller
186e11fde7
main: update address index during reorgs
2016-06-02 12:15:14 -04:00
Braydon Fuller
38a7d6d323
rpc: optimize address txid queries
2016-06-02 12:15:14 -04:00
Braydon Fuller
cad092aebb
main: get address deltas between range of block heights
2016-06-02 12:15:14 -04:00
Braydon Fuller
206882cd4b
main: fixed bug with overlapping address index keys
...
There was a bug where the spending address index could have the same key
as the receiving address index if the input and output indexes matched. This lead
to the output always overwriting the input index leading to incorrect balances
with missing spent amounts. This patch separates the two so that they have unique
keys so balances will be correctly calculated.
2016-06-02 12:15:14 -04:00
Braydon Fuller
935ca8f832
main: add block timestamp index
2016-06-02 12:15:13 -04:00
Braydon Fuller
24deb4efc1
rpc: include height in getrawtransaction results
2016-06-02 12:15:13 -04:00
Braydon Fuller
2e8a4c00fa
rpc: add receieved to balance
2016-06-02 12:15:13 -04:00
Braydon Fuller
5bb6d69ff8
rpc: added getaddressbalance method using addressindex
2016-06-02 12:15:13 -04:00
Braydon Fuller
7dbbb79cec
rpc: only sort when combining multiple results
...
It's only necessary to sort when combining results for several addresses
as the results are already in order from the database.
2016-06-02 12:15:13 -04:00
Braydon Fuller
7959a19085
main: serialize height in BE for address index key
...
fixes a sorting issue when iterating over keys
2016-06-02 12:15:13 -04:00
Braydon Fuller
5b5f3f7d00
rpc: sort txids by height for multiple addresses
2016-06-02 12:15:13 -04:00
Braydon Fuller
f4d11ffc7c
rpc: query for multiple addresses txids
2016-06-02 12:15:13 -04:00
Braydon Fuller
2500d1d115
rpc: update getaddresstxids for uniqueness
2016-06-02 12:15:13 -04:00
Braydon Fuller
fcac6bcdc8
rpc: fix issue for querying txids for p2sh addresses
2016-06-02 12:15:13 -04:00
Braydon Fuller
18ea599a71
main: index address index sorted by height
2016-06-02 12:15:13 -04:00
Braydon Fuller
73b2d0851b
test: added unit tests for CScript.IsPayToPublicKeyHash
2016-06-02 12:15:13 -04:00
Braydon Fuller
9babc7ff9f
main: start of address index
...
Adds a configuration option for addressindex to search for txids by address. Includes
an additional rpc method for getting the txids for an address.
2016-06-02 12:15:13 -04:00