2019-11-13 21:43:38 +00:00
# Prysm: An Ethereum 2.0 Client Written in Go
2018-03-06 03:20:36 +00:00
2019-06-17 21:47:31 +00:00
[![Build status ](https://badge.buildkite.com/b555891daf3614bae4284dcf365b2340cefc0089839526f096.svg?branch=master )](https://buildkite.com/prysmatic-labs/prysm)
Update run time to v0.9.3 (#4154)
* Remove custody (#3986)
* Update proto fields
* Updated block operations
* Fixed all block operation tests
* Fixed tests part 1
* Fixed tests part 1
* All tests pass
* Clean up
* Skip spec test
* Fixed ssz test
* Skip ssz test
* Skip mainnet tests
* Update beacon-chain/operations/attestation.go
* Update beacon-chain/operations/attestation.go
* Decoy flip flop check (#3987)
* Bounce attack check (#3989)
* New store values
* Update process block
* Update process attestation
* Update tests
* Helper
* Fixed blockchain package tests
* Update beacon-chain/blockchain/forkchoice/process_block.go
* Conflict
* Unskip mainnet spec tests (#3998)
* Starting
* Fixed attestation mainnet test
* Unskip ssz static and block processing tests
* Fixed workspace
* fixed workspace
* fixed workspace
* Update beacon-chain/core/blocks/block_operations.go
* Unskip minimal spec tests (#3999)
* Starting
* Fixed attestation mainnet test
* Unskip ssz static and block processing tests
* Fixed workspace
* fixed workspace
* fixed workspace
* Update workspace
* Unskip all minimal spec tests
* Update workspace for general test
* Unskip test (#4001)
* Update minimal seconds per slot to 6 (#3978)
* Bounce attack tests (#3993)
* New store values
* Update process block
* Update process attestation
* Update tests
* Helper
* Fixed blockchain package tests
* Slots since epoch starts tests
* Update justified checkpt tests
* Conflict
* Fixed logic
* Update process_block.go
* Use helper
* Conflict
* Merge branch 'master' of https://github.com/prysmaticlabs/prysm into v0.9.1
* Conflict
* Fixed failed tests
* Lower MinGenesisActiveValidatorCount to 16384 (#4100)
* Fork choice beacon block checks (#4107)
* Prevent future blocks check and test
* Removed old code
* Update aggregation proto (#4121)
* Update def
* Update spec test
* Conflict
* Update workspace
* patch
* Resolve conflict
* Patch
* Change workspace
* Update ethereumapis to a forked branch at commit https://github.com/prysmaticlabs/ethereumapis/pull/46/commits/6eb1193e47f66c7dabc33958b1996ec16c1b6e16
* Fixed all the tests
* Merge branch 'v0.9.2' of https://github.com/prysmaticlabs/prysm into conflict
* fix patch
* Need to regenerate test data
* Merge branch 'master' into v0.9.2
* Merge branch 'master' of https://github.com/prysmaticlabs/prysm into v0.9.2
* Enable snappy compression for all (#4157)
* enable snappy compression for all
* enable snappy compression for all
* enable snappy compression for all
* enable snappy compression for all
* Validate aggregate and proof subscriber (#4159)
* Merge branch 'master' of https://github.com/prysmaticlabs/prysm into v0.9.2
* Conflict
* Update workspace
* Conflict
* Conflict
* Conflict
* Merge branch 'master' into v0.9.2
* Merge branch 'master' into v0.9.2
* Conflict
* Merge branch 'v0.9.2' of https://github.com/prysmaticlabs/prysm into v0.9.2
* Remove migrate to snappy (#4205)
* Feature flag: Deprecate --prune-states, release to all (#4204)
* Deprecated prune-states, release to all
* imports
* remote unused import
* remove unused import
* Rm prune state test
* gaz
* Refactoring for dynamic pubsub subscriptions for non-aggregated attestations (#4189)
* checkpoint progress
* chkpt
* checkpoint progress
* put pipeline in its own file
* remove unused imports
* add test, it's failing though
* fix test
* remove head state issue
* add clear db flag to e2e
* add some more error handling, debug logging
* skip processing if chain has not started
* fix test
* wrap in go routine to see if anything breaks
* remove duplicated topic
* Add a regression test. Thanks @nisdas for finding the original problem. May it never happen again *fingers crossed*
* Comments
* gofmt
* comment out with TODO
* Sync with master
* Sync with master
* RPC servers use attestation pool (#4223)
* Merge branch 'master' of https://github.com/prysmaticlabs/prysm into v0.9.2
* Refactor RPC to Fully Utilize Ethereum APIs (#4243)
* include attester as a file in the validator server
* remove old proposer server impl
* include new patch and properly sync changes
* align with public pbs
* ensure matches rpc def
* fix up status tests
* resolve all broken test files in the validator rpc package
* gazelle include
* fix up the duties implementation
* fixed up all get duties functions
* all tests pass
* utilize new ethereum apis
* amend validator client to use the new beacon node validator rpc client
* fix up most of validator items
* added in mock
* fix up test
* readd test
* add chain serv mock
* fix a few more validator methods
* all validator tests passingggg
* fix broken test
* resolve even more broken tests
* all tests passsssss
* fix lint
* try PR
* fix up test
* resolve broken other tests
* Sync with master
* Merge branch 'v0.9.2' of https://github.com/prysmaticlabs/prysm into v0.9.2
* Aggregate and proof subscriber (#4240)
* Added subscribers
* Fixed conflict
* Tests
* fix up patch
* Use upstream pb
* include latest patch
* Fmt
* Save state before head block
* skip tests (#4275)
* Delete block attestations from the pool (#4241)
* Added subscribers
* Clean up
* Fixed conflict
* Delete atts in pool in validate pipeline
* Moved it to subscriber
* Merge branch 'v0.9.2' of https://github.com/prysmaticlabs/prysm into use-att-pool-3
* Test
* Fixed test
* Initial work on voluntary exit (#4207)
* Initial implementation of voluntary exit: RPC call
* Update for recent merges
* Break out validation logic for voluntary exits to core module
* RequestExit -> ProposeExit
* Decrease exit package visibility
* Move to operation feed
* Wrap errors
* Fix critical proposer selection bug #4259 (#4265)
* fix critical proposer selection bug #4259
* gofmt
* add 1 more validator to make it 5
* more tests
* Fixed archivedProposerIndex
* Fixed TestFilterAttestation_OK
* Refactor ComputeProposerIndex, add regression test for potential out of range panic
* handle case of nil validator
* Update validators_test.go
* Merge branch 'master' of github.com:prysmaticlabs/prysm into v0.9.2
* Leftover merge files, oops
* gaz
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge branch 'master' of https://github.com/prysmaticlabs/geth-sharding into v0.9.2
* Fixes Duplicate Validator Bug (#4322)
* Update dict
* Test helper
* Regression test
* Comment
* Reset test cache
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* fixes after PR #4328
* Complete attestation pool for run time (#4286)
* Added subscribers
* Fixed conflict
* Delete atts in pool in validate pipeline
* Moved it to subscriber
* Test
* Fixed test
* New curl for forkchoice attestations
* Starting att pool service for fork choice
* Update pool interface
* Update pool interface
* Update sync and node
* Lint
* Gazelle
* Updated servers, filled in missing functionalities
* RPC working with 1 beacon node 64 validators
* Started writing tests. Yay
* Test to aggregate and save multiple fork choice atts
* Tests for BatchAttestations for fork choice
* Fixed exisiting tests
* Minor fixes
* Fmt
* Added batch saves
* Lint
* Mo tests yay
* Delete test
* Fmt
* Update interval
* Fixed aggregation broadcast
* Clean up based on design review comment
* Fixed setupBeaconChain
* Raul's feedback. s/error/err
* resolve conflicts
* Merge branch 'v0.9.2' of github.com:prysmaticlabs/prysm into v0.9.2
* Merge branch 'master' of github.com:prysmaticlabs/prysm into v0.9.2
* Merge refs/heads/master into v0.9.2
* Removed old protos and fixed tests (#4336)
* Merge refs/heads/master into v0.9.2
* Disallow duplicated indices and test (#4339)
* Explicit use of GENESIS_SLOT in fork choice (#4343)
* Update from 2 to 3 (#4345)
* Remove verify unaggregated attestation when aggregating (#4347)
* use slot ticker instead of run every (#4348)
* Add context check for unbounded loop work (#4346)
* Revert "Explicit use of GENESIS_SLOT in fork choice (#4343)" (#4349)
This reverts commit d3f6753c77f8f733563d00ab649c5159b2c2926f.
* Refactor Powchain Service (#4306)
* add data structures
* generate proto
* add in new fields
* add comments
* add new mock state
* add new mock state
* add new methods
* some more changes
* check genesis time properly
* lint
* fix refs
* fix tests
* lint
* lint
* lint
* gaz
* fix lint
* raul's comments
* use one method
* fix test
* raul's comment
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Ensure best better-justification is stored for fork choice (#4342)
* Ensure best better-justification is stored. Minor refactor
* Tests
* Merge refs/heads/v0.9.2 into better-best-justified
* Merge refs/heads/v0.9.2 into better-best-justified
* Ensure that epoch of attestation slot matches the target epoch (#4341)
* Disallow duplicated indices and test
* Add slot to target epoch check to on_attestation
* Add slot to target epoch check to process_attestation
* Merge branch 'v0.9.2' of git+ssh://github.com/prysmaticlabs/prysm into no-dup-att-indices
* Fixed TestProcessAttestations_PrevEpochFFGDataMismatches
* Merge refs/heads/v0.9.2 into no-dup-att-indices
* Merge refs/heads/v0.9.2 into no-dup-att-indices
* Merge refs/heads/v0.9.2 into no-dup-att-indices
* Merge refs/heads/v0.9.2 into no-dup-att-indices
* Merge refs/heads/v0.9.2 into no-dup-att-indices
* Merge refs/heads/v0.9.2 into no-dup-att-indices
* Merge refs/heads/v0.9.2 into no-dup-att-indices
* Update beacon-chain/blockchain/forkchoice/process_attestation_test.go
Co-Authored-By: Raul Jordan <raul@prysmaticlabs.com>
* Merge refs/heads/v0.9.2 into no-dup-att-indices
* Filter viable branches in fork choice (#4355)
* Only activate upon finality (#4359)
* Updated functions
* Tests
* Merge branch 'v0.9.2' of git+ssh://github.com/prysmaticlabs/prysm into queue-fix-on-finality
* Comment
* Merge refs/heads/v0.9.2 into queue-fix-on-finality
* Fixed failing test from 4359 (#4360)
* Fixed
* Skip registry spec tests
* Wait for state to be initialized at least once before running slot ticker based on genesis time (#4364)
* Sync with master
* Fix checkpoint root to use genesis block root (#4368)
* Return an error on nil head state in fork choice (#4369)
* Return error if nil head state
* Fixed tests. Saved childen blocks state
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
* Update metrics every epoch (#4367)
* return empty slice if state is nil (#4365)
* Merge branch 'master' of github.com:prysmaticlabs/prysm into v0.9.2
* Merge refs/heads/master into v0.9.2
* Pubsub: Broadcast attestations to committee based subnets (#4316)
* Working on un-aggregated pubsub topics
* update subscriber to call pool
* checkpointing
* fix
* untested message validation
* minor fixes
* rename slotsSinceGenesis to slotsSince
* some progress on a unit test, subscribe is not being called still...
* dont change topic
* need to set the data on the message
* restore topic
* fixes
* some helpful parameter changes for mainnet operations
* lint
* Terence feedback
* unskip e2e
* Unit test for validate committee index beacon attestation
* PR feedbacK
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Merge branch 'master' of https://github.com/prysmaticlabs/geth-sharding into resolveConflicts
* remove condition
* Remove unused operation pool (#4361)
* Merge refs/heads/master into v0.9.2
* Aggregate attestations periodically (#4376)
* Persist ETH1 Data to Disk (#4329)
* add data structures
* generate proto
* add in new fields
* add comments
* add new mock state
* add new mock state
* add new methods
* some more changes
* check genesis time properly
* lint
* fix refs
* fix tests
* lint
* lint
* lint
* gaz
* adding in new proto message
* remove outdated vars
* add new changes
* remove latest eth1data
* continue refactoring
* finally works
* lint
* fix test
* fix all tests
* fix all tests again
* fix build
* change back
* add full eth1 test
* fix logs and test
* add constant
* changes
* fix bug
* lint
* fix another bug
* change back
* Apply suggestions from code review
Co-Authored-By: Raul Jordan <raul@prysmaticlabs.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
* Fixed VerifyIndexedAttestation (#4382)
* rm signing root (#4381)
* rm signing root
* Fixed VerifyIndexedAttestation
* Check proposer slashed status inside ProcessBlockHeaderNoVerify
* Fixed TestUpdateJustified_CouldUpdateBest
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Remove Redundant Trie Generation (#4383)
* remove trie generation
* remove deposit hashes
* Merge branch 'master' of https://github.com/prysmaticlabs/geth-sharding into v0.9.2
* fix build
* Conflict
* Implement StreamAttestations RPC Endpoint (#4390)
* started attestation stream
* stream attestations test
* on slot tick test passing
* imports
* gaz
* Update beacon-chain/rpc/beacon/attestations_test.go
Co-Authored-By: shayzluf <thezluf@gmail.com>
Co-authored-by: shayzluf <thezluf@gmail.com>
* Fixed goimport (#4394)
* Use custom stateutil ssz for ssz HTR spec tests (#4396)
* Use custom stateutil ssz for ssz HTR spec tests
* gofmt
* Merge branch 'master' of github.com:prysmaticlabs/prysm into v0.9.2
* Merge refs/heads/master into v0.9.2
* set mainnet to be the default for build and run (#4398)
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Merge branch 'master' of github.com:prysmaticlabs/prysm into v0.9.2
* Merge branch 'master' of github.com:prysmaticlabs/prysm into v0.9.2
* gracefully handle deduplicated registration of topic validators (#4399)
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* SSZ: temporarily disable roots cache until cache issues can be resolved (#4407)
* temporarily disable roots cache until cache issues can be resolved
* Also use custom ssz for spectests
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Remove process block attestations as separate routine (#4408)
* Removed old save/process block atts
* Fixed tests
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Save Deposit Cache to Disk (#4384)
* change to protos
* fix build
* glue everything together
* fix test
* raul's review
* preston's comments
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Fix activation queue sorting (#4409)
* Removed old save/process block atts
* Fixed tests
* Proper sorting by eligibility epoch then by indices
* Deleted old colde
* Merge branch 'master' of github.com:prysmaticlabs/prysm into v0.9.2
* Merge branch 'master' into v0.9.2
* Merge refs/heads/master into v0.9.2
* stop recursive lookup if context is cancelled (#4420)
* Fix proposal bug (#4419)
* Add Pending Deposits Safely (#4422)
* safely prune cache
* use proper method
* preston's,terence's reviews and comments
* revert change to build files
* use as feature config instead
* Release custom state ssz (#4421)
* Release custom state ssz, change all HTR of beacon state to use custom method
* typo
* use mainnet config
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Merge branch 'master' of github.com:prysmaticlabs/prysm into v0.9.2
* Update initial sync save justified to align with v0.9.3 (#4432)
* Merge refs/heads/master into v0.9.2
* Merge refs/heads/master into v0.9.2
* fix build
* don't blacklist on pubsub (#4435)
* Fix Flakey Slot Ticker Test (#4434)
* use interface instead for the slot ticker
* fixed up flakey tests
* add gen time
* get duties comment
* fix lifecycle test
* more fixes
* Configurable min genesis delay (#4437)
* Configurable min genesis delay based on https://github.com/ethereum/eth2.0-specs/pull/1557
* remove feature flag for genesis delay
* fix
* demo config feedback
* patch readme
* save keys unencrypted for validators (#4439)
* Add new demo configuration targeting mainnet scale (#4397)
* Add new demo configuration targeting mainnet, with 1/10th of the deposit value
* reduce quotant by 1/10th. Use 1/10th mainnet values
* only change the inactivity quotant
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Save justified checkpoint state (#4433)
* Save justified checkpoint state
* Lint
* Feedback
* Fixed test
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
* Update shared/testutil/deposits.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update proto/testing/ssz_regression_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/core/epoch/epoch_processing.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/operations/attestations/kv/forkchoice.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/operations/attestations/pool.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/operations/attestations/pool.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/powchain/log_processing_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/rpc/validator/exit_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/operations/attestations/service.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/sync/subscriber_beacon_blocks_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/sync/subscriber_beacon_blocks_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/sync/subscriber.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/sync/subscriber.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/rpc/validator/proposer.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/rpc/validator/exit_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/rpc/validator/exit_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/operations/attestations/prepare_forkchoice.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/powchain/log_processing_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/operations/attestations/pool.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/powchain/log_processing_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/rpc/aggregator/server.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/rpc/validator/exit.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/rpc/validator/exit_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/rpc/validator/exit_test.go
Co-Authored-By: Ivan Martinez <ivanthegreatdev@gmail.com>
* Update beacon-chain/cache/depositcache/pending_deposits.go
* Update beacon-chain/cache/depositcache/pending_deposits_test.go
* Update beacon-chain/rpc/validator/proposer.go
* Merge refs/heads/master into v0.9.2
* Fix e2e genesis delay issues (#4442)
* fix e2e genesis delay issues
* register flag
* typo
* Update shared/featureconfig/config.go
Co-Authored-By: Nishant Das <nishdas93@gmail.com>
* Apply suggestions from code review
Co-Authored-By: Nishant Das <nishdas93@gmail.com>
* skip demo e2e
* fix validator
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
Co-authored-by: Nishant Das <nish1993@hotmail.com>
Co-authored-by: Ivan Martinez <ivanthegreatdev@gmail.com>
* Batch Eth1 RPC Calls (#4392)
* add new methods
* get it working
* optimize past deposit logs processing
* revert change
* fix all tests
* use mock
* lint
* lint
* check for nil
* stop panics
* Apply suggestions from code review
Co-Authored-By: terence tsao <terence@prysmaticlabs.com>
* Terence's Review
Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
2020-01-07 18:47:39 +00:00
[![ETH2.0_Spec_Version 0.9.3 ](https://img.shields.io/badge/ETH2.0%20Spec%20Version-v0.9.3-blue.svg )](https://github.com/ethereum/eth2.0-specs/tree/v0.9.3)
2018-08-08 12:01:24 +00:00
[![Discord ](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png )](https://discord.gg/KSA7rPr)
2018-07-22 12:36:13 +00:00
[![Gitter ](https://badges.gitter.im/Join%20Chat.svg )](https://gitter.im/prysmaticlabs/geth-sharding?utm_source=badge& utm_medium=badge& utm_campaign=pr-badge)
2018-01-15 17:41:27 +00:00
2019-11-13 21:43:38 +00:00
This is the core repository for Prysm, a [Golang ](https://golang.org/ ) implementation of the Ethereum 2.0 client specifications developed by [Prysmatic Labs ](https://prysmaticlabs.com ).
2019-07-07 19:57:07 +00:00
### Need assistance?
2020-01-20 23:41:02 +00:00
A more detailed set of installation and usage instructions as well as breakdowns of each individual component are available in the [official documentation portal ](https://docs.prylabs.network ). If you still have questions, feel free to stop by either our [Discord ](https://discord.gg/KSA7rPr ) or [Gitter ](https://gitter.im/prysmaticlabs/geth-sharding?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge ) and a member of the team or our community will be happy to assist you.
2019-07-07 19:57:07 +00:00
### Come join the testnet!
2019-11-13 21:43:38 +00:00
Participation is now open to the public for our Ethereum 2.0 phase 0 testnet release. Visit [prylabs.net ](https://prylabs.net ) for more information on the project or to sign up as a validator on the network.
2018-05-29 22:26:13 +00:00
2018-03-06 03:20:36 +00:00
# Table of Contents
2018-01-15 17:41:27 +00:00
2019-07-07 19:57:07 +00:00
- [Dependencies ](#dependencies )
2020-01-03 19:05:16 +00:00
- [Installation ](#installing-prysm )
2019-11-13 21:43:38 +00:00
- [Build via Docker ](#build-via-docker )
- [Build via Bazel ](#build-via-bazel )
- [Connecting to the public testnet: running a beacon node ](#connecting-to-the-testnet-running-a-beacon-node )
2019-12-20 10:44:03 +00:00
- [Running via Docker ](#running-via-docker )
- [Running via Bazel ](#running-via-bazel )
2019-11-13 21:43:38 +00:00
- [Staking ETH: running a validator client ](#staking-eth-running-a-validator-client )
2020-01-08 02:36:55 +00:00
- [Activating your validator: depositing 3.2 Goerli ETH ](#activating-your-validator-depositing-32-gerli-eth )
2019-11-13 21:43:38 +00:00
- [Starting the validator with Bazel ](#starting-the-validator-with-bazel )
- [Setting up a local ETH2 development chain ](#setting-up-a-local-eth2-development-chain )
- [Installation and dependencies ](#installation-and-dependencies )
- [Running a local beacon node and validator client ](#running-a-local-beacon-node-and-validator-client )
2019-07-07 19:57:07 +00:00
- [Testing Prysm ](#testing-prysm )
2018-05-29 22:26:13 +00:00
- [Contributing ](#contributing )
2018-03-06 03:20:36 +00:00
- [License ](#license )
2018-01-15 17:41:27 +00:00
2019-07-07 19:57:07 +00:00
## Dependencies
2019-05-03 17:55:15 +00:00
2020-01-03 19:05:16 +00:00
Prysm can be installed either with Docker ** \(recommended\)** or using our build tool, Bazel. The below instructions include sections for performing both.
2019-05-03 17:55:15 +00:00
2020-01-03 19:05:16 +00:00
#### **For Docker installations:**
2018-01-15 17:41:27 +00:00
2020-01-03 19:05:16 +00:00
* The latest release of [Docker ](https://docs.docker.com/install/ )
#### **For Bazel installations:**
* The latest release of [Bazel ](https://docs.bazel.build/versions/master/install.html )
* The latest release of `cmake`
* The latest release of `git`
* A modern UNIX operating system \(macOS included\)
## Installing Prysm
2018-02-19 02:03:41 +00:00
2019-07-07 19:57:07 +00:00
### Build via Docker
2020-01-03 19:05:16 +00:00
2019-07-07 19:57:07 +00:00
1. Ensure you are running the most recent version of Docker by issuing the command:
2020-01-03 19:05:16 +00:00
```text
2019-07-07 19:57:07 +00:00
docker -v
```
2020-01-03 19:05:16 +00:00
2. To pull the Prysm images, issue the following commands:
```text
2019-05-03 17:55:15 +00:00
docker pull gcr.io/prysmaticlabs/prysm/validator:latest
docker pull gcr.io/prysmaticlabs/prysm/beacon-chain:latest
```
2020-01-03 19:05:16 +00:00
2019-07-07 19:57:07 +00:00
This process will also install any related dependencies.
2018-01-15 17:41:27 +00:00
2019-07-07 19:57:07 +00:00
### Build via Bazel
2018-03-06 02:14:39 +00:00
2019-07-08 21:17:14 +00:00
1. Open a terminal window. Ensure you are running the most recent version of Bazel by issuing the command:
2020-01-03 19:05:16 +00:00
```text
2019-07-07 19:57:07 +00:00
bazel version
```
2020-01-03 19:05:16 +00:00
2. Clone Prysm's [main repository ](https://github.com/prysmaticlabs/prysm ) and enter the directory:
```text
2018-10-03 03:54:35 +00:00
git clone https://github.com/prysmaticlabs/prysm
2019-05-24 20:23:20 +00:00
cd prysm
2018-08-15 01:21:49 +00:00
```
2018-03-05 20:50:34 +00:00
2020-01-03 19:05:16 +00:00
3. Build both the beacon chain node and the validator client:
2019-10-17 15:42:53 +00:00
2020-01-03 19:05:16 +00:00
```text
bazel build //beacon-chain:beacon-chain
bazel build //validator:validator
2019-10-17 15:42:53 +00:00
```
2020-01-03 19:05:16 +00:00
Bazel will automatically pull and install any dependencies as well, including Go and necessary compilers.
2019-10-17 15:42:53 +00:00
2020-01-03 19:05:16 +00:00
## Connecting to the testnet: running a beacon node
2019-10-17 15:42:53 +00:00
2020-01-20 23:41:02 +00:00
Below are instructions for initialising a beacon node and connecting to the public testnet. To further understand the role that the beacon node plays in Prysm, see [this section of the documentation. ](https://docs.prylabs.network/docs/how-prysm-works/architecture-overview/ )
2019-10-17 15:42:53 +00:00
2019-11-13 21:43:38 +00:00
2020-01-03 19:05:16 +00:00
**NOTE:** It is recommended to open up port 13000 on your local router to improve connectivity and receive more peers from the network. To do so, navigate to `192.168.0.1` in your browser and login if required. Follow along with the interface to modify your routers firewall settings. When this task is completed, append the parameter`--p2p-host-ip=$(curl -s ident.me)` to your selected beacon startup command presented in this section to use the newly opened port.
2018-10-03 17:54:43 +00:00
2019-07-07 19:57:07 +00:00
### Running via Docker
2018-08-15 01:21:49 +00:00
2020-01-03 19:05:16 +00:00
#### **Docker on Linux/macOS:**
2019-10-12 03:32:12 +00:00
To start your beacon node, issue the following command:
2020-01-03 19:05:16 +00:00
```text
2020-01-20 20:30:40 +00:00
docker run -it -v $HOME/prysm:/data -p 4000:4000 -p 13000:13000 --name beacon-node \
2019-11-04 14:37:23 +00:00
gcr.io/prysmaticlabs/prysm/beacon-chain:latest \
2020-01-19 22:46:19 +00:00
--datadir=/data
2019-11-04 14:37:23 +00:00
```
2020-01-03 19:05:16 +00:00
The beacon node can be halted by either using `Ctrl+c` or with the command:
2019-10-12 03:32:12 +00:00
2020-01-03 19:05:16 +00:00
```text
2019-10-12 03:32:12 +00:00
docker stop beacon-node
```
2020-01-03 19:05:16 +00:00
To restart the beacon node, issue the following command:
2019-10-12 03:32:12 +00:00
2020-01-03 19:05:16 +00:00
```text
2019-10-12 03:32:12 +00:00
docker start -ai beacon-node
```
2020-01-03 19:05:16 +00:00
To delete a corrupted container, issue the following command:
2019-10-12 03:32:12 +00:00
2020-01-03 19:05:16 +00:00
```text
2019-10-12 03:32:12 +00:00
docker rm beacon-node
```
2020-01-03 19:05:16 +00:00
To recreate a deleted container and refresh the chain database, issue the start command with an additional `--clear-db` parameter:
2019-10-12 03:32:12 +00:00
2020-01-03 19:05:16 +00:00
```text
2020-01-20 20:30:40 +00:00
docker run -it -v $HOME/prysm:/data -p 4000:4000 -p 13000:13000 --name beacon-node \
2019-10-12 03:32:12 +00:00
gcr.io/prysmaticlabs/prysm/beacon-chain:latest \
--datadir=/data \
2020-01-03 19:05:16 +00:00
--clear-db
2018-01-15 17:41:27 +00:00
```
2019-10-12 03:32:12 +00:00
2020-01-03 19:05:16 +00:00
#### **Docker on Windows:**
2019-07-07 19:57:07 +00:00
2020-01-03 19:05:16 +00:00
1. You will need to 'share' the local drive you wish to mount to \(e.g. C:\).
1. Enter Docker settings \(right click the tray icon\)
2. Click 'Shared Drives'
3. Select a drive to share
4. Click 'Apply'
2. You will next need to create a directory named `/prysm/` within your selected shared Drive. This folder will be used as a local data directory for Beacon Node chain data as well as account and keystore information required by the validator. Docker will **not** create this directory if it does not exist already. For the purposes of these instructions, it is assumed that `C:` is your prior-selected shared Drive.
3. To run the beacon node, issue the following command:
2018-08-20 15:50:11 +00:00
2020-01-03 19:05:16 +00:00
```text
2020-01-20 20:30:40 +00:00
docker run -it -v c:/prysm/:/data -p 4000:4000 -p 13000:13000 --name beacon-node gcr.io/prysmaticlabs/prysm/beacon-chain:latest --datadir=/data --clear-db
2019-05-14 14:40:52 +00:00
```
2019-07-07 19:57:07 +00:00
### Running via Bazel
2020-01-03 19:05:16 +00:00
To start your Beacon Node with Bazel, issue the following command:
```text
bazel run //beacon-chain -- --clear-db --datadir=$HOME/prysm
2018-01-15 17:41:27 +00:00
```
2020-01-03 19:05:16 +00:00
This will sync up the beacon node with the latest head block in the network.
2019-03-17 22:30:46 +00:00
2018-07-22 17:31:43 +00:00
2020-01-03 19:05:16 +00:00
**NOTE:** The beacon node must be **completely synced** before attempting to initialise a validator client, otherwise the validator will not be able to complete the deposit and **funds will lost** .
2018-10-03 17:54:43 +00:00
2019-11-13 21:43:38 +00:00
2020-01-03 19:05:16 +00:00
## Staking ETH: Running a validator client
2018-07-22 17:31:43 +00:00
2020-01-23 14:14:35 +00:00
Once your beacon node is up, the chain will be waiting for you to deposit 3.2 Goerli ETH into a [validator deposit contract ](https://docs.prylabs.network/docs/how-prysm-works/validator-deposit-contract ) in order to activate your validator \(discussed in the section below\). First though, you will need to create this validator and connect to this node to participate in consensus.
2019-05-24 20:23:20 +00:00
2020-01-03 19:05:16 +00:00
Each validator represents 3.2 Goerli ETH being staked in the system, and it is possible to spin up as many as you desire in order to have more stake in the network.
2019-05-24 20:23:20 +00:00
2020-01-03 19:05:16 +00:00
### Activating your validator: depositing 3.2 Göerli ETH
2020-01-23 14:14:35 +00:00
To begin setting up a validator, follow the instructions found on [prylabs.net ](https://prylabs.net ) to use the Göerli ETH faucet and make a deposit. For step-by-step assistance with the deposit page, see the [Activating a Validator ](https://docs.prylabs.network/docs/activating-a-validator )section of this documentation.
2020-01-03 19:05:16 +00:00
It will take a while for the nodes in the network to process a deposit. Once the node is active, the validator will immediately begin performing its responsibilities.
In your validator client, you will be able to frequently see your validator balance as it goes up over time. Note that, should your node ever go offline for a long period, a validator will start gradually losing its deposit until it is removed from the network entirely.
2019-07-07 19:57:07 +00:00
**Congratulations, you are now running Ethereum 2.0 Phase 0!**
2019-05-24 20:23:20 +00:00
2019-11-13 21:43:38 +00:00
## Setting up a local ETH2 development chain
2020-01-03 19:05:16 +00:00
This section outlines the process of setting up Prysm for local testing with other Ethereum 2.0 client implementations. See the [INTEROP.md ](https://github.com/prysmaticlabs/prysm/blob/master/INTEROP.md ) file for advanced configuration options. For more background information on interoperability development, see [this blog post ](https://blog.ethereum.org/2019/09/19/eth2-interop-in-review/ ).
2019-11-13 21:43:38 +00:00
### Installation and dependencies
2020-01-03 19:05:16 +00:00
To begin setting up a local ETH2 development chain, follow the **Bazel** instructions found in the [dependencies ](https://github.com/prysmaticlabs/prysm#dependencies ) and [installation ](https://github.com/prysmaticlabs/prysm#installation ) sections respectively.
2019-11-13 21:43:38 +00:00
### Running a local beacon node and validator client
2020-01-03 19:05:16 +00:00
The example below will generate a beacon genesis state and initiate Prysm with 64 validators with the genesis time set to your machines UNIX time.
2019-11-13 21:43:38 +00:00
2020-01-03 19:05:16 +00:00
Open up two terminal windows. In the first, issue the command:
2019-11-13 21:43:38 +00:00
2020-01-03 19:05:16 +00:00
```text
2019-11-13 21:43:38 +00:00
bazel run //beacon-chain -- \
2020-01-28 21:07:43 +00:00
--custom-genesis-delay=0 \
2019-11-13 21:43:38 +00:00
--bootstrap-node= \
2019-12-17 02:52:54 +00:00
--deposit-contract $(curl https://prylabs.net/contract) \
2019-11-13 21:43:38 +00:00
--clear-db \
--interop-num-validators 64 \
--interop-eth1data-votes
```
2020-01-03 19:05:16 +00:00
Wait a moment for the beacon chain to start. In the other terminal, issue the command:
2019-11-13 21:43:38 +00:00
2020-01-03 19:05:16 +00:00
```text
2020-01-25 14:25:58 +00:00
bazel run //validator -- --keymanager=interop --keymanageropts='{"keys":64}'
2019-11-13 21:43:38 +00:00
```
This command will kickstart the system with your 64 validators performing their duties accordingly.
2019-07-07 19:57:07 +00:00
## Testing Prysm
2018-01-15 17:41:27 +00:00
2019-10-28 17:00:52 +00:00
To run the unit tests of our system, issue the command:
2020-01-03 19:05:16 +00:00
```text
2018-08-15 01:21:49 +00:00
bazel test //...
2018-01-15 17:41:27 +00:00
```
2020-01-03 19:05:16 +00:00
To run our linter, make sure you have [golangci-lint ](https://github.com/golangci/golangci-lint ) installed and then issue the command:
```text
2019-04-26 06:24:01 +00:00
golangci-lint run
2018-07-12 17:12:11 +00:00
```
2018-01-15 17:41:27 +00:00
2020-01-03 19:05:16 +00:00
2019-07-07 19:57:07 +00:00
## Contributing
2020-01-20 23:41:02 +00:00
Want to get involved? Check out our [Contribution Guide ](https://docs.prylabs.network/docs/contribute/contribution-guidelines/ ) to learn more!
2018-01-15 17:41:27 +00:00
2019-07-07 19:57:07 +00:00
## License
2018-07-12 17:12:11 +00:00
[GNU General Public License v3.0 ](https://www.gnu.org/licenses/gpl-3.0.en.html )