Skip to content

Commit

Permalink
Update README (#39)
Browse files Browse the repository at this point in the history
* Update README.md

* doc: Add mission and minor changes to README

* doc: Update long description of root cmd

* doc: Rename Mission section of README

* doc: Update 'Download the binary section' of the README
  • Loading branch information
AntiD2ta authored Apr 19, 2022
1 parent 0ad593f commit 96ddbb2
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 11 deletions.
2 changes: 1 addition & 1 deletion .deepsource.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ name = "go"
enabled = true

[analyzers.meta]
import_root = "github.com/NethermindEth/1Click"
import_root = "github.com/NethermindEth/1click"
104 changes: 96 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,38 @@
# 1click
[![Go Report Card](https://goreportcard.com/badge/github.com/NethermindEth/1click)](https://goreportcard.com/report/github.com/NethermindEth/1click)

A tool to allow deploying validators with ease.
A one click setup tool for PoS network/chain validators. Currently, `1click` is designed mainly for solo stakers and testnets devs of Beacon Chain and The Merge (Ethereum). `1click` generates docker-compose scripts for the entire on-premise validator setup depending on the chosen client.

## Installation (Only UNIX systems)
## 💥 How this all started?

### Using Go
As people who actively work on The Merge, we know how hard it is to set up an Ethereum validator:
- The setup requires at least three nodes: an execution node (geth, nethermind, etc), a consensus node, and a validator node (lighthouse, prysm, etc)
- You then need to execute them, connect them, monitor them, and get the validator keys (which includes staking 32 ETH).
- There are several valid combinations of clients to choose for the setup. You need to go through the client's docs, evaluate the client, get instructions for it and test it. You also need to feel comfortable executing commands in the cli, know docker, and basic networking. On top of this, there are many different configurations you can use for your client node.
- In the case of working with Mainnet, you are working with real money that can potentially be lost in the event of having downtime or being slashed. To avoid losing real value, you must be aware of and follow best practices on the validator setup, and also monitor your nodes.
- Have you heard of MEV? Flashbots is working on an MEV-Boost component which will take your validator to another level of awesomeness. You most likely want to always be running the latest version, but you also most likely don’t have the time to understand MEV Boost architecture and how to successfully implement it into your environment.

> Enter 1click
If you have at least `go1.17.5` installed then this command will install the 1click executable along with the library and its dependencies:
We want `1click `to take care of all of this for you. With just a few clicks or steps, `1click` can create an entire staking architecture that supports client diversity and Ethereum's latest features, while being completely free and open source. We want `1click` to save you from mistakes in this complex setup; along with hours or days of research, reading and testing. We want you to be able to stake easily with or without blockchain knowledge by giving you the tools to help this amazing community (and earn some good money of course 😉).

We don't want to stop at Ethereum. We also want to help stakers of other PoS networks/chains, so if your favourite chain is not here, you are more than welcome to contribute!

## ⚡️ Quick start

### Installation (Only UNIX systems)

#### Using Go

If you have at least `go1.18.0` installed then this command will install the `1click` executable along with the library and its dependencies:

```
go install github.com/NethermindEth/1click/cmd/1click@latest
```

The executable will be in `$GOBIN` (`$GOPATH/bin`)

### Manual
#### Manual

Generate the executable manually (need Go installed):

Expand Down Expand Up @@ -45,13 +62,84 @@ sudo $GOPATH/bin/1click /usr/local/bin/
sudo cp 1click/build/1click /usr/local/bin/
```

### Download the binary
#### Download the binary (only for linux)

> This is temporary until the first release
Download directly the binary and put it in `/usr/local/bin`:

```
sudo curl -LJ -o /usr/local/bin/1click https://github.com/NethermindEth/1click/raw/feature/main/build/1click
sudo curl -LJ -o /usr/local/bin/1click https://github.com/NethermindEth/1click/raw/main/build/1click
sudo chmod +x /usr/local/bin/1click
```
```

### Dependencies
`1click` dependencies are `docker` and `docker-compose`, but if you don't have those installed, `1click` will show instructions to install them, or install them for you.

### Quick run
With `1click cli` you can go through the entire workflow setup:
1. Check dependencies
2. Generate a `docker-compose` script with randomized clients selection and `.env`
3. Execute the `docker-compose` script (only execution and consensus nodes will be executed by default)

## 🔥 What can you do right now with this tool?

- Select an execution, consensus and validator node (manually or automatically) and generate a `docker-compose` script with production tested configurations to run the setup as you want.
- Generate the keystore folder using the [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli) tool with `1click keys`
- Don't remember `docker-compose` commands or flags? No problem, you can check the logs of the running services of the generated `docker-compose` script with `1click logs` and shutdown the services with `1click down`

> The setup is currently designed to start all the three nodes required to start a validator (execution, consensus and validator node). This will change soon and `1click` will let you connect to a public or remote node, or to automatically start the validator node when the execution and consensus nodes in the setup are synced. Although you can do all of this after generating the docker-compose script 😉
## Supported networks and clients

### Mainnet

| Execution | Consensus | Validator |
| ---------- | ---------- | ---------- |
| Geth | Lighthouse | Lighthouse |
| Nethermind | Lodestar | Lodestar |
| | Prysm | Prysm |
| | Teku | Teku |

## ✅ Roadmap
The following roadmap covers the main features and ideas we want to implement but doesn't cover everything we are planning for this tool. Stay touched if you are interested, a lot of improvements are to come in the next two months.

### Version 0.1 (coming soon in May-June 2022)
- [x] Generate `docker-compose` scripts and `.env` files for selected clients with a cli tool
- [x] Generate keystore folder with the cli
- [ ] Test coverage (unit and integration tests)
- [ ] Monitoring tool for alerting, tracking validator balance, and tracking sync progress and status of nodes
- [ ] Integrate MEV-Boost as recommended setting
- [ ] Use public execution and consensus nodes

### Version 0.X
- [ ] TUI for guided and more interactive setup (better UX)
- [ ] Integrate Kiln network
- [ ] Integrate Prater network
- [ ] Off-premise setup support
- [ ] Improve documentation
- [ ] Cross platform support
- [ ] More tests!!!

### Version 1.0
Full Ethereum 2 support with MEV-Boost

## 💪 Want to contribute?
Please check our Contributing Guidelines, Code of Conduct and our issues. In case you want to report or suggest something (any help welcomed) please file an issue first and the main team will reach you and discuss it.

## 🤑 Wait, this is free, how do you get money from this?

Nethermind is aligned with Ethereum principles and values for allowing accessible, transparent, borderless economy and governance, so, as some other organizations in the community, we push for open-source free projects with intrinsic non-monetary value that helps the community grow.

Also, are you familiar with MEV and validator rewards? Something good has to come when you set up a validator with lots of experience and months of testing. We want to share our knowledge in the topic and create something that allows everyone to easily and safely set up lots of validators.

You may know a trick or two already, so if this is the case then please help us to add it to `1click` and help the community grow. If the community and the network grows, your validator earnings grow too!

### TL;DR
Not only are we building this tool to help us setting up validators for Mainnet and The Merge testnets, but also to help the community, so: we don't want money, we want lots of validators!

> Although you can reach us to buy us some coffee 😉
## ⚠️ License

`1click` is a Nethermind free and open-source software licensed under the [Apache 2.0 License](https://github.com/NethermindEth/1click/blob/main/LICENSE).
Binary file modified build/1click
Binary file not shown.
3 changes: 1 addition & 2 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ var cfgFile string
var rootCmd = &cobra.Command{
Use: "1click",
Short: "A brief description of your application",
Long: `A tool to allow deploying validators with ease. This tool is
WIP and is not yet ready for use.`,
Long: `A tool to allow deploying validators with ease.`,
// TODO: Start the TUI engine in this callback. Default behavior
// Uncomment the following line if your bare application
// has an action associated with it:
Expand Down

0 comments on commit 96ddbb2

Please sign in to comment.