Skip to content
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

BlockchainTests format changed #637

Closed
MrChico opened this issue Sep 17, 2019 · 46 comments
Closed

BlockchainTests format changed #637

MrChico opened this issue Sep 17, 2019 · 46 comments
Assignees

Comments

@MrChico
Copy link
Member

MrChico commented Sep 17, 2019

With f386934 (and the corresponding deletion f11c474#diff-1a427fc3f925eef4e65fb0650dc712f7 ) the format of the transactions in BlockchainTests changed, from signed to unsigned.

Was this breaking change was intended? It has rendered both https://github.com/kframework/evm-semantics and https://github.com/dapphub/dapptools/tree/master/src/hevm incapable of running these tests.

@dvdplm
Copy link

dvdplm commented Sep 17, 2019

Parity also expect r, s, v to be present, and considers secretKey optional. See https://github.com/paritytech/parity-ethereum/blob/d311bebaeee3793dc2aa433dbe060fe4c873367f/json/src/transaction.rs#L38-L43

We can work around that particular quirk by changing the parsing code, but there seems to be other problems with the recent updates.

@dvdplm
Copy link

dvdplm commented Sep 17, 2019

Another issue is that some tests seem to have change the format of postState to be a hash (?) rather than a map, e.g. this and this. Not sure where to look for documentation on that, if it's a mistake that needs fixing or us that need to update our parsing code.

@holiman
Copy link
Contributor

holiman commented Sep 17, 2019

Another issue is that some tests seem to have change the format of postState to be a hash (?) rather than a map

👍 on that -- If poststates are too large, then it would be better to add a new field postStateHash instead of changing a map to a string. However, it seems kind of moot, since the postStateHash obivously is identical to the stateRoot of the last successfull block. E.g.

"stateRoot" : "0xd6fef701f6ca86d54a6756a69d5f69ab4ad53fd6c75b4d3134e5d0500d9ef6c2",
. So I don't really see the point in having it there... ?

If it's not there, then it's just a matter for following lastblockhash, find that block, check stateRoot.

@holiman
Copy link
Contributor

holiman commented Sep 17, 2019

Anyway, the postState for blockchain tests are moot in general, and can be ignored. They only serve to validate that the test itself is correctly generated (has expected stuff).

A client actually running the test need only verify the lastBlockhash after importing the rlp:ed blocks.

@FrankSzendzielarz
Copy link
Member

Another issue is that some tests seem to have change the format of postState to be a hash (?) rather than a map, e.g. this and this. Not sure where to look for documentation on that, if it's a mistake that needs fixing or us that need to update our parsing code.

Had the same issue in Hive. Patched by ignoring poststate. IMO this is an error in the data format that needs correcting as the tests now adhere to differing types of metadata.

@dvdplm
Copy link

dvdplm commented Sep 18, 2019

Debugging failing tests is a significant time sink so I think keeping the data format as simple as possible to parse is valuable.

@holiman
Copy link
Contributor

holiman commented Sep 18, 2019

Geth also chokes on the change:
https://travis-ci.org/ethereum/go-ethereum/jobs/586074502#L587

@winsvega
Copy link
Collaborator

You don't need to parse the transaction in blockchain tests. That field is for humans. All you do is import block rlps one by one and compare the lastblockhash.

All other fields are just supplementary. Huge post state was replaced by hash because validation/retrival of it over RPC during test generation takes way too much time

@FrankSzendzielarz
Copy link
Member

@winsvega Actually the problem is that the poststate for most tests was not replaced, resulting in an inconsistent data format. In the Blockchain tests folder only about 5 or 6 files exhibit the new format.

@winsvega
Copy link
Collaborator

For the debugging the idea is to use retesteth + new rpc method of evm trace.
Using 2 clients retesteth could detect a particular byte instruction on which clients go different paths.

@winsvega
Copy link
Collaborator

Only huge post states are affected. Smaller post states kept in the tests for debug.

@FrankSzendzielarz
Copy link
Member

Sure but now we have two incompatible data types. It's patched in Hive by ignoring poststate completely, but now we have a test suite with tests that have differing formats.

@winsvega
Copy link
Collaborator

I think the test repo needs master branch of stable consensus test format.

@FrankSzendzielarz
Copy link
Member

Ah I see. It's a Develop branch.

@winsvega
Copy link
Collaborator

So having a field with multiple allowed formats is difficult in other parsers?
Should it be deleted then?

@winsvega
Copy link
Collaborator

There is no master branch currently

@FrankSzendzielarz
Copy link
Member

Yes unmarshalling from JSON is usually automated based on some strong type, and it's not always easy to declare a field as something abstract over both string and array type. The existing unmarshaller (deserialiser) in Hive was expecting a target type of array. The fix for me was to ignore the field as it is irrelevant for Hive, but I don't know if that is always the case for others. I think yes there should be a consistent type. Perhaps add a NEW field to represent the case that the poststate is a hash, while omitting the existing array, so deserialisers can allow for the existing field to be declared as optional.

A stable master should be made available agreed.

@MrChico
Copy link
Member Author

MrChico commented Sep 18, 2019

For the debugging the idea is to use retesteth + new rpc method of evm trace.
Using 2 clients retesteth could detect a particular byte instruction on which clients go different paths.

I think clients should be able to make their own decisions in how they run these tests. RPC support should not be a prerequisite for running these tests. Indeed, hevm and KEVM do not have particularly extensive rpc support, they are only implementing an EVM.

@winsvega
Copy link
Collaborator

Well at least someone must support evm trace dump feature. The problem would be to store it. The dump is too huge for the test repo

@winsvega
Copy link
Collaborator

winsvega commented Sep 18, 2019

Also a scheme is like this

TestParserTool -rpc-> Client -lib-> EVM

And yes. Having multiple test parser tool should be safer in case one of them get a bug you could validate it with another.

@MrChico
Copy link
Member Author

MrChico commented Sep 18, 2019

According to the documentation here

It is generally expected that the test implementer will read genesisBlockHeader and pre and build the corresponding blockchain in the client. Then the new blocks, described by its RLP found in the rlp object of the blocks (RLP of a complete block, not the block header only), is read. If the client concludes that the block is valid, it should execute the block and verify the parameters given in blockHeader (block header of the new block), transactions (transaction list) and uncleHeaders (list of uncle headers). If the client concludes that the block is invalid, it should verify that no blockHeader, transactions or uncleHeaders object is present in the test. The client is expected to iterate through the list of blocks and ignore invalid blocks.

and here

clients implementing these tests are meant to verify transactions (given with r,s,v) against the RLP.

Is this no longer the case? If so, this documentation should be updated to reflect the current intent.

@winsvega
Copy link
Collaborator

This actually not required. Cause rlp already has signed transaction. You could verify the fields if you wish.

Is the issue that transactions with priv key instead of vrs got into blockchain?

@MrChico
Copy link
Member Author

MrChico commented Sep 18, 2019

That's one issue where the current head diverges from the documentation and the previous versions of this repo, yes

@dvdplm
Copy link

dvdplm commented Sep 18, 2019

At Parity we're currently blocked by the format changes to postState. Needed or not, the way we're running the tests requires postState to be a map or all tests are aborted. We can:

  1. halt work on updating the tests until this format discussion comes to a conclusion and pick back up when the dust settles
  2. refactor our code to skip invalid JSON (e.g. where postState is not a map)
  3. refactor our code to handle both hexstrings and maps

My current inclination is 1), but Istanbul is coming and it'd be annoying to be stuck with old tests and no clear path to upgrade.

So, @winsvega, it'd be fantastic get clarity on what the plan is here. Are you planning on reverting the format change wrt postState or is what we see today the way it's going to be?

@winsvega
Copy link
Collaborator

The huge post state could not be generated via rpc. So options are

  1. support both hex and jsobject for the post state field
  2. make the field optional and do not place the field if state is too huge
    2.a) add explicit field when post state is not present. Such as poststatehash.

@winsvega
Copy link
Collaborator

The workplan:

Make master branch for tests repo
Update private key transactions to vrs if such transaction only produced by retesteth
Come to consensus on huge post states in bc tests

@dvdplm
Copy link

dvdplm commented Sep 19, 2019

Come to consensus on huge post states in bc tests

For my part I don't have a strong opinion but I do think we should pick a path forward asap. A slight preference for 1, "support both hex and jsobject for the post state field".

Make master branch for tests repo

Just to make sure I understand you correctly: the purpose of this is to have a "stable" branch where breaking changes occur only after due process (whatever that ends up being)?

@winsvega
Copy link
Collaborator

winsvega commented Sep 19, 2019

@dvdplm @FrankSzendzielarz

select the option: (I am up for 2/3)

  1. remove postState if its huge replace with postStateHash
  2. put hash into postState if state is too huge (current version)
  3. put hash into postState like this postState: { "hash" : "0x0123abc..." } instead of full state map. for a huge state

master branch for releases, yes.

@MrChico
the tests would be updated not to have private key field in transaction in blockchain tests created by retesteth

@holiman
Copy link
Contributor

holiman commented Sep 19, 2019

I am in favour of option 1.
I don't particularly like option 3, since currently geth expcets the key-value in postState to be a map, so putting non-hex 'hash' in there complicates things.

Why not use option 1? Instead of changing anything (aside from dropping postState in some tests), just introduce a new field.

EDIT: note, though, that as I've expressed before, I don't really see any reason to actually have postStateHash, since it will always be the stateRoot of the block with lastBlockHash, so we could just skip that IMO

@winsvega
Copy link
Collaborator

A new field would be for debug. So you don't have to look manually and seek for state root in corresponding block.

Didn't get what geth expects and why putting json object with hash is not an option

@winsvega
Copy link
Collaborator

check out the tests in #639

@dvdplm
Copy link

dvdplm commented Sep 21, 2019

check out the tests in #639

It is not easy to review PRs that large. Can you perhaps provide a description of what the relevant changes are on the PR with pointers to help reviewers?

