Commit graph

3001 commits

Author SHA1 Message Date
Olaoluwa Osuntokun b72e16f0d6 multi: correct all import paths 2018-05-23 16:46:15 -07:00
Johan T. Halseth 3082ae92c3 rpcwebsocket: notify spends already in the mempool
This commit adds a logic to the addSpentRequests that inspects the
mempool for any spends of the outputs. Before this commit, a spend would
only be checked when a transaction was first accepted into the mempool.
2018-05-23 16:46:15 -07:00
Johan T. Halseth c758834800 mempool_test: add TestCheckSpend 2018-05-23 16:46:15 -07:00
Johan T. Halseth 5394ca1afe mempool: add CheckSpend method
This commit adds a new method CheckSpend to the mempool, which takes an
outpoint and returns any transaction in the mempool that spends this
outpoint.
2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun ceb1caeb24 wire: increase MaxGetCFiltersReqRange from 100 to 1000 2018-05-23 16:46:15 -07:00
Jim Posen 7b67f61fa6 rpcclient: Put CFHeader in PrevFilterHeader field in RPC response. 2018-05-23 16:46:15 -07:00
Jim Posen 4d0e856ea1 server: Handler for getcfcheckpt messages. 2018-05-23 16:46:15 -07:00
Jim Posen 0581e18840 wire: Define CFCheckpt message. 2018-05-23 16:46:15 -07:00
Jim Posen 336b18c584 wire: Define GetCFCheckpt message. 2018-05-23 16:46:15 -07:00
Jim Posen 4c991c8783 wire: Populate cfheaders message with filter hashes instead of headers. 2018-05-23 16:46:15 -07:00
Jim Posen 175af18043 multi: Modify CFHeaders message to have a PrevFilterHeader field. 2018-05-23 16:46:15 -07:00
Jim Posen 7a53a05878 multi: Redefine GetCFHeaders to have StartHeight and StopHash. 2018-05-23 16:46:15 -07:00
Jim Posen daac60675e multi: Redefine GetCFilters to have StartHeight and StopHash. 2018-05-23 16:46:15 -07:00
Jim Posen 3425d33506 blockchain/indexers: Add methods on CfIndex for batch retrieval.
Fetching all items in one db transaction will save time when
responding to getcfilters or getcfheaders requests.
2018-05-23 16:46:15 -07:00
Jim Posen e617483b44 blockchain/indexers: Store filter hashes with cfindex. 2018-05-23 16:46:15 -07:00
Jim Posen d07fd2f333 blockchain/indexers: Reduce duplication in cfindex.
The index will hold three types of entries for each filter type, block
pair: filter, header, and hash. Since they all have similar methods
and implementations, refactor to reduce duplication.
2018-05-23 16:46:15 -07:00
Jim Posen 185577f4c2 blockchain: Implement IntervalBlockHashes method.
This will be used to respond to getcfcheckpt queries.
2018-05-23 16:46:15 -07:00
Jim Posen 07393c0dab blockchain: HeightToHashRange function for pulling range of hashes.
This functionality is required to implement BIP 157.
2018-05-23 16:46:15 -07:00
Jim Posen 621f347929 wire: Remove cftypes and getcftypes commands. 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun 34d82682b0 mempool: switch fee estimation to use vsize as a base
In this commit, we modify the fee estimation to use vsize as a base
rather than size. A recent commit landed to track the fee rate using
vsize in the mempool, and also correct some incorrect unit math. This is
a follow up to that commit to ensure that fee estimation is uniform
throughout.
2018-05-23 16:46:15 -07:00
Johan T. Halseth 56be349be3 mempool: use vsize when setting FeePerKB for mempool txs 2018-05-23 16:46:15 -07:00
Johan T. Halseth b7930a11ab mempool/estimatefee: make 1 Kb = 1000 bytes
This commit changes the value of bytesPerKb to 1000 from 1024.
This is done to ensure consistency between the fee estimator
and the mempool, where the feeRate is set to
    fee * 1000 / serializedSize
2018-05-23 16:46:15 -07:00
Conner Fromknecht b26daffac9 connmgr: adds cancellation of pending requests
This commit extends the work started by roasbeef in the
 previous commit to bring full cancellation of pending
 connection requests. It also adds minor refactors to
 channel send/receives to help cleanup potentially
 lingering go routines.
