Giter Club home page Giter Club logo

documentation's Introduction

Prysm Documentation Portal

This repository houses all the documentation pertaining to the Prysm client and Ethereum 2. It is generated with Docusaurus.

Below are steps for initialising and reproducing this portal for development.

Dependencies

  1. The latest version of Node installed.

  2. The latest version of Yarn installed. (Optional, but recommended)

    You have to be on Node >= 8.x and Yarn >= 1.5.

Installation

  1. Clone this repository.
  2. Enter the newly cloned repo and enter the website directory.
  3. Issue the command npm install
  4. Wait for the installation process to complete.

Running the development server

  1. From within the website directory, run the local web server using yarn start or npm start.

  2. Load the example site at http://localhost:3000 if it did not already open automatically. If port 3000 has already been taken, another port will be used. Look at the console messages to see which.

    You should see the example site loaded in your web browser. There's also a LiveReload server running, and any changes made to the docs and files in the website directory will cause the page to refresh.

Building Static HTML Pages

To create a static build of the documentation portal, run the following script from the website directory:

yarn run build # or `npm run build`

This will generate a build subdirectory within the website directory, containing the .html files from all of the docs and other files included in pages.

documentation's People

Contributors

0xkiwi avatar clarin-dy avatar come-maiz avatar csantana1121 avatar dv8silencer avatar fabdarice avatar guillaumemiralles avatar har00ga avatar ib1gymnast avatar james-prysm avatar jeffkbkim avatar kasey avatar mcdee avatar mohamedmansour avatar nalepae avatar nisdas avatar omahs avatar pauld-docs avatar prestonvanloon avatar prylabs-bulldozer[bot] avatar rauljordan avatar renovate-bot avatar rkapka avatar rootulp avatar saolyn avatar sharedstake-dev avatar symbolpunk avatar terencechain avatar wgknowles avatar willtate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

documentation's Issues

Upgrade to Docusaurus V2

The docusaurus v2 docs seem pretty great at this point and seems like we might be able to take the leap. It includes great features such as a rich plugin ecosystem. Opening this issue for tracking.

Request: Add documentation about file based configuration

New functionality has been added to Prysm to support loading flag values from a yaml file. prysmaticlabs/prysm#4878

The usage is straightforward, you may create a yaml file as a simple key value representation of the flags you wish to provide.

For example, if we usually run with --datadir=/data --enable-ssz-cache we could create a file like

datadir: "/data"
enable-ssz-cache: true

Then the user would provide the runtime flag to Prysm of --config-file=/path/to/file.yaml along with any other runtime flags they wish.

An important note is that flags via command line and via config file can both be present but the config file has the priority. In other words, if we set the flag --datadir=/data2 and datadir: "/data1" in the config.yaml file, Prysm would understand that it should write to /data1.

Please add this documentation to the website and any relevant markdown in Prysm. Thanks

Change # headers to sentence cap

The high level # headers on each page are currently title capitalised. I'd prefer to see them changed to sentence cap, like the lower level headers. These are located on the top of each .md document under the /docs/ directory

Running slasher with Docker on Windows not running as documented

https://docs.prylabs.network/docs/prysm-usage/slasher/

Under: Running slasher with Docker on Windows

Was informed on discord I needed a --network="host" param added to get slasher started properly.

So:

docker run -it --network="host" -v c:/prysm:/data gcr.io/prysmaticlabs/prysm/slasher:latest

instead of

docker run -it -v c:/prysm:/data gcr.io/prysmaticlabs/prysm/slasher:latest

Otherwise I ran into a bunch of errors then the process died. Would hope someone else would test this to be sure but that fixed it for me. Here is the error output for without that param added while also running a beacon and multiple validators concurrently on the same win machine in docker:

docker run -it -v c:/prysm:/data gcr.io/prysmaticlabs/prysm/slasher:latest
[2020-05-08 04:35:59] WARN flags: Using default mainnet config
[2020-05-08 04:35:59] INFO node: Checking DB database-path=/home/.eth2
[2020-05-08 04:35:59] INFO RPC-API listening on port address=:5000
[2020-05-08 04:35:59] WARN You are using an insecure gRPC connection! Provide a certificate and key to connect securely[2020-05-08 04:35:59] WARN beaconclient: You are using an insecure gRPC connection to beacon chain! Please provide a certificate and key to use a secure connection
[2020-05-08 04:35:59] INFO beaconclient: Successfully started gRPC connection
[2020-05-08 04:35:59] ERROR beaconclient: Could not fetch sync status error=rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 127.0.0.1:4000: connect: connection refused"
[2020-05-08 04:35:59] INFO beaconclient: Waiting for beacon node to be fully synced...
[2020-05-08 04:36:11] ERROR beaconclient: Could not fetch sync status error=rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 127.0.0.1:4000: connect: connection refused"
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xd4b17a]

