Coder Social home page Coder Social logo

etclabscore / go-ethereum Goto Github PK

View Code? Open in Web Editor NEW
47.0 13.0 19.0 25.38 MB

:no_entry: DEPRECATED Classic-Geth implementation. Please see https://github.com/etclabscore/core-geth for a far more advanced and currently maintained client.

License: GNU Lesser General Public License v3.0

Dockerfile 0.01% Makefile 0.12% Go 92.84% Assembly 0.05% C 5.03% C++ 1.02% Shell 0.77% M4 0.13% Java 0.02%
ethereum-classic

go-ethereum's Introduction

Geth Classic

GitHub release GitHub All Releases LICENSE

CircleCI GitHub last commit Join the chat at https://gitter.im/etclabscore/go-ethereum

Official Go-language implementation of the Ethereum Classic protocol. Ethereum Classic (ETC) offers a censorship-resistant and powerful application platform for developers in parallel to the Ethereum Foundation network (ETH), while differentially rejecting the DAO transition.

Install Geth Classic

๐ŸŽ Official Releases

Regular releases will be published on the release page. Binaries will be provided for all releases that are considered fairly stable.

๐Ÿ”จ Building the source

If your heart is set on the bleeding edge, install from source. However, please be advised that you may encounter some strange things, and we can't prioritize support beyond the release versions. Recommended for developers only.

Dependencies

Building geth requires both Go >=1.12 and a C compiler; building with SputnikVM additionally requires Rust. On Linux systems, a C compiler can, for example, be installed with sudo apt-get install build-essential. On Mac: xcode-select --install. For Rust, please use Rustup by executing curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh.

Build using make

With Go modules, dependencies will be downloaded and cached when running build or test commands automatically.

Clone the repository:

git clone https://github.com/etclabscore/go-ethereum.git getc && cd getc

Build all executables:

make build

Build just Geth Classic:

make cmd/geth

For further make information, use make help to see a list and description of available make commands.

Build using go

The following commands work starting with Go version 1.12+; for Go version 1.11, prepend the commands with GO111MODULE=on to enable Go modules. Older Go versions are no longer supported.

mkdir -p ./bin

go build -o ./bin/geth -ldflags "-X main.Version="`git describe --tags` -tags="netgo" ./cmd/geth
go build -o ./bin/abigen ./cmd/abigen
go build -o ./bin/bootnode ./cmd/bootnode
go build -o ./bin/disasm ./cmd/disasm
go build -o ./bin/ethtest ./cmd/ethtest
go build -o ./bin/evm ./cmd/evm
go build -o ./bin/gethrpctest ./cmd/gethrpctest
go build -o ./bin/rlpdump ./cmd/rlpdump

Building a specific release

All the above commands results with building binaries from HEAD. To use a specific release/tag, use the following before installing:

git checkout v6.0.1

Where v6.0.1 can be either a release tag or a specific feature branch or commit.

๐Ÿ“บ Executables

This repository includes several wrappers/executables found in the cmd directory.

