GithubHelp home page GithubHelp logo

py-geth's Introduction

py-geth

Join the conversation on Discord Build Status PyPI version Python versions

Python wrapper around running geth as a subprocess

System Dependency

This library requires the geth executable to be present.

If managing your own bundled version of geth, set the path to the binary using the GETH_BINARY environment variable.

Installation

Installation

python -m pip install py-geth

Quickstart

To run geth connected to the mainnet

>>> from geth import LiveGethProcess
>>> geth = LiveGethProcess()
>>> geth.start()

Or a private local chain for testing. These require you to give them a name.

>>> from geth import DevGethProcess
>>> geth = DevGethProcess('testing')
>>> geth.start()

By default the DevGethProcess sets up test chains in the default datadir used by geth. If you would like to change the location for these test chains, you can specify an alternative base_dir.

>>> geth = DevGethProcess('testing', '/tmp/some-other-base-dir/')
>>> geth.start()

Each instance has a few convenient properties.

>>> geth.data_dir
"~/.ethereum"
>>> geth.rpc_port
8545
>>> geth.ipc_path
"~/.ethereum/geth.ipc"
>>> geth.accounts
['0xd3cda913deb6f67967b99d67acdfa1712c293601']
>>> geth.is_alive
False
>>> geth.is_running
False
>>> geth.is_stopped
False
>>> geth.start()
>>> geth.is_alive
True  # indicates that the subprocess hasn't exited
>>> geth.is_running
True  # indicates that `start()` has been called (but `stop()` hasn't)
>>> geth.is_stopped
False
>>> geth.stop()
>>> geth.is_alive
False
>>> geth.is_running
False
>>> geth.is_stopped
True

When testing it can be nice to see the logging output produced by the geth process. py-geth provides a mixin class that can be used to log the stdout and stderr output to a logfile.

>>> from geth import LoggingMixin, DevGethProcess
>>> class MyGeth(LoggingMixin, DevGethProcess):
...     pass
>>> geth = MyGeth()
>>> geth.start()

All logs will be written to logfiles in ./logs/ in the current directory.

The underlying geth process can take additional time to open the RPC or IPC connections, as well as to start mining if it needs to generate the DAG. You can use the following interfaces to query whether these are ready.

>>> geth.is_rpc_ready
True
>>> geth.wait_for_rpc(timeout=30)  # wait up to 30 seconds for the RPC connection to open
>>> geth.is_ipc_ready
True
>>> geth.wait_for_ipc(timeout=30)  # wait up to 30 seconds for the IPC socket to open
>>> geth.is_dag_generated
True
>>> geth.is_mining
True
>>> geth.wait_for_dag(timeout=600)  # wait up to 10 minutes for the DAG to generate.

The DAG functionality currently only applies to the DAG for epoch 0.

Installing specific versions of geth

This feature is experimental and subject to breaking changes.

Versions of geth dating back to v1.11.0 can be installed using py-geth. See install.py for the current list of supported versions.

Installation can be done via the command line:

$ python -m geth.install v1.13.15

Or from python using the install_geth function.

>>> from geth import install_geth
>>> install_geth('v1.13.15')

The installed binary can be found in the $HOME/.py-geth directory, under your home directory. The v1.13.15 binary would be located at $HOME/.py-geth/geth-v1.13.15/bin/geth.

About DevGethProcess

The DevGethProcess is designed to facilitate testing. In that regard, it is preconfigured as follows.

  • A single account is created and allocated 1 billion ether.
  • All APIs are enabled on both rpc and ipc interfaces.
  • Account 0 is unlocked
  • Networking is configured to not look for or connect to any peers.
  • The networkid of 1234 is used.
  • Verbosity is set to 5 (DEBUG)
  • Mining is enabled with a single thread.
  • The RPC interface tries to bind to 8545 but will find an open port if this port is not available.
  • The DevP2P interface tries to bind to 30303 but will find an open port if this port is not available.

Gotchas

If you are running with mining enabled, which is default for DevGethProcess, then you will likely need to generate the DAG manually. If you do not, then it will auto-generate the first time you run the process and this takes a while.

To generate it manually:

$ geth makedag 0 ~/.ethash