goroutine 79 [running]:
github.com/prysmaticlabs/prysm/slasher/beaconclient.(*Service).querySyncStatus(0xc00057a6c0, 0x11b4800, 0xc0005d0500)
slasher/beaconclient/chain_data.go:67 +0x5ba
github.com/prysmaticlabs/prysm/slasher/beaconclient.(*Service).Start(0xc00057a6c0)
slasher/beaconclient/service.go:180 +0x4df
created by github.com/prysmaticlabs/prysm/shared.(*ServiceRegistry).StartAll
shared/service_registry.go:46 +0x23e

Create doc contribution and style guide

Considering 95% of the formatting stuff in the documentation is super secret knowledge that exists only in my head, there definitely needs to be a styleguide containing every format detail in order to retain consistency across future contributor PRs and reduce the amount of markdown review on my part. This will be complimented by a documentation contribution guide, procedures for efficient writing, running checks, etc.

Make keywallet manager warning clearer

Needs to be made clearer that the linked guide is still available and supported (but given its third party can still not be fully recommended for production)

Add Steps For Enabling Rest API

If a user is unfamiliar with grpc, it is not immediately clear that they will have to use

--grpc-gateway-port

to enable our HTTP Rest API in the beacon node. We should make this clear in our documentation on how it works.

Add More Information on Database Backups

Currently there is no way for the average user to know on how to backup their db , and where the backup db will be kept. This would be a useful information to include in our docs portal.

TRACKER ISSUE: Monthly documentation sweeps

Hi team,

This is a tracking issue to keep tabs of the compiled lists of necessary changes after each future monthly documentation sweep. If you're completely lost right now, reach out to Preston. :)

The idea is to take 15 mins to a half hour once a month to read the manual cover-to-cover as group and collab to figure out what needs changing/removing/adding and discuss recent repeat questions to add onto the FAQ or elaborate on. At the end of each month, I'll upload them into checklist form here to cover progress.

DAY OF MONTH: 3rd Tuesday
TIME OF DAY: 5 PM UTC

DATE OF NEXT MEETING: May 18 2020

Include meta descriptions for each page

The purpose of this is to ensure that page descriptions generated on search engines and social media are relevant and lack any markdown. This is probably going to be a pain in the wazoo, but I see it going down 1 of 2 ways:

  1. Hardcoding the meta descriptions directly into the Markdown files. As HTML/CSS can be passed through the markdown and docusaurus will generate it, simply adding the below to each page:
    <meta name="description" content="bananas are great">

  2. Use js and fill the content field with the existing page specific variables included with docusaurus, and putting all of the other contents in a js or json file. This may be more elaborate than it's worth frankly, but may make maintenance easier to have them all in a single file.

Non-urgent, will tackle when I can, though if anyone feels like they can take this on -- go for it. ๐Ÿ™‚

Shard number

Update number of shards in ethereum-2.0.md from 1024 to 64

FR: Why Bazel?

Feature request: add documentation page with a full, in-depth, rationale around the design choice around bazel build tooling and why it is critical to the success of Prysm.

Recommend Stable Release Docker Tags Instead of :latest

Hi all,

The :latest docker tag is risky as it can have bugs from latest master that are not yet proven stable. Instead, we should be recommending the latest stable release. Maybe we can create a :stable docker tag which utilizes the latest release for Prysm for both the beacon node and the validator.

Fix footer bar on mobile

The footer on mobile is not aligning properly, as seen by the picture below. It is managed by the footer.js file and requires basic HTML/CSS knowledge. If anyone wants to tackle a quick fix, would be greatly appreciated!

image

Add instructions to run local ETH1 / goerli node

These instructions should be part of the recommended setup.

Soon, Prysmatic Labs will start discouraging use of their hosted ETH1 nodes so the documentation should reflect a user path for operating a ETH1 node.

Suggested format / paths:

  • Run your own ETH1 goerli node (RECOMMENDED)
  • Connect to a hosted node, provide a link to infura and provide the flags to connect to Prysm's nodes.

The recommended path is to reduce the centralization risk and mimic a more realistic scenario. Prysm will continue to provide a public ETH1 node for ease of use but users should strongly consider running their own ETH1 node if they are running a beacon node and validator.

Improve FAQ With Networking Related Questions

