Code Monkey home page Code Monkey logo

staking-launchpad's Introduction

Ethereum Staking Launchpad

GitPOAP Badge

The Launchpad is the Ethereum Foundation's official way to deposit your ETH for staking on Ethereum

Dependencies

Configuration

To have full functionality of the Launchpad, you must create an .env file in your root directory and add an environment variable.

The Infura Project ID will enable the network status progress bar showing the balance of the Deposit Contract

REACT_APP_INFURA_PROJECT_ID=your-infura-project-id-here

Note: The Portis wallet option is not available when running locally

Installation

Available Scripts

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

Install Dependencies and Start the Application

yarn
yarn start

Development workflow

By default, dev acts as the primary base branch which all PRs should merge into. Make sure any pull requests target this branch.

Launchpad deployment

Launchpad translation

As part of the ethereum.org Translation Program, our community of translators is also working on translating the Ethereum Staking Launchpad.

If you are interested in getting involved and helping with the translations, please visit the project in Crowdin.

After joining the project, you can start translating by opening your desired language from the language list. If your language isn't available, please reach out to Ethereum.org Team on Crowdin or open an issue to request adding a new language for translation.

Detailed information on using Crowdin is available in the Crowdin Online Editor documentation.


Open source licensing info

Creative Commons Zero v1.0 Universal - For more information read the LICENSE file.


staking-launchpad's People

Contributors

battenfield avatar buttaa avatar carlbeek avatar dependabot[bot] avatar ethers avatar flamingyawn avatar gakonst avatar georgeweiler avatar hwwhww avatar liftlines avatar lukassim avatar minimalsm avatar paulhauner avatar pettinarip avatar prestonvanloon avatar rauljordan avatar remyroy avatar rootulp avatar ryancreatescopy avatar samajammin avatar seishun avatar skylenet avatar suriyaa avatar timbeiko avatar tlip avatar unixpi avatar valefar-on-discord avatar wackerow avatar zachinquarantine avatar zah 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

staking-launchpad's Issues

Different chain-forks (Mainnet vs testnet etc)

Currently testnet & mainnet can be selected using envVars via IS_MAINNET. The complexity of different nets is not entirely captured by this model. and so it should be extended to support multiple configurations. Each net can vary in the following parameters:

  • is_tesnet
  • network name
  • deposit amount
  • deposit contract address
  • fork version
  • eth1 network (Goerlli vs mainnet etc)

These options are all properties of the network and should be swapped out depending on which one is active. As discussed in #83, all these parameters can be populated as envVars which possibly default to the mainnet configuration.

Add a way to report issues

If someone is reading the instructions on the site and needs to report an issue, there is currently no way for them to figure out how (except on a deposit file error which links to the GitHub issues). Consider adding a way to report issues (such as a link to GitHub or any other method of contact) in a more obvious place on the site.

Staking infographic on Launchpad misleading

On the Launchpad page, there's this bar chart following the amount of Goerli Eth staked. On the left side is the amount staked, on the right side is the remaining amount needed to start the Medalla network. Typically in a chart like this, the amount on the right side is the total.

However, for the screenshotted example below, it appears as though the whole network only requires 302336.0 Goerli Eth, rather than the 302k number being the outstanding remaining balance. Might want to consider changing wording around to reflect that. A minor thing, but I think clear visualization is important, particularly if we're trying to keep this open for less technical folks

Launchpad infographic

Compiler warnings

When compiling the dapp, there are several compiler warnings. Because the intention is for some people to compile this site for themselves, it would be ideal for there to be no warnings.

The current warnings are:

Compiled with warnings.

./src/pages/ConnectWallet/index.tsx
  Line 162:6:  React Hook useEffect has a missing dependency: 'account'. Either include it or remove the dependency array                                                                                                                                                             react-hooks/exhaustive-deps
  Line 165:3:  React Hook useEffect contains a call to 'setNetwork'. Without a list of dependencies, this can lead to an infinite chain of updates. To fix this, pass [chainId, walletConnected, networkAllowed, error, balance, network] as a second argument to the useEffect Hook  react-hooks/exhaustive-deps