2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun 548c0f499b connmgr: add ability to remove pending connections
This commit adds the ability for callers to remove pending connections
via a call to the Remove() method. With this change, upstream users of
this package can use the connmgr for more elaborate connectivity needs
as they can now cancel pending connections that are no longer needed.
2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun ffe4c2f0ad integration/rpctest: if unable to build btcd, use one in PATH 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun 5291c455c2 server: properly set feeEstimator in newServer 2018-05-23 16:46:15 -07:00
Daniel Krawisz 47113d428c It is now possible to save and restore the state of the FeeEstimator
and the server searches the database for a previous state to load
when the program is turned on.
2018-05-23 16:46:15 -07:00
Daniel Krawisz 4fd446028f Enable estimatefee rpc command. 2018-05-23 16:46:15 -07:00
Daniel Krawisz 1333ad7f78 FeeEstimator added to server. Mempool alerts the fee estimator of
new txs that it observes. The block manager alerts the fee estimator
of new and orphaned blocks.

Check for invalid state and recreate FeeEstimator if necessary.
2018-05-23 16:46:15 -07:00
Daniel Krawisz e6d8b869aa feeEstimator changed to FeeEstimator. A number of optimizations and improvements.
Rollback takes a block hash rather than a BlockStamp.

Increase rounds in TestEstimateFeeRollback to test dropping txs that have been in the mempool too long.
2018-05-23 16:46:15 -07:00
Daniel Krawisz 4042921791 feeEstimator class added with tests. The feeEstimator can keep track
of how long it takes for unconfirmed txs to be mined into blocks. It
can also roll itself back in the case of an orphan block.
2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun 10432160d5 multi: rebase to upstream, update API's 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun 6f32a79fd6 log: update to latest log rotator API 2018-05-23 16:46:15 -07:00
Alex f4060b107c blockchain/indexers: check for ErrNoData in extended filters
Since the tx hash has moved to the basic filter, generating an extended filter
can result in `ErrNoData`. This is handled by writing a nil filter and giving
it a zero hash.
2018-05-23 16:46:15 -07:00
Alex e0a357abb5 server: add TODO for querying supported filter types 2018-05-23 16:46:15 -07:00
Alex c7e7acc7fd multi: use hidden varint for cftypes count; make filter type enum, not uint8 2018-05-23 16:46:15 -07:00
Alex 8d2ce855eb wire: update service bits for xthin, bit 5, cfilters, and segwit2x 2018-05-23 16:46:15 -07:00
Alex 5772bdde86 server: add OnGetCFTypes callback to serverPeer 2018-05-23 16:46:15 -07:00
Alex 2b7ebfd698 peer: add OnCFTypes and OnGetCFTypes callbacks 2018-05-23 16:46:15 -07:00
Alex 5c93ca639a rpcclient: change "bool" to "uint8" for cfilter/cfheader type 2018-05-23 16:46:15 -07:00
Alex 5fb5acd643 btcjson: fix cfilter tests 2018-05-23 16:46:15 -07:00
Alex 1aa7a6166d wire: update messages to conform to BIP and fix comments 2018-05-23 16:46:15 -07:00
Alex 89d6696560 wire: add getcftypes and cftypes messages 2018-05-23 16:46:15 -07:00
Alex 621c73dad1 multi: change cfilter Extended bool to FilterType uint8
The cfilter BIP specifies that the filter type is a uint8. The
current code encodes it correctly on the wire, but everywhere else,
it's treated as a boolean (false for basic filter, true for
extended). This commit corrects that to account for possible
additional filter types in the future. All package changes are
done in one commit as they're all interdependent. The following
packages are updated:

* blockchain/indexers
* btcjson
* peer
* wire
* main (server.go and rpcserver.go)
2018-05-23 16:46:15 -07:00
Alex e2f65acf02 integration/rpctest: check quit in solveBlock()'s solver() closure 2018-05-23 16:46:15 -07:00
Alex 6cea610774 integration/rpctest: queue block disconnected ntfns in memwallet 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun 8aeb8c3ef2 peer: temporarily disable stall detection 2018-05-23 16:46:15 -07:00
Alex c5c392c5c5 server: init rpcserver with cfindex 2018-05-23 16:46:15 -07:00
Alex ac109cfb86 rpcserver: return correct error when --nocfilters is enabled 2018-05-23 16:46:15 -07:00
Alex 09723f4800 btcjson: add ErrRPCNoCFIndex for cases when cfindex is disabled 2018-05-23 16:46:15 -07:00