mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-26 05:17:22 +00:00
81c53c26fb
* Update seed domains (#3872) * Remove Transfers (#3870) * Remove active index roots and compact committee roots (#3869) * Update inclusion reward (#3886) * Alter proposer selection logic (#3884) * Fix early committee bias (#3888) * Remove shards and committees (#3896) * Epoch spec tests v0.9 (#3907) * Block spec test v0.9 (#3905) * rm'ed in protobuf * build proto * build proto * build proto * fix core package * Gazelle * Fixed all the tests * Fixed static test * Comment out spec test for now * One more skip * fix-roundRobinSync (#3862) * Starting but need new seed function * Revert initial sync * Updated Proposer Slashing * Fixed all tests * Lint * Update inclusion reward * Fill randao mixes with eth1 data hash * Test * Fixing test part1 * All tests passing * One last test * Updated config * Build proto * Proper skip message * Conflict and fmt * Removed crosslinks and shards. Built * Format and gazelle * Fixed all the block package tests * Fixed all the helper tests * All epoch package tests pass * All core package tests pass * Fixed operation tests * Started fixing rpc test * RPC tests passed! * Fixed all init sync tests * All tests pass * Fixed blockchain tests * Lint * Lint * Preston's feedback * Starting * Remove container * Fixed block spec tests * All passing except for block_processing test * Failing block processing test * Starting * Add AggregateAndProof * All mainnet test passes * Update deposit contract (#3906) * Proto spec tests v0.9 (#3908) * Starting * Add AggregateAndProof * Unskip block util tests (#3910) * rm'ed in protobuf * build proto * build proto * build proto * fix core package * Gazelle * Fixed all the tests * Fixed static test * Comment out spec test for now * One more skip * fix-roundRobinSync (#3862) * Starting but need new seed function * Revert initial sync * Updated Proposer Slashing * Fixed all tests * Lint * Update inclusion reward * Fill randao mixes with eth1 data hash * Test * Fixing test part1 * All tests passing * One last test * Updated config * Build proto * Proper skip message * Conflict and fmt * Removed crosslinks and shards. Built * Format and gazelle * Fixed all the block package tests * Fixed all the helper tests * All epoch package tests pass * All core package tests pass * Fixed operation tests * Started fixing rpc test * RPC tests passed! * Fixed all init sync tests * All tests pass * Fixed blockchain tests * Lint * Lint * Preston's feedback * Starting * Remove container * Fixed block spec tests * All passing except for block_processing test * Failing block processing test * Starting * Add AggregateAndProof * All mainnet test passes * Unskip block util tests * Slot processing spec test V0.9 (#3912) * Starting * Add AggregateAndProof * Unskip slot processing mainnet test * Unskip minimal spec test for finalization (#3920) * Remove outdated interop tests (#3922) * Rm outdated interop tests * Rm test runner * Gazelle * Update validator to use proposer slot (#3919) * Fix committee assignment (#3931) * Replace shard with committee index (#3930) * Conflict * Clean up (#3933) * Remove shard filter in db (#3936) * Remove lightouse compatibility test (#3939) * Update Committee Cache for v0.9 (#3948) * Updated committee cache * Removed shuffled indices cache * Started testing run time * Lint * Fixed test * Safeguard against nil head state * address edge case * add test * Fixed TestRoundRobinSync by doubling the epochs * Unskip TestProtoCompatability (#3958) * Unskip TestProtoCompatability * Update WORKSPACE * Fix minimal config (#3959) * fix minimal configs * fix hardcoded value in test * Simplify verify att time (#3961) * update readme for deposit contract, regen bindings for vyper 0.1.0b12 (#3963) * update readme for deposit contract, regen bindings * medium * Check nil base state (#3964) * Copy Block When Receiving it From Sync (#3966) * copy block * clone for other service methods too * Change logging of Bitfield (#3956) * change logging of bits * preston's review * Unskip Beacon Server Test (#3962) * run test till the end * fix up proto message types * fmt * resolve broken tests * better error handling * fixing new logic to use archived proposer info * fix up logic * clip using the max effective balance * broken build fix with num arg mismatch * amend archive * archival logic changed * rename test * archive both proposer and attester seeds * page size 100 * further experiments * further experimentation, archivedProposerIndex seems wrong * test passes * rem log * fix broken test * fix test * gaz * fix imports * ethapis
79 lines
2.6 KiB
Markdown
79 lines
2.6 KiB
Markdown
## 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
|
|
```
|