This is especially important in CI environments like Travis-CI where your process will likely timeout during generation.

Development

Clone the repository:

$ git clone [email protected]:ethereum/py-geth.git

Next, run the following from the newly-created py-geth directory:

$ python -m pip install -e ".[dev]"

Running the tests

You can run the tests with:

pytest tests

Developer Setup

If you would like to hack on py-geth, please check out the Snake Charmers Tactical Manual for information on how we do:

  • Testing
  • Pull Requests
  • Documentation

We use pre-commit to maintain consistent code style. Once installed, it will run automatically with every commit. You can also run it manually with make lint. If you need to make a commit that skips the pre-commit checks, you can do so with git commit --no-verify.

Development Environment Setup

You can set up your dev environment with:

git clone [email protected]:ethereum/py-geth.git
cd py-geth
virtualenv -p python3 venv
. venv/bin/activate
python -m pip install -e ".[dev]"
pre-commit install

Release setup

To release a new version:

make release bump=$$VERSION_PART_TO_BUMP$$

How to bumpversion

The version format for this repo is {major}.{minor}.{patch} for stable, and {major}.{minor}.{patch}-{stage}.{devnum} for unstable (stage can be alpha or beta).

To issue the next version in line, specify which part to bump, like make release bump=minor or make release bump=devnum. This is typically done from the main branch, except when releasing a beta (in which case the beta is released from main, and the previous stable branch is released from said branch).

If you are in a beta version, make release bump=stage will switch to a stable.

To issue an unstable version when the current version is stable, specify the new version explicitly, like make release bump="--new-version 4.0.0-alpha.1 devnum"

Adding Support For New Geth Versions

There is an automation script to facilitate adding support for new geth versions: update_geth.py

To add support for a geth version, run the following line from the py-geth directory, substituting the version for the one you wish to add support for. Note that the v in the versioning is optional.

$ python update_geth.py v1_10_9

To introduce support for more than one version, pass in the versions in increasing order, ending with the latest version.

$ python update_geth.py v1_10_7 v1_10_8 v1_10_9

Always review your changes before committing as something may cause this existing pattern to change at some point. It is best to compare the git difference with a previous commit that introduced support for a new geth version to make sure everything looks good.

py-geth's People

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  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  avatar  avatar  avatar

Watchers

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

py-geth's Issues

DAG Generation is opaque and causes timeouts for test runs in other projects.

What was wrong?

The DAG generation takes a long time. When using pygeth for testing this means that it can take upwards of 5-10 minutes for the first test to run if the code is waiting for the first block to be generated.

Possibly implement a is_generating_dag property so that it's clear what is happening?

LoggingMixin appends incorrect timestamp and log level to every log line

  • py-geth Version: 3.6.0
  • go-ethereum Version:
  • Python Version: 1.10.10
  • OS: macOS

What was wrong?

When using the LoggingMixin, each log line has an extra timestamp and log level prefixed to it and also the log level is always INFO regardless of the actual log from geth.

Example:

2021-11-18 11:49:11,695 - geth-stderr - INFO - b'INFO [11-18|11:49:11.695] Persisted the clean trie cache          
2021-11-18 11:49:11,695 - geth-stderr - INFO - b'DEBUG[11-18|11:49:11.695] Deleting port mapping                    proto=tcp 

^ Notice the INFO and DEBUG but the real log statement is still bytes

I am guess this is because it uses file loggers on top of the existing logs..
I think we should just exclude the format on those loggers so tailing the files makes more sense

Cute Animal Picture

toy_elephant

403 when installing geth

What happened?

Using the install command python -m geth.install v1.11.6 now fails with 403.
I noticed all my requests to GitHub using wget are failing this way now.

I am selfishly creating this issue here in hopes to have help in knowing how to fix this elsewhere because I know it is a documented feature of this library. Also I am curious if you came across this in web3.py CI/CD or something allike.

Code that produced the error

python -m geth.install v1.11.6

Full error output