Would be great to improve our FAQ with important networking related questions that pop-up in our discord such as:

  1. To run a beacon node, do I need a static IP?
  2. If yes, does a static IPv6 also work? How can I use IPv6 with beacon nodes?
  3. Is it possible run multiple beacon nodes on same server if we link to different port and static IPs?

"How Prysm works" links are broken

missing dependencies #10

even though bazel does fetch most of the dependencies, on a fresh ubuntu 20.04 machine, I had to manually install the following packages before I was able to run bazel build

apt install libgmp-dev libtinfo5

๐Ÿ™ Prysm Documentation Community Feedback ๐Ÿ™

Yesterday, we ran a survey specifically targeting the Prysm community and contributors to let us know how they feel about the project. We received some high quality submissions and had a section where users could tell us how they feel about the docs. Here are the paraphrased, actionable responses:

  • Instructions on how to run your own eth1 node and point prysm to it
  • An explainer regarding how key management works: i.e. where are the keys stored, what format are they in. If I want to take out my withdrawal private key and put it in cold storage, how would I do that? IDEA: perhaps we can have a dedicated sidebar section to validator accounts / keys with various pages?
  • We need more clarity on hardware. Not just tech specs but form factor. Are server comps going to be best because they are built to run 24/7 or will a NUC have just as much uptime/longevity? Perhaps some best practices for operating and maintaining hardware while running nodes (How to transfer your validator(s) to a new SSD if you have a hardware issue or just need to upgrade for storage)
  • Info on how to do a voluntary exit
  • Grafana info is important, we need the links to be fixed

These items can be split into separate tracking issues if needed to resolve. cc: @har00ga

Add Grafana/Prometheus Information

This is a tracking issue to add information regarding visualizing a local node's metrics via a Grafana dashboard. We should create a page called Visualizing Node Metrics that suggests users to use the following dashboard: https://www.dropbox.com/s/9mqsvm1s0jmzu98/Prysm%20Dashboard-1587566218430.json?dl=0. Nodes run prometheus metrics by default on localhost:8080/metrics, so we'd need instructions on how to setup grafana at a basic level, import that dashboard, and hook it up to the node's prometheus endpoint.

New guide: migrating keys to a new machine or cold storage

Been requested multiple times over the past few mos but somehow keeps falling through the filed issue cracks: docs need a guide explaining how to safely migrate validator keys from one machine to another and how to properly store backups

Open port 13000 for p2p connections when using docker

In order to get incoming connections from peers, port 13000 should be open from router/firewall to host.

If running on docker, present instructions say

docker run -it -v $HOME/prysm/beacon:/data -p 4000:4000
gcr.io/prysmaticlabs/prysm/beacon-chain:latest
--datadir=/data

Please add -p 13000:13000 to enable docker host to forward 13000 to container appropriately.

Add tip on how to run the docker process in the background using `-d`

A user in our discord pointed out it would be helpful for users to know they can run their docker processes in the background using the -d flag on docker for detached mode. It should NOT be the recommended default but rather something we can briefly mention if they prefer in a yellow tip box.

Move all notices and images below intro paragraphs

Whatever is directly below the highest level header on each page is what gets parsed by google, discord and just about everywhere else. Somehow there's become a build up of pages that feature notices and images instead of contextual information here, this needs to be changed by simply switching the order and moving any notices or images below the conceptual introduction paragraph on each page.

FR: Explain common ETH2 Data Structures

In recent conversations with users, they are confused on some terminology in ETH2. I'd like to see some more documentation around the data structures in ETH2, how they work in the life cycle of a validator, and what it all means. Ideally we could have great diagrams to explain these objects. The Prylabs team has many talk slides with visuals of some of these objects and would be happy to share.

Starting points:

  • Beacon Block
  • Attestations
  • Aggregation (this was the most confusing)
  • Proposer slashing
  • Attester slashing
  • Voluntary exits
  • Withdrawals

New Guide: Security Best Practices for running a validator

As we approach the launch of mainnet, the risks involved with running a validator node are starting to become real. A practical guide with actionable risk-prioritised best practices and recommendations would be an excellent resource that may save a number of people from having a very bad day by losing their hard earned ETH.

This guide should cover much more then just "how to not get hacked". Issues as simple as losing funds due to crashed hard drives, forgotten passwords, or accidentally deleted keys are arguably more common then getting pwned.

Please add your ideas for topics below. This guide will likely be an on-going effort requiring input from multiple experts before it reaches a level of maturity with good coverage of how to manage risks spanning confidentiality integrity and availability.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.