mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-22 03:30:35 +00:00
Fix Up READMEs for Mainnet (#7910)
* fix up readmes * Update README.md Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com> Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
This commit is contained in:
parent
8c3faaa4c7
commit
b0dfc46603
@ -4,7 +4,7 @@ Note: The latest and most up to date documenation can be found on our [docs port
|
|||||||
|
|
||||||
Excited by our work and want to get involved in building out our sharding releases? Or maybe you haven't learned as much about the Ethereum protocol but are a savvy developer?
|
Excited by our work and want to get involved in building out our sharding releases? Or maybe you haven't learned as much about the Ethereum protocol but are a savvy developer?
|
||||||
|
|
||||||
You can explore our [Open Issues](https://github.com/prysmaticlabs/prysm/issues) in-the works for our different releases. Feel free to fork our repo and start creating PR’s after assigning yourself to an issue of interest. We are always chatting on [Discord](https://discord.gg/che9auJ) or [Gitter](https://gitter.im/prysmaticlabs/geth-sharding) drop us a line there if you want to get more involved or have any questions on our implementation!
|
You can explore our [Open Issues](https://github.com/prysmaticlabs/prysm/issues) in-the works for our different releases. Feel free to fork our repo and start creating PR’s after assigning yourself to an issue of interest. We are always chatting on [Discord](https://discord.gg/CTYGPUJ) drop us a line there if you want to get more involved or have any questions on our implementation!
|
||||||
|
|
||||||
## Contribution Steps
|
## Contribution Steps
|
||||||
|
|
||||||
@ -62,12 +62,6 @@ Changes that only affect a single file can be tested with
|
|||||||
$ go test <file_you_are_working_on>
|
$ go test <file_you_are_working_on>
|
||||||
```
|
```
|
||||||
|
|
||||||
Changes that affect multiple files can be tested with ...
|
|
||||||
|
|
||||||
```
|
|
||||||
$ golangci-lint run && bazel test //...
|
|
||||||
```
|
|
||||||
|
|
||||||
**10. Stage the file or files that you want to commit.**
|
**10. Stage the file or files that you want to commit.**
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -181,7 +175,7 @@ We consider two types of contributions to our repo and categorize them as follow
|
|||||||
|
|
||||||
### Part-Time Contributors
|
### Part-Time Contributors
|
||||||
|
|
||||||
Anyone can become a part-time contributor and help out on implementing sharding. The responsibilities of a part-time contributor include:
|
Anyone can become a part-time contributor and help out on implementing eth2. The responsibilities of a part-time contributor include:
|
||||||
|
|
||||||
- Engaging in Gitter conversations, asking the questions on how to begin contributing to the project
|
- Engaging in Gitter conversations, asking the questions on how to begin contributing to the project
|
||||||
- Opening up github issues to express interest in code to implement
|
- Opening up github issues to express interest in code to implement
|
||||||
@ -192,8 +186,6 @@ Anyone can become a part-time contributor and help out on implementing sharding.
|
|||||||
- Follow up on open PRs
|
- Follow up on open PRs
|
||||||
- Have an estimated timeframe to completion and let the core contributors know if a PR will take longer than expected
|
- Have an estimated timeframe to completion and let the core contributors know if a PR will take longer than expected
|
||||||
|
|
||||||
We do not expect all part-time contributors to be experts on all the latest sharding documentation, but all contributors should at least be familiarized with our sharding [README.md](https://github.com/prysmaticlabs/prysm/blob/master/validator/README.md) and have gone through the required Ethereum readings as posted on our [READINGS.md](https://github.com/prysmaticlabs/prysm/blob/master/docs/READINGS.md) document.
|
|
||||||
|
|
||||||
### Core Contributors
|
### Core Contributors
|
||||||
|
|
||||||
Core contributors are remote contractors of Prysmatic Labs, LLC. and are considered critical team members of our organization. Core devs have all of the responsibilities of part-time contributors plus the majority of the following:
|
Core contributors are remote contractors of Prysmatic Labs, LLC. and are considered critical team members of our organization. Core devs have all of the responsibilities of part-time contributors plus the majority of the following:
|
||||||
|
20
README.md
20
README.md
@ -1,20 +1,28 @@
|
|||||||
# Prysm: An Ethereum 2.0 Client Written in Go
|
# Prysm: An Ethereum 2.0 Implementation Written in Go
|
||||||
|
|
||||||
[![Build status](https://badge.buildkite.com/b555891daf3614bae4284dcf365b2340cefc0089839526f096.svg?branch=master)](https://buildkite.com/prysmatic-labs/prysm)
|
[![Build status](https://badge.buildkite.com/b555891daf3614bae4284dcf365b2340cefc0089839526f096.svg?branch=master)](https://buildkite.com/prysmatic-labs/prysm)
|
||||||
[![Go Report Card](https://goreportcard.com/badge/github.com/prysmaticlabs/prysm)](https://goreportcard.com/report/github.com/prysmaticlabs/prysm)
|
[![Go Report Card](https://goreportcard.com/badge/github.com/prysmaticlabs/prysm)](https://goreportcard.com/report/github.com/prysmaticlabs/prysm)
|
||||||
[![ETH2.0_Spec_Version 1.0.0](https://img.shields.io/badge/ETH2.0%20Spec%20Version-v1.0.0-blue.svg)](https://github.com/ethereum/eth2.0-specs/tree/v1.0.0)
|
[![ETH2.0_Spec_Version 1.0.0](https://img.shields.io/badge/ETH2.0%20Spec%20Version-v1.0.0-blue.svg)](https://github.com/ethereum/eth2.0-specs/tree/v1.0.0)
|
||||||
[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/KSA7rPr)
|
[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/CTYGPUJ)
|
||||||
|
|
||||||
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).
|
This is the core repository for Prysm, a [Golang](https://golang.org/) implementation of the Ethereum 2.0 specification, developed by [Prysmatic Labs](https://prysmaticlabs.com).
|
||||||
|
|
||||||
### Getting Started
|
### Getting Started
|
||||||
A 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 our [Discord](https://discord.gg/KSA7rPr).
|
|
||||||
|
|
||||||
### Come join the testnet!
|
A 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 our [Discord](https://discord.gg/CTYGPUJ).
|
||||||
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. You can visualize the nodes in the network on [eth2stats.io](https://eth2stats.io), explore validator rewards/penalties via Bitfly's block explorer: [beaconcha.in](https://beaconcha.in), and follow the latest blocks added to the chain on [beaconscan](https://beaconscan.com).
|
|
||||||
|
### Staking on Mainnet
|
||||||
|
|
||||||
|
To participate in staking, you can join the [official eth2 launchpad](https://launchpad.ethereum.org). The launchpad is the only recommended way to become a validator on mainnet. You can visualize the nodes in the network on [eth2stats.io](https://eth2stats.io), explore validator rewards/penalties via Bitfly's block explorer: [beaconcha.in](https://beaconcha.in), and follow the latest blocks added to the chain on [beaconscan](https://beaconscan.com).
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Want to get involved? Check out our [Contribution Guide](https://docs.prylabs.network/docs/contribute/contribution-guidelines/) to learn more!
|
Want to get involved? Check out our [Contribution Guide](https://docs.prylabs.network/docs/contribute/contribution-guidelines/) to learn more!
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
[GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
[GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||||
|
|
||||||
|
## Legal Disclaimer
|
||||||
|
|
||||||
|
[Terms of Use](/TERMS_OF_SERVICE.md)
|
||||||
|
43
TESTNET.md
43
TESTNET.md
@ -1,43 +0,0 @@
|
|||||||
# Testnet
|
|
||||||
|
|
||||||
The Prysmatic Labs test network is available for anyone to join. The easiest way to participate is by joining through the website, https://prylabs.net.
|
|
||||||
|
|
||||||
## Interop
|
|
||||||
|
|
||||||
For developers looking to connect a client other than Prysm to the test network, here is the relevant information for compatability.
|
|
||||||
|
|
||||||
|
|
||||||
**Spec version** - [v0.8.3](https://github.com/ethereum/eth2.0-specs/tree/v0.8.3)
|
|
||||||
|
|
||||||
**ETH 1 Deposit Contract Address** - See https://prylabs.net/contract. This contract is deployed on the [goerli](https://goerli.net/) network.
|
|
||||||
|
|
||||||
**Genesis time** - The ETH1 block time in which the 64th deposit to start ETH2 was included. This is NOT midnight of the next day as required by spec.
|
|
||||||
|
|
||||||
### ETH 2 Configuration
|
|
||||||
|
|
||||||
Use the [minimal config](https://github.com/ethereum/eth2.0-specs/blob/v0.8.3/configs/minimal.yaml) with the following changes.
|
|
||||||
|
|
||||||
| field | value |
|
|
||||||
|-------|-------|
|
|
||||||
| MIN_DEPOSIT_AMOUNT | 100 |
|
|
||||||
| MAX_EFFECTIVE_BALANCE | 3.2 * 1e9 |
|
|
||||||
| EJECTION_BALANCE | 1.6 * 1e9 |
|
|
||||||
| EFFECTIVE_BALANCE_INCREMENT | 0.1 * 1e9 |
|
|
||||||
| ETH1_FOLLOW_DISTANCE | 16 |
|
|
||||||
| GENESIS_FORK_VERSION | See [latest code](https://github.com/prysmaticlabs/prysm/blob/master/shared/params/config.go#L236) |
|
|
||||||
|
|
||||||
These parameters reduce the minimal config to 1/10 of the required ETH.
|
|
||||||
|
|
||||||
We have a genesis.ssz file available for download [here](https://prysmaticlabs.com/uploads/genesis.ssz)
|
|
||||||
|
|
||||||
### Connecting to the network
|
|
||||||
|
|
||||||
We have a libp2p bootstrap node available at `/dns4/prylabs.net/tcp/30001/p2p/16Uiu2HAm7Qwe19vz9WzD2Mxn7fXd1vgHHp4iccuyq7TxwRXoAGfc`.
|
|
||||||
|
|
||||||
Some of the Prysmatic Labs hosted nodes are behind a libp2p relay, so your libp2p implementation protocol should understand this functionality.
|
|
||||||
|
|
||||||
### Other
|
|
||||||
|
|
||||||
Undoubtably, you will have bugs. Reach out to us on [Discord](https://discord.gg/KSA7rPr) and be sure to capture issues on Github at https://github.com/prysmaticlabs/prysm/issues.
|
|
||||||
|
|
||||||
If you have instructions for you client, we would love to attempt this on your behalf. Kindly send over the instructions via github issue, PR, email to team@prysmaticlabs.com, or discord.
|
|
@ -1,10 +1,9 @@
|
|||||||
# Prysmatic Labs Beacon Chain Implementation
|
# Prysmatic Labs Beacon Chain Implementation
|
||||||
|
|
||||||
This is the main project folder for the beacon chain implementation of Ethereum Serenity in Golang by [Prysmatic Labs](https://prysmaticlabs.com). Before you begin, check out our [Contribution Guidelines](https://github.com/prysmaticlabs/prysm/blob/master/CONTRIBUTING.md) and join our active chat room on Discord or Gitter below:
|
This is the main project folder for the beacon chain implementation of eth2 written in Go by [Prysmatic Labs](https://prysmaticlabs.com).
|
||||||
|
|
||||||
[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/KSA7rPr)
|
You can also read our main [README](https://github.com/prysmaticlabs/prysm/blob/master/README.md) and join our active chat room on Discord.
|
||||||
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/prysmaticlabs/prysm?badge&utm_medium=badge&utm_campaign=pr-badge)
|
|
||||||
|
|
||||||
Also, read the latest beacon chain [design spec](https://github.com/ethereum/eth2.0-specs/blob/dev/specs/phase0/beacon-chain.md), this design spec serves as a source of truth for the beacon chain implementation we follow at prysmatic labs.
|
[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/CTYGPUJ)
|
||||||
Check out the [FAQs](https://notes.ethereum.org/9MMuzWeFTTSg-3Tz_YeiBA?view). Refer this page on [why](http://email.mg2.substack.com/c/eJwlj9GOhCAMRb9G3jRQQPGBh5mM8xsbhKrsDGIAM9m_X9xN2qZtbpt7rCm4xvSjj5gLOTOmL-809CMbKXFaOKakIl4DZYr2AGyQIGjHOnWH22OiYnoIxmDijaBhhS6fcy7GvjobA9m0mSXOcnZq5GBqLkilXBZhBsus5ZK89VbKkRt-a-BZI6DzZ7iur1lQ953KJ9bemnxgahuQU9XJu6pFPdu8meT8vragzEjpMCwMGLlgLo6h5z1JumQTu4IJd4v15xqMf_8ZLP_Y1bSLdbnrD-LL71i2Kj7DLxaWWF4)
|
|
||||||
we are combining sharding and casper together.
|
Also, read the official beacon chain [specification](https://github.com/ethereum/eth2.0-specs/blob/master/specs/phase0/beacon-chain.md), this design spec serves as a source of truth for the beacon chain implementation we follow at Prysmatic Labs.
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
# Prysmatic Labs Contract Page
|
# Contracts
|
||||||
|
|
||||||
This page serves as a main reference for Prysmatic Labs' smart contracts implementation for Ethereum Serenity.
|
This page serves as a main reference for the smart contract tooling used internally in Prysm.
|
||||||
|
|
||||||
## Table of Contents
|
**THIS DOES NOT CONTAIN CONTRACTS TO BE USED IN PRODUCTION**.
|
||||||
|
|
||||||
- [Validator Registration Contract](https://github.com/prysmaticlabs/prysm/blob/master/contracts/validator-registration-contract/README.md)
|
|
||||||
|
@ -1,56 +1,6 @@
|
|||||||
## Deposit Contract
|
## Prysm Internal Validator Deposit Contract
|
||||||
|
|
||||||
A validator will deposit 32 ETH to the deposit
|
**NOTE: THIS IS NOT THE OFFICIAL ETH2 VALIDATOR DEPOSIT CONTRACT. THE OFFICIAL CONTRACT CAN ONLY BE FOUND [HERE](https://github.com/ethereum/eth2.0-specs/blob/e4a9c5fa29def20c4264cd860868f131d6f40e72/solidity_deposit_contract/deposit_contract.sol). THE ONLY DEPOSIT CONTRACT ON MAINNET HAS ADDRESS 0x00000000219ab540356cbb839cbe05303d7705fa. DO NOT USE THE CONTRACT IN THIS FOLDER OUTSIDE OF DEVELOPMENT**
|
||||||
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
|
## How to execute tests
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ This is the main project folder of the end-to-end testing suite for Prysm. This
|
|||||||
It also performs a test on a syncing node, and supports featureflags to allow easy E2E testing of experimental features.
|
It also performs a test on a syncing node, and supports featureflags to allow easy E2E testing of experimental features.
|
||||||
|
|
||||||
## How it works
|
## How it works
|
||||||
|
|
||||||
Through the `end2EndConfig` struct, you can declare several options such as how many epochs the test should run for, and what `BeaconConfig` the test should use. You can also declare how many beacon nodes and validator clients are run, the E2E will automatically divide the validators evently among the beacon nodes.
|
Through the `end2EndConfig` struct, you can declare several options such as how many epochs the test should run for, and what `BeaconConfig` the test should use. You can also declare how many beacon nodes and validator clients are run, the E2E will automatically divide the validators evently among the beacon nodes.
|
||||||
|
|
||||||
In order to "evaluate" the state of the beacon chain while the E2E is running, there are `Evaluators` that use the beacon chain node API to determine if the network is performing as it should. This can evaluate for conditions like validator activation, finalization, validator participation and more.
|
In order to "evaluate" the state of the beacon chain while the E2E is running, there are `Evaluators` that use the beacon chain node API to determine if the network is performing as it should. This can evaluate for conditions like validator activation, finalization, validator participation and more.
|
||||||
@ -11,12 +12,14 @@ In order to "evaluate" the state of the beacon chain while the E2E is running, t
|
|||||||
Evaluators have 3 parts, the name for it's test name, a `policy` which declares which epoch(s) the evaluator should run, and then the `evaluation` which uses the beacon chain API to determine if the beacon chain passes certain conditions like finality.
|
Evaluators have 3 parts, the name for it's test name, a `policy` which declares which epoch(s) the evaluator should run, and then the `evaluation` which uses the beacon chain API to determine if the beacon chain passes certain conditions like finality.
|
||||||
|
|
||||||
## Current end-to-end tests
|
## Current end-to-end tests
|
||||||
|
|
||||||
* Minimal Config - 2 beacon nodes, 256 validators, running for 8 epochs
|
* Minimal Config - 2 beacon nodes, 256 validators, running for 8 epochs
|
||||||
* Minimal Config Slashing Test - 2 beacon nodes, 256 validators, tests attester and proposer slashing
|
* Minimal Config Slashing Test - 2 beacon nodes, 256 validators, tests attester and proposer slashing
|
||||||
|
|
||||||
## Instructions
|
## Instructions
|
||||||
|
|
||||||
If you wish to run all the minimal spec E2E tests, you can run them through bazel with:
|
If you wish to run all the minimal spec E2E tests, you can run them through bazel with:
|
||||||
|
|
||||||
```
|
```
|
||||||
bazel test //endtoend:go_default_test --define=ssz=minimal --test_output=streamed --test_arg=-test.v --nocache_test_results
|
bazel test //endtoend:go_default_test --define=ssz=minimal --test_output=streamed
|
||||||
```
|
```
|
||||||
|
@ -1,29 +1,3 @@
|
|||||||
# Ethereum Serenity Protocol Buffers
|
# Prysm Protocol Buffers
|
||||||
|
|
||||||
This package defines common protobuf messages and services used by Ethereum Serenity clients. Following the structure of:
|
This package defines common protobuf messages and services used by Prysm. For now, we are checking in all generated code to support native go dependency management.
|
||||||
|
|
||||||
```
|
|
||||||
proto/
|
|
||||||
beacon/
|
|
||||||
db/
|
|
||||||
p2p/
|
|
||||||
v1/
|
|
||||||
rpc/
|
|
||||||
v1/
|
|
||||||
cluster/
|
|
||||||
slashing/
|
|
||||||
testing/
|
|
||||||
```
|
|
||||||
|
|
||||||
We specify messages available for p2p communication common to beacon chain nodes and sharding clients.
|
|
||||||
|
|
||||||
For now, we are checking in all generated code to support native go dependency
|
|
||||||
management. The generated pb.go files can be derived from bazel's bin
|
|
||||||
directory.
|
|
||||||
|
|
||||||
For example, when we build the testing go proto library
|
|
||||||
`bazel build //proto/testing:ethereum_testing_go_proto` there is a pb.go
|
|
||||||
generated at
|
|
||||||
`bazel-bin/proto/testing/linux_amd64_stripped/ethereum_testing_go_proto\~/github.com/prysmaticlabs/prysm/proto/testing/test.pb.go`.
|
|
||||||
This generated file can be copied, or you can use you protoc locally if you
|
|
||||||
prefer.
|
|
||||||
|
@ -1,17 +1,3 @@
|
|||||||
# Bash Scripts
|
# Bash Scripts
|
||||||
|
|
||||||
This subproject contains useful bash scripts for working with our repository. We have a simple tool that outputs coverage, a simple tool to check for gazelle requirements, and visibility rules tools for Bazel packages.
|
This subproject contains useful bash scripts for working with our repository. We have a simple tool that outputs coverage, a simple tool to check for gazelle requirements, update Go protobuf generated files, visibility rules tools for Bazel packages, and more.
|
||||||
|
|
||||||
### Instructions to run a single beacon chain node and 8 validators locally using the scripts.
|
|
||||||
|
|
||||||
1. Ensure your private key path is correct in all the files below.
|
|
||||||
|
|
||||||
2. Run `./deploy-deposit-contract.sh`
|
|
||||||
|
|
||||||
3. Put the resulting contract address in `start-beacon-chain.sh` and `setup-8-validators.sh`.
|
|
||||||
|
|
||||||
4. Run `./start-beacon-chain.sh`
|
|
||||||
|
|
||||||
5. Run `./setup-8-validators.sh`
|
|
||||||
|
|
||||||
6. You can use `tail -f /tmp/data/validator#.log` with # as a number from 1 - 8 to view the output of the validators.
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Hash Slinging Slasher Server Implementation
|
# Slasher Implementation
|
||||||
|
|
||||||
This is the main project folder for a slasher server implementation for Ethereum Serenity in Golang by [Prysmatic Labs](https://prysmaticlabs.com). A slasher listens for all broadcasted messages using a running beacon node in order to detect slashable attestations and block proposals.
|
This is the main project folder for a slasher implementation for eth2 written in Go by [Prysmatic Labs](https://prysmaticlabs.com). A slasher listens for all broadcasted messages using a running beacon node in order to detect slashable attestations and block proposals.
|
||||||
It uses the [min-max-surround](https://github.com/protolambda/eth2-surround#min-max-surround) method by Protolambda.
|
It uses the [min-max-surround](https://github.com/protolambda/eth2-surround#min-max-surround) method by Protolambda.
|
||||||
|
|
||||||
The slasher requires a connection to a synced beacon node in order to listen for attestations and block proposals. To run the slasher, type:
|
The slasher requires a connection to a synced beacon node in order to listen for attestations and block proposals. To run the slasher, type:
|
||||||
@ -11,4 +11,4 @@ bazel run //slasher -- \
|
|||||||
--beacon-rpc-provider localhost:4000
|
--beacon-rpc-provider localhost:4000
|
||||||
```
|
```
|
||||||
|
|
||||||
The beacon node entered in `beacon-rpc-provider` will then receive slashings from the slasher client and send them to any requesting proposer to be put into a block.
|
The beacon node entered in `beacon-rpc-provider` will then receive slashings from the slasher client and send them to any requesting proposer to be put into a block. You can read more about configuration options for our slasher in our [documentation portal](https://docs.prylabs.network/docs/prysm-usage/slasher)
|
||||||
|
55
third_party/README.md
vendored
55
third_party/README.md
vendored
@ -59,58 +59,3 @@ go_repository(
|
|||||||
|
|
||||||
Now, when used in Prysm, the dependency you patched will have the patched modifications
|
Now, when used in Prysm, the dependency you patched will have the patched modifications
|
||||||
when you run your code.
|
when you run your code.
|
||||||
|
|
||||||
## Ethereum APIs Patch
|
|
||||||
|
|
||||||
As mentioned earlier, patches aren't a recommended approach when needing to modify dependencies
|
|
||||||
in Prysm save for a few use cases. In particular, all of our public APIs and most canonical
|
|
||||||
data structures for Prysm are kept in the [Ethereum APIs](https://github.com/prysmaticlabs/ethereumapis) repo.
|
|
||||||
The purpose of the repo is to serve as a well-documented, well-maintained schema for a full-featured
|
|
||||||
eth2 API. It is written in protobuf format, and specifies JSON over HTTP mappings as well
|
|
||||||
as a [Swagger API](https://api.prylabs.network) front-end configuration.
|
|
||||||
|
|
||||||
The Prysm repo specifically requires its data structures to have certain struct tags
|
|
||||||
for serialization purposes as well as other package-related annotations for proper functionality.
|
|
||||||
Given a protobuf schema is meant to be generic, easily readable, accessible, and language agnostic
|
|
||||||
(at least for languages which support protobuf generation), it would be wrong for us to include
|
|
||||||
Go-specific annotations in the Ethereum APIs repo. Instead of maintaining a duplicate of it
|
|
||||||
within Prysm, we can apply a patch to include those struct tags as needed, while being able
|
|
||||||
to use the latest changes in the Ethereum APIs repo. This is an appropriate use-case for a patch.
|
|
||||||
|
|
||||||
Here's an example:
|
|
||||||
|
|
||||||
```
|
|
||||||
// The block body of an Ethereum 2.0 beacon block.
|
|
||||||
message BeaconBlockBody {
|
|
||||||
// The validators RANDAO reveal 96 byte value.
|
|
||||||
- bytes randao_reveal = 1;
|
|
||||||
+ bytes randao_reveal = 1 [(gogoproto.moretags) = "ssz-size:\"96\""];
|
|
||||||
|
|
||||||
// A reference to the Ethereum 1.x chain.
|
|
||||||
Eth1Data eth1_data = 2;
|
|
||||||
|
|
||||||
// 32 byte field of arbitrary data. This field may contain any data and
|
|
||||||
// is not used for anything other than a fun message.
|
|
||||||
- bytes graffiti = 3;
|
|
||||||
+ bytes graffiti = 3 [(gogoproto.moretags) = "ssz-size:\"32\""];
|
|
||||||
...
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Above, we're telling Prysm to patch a few lines to include protobuf tags
|
|
||||||
for SSZ (the serialization library used by Prysm).
|
|
||||||
|
|
||||||
## Updating Patches
|
|
||||||
|
|
||||||
Say we want to update Ethereum APIs in Prysm to its latest master commit `b7452dde4ca361809def4ed5924ab3cb7ad1299a`.
|
|
||||||
Here are the steps:
|
|
||||||
|
|
||||||
1. Go to your Prysm WORKSPACE and look at the commit in there for Ethereum APIs, say it's `e6f60041667fbc3edb22b03735ec111d1a40cd0e`
|
|
||||||
2. Go to Ethereum APIs and do `git checkout e6f60041667fbc3edb22b03735ec111d1a40cd0e`
|
|
||||||
3. In the Ethereum APIs repo, do `git apply $GOPATH/src/github.com/prysmaticlabs/prysm/third_party/com_github_prysmaticlabs_ethereumapis-tags.patch`
|
|
||||||
4. Make any changes you want to make in Ethereum APIs, such as applying ssz struct tags, etc.
|
|
||||||
5. In the Ethereum APIs repo, do `git commit -m "applied patch and changes"`
|
|
||||||
6. Do `git merge master`
|
|
||||||
7. Generate a new diff and update the diff in Prysm `git diff b7452dde4ca361809def4ed5924ab3cb7ad1299a > $GOPATH/src/github.com/prysmaticlabs/prysm/third_party/com_github_prysmaticlabs_ethereumapis-tags.patch`
|
|
||||||
8. Update the commit in the Prysm WORKSPACE file for Ethereum APIs to `b7452dde4ca361809def4ed5924ab3cb7ad1299a`
|
|
||||||
9. Build the Prysm project
|
|
||||||
|
@ -1,12 +1,9 @@
|
|||||||
# Prysmatic Labs Validator Client Implementation
|
# Prysmatic Labs Validator Client Implementation
|
||||||
|
|
||||||
This is the main project folder for a validator client implementation of Ethereum Serenity in Golang by [Prysmatic Labs](https://prysmaticlabs.com). A validator client attaches to a running beacon node in order to perform proposer/attester responsibilities and manage the lifecycle of a particular shard upon being assigned to one.
|
This is the main project folder for a validator client implementation of eth2 written in Go by [Prysmatic Labs](https://prysmaticlabs.com). A validator client attaches to a running beacon node in order to perform proposer/attester responsibilities for eth.
|
||||||
|
|
||||||
Before you begin, check out our main [README](https://github.com/prysmaticlabs/prysm/blob/master/README.md) and join our active chat room on Discord or Gitter below:
|
You can also read our main [README](https://github.com/prysmaticlabs/prysm/blob/master/README.md) and join our active chat room on Discord.
|
||||||
|
|
||||||
[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/KSA7rPr)
|
[![Discord](https://user-images.githubusercontent.com/7288322/34471967-1df7808a-efbb-11e7-9088-ed0b04151291.png)](https://discord.gg/CTYGPUJ)
|
||||||
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/prysmaticlabs/prysm?badge&utm_medium=badge&utm_campaign=pr-badge)
|
|
||||||
|
|
||||||
Also, read the latest sharding + casper [design spec](https://github.com/ethereum/eth2.0-specs), this design spec serves as a source of truth for the beacon chain implementation we follow at prysmatic labs.
|
To further understand the responsibilities of an eth2 validator, we recommend reading the official specification [here](https://github.com/ethereum/eth2.0-specs/blob/master/specs/phase0/validator.md)
|
||||||
Check out the [FAQs](https://notes.ethereum.org/9MMuzWeFTTSg-3Tz_YeiBA?view). Refer this page on [why](https://medium.com/@djrtwo/casper-%EF%B8%8F-sharding-28a90077f121)
|
|
||||||
we are combining sharding and casper together.
|
|
||||||
|
Loading…
Reference in New Issue
Block a user