Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

server: Appropriately name inbound peers map in peerState. #250

Merged
merged 28 commits into from
May 31, 2016

Conversation

davecgh
Copy link
Member

@davecgh davecgh commented May 30, 2016

Upstream commit 5c59b68.

dajohi and others added 28 commits February 4, 2016 15:20
This implements the wire protocol encoding portion of a new
sendheaders message as described by BIP0130. It purpose is to request
that a peer sends header commands instead of inv commands when
announcing new blocks. This includes a protocol version bump to 70012
and a wire version bump to 0.4.0.

Note that this does not implement logic to handle the command in btcd,
rather it only makes the command available at the wire protocol level.
A future commit which honors the command and therefore provides full
BIP0130 support is still required.
This commit does not change functionality. It makes the creation of inbound and outbound peers more homogeneous. As a result the Start method of peer was removed as it was found not to be necessary. This is the first of several pull requests/commits designed to make the peer public API and internals less complex.
This updates a couple of logging statements to use the serverPeer
instance instead of the embedded peer.Peer so they are consistent with
all of the other log statements.
Change 'opcodeReserved' to 'opcodeInvalid'
This commit improves and corrects a few comments in txscript to ensure
they match reality.
Dynamic ban scores consist of a persistent and a decaying component. The
persistent score can be used to create simple additive banning policies
simlar to those found in other bitcoin node implementations. The
decaying score enables the creation of evasive logic which handles
misbehaving peers (especially application layer DoS attacks) gracefully
by disconnecting and banning peers attempting various kinds of flooding.
Dynamic ban scores allow these two approaches to be used in tandem.

This pull request includes the following:

 - Dynamic ban score type & functions, with tests for core functionality
 - Ban score of connected peers can be queried via rpc (getpeerinfo)
 - Example policy with decaying score increments on mempool and getdata
 - Logging of misbehavior once half of the ban threshold is reached
 - Banning logic can be disabled via configuration (enabled by default)
 - User defined ban threshold can be set via configuration
This removes the intermediate transaction log that was introduced as a
part of the database cache as a workaround for leveldb batches causing
massive memory usage spikes in favor of the recently introduced leveldb
transaction interface which no longer has the memory usage issues.

This approach is preferred because it can avoid the extra memory needed
for the transaction log and therefore all of the intermediate states as
well.  As a result, the default cache size has been doubled since it
equals roughly the same amount of overall memory usage and the flush
interval has been raised as well.
This updates the findcheckpoint utility to work when there are not
already any checkpoints.  This doesn't really matter for Bitcoin at the
current time, but if a new testnet is created it will not have any
checkpoints to start with and this change also means the utility can
work for alts.

While here, switch a couple of error prints to ensure they contain a
final newline.
This commit corrects several typos in the comments found by misspell.
Now that Go 1.6 has been released, update the required Go version in the
README to 1.5 and add Go 1.6 to the configurations tested by TravisCI.

Also, while here, update the Go 1.4 and 1.5 versions tested by TravisCI
to the latest point releases.
This commit updates the code to make use of the most recent simplified
output from gofmt.
Contains the following upstream commits:
- d127ad4
  - This commit has already been cherry picked and is a NOOP
- d759d1d
  - This commit was originally cherry picked from Decred and is a NOOP
- d127ad4
Contains the following upstream commits:
- d272bfe
  - This commit was originally cherry picked from Decred and is a NOOP
- 9abc2c0
Contains the following upstream commits:
- 907152c
  - This commit has already been cherry picked from Decred and is a NOOP
- c75fea9
Contains the following upstream commits:
- f45db02
  - This commit was already cherry picked and is a NOOP
- f4d551c
  - This commit was already cherry picked and is a NOOP
- c17ff82
Contains the following upstream commits:
- ef9c50b
- eb882f3

In addition to merging the fixes in the commits, this also fixes a few
more misspellings that were introduced in the new Decred code.
Contains the following upstream commits:
- d485210
  - This commit has already been independently applied so it is mostly a
    NOOP
- f389742

In addition, gofmt -s has been run again to simplify the new additions
to Decred and and all simplifications are included in the merge commit.
@jcvernaleo jcvernaleo added this to the v0.1.5 milestone May 31, 2016
@alexlyp
Copy link
Member

alexlyp commented May 31, 2016

tACK

@alexlyp alexlyp merged commit 70f6de8 into decred:master May 31, 2016
@davecgh davecgh deleted the merge_rename-peers branch June 1, 2016 01:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants