Commit Graph

65 Commits

Author SHA1 Message Date
Matias Alejo Garcia
1a68ca4fae add tests to _updateAddressIndex 2016-02-10 15:38:02 -05:00
Matias Alejo Garcia
3bb3d82aac add counter for address mempool index 2016-02-10 15:03:34 -05:00
Matias Alejo Garcia
e7895b4b34 use key as binary 2016-02-09 15:30:40 -05:00
Matias Alejo Garcia
d0c2fa61d8 fix tests 2016-02-09 10:57:40 -05:00
Matias Alejo Garcia
9f87156adc fix format 2016-02-09 10:26:09 -05:00
Matias Alejo Garcia
dae5c9d3d5 fix regtests 2016-02-08 15:07:32 -05:00
Matias Alejo Garcia
c1d3f351f2 add address index to mempool + noBalance options 2016-02-08 13:21:53 -05:00
Matias Alejo Garcia
e7e33313cf add noBalance options + mempoolAddressIndex 2016-02-08 12:50:32 -05:00
Braydon Fuller
93e5dbfc34 Address Service: Limit the number of simultaneous requests 2016-02-02 13:27:45 -05:00
Braydon Fuller
3d7fb6f234 Address Service: End stream without pausing first
There was an issue where streams would still be held open if "pause" was
called before "end", this would lead to http requests from the insight-api
not being returned with an error status as soon as possible but would
instead stay open.
2016-01-26 13:25:53 -05:00
Braydon Fuller
39f8355cd9 Address Service: Bump maximum number of addresses default 2016-01-19 14:07:28 -05:00
Braydon Fuller
45029030f1 Address Service: Sort after unconfirmed and confirmed 2016-01-18 16:16:53 -05:00
Braydon Fuller
e498e0fac2 Address Service: Include default callback earlier 2016-01-18 16:03:37 -05:00
Braydon Fuller
d4f2df5c51 Address Service: Sort mempool txids 2016-01-18 15:56:05 -05:00
Braydon Fuller
a166b6af23 Address Service: Removed nolonger used constant for cache 2016-01-18 15:06:18 -05:00
Braydon Fuller
62934b4b66 Address Service: Removed event listeners prior to stopping 2016-01-18 15:00:55 -05:00
Braydon Fuller
3d9b6d5532 Address Service: More tests for history 2016-01-18 12:59:49 -05:00
Braydon Fuller
e79c00db10 Address Service: Updated tests and fixed various bugs 2016-01-15 18:04:32 -05:00
Braydon Fuller
ead6c2f45f Address Service: Removed caching and added max query limits
Querying addresses that have millions of transactions is supported however
takes hundreds of seconds to fully calculate the balance. Creating a cache of
previous results wasn't currently working because the `isSpent` query is always
based on the current bitcoind tip. Thus the balance of the outputs would be included
however wouldn't be removed when spent as the output wouldn't be checked again
when querying for blocks past the last checkpoint. Including the satoshis in the
inputs address index would make it possible to subtract the spent amount,
however this degrades optimizations elsewhere. The syncing times or querying
for addresses with 10,000 transactions per address.

