Commit graph

3276 commits

Author SHA1 Message Date
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
Olaoluwa Osuntokun
5ab49ca22c rpc: add indexers.CfIndex to config, utilize 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun
c8fdf8bf59 rpcclient: add GetCFilterHeader and GetCFilter 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun
7c2f7be2ea wire: update compact filter messages to match wire.Message interface 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun
3d1caa2f83 multi: update to point to roasbeef forks 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun
9a30e95d83 peer: don't inv trickle new blocks 2018-05-23 16:46:15 -07:00
Josh Rickmar
a741b4366b all: Remove seelog logger.
The btclog package has been changed to defining its own logging
interface (rather than seelog's) and provides a default implementation
for callers to use.

There are two primary advantages to the new logger implementation.

First, all log messages are created before the call returns.  Compared
to seelog, this prevents data races when mutable variables are logged.

Second, the new logger does not implement any kind of artifical rate
limiting (what seelog refers to as "adaptive logging").  Log messages
are outputted as soon as possible and the application will appear to
perform much better when watching standard output.

Because log rotation is not a feature of the btclog logging
implementation, it is handled by the main package by importing a file
rotation package that provides an io.Reader interface for creating
output to a rotating file output.  The rotator has been configured
with the same defaults that btcd previously used in the seelog config
(10MB file limits with maximum of 3 rolls) but now compresses newly
created roll files.  Due to the high compressibility of log text, the
compressed files typically reduce to around 15-30% of the original
10MB file.
2018-05-23 16:46:15 -07:00
Alex
6589cffb19 server: change logging in OnGetCFilter to be less verbose 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun
ac4bd31ba0 peer: disable peer stalling for get blocks messages 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun
4a6dc67067 txscript: add exported sighash calc func 2018-05-23 16:46:15 -07:00
Alex
7647f884a9 rpcserver: Return 0-length headers via RPC as they're now valid. 2018-05-23 16:46:15 -07:00
Alex
ec228f9ff9 rpctest: Add GenerateAndSubmitBlockWithCustomCoinbaseOutputs 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun
9b9ef42f8a blockchain/indexers: proper handling of empty filters 2018-05-23 16:46:15 -07:00
Olaoluwa Osuntokun
e0943a84bd blockchain/indexers: add a bit more line spacing to cfindex.go 2018-05-23 16:46:15 -07:00
Alex
1c5f25bbf2 blockchain/cfindex: Factor out filter/header calc. 2018-05-23 16:46:15 -07:00
Alex
f11e87c957 rpcserver: Fix getcfilterheader RPC method's hex encoding for hash. 2018-05-23 16:46:15 -07:00
Alex
92f1de6dd9 Fix case where 0 headers are retrieved. 2018-05-23 16:46:15 -07:00
Alex
dabb8000fb Add Extended flag to cfilter and cfheaders messages 2018-05-23 16:46:15 -07:00
Alex
936caad9c2 Add last blockhash to cfheaders and blockhash to cfilter messages 2018-05-23 16:46:15 -07:00
Alex
ba4a2f77a5 wire/server: allocate hash once per loop to prevent overwriting 2018-05-23 16:46:15 -07:00
Alex
71ccc95502 wire: Fix MsgCFHeaders.Decode() 2018-05-23 16:46:15 -07:00
Alex
29b5ece196 Changed getcfheaders/cfheaders messages to get multiple headers. 2018-05-23 16:46:15 -07:00
Alex
860100019f blockchain: fix --dropcfindex 2018-05-23 16:46:15 -07:00
Alex
8ad7aa5d5d Rename CFilterHeader to CFHeader on P2P side; fix some bugs/tests 2018-05-23 16:46:15 -07:00
Alex
ba7b5f3308 Use NBytes() instead of Bytes() in CFIndex 2018-05-23 16:46:15 -07:00
pedro martelletto
0c08ba2786 define MsgCFilterHeader.Deserialize(), required by btcrpcclient 2018-05-23 16:46:15 -07:00
pedro martelletto
b5de49aa73 define MsgCFilter.Deserialize(), required by btcrpcclient 2018-05-23 16:46:15 -07:00
Alex
9780ef5997 Skip TxIn on coinbase transaction when indexing 2018-05-23 16:46:15 -07:00
pedro martelletto
b8c3be740f Add CFilterHeader p2p counterparts 2018-05-23 16:46:15 -07:00