-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Upgrade] Go-Ethereum release v1.9.19 #1143
Conversation
* cmd, core, eth, light, trie: dump clean cache periodically * eth: update config * trie: minor fix * core, trie: address comments * eth: remove useless * trie: print clean cache dump start too Co-authored-by: Péter Szilágyi <[email protected]>
* cmd, consensus, eth, les: implement light fetcher * les: address comment * les: address comment * les: address comments * les: check td after delivery * les: add linearExpiredValue for error counter * les: fix import * les: fix dead lock * les: order announces by td * les: encapsulate invalid counter * les: address comment * les: add more checks during the delivery * les: fix log * eth, les: fix lint * eth/fetcher: address comment
This reduces complexity of some lengthy functions in worker.go, making the code easier to read.
* init notes removed some mentions of eth62, bumped protocol err too old to >=63 * remove sanity checks and bump supported protocol version up to 63 * remove 62 tests, still need to add 65 * remove 65 tests
* Disable symbol table and DWARF generation by default. Trimpath if compiling with Go >= 1.13 * Set Go to minimum version 1.13. Revert debug symbol changes.
This replaces the two-stage shutdown scheme with the one we use almost everywhere else: a single quit channel signalling termination. Co-authored-by: Felix Lange <[email protected]>
core: sort txs at the same gas price by received time
Resolves #20163 Co-authored-by: Felix Lange <[email protected]>
…a ChainId (#21306) * Do not check for a non-nil ChainId * Add encoding test
This PR significantly changes the APIs for instantiating Ethereum nodes in a Go program. The new APIs are not backwards-compatible, but we feel that this is made up for by the much simpler way of registering services on node.Node. You can find more information and rationale in the design document: https://gist.github.com/renaynay/5bec2de19fde66f4d04c535fd24f0775. There is also a new feature in Node's Go API: it is now possible to register arbitrary handlers on the user-facing HTTP server. In geth, this facility is used to enable GraphQL. There is a single minor change relevant for geth users in this PR: The GraphQL API is no longer available separately from the JSON-RPC HTTP server. If you want GraphQL, you need to enable it using the ./geth --http --graphql flag combination. The --graphql.port and --graphql.addr flags are no longer available.
…padding (#21307) * Handle hex strings for bytesX types * Add tests for parseBytes * Improve tests * Return nil bytes if error is non-nil * Right-pad instead of left-pad bytes * More tests
Co-authored-by: Felix Lange <[email protected]>
* core: avoid modification of accountSet cache in tx_pool when runReorg, we may copy the dirtyAccounts' accountSet cache to promoteAddrs in which accounts will be promoted, however, if we have reset request at the same time, we may reuse promoteAddrs and modify the cache content which is against the original intention of accountSet cache. So, we need to make a new slice here to avoid modify accountSet cache. * core: fix flatten condition + comment Co-authored-by: Felix Lange <[email protected]>
This adds a lock around requests because some routers can't handle concurrent requests. Requests are also rate-limited. The Map function request a new mapping exactly when the map timeout occurs instead of 5 minutes earlier. This should prevent duplicate mappings.
* eth65 tests linted * remove non-latest eth light tests
…1414) * should fix import / export issues related to DB unavailability * document reason for makeConfigNode * fix comment * comment consistency * remove comments * lint
core/vm: avoid map lookups for accessing jumpdest analysis
* chaincmd should make config nodes instead of full nodes * add documentation for using makeConfigNode instead of makeFullNode; * add documentation to functions * code style
* cmd/utils: grant snapshot cache to trie if disabled * eth: fix up default non-mainnet cache distribution
les: update checktime even if check fails
eth/downloader: save the correct delivery time for state sync
* les: close all connected les-server when shutdown * les: linter nitpick Co-authored-by: Martin Holst Swende <[email protected]>
eth/downloader: set deliverytime on drops and timeouts too
ethstats: overwrite old errors
eth/downloader: allow all timers to exit
ethstats: split read and write lock, otherwise they'll lock up
params: update CHTs for v1.9.19
|
re-creating to generate right documentation |
TODO
Plan & Analyse
As you review, list extra changes and/or tests to be implemented to ensure compatibility with GoQuorum specific features.
Build & Test
master
into this branchExtra Changes & Tests
Go-Ethereum Release: Red Janey (v1.9.19)
Release notes
Geth v1.9.19 is our regular biweekly maintenance release. Apart from the numerous bug-fixes however, it also ships a more deterministic transaction sort order during mining (FIFO). The goal is to reduce front-runner spam which abused miner randomness for transactions at the same price level.
les/x
to use the same mechanism aseth/6x
(#20692).enode
ID of a node too when doing an ENR dump viadevp2p
(#21270).Bugfixes:
Note, if you were using GraphQL previously, it was moved to the HTTP RPC endpoint. The old
--graphql.host
and--graphql.port
flags will not work any more. You might need to adjust your TOML config files accordingly too.For a full rundown of the changes please consult the Geth 1.9.19 release milestone
As with all our previous releases, you can find the:
ethereum/client-go
.Codebase changes assessment
Legend
File Stats: (A) Added, (M) Modified and (R) Removed
Line Stats: (A) Added and (R) Removed
Assessment:
35 Pull Requests
M/A/R
(files changed)
A/R
(lines changed)
Fix posible nil exeption
cmd/clef/docs
(1)cmd/faucet
(1)signer/storage
(1)signer/storage/aes_gcm_storage.go
(12)cmd/clef/docs/setup.md
(4)cmd/faucet/faucet.html
(4)cmd, core, eth, light, trie: dump clean cache periodically
eth
(4)core
(2)cmd/geth
(2)cmd/utils
(1)core/state
(1)light
(1)trie
(1)trie/database.go
(102)eth/config.go
(56)core/blockchain.go
(46)cmd/utils/flags.go
(32)eth/gen_config.go
(24)les: implement new les fetcher
les
(10)eth/fetcher
(3)consensus/ethash
(3)les/utils
(2)consensus/clique
(2)eth
(1)cmd/geth
(1)consensus
(1)les/fetcher.go
(2410)eth/fetcher/block_fetcher_test.go
(592)les/fetcher_test.go
(536)eth/fetcher/block_fetcher.go
(412)les/utils/expiredvalue_test.go
(154)miner: refactor helper functions in worker.go
consensus/clique
(1)miner
(1)miner/worker.go
(176)consensus/clique/clique.go
(10)les: fix unittest
les
(1)les/fetcher_test.go
(16)eth/downloader: remove eth62
eth/downloader
(3)eth/downloader/downloader_test.go
(80)eth/downloader/peer.go
(42)eth/downloader/downloader.go
(8)build: use -trimpath flag when building executables
build
(1)build/ci.go
(12)core/bloombits: use single channel for shutdown
core/bloombits
(1)core/bloombits/matcher.go
(118)rawdb: fix comments to godoc convention format
core/rawdb
(1)core/rawdb/freezer.go
(8)core: sort txs at the same gas price by received time
core/types
(2)core/types/transaction.go
(110)core/types/transaction_test.go
(106)rpc: remove silly use of ReadVarint in subscription ID generator
rpc
(1)rpc/subscription.go
(18)rpc: add SetHeader method to Client
rpc
(3)rpc/client_test.go
(74)rpc/http.go
(74)rpc/client.go
(30)TypedData.EncodeData should not reject a Domain without a ChainId
signer/core
(2)signer/core/signed_data_test.go
(16)signer/core/signed_data.go
(12)node: refactor package node
cmd/geth
(6)les
(5)cmd/utils
(3)eth
(2)graphql
(2)miner
(2)core/rawdb
(1)cmd/faucet
(1)cmd/wnode
(1)internal/ethapi
(1)mobile
(1)les/checkpointoracle
(1)cmd/p2psim
(1)console
(1)ethclient
(1)ethstats
(1)ethstats/ethstats.go
(304)cmd/utils/flags.go
(228)graphql/graphql_test.go
(216)eth/backend.go
(188)miner/stress_ethash.go
(178)signer: EIP 712, parse `bytes` and `bytesX` as hex strings + correct padding
signer/core
(2)signer/core/signed_data_internal_test.go
(188)signer/core/signed_data.go
(54)cmd/devp2p: print enode:// URL in enrdump
cmd/devp2p
(1)cmd/devp2p/enrcmd.go
(38)core: avoid modification of accountSet cache in tx_pool
core
(1)core/tx_pool.go
(14)ethstats: avoid concurrent write on websocket, fixes #21403
ethstats
(1)ethstats/ethstats.go
(136)p2p/nat: limit UPNP request concurrency
p2p/nat
(2)p2p/nat/natupnp.go
(160)p2p/nat/nat.go
(18)core: use errors.Is for consensus errors check
core
(1)core/blockchain.go
(24)downloader: add eth65 tests
eth/downloader
(1)eth/downloader/downloader_test.go
(164)cmd/geth: fix import / export issues related to DB unavailability
cmd/geth
(1)cmd/geth/chaincmd.go
(12)core/vm: avoid map lookups for accessing jumpdest analysis
core/vm
(1)core/vm/contract.go
(12)cmd/geth: fixes db unavailability for chain commands
cmd/geth
(2)cmd/geth/chaincmd.go
(26)cmd/geth/config.go
(4)core: Use maxQueuedTxAnns for to limit the number of transactions announced
eth
(1)eth/peer.go
(4)cmd/utils: grant snapshot cache to trie if disabled
cmd/utils
(1)eth
(1)eth/config.go
(8)cmd/utils/flags.go
(2)les: update checktime even if check fails
les/checkpointoracle
(1)les/checkpointoracle/oracle.go
(16)eth/downloader: save the correct delivery time for state sync
eth/downloader
(1)eth/downloader/statesync.go
(38)les: close all connected les-server when shutdown
les
(3)les/peer.go
(78)les/server.go
(10)les/server_handler.go
(6)eth/downloader: set deliverytime on drops and timeouts too
eth/downloader
(1)eth/downloader/statesync.go
(6)ethstats: overwrite old errors
ethstats
(1)ethstats/ethstats.go
(10)eth/downloader: allow all timers to exit
eth/downloader
(1)eth/downloader/statesync.go
(16)ethstats: split read and write lock, otherwise they'll lock up
ethstats
(1)ethstats/ethstats.go
(64)tests: add Berlin-definition identical to YOLOv1
tests
(1)tests/init.go
(28)params: update CHTs for v1.9.19
params
(1)params/config.go
(64)120 Changed files
les/fetcher.go
node/node.go
node/node_test.go
node/rpcstack.go
node/api_test.go
eth/fetcher/block_fetcher_test.go
p2p/testing/protocoltester.go
p2p/testing/protocolsession.go
les/fetcher_test.go
#20692
ethstats/ethstats.go
#21105
#21428
#21434
eth/fetcher/block_fetcher.go
node/api.go
cmd/utils/flags.go
#20391
#21416
node/utils_test.go
node/service.go
eth/downloader/downloader_test.go
#21378
node/rpcstack_test.go
graphql/graphql_test.go
les/peer.go
#21426
node/service_test.go
signer/core/signed_data_internal_test.go
p2p/simulations/adapters/inproc.go
eth/backend.go
#20391
p2p/simulations/adapters/exec.go
miner/stress_ethash.go
miner/worker.go
miner/stress_clique.go
whisper/whisperv6/whisper_test.go
graphql/service.go
p2p/nat/natupnp.go
les/utils/expiredvalue_test.go
p2p/testing/peerpool.go
core/bloombits/matcher.go
les/client.go
#20692
les/server.go
#20692
#21426
whisper/whisperv6/whisper.go
core/types/transaction.go
core/types/transaction_test.go
trie/database.go
cmd/geth/main.go
#20391
les/utils/expiredvalue.go
p2p/simulations/adapters/types.go
node/node_example_test.go
rpc/http.go
node/doc.go
rpc/client_test.go
core/blockchain.go
#20391
signer/core/signed_data.go
#21306
params/config.go
node/lifecycle.go
consensus/clique/clique.go
#20692
consensus/consensus.go
eth/downloader/statesync.go
#21429
#21433
ethclient/ethclient_test.go
mobile/geth.go
les/client_handler.go
p2p/simulations/network_test.go
eth/config.go
#21416
les/server_handler.go
#21426
les/commons.go
whisper/mailserver/server_test.go
cmd/faucet/faucet.go
core/rawdb/freezer.go
#21105
eth/api_backend.go
les/api_test.go
whisper/whisperv6/filter_test.go
eth/downloader/peer.go
cmd/geth/chaincmd.go
#21415
#21105
node/config.go
consensus/ethash/consensus.go
cmd/devp2p/enrcmd.go
les/checkpointoracle/oracle.go
#21425
cmd/geth/retesteth.go
p2p/simulations/examples/ping-pong.go
cmd/geth/consolecmd.go
node/endpoints.go
rpc/client.go
cmd/geth/config.go
#21105
tests/init.go
cmd/utils/flags_legacy.go
p2p/simulations/network.go
eth/gen_config.go
node/errors.go
rpc/subscription.go
p2p/nat/nat.go
p2p/simulations/http_test.go
les/api_backend.go
signer/core/signed_data_test.go
console/console_test.go
core/tx_pool.go
internal/ethapi/backend.go
build/ci.go
core/vm/contract.go
core/state/database.go
cmd/geth/usage.go
#20391
signer/storage/aes_gcm_storage.go
les/clientpool.go
cmd/wnode/main.go
light/postprocess.go
eth/downloader/downloader.go
les/odr_test.go
eth/api_tracer.go
p2p/simulations/connect_test.go
cmd/geth/dao_test.go
whisper/whisperv6/api_test.go
cmd/utils/cmd.go
eth/peer.go
cmd/faucet/faucet.html
consensus/ethash/sealer.go
core/genesis.go
consensus/ethash/ethash.go
cmd/p2psim/main.go
consensus/clique/api.go
p2p/simulations/test.go
cmd/clef/docs/setup.md
params/version.go
eth/handler.go
node/defaults.go
les/test_helper.go