./src/pages/UploadValidator/index.tsx
  Line 203:6:  React Hook useMemo has a missing dependency: 'handleFileDelete'. Either include it or remove the dependency array  react-hooks/exhaustive-deps

./src/pages/Landing/CTAFooter.tsx
  Line 27:11:  Emojis should be wrapped in <span>, have role="img", and have an accessible description with aria-label or aria-labelledby  jsx-a11y/accessible-emoji

./src/pages/ConnectWallet/WalletButton.tsx
  Line 50:3:  React Hook useEffect contains a call to 'setShowSpinner'. Without a list of dependencies, this can lead to an infinite chain of updates. To fix this, pass [error, active] as a second argument to the useEffect Hook  react-hooks/exhaustive-deps

./src/pages/Acknowledgements/AcknowledgementProgressTracker/index.tsx
  Line 55:49:  Expected '===' and instead saw '=='  eqeqeq

Search for the keywords to learn more about each warning.
To ignore, add // eslint-disable-next-line to the line before.

/faq "Page Not Found"

clicking "Learn more about validators >" links to /faq and ends in "Page Not Found"

Software versioning

Issue

  1. Eth2 spec v0.11.x is not compatible with v0.12.x due to BLS signature. To support Altona testnet, both the launchpad (this repo) and deposit-cli have to upgrade to v0.12.x compatible.
  2. It's difficult to sync the version of the launchpad and deposit-cli now: the instructions currently ask the user to download https://github.com/ethereum/eth2.0-deposit-cli.git master branch.

How to solve it

And then we can merge the v0.12.x PRs to dev branch, and cut a new release for Altona testnet.

@georgeweiler @Battenfield @CarlBeek what do you think?

Copyediting

  1. [IMPORTANT] In the Acknowledgment section, under both Transfer Delay and Commitment:

The term "can not" is incorrect. "Can not" means the user has the option to refrain from acting (but could potentially act if she wishes). "Cannot" means the user does not have the option to act. The three instances of "can not" should be changed to "cannot".

  1. In the Acknowledgment section, under Responsibilities, the comma is unnecessary:

"Only validators that actively participate in consensus, receive rewards."

Add WalletConnect support

It would be great to add support for WalletConnect. I noticed the app is using web3-react so it shouldn't be hard to add WalletConnect as a wallet option

Separate PRICE_PER_VALIDATOR for mainnet & testnet

There will probably be separate PRICE_PER_VALIDATORs for mainnet & testnet. Ideally this would be supported.

It is probably better to represent this as a quotient or factor as the deposit contract will compensate for this.

For example, if validators are depositing 3.2 ETH/validator, the deposit contract will store their deposit as 32 ETH, but the contract's balance will only increase by 3.2 ETH. Using a quotient, it is easier to determine represent this amount in the interface for total deposits etc.

its very hard to get 3.2ETH from Goerli Test Network

maybe, its the last step and the hardest step to get 3.2ETH from Goerli Test Networkใ€‚
I can only get 0.05ETH once a time... wow !!!
it means that I will request 64 times from https://goerli-faucet.slock.it/ page.
tiโ€™s the hardest work... ๐Ÿ˜„

image

image

if someone keep enough ETH for Goerli Test Network .
please send 3.2ETH to me, thanks very much

0x35d415bF0E6bbf8e10ebA814e10325c46a2CF009

Differentiate between invalid deposit file and bad deposit data

When submitting a deposit_data.json, there are two failure modes. The first is when the user just uploads a random file which is not the correct file. The second is when a user uploads a deposit_data.json and the file is not valid/is corrupt/has invalid signature(s). The second state is much more severe and we should display a much more ominous error message encouraging users to get in contact opening an issue here or on ethereum/eth2.0-deposit-cli.

Check if deposit for the same validator pubkey was already made

Hi, I just customized my local launchpad to work with Altona.
Works fine so far but what I noticed is that you can deposit multiple times for the same validator.
Would be nice if we could check if a deposit to the same validator pubkey was already made and if oldDeposit + newDeposit > 32Ether and disallow to continue in that case.

