recreated seeds by selecting peers across 20+ nodes that:
1. Keep up with updates, in this case run 1.14.3 or higher
2. Have NODE_NETWORK set
3. Are not known scanning clients
4. Are connectable
5. Are stable - I ordered nodes by time they have been connected to
one of my nodes
resulting set is 120 good nodes for mainnet and 20 good nodes for
testnet, serialized into chainparamsseeds.h using the contrib/
scripts.
Use CAmount rather than unsigned int for amounts for consistency
with other fee rate amounts.
This does change the type from unsigned int to unsigned int64, and
while it is unlikely anyone would need a dust limit higher than
unsigned int, again this ensures the theoretical maximum is in line
with other rates.
Fix a rare crash bug where no best chain can be activated, and therefore when trying
to find the height of the best chain via the last block triggers a null pointer dereference.
Moves the break in ActivateBestChain() when a node is being shut
down from the beginning of the loop block to the end, allowing
pindexNewTip to be populated with chainActive.Tip() rather than
its initial NULL value. Solves issues when shutting down nodes
while inside the ActivateBestChain loop.
Introduces a counter for getheader requests that have been sent to
a peer but are pending response, reducing the number of parallel
requests a node pushes out to its peers when needing to sync large
amounts of headers. All getheader requests are serialized during
initial sync, except when a non-connecting header is received,
allowing the node to resolve issues with peers sending faulty
blocks using the DoS mechanism, and when we get an inv for a block
that we do not know, because it's possible we're only connected to
legacy nodes that do not implement header announcement properly.
The call to CheckBlock() in ConnectBlock() is redundant with calls to it
prior to storing a block on disk. If CheckBlock() fails with an error
indicating the block is potentially corrupted, then shut down
immediately, as this is an indication that the node is experiencing
hardware issues. (If we didn't shut down, we could go into an infinite
loop trying to reconnect this same bad block, as we're not setting the
block's status to FAILED in the case where there is potential
corruption.)
If CheckBlock() fails for some other reason, we'll end up flagging this
block as bad (perhaps some prior software version "let a bad block in",
as the comment indicates), and not trying to connect it again, so this
case should be properly handled.
Fixed tabIndex and width in debugwindow.ui
Added Qt UI files for each dialog
Added Qt UI files
Added separate thread for peer dialogs to run RPC commands
Fixed tabIndex
Remove unneeded includes
Fixed error
Replaced RPCExecutor with g_connman
Replaced RPCExecutor with g_connman
Added two input fields for peer address and port
Remove peerThread
Validate IP addresses
Remove Peer now uses selected IP address in peerWidget
Interpret RPC response
Remove redundant include
Use a regular expression to validate IPs
Disconnect node if it has been discovered
Use port based on current chain
Change peerAddress -> peerPort
Allowed DNS names to be entered
Update src/qt/peerdialog.cpp
Co-authored-by: Ross Nicoll <rnicoll@rnicoll.name>
Fix typo
Co-authored-by: Ross Nicoll <rnicoll@rnicoll.name>
Use LookupHost to check address
Co-authored-by: Ross Nicoll <rnicoll@rnicoll.name>
Fix syntax typo