Manav Darji
8255d194ae
minor fixes and enhancements
2022-06-02 16:34:46 +05:30
Manav Darji
d4e7603315
add debug rpc endpoints for checkpoint whitelist service
2022-06-02 16:23:38 +05:30
Manav Darji
2ba7c036a7
fix tests
2022-05-24 17:13:49 +05:30
Manav Darji
cb9d29151c
add more tests
2022-05-24 16:29:39 +05:30
Manav Darji
9c861920d5
modularise fake chain validator in downloader
2022-05-24 15:41:26 +05:30
Manav Darji
c46a29340d
handle all errors
2022-05-24 14:34:26 +05:30
Manav Darji
2b089ee6d3
fix: return value for no remote block
2022-05-24 14:33:45 +05:30
Evgeny Danienko
01117acbcc
fmt
2022-05-19 14:41:49 +03:00
Evgeny Danienko
b1b0c0e2fb
test ErrCheckpointMismatch
2022-05-18 17:21:51 +03:00
Evgeny Danienko
af2b5e06b0
wip
2022-05-17 19:24:16 +03:00
Evgeny Danienko
3dd7f59531
more tests
2022-05-17 19:23:57 +03:00
Manav Darji
bae9c4400b
add unit tests for IsValidChain function
2022-05-12 14:49:48 +05:30
Manav Darji
a6ec55bb31
fix tests and format
2022-05-11 17:09:28 +05:30
Evgeny Danienko
aa3004b083
fix types
2022-05-05 18:08:31 +03:00
Evgeny Danienko
2cb82c991a
extract whitelist interface
2022-05-05 17:00:24 +03:00
Manav Darji
cc7c5b3fd9
initial implementation for common ancestor approach
2022-05-02 16:57:02 +05:30
Manav Darji
a551f01ab8
merge gethv1.10.17
2022-04-04 16:39:55 +05:30
Arpit Temani
3fb25179b6
merge geth v1.10.15
2022-01-12 13:00:32 +05:30
Ferran Borreguero
e4eceefbb0
Merge conflicts
2021-10-14 12:50:41 +02:00
Ferran Borreguero
54d3cf40e5
Limit binary search to local height
2021-09-20 10:30:10 +02:00
Péter Szilágyi
0db0b27754
Revert "Revert "eth: drop eth/65, the last non-reqid protocol version" ( #23426 )" ( #23456 )
...
This reverts commit c368f728c1 .
2021-08-24 21:52:58 +03:00
Péter Szilágyi
c368f728c1
Revert "eth: drop eth/65, the last non-reqid protocol version" ( #23426 )
2021-08-20 15:14:21 +03:00
chuwt
5566e5d152
eth/downloader: fix typo in comment ( #23413 )
2021-08-18 13:03:41 +03:00
Péter Szilágyi
d3f018fde8
eth: drop eth/65, the last non-reqid protocol version
2021-06-29 12:31:30 +03:00
Martin Holst Swende
2d4eff21ca
eth/downloader: increase downloader block body allowance ( #23074 )
...
This change increases the cache size from 64 to 256 Mb for block bodies.
Benchmarks have shown this to be one bottleneck when trying to achieve
higher download speeds.
The commit also includes a minor optimization for header inserts in package
core: previously, the presence of headers in the database was checked for
every header before writing it. With the change, if one header fails the
presence check, all subsequent headers are also assumed to be missing.
This is an improvement because in practice, the headers are almost always
missing during sync.
2021-06-25 14:53:22 +02:00
Péter Szilágyi
7a7abe3de8
accounts/abi/bind: fix bounded contracts and sim backend for 1559 ( #23038 )
...
* accounts/abi/bind: fix bounded contracts and sim backend for 1559
* accounts/abi/bind, ethclient: don't rely on chain config for gas prices
* all: enable London for all internal tests
* les: get receipt type info in les tests
* les: fix weird test
Co-authored-by: Martin Holst Swende <martin@swende.se>
2021-06-15 13:56:14 +03:00
Felix Lange
427175153c
p2p/msgrate: return capacity as integer, clamp to max uint32 ( #22943 )
...
* p2p/msgrate: return capacity as integer
* eth/protocols/snap: remove conversions
* p2p/msgrate: add overflow test
* p2p/msgrate: make the capacity overflow test actually overflow
* p2p/msgrate: clamp capacity to max int32
* p2p/msgrate: fix min/max confusion
2021-05-27 19:43:55 +03:00
Péter Szilágyi
3e795881ea
eth, p2p/msgrate: move peer QoS tracking to its own package and use it for snap ( #22876 )
...
This change extracts the peer QoS tracking logic from eth/downloader, moving
it into the new package p2p/msgrate. The job of msgrate.Tracker is determining
suitable timeout values and request sizes per peer.
The snap sync scheduler now uses msgrate.Tracker instead of the hard-coded 15s
timeout. This should make the sync work better on network links with high latency.
2021-05-19 14:09:03 +02:00
Péter Szilágyi
745757ac6b
core, eth: abort snapshot generation on snap sync and resume later
2021-04-30 17:03:10 +03:00
gary rong
7088f1e814
core, eth: faster snapshot generation ( #22504 )
...
* eth/protocols: persist received state segments
* core: initial implementation
* core/state/snapshot: add tests
* core, eth: updates
* eth/protocols/snapshot: count flat state size
* core/state: add metrics
* core/state/snapshot: skip unnecessary deletion
* core/state/snapshot: rename
* core/state/snapshot: use the global batch
* core/state/snapshot: add logs and fix wiping
* core/state/snapshot: fix
* core/state/snapshot: save generation progress even if the batch is empty
* core/state/snapshot: fixes
* core/state/snapshot: fix initial account range length
* core/state/snapshot: fix initial account range
* eth/protocols/snap: store flat states during the healing
* eth/protocols/snap: print logs
* core/state/snapshot: refactor (#4 )
* core/state/snapshot: refactor
* core/state/snapshot: tiny fix and polish
Co-authored-by: rjl493456442 <garyrong0905@gmail.com>
* core, eth: fixes
* core, eth: fix healing writer
* core, trie, eth: fix paths
* eth/protocols/snap: fix encoding
* eth, core: add debug log
* core/state/generate: release iterator asap (#5 )
core/state/snapshot: less copy
core/state/snapshot: revert split loop
core/state/snapshot: handle storage becoming empty, improve test robustness
core/state: test modified codehash
core/state/snapshot: polish
* core/state/snapshot: optimize stats counter
* core, eth: add metric
* core/state/snapshot: update comments
* core/state/snapshot: improve tests
* core/state/snapshot: replace secure trie with standard trie
* core/state/snapshot: wrap return as the struct
* core/state/snapshot: skip wiping correct states
* core/state/snapshot: updates
* core/state/snapshot: fixes
* core/state/snapshot: fix panic due to reference flaw in closure
* core/state/snapshot: fix errors in state generation logic + fix log output
* core/state/snapshot: remove an error case
* core/state/snapshot: fix condition-check for exhausted snap state
* core/state/snapshot: use stackTrie for small tries
* core/state/snapshot: don't resolve small storage tries in vain
* core/state/snapshot: properly clean up storage of deleted accounts
* core/state/snapshot: avoid RLP-encoding in some cases + minor nitpicks
* core/state/snapshot: fix error (+testcase)
* core/state/snapshot: clean up tests a bit
* core/state/snapshot: work in progress on better tests
* core/state/snapshot: polish code
* core/state/snapshot: fix trie iteration abortion trigger
* core/state/snapshot: fixes flaws
* core/state/snapshot: remove panic
* core/state/snapshot: fix abort
* core/state/snapshot: more tests (plus failing testcase)
* core/state/snapshot: more testcases + fix for failing test
* core/state/snapshot: testcase for malformed data
* core/state/snapshot: some test nitpicks
* core/state/snapshot: improvements to logging
* core/state/snapshot: testcase to demo error in abortion
* core/state/snapshot: fix abortion
* cmd/geth: make verify-state report the root
* trie: fix failing test
* core/state/snapshot: add timer metrics
* core/state/snapshot: fix metrics
* core/state/snapshot: udpate tests
* eth/protocols/snap: write snapshot account even if code or state is needed
* core/state/snapshot: fix diskmore check
* core/state/snapshot: review fixes
* core/state/snapshot: improve error message
* cmd/geth: rename 'error' to 'err' in logs
* core/state/snapshot: fix some review concerns
* core/state/snapshot, eth/protocols/snap: clear snapshot marker when starting/resuming snap sync
* core: add error log
* core/state/snapshot: use proper timers for metrics collection
* core/state/snapshot: address some review concerns
* eth/protocols/snap: improved log message
* eth/protocols/snap: fix heal logs to condense infos
* core/state/snapshot: wait for generator termination before restarting
* core/state/snapshot: revert timers to counters to track total time
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
2021-04-14 23:23:11 +03:00
Péter Szilágyi
fe1586b094
eth, les: drop support for eth/64, fix eth/66 tests
2021-04-09 10:39:45 +03:00
Martin Holst Swende
410089afea
eth/protocols/snap, eth/downloader: don't use bloom filter in snap sync
2021-03-17 09:36:34 +01:00
Martin Holst Swende
faacc8e0fa
cmd/geth, eth/downloader: remove copydb command ( #22501 )
...
* cmd/geth: remove copydb command
* eth/downloader: remove fakepeer
2021-03-15 16:25:45 +02:00
lightclient
bbfb1e4008
all: add support for EIP-2718, EIP-2930 transactions ( #21502 )
...
This adds support for EIP-2718 typed transactions as well as EIP-2930
access list transactions (tx type 1). These EIPs are scheduled for the
Berlin fork.
There very few changes to existing APIs in core/types, and several new APIs
to deal with access list transactions. In particular, there are two new
constructor functions for transactions: types.NewTx and types.SignNewTx.
Since the canonical encoding of typed transactions is not RLP-compatible,
Transaction now has new methods for encoding and decoding: MarshalBinary
and UnmarshalBinary.
The existing EIP-155 signer does not support the new transaction types.
All code dealing with transaction signatures should be updated to use the
newer EIP-2930 signer. To make this easier for future updates, we have
added new constructor functions for types.Signer: types.LatestSigner and
types.LatestSignerForChainID.
This change also adds support for the YoloV3 testnet.
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Felix Lange <fjl@twurst.com>
Co-authored-by: Ryan Schneider <ryanleeschneider@gmail.com>
2021-02-25 15:26:57 +01:00
Martin Holst Swende
6ec1561044
eth: implement eth66 ( #22241 )
...
* eth/protocols/eth: split up the eth protocol handlers
* eth/protocols/eth: define eth-66 protocol messages
* eth/protocols/eth: poc implement getblockheaders on eth/66
* eth/protocols/eth: implement remaining eth-66 handlers
* eth/protocols: define handler map for eth 66
* eth/downloader: use protocol constants from eth package
* eth/protocols/eth: add ETH66 capability
* eth/downloader: tests for eth66
* eth/downloader: fix error in tests
* eth/protocols/eth: use eth66 for outgoing requests
* eth/protocols/eth: remove unused error type
* eth/protocols/eth: define protocol length
* eth/protocols/eth: fix pooled tx over eth66
* protocols/eth/handlers: revert behavioural change which caused tests to fail
* eth/downloader: fix failing test
* eth/protocols/eth: add testcases + fix flaw with header requests
* eth/protocols: change comments
* eth/protocols/eth: review fixes + fixed flaw in RequestOneHeader
* eth/protocols: documentation
* eth/protocols/eth: review concerns about types
2021-02-18 18:54:29 +02:00
Péter Szilágyi
bfdff4c5b8
eth: fix snap sync cancellation
2021-02-16 16:11:33 +02:00
Martin Holst Swende
797b0812ab
eth/protocols/snap: snap sync testing ( #22179 )
...
* eth/protocols/snap: make timeout configurable
* eth/protocols/snap: snap sync testing
* eth/protocols/snap: test to trigger panic
* eth/protocols/snap: fix race condition on timeouts
* eth/protocols/snap: return error on cancelled sync
* squashme: updates + test causing panic + properly serve accounts in order
* eth/protocols/snap: revert failing storage response
* eth/protocols/snap: revert on bad responses (storage, code)
* eth/protocols/snap: fix account handling stall
* eth/protocols/snap: fix remaining revertal-issues
* eth/protocols/snap: timeouthandler for bytecode requests
* eth/protocols/snap: debugging + fix log message
* eth/protocols/snap: fix misspelliings in docs
* eth/protocols/snap: fix race in bytecode handling
* eth/protocols/snap: undo deduplication of storage roots
* synctests: refactor + minify panic testcase
* eth/protocols/snap: minor polishes
* eth: minor polishes to make logs more useful
* eth/protocols/snap: remove excessive logs from the test runs
* eth/protocols/snap: stress tests with concurrency
* eth/protocols/snap: further fixes to test cancel channel handling
* eth/protocols/snap: extend test timeouts on CI
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
2021-01-25 08:17:05 +02:00
meowsbits
81bf9f97c9
downloader: extract findAncestor search functions ( #21744 )
...
This is a simple refactoring, extracting common ancestor
negotiation logic to named function
2021-01-20 22:45:01 +01:00
Chris Ziogas
89030ec0b4
eth/downloader: fix race condition in tests ( #22140 )
...
* downloader: fix race condition in tests
* eth/downloader: fix race condition in tests
* Revert "downloader: fix race condition in tests"
This reverts commit 108033ebc6 .
2021-01-09 17:29:19 +01:00
Péter Szilágyi
83d317cff9
cmd/utils, eth/downloader: minor snap nitpicks
2021-01-06 08:37:45 +02:00
jk-jeongkyun
618454214b
eth/downloader: enhanced test cases for downloader queue ( #22114 )
2021-01-05 14:56:01 +01:00
jk-jeongkyun
653e8b9dd9
eth/downloader: remove unnecessary condition ( #22052 )
2020-12-27 22:26:42 +01:00
ucwong
61469cfeaf
eth/downloader: fix typo in comment ( #22019 )
2020-12-21 15:39:58 +01:00
ucwong
c5a3ffa363
eth/download/statesync : optimize to avoid a copy in state sync hashing ( #22035 )
...
* eth/download/statesync : state hash sum optimized
* go fmt with blank in imports
* keccak read arg fix
2020-12-21 11:54:39 +01:00
Péter Szilágyi
017831dd5b
core, eth: split eth package, implement snap protocol ( #21482 )
...
This commit splits the eth package, separating the handling of eth and snap protocols. It also includes the capability to run snap sync (https://github.com/ethereum/devp2p/blob/master/caps/snap.md ) , but does not enable it by default.
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: Martin Holst Swende <martin@swende.se>
2020-12-14 10:27:15 +01:00
lzhfromustc
62dc59c2bd
miner, test: fix potential goroutine leak ( #21989 )
...
In miner/worker.go, there are two goroutine using channel w.newWorkCh: newWorkerLoop() sends to this channel, and mainLoop() receives from this channel. Only the receive operation is in a select.
However, w.exitCh may be closed by another goroutine. This is fine for the receive since receive is in select, but if the send operation is blocking, then it will block forever. This commit puts the send in a select, so it won't block even if w.exitCh is closed.
Similarly, there are two goroutines using channel errc: the parent that runs the test receives from it, and the child created at line 573 sends to it. If the parent goroutine exits too early by calling t.Fatalf() at line 614, then the child goroutine will be blocked at line 574 forever. This commit adds 1 buffer to errc. Now send will not block, and receive is not influenced because receive still needs to wait for the send.
2020-12-11 10:29:42 +01:00
Alex Prut
810f9e057d
all: remove redundant conversions and import names ( #21903 )
2020-11-25 21:00:23 +01:00
mr_franklin
c37e68e7c1
all: replace RWMutex with Mutex in places where RLock is not used ( #21622 )
2020-10-13 10:58:41 +02:00
Marius van der Wijden
19a1c95046
eth/downloader: cache parent hash instead of recomputing ( #21678 )
2020-10-09 09:09:10 +02:00
gary rong
905ed109ed
eth/downloader: fix data race around the ancientlimit ( #21681 )
...
* eth/downloader: fix data race around the ancientlimit
* eth/downloader: initialize the ancientlimit as 0
2020-10-09 09:58:30 +03:00