holiman added a commit to holiman/go-ethereum that referenced this issue Sep 21, 2019
@holiman
Copy link
Contributor

holiman commented Sep 21, 2019

Ok, I updated the PR for geth: ethereum/go-ethereum#20082 -- let's see how Travis feels about the tests

@winsvega
Copy link
Collaborator

winsvega commented Sep 21, 2019

by check out I mean run your client against tests on that branch.
the GeneralStateTests

@holiman
Copy link
Contributor

holiman commented Sep 21, 2019 via email

@winsvega
Copy link
Collaborator

hm?
well theoretically I can configure the geth + retesteth to be built by travis and check the tests. however since I do this manually I dont relly need this )

however other client test tools sometimes report issues. for example this blockchain format change I was not aware of.

@holiman
Copy link
Contributor

holiman commented Sep 23, 2019

Still getting errors:

--- FAIL: TestBlockchain (0.33s)

    --- FAIL: TestBlockchain/GeneralStateTests/stRecursiveCreate/recursiveCreateReturnValue.json (0.00s)

        init_test.go:243: json: cannot unmarshal string into Go struct field btJSON.postState of type map[common.UnprefixedAddress]core.GenesisAccount in file testdata/BlockchainTests/GeneralStateTests/stRecursiveCreate/recursiveCreateReturnValue.json

    --- FAIL: TestBlockchain/GeneralStateTests/stQuadraticComplexityTest/Create1000Byzantium.json (0.00s)

        init_test.go:243: json: cannot unmarshal string into Go struct field btJSON.postState of type map[common.UnprefixedAddress]core.GenesisAccount in file testdata/BlockchainTests/GeneralStateTests/stQuadraticComplexityTest/Create1000Byzantium.json

    --- FAIL: TestBlockchain/GeneralStateTests/stQuadraticComplexityTest/Create1000.json (0.00s)

        init_test.go:243: json: cannot unmarshal string into Go struct field btJSON.postState of type map[common.UnprefixedAddress]core.GenesisAccount in file testdata/BlockchainTests/GeneralStateTests/stQuadraticComplexityTest/Create1000.json

    --- FAIL: TestBlockchain/GeneralStateTests/stCreate2/Create2Recursive.json (0.00s)

        init_test.go:243: json: cannot unmarshal string into Go struct field btJSON.postState of type map[common.UnprefixedAddress]core.GenesisAccount in file testdata/BlockchainTests/GeneralStateTests/stCreate2/Create2Recursive.json

@MrChico
Copy link
Member Author

MrChico commented Sep 23, 2019

Didn't get what geth expects and why putting json object with hash is not an option

I believe geth expects a map of addresses in postState, not a string. If we are doing a hash of the poststate it should be in a field with a different name, like option 1) above

@voith
Copy link

voith commented Sep 23, 2019

Since the format for postState is not the same in all tests, I had to make the following change in py-evm: https://github.com/ethereum/py-evm/pull/1852/files#diff-c612162bc50e8ecd75eec2251fa6ae5dR378-R381.
Will this issue be fixed?

@winsvega
Copy link
Collaborator

winsvega commented Sep 23, 2019

So about postState a solution:

  1. if postState exist, it contains account map (as it wad always)
  2. if it doesn't exist the postStateHash field must be defined instead with the hash of a huge state (json string) (account map is to huge to print to the test case)

Agreed?

@holiman
Copy link
Contributor

holiman commented Sep 23, 2019

@MrChico yes, exactly. As Frank put it:

unmarshalling from JSON is usually automated based on some strong type, and it's not always easy to declare a field as something abstract over both string and array type.

@holiman
Copy link
Contributor

holiman commented Sep 23, 2019

  1. if postState exist, it contains account map.
  2. if it doesn't exist the postStateHash field must be defined instead with the hash of a huge state (json string) (account map is to huge to print to the test)

Yes, works for me. Although I don't care about bullet 2, we will just ignore it, but that's fine too

@FrankSzendzielarz
Copy link
Member

As an aside, we could also consider some kind of open standard metadata format and version the tests, in order to avoid such problems in future and perhaps help with onboarding. Right now I think the test metadata is implicit?

For example, we could define a GetTests OpenAPI method that could be used against Swagger codegen to generate the test objects in the language of preferred choice, and maintain versioned test metadata that way.

@holiman
Copy link
Contributor

holiman commented Sep 25, 2019

@winsvega are you going to fix this or are we going to have to work around it ?

@winsvega
Copy link
Collaborator

Going to fix. BCGeneralStateTests already fixed.

@winsvega
Copy link
Collaborator

BlockchainTests fixed.

karalabe pushed a commit to ethereum/go-ethereum that referenced this issue Oct 2, 2019
* update tests for istanbul

* tests: updated blockchaintests, see ethereum/tests#637

* tests: update again, hopefully fixed this time

* tests: skip time consuming, run legacy tests

* tests: update again

* build: disable long-running tests on travis

* tests: fix formatting nits

* tests: I hate github's editor
@winsvega winsvega closed this as completed Oct 6, 2019
elizabethengelman pushed a commit to makerdao/go-ethereum that referenced this issue Dec 20, 2019
* update tests for istanbul

* tests: updated blockchaintests, see ethereum/tests#637

* tests: update again, hopefully fixed this time

* tests: skip time consuming, run legacy tests

* tests: update again

* build: disable long-running tests on travis

* tests: fix formatting nits