It may preferrable to have an additional address service that handles high-volume
addresses be on an opt-in basis so that a custom running client could select
high volume addresses to create optimizations for querying balances and history.
The strategies for creating indexes differs on these use cases.
2016-01-14 17:17:04 -05:00
Braydon Fuller
4fcec8755c Address Service: Fixed many bugs from tests
- Refactored getAddressSummary and added several tests
- Fixed bugs revealed from the integration regtests
- Updated many unit tests
2016-01-13 17:15:14 -05:00
Braydon Fuller
188ff28ec7 Address Service: Fixed HASH_TYPES_MAP naming issue 2016-01-11 16:51:00 -05:00
Braydon Fuller
8d2f69c5fd Address Service: Restored multi-address history queries
- Restored functionality to be able to query the history of multiple addresses in one query
- Sorted mempool transactions by timestamp in txid lists
2016-01-11 16:17:55 -05:00
Braydon Fuller
5c4f3c4453 Address Service: Use address summary cache for pagination 2016-01-11 16:17:55 -05:00
Braydon Fuller
8298e380ed Address Service: Use streams to combine inputs and outputs 2016-01-11 16:17:55 -05:00
Braydon Fuller
cef2f7686d Address Service: Limit the length of outputs that can be queried at a time 2016-01-11 16:17:55 -05:00
Braydon Fuller
40eb4f50ae Address Service: Start to cache getAddressSummary based on range of block heights 2016-01-11 16:17:55 -05:00
Braydon Fuller
cab25cf397 Address Service: Start to use streams for memory optimization with large queries 2016-01-11 16:17:55 -05:00
Samuel Reed
3214390d4c
Fix #377; db must contain hash type, not just hash.
Prevents erroneous crediting of all transactions to both the
p2pkh and the corresponding p2sh address.
2016-01-11 09:47:00 -06:00
Braydon Fuller
0ea035c4f0 Address: Fixed race condition with transaction event handlers 2015-11-03 17:12:13 -05:00
Braydon Fuller
c5c8e21c6c Address: Fixed bug with isSpent confusion with prevTxId and txid 2015-11-03 10:26:32 -05:00
Braydon Fuller
89ef28f0b7 Optimize mempool address index memory footprint
- Adds default to store a large portion of the mempool index in leveldb
- Includes an option to use memdown to have the mempool index in-memory
2015-10-30 18:36:16 -04:00
Braydon Fuller
086ba5fcfc Switch to remove items from mempool index as they leave asynchronously. 2015-10-29 19:16:56 -04:00
Rob Riddle
824e624929 Fix typos and some examples in service doc 2015-10-22 18:47:19 +03:00
Patrick Nagurny
9bdd9e7995 unconfirmed balance shouldn't include confirmed balance 2015-10-21 18:25:57 -04:00
Braydon Fuller
1dec93edd4 bitcore -> bitcore-lib 2015-10-17 00:56:29 -04:00
Braydon Fuller
2e3d58c07a Fix bug where the outputIndex would be removed.
The address history `combineTransactionInfo` method removes the
outputIndex when creating the outputIndexes property. When these are
from the mempool the original reference is also modified.

We can easily solve this by returning new instances in `getOutputs`
and `getInputs` instead of a reference to the actual mempool instance.

This will also have the additional benefit that height and other
properties that will be the same for every mempool entry will
not be stored in memory longer than what is necessary to fulfill
a request.
2015-10-12 18:35:37 -04:00
Braydon Fuller
d9b2a0969b Fixed bug with balance
There was a bug when getting unspent outputs that would include an output
that was spent in the mempool in addition to the new output with the change
address. This lead to a balance having an output counted twice towards the
end balance. The solution is to have the isSpent method for the address service
to also include if the output was spent in the mempool, as the isSpent
method exposed from bitcoind only includes if the output was spent in a block.
2015-10-12 09:29:49 -04:00
Patrick Nagurny
3e38d84d0b emit address/balance events for mempool transactions 2015-10-02 17:10:12 -04:00
Braydon Fuller
da9d856da3 Add comments to describe each prefix. 2015-10-02 10:56:28 -04:00
Braydon Fuller
27e90ef41a Give false if spent information not available. 2015-10-01 23:50:06 -04:00
Braydon Fuller
539b263c67 Add spentTxId Index
- To be able to query an inputTxId and inputIndex that spends an outputTxId and outputIndex
- Extends the mempoolSpentIndex to include the inputTxId and inputIndex
2015-10-01 20:03:31 -04:00
Braydon Fuller
f337622790 Updates to documentation for bitcore.io website. 2015-09-29 14:15:49 -04:00
Braydon Fuller
1183e0cae7 Service Documentation 2015-09-23 18:14:37 -04:00
Braydon Fuller
80fadc7ec3 Fix bug with address summary transaction count. 2015-09-21 17:02:11 -04:00
Braydon Fuller
e3096d3646 Address compatibility with pay-to-publickey output scripts. 2015-09-21 13:49:48 -04:00
Patrick Nagurny
4e763d189f fixes 2015-09-18 14:06:26 -04:00
Patrick Nagurny
b11ab97739 add tests 2015-09-18 14:06:26 -04:00
Patrick Nagurny
bc39a5e480 use mempool spent index 2015-09-18 14:06:26 -04:00
Patrick Nagurny
8b1a2aa001 get address summary 2015-09-18 14:06:26 -04:00
Chris Kleeschulte
0ba168e2a2 Fixed typo and added a test to prove that the inputs from the mempoolInputIndex are added on stream close. 2015-09-17 17:20:35 -04:00