File "/Users/jules/virtualenvs/ape310/lib/python3.10/site-packages/geth/install.py", line 319, in install_from_source_code_release
    download_source_code_release(identifier)
  File "/Users/jules/virtualenvs/ape310/lib/python3.10/site-packages/geth/install.py", line 244, in download_source_code_release
    return check_subprocess_call(
  File "/Users/jules/virtualenvs/ape310/lib/python3.10/site-packages/geth/install.py", line 129, in check_subprocess_call
    return subprocess.check_call(command, stderr=stderr, **proc_kwargs)
  File "/Users/jules/.pyenv/versions/3.10.12/lib/python3.10/subprocess.py", line 369, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['wget', 'https://github.com/ethereum/go-ethereum/archive/v1.11.6.tar.gz', '-c', '-O', '/Users/jules/.py-geth/geth-v1.11.6/release.tar.gz']' returned non-zero exit status 8.
...

but if you set a breakpoint, read the command like " ".join(command), and paste that command in your terminal separately, you can set a bit more:


Connecting to codeload.github.com (codeload.github.com)|140.82.113.9|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2023-08-28 11:42:23 ERROR 403: Forbidden.

Fill this section in if you know how this could or should be fixed

I tried using auth, didn't work.
I heard user-agent may be required, but i couldnt get that to work either.
It does work in my browser, so perhaps I can copy the headers there and remove them one by one until github server is happy again. But again, I figured yall would have came across the issue independently.

I am getting this error both locally when using wget as well as in ci/cd

py-geth Version

3.13.0

Python Version

3.10.12

Operating System

macos

Output from pip freeze

you asked for it:

abnf==1.1.1
aiohttp==3.8.5
aiosignal==1.3.1
aiosqlite==0.18.0
alembic==1.11.3
anyio==3.7.1
ape-alchemy==0.6.2
-e git+ssh://[email protected]/unparalleled-js/ape-arbitrum.git@9864da84e3b825578cf2bc32027877c01f5f95a1#egg=ape_arbitrum
ape-avalanche==0.6.3
ape-bsc==0.6.1
ape-ens==0.6.1
ape-etherscan==0.6.9
ape-foundry==0.6.14
ape-ganache==0.6.8
ape-hardhat==0.6.12
ape-infura==0.6.3
ape-optimism==0.6.2
ape-polygon==0.6.5
-e git+ssh://[email protected]/antazoey/ape-safe.git@5d9190c44ec2ee8a3dc9e4dca27cb95a2dda74f4#egg=ape_safe
-e git+ssh://[email protected]/ApeWorX/ape-silverback.git@d306af2988cbd94549c1ebb7af3ebed3dda09956#egg=ape_silverback
-e git+ssh://[email protected]/unparalleled-js/ape-solidity.git@2abd3c380ca934e8688ebe404387f117e0cf096c#egg=ape_solidity
ape-tokens==0.6.2
-e git+ssh://[email protected]/antazoey/ape-vyper.git@a7255e0cbd805afa25cb61c6d257d4dcf5f79fcc#egg=ape_vyper
apepay==0.1.1
appnope==0.1.3
asttokens==2.2.1
async-generator==1.10
async-timeout==4.0.3
asyncer==0.0.2
attrs==23.1.0
awscli==1.29.29
backcall==0.2.0
base58==1.0.3
bcrypt==4.0.1
bitarray==2.8.1
black==23.7.0
boto3==1.28.29
botocore==1.31.29
build==0.10.0
CacheControl==0.13.1
cached-property==1.5.2
certifi==2023.7.22
cffi==1.15.1
cfgv==3.4.0
-e git+ssh://[email protected]/ApeWorX/cHaOSneT.git@e184460e44b8c39d4e80bb412f311f714bfa93f7#egg=chaosnet
charset-normalizer==3.2.0
chompjs==1.2.2
cleo==2.0.1
click==8.1.7
colorama==0.4.4
commonmark==0.9.1
coverage==7.3.0
crashtest==0.4.1
cryptography==41.0.3
cytoolz==0.12.2
dataclassy==0.11.1
decorator==5.1.1
Deprecated==1.2.14
distlib==0.3.7
dnspython==2.4.2
docopt==0.6.2
docutils==0.16
dulwich==0.21.5
eip712==0.2.1
email-validator==2.0.0.post2
eth-abi==4.1.0
eth-account==0.8.0
eth-ape @ file:///Users/jules/PycharmProjects/more_apes/1/ape
eth-bloom==2.0.0
eth-hash==0.5.2
eth-keyfile==0.6.1
eth-keys==0.4.0
eth-rlp==0.3.0
eth-tester==0.9.1b1
eth-typing==3.4.0
eth-utils==2.2.0
ethpm-types==0.5.4
evm-trace==0.1.0a22
exceptiongroup==1.1.3
execnet==2.0.2
executing==1.2.0
Faker==18.13.0
fastapi==0.92.0
fastapi-login==1.9.1
filelock==3.12.2
flake8==6.1.0
flake8-breakpoint==1.1.0
flake8-plugin-utils==1.3.3
flake8-print==4.0.1
frozenlist==1.4.0
greenlet==2.0.2
h11==0.14.0
hexbytes==0.3.1
httpcore==0.16.3
httpx==0.23.3
hypothesis==6.82.6
identify==2.5.27
idna==3.4
ijson==3.2.3
importlib-metadata==6.8.0
iniconfig==2.0.0
installer==0.7.0
ipython==8.14.0
isort==5.12.0
jaraco.classes==3.3.0
jedi==0.19.0
jmespath==1.0.1
jsonschema==4.19.0
jsonschema-specifications==2023.7.1
keyring==24.2.0
lazyasd==0.1.4
linkify-it-py==2.0.2
lru-dict==1.2.0
Mako==1.2.4
markdown-it-py==2.2.0
MarkupSafe==2.1.3
matplotlib-inline==0.1.6
mccabe==0.7.0
mdformat==0.7.17
mdformat-gfm==0.3.5
mdformat_frontmatter==2.0.1
mdformat_pyproject==0.0.1
mdformat_tables==0.4.1
mdit-py-plugins==0.3.5
mdurl==0.1.2
more-itertools==10.1.0
morphys==1.0
msgpack==1.0.5
msgspec==0.18.1
multidict==6.0.4
mypy==1.5.1
mypy-extensions==1.0.0
nodeenv==1.8.0
numpy==1.25.2
outcome==1.2.0
packaging==23.1
pandas==1.5.3
pandas-stubs==1.2.0.62
parsimonious==0.9.0
parso==0.8.3
passlib==1.7.4
pathspec==0.11.2
pexpect==4.8.0
pickleshare==0.7.5
pkginfo==1.9.6
platformdirs==3.10.0
pluggy==1.3.0
poetry==1.6.1
poetry-core==1.7.0
poetry-plugin-export==1.5.0
pre-commit==3.3.3
prometheus-client==0.17.1
prompt-toolkit==3.0.39
protobuf==4.24.0
psycopg2-binary==2.9.7
ptyprocess==0.7.0
pure-eval==0.2.2
py-cid==0.3.0
py-ecc==6.0.0
py-evm==0.7.0a4
py-geth==3.13.0
py-multibase==1.0.3
py-multicodec==0.2.1
py-multihash==0.2.3
py-solc-x==1.1.1
pyasn1==0.5.0
pycodestyle==2.11.0
pycparser==2.21
pycron==3.0.0
pycryptodome==3.18.0
pydantic==1.10.12
pyethash==0.1.27
pyflakes==3.1.0
PyGithub==1.59.1
Pygments==2.16.1
PyJWT==2.8.0
PyNaCl==1.5.0
pyproject_hooks==1.0.0
pyrsistent==0.19.3
pytest==7.4.0
pytest-cov==4.1.0
pytest-mock==3.11.1
pytest-watch==4.2.0
pytest-xdist==3.3.1
python-baseconv==1.2.2
python-dateutil==2.8.2
python-multipart==0.0.6
pytz==2023.3
pyunormalize==15.0.0
PyYAML==6.0.1
rapidfuzz==2.15.1
referencing==0.30.2
regex==2023.8.8
requests==2.31.0
requests-toolbelt==1.0.0
rfc3986==1.5.0
rfc3987==1.3.8
rich==12.6.0
rlp==3.0.0
rpds-py==0.9.2
rsa==4.7.2
ruamel.yaml==0.17.32
ruamel.yaml.clib==0.2.7
s3transfer==0.6.2
safe-pysha3==1.0.4
semantic-version==2.10.0
shellingham==1.5.3
silverback==0.1.0b11
siwe==2.2.0
six==1.16.0
sniffio==1.3.0
sortedcontainers==2.4.0
SQLAlchemy==1.4.41
sqlalchemy2-stubs==0.0.2a35
sqlmodel==0.0.8
stack-data==0.6.2
starlette==0.25.0
taskiq==0.6.0
taskiq-dependencies==1.3.1
tokenlists==0.1.4
tomli==2.0.1
tomlkit==0.12.1
toolz==0.12.0
tqdm==4.66.1
traitlets==5.9.0
trie==2.1.1
trio==0.21.0
trove-classifiers==2023.8.7
types-PyYAML==6.0.12.11
types-requests==2.31.0.2
types-setuptools==68.1.0.0
types-SQLAlchemy==1.4.53.38
types-urllib3==1.26.25.14
typing_extensions==4.5.0
uc-micro-py==1.0.2
urllib3==1.26.16
uvicorn==0.20.0
varint==1.0.2
virtualenv==20.24.3
vvm==0.1.0
watchdog==3.0.0
wcwidth==0.2.6
web3==6.8.0
websockets==11.0.3
wrapt==1.15.0
xattr==0.10.1
yarl==1.9.2
zipp==3.16.2

Document the comparison DevGethProcess with `geth --dev`

  • py-geth Version: master
  • go-ethereum Version: 1.10.1
  • Python Version: 3.9.7
  • OS: macOS

What was wrong?

I am trying to understand DevGethProcess and how it compares to geth --dev.
From what I can gather, it does the same thing as geth --dev except maybe give you a little more control, such as the ability to override genesis configuration. Is this correct?

By just a quick glance at the class and how it is named, I would assume DevGethProcess launches geth --dev. I think I am glad it does not since I would like to control the genesis block and not have one get created automatically, but just am a little confused... Are we able to replicated all of the functionality of geth --dev in a private, local blockchain like this? If yes, that is amazing.

Some class-code comments might help with this. Something like Launches a dev geth process (not geth --dev but of similar functionality). Otherwise, one has to inspect the wrapper.py to figure out what command is actually be called.

Cute Animal Picture

baby_bear

Is MIT is violating GPL license of geth binaries?

  • I haven't checked the code specifically but geth's licensing terms say:

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.

So how can py-geth be MIT? If it uses the binaries, GPL property is viral and hence py-geth must be GPL too. What am I missing?

This was originally pointed out here: neume-network/documents#11 (comment)

Add types

  • py-geth Version: 3.10
  • go-ethereum Version: 1.10.25-stable
  • Python Version: 3.9.13
  • OS: macOS

What was wrong?

Currently, when using py-geth as a library, we have to put type: ignore statements on all of the imports:

https://github.com/ApeWorX/ape/blob/main/src/ape_geth/provider.py#L16-L20

Adding types will help us verify we are using the library correctly as well as assist us it looks better (low priority).

Cute Animal Picture

chicken

Controlling stdout piping

What was wrong?

Currently TestnetGethProcess defaults to stdout logging. Though this is desirable for many use cases, for others it may be unnecessarily verbose.

Is there a currently way to disable geth stdout->stdout piping?

Cute Animal Picture

bad ass turtle

Implicit monkey patch of socket breaks everything

What was wrong?

https://github.com/pipermerriam/py-geth/blob/master/geth/geth.py#L11

Mere presence of py-geth in virtualenv breaks Python project due to a horrid called gevent that simply breaks everything. This is because __init__ import this stuff and __init__ may get autoscanned. Various network related libraries and services stop working.

Please ask library users to explicitly call gevent monkey patch functions, never call monkey patch functions inside in the library itself, as import order is probably wrong for gevent to function properly and gevent itself doesn't work with many other Python libraries or services.

Cute Animal Picture

                   (___)               (__)      (__)
                   ( O )               (oo)      (oo)
            /-------\ /                 \/--------\/
           / |     ||V                   |        |
          *  ||----||                    ||------||
             ^^    ^^                    ^^      ^^
   The cyclops that Jason and         This cow lived with
  the Argonauts met had this cow          Dr. Doolittle

Migrate from Travis CI to Circle CI

What is wrong?

As we are installing a lot of versions of geth, it would be better to migrate to Circle CI, as it is a lot faster and does parallel jobs too.

Unit test geth not mining if Mist open on background

  • go-ethereum Version: 1.4
  • Python Version: 3.5
  • OS: osx

What was wrong?

My unit tests stopped running when I had Mist open on the background. On a closer look, the ad hoc geth for the private testnet was not mining and transactions were not included in the unit test chain.

Shutting down Mist fixed the problem.

I suspect conflict over some files or sockets?

Cute Animal Picture

 
                 (__)
                ([][])            "I have this recurring dream
                __\/_--U              about golden arches."..  (__)
               /\    \__                                 ^  :..("")
              /\\\  /  /                         //\  ____\_____\/ //
             /----^/__/\ /\                     // \\/     \___ / //
                 \\\____/--\--                 // /-/__________/ //
                  /======   \/            =======/==============//
               *_/ /    \   /^              //  /              \\
                  /      \ ^               //                   \\
 
                      Psycowlogist and patient
 

Accessing accounts after starting nodes causing crash due to data dir lock

py-geth Version: main branch 83e5466
go-ethereum Version: 1.10.17-stable
Python Version: 3.10.4
OS: MacOS

What was wrong?

Whenever I run the following script, I run into geth's lock on its data-dir. However, if I run the same commands in a python REPL, I do not run into any errors. It appears like geth.accounts spawns a new geth process even if one is already started. Am I not supposed to access accounts once geth is started or is this a bug?

python script.py

  geth.start()
  print(geth.accounts)
  geth.stop()

Error

Traceback (most recent call last):
  File "/Users/alpharush/tob/fuzzer/node.py", line 78, in <module>
    print(geth.accounts)
  File "/Users/alpharush/tob/py-geth/geth/process.py", line 102, in accounts
    return get_accounts(**self.geth_kwargs)
  File "/Users/alpharush/tob/py-geth/geth/accounts.py", line 26, in get_accounts
    raise ValueError(format_error_message(
ValueError: Error trying to list accounts
Command    : nice -n 20 geth --http --http.addr 127.0.0.1 --http.port 62072 --http.api admin,debug,eth,miner,net,personal,shh,txpool,web3,ws --ws --ws.addr 127.0.0.1 --ws.port 8546 --ws.api admin,debug,eth,miner,net,personal,shh,txpool,web3,ws --datadir /Users/alpharush/Library/Ethereum/testing --maxpeers 0 --networkid 1234 --port 30303 --ipcpath /Users/alpharush/Library/Ethereum/testing/geth.ipc --verbosity 5 --unlock 0 --password /Users/alpharush/tob/py-geth/geth/default_blockchain_password --nodiscover --mine --miner.threads 1 --allow-insecure-unlock account list
Return Code: 1
stdout:
`b'Fatal: Failed to create the protocol stack: datadir already used by another process\n'`
stderr:
`b'INFO [05-20|22:47:52.478] Maximum peer count                       ETH=0 LES=0 total=0\nFatal: Failed to create the protocol stack: datadir already used by another process\n'`

Cute Animal Picture

pascal-muller-4EajIuUxgAQ-unsplash

Fix Genesis Block Handling

  • py-geth Version: 0.4.0
  • go-ethereum Version: 1.4.9

What was wrong?

==> logs/geth-20160701-143140-stdout.log <==
2016-07-01 14:31:40,189 - stdout - INFO - b'\n'
2016-07-01 14:31:40,293 - stdout - INFO - b'####################################################################\n'
2016-07-01 14:31:40,396 - stdout - INFO - b'#                                                                  #\n'
2016-07-01 14:31:40,499 - stdout - INFO - b"# --genesis is deprecated. Switch to use 'geth init /path/to/file' #\n"
2016-07-01 14:31:40,599 - stdout - INFO - b'#                                                                  #\n'
2016-07-01 14:31:40,701 - stdout - INFO - b'####################################################################\n'
2016-07-01 14:31:40,804 - stdout - INFO - b'\n'

Geth no longer supports specifying a genesis file. Need to convert to using geth init

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.