Command Description
geth The main Ethereum Classic command-line client. It is the entry point into the Ethereum Classic network (main-, test-, or private networks), capable of running as a full node (default) archive node (retaining all historical states) or a light node (retrieving data live). It can be used by other processes as a gateway into the Ethereum Classic network via JSON-RPC endpoints exposed on top of HTTP, WebSocket and/or IPC transport layers. Please see our Command Line Options wiki page for details.
abigen Source code generator to convert Ethereum contract definitions into easy to use, compile-time type-safe Go packages. It operates on plain Ethereum contract ABIs with expanded functionality if the contract bytecode is also available. However it also accepts Solidity source files, making development much more streamlined. Please see our Native DApps wiki page for details.
bootnode Stripped down version of our Ethereum client implementation that only takes part in the network node discovery protocol, but does not run any of the higher level application protocols. It can be used as a lightweight bootstrap node to aid in finding peers in private networks.
disasm Bytecode disassembler to convert EVM (Ethereum Virtual Machine) bytecode into more user friendly assembly-like opcodes (e.g. `echo "6001"
evm Developer utility version of the EVM (Ethereum Virtual Machine) that is capable of running bytecode snippets within a configurable environment and execution mode. Its purpose is to allow insolated, fine graned debugging of EVM opcodes (e.g. evm --code 60ff60ff --debug).
gethrpctest Developer utility tool to support our ethereum/rpc-test test suite which validates baseline conformity to the Ethereum JSON RPC specs. Please see the test suite's readme for details.
rlpdump Developer utility tool to convert binary RLP (Recursive Length Prefix) dumps (data encoding used by the Ethereum protocol both network as well as consensus wise) to user friendlier hierarchical representation (e.g. rlpdump --hex CE0183FFFFFFC4C304050583616263).

๐Ÿ“— Getting started with Geth Classic

Data directory

By default, geth will store all node and blockchain data in a parent directory depending on your OS:

  • Linux: $HOME/.ethereum-classic/
  • Mac: $HOME/Library/EthereumClassic/
  • Windows: $HOME/AppData/Roaming/EthereumClassic/

You can specify this directory with --data-dir=$HOME/id/rather/put/it/here.

Within this parent directory, geth will use a /subdirectory to hold data for each network you run. The defaults are:

  • /mainnet for the Mainnet
  • /morden for the Morden Testnet

Run a full node

$ geth

It's that easy! This will establish an ETC blockchain node, download, and verify the full blocks for the entirety of the ETC blockchain. However, before you go ahead with plain ol' geth, we would encourage reviewing the following section.

๐Ÿšค Fast Synchronization

The most common scenario is users wanting to simply interact with the Ethereum Classic network: create accounts; transfer funds; deploy and interact with contracts, and mine. For this particular use-case the user doesn't care about years-old historical data, so we can fast-sync to the current state of the network. To do so:

$ geth --fast

Using geth in fast sync mode causes it to download only block state data -- leaving out bulky transaction records -- which avoids a lot of CPU and memory intensive processing.

Fast sync will be automatically disabled (and full sync enabled) when:

  • your chain database contains any full blocks
  • your node has synced up to the current head of the network blockchain

In case of using --mine together with --fast, geth will operate as described; syncing in fast mode up to the head, and then begin mining once it has synced its first full block at the head of the chain.

Note: To further increase geth's performace, you can use a --cache=2054 flag to bump the memory allowance of the database (e.g. 2054MB) which can significantly improve sync times, especially for HDD users. This flag is optional and you can set it as high or as low as you'd like, though we'd recommend the 1GB - 2GB range.

Create and manage accounts

Geth is able to create, import, update, unlock, and otherwise manage your private (encrypted) key files. Key files are in JSON format and, by default, stored in the respective chain folder's /keystore directory; you can specify a custom location with the --keystore flag.

$ geth account new

This command will create a new account and prompt you to enter a passphrase to protect your account.

Other account subcommands include:

SUBCOMMANDS:

        list    print account addresses
        new     create a new account
        update  update an existing account
        import  import a private key into a new account

Learn more at the Accounts Wiki Page. If you're interested in using geth to manage a lot (~100,000+) of accounts, please visit the Indexing Accounts Wiki page.

Interact with the Javascript console

$ geth console

This command will start up Geth's built-in interactive JavaScript console, through which you can invoke all official web3 methods as well as Geth's own management APIs. This too is optional and if you leave it out you can always attach to an already running Geth instance with geth attach.

Learn more at the Javascript Console Wiki page.

And so much more!

For a comprehensive list of command line options, please consult our CLI Wiki page.

๐Ÿ“™ Geth: developing and advanced useage

Morden Testnet

If you'd like to play around with creating Ethereum contracts, you almost certainly would like to do that without any real money involved until you get the hang of the entire system. In other words, instead of attaching to the main network, you want to join the test network with your node, which is fully equivalent to the main network, but with play-Ether only.

$ geth --chain=morden --fast console

The --fast flag and console subcommand have the exact same meaning as above and they are equally useful on the testnet too. Please see above for their explanations if you've skipped to here.

Specifying the --chain=morden flag will reconfigure your Geth instance a bit:

  • As mentioned above, Geth will host its testnet data in a morden subfolder (~/.ethereum-classic/morden).
  • Instead of connecting the main Ethereum network, the client will connect to the test network, which uses different P2P bootnodes, different network IDs and genesis states.

You may also optionally use --testnet or --chain=testnet to enable this configuration.

Note: Although there are some internal protective measures to prevent transactions from crossing over between the main network and test network (different starting nonces), you should make sure to always use separate accounts for play-money and real-money. Unless you manually move accounts, Geth will by default correctly separate the two networks and will not make any accounts available between them.

Programatically interfacing Geth nodes

As a developer, sooner rather than later you'll want to start interacting with Geth and the Ethereum network via your own programs and not manually through the console. To aid this, Geth has built in support for a JSON-RPC based APIs (standard APIs and Geth specific APIs). These can be exposed via HTTP, WebSockets and IPC (unix sockets on unix based platroms, and named pipes on Windows).

The IPC interface is enabled by default and exposes all the APIs supported by Geth, whereas the HTTP and WS interfaces need to manually be enabled and only expose a subset of APIs due to security reasons. These can be turned on/off and configured as you'd expect.

HTTP based JSON-RPC API options:

  • --rpc Enable the HTTP-RPC server
  • --rpc-addr HTTP-RPC server listening interface (default: "localhost")
  • --rpc-port HTTP-RPC server listening port (default: 8545)
  • --rpc-api API's offered over the HTTP-RPC interface (default: "eth,net,web3")
  • --rpc-cors-domain Comma separated list of domains from which to accept cross origin requests (browser enforced)
  • --ws Enable the WS-RPC server
  • --ws-addr WS-RPC server listening interface (default: "localhost")
  • --ws-port WS-RPC server listening port (default: 8546)
  • --ws-api API's offered over the WS-RPC interface (default: "eth,net,web3")
  • --ws-origins Origins from which to accept websockets requests
  • --ipc-disable Disable the IPC-RPC server
  • --ipc-api API's offered over the IPC-RPC interface (default: "admin,debug,eth,miner,net,personal,shh,txpool,web3")
  • --ipc-path Filename for IPC socket/pipe within the datadir (explicit paths escape it)

You'll need to use your own programming environments' capabilities (libraries, tools, etc) to connect via HTTP, WS or IPC to a Geth node configured with the above flags and you'll need to speak JSON-RPC on all transports. You can reuse the same connection for multiple requests!

Note: Please understand the security implications of opening up an HTTP/WS based transport before doing so! Hackers on the internet are actively trying to subvert Ethereum nodes with exposed APIs! Further, all browser tabs can access locally running webservers, so malicious webpages could try to subvert locally available APIs!*

Operating a private/custom network

As of Geth 3.4 you are now able to configure a private chain by specifying an external chain configuration JSON file, which includes necessary genesis block data as well as feature configurations for protocol forks, bootnodes, and chainID.

Please find full example external configuration files representing the Mainnet and Morden Testnet specs in the /config subdirectory of this repo. You can use either of these files as a starting point for your own customizations.

It is important for a private network that all nodes use compatible chains. In the case of custom chain configuration, the chain configuration file (chain.json) should be equivalent for each node.

Define external chain configuration

Specifying an external chain configuration file will allow fine-grained control over a custom blockchain/network configuration, including the genesis state and extending through bootnodes and fork-based protocol upgrades.

$ geth --chain=morden dump-chain-config <datadir>/customnet/chain.json
$ sed s/mainnet/customnet/ <datadir>/customnet/chain.json
$ vi <datadir>/customnet/chain.json # make your custom edits
$ geth --chain=customnet [--flags] [command]

The external chain configuration file specifies valid settings for the following top-level fields:

JSON Key Notes
chainID Chain identity. Determines local /subdir for chain data, with required chain.json located in it. It is required, but must not be identical for each node. Please note that this is not the chainID validation introduced in EIP-155; that is configured as a protocal upgrade within forks.features.
name Optional. Human readable name, ie Ethereum Classic Mainnet, Morden Testnet.
state.startingNonce Optional. Initialize state db with a custom nonce.
network Determines Network ID to identify valid peers.
consensus Optional. Proof of work algorithm to use, either "ethash" or "ethast-test" (for development)
genesis Determines genesis state. If running the node for the first time, it will write the genesis block. If configuring an existing chain database with a different genesis block, it will overwrite it.
chainConfig Determines configuration for fork-based protocol upgrades, ie EIP-150, EIP-155, EIP-160, ECIP-1010, etc ;-). Subkeys are forks and badHashes.
bootstrap Optional. Determines bootstrap nodes in enode format.
include Optional. Other configuration files to include. Paths can be relative (to the config file with include field, or absolute). Each of configuration files has the same structure as "main" configuration. Included files are processed after the "main" configuration in the same order as specified in the array; values processed later overwrite the previously defined ones.

Fields name, state.startingNonce, and consensus are optional. Geth will panic if any required field is missing, invalid, or in conflict with another flag. This renders --chain incompatible with --testnet. It remains compatible with --data-dir.

To learn more about external chain configuration, please visit the External Command Line Options Wiki page.

Create the rendezvous point

Once all participating nodes have been initialized to the desired genesis state, you'll need to start a bootstrap node that others can use to find each other in your network and/or over the internet. The clean way is to configure and run a dedicated bootnode:

$ bootnode --genkey=boot.key
$ bootnode --nodekey=boot.key

With the bootnode online, it will display an enode URL that other nodes can use to connect to it and exchange peer information. Make sure to replace the displayed IP address information (most probably [::]) with your externally accessible IP to get the actual enode URL.

Note: You could also use a full fledged Geth node as a bootnode, but it's the less recommended way.

To learn more about enodes and enode format, visit the Enode Wiki page.

Starting up your member nodes

With the bootnode operational and externally reachable (you can try telnet <ip> <port> to ensure it's indeed reachable), start every subsequent Geth node pointed to the bootnode for peer discovery via the --bootnodes flag. It will probably be desirable to keep private network data separate from defaults; to do so, specify a custom --datadir and/or --chain flag.

$ geth --datadir=path/to/custom/data/folder \
       --chain=kittynet \
       --bootnodes=<bootnode-enode-url-from-above>

Note: Since your network will be completely cut off from the main and test networks, you'll also need to configure a miner to process transactions and create new blocks for you.

Running a private miner

Mining on the public Ethereum network is a complex task as it's only feasible using GPUs, requiring an OpenCL or CUDA enabled ethminer instance. For information on such a setup, please consult the EtherMining subreddit and the Genoil miner repository.

In a private network setting however, a single CPU miner instance is more than enough for practical purposes as it can produce a stable stream of blocks at the correct intervals without needing heavy resources (consider running on a single thread, no need for multiple ones either). To start a Geth instance for mining, run it with all your usual flags, extended by:

$ geth <usual-flags> --mine --minerthreads=1 --etherbase=0x0000000000000000000000000000000000000000

Which will start mining blocks and transactions on a single CPU thread, crediting all proceedings to the account specified by --etherbase. You can further tune the mining by changing the default gas limit blocks converge to (--targetgaslimit) and the price transactions are accepted at (--gasprice).

For more information about managing accounts, please see the Managing Accounts Wiki page.

๐Ÿ’ช Contribution

Thank you for considering to help out with the source code!

The core values of democratic engagement, transparency, and integrity run deep with us. We welcome contributions from everyone, and are grateful for even the smallest of fixes. ๐Ÿ‘

This project is migrated from the now hard-forked Ethereum Foundation project, and we will need to incrementally migrate pieces of the infrastructure required to maintain the project.

If you'd like to contribute to go-ethereum, please fork, fix, commit and send a pull request for the maintainers to review and merge into the main code base. If you wish to submit more complex changes, please check up with the core devs first on our Discord channel (#development) to ensure those changes are in line with the general philosophy of the project and/or get some early feedback which can make both your efforts much lighter as well as our review and merge procedures quick and simple.

Please see the Wiki for more details on configuring your environment, managing project dependencies, and testing procedures.

๐Ÿ’Œ License

The go-ethereum library (i.e. all code outside of the cmd directory) is licensed under the GNU Lesser General Public License v3.0, also included in our repository in the COPYING.LESSER file.

The go-ethereum binaries (i.e. all code inside of the cmd directory) is licensed under the GNU General Public License v3.0, also included in our repository in the COPYING file.

go-ethereum's People

Contributors

austinabell avatar dziabko avatar gregthegreek avatar n8wb avatar noot avatar soc1c avatar steviezhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-ethereum's Issues

Version name difference between building from source and release binaries

Hi,

I just (190818 ~1500) did a
git clone https://github.com/etclabscore/go-ethereum.git
and received the same src (0 differences) as reverenced in https://github.com/etclabscore/go-ethereum/releases (https://github.com/etclabscore/go-ethereum/archive/v6.0.8.zip). However, the version build from source reports

Geth Classic version: v6.0.6-13-g30d7eed

but the binary release (https://github.com/etclabscore/go-ethereum/releases/download/v6.0.8/geth-classic-v6.0.8-linux.tar.gz) reports

Geth Classic version: v6.0.8

Did I screw up? Or is there a mistake in the release procedure and the release binary has not been build from the src?

Best regards


Edit:
The version number is not in the src, but instead comes from
go build -o ./bin/geth -ldflags "-X main.Version="`git describe --tags` -tags="netgo" ./cmd/geth
Since
git describe --tags
returns

v6.0.6-13-g30d7eed

I now know where the version number originates. I am not working that much with git, therefore I cannot say where it gets the v6.0.6 part from - the other part is the latest commit.
FYI:
git describe --candidates 10
also solely returns

v6.0.6-13-g30d7eed

Do not use reserved JSON-RPC error codes

Copy from ethereum/go-ethereum#20050

Let's just fix the specific issue, use of -32000. Of course there are other problems with the current json rpc errors, but none as severe as this one.

System information

Geth version: all
OS & Version: all

Expected behaviour

Go ethereum returns errors whose code is not in the range -32768 to -32000 inclusive.

this means that the error defined as

{
  "code": -32000,
  "message": "Invalid input",
  "data": "- Missing or invalid parameters"
}

Should have a code that is 1 greater than the current greatest error code, so -32005

Actual behaviour

As described by eip-1474, -32000 is in use

Steps to reproduce the behaviour

call any json rpc method without parameters

curl -XPOST localhost:8545 -H "Content-Type: application/json" -d '{"jsonrpc": "2.0","id": 1, "method": "eth_getBlockByNumber", "params": []}'

State trie clearing implementation detail

When completing the revert opcode, there were two test cases, which performed very similar logic that did not error because of REVERT at all and had mentioned being a state trie clearing test in one the filler test files (FailedCreateRevertsDeletion).

The two test files are:
FailedCreateRevertsDeletion.json
RevertPrefoundEmptyOOG.json

The scenario that both encounter is the following:
transaction calls A -> A creates X -> A hits error (OOG or intentional invalid opcode)

and my assumption is that either the empty contract that is created, X, isn't deleted OR the transaction state isn't reverted to the proper state at the start of the transaction.

edit: almost certain it is state trie clearing since the pre-byzantium tests pass on ETC

So either it is a missed edge case of state trie clearing, or an invalid existing implementation of state rollback within the existing ETC code.

I will look into this later, but documenting for now.

Here is the evm logs for both transactions (from ETH because they are cleaner than manually printing variables on ETC and the values are the same as the only difference is the accounts in post):

 --- PASS: TestState/RevertPrefoundEmptyOOG.json/Byzantium/0 (0.00s)
            state_test.go:107: EVM operation log:
                {"pc":0,"op":96,"gas":"0x11940","gasCost":"0x0","memory":"0x","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":2,"op":96,"gas":"0x1193d","gasCost":"0x0","memory":"0x","memSize":0,"stack":["0x20"],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":4,"op":96,"gas":"0x1193a","gasCost":"0x0","memory":"0x","memSize":0,"stack":["0x20","0x0"],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":6,"op":240,"gas":"0x11937","gasCost":"0x7d03","memory":"0x","memSize":32,"stack":["0x20","0x0","0x0"],"depth":1,"refund":0,"opName":"CREATE","error":""}
                {"pc":0,"op":0,"gas":"0x99c4","gasCost":"0x0","memory":"0x","memSize":0,"stack":[],"depth":2,"refund":0,"opName":"STOP","error":""}
                {"pc":7,"op":96,"gas":"0x9c34","gasCost":"0x7d03","memory":"0x","memSize":32,"stack":["0x7db299e0885c85039f56fa504a13dd8ce8a56aa7"],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":9,"op":85,"gas":"0x9c31","gasCost":"0x4e20","memory":"0x","memSize":32,"stack":["0x7db299e0885c85039f56fa504a13dd8ce8a56aa7","0x0"],"depth":1,"refund":0,"opName":"SSTORE","error":""}
                {"pc":10,"op":96,"gas":"0x4e11","gasCost":"0x4e20","memory":"0x","memSize":32,"stack":[],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":12,"op":96,"gas":"0x4e0e","gasCost":"0x4e20","memory":"0x","memSize":32,"stack":["0xc"],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":14,"op":85,"gas":"0x4e0b","gasCost":"0x4e20","memory":"0x","memSize":32,"stack":["0xc","0x1"],"depth":1,"refund":0,"opName":"SSTORE","error":"out of gas"}
                {"output":"","gasUsed":"0x11940","time":1485275,"error":"out of gas"}

FailedCreateRevertsDeletion.json has a slightly different flow:
transaction calls A -> A creates X -> X reverts back to A -> A hits invalid opcode and errors out

--- FAIL: TestState/FailedCreateRevertsDeletion.json/Byzantium/0 (0.00s)
            state_test.go:90: post state root mismatch: got 15755176ef2d7beb091958c3328a07aa87ff5a911e8388c422f24b96dd34e1d7, want 4198bc14346b78f666445049893f68de17d21f892a1e2c2848b576ff0d80cb4a
            state_test.go:107: EVM operation log:
                {"pc":0,"op":48,"gas":"0xe2a40","gasCost":"0x0","memory":"0x","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"ADDRESS","error":""}
                {"pc":1,"op":80,"gas":"0xe2a3e","gasCost":"0x0","memory":"0x","memSize":0,"stack":["0x6295ee1b4f6dd65047762f924ecd367c17eabf8f"],"depth":1,"refund":0,"opName":"POP","error":""}
                {"pc":2,"op":96,"gas":"0xe2a3c","gasCost":"0x0","memory":"0x","memSize":0,"stack":[],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":4,"op":128,"gas":"0xe2a39","gasCost":"0x0","memory":"0x","memSize":0,"stack":["0xc"],"depth":1,"refund":0,"opName":"DUP1","error":""}
                {"pc":5,"op":96,"gas":"0xe2a36","gasCost":"0x0","memory":"0x","memSize":0,"stack":["0xc","0xc"],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":7,"op":96,"gas":"0xe2a33","gasCost":"0x0","memory":"0x","memSize":0,"stack":["0xc","0xc","0x12"],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":9,"op":57,"gas":"0xe2a30","gasCost":"0x9","memory":"0x","memSize":32,"stack":["0xc","0xc","0x12","0x0"],"depth":1,"refund":0,"opName":"CODECOPY","error":""}
                {"pc":10,"op":96,"gas":"0xe2a27","gasCost":"0x9","memory":"0x","memSize":32,"stack":["0xc"],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":12,"op":96,"gas":"0xe2a24","gasCost":"0x9","memory":"0x","memSize":32,"stack":["0xc","0x0"],"depth":1,"refund":0,"opName":"PUSH1","error":""}
                {"pc":14,"op":240,"gas":"0xe2a21","gasCost":"0x7d00","memory":"0x","memSize":32,"stack":["0xc","0x0","0x0"],"depth":1,"refund":0,"opName":"CREATE","error":""}
                {"pc":0,"op":98,"gas":"0xd766d","gasCost":"0x0","memory":"0x","memSize":0,"stack":[],"depth":2,"refund":0,"opName":"PUSH3","error":""}
                {"pc":4,"op":96,"gas":"0xd766a","gasCost":"0x0","memory":"0x","memSize":0,"stack":["0x112233"],"depth":2,"refund":0,"opName":"PUSH1","error":""}
                {"pc":6,"op":82,"gas":"0xd7667","gasCost":"0x6","memory":"0x","memSize":32,"stack":["0x112233","0x0"],"depth":2,"refund":0,"opName":"MSTORE","error":""}
                {"pc":7,"op":96,"gas":"0xd7661","gasCost":"0x6","memory":"0x","memSize":32,"stack":[],"depth":2,"refund":0,"opName":"PUSH1","error":""}
                {"pc":9,"op":96,"gas":"0xd765e","gasCost":"0x6","memory":"0x","memSize":32,"stack":["0x20"],"depth":2,"refund":0,"opName":"PUSH1","error":""}
                {"pc":11,"op":253,"gas":"0xd765b","gasCost":"0x0","memory":"0x","memSize":32,"stack":["0x20","0x0"],"depth":2,"refund":0,"opName":"REVERT","error":""}
                {"pc":15,"op":80,"gas":"0xdad0f","gasCost":"0x7d00","memory":"0x","memSize":32,"stack":["0x0"],"depth":1,"refund":0,"opName":"POP","error":""}
                {"pc":16,"op":254,"gas":"0xdad0d","gasCost":"0x7d00","memory":"0x","memSize":32,"stack":[],"depth":1,"refund":0,"opName":"Missing opcode 0xfe","error":"invalid opcode 0xfe"}
                {"output":"","gasUsed":"0xe2a40","time":250217,"error":"invalid opcode 0xfe"}

Just posting here for resolution: both these test failures are most likely caused by an issue in how ETC handles dirty objects in the state. Geth was able to pass the failing tests after their overhaul of the statedb and journaling.

geth-classic-v6.0.8-linux.tar.gz archive seems to be incorrectly compressed

File geth-classic-v6.0.8-linux.tar.gz seems to be incorrectly compressed (gzipped twice). Hence, tar fails.

wget https://github.com/ethereumproject/go-ethereum/releases/download/v6.0.8/geth-classic-v6.0.8-linux.tar.gz
tar -xvzf geth-classic-v6.0.8-linux.tar.gz
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

file geth-classic-v6.0.8-linux.tar.gz 
geth-classic-v6.0.8-linux.tar.gz: gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT), original size 46593289

gunzip geth-classic-v6.0.8-linux.tar.gz

file geth-classic-v6.0.8-linux.tar
geth-classic-v6.0.8-linux.tar: gzip compressed data, last modified: Tue Aug 13 12:04:32 2019, from Unix, original size 96665600

6.0.8 Stable Atlantis Release Tracker

  • Import paths (#3)
  • Add whiteblock config/script (#11)
  • For the same txid, why is the "status" returned from getTransactionReceipt different between versions 5.5.2 and 6.0.6? (#23)
  • Storage and edge case fixes (#28)
  • Replace repository reference for accounts/abi/bind (#29)
  • X-Compile to Windows and MacOS (#32)
  • Tx Encoding and decoding fix (#33)
  • Docs: update badges (#34)
  • change import paths, again, fix #3 (#36)

0 value transfer transaction causes bad block in getc

Found unhealthy block #102249 (checking block=102249 without state, found nonabsent state for block #102248):

Block(#102249): Size: 647.00 B {
MinerHash: 89f33d5824cdd6dcf1a5008f0e3431e603e333e17f745106475dcf61cb6ef320
Header(fe5a8f2a97c6c795cc13d339be2638a9ff3401ea43006f4a6800fe0cd11cb691):
[
ParentHash: 8e67f1735feb10642b276dfa3934d02bdfc978fbd00680d886e8f9e4f80435b9
UncleHash: 1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347
Coinbase: b2ee81431c1bb2b6aa754c37b4757e066ecd5ed5
Root: a055aaffef1f09895ec558a3e4405f0bf585e51e9e135d4c1ae9e91395e59bfb
TxSha a0406479525ee52759f2e0534796db148437c8b03e878c64d1e232a8f7929f28
ReceiptSha: 056b23fbba480696b65fe5a59b8f2148a1299103c4f57df839233af2cf4ca2d2
Bloom: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Difficulty: 1864060
Number: 102249
GasLimit: 8000000
GasUsed: 21000
Time: 1561593775
Extra: ุƒ ๏ฟฝgeth๏ฟฝgo1.10.4๏ฟฝlinux
MixDigest: e46f635b7b3555208c7c1901f5b2e42d4ac0cc10db37eb3ec27058e50269184f
Nonce: 5da7d685a73d834f
]

caused by 0 value transaction:

TX(d57fabbe5835884559b6239be4aef6c2d9f1f82aa6791a81c35287e0cf966961)
Contract: false
From: 515e563eb27185f06f0e5c31752f51ea71ca2f88
To: c7a08e84bd46f0e740cfee2081d3933c929e2c54
Nonce: 0
GasPrice: 40000000000
GasLimit 8000000
Value: 0
Data: 0x
V: 0xa96
R: 0x374899042b7321e5f4624c239e40144ddb7d49a5b9dcc548569912c5f86c3ff3
S: 0x6d74e3efe7c3538144af771a3b6267c0f4821b1d8f1cd6a52346c8e6deaf4f59
Hex: f867808509502f9000837a120094c7a08e84bd46f0e740cfee2081d3933c929e2c548080820a96a0374899042b7321e5f4624c239e40144ddb7d49a5b9dcc548569912c5f86c3ff3a06d74e3efe7c3538144af771a3b6267c0f4821b1d8f1cd6a52346c8e6deaf4f59
]
Uncles:
[]
}

Probably caused by missing state-trie clearing details.

Import paths

We need to update the import paths to reflect etclabscore/go-ethereum and not eth-classic this will also require us to fork over necessary repositories.

Refactor execution.go

Refactor functions in execution.go to all be independent and not call and rely on flags in the exec function.

Geth 6.0.8/9 Windows build

EDIT problem is there is no Windows Build that I can see. Request that this be compiled and added to the assets list

Hi all,

Sorry to ask if this a stupid question but is there a current stable build for Windows out there? Maybe I'm missing something but after downloading I've ran into a few problems.

-geth-classic-v6.0.8-darwin.tar.gz (using 7 ZIP - I have assumed this is a windows build as the rest are marked Linux)
image

The I uncompressed the Zipped Zip to find this:
image

I tried renaming geth.exe files due to lacking extensions and get this:
image

I understand there is a hot-fix also but when I download that everything looks great except it's lacking geth.exe. As it is a hot fix that resolves issues with the bootnodes I guess Geth.exe wasn't needed as it is missing from this build. Can someone shed some light on what I am missing here or is this build just broken?

When I unzip the latest release you can see no geth.exe
image

and again...
image

There's a hard fork coming and would like to get this resolved. I'm not a programmer and my experience with compiling is somewhat lacking so would rather avoid that if I can.

For the same txid, why is the "status" returned from getTransactionReceipt different between versions 5.5.2 and 6.0.6?

Moved from https://github.com/ethereumclassic/go-ethereum/issues/64

I am trying to upgrade a node from version 5.5.2 to 6.0.6. But I am confused. For a successful transaction, getTransactionReceipt will return "status" to 1 on version 5.5.2. However, in version 6.0.6, "status" is 0 for the same txid.
Example:
txid: "0x57c6759aa9cd4ab72f60dc0f50f2bd122b00750425f0d7130bd83624424f0837"
on 5.5.2

{
  "blockHash": "0x5f42e57715275fcf44285e94cd187364f3060110e8b77fca0402b2420336b1ce",
  "blockNumber": 8544487,
  "contractAddress": null,
  "cumulativeGasUsed": 21000,
  "from": "0xdf7d7e053933b5cc24372f878c90e62dadad5d42",
  "gasUsed": 21000,
  "logs": [],
  "root": "6e1a89091922a0194173be1ac6159f2425cfda45c0e5d2898e586f4934d13f2f",
  "status": 1,
  "to": "0xb978fba16b86b4406bbed13f7d8719ed85a32cf4",
  "transactionHash": "0x57c6759aa9cd4ab72f60dc0f50f2bd122b00750425f0d7130bd83624424f0837",
  "transactionIndex": 0
}

but on 6.0.6

{
  "blockHash": "0x5f42e57715275fcf44285e94cd187364f3060110e8b77fca0402b2420336b1ce",
  "blockNumber": 8544487,
  "contractAddress": null,
  "cumulativeGasUsed": 21000,
  "from": "0xdf7d7e053933b5cc24372f878c90e62dadad5d42",
  "gasUsed": 21000,
  "logs": [],
  "root": "6e1a89091922a0194173be1ac6159f2425cfda45c0e5d2898e586f4934d13f2f",
  "status": 0,
  "to": "0xb978fba16b86b4406bbed13f7d8719ed85a32cf4",
  "transactionHash": "0x57c6759aa9cd4ab72f60dc0f50f2bd122b00750425f0d7130bd83624424f0837",
  "transactionIndex": 0
}

Segfault on Morden

2019-08-05 18:16:54 Sync      #1667477 of  #4767802 9f5279e9    47/1195/36 blk/txs/mgas sec  7/25 peers
2019-08-05 18:17:54 Sync      #1672193 of  #4767802 793bd1fc    78/ 440/37 blk/txs/mgas sec  7/25 peers
2019-08-05 18:18:54 Sync      #1676326 of  #4767802 c1d1212b    68/ 841/34 blk/txs/mgas sec  7/25 peers
2019-08-05 18:19:54 Sync      #1678690 of  #4767802 a0b96264    39/1162/32 blk/txs/mgas sec  7/25 peers
2019-08-05 18:20:54 Sync      #1681442 of  #4767802 5dab4279    45/1169/38 blk/txs/mgas sec  7/25 peers
2019-08-05 18:21:54 Sync      #1683943 of  #4767802 d4239601    41/1062/31 blk/txs/mgas sec  7/25 peers
2019-08-05 18:22:54 Sync      #1686875 of  #4767802 a9378f81    48/1062/36 blk/txs/mgas sec  7/25 peers
2019-08-05 18:23:54 Sync      #1690059 of  #4767802 0ee6dfbe    53/1088/32 blk/txs/mgas sec  7/25 peers
2019-08-05 18:24:54 Sync      #1692316 of  #4767802 207c4f6d    37/1256/33 blk/txs/mgas sec  7/25 peers
2019-08-05 18:25:54 Sync      #1694624 of  #4767802 fb337b77    38/1129/31 blk/txs/mgas sec  7/25 peers
2019-08-05 18:26:54 Sync      #1697015 of  #4767802 3e5aa2d1    39/1091/31 blk/txs/mgas sec  7/25 peers
2019-08-05 18:27:54 Sync      #1699199 of  #4767802 af8d33a3    36/1123/42 blk/txs/mgas sec  7/25 peers
2019-08-05 18:28:54 Sync      #1700507 of  #4767802 3cbe06a3    21/ 558/40 blk/txs/mgas sec  7/25 peers
2019-08-05 18:29:54 Sync      #1704693 of  #4767802 24df2065    69/ 394/39 blk/txs/mgas sec  7/25 peers
2019-08-05 18:30:54 Sync      #1707271 of  #4767802 d839d57d    42/ 628/30 blk/txs/mgas sec  7/25 peers
2019-08-05 18:31:54 Sync      #1710007 of  #4767802 f4bbded6    45/ 924/29 blk/txs/mgas sec  7/25 peers
2019-08-05 18:32:54 Sync      #1712106 of  #4767802 1c78ea55    34/1155/36 blk/txs/mgas sec  7/25 peers
2019-08-05 18:33:54 Sync      #1715791 of  #4767802 b0837fad    61/ 586/41 blk/txs/mgas sec  7/25 peers
2019-08-05 18:34:54 Sync      #1718916 of  #4767802 db9acf7f    52/ 721/49 blk/txs/mgas sec  7/25 peers
2019-08-05 18:35:54 Sync      #1721732 of  #4767802 89acfd59    46/ 870/28 blk/txs/mgas sec  7/25 peers
2019-08-05 18:36:54 Sync      #1724359 of  #4767802 91cce349    43/ 792/25 blk/txs/mgas sec  7/25 peers
2019-08-05 18:37:54 Sync      #1726192 of  #4767802 40ae8d17    30/ 660/21 blk/txs/mgas sec  7/25 peers
2019-08-05 18:38:54 Sync      #1728623 of  #4767802 44e7e3e5    40/ 642/29 blk/txs/mgas sec  7/25 peers
2019-08-05 18:39:54 Sync      #1728980 of  #4767802 155fe5c0     5/ 108/10 blk/txs/mgas sec  7/25 peers
2019-08-05 18:40:54 Sync      #1732179 of  #4767802 b8b7acec    53/ 879/40 blk/txs/mgas sec  7/25 peers
2019-08-05 18:41:54 Sync      #1732687 of  #4767802 129ec5f4     8/  39/ 7 blk/txs/mgas sec  7/25 peers
2019-08-05 18:42:54 Sync      #1734730 of  #4767802 180e7f4c    34/ 456/41 blk/txs/mgas sec  7/25 peers
2019-08-05 18:43:54 Sync      #1736261 of  #4767802 c6803c3e    25/ 380/78 blk/txs/mgas sec  7/25 peers
2019-08-05 18:44:54 Sync      #1739016 of  #4767802 a71f437b    45/ 653/31 blk/txs/mgas sec  7/25 peers
2019-08-05 18:45:54 Sync      #1742406 of  #4767802 296d7f96    56/ 824/33 blk/txs/mgas sec  7/25 peers
2019-08-05 18:46:54 Sync      #1745354 of  #4767802 34dba4d3    49/ 738/32 blk/txs/mgas sec  7/25 peers
2019-08-05 18:47:55 Sync      #1749411 of  #4767802 1a4ca3bd    67/ 491/24 blk/txs/mgas sec  7/25 peers
2019-08-05 18:48:55 Sync      #1753448 of  #4767802 2a02a0f7    67/ 417/25 blk/txs/mgas sec  7/25 peers
2019-08-05 18:49:54 Sync      #1756151 of  #4767802 39a2a3d1    45/ 977/34 blk/txs/mgas sec  7/25 peers
2019-08-05 18:50:54 Sync      #1758460 of  #4767802 85b7b09b    38/ 631/35 blk/txs/mgas sec  7/25 peers
2019-08-05 18:51:54 Sync      #1761619 of  #4767802 549f8437    52/ 759/34 blk/txs/mgas sec  8/25 peers
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xa888f6]

goroutine 1161 [running]:
github.com/eth-classic/go-ethereum/core/state.(*StateObject).Address(0x0, 0x0, 0x0, 0x0)
	/home/user/.opt/getc-core/core/state/state_object.go:323 +0x16
github.com/eth-classic/go-ethereum/core.create(0x1169d20, 0xc0859fb440, 0x7f290c35f440, 0x0, 0x9732abdd21ff43cf, 0x94e40aec95021266, 0x9d292f39f58f40ac, 0xabd5f42833d9a510, 0xc08d4d8880, 0xd23, ...)
	/home/user/.opt/getc-core/core/execution.go:251 +0xe2
github.com/eth-classic/go-ethereum/core.Create(0x1169d20, 0xc0859fb440, 0x7f290c35f440, 0x0, 0xc08d4d8880, 0xd23, 0xd23, 0xc0a33ce580, 0xc0a33ce5a0, 0xc0a33ce5e0, ...)
	/home/user/.opt/getc-core/core/execution.go:230 +0x16a
github.com/eth-classic/go-ethereum/core.(*VMEnv).Create(0xc0859fb440, 0x7f290c35f440, 0x0, 0xc08d4d8880, 0xd23, 0xd23, 0xc0a33ce580, 0xc0a33ce5a0, 0xc0a33ce5e0, 0x203011, ...)
	/home/user/.opt/getc-core/core/vm_env.go:123 +0xcb
github.com/eth-classic/go-ethereum/core.(*StateTransition).TransitionDb(0xc044e68540, 0xc0859fb440, 0x115d0c0, 0xc02d83fb80, 0xc08e084240, 0xc044e68540, 0xc0859fb440, 0xc00ec43ad0)
	/home/user/.opt/getc-core/core/state_transition.go:228 +0xa03
github.com/eth-classic/go-ethereum/core.ApplyMessage(0x1169d20, 0xc0859fb440, 0x115d0c0, 0xc02d83fb80, 0xc08e084240, 0xc05d974000, 0xc0859fb440, 0xc0447011f0, 0xc0001e1120, 0xc0027f6780, ...)
	/home/user/.opt/getc-core/core/state_transition.go:134 +0x65
github.com/eth-classic/go-ethereum/core.ApplyTransaction(0xc0003b5b00, 0xc0000cb8c0, 0xc08e084240, 0xc000469590, 0xc05d974000, 0xc02d83fb80, 0xc08e084180, 0x0, 0x0, 0x0, ...)
	/home/user/.opt/getc-core/core/state_processor.go:116 +0x107
github.com/eth-classic/go-ethereum/core.(*StateProcessor).Process(0xc00006c000, 0xc02bfbcc60, 0xc000469590, 0x3a3a7ce954a7703b, 0x5e58c700a170a7a9, 0x0, 0x0, 0x0, 0x1, 0x0, ...)
	/home/user/.opt/getc-core/core/state_processor.go:88 +0x3e5
github.com/eth-classic/go-ethereum/core.(*BlockChain).InsertChain(0xc0000cb8c0, 0xc02b506000, 0x800, 0x800, 0xc02bb7db00)
	/home/user/.opt/getc-core/core/blockchain.go:1646 +0x1ea7
github.com/eth-classic/go-ethereum/eth/downloader.(*Downloader).importBlockResults(0xc0001e49c0, 0xc02696a000, 0x800, 0x800, 0x800, 0x0)
	/home/user/.opt/getc-core/eth/downloader/downloader.go:1449 +0x5c9
github.com/eth-classic/go-ethereum/eth/downloader.(*Downloader).processFullSyncContent(0xc0001e49c0, 0x55b54fa7c561709a, 0xc002250798)
	/home/user/.opt/getc-core/eth/downloader/downloader.go:1422 +0x79
github.com/eth-classic/go-ethereum/eth/downloader.(*Downloader).spawnSync.func1(0xc0001e49c0, 0xc003099f20, 0xc0031aacb0)
	/home/user/.opt/getc-core/eth/downloader/downloader.go:583 +0x59
created by github.com/eth-classic/go-ethereum/eth/downloader.(*Downloader).spawnSync
	/home/user/.opt/getc-core/eth/downloader/downloader.go:583 +0xaf

~/.opt/getc-core austin/executionrefactor 3h 16m 34s
โฏ bin/geth --testnet --rpc
2019-08-05 22:20:40 Geth Classic version: v6.0.6-24-g6cc8fde
2019-08-05 22:20:40 Blockchain: Morden Testnet
2019-08-05 22:20:40 Chain database: /home/user/.ethereum-classic/morden/chaindata
2019-08-05 22:20:40 Blockchain upgrades configured: 7
2019-08-05 22:20:40   494000 Homestead
2019-08-05 22:20:40  1783000 GasReprice
2019-08-05 22:20:40  1885000 The DAO Hard Fork
2019-08-05 22:20:40  1915000 Diehard
2019-08-05 22:20:40  2000000 Gotham
2019-08-05 22:20:40  2300000 Defuse Difficulty Bomb
2019-08-05 22:20:40  4729274 Atlantis
2019-08-05 22:20:40 Using 21 configured bootnodes
2019-08-05 22:20:40 Use Sputnik EVM: false
2019-08-05 22:20:40 No etherbase set and no accounts found as default
2019-08-05 22:20:40 Allotted 1024MB cache and 1024 file handles to /home/user/.ethereum-classic/morden/chaindata
2019-08-05 22:20:42 Allotted 16MB cache and 16 file handles to /home/user/.ethereum-classic/morden/dapp
2019-08-05 22:20:42 Protocol Versions: [63 62], Network Id: 2, Chain Id: 62
2019-08-05 22:20:42 Genesis block: 0x0cd786a2425d16f152c658316c423e6ce1181e15c3295826d7c9904cba9ce303 (morden testnet)
2019-08-05 22:20:42 Local head header:     #1763244 [0x8e2be2โ€ฆ] TD=392735219237414
2019-08-05 22:20:42 Local head full block: #1763244 [0x8e2be2โ€ฆ] TD=392735219237414
2019-08-05 22:20:42 Local head fast block: #1763244 [0x8e2be2โ€ฆ] TD=392735219237414
2019-08-05 22:20:42 Starting server...
2019-08-05 22:20:42 Mapping network port udp:30303 -> 30303 (ethereum discovery) using NAT-PMP(192.168.0.1)
2019-08-05 22:20:42 UDP listening. Client enode: enode://d529883f7d66a96a98e0dab15371d8b58d84d81796c7ae28333faf49635e24348e2aecc26c33cb8dcd390129bf1a2af46e81e0eabd09d691b302df08429078b6@192.168.1.100:30303
2019-08-05 22:20:42 IPC endpoint opened: /home/user/.ethereum-classic/morden/geth.ipc
2019-08-05 22:20:42 HTTP endpoint: http://localhost:8545
2019-08-05 22:20:42 Debug log config: verbosity=5 log-dir=/home/user/.ethereum-classic/morden/log vmodule=*
2019-08-05 22:20:42 Display log config: display=3 status=sync=1m0s
2019-08-05 22:20:42 Machine log config: mlog=off
2019-08-05 22:20:42 Mapping network port tcp:30303 -> 30303 (ethereum p2p) using NAT-PMP(192.168.0.1)
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xa888f6]

goroutine 2364 [running]:
github.com/eth-classic/go-ethereum/core/state.(*StateObject).Address(0x0, 0x0, 0x0, 0x0)
	/home/user/.opt/getc-core/core/state/state_object.go:323 +0x16
github.com/eth-classic/go-ethereum/core.create(0x1169d20, 0xc002a6d860, 0x7ff08840f980, 0x0, 0x9732abdd21ff43cf, 0x94e40aec95021266, 0x9d292f39f58f40ac, 0xabd5f42833d9a510, 0xc00a1f4d80, 0xd23, ...)
	/home/user/.opt/getc-core/core/execution.go:251 +0xe2
github.com/eth-classic/go-ethereum/core.Create(0x1169d20, 0xc002a6d860, 0x7ff08840f980, 0x0, 0xc00a1f4d80, 0xd23, 0xd23, 0xc0045ce5a0, 0xc0045ce5c0, 0xc0045ce600, ...)
	/home/user/.opt/getc-core/core/execution.go:230 +0x16a
github.com/eth-classic/go-ethereum/core.(*VMEnv).Create(0xc002a6d860, 0x7ff08840f980, 0x0, 0xc00a1f4d80, 0xd23, 0xd23, 0xc0045ce5a0, 0xc0045ce5c0, 0xc0045ce600, 0x203000, ...)
	/home/user/.opt/getc-core/core/vm_env.go:123 +0xcb
github.com/eth-classic/go-ethereum/core.(*StateTransition).TransitionDb(0xc001d97c00, 0xc002a6d860, 0x115d0c0, 0xc019d42820, 0xc00972ccc0, 0xc001d97c00, 0xc002a6d860, 0xc01797d2c0)
	/home/user/.opt/getc-core/core/state_transition.go:228 +0xa03
github.com/eth-classic/go-ethereum/core.ApplyMessage(0x1169d20, 0xc002a6d860, 0x115d0c0, 0xc019d42820, 0xc00972ccc0, 0xc0141ca000, 0xc002a6d860, 0xc001d99110, 0xc0000ff120, 0xc00025ca80, ...)
	/home/user/.opt/getc-core/core/state_transition.go:134 +0x65
github.com/eth-classic/go-ethereum/core.ApplyTransaction(0xc00017db30, 0xc0002447e0, 0xc00972ccc0, 0xc017a402d0, 0xc0141ca000, 0xc019d42820, 0xc00972cc00, 0x0, 0x0, 0x0, ...)
	/home/user/.opt/getc-core/core/state_processor.go:116 +0x107
github.com/eth-classic/go-ethereum/core.(*StateProcessor).Process(0xc000f08e30, 0xc015abafc0, 0xc017a402d0, 0x3a3a7ce954a7703b, 0x5e58c700a170a7a9, 0x0, 0x0, 0xc0179a7f40, 0xc000bfd400, 0x50, ...)
	/home/user/.opt/getc-core/core/state_processor.go:88 +0x3e5
github.com/eth-classic/go-ethereum/core.(*BlockChain).InsertChain(0xc0002447e0, 0xc01b3396d0, 0x2, 0x2, 0xc005c10a00)
	/home/user/.opt/getc-core/core/blockchain.go:1646 +0x1ea7
github.com/eth-classic/go-ethereum/eth/downloader.(*Downloader).importBlockResults(0xc0001d4ea0, 0xc01b3395f0, 0x2, 0x2, 0x2, 0xfa258e96f7d1b956)
	/home/user/.opt/getc-core/eth/downloader/downloader.go:1449 +0x5c9
github.com/eth-classic/go-ethereum/eth/downloader.(*Downloader).processFullSyncContent(0xc0001d4ea0, 0x4830fe349d80fa12, 0xc019dc5f98)
	/home/user/.opt/getc-core/eth/downloader/downloader.go:1422 +0x79
github.com/eth-classic/go-ethereum/eth/downloader.(*Downloader).spawnSync.func1(0xc0001d4ea0, 0xc019d253e0, 0xc0175cf750)
	/home/user/.opt/getc-core/eth/downloader/downloader.go:583 +0x59
created by github.com/eth-classic/go-ethereum/eth/downloader.(*Downloader).spawnSync
	/home/user/.opt/getc-core/eth/downloader/downloader.go:583 +0xaf

~/.opt/getc-core austin/executionrefactor 36s
โฏ 

geth-classic-v6.0.8-linux.tar.gz archive seems to be incorrectly compressed

File geth-classic-v6.0.8-linux.tar.gz seems to be incorrectly compressed (gzipped twice). Hence, tar fails.

wget https://github.com/ethereumproject/go-ethereum/releases/download/v6.0.8/geth-classic-v6.0.8-linux.tar.gz
tar -xvzf geth-classic-v6.0.8-linux.tar.gz
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

file geth-classic-v6.0.8-linux.tar.gz 
geth-classic-v6.0.8-linux.tar.gz: gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT), original size 46593289

gunzip geth-classic-v6.0.8-linux.tar.gz

file geth-classic-v6.0.8-linux.tar
geth-classic-v6.0.8-linux.tar: gzip compressed data, last modified: Tue Aug 13 12:04:32 2019, from Unix, original size 96665600

Consensus issue with how/ what CALL operations touch accounts to be deleted

For context, EIP 158/161 touches any accounts through any CALL type operations with a zero value transfer (CALL, DELEGATECALL, CALLCODE), which marks them for deletion at the end of the transaction if they are still empty objects. Empty objects is defined as having 0 balance, nonce, code, and storage.

Currently in ETH Geth, there is an intentional touch on STATICCALL implementation that causes a touch (there is no functional need for this because STATICCALL is explicitly a non-state changing operation) but also CALLCODE and DELEGATECALL currently on ETC transfer a value of 0 since it is a shared exec(...) function, which causes a touch. This did not matter previously (or when all empty object will be deleted) because the behaviour would be consistent.

The consensus issue made most explicit is if the clients make a STATICCALL operation to an empty account at an address and that transaction runs OOG, the different clients will disagree with which empty accounts will be deleted. This is not obvious by tests because the tests prior and including Byzantium did not expose this change, but a lot of the Constantinople tests do (maybe a reason to follow this strange implementation)

On ETH Geth, they are currently expecting the failure of certain tests because of their implementation:

	// Expected failures:
	st.fails(`^stRevertTest/RevertPrecompiledTouch(_storage)?\.json/Byzantium/0`, "bug in test")
	st.fails(`^stRevertTest/RevertPrecompiledTouch(_storage)?\.json/Byzantium/3`, "bug in test")
	st.fails(`^stRevertTest/RevertPrecompiledTouch(_storage)?\.json/Constantinople/0`, "bug in test")
	st.fails(`^stRevertTest/RevertPrecompiledTouch(_storage)?\.json/Constantinople/3`, "bug in test")
	st.fails(`^stRevertTest/RevertPrecompiledTouch(_storage)?\.json/ConstantinopleFix/0`, "bug in test")
	st.fails(`^stRevertTest/RevertPrecompiledTouch(_storage)?\.json/ConstantinopleFix/3`, "bug in test")

For reference here is what these tests call inside the test in assembly:

(Explained in plain english each test is calling all of the precompile addresses with 0 value with different CALL operation types)

0: CALL)

"code" : "{ (CALL 50000 1 0 0 0 0 0) (CALL 50000 2 0 0 0 0 0) (CALL 50000 3 0 0 0 0 0) (CALL 50000 4 0 0 0 0 0) (CALL 50000 5 0 0 0 0 0) (CALL 50000 6 0 0 0 0 0) (CALL 50000 7 0 0 0 0 0) (CALL 50000 8 0 0 0 0 0) [[1]] (GAS) [[2]] (GAS) [[3]] (GAS) }",

3: STATICCALL)

"code" : "{ (STATICCALL 50000 1 0 0 0 0) (STATICCALL 50000 2 0 0 0 0) (STATICCALL 50000 3 0 0 0 0) (STATICCALL 50000 4 0 0 0 0) (STATICCALL 50000 5 0 0 0 0) (STATICCALL 50000 6 0 0 0 0) (STATICCALL 50000 7 0 0 0 0) (STATICCALL 50000 8 0 0 0 0) [[1]] (GAS) [[2]] (GAS) [[3]] (GAS) }",

and for reference, the two tests that pass and expect to pass:

1: DELEGATECALL)

"code" : "{ (DELEGATECALL 50000 1 0 0 0 0) (DELEGATECALL 50000 2 0 0 0 0) (DELEGATECALL 50000 3 0 0 0 0) (DELEGATECALL 50000 4 0 0 0 0) (DELEGATECALL 50000 5 0 0 0 0) (DELEGATECALL 50000 6 0 0 0 0) (DELEGATECALL 50000 7 0 0 0 0) (DELEGATECALL 50000 8 0 0 0 0) [[1]] (GAS) [[2]] (GAS) [[3]] (GAS) }",

2: CALLCODE)

"code" : "{ (CALLCODE 50000 1 0 0 0 0 0) (CALLCODE 50000 2 0 0 0 0 0) (CALLCODE 50000 3 0 0 0 0 0) (CALLCODE 50000 4 0 0 0 0 0) (CALLCODE 50000 5 0 0 0 0 0) (CALLCODE 50000 6 0 0 0 0 0) (CALLCODE 50000 7 0 0 0 0 0) (CALLCODE 50000 8 0 0 0 0 0) [[1]] (GAS) [[2]] (GAS) [[3]] (GAS) }",

Which all four of these tests pass if the explicit touch on ETH is removed.

To clarify, this implementation caused the tests to fail and ETH expected those tests to fail in order to remain in consensus with Parity on the main net chain

This is a bad reason to follow this implementation, but would make testing Agharta much easier since all tests expect this behaviour now, and it does not functionally change anything once all existing empty objects are deleted (though it may have an effect if somehow a way to initialize empty accounts surfaces through a bug).

Another issue is that currently the implementations in Parity and ETH geth is that address 0x00...03 an exception to which addresses are cleared for being empty due to the issue with that precompile being deleted on main net when all empty accounts were touch deleted after the implementation of 161.
https://github.com/ethereum/go-ethereum/blob/master/core/state/journal.go#L165
This edge case was implemented at some point in some in progress merges into ETC geth despite the fact that it had no meaning on Ethereum Classic network.

Discussion of related topics referenced, on main net

Tying into this, we see a similar potential issue in address 0x5, where it may have been initialized from non-existant -> empty this would present a similar issue to what occured with address 0x3 if it is subject to the same edge case if we would presumably want to align ourselves with the parity implementation? (this could be resolved by sending a minimal balance to this address)


The implementation we have now produces the exact same test failures so on second thought there may not be any consensus issues. We inadvertently touched STATICCALL addresses in the exec call because of how the ETC code is structured. We should still talk about refactoring the execution.go file which handles these CALL code logic and be sure we want STATICCALL to touch the addresses it references so there is no consensus issue. I can explain more in detail if this is confusing.

V6.0.9 sync very slow,can't catch up with the latest block

Syncing very slow, According to this speed, the sync can't catch up with the latest block for ever.

2019-10-11 16:37:50 Sync #8946896 of #8961583 e5e294f2 0/ 0/ 0 blk/txs/mgas sec 15/20 peers
2019-10-11 16:38:50 Sync #8946896 of #8961583 e5e294f2 0/ 0/ 0 blk/txs/mgas sec 15/20 peers
2019-10-11 16:39:50 Sync #8946896 of #8961583 e5e294f2 0/ 0/ 0 blk/txs/mgas sec 15/20 peers
2019-10-11 16:40:50 Sync #8946900 of #8961583 b9d9ede1 0/ 0/ 0 blk/txs/mgas sec 15/20 peers
2019-10-11 16:41:50 Sync #8946900 of #8961583 b9d9ede1 0/ 0/ 0 blk/txs/mgas sec 15/20 peers
2019-10-11 16:42:50 Sync #8946900 of #8961583 b9d9ede1 0/ 0/ 0 blk/txs/mgas sec 16/20 peers
2019-10-11 16:43:50 Sync #8946900 of #8961583 b9d9ede1 0/ 0/ 0 blk/txs/mgas sec 16/20 peers
2019-10-11 16:44:50 Sync #8946900 of #8961583 b9d9ede1 0/ 0/ 0 blk/txs/mgas sec 16/20 peers
2019-10-11 16:45:50 Sync #8946903 of #8961583 32fef573 0/ 0/ 0 blk/txs/mgas sec 16/20 peers
2019-10-11 16:46:50 Sync #8946904 of #8961583 53399eed 0/ 0/ 0 blk/txs/mgas sec 17/20 peers
2019-10-11 16:47:50 Sync #8946904 of #8961583 53399eed 0/ 0/ 0 blk/txs/mgas sec 16/20 peers
2019-10-11 16:48:50 Sync #8946908 of #8961583 5d488950 0/ 0/ 0 blk/txs/mgas sec 16/20 peers
2019-10-11 16:49:50 Sync #8946908 of #8961583 5d488950 0/ 0/ 0 blk/txs/mgas sec 17/20 peers
2019-10-11 16:50:50 Sync #8946912 of #8961583 6e517880 0/ 0/ 0 blk/txs/mgas sec 17/20 peers
2019-10-11 16:51:50 Sync #8946912 of #8961583 6e517880 0/ 0/ 0 blk/txs/mgas sec 17/20 peers
2019-10-11 16:52:50 Sync #8946912 of #8961583 6e517880 0/ 0/ 0 blk/txs/mgas sec 17/20 peers
2019-10-11 16:53:50 Sync #8946912 of #8961583 6e517880 0/ 0/ 0 blk/txs/mgas sec 17/20 peers
2019-10-11 16:54:50 Sync #8946915 of #8961583 1e186efe 0/ 0/ 0 blk/txs/mgas sec 17/20 peers

Mordor genesis has invalid timestamp (and thus wrong genesis block)

There is a genesis mismatch between getc and multigeth implementations of Mordor.

Owing to differing timestamp values, with getc showing timestamp: 1570141915 and multigeth showing timestamp: 0, they have derivative mismatches in size and thus in hash values as well.

This appears to be a client implementation issue, since the genesis/chain spec for Mordor on getc does not specify a nonzero timestamp for the genesis block, and the default setting for that value following the ETC and ETH genesis blocks is 0x0.


From classic geth (getc) at latest development branch head:

$ ./bin/geth --chain mordor --datadir ./fakemordor console --exec 'eth.getBlock(0, false);'
2019-11-13 13:09:19 Geth Classic version: v6.1.0-3-g09020c1
2019-11-13 13:09:19 Blockchain: Mordor Classic Testnet
2019-11-13 13:09:19 Chain database: /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/chaindata
2019-11-13 13:09:19 Blockchain upgrades configured: 8
2019-11-13 13:09:19        0 Homestead
2019-11-13 13:09:19        0 GasReprice
2019-11-13 13:09:19        0 The DAO Hard Fork
2019-11-13 13:09:19        0 Diehard
2019-11-13 13:09:19        0 Gotham
2019-11-13 13:09:19        0 Defuse Difficulty Bomb
2019-11-13 13:09:19        0 Atlantis
2019-11-13 13:09:19   301243 Agharta
2019-11-13 13:09:19 Using 6 configured bootnodes
2019-11-13 13:09:19 Use Sputnik EVM: false
2019-11-13 13:09:19 No etherbase set and no accounts found as default
2019-11-13 13:09:19 Allotted 1024MB cache and 1024 file handles to /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/chaindata
2019-11-13 13:09:19 Allotted 16MB cache and 16 file handles to /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/dapp
2019-11-13 13:09:19 Protocol Versions: [63 62], Network Id: 7, Chain Id: 63
2019-11-13 13:09:19 Genesis block: 0xa68ebde7932eccb177d38d55dcc6461a019dd795a681e59b5a3e4f3a7259a3f1 (mordor testnet)
2019-11-13 13:09:19 Local head header:     #0 [0xa68ebdโ€ฆ] TD=131072
2019-11-13 13:09:19 Local head full block: #0 [0xa68ebdโ€ฆ] TD=131072
2019-11-13 13:09:19 Local head fast block: #0 [0xa68ebdโ€ฆ] TD=131072
2019-11-13 13:09:19 Starting server...
2019-11-13 13:09:21 UDP listening. Client enode: enode://0ac354113ff4103647e2c67dafa26c8939e53de1fa11842f77384e858f5b60af614f916307f65a49e52c7b8daae7460ce58343f7a9bacdf91b661ad9a8742de9@[::]:30303
2019-11-13 13:09:21 IPC endpoint opened: /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/geth.ipc
{
  difficulty: 131072,
  extraData: "0x70686f656e697820636869636b656e206162737572642062616e616e61",
  gasLimit: 3141592,
  gasUsed: 0,
  hash: "0xa68ebde7932eccb177d38d55dcc6461a019dd795a681e59b5a3e4f3a7259a3f1",
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  miner: "0x0000000000000000000000000000000000000000",
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: "0x0000000000000000",
  number: 0,
  parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 540,
  stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  timestamp: 1570141915,
  totalDifficulty: 131072,
  transactions: [],
  transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  uncles: []
}
2019-11-13 13:09:21 IPC endpoint closed: /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/geth.ipc

$ ./bin/geth version
Geth Classic
Version: v6.1.0-3-g09020c1
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.12.1
Go OS: linux
Go Arch: amd64
Machine ID: bf649e56
GOPATH=/home/ia/go
GOROOT=/home/ia/go1.12.1.linux-amd64/go

From getc at Release 6.1.1:

$ ./bin/geth --chain mordor --datadir ./fakemordor console --exec 'eth.getBlock(0, false);'
2019-11-13 13:36:19 Geth Classic version: v6.1.1
2019-11-13 13:36:19 Blockchain: Mordor Classic Testnet
2019-11-13 13:36:19 Chain database: /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/chaindata
2019-11-13 13:36:19 Blockchain upgrades configured: 8
2019-11-13 13:36:19        0 Homestead
2019-11-13 13:36:19        0 GasReprice
2019-11-13 13:36:19        0 The DAO Hard Fork
2019-11-13 13:36:19        0 Diehard
2019-11-13 13:36:19        0 Gotham
2019-11-13 13:36:19        0 Defuse Difficulty Bomb
2019-11-13 13:36:19        0 Atlantis
2019-11-13 13:36:19   301243 Agharta
2019-11-13 13:36:19 Using 6 configured bootnodes
2019-11-13 13:36:19 Use Sputnik EVM: false
2019-11-13 13:36:19 No etherbase set and no accounts found as default
2019-11-13 13:36:19 Allotted 1024MB cache and 1024 file handles to /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/chaindata
2019-11-13 13:36:19 Allotted 16MB cache and 16 file handles to /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/dapp
2019-11-13 13:36:19 Protocol Versions: [63 62], Network Id: 7, Chain Id: 63
2019-11-13 13:36:19 Genesis block: 0xa68ebde7932eccb177d38d55dcc6461a019dd795a681e59b5a3e4f3a7259a3f1 (mordor testnet)
2019-11-13 13:36:19 Local head header:     #0 [0xa68ebdโ€ฆ] TD=131072
2019-11-13 13:36:19 Local head full block: #0 [0xa68ebdโ€ฆ] TD=131072
2019-11-13 13:36:19 Local head fast block: #0 [0xa68ebdโ€ฆ] TD=131072
2019-11-13 13:36:19 Starting server...
2019-11-13 13:36:21 UDP listening. Client enode: enode://dda96208e3ccc49f29adb9d87776fd9eb2e08a480de930cb43d4deb2a3786980f212c9a852554ceffec9e04594d8a7e275e3022fef19dac1596b38a93774dfbd@[::]:30303
2019-11-13 13:36:21 IPC endpoint opened: /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/geth.ipc
{
  difficulty: 131072,
  extraData: "0x70686f656e697820636869636b656e206162737572642062616e616e61",
  gasLimit: 3141592,
  gasUsed: 0,
  hash: "0xa68ebde7932eccb177d38d55dcc6461a019dd795a681e59b5a3e4f3a7259a3f1",
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  miner: "0x0000000000000000000000000000000000000000",
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: "0x0000000000000000",
  number: 0,
  parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 540,
  stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  timestamp: 1570141915,
  totalDifficulty: 131072,
  transactions: [],
  transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  uncles: []
}
2019-11-13 13:36:22 IPC endpoint closed: /home/ia/go/src/github.com/eth-classic/go-ethereum/fakemordor/mordor/geth.ipc

$ ./bin/geth version
Geth Classic
Version: v6.1.1
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.12.1
Go OS: linux
Go Arch: amd64
Machine ID: bf649e56
GOPATH=/home/ia/go
GOROOT=/home/ia/go1.12.1.linux-amd64/go

$ git rev-parse HEAD
3bed173e0611fabbf4c8fe3ad6e4b9cbff94bd5b

From multigeth:

$ ./build/bin/geth --mordor --datadir fakemordor console --exec 'eth.getBlock(0, false);'
INFO [11-13|13:16:21.339] Bumping default cache on mainnet         provided=1024 updated=4096
INFO [11-13|13:16:21.340] Maximum peer count                       ETH=50 LES=0 total=50
INFO [11-13|13:16:21.340] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
INFO [11-13|13:16:21.342] Starting peer-to-peer node               instance=MultiGeth/v1.9.3-unstable-442d1eac-20191106/linux-amd64/go1.12.1
INFO [11-13|13:16:21.343] Allocated trie memory caches             clean=1024.00MiB dirty=1024.00MiB
INFO [11-13|13:16:21.343] Allocated cache and file handles         database=/home/ia/go/src/github.com/ethereum/go-ethereum/fakemordor/geth/chaindata cache=2.00GiB handles=524288
INFO [11-13|13:16:21.381] Opened ancient database                  database=/home/ia/go/src/github.com/ethereum/go-ethereum/fakemordor/geth/chaindata/ancient
INFO [11-13|13:16:21.381] Writing custom genesis block
INFO [11-13|13:16:21.381] Persisted trie from memory database      nodes=0 size=0.00B time=2.934ยตs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [11-13|13:16:21.381] Initialised chain configuration          config="{ChainID: 63 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: 0 EIP155: 0 EIP158: 0 Byzantium: 0 Disposal: 0 Social: <nil> Ethersocial: <nil> ECIP1017: 2000000 EIP160: 0 ECIP1010PauseBlock: 0 ECIP1
010Length: 2000000 Constantinople: 301243 ConstantinopleFix: 301243 Istanbul: <nil> Engine: ethash}"
INFO [11-13|13:16:21.381] Disk storage enabled for ethash caches   dir=/home/ia/go/src/github.com/ethereum/go-ethereum/fakemordor/geth/ethash count=3
INFO [11-13|13:16:21.381] Disk storage enabled for ethash DAGs     dir=/home/ia/.ethash count=2
INFO [11-13|13:16:21.381] Initialising Ethereum protocol           versions=[63] network=7 dbversion=<nil>
WARN [11-13|13:16:21.381] Upgrade blockchain database version      from=<nil> to=7
INFO [11-13|13:16:21.415] Loaded most recent local header          number=0 hash=df93f5โ€ฆ4522fd td=131072 age=50y7mo3d
INFO [11-13|13:16:21.415] Loaded most recent local full block      number=0 hash=df93f5โ€ฆ4522fd td=131072 age=50y7mo3d
INFO [11-13|13:16:21.415] Loaded most recent local fast block      number=0 hash=df93f5โ€ฆ4522fd td=131072 age=50y7mo3d
INFO [11-13|13:16:21.415] Regenerated local transaction journal    transactions=0 accounts=0
INFO [11-13|13:16:21.436] Allocated fast sync bloom                size=2.00GiB
INFO [11-13|13:16:21.437] Initialized fast sync bloom              items=0 errorrate=0.000 elapsed=34.392ยตs
INFO [11-13|13:16:21.448] New local node record                    seq=1 id=4ab555b2fdd770e5 ip=127.0.0.1 udp=30303 tcp=30303
INFO [11-13|13:16:21.449] Started P2P networking                   self=enode://823abc2e64d31cc1b1a9c8ae63b9d18dd8244df7b3de5afb9adf263826f4075bce42f0509c88e6712d8ffef6148bce12c175828435a4746e4075f8d45a4ce842@127.0.0.1:30303
INFO [11-13|13:16:21.450] IPC endpoint opened                      url=/home/ia/go/src/github.com/ethereum/go-ethereum/fakemordor/geth.ipc
{
  difficulty: 131072,
  extraData: "0x70686f656e697820636869636b656e206162737572642062616e616e61",
  gasLimit: 3141592,
  gasUsed: 0,
  hash: "0xdf93f5d14abb48b3f10348f653b263c6676bb41fe8f66901da0d87ffb04522fd",
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  miner: "0x0000000000000000000000000000000000000000",
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: "0x0000000000000000",
  number: 0,
  parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 536,
  stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  timestamp: 0,
  totalDifficulty: 131072,
  transactions: [],
  transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  uncles: []
}
INFO [11-13|13:16:21.524] IPC endpoint closed                      url=/home/ia/go/src/github.com/ethereum/go-ethereum/fakemordor/geth.ipc
INFO [11-13|13:16:21.524] Blockchain manager stopped
INFO [11-13|13:16:21.524] Stopping Ethereum protocol
INFO [11-13|13:16:21.524] Ethereum protocol stopped
INFO [11-13|13:16:21.524] Transaction pool stopped

$ ./build/bin/geth version
MultiGeth
Version: 1.9.5-unstable
Git Commit: 8cdc3d6e26f87700eb4f788c2f963430e2e7c04d
Git Commit Date: 20191111
Architecture: amd64
Protocol Versions: [64 63]
Network Id: 1
Go Version: go1.12.1
Operating System: linux
GOPATH=/home/ia/go
GOROOT=/home/ia/go1.12.1.linux-amd64/go

Not synchronized

i7-4770
32GB RAM
512 GB SSD
1Gbit network

wait +/- 5 days - Sync not completed, after restart "knownStates" - 0.

I donโ€™t understand what is happening with this geth version.
Old version synced normally.
How to synchronize it?

ETC geth nodes

./geth --maxpeers 100 --maxpendpeers 100 --cache 1024 --rpc --rpcaddr "0.0.0.0" --rpcport "8545" --rpcapi "db,eth,net,web3,miner,personal" --log-status 20

Discover 0/100 peers
2019-08-22 23:51:40 Discover 0/100 peers
2019-08-22 23:52:00 Discover 0/100 peers
2019-08-22 23:52:20 Discover 0/100 peers
2019-08-22 23:52:40 Discover 0/100 peers
2019-08-22 23:53:06 Discover 0/100 peers
2019-08-22 23:53:20 Discover 0/100 peers
2019-08-22 23:53:40 Discover 0/100 peers
2019-08-22 23:54:00 Discover 0/100 peers
2019-08-22 23:54:23 Discover 0/100 peers
2019-08-22 23:54:40 Discover 0/100 peers
2019-08-22 23:55:00 Discover 0/100 peers
2019-08-22 23:55:20 Discover 0/100 peers

ETC cannot synchronize data

geth-classic-v6.0.9-linux.sha256 appears to be incorrect.

The hash of the latest release (linux at least seems to been missing the first few characters so it cannot be used to verify the binary:

$ cat geth-classic-v6.0.9-linux.sha256 
005e755ca0840d5679d18af22d15a8f20a0a1f49939ae427f2ac7ed0de1b3  ./geth-classic-v6.0.9-linux.tar.gz
$ sha256sum geth-classic-v6.0.9-linux.tar.gz 
fca005e755ca0840d5679d18af22d15a8f20a0a1f49939ae427f2ac7ed0de1b3  geth-classic-v6.0.9-linux.tar.gz

Geth v6.0.9 - failed to synchronize

The newest geth doesn't synchronize. It worked since v6.0.9 was related, bun now we have problem

Sep 30 09:05:13 ip-10-91-200-229 geth[13615]: 2019-09-30 09:05:13 Sync      #8886306 of  #8890156 fac8c3a2     0/   0/ 0 blk/txs/mgas sec  9/1000 peers
Sep 30 09:06:13 ip-10-91-200-229 geth[13615]: 2019-09-30 09:06:13 Sync      #8886306 of  #8890156 fac8c3a2     0/   0/ 0 blk/txs/mgas sec  8/1000 peers
Sep 30 09:07:13 ip-10-91-200-229 geth[13615]: 2019-09-30 09:07:13 Sync      #8886306 of  #8890156 fac8c3a2     0/   0/ 0 blk/txs/mgas sec 10/1000 peers
Sep 30 09:08:13 ip-10-91-200-229 geth[13615]: 2019-09-30 09:08:13 Sync      #8886306 of  #8890156 fac8c3a2     0/   0/ 0 blk/txs/mgas sec 10/1000 peers
Sep 30 09:09:13 ip-10-91-200-229 geth[13615]: 2019-09-30 09:09:13 Sync      #8886306 of  #8890156 fac8c3a2     0/   0/ 0 blk/txs/mgas sec 10/1000 peers
Sep 30 09:10:13 ip-10-91-200-229 geth[13615]: 2019-09-30 09:10:13 Sync      #8886306 of  #8890156 fac8c3a2     0/   0/ 0 blk/txs/mgas sec 12/1000 peers
Sep 30 09:11:13 ip-10-91-200-229 geth[13615]: 2019-09-30 09:11:13 Sync      #8886306 of  #8890156 fac8c3a2     0/   0/ 0 blk/txs/mgas sec 13/1000 peers
W0930 09:10:12.618199 p2p/server.go:708] dyndial 2bfd8f42d 78.46.99.43:21234 failed checkpoint addpeer: Useless peer
W0930 09:10:12.621770 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.650289 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.701847 p2p/server.go:708] dyndial 05bf76d93 95.217.47.25:21228 failed checkpoint addpeer: Useless peer
W0930 09:10:12.702777 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.717690 p2p/server.go:697] dyndial cffaacdda 46.4.54.167:31338 failed proto handshake: Too many peers
W0930 09:10:12.795265 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.806099 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.816662 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.828895 p2p/server.go:697] dyndial 482e6248e 159.65.192.56:30306 failed proto handshake: Too many peers
W0930 09:10:12.830911 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.836383 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.845991 p2p/server.go:697] dyndial ef6a10586 88.198.52.248:57955 failed proto handshake: Too many peers
W0930 09:10:12.851200 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.884074 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.896279 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.913090 p2p/server.go:708] dyndial 3bbfd5409 66.42.113.248:30303 failed checkpoint addpeer: Useless peer
W0930 09:10:12.923927 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.929992 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.946838 p2p/server.go:708] dyndial 626eae50f 34.221.216.2:30303 failed checkpoint addpeer: Useless peer
W0930 09:10:12.949699 p2p/server.go:697] dyndial 37fe8c0f8 74.207.240.177:30303 failed proto handshake: Too many peers
W0930 09:10:12.952614 eth/downloader/downloader.go:400] sync busy
W0930 09:10:12.953526 p2p/server.go:697] dyndial c2af168b1 45.63.67.36:30666 failed proto handshake: Too many peers
W0930 09:10:12.959067 p2p/server.go:697] dyndial 2c5b62f19 51.68.191.139:30305 failed proto handshake: Too many peers
W0930 09:10:13.029818 p2p/server.go:697] dyndial ee8f71a41 18.207.240.92:30301 failed proto handshake: Too many peers
W0930 09:10:13.030214 p2p/server.go:697] dyndial e601a0e0d 95.216.66.19:30303 failed proto handshake: Too many peers
W0930 09:10:13.055486 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.066161 p2p/server.go:697] dyndial a3f73d5ce 209.97.177.187:30304 failed proto handshake: Too many peers
W0930 09:10:13.093400 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.095877 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.118358 p2p/server.go:708] dyndial bbf4ba9ae 103.242.67.72:9999 failed checkpoint addpeer: Useless peer
W0930 09:10:13.129882 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.161838 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.181935 p2p/server.go:697] dyndial 58dc05543 23.111.165.218:30304 failed proto handshake: Too many peers
W0930 09:10:13.182197 p2p/server.go:708] dyndial eb68c74fa 167.179.101.170:53717 failed checkpoint addpeer: Useless peer
W0930 09:10:13.213124 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.215736 p2p/server.go:697] dyndial 434096bd1 104.236.143.16:30303 failed proto handshake: Too many peers
W0930 09:10:13.217194 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.229456 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.230454 p2p/server.go:708] dyndial 8a2f6a0df 78.46.99.43:21243 failed checkpoint addpeer: Useless peer
W0930 09:10:13.245696 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.246077 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.247201 p2p/server.go:708] dyndial 4564ee707 51.158.166.210:30303 failed checkpoint addpeer: Useless peer
W0930 09:10:13.250783 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.271869 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.273153 p2p/server.go:697] dyndial e5e519e50 35.188.233.42:30303 failed proto handshake: Too many peers
W0930 09:10:13.286243 p2p/server.go:697] dyndial 129fc6c06 35.178.198.221:30303 failed proto handshake: Too many peers
W0930 09:10:13.289754 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.290193 p2p/server.go:697] dyndial 0ed3bdc87 139.162.204.44:30303 failed proto handshake: Too many peers
W0930 09:10:13.292057 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.314220 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.320375 p2p/server.go:697] dyndial 6a97ae873 50.225.198.67:6969 failed proto handshake: Too many peers
W0930 09:10:13.331180 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.331490 p2p/server.go:708] dyndial b3f49e55a 95.217.63.47:21212 failed checkpoint addpeer: Useless peer
W0930 09:10:13.335771 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.351120 p2p/server.go:697] dyndial a20beda4a 95.216.46.124:21211 failed proto handshake: Too many peers
W0930 09:10:13.353078 p2p/server.go:697] dyndial 7dd70efb4 95.216.247.112:21231 failed proto handshake: Too many peers
W0930 09:10:13.359777 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.377576 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.383022 p2p/server.go:697] dyndial 9cfc633a9 147.135.211.203:30305 failed proto handshake: Too many peers
W0930 09:10:13.388606 p2p/server.go:697] dyndial 158ac5a48 159.203.56.33:30303 failed proto handshake: Too many peers
W0930 09:10:13.397044 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.400889 p2p/server.go:697] dyndial 1c5b05df9 95.216.247.112:21234 failed proto handshake: Too many peers
W0930 09:10:13.420960 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.423481 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.433116 p2p/server.go:697] dyndial 7d0954f5b 91.206.14.167:30303 failed proto handshake: Too many peers
W0930 09:10:13.434031 p2p/server.go:697] dyndial 13afd68c0 159.203.84.31:30303 failed proto handshake: Too many peers
W0930 09:10:13.442021 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.442142 p2p/server.go:708] dyndial bb6297ee1 93.170.54.14:21212 failed checkpoint addpeer: Useless peer
W0930 09:10:13.482911 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.483012 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.483511 p2p/server.go:697] dyndial 6332dbc47 95.216.215.98:28657 failed proto handshake: Too many peers
W0930 09:10:13.502701 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.503435 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.519655 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.522421 p2p/server.go:697] dyndial ef0318d68 167.86.69.156:30303 failed proto handshake: Too many peers
W0930 09:10:13.526318 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.530523 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.539940 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.569380 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.570576 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.633778 p2p/server.go:697] dyndial 6c5a76a29 35.233.250.171:30303 failed proto handshake: Too many peers
W0930 09:10:13.642513 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.660378 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.679749 p2p/server.go:708] dyndial 78e729eef 34.218.49.22:30303 failed checkpoint addpeer: Useless peer
W0930 09:10:13.681130 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.682769 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.870639 p2p/server.go:697] dyndial aded838dc 18.136.203.175:30303 failed proto handshake: Too many peers
W0930 09:10:13.958625 p2p/server.go:697] dyndial 6a9fcd242 13.124.14.32:30303 failed proto handshake: Too many peers
W0930 09:10:13.966497 p2p/server.go:697] dyndial 8e0074102 116.62.214.110:53717 failed proto handshake: Too many peers
W0930 09:10:13.986375 eth/downloader/downloader.go:400] sync busy
W0930 09:10:13.992658 eth/downloader/downloader.go:400] sync busy
W0930 09:10:14.057099 eth/downloader/downloader.go:400] sync busy
W0930 09:10:14.089141 eth/downloader/downloader.go:400] sync busy
W0930 09:10:14.162516 eth/downloader/downloader.go:400] sync busy
W0930 09:10:14.261264 p2p/server.go:697] dyndial 57e072957 13.115.85.68:30303 failed proto handshake: Too many peers
W0930 09:10:14.269661 p2p/server.go:697] dyndial 3421224eb 61.74.109.22:30033 failed proto handshake: Too many peers
W0930 09:10:14.285955 p2p/server.go:708] dyndial 4ebd96f5a 140.112.28.143:30303 failed checkpoint addpeer: Useless peer
W0930 09:10:14.508821 eth/downloader/downloader.go:400] sync busy
W0930 09:10:14.616968 p2p/server.go:697] dyndial 6e62d43fa 223.202.132.168:30303 failed proto handshake: Too many peers
W0930 09:10:15.003793 p2p/server.go:697] dyndial 81a00b222 3.81.29.113:30303 failed proto handshake: Too many peers
W0930 09:10:15.211714 eth/downloader/downloader.go:400] sync busy
W0930 09:10:15.441849 p2p/server.go:697] dyndial 5ec193fc5 113.105.173.100:30303 failed proto handshake: Too many peers

==> geth.INFO <==
W0930 09:10:17.761441 p2p/server.go:697] dyndial 67a7b67d7 207.154.228.6:57955 failed proto handshake: Too many peers
I0930 09:10:17.802170 p2p/server.go:745] srv.runPeer: Peer id=ed4b7be5c5ea57a8 addr=51.38.233.158:30303 name=Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12
I0930 09:10:17.814159 eth/handler.go:277] handler: peer:ed4b7be5c5ea57a8@[Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12] eth/63 ->connected
I0930 09:10:17.814246 eth/handler.go:282] handler: peer:ed4b7be5c5ea57a8@[Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12] eth/63 ->handshakefailed err=Genesis block mismatch - 29a742ba74d89fc24d2e48aeb1030fcb7276f4b2421488c05f2cc0f39aa1a273 (!= d4e56740f876aef8โ€ฆ)
I0930 09:10:17.814262 p2p/peer.go:217] Peer id=ed4b7be5c5ea57a8 addr=51.38.233.158:30303 name=Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12: protocol error: Genesis block mismatch - 29a742ba74d89fc24d2e48aeb1030fcb7276f4b2421488c05f2cc0f39aa1a273 (!= d4e56740f876aef8โ€ฆ) (Subprotocol error)
I0930 09:10:17.814385 p2p/server.go:775] removed: Peer id=ed4b7be5c5ea57a8 addr=51.38.233.158:30303 name=Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12 reason=Subprotocol error
W0930 09:10:17.817129 eth/downloader/downloader.go:400] sync busy
I0930 09:10:17.817145 eth/sync.go:199] downloader failed to synchronise mode= FULL peer= peer:79bdb66850751c0d@[Parity-Ethereum/v2.5.7-unstable-6bd7db9-20190829/x86_64-linux-gnu/rustc1.37.0] eth/63 err= busy
I0930 09:10:17.878456 p2p/server.go:745] srv.runPeer: Peer id=1dcf30a619d0e21b addr=167.86.124.180:30303 name=Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12
I0930 09:10:17.878891 eth/handler.go:277] handler: peer:1dcf30a619d0e21b@[Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12] eth/63 ->connected
I0930 09:10:17.878921 p2p/server.go:745] srv.runPeer: Peer id=2814b5a73d0a66aa addr=159.69.144.159:30303 name=Parity-Ethereum/v2.5.4-beta-d60e638-20190701/x86_64-linux-gnu/rustc1.35.0
I0930 09:10:17.879377 eth/handler.go:282] handler: peer:1dcf30a619d0e21b@[Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12] eth/63 ->handshakefailed err=Genesis block mismatch - 29a742ba74d89fc24d2e48aeb1030fcb7276f4b2421488c05f2cc0f39aa1a273 (!= d4e56740f876aef8โ€ฆ)
I0930 09:10:17.879407 p2p/peer.go:217] Peer id=1dcf30a619d0e21b addr=167.86.124.180:30303 name=Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12: protocol error: Genesis block mismatch - 29a742ba74d89fc24d2e48aeb1030fcb7276f4b2421488c05f2cc0f39aa1a273 (!= d4e56740f876aef8โ€ฆ) (Subprotocol error)
I0930 09:10:17.879554 p2p/server.go:775] removed: Peer id=1dcf30a619d0e21b addr=167.86.124.180:30303 name=Pirl/v1.8.27-v6-masternode-premium-damocles-4aa88705/linux-amd64/go1.12 reason=Subprotocol error
W0930 09:10:17.880292 eth/downloader/downloader.go:400] sync busy
I0930 09:10:17.880312 eth/sync.go:199] downloader failed to synchronise mode= FULL peer= peer:d50facc65e46bda6@[Parity-Ethereum/v2.5.6-stable-ff398fe-20190812/x86_64-linux-gnu/rustc1.36.0] eth/63 err= busy
W0930 09:10:17.885723 eth/downloader/downloader.go:400] sync busy
I0930 09:10:17.885738 eth/sync.go:199] downloader failed to synchronise mode= FULL peer= peer:83b33409349ffa25@[Parity-Ethereum/v2.5.6-stable-ff398fe-20190812/x86_64-linux-gnu/rustc1.36.0] eth/63 err= busy
I0930 09:10:17.885764 eth/handler.go:277] handler: peer:2814b5a73d0a66aa@[Parity-Ethereum/v2.5.4-beta-d60e638-20190701/x86_64-linux-gnu/rustc1.35.0] eth/63 ->connected
I0930 09:10:17.920921 p2p/server.go:745] srv.runPeer: Peer id=c063b4e2dac15c10 addr=144.202.53.154:30305 name=Geth/v1.2.0-Ether1_MN_SN-Robin-Hood-1fbc6b37/linux-amd64/go1.12.6
I0930 09:10:17.921261 eth/handler.go:277] handler: peer:c063b4e2dac15c10@[Geth/v1.2.0-Ether1_MN_SN-Robin-Hood-1fbc6b37/linux-amd64/go1.12.6] eth/63 ->connected
W0930 09:10:17.921327 eth/downloader/downloader.go:400] sync busy
I0930 09:10:17.921339 eth/sync.go:199] downloader failed to synchronise mode= FULL peer= peer:79bdb66850751c0d@[Parity-Ethereum/v2.5.7-unstable-6bd7db9-20190829/x86_64-linux-gnu/rustc1.37.0] eth/63 err= busy
I0930 09:10:17.880414 p2p/peer.go:207] Peer id=2814b5a73d0a66aa addr=159.69.144.159:30303 name=Parity-Ethereum/v2.5.4-beta-d60e638-20190701/x86_64-linux-gnu/rustc1.35.0: remote requested disconnect: Too many peers
I0930 09:10:17.922821 eth/handler.go:282] handler: peer:2814b5a73d0a66aa@[Parity-Ethereum/v2.5.4-beta-d60e638-20190701/x86_64-linux-gnu/rustc1.35.0] eth/63 ->handshakefailed err=EOF
I0930 09:10:17.955281 p2p/server.go:775] removed: Peer id=2814b5a73d0a66aa addr=159.69.144.159:30303 name=Parity-Ethereum/v2.5.4-beta-d60e638-20190701/x86_64-linux-gnu/rustc1.35.0 reason=Disconnect requested
W0930 09:10:18.010008 p2p/server.go:708] dyndial ba8e1948c 142.93.117.170:30303 failed checkpoint addpeer: Useless peer
I0930 09:10:18.010697 eth/handler.go:282] handler: peer:c063b4e2dac15c10@[Geth/v1.2.0-Ether1_MN_SN-Robin-Hood-1fbc6b37/linux-amd64/go1.12.6] eth/63 ->handshakefailed err=Genesis block mismatch - 70cefc67ff52eb3e1ea9fc9e721d0458a952632927d2d7cb435b250c0c32e653 (!= d4e56740f876aef8โ€ฆ)
I0930 09:10:18.010729 p2p/peer.go:217] Peer id=c063b4e2dac15c10 addr=144.202.53.154:30305 name=Geth/v1.2.0-Ether1_MN_SN-Robin-Hood-1fbc6b37/linux-amd64/go1.12.6: protocol error: Genesis block mismatch - 70cefc67ff52eb3e1ea9fc9e721d0458a952632927d2d7cb435b250c0c32e653 (!= d4e56740f876aef8โ€ฆ) (Subprotocol error)
I0930 09:10:18.010919 p2p/server.go:775] removed: Peer id=c063b4e2dac15c10 addr=144.202.53.154:30305 name=Geth/v1.2.0-Ether1_MN_SN-Robin-Hood-1fbc6b37/linux-amd64/go1.12.6 reason=Subprotocol error
W0930 09:10:18.011747 p2p/server.go:708] dyndial b7849cb17 66.42.113.71:30303 failed checkpoint addpeer: Useless peer
W0930 09:10:18.051724 p2p/server.go:697] dyndial 037d719c1 54.69.80.225:30303 failed proto handshake: Too many peers
W0930 09:10:18.347727 p2p/server.go:697] dyndial 987603bb3 182.123.201.155:20182 failed proto handshake: Too many peers
I0930 09:10:20.797082 eth/handler.go:748] Peer 79bdb66850751c0d: setting head: tdWas=745413169165778164167 trueTD=745413290522779869677
I0930 09:10:20.797126 eth/fetcher/fetcher.go:659] Peer 79bdb66850751c0d: discarded block #8890182 [0x7be83355803c93833cb8ccfc98bb07cf68429a6c244f3626b6596ecc92a072c5], distance 3876
I0930 09:10:20.813166 eth/handler.go:748] Peer 50808461dd73b3d7: setting head: tdWas=745413169165778164167 trueTD=745413290522779869677
I0930 09:10:20.813182 eth/fetcher/fetcher.go:659] Peer 50808461dd73b3d7: discarded block #8890182 [0x7be83355803c93833cb8ccfc98bb07cf68429a6c244f3626b6596ecc92a072c5], distance 3876
I0930 09:10:20.814864 eth/handler.go:748] Peer d50facc65e46bda6: setting head: tdWas=745413169165778164167 trueTD=745413290522779869677
I0930 09:10:20.814885 eth/fetcher/fetcher.go:659] Peer d50facc65e46bda6: discarded block #8890182 [0x7be83355803c93833cb8ccfc98bb07cf68429a6c244f3626b6596ecc92a072c5], distance 3876
I0930 09:10:20.826516 eth/handler.go:748] Peer 3fe9705a02487bae: setting head: tdWas=745413169165778164167 trueTD=745413290522779869677
I0930 09:10:20.826555 eth/fetcher/fetcher.go:659] Peer 3fe9705a02487bae: discarded block #8890182 [0x7be83355803c93833cb8ccfc98bb07cf68429a6c244f3626b6596ecc92a072c5], distance 3876
I0930 09:10:20.862254 eth/handler.go:748] Peer 0daae2a30f2c73b0: setting head: tdWas=745413169165778164167 trueTD=745413290522779869677
I0930 09:10:20.862283 eth/fetcher/fetcher.go:659] Peer 0daae2a30f2c73b0: discarded block #8890182 [0x7be83355803c93833cb8ccfc98bb07cf68429a6c244f3626b6596ecc92a072c5], distance 3876
I0930 09:10:20.862307 eth/fetcher/fetcher.go:659] Peer a0d5c589dc02d008: discarded block #8890182 [0x7be83355803c93833cb8ccfc98bb07cf68429a6c244f3626b6596ecc92a072c5], distance 3876
I0930 09:10:20.862325 eth/handler.go:748] Peer a0d5c589dc02d008: setting head: tdWas=745413169165778164167 trueTD=745413290522779869677
I0930 09:10:20.881579 eth/handler.go:748] Peer c071d96b0c0f1300: setting head: tdWas=745413169165778164167 trueTD=745413290522779869677
I0930 09:10:20.881614 eth/fetcher/fetcher.go:659] Peer c071d96b0c0f1300: discarded block #8890182 [0x7be83355803c93833cb8ccfc98bb07cf68429a6c244f3626b6596ecc92a072c5], distance 3876
I0930 09:10:20.937416 eth/handler.go:748] Peer 83b33409349ffa25: setting head: tdWas=745413169165778164167 trueTD=745413290522779869677
I0930 09:10:20.937443 eth/fetcher/fetcher.go:659] Peer 83b33409349ffa25: discarded block #8890182 [0x7be83355803c93833cb8ccfc98bb07cf68429a6c244f3626b6596ecc92a072c5], distance 3876
I0930 09:10:21.644267 eth/downloader/downloader.go:1687] Quality of service: rtt 11.893601455s, conf 1.000, ttl 35.680840044s

==> geth.WARN <==
W0930 09:10:17.761441 p2p/server.go:697] dyndial 67a7b67d7 207.154.228.6:57955 failed proto handshake: Too many peers
W0930 09:10:17.817129 eth/downloader/downloader.go:400] sync busy
W0930 09:10:17.880292 eth/downloader/downloader.go:400] sync busy
W0930 09:10:17.885723 eth/downloader/downloader.go:400] sync busy
W0930 09:10:17.921327 eth/downloader/downloader.go:400] sync busy
W0930 09:10:18.010008 p2p/server.go:708] dyndial ba8e1948c 142.93.117.170:30303 failed checkpoint addpeer: Useless peer
W0930 09:10:18.011747 p2p/server.go:708] dyndial b7849cb17 66.42.113.71:30303 failed checkpoint addpeer: Useless peer
W0930 09:10:18.051724 p2p/server.go:697] dyndial 037d719c1 54.69.80.225:30303 failed proto handshake: Too many peers
W0930 09:10:18.347727 p2p/server.go:697] dyndial 987603bb3 182.123.201.155:20182 failed proto handshake: Too many peers

version 6.0.9 can not find peers

Hi,
My geth(v6.0.9) node on an ubuntu server can not find any peer.
How to resolve this problem?

2019-10-10 15:42:57 Geth Classic version: v6.0.9
2019-10-10 15:42:57 Blockchain: Ethereum Classic Mainnet
2019-10-10 15:42:57 Chain database: /data/etc_mainnet/mainnet/chaindata
2019-10-10 15:42:57 Blockchain upgrades configured: 7
2019-10-10 15:42:57  1150000 Homestead
2019-10-10 15:42:57  1920000 The DAO Hard Fork (0x94365e3a8c0b35089c1d1195081fe7489b528a84b22199c916180db8b28ade7f)
2019-10-10 15:42:57  2500000 GasReprice
2019-10-10 15:42:57  3000000 Diehard
2019-10-10 15:42:57  5000000 Gotham
2019-10-10 15:42:57  5900000 Defuse Difficulty Bomb
2019-10-10 15:42:57  8772000 Atlantis
2019-10-10 15:42:57 Using 16 configured bootnodes
2019-10-10 15:42:57 Use Sputnik EVM: false
2019-10-10 15:42:57 Allotted 1024MB cache and 1024 file handles to /data/etc_mainnet/mainnet/chaindata
2019-10-10 15:43:01 Allotted 16MB cache and 16 file handles to /data/etc_mainnet/mainnet/dapp
2019-10-10 15:43:01 Protocol Versions: [63 62], Network Id: 1, Chain Id: 61
2019-10-10 15:43:02 Genesis block: 0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3 (mainnet)
2019-10-10 15:43:02 Local head header:     #8900528 [0x8fd003โ€ฆ] TD=729514543339531618369
2019-10-10 15:43:02 Local head full block: #8900528 [0x8fd003โ€ฆ] TD=729514543339531618369
2019-10-10 15:43:02 Local head fast block: #8900528 [0x8fd003โ€ฆ] TD=729514543339531618369
2019-10-10 15:43:02 Starting server...
2019-10-10 15:43:02 UDP listening. Client enode: enode://77b9a8c695b73e94633d50cb82076c488ce1d15cac4b87f2ddb75326af2953bb58bfaaa56bc45a38dc5e0343d6b53465dc175d955650d3a06a9673a30d1dc764@[::]:30303
2019-10-10 15:43:02 IPC endpoint opened: /data/etc_mainnet/mainnet/geth.ipc
2019-10-10 15:43:02 HTTP endpoint: http://localhost:8545
2019-10-10 15:43:02 WebSocket endpoint opened: ws://localhost:8546
2019-10-10 15:43:02 Debug log config: verbosity=5 log-dir=/data/etc_mainnet/mainnet/log vmodule=*
2019-10-10 15:43:02 Display log config: display=3 status=sync=1m0s
2019-10-10 15:43:02 Machine log config: mlog=off
2019-10-10 15:44:02 Discover                                                                 0/25 peers
2019-10-10 15:45:02 Discover                                                                 0/25 peers
2019-10-10 15:46:02 Discover                                                                 0/25 peers
2019-10-10 15:47:02 Discover                                                                 0/25 peers
2019-10-10 15:48:02 Discover                                                                 0/25 peers
2019-10-10 15:49:02 Discover                                                                 0/25 peers
2019-10-10 15:50:02 Discover                                                                 0/25 peers
2019-10-10 15:51:02 Discover                                                                 0/25 peers
2019-10-10 15:52:02 Discover                                                                 0/25 peers

Test skips

Only remaining skips are relating to eth-classic/go-ethereum#35 (state trie clearing) and random tests 644 and 645. EIP 684 implementation isn't included in ETC or Atlantis upgrade so should be skipped.

	// EIP 684 Implementations
	skipTests["TransactionCollisionToEmptyButCode.json"] = "Not Implemented"
	skipTests["TransactionCollisionToEmpty.json"] = "Not Implemented"
	skipTests["TransactionCollisionToEmptyButNonce.json"] = "Not Implemented"
	skipTests["CreateCollisionToEmpty.json"] = "Not Implemented"
	skipTests["CreateHashCollision.json"] = "Not Implemented"
	skipTests["createJS_ExampleContract.json"] = "Not Implemented"
	skipTests["RevertDepthCreateAddressCollision.json"] = "Not Implemented"

	// Random Test failures
	skipTests["randomStatetest644.json"] = "random unimplemented"
	skipTests["randomStatetest645.json"] = "random unimplemented"

	// EIP 158/161 skipped tests
	skipTests["RevertPrefoundEmptyOOG.json"] = "State trie clearing unimplemented"
	skipTests["FailedCreateRevertsDeletion.json"] = "State trie clearing unimplemented"

There is already an issue eth-classic/go-ethereum#35 for that edge case and the others are intended so can probably close this issue now.

Failing tests due to lack of implementation

So currently with state trie clearing implemented, all tests are passing except some that are intentionally skipped due to the functionality not implemented yet, or not planned to be implemented.

I will group each missing functionality with it's skipped tests:

Atlantis planned changes

EIP 214 - STATICCALL

  unsupportedDirs := map[string]bool{
     ...
    "stStaticCall":  true,
     ...
  }
skipTests["staticcall_createfails.json"] = "STATICCALL Not Implemented"

EIP 140 - REVERT

  unsupportedDirs := map[string]bool{
     ...
    "stRevertTest":  true,
     ...
  }
	skipTests["FailedCreateRevertsDeletion.json"] = "REVERT Not Implemented"
	skipTests["CreateOOGafterInitCodeRevert.json"] = "REVERT Not Implemented"
	skipTests["CreateOOGafterInitCodeRevert2.json"] = "REVERT Not Implemented"

EIP 211 - RETURNDATASIZE/ RETURNDATACOPY

  unsupportedDirs := map[string]bool{
     ...
    "stReturnDataTest":  true,
     ...
  }
	skipTests["CreateOOGafterInitCodeReturndataSize.json"] = "REVERT Not Implemented"
	skipTests["CreateOOGafterInitCodeReturndata2.json"] = "REVERT Not Implemented"

EIP 196/197/198 Precompiles (Maybe not all are planned to be completed)

  unsupportedDirs := map[string]bool{
     ...
    "stPreCompiledContracts":  true,
    "stPreCompiledContracts2": true,

    // And I am pretty sure these two because they reference the precompiles
    "stZeroKnowledge":         true,
    "stZeroKnowledge2":        true,
     ...
  }

EIP 170 Code size limit

  unsupportedDirs := map[string]bool{
     ...
    "stCodeSizeLimit":  true,
     ...
  }

All of the above skips should be removed when implemented in Atlantis

Non specific Atlantis skips:

EIP 684/689 ? Transaction collision updates

	skipTests["TransactionCollisionToEmptyButCode.json"] = "Not Implemented"
	skipTests["TransactionCollisionToEmpty.json"] = "Not Implemented"
	skipTests["TransactionCollisionToEmptyButNonce.json"] = "Not Implemented"
	skipTests["CreateCollisionToEmpty.json"] = "Not Implemented"
	skipTests["CreateHashCollision.json"] = "Not Implemented"
	skipTests["createJS_ExampleContract.json"] = "Not Implemented"

EIP 1014 Create2 (Agharta)

  unsupportedDirs := map[string]bool{
     ...
    "stCreate2":  true,
     ...
  }

Unknown test functionality skip:

		skipTests["CREATE_ContractRETURNBigOffset.json"] = "random unimplemented"

This one is not referenced anywhere and not implemented with an EIP. Byzantium (Atlantis) onwards specific tests so it includes a specification added that is not included in ETC. Best guess is that it has something to do with accounts/abi/abi.go or related files.

Random test skips:

	skipTests["randomStatetest642.json"] = "random unimplemented"
	skipTests["randomStatetest644.json"] = "random unimplemented"
	skipTests["randomStatetest645.json"] = "random unimplemented"
	skipTests["Opcodes_TransactionInit.json/Byzantium/37"] = "random unimplemented"
	skipTests["Opcodes_TransactionInit.json/Byzantium/38"] = "random unimplemented"
	skipTests["Opcodes_TransactionInit.json/Byzantium/125"] = "random unimplemented"
	skipTests["Opcodes_TransactionInit.json/Byzantium/126"] = "random unimplemented"

Assuming these are all due to the unimplemented Atlantis functionality, should be revisited on implementing each opcode or at the end of Atlantis implementation


Only remaining skips are relating to #35 (state trie clearing) and random tests 644 and 645. EIP 684 implementation isn't included in ETC or Atlantis upgrade so should be skipped.

	// EIP 684 Implementations
	skipTests["TransactionCollisionToEmptyButCode.json"] = "Not Implemented"
	skipTests["TransactionCollisionToEmpty.json"] = "Not Implemented"
	skipTests["TransactionCollisionToEmptyButNonce.json"] = "Not Implemented"
	skipTests["CreateCollisionToEmpty.json"] = "Not Implemented"
	skipTests["CreateHashCollision.json"] = "Not Implemented"
	skipTests["createJS_ExampleContract.json"] = "Not Implemented"
	skipTests["RevertDepthCreateAddressCollision.json"] = "Not Implemented"

	// Random Test failures
	skipTests["randomStatetest644.json"] = "random unimplemented"
	skipTests["randomStatetest645.json"] = "random unimplemented"

	// EIP 158/161 skipped tests
	skipTests["RevertPrefoundEmptyOOG.json"] = "State trie clearing unimplemented"
	skipTests["FailedCreateRevertsDeletion.json"] = "State trie clearing unimplemented"

There is already an issue #35 for that edge case and the others are intended so can probably close this issue now.

Feature request: Submit Block RPC

Imported from ethereumproject/go-ethereum#719

New JSON-RPC method submitBlock

Purpose

I would like to be able to submitWork, but have the address used be one other than the etherbase of the node the work is being submitted by.

This would allow signing of new blocks to occur outside of the client, similar to sendRawTransaction allows you to externally sign a tx.

Proposed solution

Named as per @sorpaas suggestion, perhaps this could be done as a submitBlock.
It would look as follows:
image

Here is an OpenRPC describing the method doc if you want to play with it.

{
  "openrpc": "1.1.8",
  "info": {
    "version": "1.0.0",
    "title": "Example submitBlock"
  },
  "methods": [
    {
      "name": "parity_submitBlock",
      "summary": "Submit a new block proposal",
      "description": "Given a new block, it will validate the block, and broadcast it to connected peers.",
      "params": [
        { "$ref": "https://raw.githubusercontent.com/etclabscore/ethereum-json-rpc-specification/master/openrpc.json#/components/contentDescriptors/Block" }
      ],
      "result": {
        "name": "isBlockAccepted",
        "schema": {
          "type": "boolean"
        }
      }
    }
  ],
  "components": {
    "schemas": {
      "OpenRPCDocument": {
        "title": "OpenRPC Document",
        "description": "an open rpc document as defined by https://spec.open-rpc.org."
      }
    }
  }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.