b742511193
* validator count * fix build errors * fix test error * randao mixes * active indices * lastReceivedMerkleIndex * redundant conversions * eth1FollowDistance * refs * fix compile error * slasher * validator * revert changes to lastReceivedMerkleIndex * remove todo * fix references test * fix committee test * Revert "validator count" This reverts commit 19b376e39914b88b620a113215daa539e3e66758. # Conflicts: # beacon-chain/rpc/beacon/validators.go * Revert "fix build errors" This reverts commit f4acd6e9776c899a0523df10b64e55783b44c451. * Revert "fix test error" This reverts commit 2a5c9eec63e4546139220c71fe3c07ad92bed3b6. * Revert "randao mixes" This reverts commit 2863f9c24dd8cfc44ffce16321f68ef3b793e9a2. * Revert "active indices" This reverts commit 6e8385f3956a08ef9c8980b5343365a1bee48542. * Revert "refs" This reverts commit c64a153f67cd26daa58c3bf5f911da05d41cfb5d. * Revert "fix references test" This reverts commit fe773b55a6f8cc38c6c5c1f96615fdb8bbd4397d. * Revert "fix committee test" This reverts commit 7a0931c4487707e3eaf75a592415577f04253772. * fix compilation errors * Revert "slasher" This reverts commit 8b34137931cff1e6cdffeaf65e1ef07eefdea647. * trieutil * some int() simplifications * fix deepsource issues * removed redundant fmt.Sprint Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> |
||
---|---|---|
.. | ||
abi.json | ||
BUILD.bazel | ||
bytecode.bin | ||
deposit_tree_test.go | ||
depositContract_test.go | ||
depositContract.go | ||
depositContract.v.py | ||
ETH1logs.go | ||
README.md | ||
testutils.go |
Deposit Contract
A validator will deposit 32 ETH to the deposit
contract. The contract will generate a log showing the validator as a
qualified validator.
The deposit is considered to be burned. As you burn the 32 ETH to participate,
the beacon chain will see it and will credit the validator with the validator bond,
At some point in the future, after a hard fork,
the original deposit + interest can be withdrawn back on one of the shards.
To call the registration
function, it takes arguments of pubkey
,
proof_of_possession
, withdrawal_credentials
.
If the user wants to deposit more than DEPOSIT_SIZE
ETH, they would
need to make multiple deposit
calls.
When the contract publishes the ChainStart
log, beacon nodes will
start off the beacon chain with slot 0 and last recorded block.timestamp
as beacon chain genesis time.
The registration contract generate logs with the various arguments
for consumption by beacon nodes. It does not validate proof_of_possession
and withdrawal_credentials
, pushing the validation logic to the
beacon chain.
How to generate bindings for vyper contract
This requires that you have vyper and abigen installed in your local machine. Vyper: https://github.com/ethereum/vyper Abigen: https://github.com/ethereum/go-ethereum/tree/master/cmd/abigen
To generate the abi using the vyper compiler, you can use
docker run -v $(pwd):/code ethereum/vyper:0.1.0b12 -f abi /code/depositContract.v.py > abi.json
Then the abi will be outputted and you can save it in abi.json
in the folder.
To generate the bytecode you can then use
docker run -v $(pwd):/code ethereum/vyper:0.1.0b12 /code/depositContract.v.py > bytecode.bin
and save the bytecode in bytecode.bin
in the folder. Now with both the abi and bytecode
we can generate the go bindings.
bazel run @com_github_ethereum_go_ethereum//cmd/abigen -- -bin $(pwd)/bytecode.bin -abi $(pwd)/abi.json -out $(pwd)/depositContract.go --pkg depositcontract --type DepositContract
How to execute tests
bazel test //contracts/deposit-contract:go_default_test
Run with -v
option for detailed log output
bazel test //contracts/deposit-contract:go_default_test --test_arg=-test.v --test_output=streamed
=== RUN TestSetupRegistrationContract_OK
--- PASS: TestSetupRegistrationContract_OK (0.07s)
=== RUN TestRegister_Below1ETH
--- PASS: TestRegister_Below1ETH (0.02s)
=== RUN TestRegister_Above32Eth
--- PASS: TestRegister_Above32Eth (0.02s)
=== RUN TestValidatorRegister_OK
--- PASS: TestValidatorRegister_OK (0.08s)
=== RUN TestDrain
--- PASS: TestDrain (0.04s)
PASS
ok contracts/deposit-contract 0.633s