Skip to content

Files

Latest commit

 

History

History

solidity_deposit_contract

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.

Compiling solidity deposit contract

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
  • Metadata Options: --metadata-literal (to verify metadata hash)
solc --optimize --optimize-runs 5000000 --metadata-literal --bin deposit_contract.sol

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