aboutsummaryrefslogtreecommitdiffstats
path: root/eth/handler.go
Commit message (Collapse)AuthorAgeFilesLines
* eth/fetcher: check the origin of filter tasks (#14975)Miya Chen2017-10-101-2/+2
| | | | | | * eth/fetcher: check the origin of filter task * eth/fetcher: add some details to fetcher logs
* core, eth/downloader: commit block data using batches (#15115)Felix Lange2017-09-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ethdb: add Putter interface and Has method * ethdb: improve docs and add IdealBatchSize * ethdb: remove memory batch lock Batches are not safe for concurrent use. * core: use ethdb.Putter for Write* functions This covers the easy cases. * core/state: simplify StateSync * trie: optimize local node check * ethdb: add ValueSize to Batch * core: optimize HasHeader check This avoids one random database read get the block number. For many uses of HasHeader, the expectation is that it's actually there. Using Has avoids a load + decode of the value. * core: write fast sync block data in batches Collect writes into batches up to the ideal size instead of issuing many small, concurrent writes. * eth/downloader: commit larger state batches Collect nodes into a batch up to the ideal size instead of committing whenever a node is received. * core: optimize HasBlock check This avoids a random database read to get the number. * core: use numberCache in HasHeader numberCache has higher capacity, increasing the odds of finding the header without a database lookup. * core: write imported block data using a batch Restore batch writes of state and add blocks, tx entries, receipts to the same batch. The change also simplifies the miner. This commit also removes posting of logs when a forked block is imported. * core: fix DB write error handling * ethdb: use RLock for Has * core: fix HasBlock comment
* eth: use maxpeers from p2p layer instead of extra configPéter Szilágyi2017-09-061-3/+5
|
* core, light: send chain events using event.Feed (#14865)Miya Chen2017-08-181-6/+17
|
* eth: send but not announce block to peers if propagate is truemark.lin2017-08-181-0/+1
|
* Merge pull request #14737 from holiman/txpool_localaccountsPéter Szilágyi2017-07-101-1/+1
|\ | | | | Txpool localaccounts
| * core, eth, les: polish txpool API around local/remote txsPéter Szilágyi2017-07-051-1/+1
| |
* | eth, les: Refactor downloader peer to use structsNick Johnson2017-06-291-1/+1
| |
* | eth, les, light: Refactor downloader to use blockchain interfaceNick Johnson2017-06-281-4/+1
|/
* eth: remove les server from protocol manager (#14625)Alan Chen2017-06-151-2/+0
|
* eth: don't import propagated blocks during fastsyncPéter Szilágyi2017-05-261-0/+5
|
* cmd, eth, les, mobile: make networkid uint64 everywherePéter Szilágyi2017-04-251-3/+3
|
* cmd/geth: add --config file flag (#13875)Felix Lange2017-04-121-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * p2p/discover, p2p/discv5: add marshaling methods to Node * p2p/netutil: make Netlist decodable from TOML * common/math: encode nil HexOrDecimal256 as 0x0 * cmd/geth: add --config file flag * cmd/geth: add missing license header * eth: prettify Config again, fix tests * eth: use gasprice.Config instead of duplicating its fields * eth/gasprice: hide nil default from dumpconfig output * cmd/geth: hide genesis block in dumpconfig output * node: make tests compile * console: fix tests * cmd/geth: make TOML keys look exactly like Go struct fields * p2p: use discovery by default This makes the zero Config slightly more useful. It also fixes package node tests because Node detects reuse of the datadir through the NodeDatabase. * cmd/geth: make ethstats URL settable through config file * cmd/faucet: fix configuration * cmd/geth: dedup attach tests * eth: add comment for DefaultConfig * eth: pass downloader.SyncMode in Config This removes the FastSync, LightSync flags in favour of a more general SyncMode flag. * cmd/utils: remove jitvm flags * cmd/utils: make mutually exclusive flag error prettier It now reads: Fatal: flags --dev, --testnet can't be used at the same time * p2p: fix typo * node: add DefaultConfig, use it for geth * mobile: add missing NoDiscovery option * cmd/utils: drop MakeNode This exposed a couple of places that needed to be updated to use node.DefaultConfig. * node: fix typo * eth: make fast sync the default mode * cmd/utils: remove IPCApiFlag (unused) * node: remove default IPC path Set it in the frontends instead. * cmd/geth: add --syncmode * cmd/utils: make --ipcdisable and --ipcpath mutually exclusive * cmd/utils: don't enable WS, HTTP when setting addr * cmd/utils: fix --identity
* eth: accept transactions when starting CPU mining (#13882)Péter Szilágyi2017-04-101-4/+4
|
* cmd/geth, eth: drop bad block reporting, its offline anywayPéter Szilágyi2017-04-061-17/+2
|
* core, consensus: pluggable consensus engines (#3817)Péter Szilágyi2017-04-051-5/+6
| | | | | This commit adds pluggable consensus engines to go-ethereum. In short, it introduces a generic consensus interface, and refactors the entire codebase to use this interface.
* all: update light logs (and a few others) to the new modelPéter Szilágyi2017-03-031-1/+1
|
* Logger updates 3 (#3730)Péter Szilágyi2017-03-021-26/+24
| | | | | | | | * accounts, cmd, eth, ethdb: port logs over to new system * ethdb: drop concept of cache distribution between dbs * eth: fix some log nitpicks to make them nicer
* all: blidly swap out glog to our log15, logs need reworkPéter Szilágyi2017-02-231-27/+26
|
* Merge pull request #3605 from fjl/event-feedPéter Szilágyi2017-02-031-2/+2
|\ | | | | event: add new Subscription type and related utilities
| * event: deprecate TypeMux and related typesFelix Lange2017-01-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | The Subscription type is gone, all uses are replaced by *TypeMuxSubscription. This change is prep-work for the introduction of the new Subscription type in a later commit. gorename -from '"github.com/ethereum/go-ethereum/event"::Event' -to TypeMuxEvent gorename -from '"github.com/ethereum/go-ethereum/event"::muxsub' -to TypeMuxSubscription gofmt -w -r 'Subscription -> *TypeMuxSubscription' ./event/*.go find . -name '*.go' -and -not -regex '\./vendor/.*' \| xargs gofmt -w -r 'event.Subscription -> *event.TypeMuxSubscription'
* | les: remove delayed les server startingZsolt Felfoldi2017-01-261-1/+1
|/
* core: remove support for Olympic networkBas van Kervel2017-01-121-1/+1
|
* all: fix issues reported by honnef.co/go/simple/cmd/gosimpleFelix Lange2017-01-071-26/+4
|
* eth, les: defer starting LES service until ETH initial sync is finishedZsolt Felfoldi2016-12-101-1/+3
|
* core, core/state, trie: EIP158, reprice & skip empty account writeJeffrey Wilcke2016-11-131-2/+3
| | | | | | | | | | | | | | | This commit implements EIP158 part 1, 2, 3 & 4 1. If an account is empty it's no longer written to the trie. An empty account is defined as (balance=0, nonce=0, storage=0, code=0). 2. Delete an empty account if it's touched 3. An empty account is redefined as either non-existent or empty. 4. Zero value calls and zero value suicides no longer consume the 25k reation costs. params: moved core/config to params Signed-off-by: Jeffrey Wilcke <jeffrey@ethereum.org>
* cmd, eth: added light client and light server modeszsfelfoldi2016-11-091-2/+8
|
* eth: move "timed out DAO fork check, dropping" to debug levelFelix Lange2016-10-081-1/+1
|
* eth: monitor malicious header retrieval requestsPéter Szilágyi2016-10-051-5/+16
|
* core, eth, internal, miner: optimize txpool for quick opsPéter Szilágyi2016-09-021-1/+1
|
* eth: don't call ValidateFieldsFelix Lange2016-08-041-3/+0
| | | | | | ValidateFields was introduced before the rlp decoder disallowed nil values. Decoding RLP will never return nil values, there is no need to check for them.
* Merge pull request #2867 from karalabe/dao-challenge-finishPéter Szilágyi2016-08-091-0/+1
|\ | | | | eth, eth/downloader: don't forward the DAO challenge header
| * eth, eth/downloader: don't forward the DAO challenge headerPéter Szilágyi2016-07-261-0/+1
| |
* | eth, eth/downloader: better remote head trackingPéter Szilágyi2016-07-251-14/+16
|/
* Merge pull request #2842 from fjl/downloader-remove-eth61Felix Lange2016-07-231-120/+11
|\ | | | | eth, eth/downloader, eth/fetcher: delete eth/61 sync code
| * eth, eth/downloader, eth/fetcher: delete eth/61 codeFelix Lange2016-07-221-120/+11
| | | | | | | | | | The eth/61 protocol was disabled in #2776, this commit removes its message handlers and hash-chain sync logic.
* | eth: cancel DAO challenge on peer drop (annoying log)Péter Szilágyi2016-07-191-0/+7
|/
* cmd, core, eth, miner, params, tests: finalize the DAO forkPéter Szilágyi2016-07-151-4/+4
|
* core, eth: enforce network split post DAO hard-forkPéter Szilágyi2016-07-151-3/+55
|
* core: improved chainDb using sequential keyszsfelfoldi2016-06-071-14/+18
|
* eth: don't accept transactions until we sync up with the networkPéter Szilágyi2016-06-061-4/+10
|
* eth: enable bad block reportsFelix Lange2016-05-251-2/+19
| | | | | | | | | | | | We used to have reporting of bad blocks, but it was disabled before the Frontier release. We need it back because users are usually unable to provide the full RLP data of a bad block when it occurs. A shortcoming of this particular implementation is that the origin peer is not tracked for blocks received during eth/63 sync. No origin peer info is still better than no report at all though.
* eth: skip transaction handling during fast syncPéter Szilágyi2016-05-171-8/+15
|
* core, eth, miner: improve shutdown synchronisationFelix Lange2016-05-091-22/+38
| | | | | | | | | | | | | | | | | | | | Shutting down geth prints hundreds of annoying error messages in some cases. The errors appear because the Stop method of eth.ProtocolManager, miner.Miner and core.TxPool is asynchronous. Left over peer sessions generate events which are processed after Stop even though the database has already been closed. The fix is to make Stop synchronous using sync.WaitGroup. For eth.ProtocolManager, in order to make use of WaitGroup safe, we need a way to stop new peer sessions from being added while waiting on the WaitGroup. The eth protocol Run function now selects on a signaling channel and adds to the WaitGroup only if ProtocolManager is not shutting down. For miner.worker and core.TxPool the number of goroutines is static, WaitGroup can be used in the usual way without additional synchronisation.
* all: fix go vet warningsFelix Lange2016-04-151-1/+0
|
* core: added basic chain configurationJeffrey Wilcke2016-04-011-2/+2
| | | | | | | | | Added chain configuration options and write out during genesis database insertion. If no "config" was found, nothing is written to the database. Configurations are written on a per genesis base. This means that any chain (which is identified by it's genesis hash) can have their own chain settings.
* eth: various typosLeif Jurvetson2016-03-161-1/+1
|
* eth: forward empty body responses to the downlaoderPéter Szilágyi2016-03-031-1/+5
|
* eth: changed NodeInfo Genesis and Head typesBas van Kervel2016-01-181-6/+6
|
* core, eth/downloader: ensure state presence in ancestor lookupPéter Szilágyi2016-01-041-3/+4
|
* eth: fix #2076, where end of hash query was interpreted number queryPéter Szilágyi2015-12-161-1/+3
|
* eth, p2p, rpc/api: polish protocol info gatheringPéter Szilágyi2015-10-281-5/+37
|
* core, eth, trie: fix data races and merge/review issuesPéter Szilágyi2015-10-211-8/+9
|
* eth: clean out light node notions from ethPéter Szilágyi2015-10-191-11/+6
|
* core, eth: roll back uncertain headers in failed fast syncsPéter Szilágyi2015-10-191-1/+1
|
* core, eth, trie: direct state trie synchronizationPéter Szilágyi2015-10-191-7/+18
|
* core, eth: receipt chain reconstructionPéter Szilágyi2015-10-191-24/+36
|
* eth/downloader: add fast and light sync strategiesPéter Szilágyi2015-10-191-12/+31
|
* core: support inserting pure header chainsPéter Szilágyi2015-10-191-16/+2
|
* cmd, eth: support switching client modes of operationPéter Szilágyi2015-10-191-18/+22
|
* core, eth, event, miner, xeth: fix event post / subscription racePéter Szilágyi2015-10-121-2/+2
|
* cmd/geth, cmd/utils, core, rpc: renamed to blockchainJeffrey Wilcke2015-10-041-33/+33
| | | | | | * Renamed ChainManager to BlockChain * Checkpointing is no longer required and never really properly worked when the state was corrupted.
* Merge pull request #1810 from karalabe/pure-header-verifications-2Jeffrey Wilcke2015-09-171-1/+1
|\ | | | | core, eth, miner: use pure header validation
| * core, eth, miner: use pure header validationPéter Szilágyi2015-09-161-1/+1
| |
* | all: move common.Database to package ethdbFelix Lange2015-09-151-2/+3
|/
* core: split out TD from database and all internalsPéter Szilágyi2015-09-111-9/+10
|
* core, eth: split the db blocks into headers and bodiesPéter Szilágyi2015-09-111-21/+22
|
* Merge pull request #1701 from karalabe/eth62-sync-rebaseFelix Lange2015-08-271-75/+261
|\ | | | | eth: implement eth/62 synchronization logic
| * eth: port the synchronisation algo to eth/62Péter Szilágyi2015-08-251-6/+56
| |
| * eth, eth/downloader: handle header requests, table driven proto testsPéter Szilágyi2015-08-241-57/+206
| |
| * eth, metrics, p2p: prepare metrics and net packets to eth/62Péter Szilágyi2015-08-211-14/+1
| |
* | Add tests for uncle timestamps and refactor timestamp typeGustav Simonsson2015-08-251-1/+1
|/
* eth: fix an issue with pulling and inserting blocks twicePéter Szilágyi2015-08-191-2/+4
|
* Merge pull request #1515 from fjl/license-fixesJeffrey Wilcke2015-07-281-1/+1
|\ | | | | all: fix license headers one more time
| * all: fix license headers one more timeFelix Lange2015-07-241-1/+1
| | | | | | | | I forgot to update one instance of "go-ethereum" in commit 3f047be5a.
* | cmd/geth, core, eth: Version 1.0.0Jeffrey Wilcke2015-07-251-0/+1
|/ | | | | | | Genesis release. Closes #1402 Conflicts: cmd/geth/main.go
* all: update license headers to distiguish GPL/LGPLFelix Lange2015-07-231-4/+4
| | | | | All code outside of cmd/ is licensed as LGPL. The headers now reflect this by calling the whole work "the go-ethereum library".
* eth: calculate the correct TD, only update if betterPéter Szilágyi2015-07-091-3/+15
|
* all: update license informationFelix Lange2015-07-071-0/+16
|
* eth, eth/downloader: fix #1231, DOS vulnerability in hash queueingPéter Szilágyi2015-07-011-1/+1
|
* eth, eth/downloader: transition to eth 61Péter Szilágyi2015-07-011-33/+56
|
* eth, eth/downloader: pass the eth protocol version throughPéter Szilágyi2015-07-011-1/+1
|
* eth: add the blocks from numbers protocol messagePéter Szilágyi2015-07-011-2/+2
|
* eth: clean up peer struct a bit, fix double txn bcastPéter Szilágyi2015-07-011-13/+16
|
* eth: start cleaning up old protocol implementation, add metricsPéter Szilágyi2015-07-011-17/+37
|
* cmd/geth, cmd/utils, eth: advertise both eth/60 and eth/61Péter Szilágyi2015-07-011-12/+18
|
* core, eth, rpc: avoid unnecessary block header copyingFelix Lange2015-06-301-1/+1
|
* eth: fix the propagation/announce order for mined blocksPéter Szilágyi2015-06-191-4/+4
|
* eth: fix test breakage from the previous commitPéter Szilágyi2015-06-181-1/+0
|
* eth, eth/fetcher: propagate after header verify, announce only on insertPéter Szilágyi2015-06-181-20/+41
|
* eth: clean the block request packet handling a bitPéter Szilágyi2015-06-181-17/+17
|
* eth, eth/fetcher: move propagated block import into fetcherPéter Szilágyi2015-06-181-77/+33
|
* eth/fetcher: build longest chain until proven otherwisePéter Szilágyi2015-06-181-1/+1
|
* eth, eth/fetcher: define and enforce propagation boundariesPéter Szilágyi2015-06-181-1/+0
|
* eth, eth/fetcher: cache future propagated blocks tooPéter Szilágyi2015-06-181-0/+2
|
* eth, eth/fetcher: use an import queue to store out of order blocksPéter Szilágyi2015-06-181-2/+9
|
* eth, eth/fetcher: separate notification sync mechanismPéter Szilágyi2015-06-181-45/+26
|
* eth, eth/downloader: move block processing into the downlaoderPéter Szilágyi2015-06-151-1/+1
|
* eth, eth/downloader: move peer removal into downloaderPéter Szilágyi2015-06-151-2/+2
|
* eth: limit number of sent transactions based on message sizeFelix Lange2015-06-091-9/+15
| | | | | | | | | | | | | | 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.
* eth: limit number of sent blocks based on message sizeFelix Lange2015-06-091-2/+11
| | | | | If blocks get larger, sending 256 at once can make messages large enough to exceed the low-level write timeout.
* eth: fix data race accessing peer.tdPéter Szilágyi2015-06-091-2/+2
|
* eth: fix data race accessing peer.recentHashPéter Szilágyi2015-06-091-3/+3
|
* Merge pull request #1188 from karalabe/newblockhashes-proposalJeffrey Wilcke2015-06-091-74/+128
|\ | | | | eth: implement the NewBlockHashes protocol proposal
| * eth: clean up pending announce download map, polish logsPéter Szilágyi2015-06-091-1/+1
| |
| * eth: split and handle explicitly vs. download requested blocksPéter Szilágyi2015-06-091-23/+25
| |
| * eth: fetch announced hashes from origin, periodicallyPéter Szilágyi2015-06-091-29/+25
| |
| * eth: implement the NewBlockHashes protocol proposalPéter Szilágyi2015-06-081-62/+118
| |
* | eth/downloader: cap the hash ban set, add test for itPéter Szilágyi2015-06-081-2/+2
|/
* eth: 100% block propogationobscuren2015-05-281-2/+1
|
* eth: hard disconnect if a peer is flakyPéter Szilágyi2015-05-271-4/+12
|
* eth, eth/downloader: surface downloaded block origin, drop on errorPéter Szilágyi2015-05-261-6/+6
|
* Merge pull request #1064 from karalabe/downloader-attacksJeffrey Wilcke2015-05-221-3/+3
|\ | | | | Fix two additional download vulnerabilities
| * eth, eth/downloader: remove duplicate consts, bump hash fetch to 2KPéter Szilágyi2015-05-211-3/+3
| |
* | eth: fix odd method names in peer setPéter Szilágyi2015-05-201-2/+2
|/
* eth: make the peer set thread safePéter Szilágyi2015-05-191-41/+24
|
* eth/downloader: fix active peer shadowing, polish func namesPéter Szilágyi2015-05-131-2/+2
|
* eth: 100% tx propagationobscuren2015-05-131-1/+1
|
* eth, eth/downloader: handle sync errors a bit more gracefullyPéter Szilágyi2015-05-081-4/+4
|
* eth, eth/downloader: make synchronize thread safePéter Szilágyi2015-05-081-2/+2
|
* eth, eth/downloader: Moved block processing & graceful shutdownobscuren2015-05-011-116/+23
| | | | | | | 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
* eth/downloader: delete blocks from queueobscuren2015-04-301-1/+1
|
* core, eth: verify td of received blocksobscuren2015-04-301-1/+21
|
* eth, eth/downloader: remove bad peers from peer setobscuren2015-04-301-7/+21
| | | | Peers in the eth protocol handler are now being ignored for catch up.
* eth: rely on p2p to determine block propagationobscuren2015-04-301-1/+1
|
* core/types, eth: meassure and display propagation timesobscuren2015-04-301-1/+3
|
* core: return the index of the block that failed when inserting a chainobscuren2015-04-291-1/+1
|
* eth: check if downloader is busy before showing log messageobscuren2015-04-291-0/+5
|
* eth: added a few informative messages regarding downloadingobscuren2015-04-241-0/+6
|
* eth, eth/downloader: simplified synchronisation processobscuren2015-04-241-7/+11
|
* eth, eth/downloader: don't require td on downloader. Fixed testsobscuren2015-04-241-2/+2
|
* eth, eth/downloader: moved peer selection to protocol handlerobscuren2015-04-241-4/+61
|
* eth: cleanupobscuren2015-04-241-5/+1
|
* eth: moved mined, tx events to protocol-hnd and improved tx propagationobscuren2015-04-231-2/+64
| | | | | | | | | 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.
* core: added chain head reset to known blockobscuren2015-04-201-1/+2
|
* Merge branch 'rlp-size-validation' of https://github.com/fjl/go-ethereum ↵obscuren2015-04-191-6/+6
| | | | | | | into fjl-rlp-size-validation Conflicts: eth/protocol.go
* eth: drop blocks with low TDobscuren2015-04-191-3/+3
|
* eth: temp 100% block propagation because of the current state of the netobscuren2015-04-191-2/+2
|
* eth: removed debug messages to stdoutobscuren2015-04-191-2/+2
|
* downloader: don't remove peers. keep them aroundobscuren2015-04-191-0/+11
|
* eth: adapted to new synchronous api of downloader's AddBlockobscuren2015-04-191-2/+12
|
* downloader: make sure that hashes are only accepted from the active peerobscuren2015-04-181-2/+9
|
* downloader: reset the queue if a peer response with an empty hash setobscuren2015-04-181-1/+1
|
* eth: ignore NewBlockMsg with lower tdobscuren2015-04-181-2/+3
|
* eth: drop blocks that are knownobscuren2015-04-181-0/+6
|
* eth: additional cleanups to the subprotocol, improved block propagationobscuren2015-04-181-37/+112
| | | | | | | | * 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.
* eth: began split up of peers and protocol managerobscuren2015-04-181-0/+224