4a29e72d81
* 1.use 0.5.1 compiler, 2.bug fixing, and 3.align spec2.0 * modify dependency path * add comment for DEPOSITS_FOR_CHAIN_START |
||
---|---|---|
.. | ||
deployVRC | ||
.soliumignore | ||
BUILD.bazel | ||
README.md | ||
validator_registration_test.go | ||
validator_registration.go | ||
validator_registration.sol |
Validator Registration Contract
A validator will deposit 32 ETH to the registration
contract. The contract will generate a receipt 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
and randao_commitment
.
If the user wants to deposit more than DEPOSIT_SIZE
ETH, they would
need to make multiple registration
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 receipts 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 execute tests
go test ./...
Run with -v
option for detailed log output
go test ./... -v
=== RUN TestSetupAndContractRegistration
--- PASS: TestSetupAndContractRegistration (0.01s)
=== RUN TestRegisterWithLessThan32Eth
--- PASS: TestRegisterWithLessThan32Eth (0.00s)
=== RUN TestRegisterWithMoreThan32Eth
--- PASS: TestRegisterWithMoreThan32Eth (0.00s)
=== RUN TestRegisterTwice
--- PASS: TestRegisterTwice (0.01s)
=== RUN TestRegister
--- PASS: TestRegister (0.01s)
PASS
ok beacon-chain/contracts 0.151s