Péter Szilágyi
90d45f0397
eth: fix test breakage from the previous commit
2015-06-18 18:25:27 +03:00
Péter Szilágyi
b91b581b80
eth, eth/fetcher: propagate after header verify, announce only on insert
2015-06-18 18:00:19 +03:00
Péter Szilágyi
629705ad53
eth: clean the block request packet handling a bit
2015-06-18 16:09:34 +03:00
Péter Szilágyi
5ec6ecc511
eth, eth/fetcher: move propagated block import into fetcher
2015-06-18 15:56:08 +03:00
Péter Szilágyi
37c5ff392f
eth/fetcher: build longest chain until proven otherwise
2015-06-18 15:56:08 +03:00
Péter Szilágyi
497a7f1717
eth, eth/fetcher: define and enforce propagation boundaries
2015-06-18 15:56:08 +03:00
Péter Szilágyi
11c8f83a58
eth, eth/fetcher: cache future propagated blocks too
2015-06-18 15:56:08 +03:00
Péter Szilágyi
057bc237ad
eth, eth/fetcher: use an import queue to store out of order blocks
2015-06-18 15:56:07 +03:00
Péter Szilágyi
7c2af1c117
eth, eth/fetcher: separate notification sync mechanism
2015-06-18 15:56:07 +03:00
Péter Szilágyi
fc7abd9886
eth, eth/downloader: move block processing into the downlaoder
2015-06-15 09:22:37 +03:00
Péter Szilágyi
66d3dc8690
eth, eth/downloader: move peer removal into downloader
2015-06-15 09:22:36 +03:00
Felix Lange
6c73a59806
eth: limit number of sent transactions based on message size
...
Nodes that are out of sync will queue many transactions, which causes
the initial transactions message to grow very large. Larger transactions
messages can make communication impossible if the message is too big to
send. Big transactions messages also exhaust egress bandwidth, which
degrades other peer connections.
The new approach to combat these issues is to send transactions in
smaller batches. This commit introduces a new goroutine that handles
delivery of all initial transaction transfers. Size-limited packs of
transactions are sent to one peer at a time, conserving precious egress
bandwidth.
2015-06-09 17:07:10 +02:00
Felix Lange
41b2008a66
eth: limit number of sent blocks based on message size
...
If blocks get larger, sending 256 at once can make messages large
enough to exceed the low-level write timeout.
2015-06-09 17:06:31 +02:00
Péter Szilágyi
f86707713c
eth: fix data race accessing peer.td
2015-06-09 14:56:27 +03:00
Péter Szilágyi
44147d057d
eth: fix data race accessing peer.recentHash
2015-06-09 14:27:44 +03:00
Jeffrey Wilcke
05cae69d72
Merge pull request #1188 from karalabe/newblockhashes-proposal
...
eth: implement the NewBlockHashes protocol proposal
2015-06-09 04:07:46 -07:00
Péter Szilágyi
8216bb901c
eth: clean up pending announce download map, polish logs
2015-06-09 00:37:10 +03:00
Péter Szilágyi
9ed166c196
eth: split and handle explicitly vs. download requested blocks
2015-06-08 20:38:39 +03:00
Péter Szilágyi
fdccce781e
eth: fetch announced hashes from origin, periodically
2015-06-08 19:24:56 +03:00
Péter Szilágyi
6f415b96b3
eth: implement the NewBlockHashes protocol proposal
2015-06-08 18:44:02 +03:00
Péter Szilágyi
63c6cedb14
eth/downloader: cap the hash ban set, add test for it
2015-06-08 14:12:00 +03:00
obscuren
e5d7627427
eth: 100% block propogation
2015-05-28 17:01:44 +02:00
Péter Szilágyi
5235e01b8d
eth: hard disconnect if a peer is flaky
2015-05-27 18:58:51 +03:00
Péter Szilágyi
eafdc1f8e3
eth, eth/downloader: surface downloaded block origin, drop on error
2015-05-26 14:00:21 +03:00
Jeffrey Wilcke
af28736bd0
Merge pull request #1064 from karalabe/downloader-attacks
...
Fix two additional download vulnerabilities
2015-05-21 09:00:12 -07:00
Péter Szilágyi
06a041589f
eth, eth/downloader: remove duplicate consts, bump hash fetch to 2K
2015-05-21 18:16:04 +03:00
Péter Szilágyi
3c8227b935
eth: fix odd method names in peer set
2015-05-20 10:34:45 +03:00
Péter Szilágyi
5422fe5125
eth: make the peer set thread safe
2015-05-18 21:33:37 +03:00
Péter Szilágyi
d2d5dbc6fb
eth/downloader: fix active peer shadowing, polish func names
2015-05-13 13:13:43 +03:00
obscuren
8fe01b4bfa
eth: 100% tx propagation
2015-05-12 19:01:01 +02:00
Péter Szilágyi
bd5720f480
eth, eth/downloader: handle sync errors a bit more gracefully
2015-05-08 15:22:48 +03:00
Péter Szilágyi
9d188f73b5
eth, eth/downloader: make synchronize thread safe
2015-05-07 21:07:20 +03:00
obscuren
016f152b36
eth, eth/downloader: Moved block processing & graceful shutdown
...
The downloader is no longer responsible for processing blocks. The
eth-protocol handler now takes care of this instead.
Added graceful shutdown during block processing. Closes #846
2015-05-01 15:58:44 +02:00
obscuren
8595198c1b
eth/downloader: delete blocks from queue
2015-04-30 17:51:47 +02:00
obscuren
28b39267d9
core, eth: verify td of received blocks
2015-04-30 13:50:59 +02:00
obscuren
9b6e8f6195
eth, eth/downloader: remove bad peers from peer set
...
Peers in the eth protocol handler are now being ignored for catch up.
2015-04-30 12:38:16 +02:00
obscuren
04c209980b
eth: rely on p2p to determine block propagation
2015-04-29 22:50:58 +02:00
obscuren
9e63798d03
core/types, eth: meassure and display propagation times
2015-04-29 19:55:30 +02:00
obscuren
735b029db9
core: return the index of the block that failed when inserting a chain
2015-04-29 14:00:24 +02:00
obscuren
4b7bdc3766
eth: check if downloader is busy before showing log message
2015-04-29 12:51:05 +02:00
obscuren
1681ee9883
eth: added a few informative messages regarding downloading
2015-04-24 17:03:09 +02:00
obscuren
d84c2202e7
eth, eth/downloader: simplified synchronisation process
2015-04-24 15:38:10 +02:00
obscuren
31f82eb334
eth, eth/downloader: don't require td on downloader. Fixed tests
2015-04-24 15:04:58 +02:00
obscuren
b86e7526e1
eth, eth/downloader: moved peer selection to protocol handler
2015-04-24 14:40:32 +02:00
obscuren
516f49c812
eth: cleanup
2015-04-23 23:30:25 +02:00
obscuren
d3be1a2719
eth: moved mined, tx events to protocol-hnd and improved tx propagation
...
Transactions are now propagated to peers from which we have not yet
received the transaction. This will significantly reduce the chatter on
the network.
Moved new mined block handler to the protocol handler and moved
transaction handling to protocol handler.
2015-04-23 11:50:12 +02:00
obscuren
45da3e17e2
core: added chain head reset to known block
2015-04-20 12:29:02 +02:00
obscuren
8f3a7e41de
Merge branch 'rlp-size-validation' of https://github.com/fjl/go-ethereum into fjl-rlp-size-validation
...
Conflicts:
eth/protocol.go
2015-04-19 17:07:40 +02:00
obscuren
3d497be9bd
eth: drop blocks with low TD
2015-04-19 13:31:37 +02:00
obscuren
4340996572
eth: temp 100% block propagation because of the current state of the net
2015-04-19 01:40:01 +02:00
obscuren
434dea3caf
eth: removed debug messages to stdout
2015-04-19 00:03:26 +02:00
obscuren
50e096e627
downloader: don't remove peers. keep them around
2015-04-18 23:56:08 +02:00
obscuren
0d536734fe
eth: adapted to new synchronous api of downloader's AddBlock
2015-04-18 18:57:59 +02:00
obscuren
60613b57d1
downloader: make sure that hashes are only accepted from the active peer
2015-04-18 17:35:03 +02:00
obscuren
8244825bbf
downloader: reset the queue if a peer response with an empty hash set
2015-04-18 15:14:12 +02:00
obscuren
eef4776b5b
eth: ignore NewBlockMsg with lower td
2015-04-18 14:25:22 +02:00
obscuren
ecc74d76cc
eth: drop blocks that are known
2015-04-18 02:24:24 +02:00
obscuren
cc436c4b28
eth: additional cleanups to the subprotocol, improved block propagation
...
* Improved block propagation by sending blocks only to peers to which, as
far as we know, the peer does not know about.
* Made sub protocol its own manager
* SubProtocol now contains the p2p.Protocol which is used instead of
a function-returning-protocol thing.
2015-04-18 02:21:07 +02:00
obscuren
c2f410214c
eth: began split up of peers and protocol manager
2015-04-18 01:11:09 +02:00