Web browser eth2.0-deposit-cli

Has it been considered to do the steps accomplished with eth2.0-deposit-cli in the browser? If it's possible to integrate those tools in this demo website it should be possible to do so in the Launchpad https://bls-keygen.com/.

There is a strong UX argument to keep those tools in the same platform and to not force users to install and use python on top of the eth2 client they pick. Arguments against this would be for security, pishing, etc? The launchpad could offer instructions for both, offline key generation and browser key generation.

file eth2deposit.py (for module eth2deposit) not found

not sure what I did wrong.

brano@Ubuntu-1604-xenial-64-minimal:~$ rm -rf eth2.0-deposit-cli/
brano@Ubuntu-1604-xenial-64-minimal:~$ git clone https://github.com/ethereum/eth2.0-deposit-cli.git
Cloning into 'eth2.0-deposit-cli'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 871 (delta 3), reused 6 (delta 1), pack-reused 857
Receiving objects: 100% (871/871), 350.07 KiB | 312.00 KiB/s, done.
Resolving deltas: 100% (503/503), done.
Checking connectivity... done.
brano@Ubuntu-1604-xenial-64-minimal:~$ cd eth2.0-deposit-cli
brano@Ubuntu-1604-xenial-64-minimal:~/eth2.0-deposit-cli$ pip3 install -r requirements.txt
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Requirement already satisfied: py-ecc==4.0.0 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (4.0.0)
Requirement already satisfied: pycryptodome==3.9.7 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 4)) (3.9.7)
Requirement already satisfied: click==7.0 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 35)) (7.0)
Requirement already satisfied: ssz==0.2.3 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 38)) (0.2.3)
Requirement already satisfied: eth-typing==2.2.1 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 41)) (2.2.1)
Requirement already satisfied: eth-utils==1.8.4 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 46)) (1.8.4)
Requirement already satisfied: mypy-extensions==0.4.3 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 49)) (0.4.3)
Requirement already satisfied: lru-dict==1.1.6 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 52)) (1.1.6)
Requirement already satisfied: pyrsistent==0.15.7 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 54)) (0.15.7)
Requirement already satisfied: eth-hash==0.2.0 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 56)) (0.2.0)
Requirement already satisfied: cytoolz==0.10.1 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 59)) (0.10.1)
Requirement already satisfied: toolz==0.10.0 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 61)) (0.10.0)
Requirement already satisfied: six==1.14.0 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 63)) (1.14.0)
Requirement already satisfied: cached-property==1.5.1 in /home/brano/.local/lib/python3.7/site-packages (from -r requirements.txt (line 66)) (1.5.1)
brano@Ubuntu-1604-xenial-64-minimal:~/eth2.0-deposit-cli$ python3 setup.py install
running install
running bdist_egg
running egg_info
creating eth2deposit.egg-info
writing eth2deposit.egg-info/PKG-INFO
writing dependency_links to eth2deposit.egg-info/dependency_links.txt
writing top-level names to eth2deposit.egg-info/top_level.txt
writing manifest file 'eth2deposit.egg-info/SOURCES.txt'
file eth2deposit.py (for module eth2deposit) not found
reading manifest file 'eth2deposit.egg-info/SOURCES.txt'
writing manifest file 'eth2deposit.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
file eth2deposit.py (for module eth2deposit) not found
creating build
creating build/lib
creating build/lib/eth2deposit
copying eth2deposit/credentials.py -> build/lib/eth2deposit
copying eth2deposit/deposit.py -> build/lib/eth2deposit
copying eth2deposit/settings.py -> build/lib/eth2deposit
copying eth2deposit/__init__.py -> build/lib/eth2deposit
creating build/lib/eth2deposit/utils
copying eth2deposit/utils/ascii_art.py -> build/lib/eth2deposit/utils
copying eth2deposit/utils/crypto.py -> build/lib/eth2deposit/utils
copying eth2deposit/utils/validation.py -> build/lib/eth2deposit/utils
copying eth2deposit/utils/ssz.py -> build/lib/eth2deposit/utils
copying eth2deposit/utils/constants.py -> build/lib/eth2deposit/utils
copying eth2deposit/utils/__init__.py -> build/lib/eth2deposit/utils
creating build/lib/eth2deposit/key_handling
copying eth2deposit/key_handling/keystore.py -> build/lib/eth2deposit/key_handling
copying eth2deposit/key_handling/__init__.py -> build/lib/eth2deposit/key_handling
creating build/lib/eth2deposit/key_handling/key_derivation
copying eth2deposit/key_handling/key_derivation/mnemonic.py -> build/lib/eth2deposit/key_handling/key_derivation
copying eth2deposit/key_handling/key_derivation/tree.py -> build/lib/eth2deposit/key_handling/key_derivation
copying eth2deposit/key_handling/key_derivation/path.py -> build/lib/eth2deposit/key_handling/key_derivation
copying eth2deposit/key_handling/key_derivation/__init__.py -> build/lib/eth2deposit/key_handling/key_derivation
creating build/lib/tests
creating build/lib/tests/test_key_handling
copying tests/test_key_handling/test_keystore.py -> build/lib/tests/test_key_handling
copying tests/test_key_handling/__init__.py -> build/lib/tests/test_key_handling
creating build/lib/tests/test_key_handling/test_key_derivation
copying tests/test_key_handling/test_key_derivation/test_path.py -> build/lib/tests/test_key_handling/test_key_derivation
copying tests/test_key_handling/test_key_derivation/test_mnemonic.py -> build/lib/tests/test_key_handling/test_key_derivation
copying tests/test_key_handling/test_key_derivation/test_tree.py -> build/lib/tests/test_key_handling/test_key_derivation
copying tests/test_key_handling/test_key_derivation/__init__.py -> build/lib/tests/test_key_handling/test_key_derivation
file eth2deposit.py (for module eth2deposit) not found
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/eth2deposit
copying build/lib/eth2deposit/credentials.py -> build/bdist.linux-x86_64/egg/eth2deposit
copying build/lib/eth2deposit/deposit.py -> build/bdist.linux-x86_64/egg/eth2deposit
copying build/lib/eth2deposit/settings.py -> build/bdist.linux-x86_64/egg/eth2deposit
creating build/bdist.linux-x86_64/egg/eth2deposit/utils
copying build/lib/eth2deposit/utils/ascii_art.py -> build/bdist.linux-x86_64/egg/eth2deposit/utils
copying build/lib/eth2deposit/utils/crypto.py -> build/bdist.linux-x86_64/egg/eth2deposit/utils
copying build/lib/eth2deposit/utils/validation.py -> build/bdist.linux-x86_64/egg/eth2deposit/utils
copying build/lib/eth2deposit/utils/ssz.py -> build/bdist.linux-x86_64/egg/eth2deposit/utils
copying build/lib/eth2deposit/utils/constants.py -> build/bdist.linux-x86_64/egg/eth2deposit/utils
copying build/lib/eth2deposit/utils/__init__.py -> build/bdist.linux-x86_64/egg/eth2deposit/utils
creating build/bdist.linux-x86_64/egg/eth2deposit/key_handling
creating build/bdist.linux-x86_64/egg/eth2deposit/key_handling/key_derivation
copying build/lib/eth2deposit/key_handling/key_derivation/mnemonic.py -> build/bdist.linux-x86_64/egg/eth2deposit/key_handling/key_derivation
copying build/lib/eth2deposit/key_handling/key_derivation/tree.py -> build/bdist.linux-x86_64/egg/eth2deposit/key_handling/key_derivation
copying build/lib/eth2deposit/key_handling/key_derivation/path.py -> build/bdist.linux-x86_64/egg/eth2deposit/key_handling/key_derivation
copying build/lib/eth2deposit/key_handling/key_derivation/__init__.py -> build/bdist.linux-x86_64/egg/eth2deposit/key_handling/key_derivation
copying build/lib/eth2deposit/key_handling/keystore.py -> build/bdist.linux-x86_64/egg/eth2deposit/key_handling
copying build/lib/eth2deposit/key_handling/__init__.py -> build/bdist.linux-x86_64/egg/eth2deposit/key_handling
copying build/lib/eth2deposit/__init__.py -> build/bdist.linux-x86_64/egg/eth2deposit
creating build/bdist.linux-x86_64/egg/tests
creating build/bdist.linux-x86_64/egg/tests/test_key_handling
copying build/lib/tests/test_key_handling/test_keystore.py -> build/bdist.linux-x86_64/egg/tests/test_key_handling
creating build/bdist.linux-x86_64/egg/tests/test_key_handling/test_key_derivation
copying build/lib/tests/test_key_handling/test_key_derivation/test_path.py -> build/bdist.linux-x86_64/egg/tests/test_key_handling/test_key_derivation
copying build/lib/tests/test_key_handling/test_key_derivation/test_mnemonic.py -> build/bdist.linux-x86_64/egg/tests/test_key_handling/test_key_derivation
copying build/lib/tests/test_key_handling/test_key_derivation/test_tree.py -> build/bdist.linux-x86_64/egg/tests/test_key_handling/test_key_derivation
copying build/lib/tests/test_key_handling/test_key_derivation/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_key_handling/test_key_derivation
copying build/lib/tests/test_key_handling/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_key_handling
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/credentials.py to credentials.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/deposit.py to deposit.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/settings.py to settings.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/utils/ascii_art.py to ascii_art.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/utils/crypto.py to crypto.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/utils/validation.py to validation.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/utils/ssz.py to ssz.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/utils/constants.py to constants.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/utils/__init__.py to __init__.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/key_handling/key_derivation/mnemonic.py to mnemonic.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/key_handling/key_derivation/tree.py to tree.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/key_handling/key_derivation/path.py to path.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/key_handling/key_derivation/__init__.py to __init__.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/key_handling/keystore.py to keystore.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/key_handling/__init__.py to __init__.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/eth2deposit/__init__.py to __init__.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/tests/test_key_handling/test_keystore.py to test_keystore.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/tests/test_key_handling/test_key_derivation/test_path.py to test_path.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/tests/test_key_handling/test_key_derivation/test_mnemonic.py to test_mnemonic.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/tests/test_key_handling/test_key_derivation/test_tree.py to test_tree.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/tests/test_key_handling/test_key_derivation/__init__.py to __init__.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/tests/test_key_handling/__init__.py to __init__.cpython-37.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying eth2deposit.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying eth2deposit.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying eth2deposit.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying eth2deposit.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
Traceback (most recent call last):
  File "setup.py", line 12, in <module>
    python_requires=">=3.7,<4",
  File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 67, in run
    self.do_egg_install()
  File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 109, in do_egg_install
    self.run_command('bdist_egg')
  File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 209, in run
    os.path.join(archive_root, 'EGG-INFO'), self.zip_safe()
  File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 245, in zip_safe
    return analyze_egg(self.bdist_dir, self.stubs)
  File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 355, in analyze_egg
    safe = scan_module(egg_dir, base, name, stubs) and safe
  File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 392, in scan_module
    code = marshal.load(f)
