eth2.0-specs/solidity_deposit_contract/README.md

1.9 KiB

Deposit Contract

History

This is a rewrite of the Vyper Eth 2.0 deposit contract to Solidity.

The original motivation was to run the SMTChecker and the new Yul IR generator option (--ir) in the compiler.

As of June 2020, version r1 of the Solidity deposit contract has been verified and is considered for adoption. See this blog post for more information.

In August 2020, version r2 was released with metadata modifications and relicensed to CC0-1.0. Afterward, this contract has been ported back to from axic/eth2-deposit-contract to this repository and replaced the Vyper deposit contract.

Running web3 tests

  1. In the eth2.0-specs directory run make install_deposit_contract_web3_tester to install the tools needed (make sure to have Python 3.7 and pip installed).
  2. In the eth2.0-specs directory run make test_deposit_contract_web3_tests to execute the tests.

Running randomized dapp tests:

Install the latest version of dapp by following the instructions at dapp.tools. Then in the eth2.0-specs directory run:

make test_deposit_contract

Compiling solidity

In the eth2.0-specs directory run:

make compile_deposit_contract

The following parameters were used to generate the bytecode for the `DepositContract` available in this repository:

* Contract Name: `DepositContract`
* Compiler Version: Solidity `v0.6.11+commit.5ef660b1`
* Optimization Enabled: `Yes` with `5000000` runs
* EVM Version: `default` (Istanbul)
* Metadata Options: `--metadata-literal` (to verify metadata hash)

```sh
solc --optimize --optimize-runs 5000000 --metadata-literal --bin deposit_contract.sol