* eth/protocols/snap: fix problems due to idle-but-busy peers (#25651)
* eth/protocols/snap: throttle trie heal requests when peers DoS us (#25666)
* eth/protocols/snap: throttle trie heal requests when peers DoS us
* eth/protocols/snap: lower heal throttle log to debug
Co-authored-by: Martin Holst Swende <martin@swende.se>
* eth/protocols/snap: fix comment
Co-authored-by: Martin Holst Swende <martin@swende.se>
* trie: check childrens' existence concurrently for snap heal (#25694)
* eth: fix a rare datarace on CHT challenge reply / shutdown (#25831)
* eth/filters: change filter block to be by-ref (#26054)
This PR changes the block field in the filter to be a pointer, to disambiguate between empty hash and no hash
* rpc: handle wrong HTTP batch response length (#26064)
* params: release geth v1.10.26 stable
* V1.10.25 statediff v4 wip (#275)
* Statediff Geth
Handle conflicts (#244)
* Handle conflicts
* Update go mod file versions
* Make lint changes
Disassociate block number from the indexer object
Update ipld-eth-db ref
Refactor builder code to make it reusable
Use prefix comparison for account selective statediffing
Update builder unit tests
Add mode to write to CSV files in statediff file writer (#249)
* Change file writing mode to csv files
* Implement writer interface for file indexer
* Implement option for csv or sql in file mode
* Close files in CSV writer
* Add tests for CSV file mode
* Implement CSV file for watched addresses
* Separate test configs for CSV and SQL
* Refactor common code for file indexer tests
Update indexer to include block hash in receipts and logs (#256)
* Update indexer to include block hash in receipts and logs
* Upgrade ipld-eth-db image in docker-compose to run tests
Use watched addresses from direct indexing params by default while serving statediff APIs (#262)
* Use watched addresses from direct indexing params in statediff APIs by default
* Avoid using indexer object when direct indexing is off
* Add nil check before accessing watched addresses from direct indexing params
Rebase missed these changes needed at 1.10.20
Flags cleanup for CLI changes and linter complaints
Linter appeasements to achieve perfection
enforce go 1.18 for check (#267)
* enforce go 1.18 for check
* tests on 1.18 as well
* adding db yml for possible change in docker-compose behavior in yml parsing
Add indexer tests for handling non canonical blocks (#254)
* Add indexer tests for header and transactions in a non canonical block
* Add indexer tests for receipts in a non-canonical block and refactor
* Add indexer tests for logs in a non-canonical block
* Add indexer tests for state and storage nodes in a non-canonical block
* Add indexer tests for non-canonical block at another height
* Avoid passing address of a pointer
* Update refs in GitHub workflow
* Add genesis file path to stack-orchestrator config in GitHub workflow
* Add descriptive comments
fix non-deterministic ordering in unit tests
Refactor indexer tests to avoid duplicate code (#270)
* Refactor indexer tests to avoid duplicate code
* Refactor file mode indexer tests
* Fix expected db stats for sqlx after tx closure
* Refactor indexer tests for legacy block
* Refactor mainnet indexer tests
* Refactor tests for watched addressess methods
* Fix query in legacy indexer test
rebase and resolve onto 1.10.23... still error out of index related to GetLeafKeys
changed trie.Commit behavior was subtle about not not flushing to disk without an Update
* no merge nodeset throws nil
* linter appeasement
Cerc refactor (#281)
* first pass cerc refactor in cicd
* 1st attempt to publish binary to git.vdb.to from github release
* docker build step mangled
* docker build step mangled
* wrong username for docker login... which still succeeded
* circcicd is not cerccicd
* bad hostname
adding manual override of binary publish to git.vdb.to for development/emergency (#282)
Cerc io publish fix (#284)
* adding manual override of binary publish to git.vdb.to for development/emergency
* Create manual_binary_publish.yaml (#283)
* github did not pick up workflow added outside of its UI and I still cannot spell cerc right
rawdb helper functions for cold levelDB sync export
Jenkins reborn (#285)
* initial build and output testing... lots of trial and error
* clean up for working (but failing) unit test geth with ubuntu foundation image
* linter problem on comments in version
* trying linter appeasement with gofmt output on versions.go
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
Co-authored-by: Jordan Krage <jmank88@gmail.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
This enables the following linters
- typecheck
- unused
- staticcheck
- bidichk
- durationcheck
- exportloopref
- gosec
WIth a few exceptions.
- We use a deprecated protobuf in trezor. I didn't want to mess with that, since I cannot meaningfully test any changes there.
- The deprecated TypeMux is used in a few places still, so the warning for it is silenced for now.
- Using string type in context.WithValue is apparently wrong, one should use a custom type, to prevent collisions between different places in the hierarchy of callers. That should be fixed at some point, but may require some attention.
- The warnings for using weak random generator are squashed, since we use a lot of random without need for cryptographic guarantees.
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.
* eth/protocols/snap: generate storage trie from full dirty snap data
* eth/protocols/snap: get rid of some more dead code
* eth/protocols/snap: less frequent logs, also log during trie generation
* eth/protocols/snap: implement dirty account range stack-hashing
* eth/protocols/snap: don't loop on account trie generation
* eth/protocols/snap: fix account format in trie
* core, eth, ethdb: glue snap packets together, but not chunks
* eth/protocols/snap: print completion log for snap phase
* eth/protocols/snap: extended tests
* eth/protocols/snap: make testcase pass
* eth/protocols/snap: fix account stacktrie commit without defer
* ethdb: fix key counts on reset
* eth/protocols: fix typos
* eth/protocols/snap: make better use of delivered data (#44)
* eth/protocols/snap: make better use of delivered data
* squashme
* eth/protocols/snap: reduce chunking
* squashme
* eth/protocols/snap: reduce chunking further
* eth/protocols/snap: break out hash range calculations
* eth/protocols/snap: use sort.Search instead of looping
* eth/protocols/snap: prevent crash on storage response with no keys
* eth/protocols/snap: nitpicks all around
* eth/protocols/snap: clear heal need on 1-chunk storage completion
* eth/protocols/snap: fix range chunker, add tests
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
* trie: fix test API error
* eth/protocols/snap: fix some further liter issues
* eth/protocols/snap: fix accidental batch reuse
Co-authored-by: Martin Holst Swende <martin@swende.se>
* all: add thousandths separators for big numbers on log messages
* p2p/sentry: drop accidental file
* common, log: add fast number formatter
* common, eth/protocols/snap: simplifty fancy num types
* log: handle nil big ints
* remove uneeded convertion type
* remove redundant type in composite literal
* omit explicit type where implicit
* remove unused redundant parenthesis
* remove redundant import alias duktape
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>