* tests: I hate github's editor
screwyprof added a commit to autonity/autonity that referenced this issue Jan 22, 2020
* tests: expose internal RunNoVerify method (#20051)

* all: make unit tests work with Go 1.13 (#20053)

Most of these changes are related to the Go 1.13 changes to test binary
flag handling. 

* cmd/geth: make attach tests more reliable

This makes the test wait for the endpoint to come up by polling
it instead of waiting for two seconds.

* tests: fix test binary flags for Go 1.13

Calling flag.Parse during package initialization is prohibited
as of Go 1.13 and causes test failures. Call it in TestMain instead.

* crypto/ecies: remove useless -dump flag in tests

* p2p/simulations: fix test binary flags for Go 1.13

Calling flag.Parse during package initialization is prohibited
as of Go 1.13 and causes test failures. Call it in TestMain instead.

* build: remove workaround for ./... vendor matching

This workaround was necessary for Go 1.8. The Go 1.9 release changed
the expansion rules to exclude vendored packages.

* Makefile: use relative path for GOBIN

This makes the "Run ./build/bin/..." line look nicer.

* les: fix test binary flags for Go 1.13

Calling flag.Parse during package initialization is prohibited
as of Go 1.13 and causes test failures. Call it in TestMain instead.

* travis, Dockerfile, appveyor: bump to Go 1.13

* build: switch PPA from Gophers dep to manual download

* Revert "build: switch PPA from Gophers dep to manual download" (#20061)

* core: remove unused gas return in ApplyTransaction (#20065)

* rlp: improve nil pointer handling (#20064)

* rlp: improve nil pointer handling

In both encoder and decoder, the rules for encoding nil pointers were a
bit hard to understand, and didn't leave much choice. Since RLP allows
two empty values (empty list, empty string), any protocol built on RLP
must choose either of these values to represent the null value in a
certain context.

This change adds choice in the form of two new struct tags, "nilString"
and "nilList". These can be used to specify how a nil pointer value is
encoded. The "nil" tag still exists, but its implementation is now
explicit and defines exactly how nil pointers are handled in a single
place.

Another important change in this commit is how nil pointers and the
Encoder interface interact. The EncodeRLP method was previously called
even on nil values, which was supposed to give users a choice of how
their value would be handled when nil. It turns out this is a stupid
idea. If you create a network protocol containing an object defined in
another package, it's better to be able to say that the object should be
a list or string when nil in the definition of the protocol message
rather than defining the encoding of nil on the object itself.

As of this commit, the encoding rules for pointers now take precedence
over the Encoder interface rule. I think the "nil" tag will work fine
for most cases. For special kinds of objects which are a struct in Go
but strings in RLP, code using the object can specify the desired
encoding of nil using the "nilString" and "nilList" tags.

* rlp: propagate struct field type errors

If a struct contained fields of undecodable type, the encoder and
decoder would panic instead of returning an error. Fix this by
propagating type errors in makeStruct{Writer,Decoder} and add a test.

* cmd/evm: make evm default to all ethash protocol changes

* core/state: accumulate writes and only update tries when must

* core: add blockchain test too for revert cornercase

* common/mclock: clean up AfterFunc support (#20054)

This change adds tests for the virtual clock and aligns the interface
with the time package by renaming Cancel to Stop. It also removes the
binary search from Stop because it complicates the code unnecessarily.

* core: smaller txpool status locking (#20080)

* txpool: smaller lock portion

* core/tx_pool: fix data race

* core: dedup known transactions without global lock, track metrics

* les: multiple server bugfixes (#20079)

* les: detailed relative cost metrics

* les: filter txpool relative request statistic

* les: initialize price factors

* les: increased connected bias to lower churn rate

* les: fixed clientPool.setLimits

* core: do not use mutex in GetAncestor

* les: bump factor db version again

* les: add metrics

* les, light: minor fixes

* core: fix tx dedup return error count

* params: activate Istanbul on Ropsten and Görli

* params: bump CHTs for the 1.9.4 release

* core/forkid, params: fix tests, enable Istanbul on Rinkeby + testers

* vendor: pull in USB Windows fixes

* params: release Geth v1.9.4 stable

* params: start v1.9.5 release cycle

* params: remove legacy bootnodes

* core/state: fix state object deep copy (#20100)

deepCopy didn't copy pending storage updates, leading to the
creation of blocks with invalid state root.

* params: release Geth v1.9.5 stable

* params: start v1.9.6 release cycle

* core/state: fix copy-commit-copy (#20113)

* core/state: revert noop finalise, fix copy-commit-copy

* core/state: reintroduce net sstore tracking, extend tests for it

* dashboard: log host+port

* les: fix checkpoint sync (#20120)

* p2p/dnsdisc: add implementation of EIP-1459 (#20094)

This adds an implementation of node discovery via DNS TXT records to the
go-ethereum library. The implementation doesn't match EIP-1459 exactly,
the main difference being that this implementation uses separate merkle
trees for tree links and ENRs. The EIP will be updated to match p2p/dnsdisc.

To maintain DNS trees, cmd/devp2p provides a frontend for the p2p/dnsdisc
library. The new 'dns' subcommands can be used to create, sign and deploy DNS
discovery trees.

* tests/solidity: add contract to test every opcode (#19283)

Fixes #18210

* internal/ethapi: support block number or hash on state-related methods (#19491)

This change adds support for EIP-1898.

* core/blockchain: remove block from futureBlocks on error (#19763)

* core/state: fix database leak and copy tests (#19306)

* core: initialize current block/fastblock atomics to nil, fix #19286 (#19352)

* ethdb/leveldb: disable seek compaction (#20130)

* vendor: update leveldb

* ethdb/leveldb: disable seek compaction and add metrics

* vendor: udpate latest levledb

* ethdb/leveldb: fix typo

* p2p: measure subprotocol bandwidth usage

* github: Added capital P (#20139)

* tests: update test suite for istanbul (#20082)

* update tests for istanbul

* tests: updated blockchaintests, see ethereum/tests#637

* tests: update again, hopefully fixed this time

* tests: skip time consuming, run legacy tests

* tests: update again

* build: disable long-running tests on travis

* tests: fix formatting nits

* tests: I hate github's editor

* cmd/bootnode: fix exit behavior with -genkey (#20110)

* les: add empty "les" ENR entry for servers (#20145)

* params: release Geth v1.9.6 stable

* params: begin v1.9.7 release cycle

* cmd/utils: fix command line flag resolve (#20167)

In Geth, we have two sources for configuration:
(1) Config file
(2) Command line flag

Basically geth will first resolve config file and then overwrite
configs with command line flags.

This issue is: geth should only overwrite configs if flags are truly
set. So before we apply any flag to configs, `GlobalIsSet` check
is necessary.

* params: check fork ordering when initializing new genesis, fixes #20136 (#20169)

prevent users from misconfiguring their nodes so that fork ordering is not preserved.

* p2p/dnsdisc: update to latest EIP-1459 spec (#20168)

This updates the DNS TXT record format to the latest
changes in ethereum/EIPs#2313.

* p2p/simulations: add node properties support and utility functions (#20060)

* README: use new miner threads flag instead of legacy minerthreads flag (#20165)

* Changed http:// to https:// on links in log/README.md (#20178)

docs: change http to https on links in log/README.md

* dashboard: change links in README to https (#20181)

Changed http:// to https:// on links in dashboard/README.md

* metrics: change links in README.md to https (#20182)

* miner: add generate and import unit test (#20111)

This PR adds a new unit test in miner package which will create some blocks from miner and then import into another chain. In this way, we can ensure all blocks generated by Geth miner obey consensus rules.

* accounts/abi/bind: take into account gas price during gas estimation (#20189)

The gas price was not passed to the `EstimateGas` function. As a result,
conditional execution paths depending on `tx.gasprice` could be not
correctly processed and we could get invalid gas estimates for contract
function calls.

* clef: resolve windows pipes, fixes #20121 (#20166)

* consensus: fix possessives in comments. (#20209)

* cmd/evm: remove surrounding whitespace in hex input code (#20211)

This way, the output of `evm compile` can be used directly in `evm
--codefile code.txt run`, without stripping the trailing newline first.

* trie: remove node ordering slice in sync batch (#19929)

When we flush a batch of trie nodes into database during the state
sync, we should guarantee that all children should be flushed before
parent.

Actually the trie nodes commit order is strict by: children -> parent.
But when we flush all ready nodes into db, we don't need the order
anymore since

    (1) they are all ready nodes (no more dependency)
    (2) underlying database provides write atomicity

* core/asm: assembly parser label fixes (#20210)

* core/asm: Fix encoding of pushed labels

EVM uses big-endian byte-order, so to pad a label value to 4 bytes,
zeros must be added to the front, not the end.

* core/asm: Fix PC calculations when a label is pushed

Incrementing PC by 5 is only correct if the label appears after a jump,
in which case there is an implicit push. When it appears after an explicit
push, PC should only be incremented by 4.

* core/asm: Allow JUMP with no argument

This way, a label can be pushed explicitly, or loaded from memory to
implement a jump table.

* eth/downloader: fix data race in downloader

* cmd/devp2p, p2p: dial using node iterator, discovery crawler (#20132)

* p2p/enode: add Iterator and associated utilities

* p2p/discover: add RandomNodes iterator

* p2p: dial using iterator

* cmd/devp2p: add discv4 crawler

* cmd/devp2p: WIP nodeset filter

* cmd/devp2p: fixup lesFilter

* core/forkid: add NewStaticFilter

* cmd/devp2p: make -eth-network filter actually work

* cmd/devp2p: improve crawl timestamp handling

* cmd/devp2p: fix typo

* p2p/enode: fix comment typos

* p2p/discover: fix comment typos

* p2p/discover: rename lookup.next to 'advance'

* p2p: lower discovery mixer timeout

* p2p/enode: implement dynamic FairMix timeouts

* cmd/devp2p: add ropsten support in -eth-network filter

* cmd/devp2p: tweak crawler log message

* eth: eth/64 - extend handshake packet with fork id

* core/forkid: add two clauses for more precise validation (#20220)

* miner: increase import time allowance (#20217)

Fix the block import unit test which can time out sometimes.

* cmd/devp2p, core/forkid: make forkid.Filter API uniform

* params, core/forkid: configure mainnet istanbul block 9069K (#20222)

* params: configure mainnet istanbul block 9069K

* core/forkid: add some more test items for mainnet istanbul

* accounts/abi: add internalType information and fix issues (#20179)

* accounts/abi: fix various issues

The fixed issues include:

(1) If there is no return in a call function, unpack should
return nil error

(2) For some functions which have struct array as parameter,
it will also be detected and generate the struct definition

(3) For event, if it has non-indexed parameter, the parameter
name will also be assigned if empty. Also the internal struct
will be detected and generate struct defition if not exist.

(4) Fix annotation generation in event function

* accounts/abi: add new abi field internalType

* accounts: address comments and add tests

* accounts/abi: replace strings.ReplaceAll with strings.Replace

* appveyor: bump to Go 1.13.4

* les: rework clientpool (#20077)

* les: rework clientpool

* cmd/puppeth: integrate istanbul into puppeth (#19926)

* cmd/puppeth: integrate istanbul into puppeth

* cmd/puppeth: address comment

* cmd/puppeth: use hexutil.Big for fork indicator

* cmd/puppeth: finalize istanbul fork

* cmd/puppeth: fix 2200 for parity, rename is to eip1283ReenableTransition

* cmd/puppeth: fix eip1108

* cmd/puppeth: add blake2f for parity

* cmd/puppeth: add aleth istanbul precompiled

* cmd/puppeth: use hexutil.Big

* cmd/puppeth: fix unit tests

* cmd/puppeth: update testdata

* core/evm: avoid copying memory for input in calls (#20177)

* core/evm, contracts: avoid copying memory for input in calls + make ecrecover not modify input buffer

* core/vm: optimize mstore a bit

* core/vm: change Get -> GetCopy in vm memory access

* travis, build, internal: use own Go bundle for PPA builds (#20240)

* build: bump PPAs to Go 1.13 (via longsleep), keep Trusty on 1.11

* travis, build, vendor: use own Go bundle for PPA builds

* travis, build, internal, vendor: smarter Go bundler, own untar

* build: updated ci-notes with new Go bundling, only make, don't test

* travis: bump linter to Go 1.13.x

* params: hard-code new CHTs for the 1.9.7 release

* les: fix and slim the unit tests of les (#20247)

* les: loose restriction of unit tests

* les: update unit tests

* les, light: slim the unit tests

* params: release Geth v1.9.7

* params: begin v1.9.8 release cycle

* p2p/enode: mock DNS resolver in URL parsing test (#20252)

* travis: enable test suite on ARM64 (#20219)

* travis: Enable ARM support

* Include fixes from 20039

* Add a trace to debug the invalid lookup issue

* Try increasing the timeout to see if the arm test passes

* Investigate the resolver issue

* Increase arm64 timeout for clique test

* increase timeout in tests for arm64

* Only test the failing tests

* Review feedback: don't export epsilon

* Remove investigation tricks+include fjl's feeback

* Revert the retry ahead of using the mock resolver

* Fix rebase errors

* p2p: fix bug in TestPeerDisconnect (#20277)

*  dashboard: send current block to the dashboard client (#19762)

This adds all dashboard changes from the last couple months.
We're about to remove the dashboard, but decided that we should
get all the recent work in first in case anyone wants to pick up this
project later on.

* cmd, dashboard, eth, p2p: send peer info to the dashboard
* dashboard: update npm packages, improve UI, rebase
* dashboard, p2p: remove println, change doc
* cmd, dashboard, eth, p2p: cleanup after review
* dashboard: send current block to the dashboard client

*  miner: increase worker test timeout (#20268)

TestEmptyWork* occasionally fails due to timeout. Increase the timeout.

* les: implement server priority API (#20070)

This PR implements the LES server RPC API. Methods for server
capacity, client balance and client priority management are provided.

* accounts/abi/bind, cmd/abigen: implement alias for abigen (#20244)

* accounts/abi/bind, cmd/abigen: implement alias for abigen

* accounts/abi/bind: minor fixes

* accounts/abi/bind: address comments

* cmd/abigen: address comments

* accounts/abi/bind: print error log when identifier collision

* accounts/abi/bind: address comments

* accounts/abi/bind: address comment

* rpc: fix typo example code (#20284)

* cmd/faucet: use github.com/gorilla/websocket (#20283)

golang.org/x/net/websocket is unmaintained, and we have already
switched to using github.com/gorilla/websocket for package rpc.

* dashboard: remove the dashboard (#20279)

This removes the dashboard project. The dashboard was an experimental
browser UI for geth which displayed metrics and chain information in
real time. We are removing it because it has marginal utility and nobody
on the team can maintain it.

Removing the dashboard removes a lot of dependency code and shaves
6 MB off the geth binary size.

* whisper/whisperv6: fix staticcheck issues (#20288)

* build: gather info to investigate why builds fail on ARM (#20281)

* params: finish sentence in comment (#20291)

* core/vm: fix tracer interface parameter name (#20294)

* internal/ethapi: don't query wallets at every execution of gas estimation

* cmd/evm: Allow loading input from file (#20273)

Make it possible to load input from a file. Simlar to `--code` / `--codefile`, have `--input`/`--inputfile`.

* rpc, p2p/simulations: use github.com/gorilla/websocket (#20289)

* rpc: improve codec abstraction

rpc.ServerCodec is an opaque interface. There was only one way to get a
codec using existing APIs: rpc.NewJSONCodec. This change exports
newCodec (as NewFuncCodec) and NewJSONCodec (as NewCodec). It also makes
all codec methods non-public to avoid showing internals in godoc.

While here, remove codec options in tests because they are not
supported anymore.

* p2p/simulations: use github.com/gorilla/websocket

This package was the last remaining user of golang.org/x/net/websocket.
Migrating to the new library wasn't straightforward because it is no
longer possible to treat WebSocket connections as a net.Conn.

* vendor: delete golang.org/x/net/websocket

* rpc: fix godoc comments and run gofmt

* build: use golangci-lint (#20295)

* build: use golangci-lint

This changes build/ci.go to download and run golangci-lint instead
of gometalinter.

* core/state: fix unnecessary conversion

* p2p/simulations: fix lock copying (found by go vet)

* signer/core: fix unnecessary conversions

* crypto/ecies: remove unused function cmpPublic

* core/rawdb: remove unused function print

* core/state: remove unused function xTestFuzzCutter

* core/vm: disable TestWriteExpectedValues in a different way

* core/forkid: remove unused function checksum

* les: remove unused type proofsData

* cmd/utils: remove unused functions prefixedNames, prefixFor

* crypto/bn256: run goimports

* p2p/nat: fix goimports lint issue

* cmd/clef: avoid using unkeyed struct fields

* les: cancel context in testRequest

* rlp: delete unreachable code

* core: gofmt

* internal/build: simplify DownloadFile for Go 1.11 compatibility

* build: remove go test --short flag

* .travis.yml: disable build cache

* whisper/whisperv6: fix ineffectual assignment in TestWhisperIdentityManagement

* .golangci.yml: enable goconst and ineffassign linters

* build: print message when there are no lint issues

* internal/build: refactor download a bit

* travis: remove traces and use travis_wait in ARM build (#20296)

* travis: remove debug traces

* travis: Add travis_wait to the test run

* travis: increase travis_wait time

* core: s/isEIP155/isHomestead/g (fix IntrinsicGas signature var name) (#20300)

* core: s/isEIP155/isEIP2/ (fix)

This signature variable name reflects a spec'd change
in gas cost for creating contracts as documented in EIP2 (Homestead HF).

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.md#specification

* core: s/isEIP2/sIsHomestead/g

Use isHomestead since Homestead is what the caller
and rest of the code uses.

* les: rename UpdateBalance to AddBalance and simplify return format (#20304)

* travis: use travis_wait for both install and build (#20309)

* build: add test cmd flag -v for verbose logs (#20298)

Adds flags akin to -coverage flag enabling the test runner
to use go test's -v flag, signaling verbose test log output.

* cmd/clef: fix staticcheck warnings (#20314)

* consensus/clique: add clique_status API method (#20103)

This PR introduces clique_status which gives info about the health of
the clique network.

It's currently a bit PITA to find out how a clique network is
performing, and it can easily happen that sealers drop off -- and
everything is 'fine' until one more signer drops off, and the network
suddenly halts.

The new method provides the following stats:

- Which signers are currently active, and have signed blocks in the last
  N (set to 64) blocks?
- How many blocks has each signer signed?
- What is the difficulty in the last N blocks, compared to the
  theoretical maximum?

* consensus/clique: fix struct tags for status API (#20316)

Also unexport the status struct.

* cmd/ethkey: fix file permissions in changepassword command (#20313)

Found by staticcheck.

* p2p/netutil: fix staticcheck warning (#20315)

* core/rawdb: check hash before return data from ancient db (#20195)

* core/rawdb: check hash before return data from ancient db

* core/rawdb: fix lint

* core/rawdb: calculate the hash in the fly

* travis: deactivate arm build during push (#20321)

* ethclient: remove use of common.ToHex (#20326)

* cmd/wnode: remove uses of common.ToHex (#20327)

* event: remove unused field 'closed' (#20324)

* .github: remove 'nonsense' from CODEOWNERS (#20329)

* whisper/whisperv6: fix staticcheck warnings (#20328)

* p2p: remove unused code (#20325)

* p2p/simulations: fix staticcheck warnings (#20322)

* internal/web3ext, les: update clique JS and make it work with the light client (#20318)

Also fix the input formatter on clique_getSnapshot and clique_getSigners
so that integers as well as hex number strings are accepted.

* rpc: remove 'exported or builtin' restriction for parameters (#20332)

* rpc: remove 'exported or builtin' restriction for parameters

There is no technial reason for this restriction because package reflect
can create values of any type. Requiring parameters and return values to
be exported causes a lot of noise in package exports.

* rpc: fix staticcheck warnings

* core: fix staticcheck warnings (#20323)

* miner: fix data race in tests (#20310)

* miner: fix data race in tests

miner: fix linter

* miner: address comment

* cmd/puppeth: update chain spec of parity (#20241)

* go.mod, vendor: switch to Go modules

* travis: explicitly enable go modules in Go 1.11 and 1.12

* accounts/abi/bind: switch binding test to go modules

* travis, build: aggregate and upload go mod dependencies for PPA

* go.mod: tidy up the modules to avoid xgo writes to go.sum

* build, internal/build: drop own file/folder copier

* travis: fake build ppa only for go module dependencies

* mobile: fix CopyFile switch to package cp

* tests: refactor TestState to dedupe walk callback

Minor refactoring.

* build, travis: use ephemeral debsrc GOPATH to get mod deps

* tests: enable TransactionTests Istanbul case (#20337)

* cmd/puppeth: x-spec nonce data type, use types.BlockNonce

Refactors to use existing BlockNonce type instead of
hand-rolled bytes logic.

* cmd/puppeth: make ssh prompt more user-friendly

* common/hexutil: improve GraphQL error messages (#20353)

* build: pull in ci.go dependencies for the PPA builder

* common: improve GraphQL error messages (#20354)

* core/types: remove BlockBy sorting code (#20355)

* build: skip go clean on PPA, messes with the module trick

* accounts/abi/bind/backends: remove unused assignment (#20359)

* accounts/abi: fix staticcheck warnings (#20358)

* accounts/abi: fix staticcheck warnings

* accounts/abi: restore unused field for test

* core/state: fix staticcheck warnings (#20357)

Also remove dependency on gopkg.in/check.v1 in tests.

* metrics: fix issues reported by staticcheck (#20365)

* trie: remove unused code (#20366)

* p2p/discv5: add deprecation warning and remove unused code (#20367)

* p2p/discv5: add deprecation warning and remove unused code

* p2p/discv5: remove unused variables

* tests, signer: remove staticcheck warnings (#20364)

* core/asm: allow numbers in labels (#20362)

Numbers were already allowed when creating labels, just not when
referencing them.

* miner: fix staticcheck warnings (#20375)

* eth/tracers: fix staticcheck warnings (#20379)

* trie: replace bigcache with fastcache (#19971)

* cmd/geth: remove network id from version cmd

It was reflective only of the Default setting,
and not chain aware.

* rlp: fix staticcheck warnings (#20368)

* rlp: fix staticcheck warnings

* rlp: fix ExampleDecode test

* accounts/abi/bind: avoid reclaring structs (#20381)

* accounts/keystore: fix staticcheck warnings (#20373)

* accounts/keystore: fix staticcheck warnings

* review feedback

* p2p/discover: slow down lookups on empty table (#20389)

* p2p/discover: slow down lookups on empty table

* p2p/discover: wake from slowdown sleep when table is closed

* les: fix clientInfo deadlock (#20395)

* params: release go-ethereum v1.9.8

* params: begin v1.9.9 release cycle

* cmd: fix command help messages in modules (#20203)

* les: fix staticcheck warnings (#20371)

* core: fix staticcheck warnings (#20384)

* core: fix staticcheck warnings

* fix goimports

* core/rawdb: fix reinit regression caused by the hash check PR

* deps: update fastcache to 1.5.3

* consensus/ethash: refactor remote sealer (#20335)

The original idea behind this change was to remove a use of the
deprecated CancelRequest method. Simply removing it would've been an
option, but I couldn't resist and did a bit of a refactoring instead.

All remote sealing code was contained in a single giant function. Remote
sealing is now extracted into its own object, remoteSealer.

* log: fix staticcheck warnings (#20388)

* trie: remove dead code (#20405)

* cmd/faucet, cmd/geth: fix staticcheck warnings (#20374)

* internal: fix staticcheck warnings (#20380)

* accounts/scwallet: fix staticcheck warnings (#20370)

* internal/web3ext: add debug_accountRange (#20410)

* accounts/usbwallet: fix staticcheck warnings (#20372)

* core, miner: remove PostChainEvents (#19396)

This change:

- removes the PostChainEvents method on core.BlockChain.
- sorts 'removed log' events by block number.
- fire the NewChainHead event if we inject a canonical block into the chain
  even if the entire insertion is not successful.
- guarantees correct event ordering in all cases.

* accounts/abi/bind: fix destructive packing of *big.Int (#20412)

* trie: track dirty cache metrics, track clean writes on commit

* params: update CHTs for v1.9.9 release

* p2p/enode: remove data race in sliceIter (#20421)

* consensus/ethash, params: eip-2384: bump difficulty bomb (#20347)

* consensus/ethash, params: implement eip-2384: bump difficulty bomb

* params: EIP 2384 compat checks

* consensus, params: add Muir Glacier block number (mainnet,ropsten) + official name

* core/forkid: forkid tests for muir glacier

* params/config: address review concerns

* params, core/forkid: review nitpicks

* cmd/geth,eth,les: add override option for muir glacier

* params: nit fix

* params: release Geth v1.9.9

* params: begin v1.9.10 release cycle

* miner: add dependency for stress tests (#20436)

1.to build stress tests

Depends-On: 6269e55

* tests/fuzzers: fuzzbuzz fuzzers for keystore, rlp, trie, whisper  (#19910)

* fuzzers: fuzzers for keystore, rlp, trie, whisper (cred to @guidovranken)

* fuzzers: move fuzzers to testdata

* testdata/fuzzers: documentation

* testdata/fuzzers: corpus for rlp

* tests/fuzzers: fixup

* core: removed old invalid comment

* eth/filters: remove use of event.TypeMux for pending logs (#20312)

* p2p/dnsdisc: add enode.Iterator API (#20437)

* p2p/dnsdisc: add support for enode.Iterator

This changes the dnsdisc.Client API to support the enode.Iterator
interface.

* p2p/dnsdisc: rate-limit DNS requests

* p2p/dnsdisc: preserve linked trees across root updates

This improves the way links are handled when the link root changes.
Previously, sync would simply remove all links from the current tree and
garbage-collect all unreachable trees before syncing the new list of
links.

This behavior isn't great in certain cases: Consider a structure where
trees A, B, and C reference each other and D links to A. If D's link
root changed, the sync code would first remove trees A, B and C, only to
re-sync them later when the link to A was found again.

The fix for this problem is to track the current set of links in each
clientTree and removing old links only AFTER all links are synced.

* p2p/dnsdisc: deflake iterator test

* cmd/devp2p: adapt dnsClient to new p2p/dnsdisc API

* p2p/dnsdisc: tiny comment fix

* cmd/devp2p: implement AWS Route53 enrtree deployer (#20446)

* cmd/abigen: Sanitize vyper's combined json names (#20419)

* cmd/abigen: Sanitize vyper's combined json names

* Review feedback: handle full paths

* eth, internal/web3ext: add optional first and last arguments to the  `admin_exportChain` RPC. (#20107)

* cmd/evm: Add --bench flag for benchmarking (#20330)

The --bench flag uses the testing.B to execute the EVM bytecode many times and get the average exeuction time out of it.

* [#20266] Fix bugs decoding integers and fixed bytes in indexed event fields (#20269)

* fix parseTopics() and add tests

* remove printf

* add ParseTopicsIntoMap() tests

* fix FixedBytesTy

* fix int and fixed bytes

* golint topics_test.go

* accounts/abi/backends/simulated: add more API methods (#5) (#20208)

* Add more functionality to the sim (#5)

* backends: implement more of ethclient in sim

* backends: add BlockByNumber to simulated backend

* backends: make simulated progress function agree with syncprogress interface for client

* backends: add more tests

* backends: add more comments

* backends: fix sim for index in tx and add tests

* backends: add lock back to estimategas

* backends: goimports

* backends: go ci lint

* Add more functionality to the sim (#5)

* backends: implement more of ethclient in sim

* backends: add BlockByNumber to simulated backend

* backends: make simulated progress function agree with syncprogress interface for client

* backends: add more tests

* backends: add more comments

* backends: fix sim for index in tx and add tests

* backends: add lock back to estimategas

* backends: goimports

* backends: go ci lint

* assert errs

* Change file extension of the ./tests/fuzzers README (#20474)

* les: do not disconnect another server (#20453)

* fix aftermerge conflicts

* Fix travis config

* Fix les

* fix p2p

* fix eth/miner tests

* fix core blockchain_test.go

* fix eth tests

* fix Makefile

* gofmt

* fix LES data races

* we care only about master

* fix les

* fix blockchain

* fix code coverage

* fix blockchain

* fix after merge glitches

* temporary ignore some go-routine leaks (fix in another ticket)

* PoC

* remove istambul

* fix

* fix hardcoded hashes

* fix genesis test

* check actual td

* set default difficulty

Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Felix Lange <fjl@twurst.com>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
Co-authored-by: Rob Mulholand <rmulholand@8thlight.com>
Co-authored-by: Felföldi Zsolt <zsfelfoldi@gmail.com>
Co-authored-by: Talha Cross <47772477+soc1c@users.noreply.github.com>
Co-authored-by: Rafael Matias <rafael@skyle.net>
Co-authored-by: gary rong <garyrong0905@gmail.com>
Co-authored-by: Lucas Hendren <lhendre2@gmail.com>
Co-authored-by: Ryan Schneider <ryanleeschneider@gmail.com>
Co-authored-by: ywzqwwt <39263032+ywzqwwt@users.noreply.github.com>
Co-authored-by: zcheng9 <zcheng9@hawk.iit.edu>
Co-authored-by: kikilass <36239971+kikilass@users.noreply.github.com>
Co-authored-by: Darrel Herbst <dherbst@gmail.com>
Co-authored-by: Ross <9055337+Chadsr@users.noreply.github.com>
Co-authored-by: Jeffery Robert Walsh <rlxrlps@gmail.com>
Co-authored-by: Marius Kjærstad <sandakersmann@users.noreply.github.com>
Co-authored-by: Piotr Dyraga <piotr.dyraga@akena.engineering>
Co-authored-by: Guillaume Ballet <gballet@gmail.com>
Co-authored-by: Michael Forney <mforney@mforney.org>
Co-authored-by: Samuel Marks <807580+SamuelMarks@users.noreply.github.com>
Co-authored-by: Rick <rick.no@groundx.xyz>
Co-authored-by: Kurkó Mihály <kurkomisi@users.noreply.github.com>
Co-authored-by: Jorropo <jorropo.pgm@gmail.com>
Co-authored-by: meowsbits <45600330+meowsbits@users.noreply.github.com>
Co-authored-by: nebojsa94 <nebojsa94@users.noreply.github.com>
Co-authored-by: zaccoding <zaccoding725@gmail.com>
Co-authored-by: xinluyin <31590468+xinluyin@users.noreply.github.com>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: Charing <pip1998@foxmail.com>
Co-authored-by: Paweł Bylica <chfast@gmail.com>
Co-authored-by: Jeff Wentworth <jeff@curvegrid.com>
Co-authored-by: Ilan Gitter <8359193+gitteri@users.noreply.github.com>
Co-authored-by: Gerald Nash <me+github@aunyks.com>
Co-authored-by: Evgeny Danilenko <6655321@bk.ru>
enriquefynn pushed a commit to enriquefynn/go-ethereum that referenced this issue Mar 10, 2021
* update tests for istanbul

* tests: updated blockchaintests, see ethereum/tests#637

* tests: update again, hopefully fixed this time

* tests: skip time consuming, run legacy tests

* tests: update again

* build: disable long-running tests on travis

* tests: fix formatting nits

* tests: I hate github's editor
flyworker pushed a commit to nebulaai/nbai-node that referenced this issue Apr 7, 2021
* core: log chain reorg/split metrics (ethereum#18950)

* core: log chain reorg/split metrics

* core: report 1-block reorgs on the metrics too

* common: unify hex prefix check code (ethereum#19937)

* ethdb/dbtest: addd test suite for ethdb backends (ethereum#19960)

- Move the existing tests from memorydb into a generalized testsuite
that can be run by any ethdb backend implementation.
- Add several more test cases to clarify some non-obvious nuances when
implementing a custom ethdb backend, such as the behaviour of
NewIteratorWithPrefix vs NewIteratorWithStart.
- Add leveldb to the testsuite using in-memory storage for fast
execution.

* core/vm: enable istanbul EIPs in the jump table

* build: gomobile automaticall adds the ios tag, don't duplicate

* cmd/utils: customize cli.HelpPrinter to fix alignment (ethereum#19956)

This copies cli.printHelp but changes minwidth to 38. Custom flag
code is improved to print the default value using cli.FlagStringer like
all built-in flags do.

* p2p/enode: allow DNS names in enode URLs (ethereum#18524)

* crypto: add SignatureLength constant and use it everywhere (ethereum#19996)

Original change by @jpeletier

* rpc: enable compression on HTTP transport (ethereum#19997)

This change adds support for gzip encoding on HTTP responses.
Gzip encoding is used when the client sets the 'accept-encoding: gzip' header.
Original change by @brianosaurus, with fixes from @SjonHortensius.

* retesteth: implement istanbul support

* tests: implement Istanbul support

* acmd, core, eth, les: support --override.istanbul

* README: change chainID to <arbitrary positive integer> (ethereum#20002)

* Change chainId in genesis block to 8888 from 0 

Change chainId in genesis block to 8888 from 0 per Moriteru in https://ethereum.stackexchange.com/a/28082/40230.

* Replace 8888 with “<arbitrary positive integer>”

Per PR review, replace Moriteru’s arbitrary positive integer 8888 with “<arbitrary positive integer>” in chainId field.

* les: wait for all task goroutines before dropping the peer (ethereum#20010)

* les: wait all task routines before drop the peer

* les: address comments

* les: fix issue

* les: fix panic (ethereum#20013)

* eth: disallow overwrite files via admin.exportChain

* retesteth: enable maxResults in AccountRange (ethereum#20020)

* rpc: raise limit in TestClientNotificationStorm (ethereum#19999)

* cmd/utils: reduce light.maxpeers default for clients to 1/10th (ethereum#19933)

Currently light.maxpeers is 100 - after this change it's 10 for non-servers.

Fixes ethereum#19820

* params: release Geth v1.9.3 stable

* params: begin Geth v1.9.4 release cycle

* Dockerfile: expose GraphQL ports

* README: accounts in alloc field should exist (ethereum#20005)

* Accounts in alloc field must already exist

Note that accounts in alloc field must already exist, as pointed out by Simeon Vanov in https://gettoshare.com/2017/10/30/how-to-use-genesis-json-alloc-property/

* Change wording per PR review comment

* README: minor fixups

* common, graphql: fix hash/address decoding + UI content type

* core, metrics, p2p: switch some invalid counters to gauges

* core/state: optimize some internals during encoding

* eth: remove unused field (ethereum#20049)

* tests: expose internal RunNoVerify method (ethereum#20051)

* all: make unit tests work with Go 1.13 (ethereum#20053)

Most of these changes are related to the Go 1.13 changes to test binary
flag handling. 

* cmd/geth: make attach tests more reliable

This makes the test wait for the endpoint to come up by polling
it instead of waiting for two seconds.

* tests: fix test binary flags for Go 1.13

Calling flag.Parse during package initialization is prohibited
as of Go 1.13 and causes test failures. Call it in TestMain instead.

* crypto/ecies: remove useless -dump flag in tests

* p2p/simulations: fix test binary flags for Go 1.13

Calling flag.Parse during package initialization is prohibited
as of Go 1.13 and causes test failures. Call it in TestMain instead.

* build: remove workaround for ./... vendor matching

This workaround was necessary for Go 1.8. The Go 1.9 release changed
the expansion rules to exclude vendored packages.

* Makefile: use relative path for GOBIN

This makes the "Run ./build/bin/..." line look nicer.

* les: fix test binary flags for Go 1.13

Calling flag.Parse during package initialization is prohibited
as of Go 1.13 and causes test failures. Call it in TestMain instead.

* travis, Dockerfile, appveyor: bump to Go 1.13

* build: switch PPA from Gophers dep to manual download

* Revert "build: switch PPA from Gophers dep to manual download" (ethereum#20061)

* core: remove unused gas return in ApplyTransaction (ethereum#20065)

* rlp: improve nil pointer handling (ethereum#20064)

* rlp: improve nil pointer handling

In both encoder and decoder, the rules for encoding nil pointers were a
bit hard to understand, and didn't leave much choice. Since RLP allows
two empty values (empty list, empty string), any protocol built on RLP
must choose either of these values to represent the null value in a
certain context.

This change adds choice in the form of two new struct tags, "nilString"
and "nilList". These can be used to specify how a nil pointer value is
encoded. The "nil" tag still exists, but its implementation is now
explicit and defines exactly how nil pointers are handled in a single
place.

Another important change in this commit is how nil pointers and the
Encoder interface interact. The EncodeRLP method was previously called
even on nil values, which was supposed to give users a choice of how
their value would be handled when nil. It turns out this is a stupid
idea. If you create a network protocol containing an object defined in
another package, it's better to be able to say that the object should be
a list or string when nil in the definition of the protocol message
rather than defining the encoding of nil on the object itself.

As of this commit, the encoding rules for pointers now take precedence
over the Encoder interface rule. I think the "nil" tag will work fine
for most cases. For special kinds of objects which are a struct in Go
but strings in RLP, code using the object can specify the desired
encoding of nil using the "nilString" and "nilList" tags.

* rlp: propagate struct field type errors

If a struct contained fields of undecodable type, the encoder and
decoder would panic instead of returning an error. Fix this by
propagating type errors in makeStruct{Writer,Decoder} and add a test.

* cmd/evm: make evm default to all ethash protocol changes

* core/state: accumulate writes and only update tries when must

* core: add blockchain test too for revert cornercase

* common/mclock: clean up AfterFunc support (ethereum#20054)

This change adds tests for the virtual clock and aligns the interface
with the time package by renaming Cancel to Stop. It also removes the
binary search from Stop because it complicates the code unnecessarily.

* core: smaller txpool status locking (ethereum#20080)

* txpool: smaller lock portion

* core/tx_pool: fix data race

* core: dedup known transactions without global lock, track metrics

* les: multiple server bugfixes (ethereum#20079)

* les: detailed relative cost metrics

* les: filter txpool relative request statistic

* les: initialize price factors

* les: increased connected bias to lower churn rate

* les: fixed clientPool.setLimits

* core: do not use mutex in GetAncestor

* les: bump factor db version again

* les: add metrics

* les, light: minor fixes

* core: fix tx dedup return error count

* params: activate Istanbul on Ropsten and Görli

* params: bump CHTs for the 1.9.4 release

* core/forkid, params: fix tests, enable Istanbul on Rinkeby + testers

* vendor: pull in USB Windows fixes

* params: release Geth v1.9.4 stable

* params: start v1.9.5 release cycle

* params: remove legacy bootnodes

* core/state: fix state object deep copy (ethereum#20100)

deepCopy didn't copy pending storage updates, leading to the
creation of blocks with invalid state root.

* params: release Geth v1.9.5 stable

* params: start v1.9.6 release cycle

* core/state: fix copy-commit-copy (ethereum#20113)

* core/state: revert noop finalise, fix copy-commit-copy

* core/state: reintroduce net sstore tracking, extend tests for it

* dashboard: log host+port

* les: fix checkpoint sync (ethereum#20120)

* p2p/dnsdisc: add implementation of EIP-1459 (ethereum#20094)

This adds an implementation of node discovery via DNS TXT records to the
go-ethereum library. The implementation doesn't match EIP-1459 exactly,
the main difference being that this implementation uses separate merkle
trees for tree links and ENRs. The EIP will be updated to match p2p/dnsdisc.

To maintain DNS trees, cmd/devp2p provides a frontend for the p2p/dnsdisc
library. The new 'dns' subcommands can be used to create, sign and deploy DNS
discovery trees.

* tests/solidity: add contract to test every opcode (ethereum#19283)

Fixes ethereum#18210

* internal/ethapi: support block number or hash on state-related methods (ethereum#19491)

This change adds support for EIP-1898.

* core/blockchain: remove block from futureBlocks on error (ethereum#19763)

* core/state: fix database leak and copy tests (ethereum#19306)

* core: initialize current block/fastblock atomics to nil, fix ethereum#19286 (ethereum#19352)

* ethdb/leveldb: disable seek compaction (ethereum#20130)

* vendor: update leveldb

* ethdb/leveldb: disable seek compaction and add metrics

* vendor: udpate latest levledb

* ethdb/leveldb: fix typo

* p2p: measure subprotocol bandwidth usage

* github: Added capital P (ethereum#20139)

* tests: update test suite for istanbul (ethereum#20082)

* update tests for istanbul

* tests: updated blockchaintests, see ethereum/tests#637

* tests: update again, hopefully fixed this time

* tests: skip time consuming, run legacy tests

* tests: update again

* build: disable long-running tests on travis

* tests: fix formatting nits

* tests: I hate github's editor

* cmd/bootnode: fix exit behavior with -genkey (ethereum#20110)

* les: add empty "les" ENR entry for servers (ethereum#20145)

* params: release Geth v1.9.6 stable

* params: begin v1.9.7 release cycle

* cmd/utils: fix command line flag resolve (ethereum#20167)

In Geth, we have two sources for configuration:
(1) Config file
(2) Command line flag

Basically geth will first resolve config file and then overwrite
configs with command line flags.

This issue is: geth should only overwrite configs if flags are truly
set. So before we apply any flag to configs, `GlobalIsSet` check
is necessary.

* params: check fork ordering when initializing new genesis, fixes ethereum#20136 (ethereum#20169)

prevent users from misconfiguring their nodes so that fork ordering is not preserved.

* p2p/dnsdisc: update to latest EIP-1459 spec (ethereum#20168)

This updates the DNS TXT record format to the latest
changes in ethereum/EIPs#2313.

* p2p/simulations: add node properties support and utility functions (ethereum#20060)

* README: use new miner threads flag instead of legacy minerthreads flag (ethereum#20165)

* Changed http:// to https:// on links in log/README.md (ethereum#20178)

docs: change http to https on links in log/README.md

* dashboard: change links in README to https (ethereum#20181)

Changed http:// to https:// on links in dashboard/README.md

* metrics: change links in README.md to https (ethereum#20182)

* miner: add generate and import unit test (ethereum#20111)

This PR adds a new unit test in miner package which will create some blocks from miner and then import into another chain. In this way, we can ensure all blocks generated by Geth miner obey consensus rules.

* accounts/abi/bind: take into account gas price during gas estimation (ethereum#20189)

The gas price was not passed to the `EstimateGas` function. As a result,
conditional execution paths depending on `tx.gasprice` could be not
correctly processed and we could get invalid gas estimates for contract
function calls.

* clef: resolve windows pipes, fixes ethereum#20121 (ethereum#20166)

* consensus: fix possessives in comments. (ethereum#20209)

* cmd/evm: remove surrounding whitespace in hex input code (ethereum#20211)

This way, the output of `evm compile` can be used directly in `evm
--codefile code.txt run`, without stripping the trailing newline first.

* trie: remove node ordering slice in sync batch (ethereum#19929)

When we flush a batch of trie nodes into database during the state
sync, we should guarantee that all children should be flushed before
parent.

Actually the trie nodes commit order is strict by: children -> parent.
But when we flush all ready nodes into db, we don't need the order
anymore since

    (1) they are all ready nodes (no more dependency)
    (2) underlying database provides write atomicity

* core/asm: assembly parser label fixes (ethereum#20210)

* core/asm: Fix encoding of pushed labels

EVM uses big-endian byte-order, so to pad a label value to 4 bytes,
zeros must be added to the front, not the end.

* core/asm: Fix PC calculations when a label is pushed

Incrementing PC by 5 is only correct if the label appears after a jump,
in which case there is an implicit push. When it appears after an explicit
push, PC should only be incremented by 4.

* core/asm: Allow JUMP with no argument

This way, a label can be pushed explicitly, or loaded from memory to
implement a jump table.

* eth/downloader: fix data race in downloader

* cmd/devp2p, p2p: dial using node iterator, discovery crawler (ethereum#20132)

* p2p/enode: add Iterator and associated utilities

* p2p/discover: add RandomNodes iterator

* p2p: dial using iterator

* cmd/devp2p: add discv4 crawler

* cmd/devp2p: WIP nodeset filter

* cmd/devp2p: fixup lesFilter

* core/forkid: add NewStaticFilter

* cmd/devp2p: make -eth-network filter actually work

* cmd/devp2p: improve crawl timestamp handling

* cmd/devp2p: fix typo

* p2p/enode: fix comment typos

* p2p/discover: fix comment typos

* p2p/discover: rename lookup.next to 'advance'

* p2p: lower discovery mixer timeout

* p2p/enode: implement dynamic FairMix timeouts

* cmd/devp2p: add ropsten support in -eth-network filter

* cmd/devp2p: tweak crawler log message

* eth: eth/64 - extend handshake packet with fork id

* core/forkid: add two clauses for more precise validation (ethereum#20220)

* miner: increase import time allowance (ethereum#20217)

Fix the block import unit test which can time out sometimes.

* cmd/devp2p, core/forkid: make forkid.Filter API uniform

* params, core/forkid: configure mainnet istanbul block 9069K (ethereum#20222)

* params: configure mainnet istanbul block 9069K

* core/forkid: add some more test items for mainnet istanbul

* accounts/abi: add internalType information and fix issues (ethereum#20179)

* accounts/abi: fix various issues

The fixed issues include:

(1) If there is no return in a call function, unpack should
return nil error

(2) For some functions which have struct array as parameter,
it will also be detected and generate the struct definition

(3) For event, if it has non-indexed parameter, the parameter
name will also be assigned if empty. Also the internal struct
will be detected and generate struct defition if not exist.

(4) Fix annotation generation in event function

* accounts/abi: add new abi field internalType

* accounts: address comments and add tests

* accounts/abi: replace strings.ReplaceAll with strings.Replace

* appveyor: bump to Go 1.13.4

* les: rework clientpool (ethereum#20077)

* les: rework clientpool

* cmd/puppeth: integrate istanbul into puppeth (ethereum#19926)

* cmd/puppeth: integrate istanbul into puppeth

* cmd/puppeth: address comment

* cmd/puppeth: use hexutil.Big for fork indicator

* cmd/puppeth: finalize istanbul fork

* cmd/puppeth: fix 2200 for parity, rename is to eip1283ReenableTransition

* cmd/puppeth: fix eip1108

* cmd/puppeth: add blake2f for parity

* cmd/puppeth: add aleth istanbul precompiled

* cmd/puppeth: use hexutil.Big

* cmd/puppeth: fix unit tests

* cmd/puppeth: update testdata

* core/evm: avoid copying memory for input in calls (ethereum#20177)

* core/evm, contracts: avoid copying memory for input in calls + make ecrecover not modify input buffer

* core/vm: optimize mstore a bit

* core/vm: change Get -> GetCopy in vm memory access

* travis, build, internal: use own Go bundle for PPA builds (ethereum#20240)

* build: bump PPAs to Go 1.13 (via longsleep), keep Trusty on 1.11

* travis, build, vendor: use own Go bundle for PPA builds

* travis, build, internal, vendor: smarter Go bundler, own untar

* build: updated ci-notes with new Go bundling, only make, don't test

* travis: bump linter to Go 1.13.x

* params: hard-code new CHTs for the 1.9.7 release

* les: fix and slim the unit tests of les (ethereum#20247)

* les: loose restriction of unit tests

* les: update unit tests

* les, light: slim the unit tests

* params: release Geth v1.9.7

* params: begin v1.9.8 release cycle

* p2p/enode: mock DNS resolver in URL parsing test (ethereum#20252)

* travis: enable test suite on ARM64 (ethereum#20219)

* travis: Enable ARM support

* Include fixes from 20039

* Add a trace to debug the invalid lookup issue

* Try increasing the timeout to see if the arm test passes

* Investigate the resolver issue

* Increase arm64 timeout for clique test

* increase timeout in tests for arm64

* Only test the failing tests

* Review feedback: don't export epsilon

* Remove investigation tricks+include fjl's feeback

* Revert the retry ahead of using the mock resolver

* Fix rebase errors

* p2p: fix bug in TestPeerDisconnect (ethereum#20277)

* dashboard: send current block to the dashboard client (ethereum#19762)

This adds all dashboard changes from the last couple months.
We're about to remove the dashboard, but decided that we should
get all the recent work in first in case anyone wants to pick up this
project later on.

* cmd, dashboard, eth, p2p: send peer info to the dashboard
* dashboard: update npm packages, improve UI, rebase
* dashboard, p2p: remove println, change doc
* cmd, dashboard, eth, p2p: cleanup after review
* dashboard: send current block to the dashboard client

* miner: increase worker test timeout (ethereum#20268)

TestEmptyWork* occasionally fails due to timeout. Increase the timeout.

* les: implement server priority API (ethereum#20070)

This PR implements the LES server RPC API. Methods for server
capacity, client balance and client priority management are provided.

* accounts/abi/bind, cmd/abigen: implement alias for abigen (ethereum#20244)

* accounts/abi/bind, cmd/abigen: implement alias for abigen

* accounts/abi/bind: minor fixes

* accounts/abi/bind: address comments

* cmd/abigen: address comments

* accounts/abi/bind: print error log when identifier collision

* accounts/abi/bind: address comments

* accounts/abi/bind: address comment

* rpc: fix typo example code (ethereum#20284)

* cmd/faucet: use github.com/gorilla/websocket (ethereum#20283)

golang.org/x/net/websocket is unmaintained, and we have already
switched to using github.com/gorilla/websocket for package rpc.

* dashboard: remove the dashboard (ethereum#20279)

This removes the dashboard project. The dashboard was an experimental
browser UI for geth which displayed metrics and chain information in
real time. We are removing it because it has marginal utility and nobody
on the team can maintain it.

Removing the dashboard removes a lot of dependency code and shaves
6 MB off the geth binary size.

* whisper/whisperv6: fix staticcheck issues (ethereum#20288)

* build: gather info to investigate why builds fail on ARM (ethereum#20281)

* params: finish sentence in comment (ethereum#20291)

* core/vm: fix tracer interface parameter name (ethereum#20294)

* internal/ethapi: don't query wallets at every execution of gas estimation

* cmd/evm: Allow loading input from file (ethereum#20273)

Make it possible to load input from a file. Simlar to `--code` / `--codefile`, have `--input`/`--inputfile`.

* rpc, p2p/simulations: use github.com/gorilla/websocket (ethereum#20289)

* rpc: improve codec abstraction

rpc.ServerCodec is an opaque interface. There was only one way to get a
codec using existing APIs: rpc.NewJSONCodec. This change exports
newCodec (as NewFuncCodec) and NewJSONCodec (as NewCodec). It also makes
all codec methods non-public to avoid showing internals in godoc.

While here, remove codec options in tests because they are not
supported anymore.

* p2p/simulations: use github.com/gorilla/websocket

This package was the last remaining user of golang.org/x/net/websocket.
Migrating to the new library wasn't straightforward because it is no
longer possible to treat WebSocket connections as a net.Conn.

* vendor: delete golang.org/x/net/websocket

* rpc: fix godoc comments and run gofmt

* build: use golangci-lint (ethereum#20295)

* build: use golangci-lint

This changes build/ci.go to download and run golangci-lint instead
of gometalinter.

* core/state: fix unnecessary conversion

* p2p/simulations: fix lock copying (found by go vet)

* signer/core: fix unnecessary conversions

* crypto/ecies: remove unused function cmpPublic

* core/rawdb: remove unused function print

* core/state: remove unused function xTestFuzzCutter

* core/vm: disable TestWriteExpectedValues in a different way

* core/forkid: remove unused function checksum

* les: remove unused type proofsData

* cmd/utils: remove unused functions prefixedNames, prefixFor

* crypto/bn256: run goimports

* p2p/nat: fix goimports lint issue

* cmd/clef: avoid using unkeyed struct fields

* les: cancel context in testRequest

* rlp: delete unreachable code

* core: gofmt

* internal/build: simplify DownloadFile for Go 1.11 compatibility

* build: remove go test --short flag

* .travis.yml: disable build cache

* whisper/whisperv6: fix ineffectual assignment in TestWhisperIdentityManagement

* .golangci.yml: enable goconst and ineffassign linters

* build: print message when there are no lint issues

* internal/build: refactor download a bit

* travis: remove traces and use travis_wait in ARM build (ethereum#20296)

* travis: remove debug traces

* travis: Add travis_wait to the test run

* travis: increase travis_wait time

* core: s/isEIP155/isHomestead/g (fix IntrinsicGas signature var name) (ethereum#20300)

* core: s/isEIP155/isEIP2/ (fix)

This signature variable name reflects a spec'd change
in gas cost for creating contracts as documented in EIP2 (Homestead HF).

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.md#specification

* core: s/isEIP2/sIsHomestead/g

Use isHomestead since Homestead is what the caller
and rest of the code uses.

* les: rename UpdateBalance to AddBalance and simplify return format (ethereum#20304)

* travis: use travis_wait for both install and build (ethereum#20309)

* build: add test cmd flag -v for verbose logs (ethereum#20298)

Adds flags akin to -coverage flag enabling the test runner
to use go test's -v flag, signaling verbose test log output.

* cmd/clef: fix staticcheck warnings (ethereum#20314)

* consensus/clique: add clique_status API method (ethereum#20103)

This PR introduces clique_status which gives info about the health of
the clique network.

It's currently a bit PITA to find out how a clique network is
performing, and it can easily happen that sealers drop off -- and
everything is 'fine' until one more signer drops off, and the network
suddenly halts.

The new method provides the following stats:

- Which signers are currently active, and have signed blocks in the last
  N (set to 64) blocks?
- How many blocks has each signer signed?
- What is the difficulty in the last N blocks, compared to the
  theoretical maximum?

* consensus/clique: fix struct tags for status API (ethereum#20316)

Also unexport the status struct.

* cmd/ethkey: fix file permissions in changepassword command (ethereum#20313)

Found by staticcheck.

* p2p/netutil: fix staticcheck warning (ethereum#20315)

* core/rawdb: check hash before return data from ancient db (ethereum#20195)

* core/rawdb: check hash before return data from ancient db

* core/rawdb: fix lint

* core/rawdb: calculate the hash in the fly

* travis: deactivate arm build during push (ethereum#20321)

* ethclient: remove use of common.ToHex (ethereum#20326)

* cmd/wnode: remove uses of common.ToHex (ethereum#20327)

* event: remove unused field 'closed' (ethereum#20324)

* .github: remove 'nonsense' from CODEOWNERS (ethereum#20329)

* whisper/whisperv6: fix staticcheck warnings (ethereum#20328)

* p2p: remove unused code (ethereum#20325)

* p2p/simulations: fix staticcheck warnings (ethereum#20322)

* internal/web3ext, les: update clique JS and make it work with the light client (ethereum#20318)

Also fix the input formatter on clique_getSnapshot and clique_getSigners
so that integers as well as hex number strings are accepted.

* rpc: remove 'exported or builtin' restriction for parameters (ethereum#20332)

* rpc: remove 'exported or builtin' restriction for parameters

There is no technial reason for this restriction because package reflect
can create values of any type. Requiring parameters and return values to
be exported causes a lot of noise in package exports.

* rpc: fix staticcheck warnings

* core: fix staticcheck warnings (ethereum#20323)

* miner: fix data race in tests (ethereum#20310)

* miner: fix data race in tests

miner: fix linter

* miner: address comment

* cmd/puppeth: update chain spec of parity (ethereum#20241)

* go.mod, vendor: switch to Go modules

* travis: explicitly enable go modules in Go 1.11 and 1.12

* accounts/abi/bind: switch binding test to go modules

* travis, build: aggregate and upload go mod dependencies for PPA

* go.mod: tidy up the modules to avoid xgo writes to go.sum

* build, internal/build: drop own file/folder copier

* travis: fake build ppa only for go module dependencies

* mobile: fix CopyFile switch to package cp

* tests: refactor TestState to dedupe walk callback

Minor refactoring.

* build, travis: use ephemeral debsrc GOPATH to get mod deps

* tests: enable TransactionTests Istanbul case (ethereum#20337)

* cmd/puppeth: x-spec nonce data type, use types.BlockNonce

Refactors to use existing BlockNonce type instead of
hand-rolled bytes logic.

* cmd/puppeth: make ssh prompt more user-friendly

* common/hexutil: improve GraphQL error messages (ethereum#20353)

* build: pull in ci.go dependencies for the PPA builder

* common: improve GraphQL error messages (ethereum#20354)

* core/types: remove BlockBy sorting code (ethereum#20355)

* build: skip go clean on PPA, messes with the module trick

* accounts/abi/bind/backends: remove unused assignment (ethereum#20359)

* accounts/abi: fix staticcheck warnings (ethereum#20358)

* accounts/abi: fix staticcheck warnings

* accounts/abi: restore unused field for test

* core/state: fix staticcheck warnings (ethereum#20357)

Also remove dependency on gopkg.in/check.v1 in tests.

* metrics: fix issues reported by staticcheck (ethereum#20365)

* trie: remove unused code (ethereum#20366)

* p2p/discv5: add deprecation warning and remove unused code (ethereum#20367)

* p2p/discv5: add deprecation warning and remove unused code

* p2p/discv5: remove unused variables

* tests, signer: remove staticcheck warnings (ethereum#20364)

* core/asm: allow numbers in labels (ethereum#20362)

Numbers were already allowed when creating labels, just not when
referencing them.

* miner: fix staticcheck warnings (ethereum#20375)

* eth/tracers: fix staticcheck warnings (ethereum#20379)

* trie: replace bigcache with fastcache (ethereum#19971)

* cmd/geth: remove network id from version cmd

It was reflective only of the Default setting,
and not chain aware.

* rlp: fix staticcheck warnings (ethereum#20368)

* rlp: fix staticcheck warnings

* rlp: fix ExampleDecode test

* accounts/abi/bind: avoid reclaring structs (ethereum#20381)

* accounts/keystore: fix staticcheck warnings (ethereum#20373)

* accounts/keystore: fix staticcheck warnings

* review feedback

* p2p/discover: slow down lookups on empty table (ethereum#20389)

* p2p/discover: slow down lookups on empty table

* p2p/discover: wake from slowdown sleep when table is closed

* les: fix clientInfo deadlock (ethereum#20395)

* params: release go-ethereum v1.9.8

* params: begin v1.9.9 release cycle

* cmd: fix command help messages in modules (ethereum#20203)

* les: fix staticcheck warnings (ethereum#20371)

* core: fix staticcheck warnings (ethereum#20384)

* core: fix staticcheck warnings

* fix goimports

* core/rawdb: fix reinit regression caused by the hash check PR

* deps: update fastcache to 1.5.3

* consensus/ethash: refactor remote sealer (ethereum#20335)

The original idea behind this change was to remove a use of the
deprecated CancelRequest method. Simply removing it would've been an
option, but I couldn't resist and did a bit of a refactoring instead.

All remote sealing code was contained in a single giant function. Remote
sealing is now extracted into its own object, remoteSealer.

* log: fix staticcheck warnings (ethereum#20388)

* trie: remove dead code (ethereum#20405)

* cmd/faucet, cmd/geth: fix staticcheck warnings (ethereum#20374)

* internal: fix staticcheck warnings (ethereum#20380)

* accounts/scwallet: fix staticcheck warnings (ethereum#20370)

* internal/web3ext: add debug_accountRange (ethereum#20410)

* accounts/usbwallet: fix staticcheck warnings (ethereum#20372)

* core, miner: remove PostChainEvents (ethereum#19396)

This change:

- removes the PostChainEvents method on core.BlockChain.
- sorts 'removed log' events by block number.
- fire the NewChainHead event if we inject a canonical block into the chain
  even if the entire insertion is not successful.
- guarantees correct event ordering in all cases.

* accounts/abi/bind: fix destructive packing of *big.Int (ethereum#20412)

* trie: track dirty cache metrics, track clean writes on commit

* params: update CHTs for v1.9.9 release

* p2p/enode: remove data race in sliceIter (ethereum#20421)

* consensus/ethash, params: eip-2384: bump difficulty bomb (ethereum#20347)

* consensus/ethash, params: implement eip-2384: bump difficulty bomb

* params: EIP 2384 compat checks

* consensus, params: add Muir Glacier block number (mainnet,ropsten) + official name

* core/forkid: forkid tests for muir glacier

* params/config: address review concerns

* params, core/forkid: review nitpicks

* cmd/geth,eth,les: add override option for muir glacier

* params: nit fix

* params: release Geth v1.9.9

* whisper/mailserver: reduce the max number of opened files (ethereum#18142)

This should reduce the occurences of travis failures on MacOS

Also fix some linter warnings

* update default data path

* use Constantinople for test net, from around December 30, 2019

* change default listening port to 30332

* set Constantinople Block to 3075000, which comes around January 15, 2020 at 11:19:06 am

* fix data dir

* Remove eth deployed checkpoint contents (#13)

Co-authored-by: Péter Szilágyi <peterke@gmail.com>
Co-authored-by: HackyMiner <hackyminer@gmail.com>
Co-authored-by: lmittmann <lmittmann@users.noreply.github.com>
Co-authored-by: Andrey Petrov <andrey.petrov@shazow.net>
Co-authored-by: SjonHortensius <SjonHortensius@users.noreply.github.com>
Co-authored-by: alexwang <39109351+dipingxian2@users.noreply.github.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Flash Sheridan <flash@pobox.com>
Co-authored-by: gary rong <garyrong0905@gmail.com>
Co-authored-by: winsvega <winsvega@mail.ru>
Co-authored-by: Nguyen Kien Trung <trung.n.k@gmail.com>
Co-authored-by: Rob Mulholand <rmulholand@8thlight.com>
Co-authored-by: Felföldi Zsolt <zsfelfoldi@gmail.com>
Co-authored-by: soc1c <soc1c@users.noreply.github.com>
Co-authored-by: Rafael Matias <rafael@skyle.net>
Co-authored-by: Lucas Hendren <lhendre2@gmail.com>
Co-authored-by: Ryan Schneider <ryanleeschneider@gmail.com>
Co-authored-by: ywzqwwt <39263032+ywzqwwt@users.noreply.github.com>
Co-authored-by: zcheng9 <zcheng9@hawk.iit.edu>
Co-authored-by: kikilass <36239971+kikilass@users.noreply.github.com>
Co-authored-by: Darrel Herbst <dherbst@gmail.com>
Co-authored-by: Ross <9055337+Chadsr@users.noreply.github.com>
Co-authored-by: Jeffery Robert Walsh <rlxrlps@gmail.com>
Co-authored-by: Marius Kjærstad <sandakersmann@users.noreply.github.com>
Co-authored-by: Piotr Dyraga <piotr.dyraga@keep.network>
Co-authored-by: Guillaume Ballet <gballet@gmail.com>
Co-authored-by: Michael Forney <mforney@mforney.org>
Co-authored-by: Samuel Marks <807580+SamuelMarks@users.noreply.github.com>
Co-authored-by: Rick <rick.no@groundx.xyz>
Co-authored-by: Kurkó Mihály <kurkomisi@users.noreply.github.com>
Co-authored-by: Jorropo <jorropo.pgm@gmail.com>
Co-authored-by: meowsbits <45600330+meowsbits@users.noreply.github.com>
Co-authored-by: nebojsa94 <nebojsa94@users.noreply.github.com>
Co-authored-by: meows <b5c6@protonmail.com>
Co-authored-by: zaccoding <zaccoding725@gmail.com>
Co-authored-by: xinluyin <31590468+xinluyin@users.noreply.github.com>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: neo lin <nlin@nbai.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants