aboutsummaryrefslogtreecommitdiffstats
path: root/les/server.go
Commit message (Collapse)AuthorAgeFilesLines
* les: handler separation (#19639)gary rong2019-08-211-197/+143
| | | les: handler separation
* les: implement new client pool (#19745)Felföldi Zsolt2019-08-031-13/+14
|
* cmd, eth, les: fix up ultra light config integrationPéter Szilágyi2019-07-101-2/+2
|
* les: remove half-finished priority pool APIs (#19780)gary rong2019-07-041-57/+13
| | | | | | * les: remove half-finish APIs * les: remove half-finish APIs
* all: on-chain oracle checkpoint syncing (#19543)gary rong2019-06-281-51/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * all: implement simple checkpoint syncing cmd, les, node: remove callback mechanism cmd, node: remove callback definition les: simplify the registrar les: expose checkpoint rpc services in the light client les, light: don't store untrusted receipt cmd, contracts, les: discard stale checkpoint cmd, contracts/registrar: loose restriction of registeration cmd, contracts: add replay-protection all: off-chain multi-signature contract params: deploy checkpoint contract for rinkeby cmd/registrar: add raw signing mode for registrar cmd/registrar, contracts/registrar, les: fixed messages * cmd/registrar, contracts/registrar: fix lints * accounts/abi/bind, les: address comments * cmd, contracts, les, light, params: minor checkpoint sync cleanups * cmd, eth, les, light: move checkpoint config to config file * cmd, eth, les, params: address comments * eth, les, params: address comments * cmd: polish up the checkpoint admin CLI * cmd, contracts, params: deploy new version contract * cmd/checkpoint-admin: add another flag for clef mode signing * cmd, contracts, les: rename and regen checkpoint oracle with abigen
* eth, les: reject stale request (#19689)gary rong2019-06-111-1/+5
| | | | | | * eth, les: reject stale request * les: reuse local head number
* les, les/flowcontrol: implement LES/3 (#19329)Felföldi Zsolt2019-05-311-16/+75
| | | les, les/flowcontrol: implement LES/3
* eth, les: reject light client connection is server is not synced (#19616)gary rong2019-05-271-1/+2
| | | | | | | | * eth, les: reject light client connection is server is not synced * eth, les: rename function and variables * les: format
* les, light: remove support for les/1 4096 block CHT sectionsZsolt Felfoldi2019-04-081-10/+6
|
* les: fix block announcements (#19322)Felföldi Zsolt2019-03-251-2/+1
|
* les, les/flowcontrol: improved request serving and flow control (#18230)Felföldi Zsolt2019-02-261-198/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | This change - implements concurrent LES request serving even for a single peer. - replaces the request cost estimation method with a cost table based on benchmarks which gives much more consistent results. Until now the allowed number of light peers was just a guess which probably contributed a lot to the fluctuating quality of available service. Everything related to request cost is implemented in a single object, the 'cost tracker'. It uses a fixed cost table with a global 'correction factor'. Benchmark code is included and can be run at any time to adapt costs to low-level implementation changes. - reimplements flowcontrol.ClientManager in a cleaner and more efficient way, with added capabilities: There is now control over bandwidth, which allows using the flow control parameters for client prioritization. Target utilization over 100 percent is now supported to model concurrent request processing. Total serving bandwidth is reduced during block processing to prevent database contention. - implements an RPC API for the LES servers allowing server operators to assign priority bandwidth to certain clients and change prioritized status even while the client is connected. The new API is meant for cases where server operators charge for LES using an off-protocol mechanism. - adds a unit test for the new client manager. - adds an end-to-end test using the network simulator that tests bandwidth control functions through the new API.
* les: implement ultralight client (#16904)b00ris2019-01-241-11/+27
| | | | For more information about this light client mode, read https://hackmd.io/s/HJy7jjZpm
* all: make indexer configurable (#17188)gary rong2018-08-281-6/+8
|
* les: fix crasher in NodeInfo when running as server (#17419)Felix Lange2018-08-171-18/+20
| | | | | | | | | | | | | | | | | * les: fix crasher in NodeInfo when running as server The ProtocolManager computes CHT and Bloom trie roots by asking the indexers for their current head. It tried to get the indexers from LesOdr, but no LesOdr instance is created in server mode. Attempt to fix this by moving the indexers, protocol creation and NodeInfo to a new lesCommons struct which is embedded into both server and client. All this setup code should really be cleaned up, but this is just a hotfix so we have to do that some other time. * les: fix commons protocol maker
* light: CHT and bloom trie indexers working in light mode (#16534)Felföldi Zsolt2018-08-161-2/+2
| | | | | | | This PR enables the indexers to work in light client mode by downloading a part of these tries (the Merkle proofs of the last values of the last known section) in order to be able to add new values and recalculate subsequent hashes. It also adds CHT data to NodeInfo.
* les: pass server pool to protocol manager (#16947)Felföldi Zsolt2018-06-121-1/+1
|
* core/rawdb: separate raw database access to own package (#16666)Péter Szilágyi2018-05-071-2/+3
|
* les, light: fix CHT trie retrievals (#16039)Péter Szilágyi2018-02-111-6/+4
| | | | | | | | | | | | * les, light: fix CHT trie retrievals * les, light: minor polishes, test remote CHT retrievals * les, light: deterministic nodeset rlp, bloombits test skeleton * les: add an event emission to the les bloombits test * les: drop dead tester code
* les: fix server panic when discovery disabled (#16055)Felföldi Zsolt2018-02-101-9/+11
|
* les: limit LES peer count and improve peer configuration logic (#16010)Felföldi Zsolt2018-02-051-1/+3
| | | | | | * les: limit number of LES connections * eth, cmd/utils: light vs max peer configuration logic
* p2p, p2p/discover, p2p/discv5: implement UDP port sharing (#15200)Felföldi Zsolt2018-01-221-2/+2
| | | | | | | | | | | | | | | This commit affects p2p/discv5 "topic discovery" by running it on the same UDP port where the old discovery works. This is realized by giving an "unhandled" packet channel to the old v4 discovery packet handler where all invalid packets are sent. These packets are then processed by v5. v5 packets are always invalid when interpreted by v4 and vice versa. This is ensured by adding one to the first byte of the packet hash in v5 packets. DiscoveryV5Bootnodes is also changed to point to new bootnodes that are implementing the changed packet format with modified hash. Existing and new v5 bootnodes are both running on different ports ATM.
* les, light: LES/2 protocol version (#14970)Felföldi Zsolt2017-10-241-115/+83
| | | | | | | | | | | | | | | | | | This PR implements the new LES protocol version extensions: * new and more efficient Merkle proofs reply format (when replying to a multiple Merkle proofs request, we just send a single set of trie nodes containing all necessary nodes) * BBT (BloomBitsTrie) works similarly to the existing CHT and contains the bloombits search data to speed up log searches * GetTxStatusMsg returns the inclusion position or the pending/queued/unknown state of a transaction referenced by hash * an optional signature of new block data (number/hash/td) can be included in AnnounceMsg to provide an option for "very light clients" (mobile/embedded devices) to skip expensive Ethash check and accept multiple signatures of somewhat trusted servers (still a lot better than trusting a single server completely and retrieving everything through RPC). The new client mode is not implemented in this PR, just the protocol extension.
* core, light: send chain events using event.Feed (#14865)Miya Chen2017-08-181-4/+5
|
* les: fix megacheck warnings (#14941)Felföldi Zsolt2017-08-091-11/+0
| | | | | | * les: fix megacheck warnings * les: fixed testGetProofs
* les: code refactoring (#14416)Felföldi Zsolt2017-06-211-3/+18
| | | | | | | | | | | | This commit does various code refactorings: - generalizes and moves the request retrieval/timeout/resend logic out of LesOdr (will be used by a subsequent PR) - reworks the peer management logic so that all services can register with peerSet to get notified about added/dropped peers (also gets rid of the ugly getAllPeers callback in requestDistributor) - moves peerSet, LesOdr, requestDistributor and retrieveManager initialization out of ProtocolManager because I believe they do not really belong there and the whole init process was ugly and ad-hoc
* core, consensus: pluggable consensus engines (#3817)Péter Szilágyi2017-04-051-1/+1
| | | | | 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.
* core: refactor genesis handlingFelix Lange2017-03-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This commit solves several issues concerning the genesis block: * Genesis/ChainConfig loading was handled by cmd/geth code. This left library users in the cold. They could specify a JSON-encoded string and overwrite the config, but didn't get any of the additional checks performed by geth. * Decoding and writing of genesis JSON was conflated in WriteGenesisBlock. This made it a lot harder to embed the genesis block into the forthcoming config file loader. This commit changes things so there is a single Genesis type that represents genesis blocks. All uses of Write*Genesis* are changed to use the new type instead. * If the chain config supplied by the user was incompatible with the current chain (i.e. the chain had already advanced beyond a scheduled fork), it got overwritten. This is not an issue in practice because previous forks have always had the highest total difficulty. It might matter in the future though. The new code reverts the local chain to the point of the fork when upgrading configuration. The change to genesis block data removes compression library dependencies from package core.
* all: update light logs (and a few others) to the new modelPéter Szilágyi2017-03-031-3/+2
|
* all: blidly swap out glog to our log15, logs need reworkPéter Szilágyi2017-02-231-4/+4
|
* les: remove delayed les server startingZsolt Felfoldi2017-01-261-27/+3
|
* les, light: add block availability check for ODR requestsZsolt Felfoldi2016-12-101-5/+4
|
* eth, les: defer starting LES service until ETH initial sync is finishedZsolt Felfoldi2016-12-101-1/+27
|
* les: fixed loggingJeffrey Wilcke2016-11-161-1/+1
|
* les: cleaned up logging (#3256)Jeffrey Wilcke2016-11-131-3/+8
|
* all: update license informationFelix Lange2016-11-091-1/+1
|
* core/types: remove header accessorsFelix Lange2016-11-091-2/+2
| | | | | | These accessors were introduced by light client changes, but the only method that is actually used is GetNumberU64. This commit replaces all uses of .GetNumberU64 with .Number.Uint64.
* p2p/discv5: added new topic discovery packageZsolt Felfoldi2016-11-091-2/+3
|
* les: light client protocol and APIZsolt Felfoldi2016-11-091-0/+401