ValueError: bad marshal data (unknown type code)

ModuleNotFoundError: No module named 'py_ecc'

Followed all steps and have ubuntu 18.04 with
python3.7 --version
Python 3.7.8
pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.7)

git clone https://github.com/ethereum/eth2.0-deposit-cli.git
cd eth2.0-deposit-cli
pip3 install -r requirements.txt
python3.7 setup.py install
#all above worked without issues

python3.7 ./eth2deposit/deposit.py --num_validators 1 --chain medalla

Traceback (most recent call last):
File "./eth2deposit/deposit.py", line 5, in
from eth2deposit.credentials import (
File "/usr/local/lib/python3.7/dist-packages/eth2deposit-0.2.1-py3.7.egg/eth2deposit/credentials.py", line 5, in
from py_ecc.bls import G2ProofOfPossession as bls
ModuleNotFoundError: No module named 'py_ecc'

Errors during "pip3 install -r requirements.txt"

Was walking through the steps and got to this point with the following error:

Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/3.7'
Consider using the --user option or check the permissions.

I'm on MacOS.

Note: Sudo would work here and it seems to be a permissions issue but I just want to point out that a lot of people will likely run into this.

Can't open file 'src/deposit.py'

After running the final command to generate keys:

/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'src/deposit.py': [Errno 2] No such file or directory

Different order of steps

Please, let the user first sync the beacon-node (and connect it to its validator), and eth1 node before doing the deposit!
If the user for some reason fails to set this up, it will lose ETH due to inactivity.
Also, syncing an Eth1 node on the main-net can take a few hours/days.

Multi-language support of Launchpad (Chinese)

Seeking for a Chinese version of the key info and staking guide of the Launchpad to engage more potential Chinese-speaking participants into Medalla and Beacon Chain. Already some contributers would like to help translate but need a technical solution.

[Key Generation page] Link to download CLI releases

Several windows users have left feedback about the Deposit-CLI permission issues. A new release of the CLI has fixed this and it has been discussed to display a link to the repo's GH releases page tracked here #github/eth2.0-deposit-cli/67.

@hwwhww Can you provide context on how this link should be represented visually? Is running the executable the preferred way for all machines, or just Windows?

Is there any impact on section 3 content?

Shall the link go above the code emulator? Mention the preferred method?

Should it link out to the general releases page or the specific 0.2.1 tagged release?

Screen Shot 2020-07-28 at 5 03 24 PM

Congrats Page

The deposit page is rather sparse at the moment & it's time to address that. I'm opening this issue to track and ideate over what to include:

  • Congrats artwork
  • Change colour scheme on progress bar & handle post-deposit status ร  la #94
  • Client suggestions (It looks like there are going to be 4 at launch, namely: Lighthouse, Nimbus, Prysm, Teku and I'd like to randomise the order in which they appear.) There should be links out to the various clients.
  • Show validator deposits on Eth2 explorers Beaconscan & beaconcha.in

Metamask not recognized on Mac - Unable to register.

Reached the Connect Wallet step with no wallets installed. Click on Metamask button, get the message "Please install MetaMask".

  1. Installed and configured Metamask but the site still gives the same message after clicking the button. Unable to continue from here.

  2. Did a refresh, clicked through the steps again, clicked on Metamask button, get the message "Please install MetaMask".

Final note: the button and the message have mismatching capitalization - Metamask vs. MetaMask.

Brave browser (1.11.101) on Mac (10.15.5)

Prominently display contract address (with links to block explorers?)

Currently the full deposit contract address is not displayed clearly anywhere. We've had discussions before around checking users actually use the correct contract, and there is no perfect solution, but it would be useful to at least display the current address.

Places where the address should be displayed:

  • On hover over contract address in to left corner
  • The phishing section of the summary page
  • Transactions page

Progress bar after genesis threshold

After the genesis deposit threshold is reached the progress bar needs to change to reflect the new state of the network.

Currently:

  • The "Launch threshold" is negative
  • The label "Launch Threshold" does not match up with the value displayed before the threshold is reached. It should read "XXX ETH to go!" and I think "Already staked" is a more appropriate title for the current staking balance

Screenshot 2020-07-08 at 5 01 56 PM

I propose we fix the launch threshold in place and allow the current staking value to overtake it when the balance is larger like in the below image:

Combined

Value displayed in statusbar includes invalid deposits

The info statusbar on the landing page seems to display the total amount of ETH sent to the deposit contract address (compared with https://goerli.etherscan.io/address/0x07b39f4fde4a38bace212b546dac87c58dfe3fdc).

However, the actual genesis threshold is only reached if the number of valid deposits is high enough. So the statusbar should only display those. Otherwise, the statusbar will be at 100% before the genesis threshold is reached. According to my lighthouse client there are currently ~200 invalid deposits.

Edit: The statusbar on https://medalla.beaconcha.in/ seems to show the correct balance.

Possible Issue: Repeated steps for key generation on Mac, Confusing for configuration

Walking through the steps here with this configuration:

1. How many validators would you like to run? 1
2. Current operating system? Mac (Mojave 10.14.4)
3. Install developer libraries? Already installed
4. Generate deposit keys using Ethereum Foundation tool? *Encountered issue here!*

When I run ./deposit.sh install, it walks me through generating a keypair through mnemonic, asks me to write down the mnemonic, etc. However, when I run the next command on the line, ./deposit.sh --num_validators 1 --chain medalla, it walks me through the same generation process.

It's confusing from a UX standpoint, because it seems like I'm running the whole process again (exact same instructions).

EDIT: It does seem to be an unnecessary duplication, creating two sets of validator keys.

404 (instead of redirect) on deposit pages

As per discussion with @ajsutton in ethereum/staking-deposit-cli#53, reloading a page in the flow results in a 404.

The idea is that it is not possible to skip ahead in the process. It is intentional user friction to ensure that everyone goes through the steps. That said, it is not supposed to 404, it should just redirect you to the home page.

IIRC, it used to redirect back to the beginning.

Windows commands for Key Generation page

We need the windows version of our Mac/Linux instructions for generating validator keys.

  • Dependency instructions and links
  • terminal/PowerShell commands
  • specify python version

Screen Shot 2020-05-13 at 10 28 22 PM

Clearly communicate when using Testnet

  • All Eth mentions should specify GoEth when on testnet
  • In education & confirmation screens specify Testnet
  • Potentially include a testnet watermark on pages

Typo in Launchpad image

There is a typo on the "Timeline and milestones" image.

Interoparability > InteropErability

image

Overview page edge case

If you click the "Overview" item in the ToC the proceed button is swapped out with "I Accept" instead of "Continue".

Screenshot 2020-04-09 at 2 53 59 PM

Congratulations Page

High-level Congratulations page requirements:

  • Render the user the Contract Balance Progress Bar
  • Render a completed transactions table(Designs Pending)
  • Render the Client Validators info cards(Designs and Requirements Pending)
  • Render additional resources cards

Raw transaction "wallet type"

A while ago we had the notion of offering raw transactions as a wallet type (I'm not sure where along the line we dropped it). Basically, instead of using one of the wallets we offer, download/copy the raw transaction into your favourite wallet and take it from there. This is friendly to those stakers who have coldstores who wish to keep them offline. IMO we don't need to offer the functionality to send the transaction when they are done, such users can find their own way of doing so.

Negative & null validatorCounts

While the arrows prevent negative and/or empty validator count, a user can still enter a negative amount (or no) of validators. Ideally, this number should be bounded from below.

Offline\Local builds

Currently to build this interface for offline, one needs to add a lot of variables to their local .env. It is important that the process for building this site locally for testing or for users who wish to use this interface offline is user-friendly.

For example to build the app currently the following is required:

touch .env

echo "
REACT_APP_PORTIS_DAPP_ID=0
REACT_APP_INFURA_PROJECT_ID=0
REACT_APP_FORTMATIC_KEY=0
REACT_APP_WEB3_POLLING_INTERVAL=1
REACT_APP_RPC_URL_GOERLI=goerli.infura.io/v3
REACT_APP_RPC_URL_MAINNET=mainnet.infura.io/v3
REACT_APP_ALETHIO_URL=https://explorer.goerli.aleth.io/
REACT_APP_ETHERSCAN_URL=https://goerli.etherscan.io/
REACT_APP_CONTRACT_ADDRESS=0x4DC8B546b93131309c82505a6fdfB978D311bf45
REACT_APP_MAINNET_ETH_REQUIREMENT=524288
REACT_APP_PRICE_PER_VALIDATOR=3.2
REACT_APP_IS_MAINNET=False
" >> .env

yarn add dotenv

yarn start

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.