• Stars
    star
    121
  • Rank 292,574 (Top 6 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 2 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A one-click setup tool for PoS network/chain validators and nodes.

Nethermind

Sedge

Go Report Card Discord codecov

Sedge is a one-click node setup tool for PoS network/chain validators and nodes written entirely in the Go programming language. Sedge takes care of the entire on-premise full node setup based on the chosen client, using generated docker-compose scripts based on the desired configuration.

βš™οΈ Installation

Dependencies

Sedge dependencies are docker with the docker compose plugin, but if you don't have those installed, Sedge will show instructions to install them or install them for you. Check the docs for more details.

Installation methods

Check our installation guide for detailed instructions on the supported methods:

  • Download the binary from the release page
  • Using the Homebrew package manager
  • Using the Go programming language
  • Build from source

Disclaimer

Downloading any binary from the internet risks downloading files that malicious, third-party actors have injected with malware. All users should check that they download the correct, clean binary from a reputable source.

πŸ“œ Documentation

You can check the documentation for further details.

⚑️ Quick start

With sedge cli you can go through the entire workflow setup:

  1. Generate a docker-compose.yml script with randomized clients selection and .env file
  2. Generate validator keystore, or import it.
  3. Check dependencies
  4. Execute the docker-compose.yml script (only execution and consensus nodes will be executed by default)
  5. Validator client will be executed automatically after the consensus node is synced.

You can also generate the validator(s) keystore folder using sedge keys.

The entire process is interactive. However, Sedge also has a very customizable, non-interactive setup without prompts.

If you want to run the non-interactive mode, you will need to run only four commands (two if you are not running a validator and you don't need the validator keystore), and provide the set of arguments needed for each command.

  1. sedge generate
  2. sedge keys
  3. sedge import-key
  4. sedge run

Check all the options and flags with sedge --help.

πŸ’₯ Why did we start Sedge?

As people who actively deployed validators way before The Merge, we know how hard it is to set up an Ethereum validator:

  • You need to procure at least three (compatible) nodes: an execution node (geth, nethermind, erigon, etc), a consensus node, and a validator node (lighthouse, prysm, etc)
  • You then need to execute them, connect them, monitor them, and secure the validator keys (which includes staking 32 ETH).
  • There may be several valid combinations of clients to choose for your setup, so you need to go through each of the client's docs, evaluate it, get instructions for it and test it. You also need to feel comfortable executing commands in the cli, know docker, and understand basics of networking. On top of this, there are many different settings you must read up on and consider for your client node.
  • In the case of working with the Ethereum 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 correctly monitor your nodes.
  • Have you heard of MEV-Boost? You most likely want always to be running the latest version, but you also don’t have the time to understand the MEV-Boost architecture ins and outs or how to implement it into your environment successfully.

Enter Sedge

We want Sedge to take care of all of the above for you. With just a few clicks or steps, Sedge can create an entire Ethereum staking architecture that supports client diversity and Ethereum's latest features, while being completely free and open source. We want Sedge to save you from making costly 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 want to share our knowledge in this topic and create something that allows everyone to easily and safely set up lots of diverse validators.

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!

πŸ”₯ What can you do with Sedge today?

  • Select an execution, consensus and validator client node (manually or automatically) and generate a docker-compose.yml script with production-tested configurations to run the setup you want.
  • Set up only an execution, consensus, validator, or mev-boost instance.
  • Don't remember docker compose commands or flags for your setup? Check docker logs of the running services with sedge logs, and shut them down with sedge down
  • Generate the keystore folder with sedge keys using our heavily tested own code.

Disclaimer: Users acknowledge that generating the keystore for any network is an unaudited feature of Sedge. Nethermind provides this feature on an β€˜as is’ basis and makes no warranties regarding its proper functioning. The use of this feature is at the user’s own risk - Nethermind excludes all liability for any malfunction or loss of money that may occur as the result of an unexpected behavior during the keystore generation.

If you are familiar with docker, docker compose, and the validator setup, then you can use sedge cli or sedge generate to create a base docker-compose script with the recommended settings and then edit the script as much as you want. It is a lot more easier than doing everything from scratch!

Although Sedge supports several clients, some settings may not work if you use clients versions different from the default ones. Please let us know about any issues you encounter!

Disclaimer

While Sedge assists in installing the validator, it is not designed to register or maintain it. Users are solely responsible for ensuring that they monitor and maintain the validator as required, so that they do not incur penalties and/or financial losses. This includes promptly updating the tool to ensure the latest stable releases of clients are used.

Users acknowledge that no warranty is being made of a successful installation. Sedge is a tool and it ultimately depends on you to use it correctly and follow all the best practice guidance, as found in this README and documentation.

Supported networks and clients

Mainnet

Execution Consensus Validator
Geth Lighthouse Lighthouse
Nethermind Lodestar Lodestar
Erigon Prysm Prysm
Besu Teku Teku

Sepolia

Execution Consensus Validator
Geth Lighthouse Lighthouse
Nethermind Lodestar Lodestar
Erigon Prysm Prysm
Besu Teku Teku

Goerli

Execution Consensus Validator
Geth Lighthouse Lighthouse
Nethermind Lodestar Lodestar
Erigon Prysm Prysm
Besu Teku Teku

Holesky

Execution Consensus Validator
Geth Lighthouse Lighthouse
Nethermind Lodestar Lodestar
Erigon Teku Teku
Besu

Gnosis

Execution Consensus Validator
Nethermind Lighthouse Lighthouse
Erigon Lodestar Lodestar
Teku Teku

Chiado (Gnosis testnet)

Execution Consensus Validator
Nethermind Lighthouse Lighthouse
Erigon (soon) Lodestar Lodestar
Teku Teku

CL clients with Mev-Boost

Client Mev-Boost Networks
Lighthouse yes Mainnet, Goerli, Sepolia
Lodestar yes Mainnet, Goerli, Sepolia
Prysm yes Mainnet, Goerli, Sepolia
Teku yes Mainnet, Goerli, Sepolia

Supported Linux flavours for dependency installation

OS Versions
Ubuntu 22.04, 20.04
Debian 11,10,9,8
Fedora 35,34
CentOS 8
Arch -
Amazon Linux 2 -
Alpine 3.15,3.14,3.14.3

βœ… Roadmap

The following roadmap covers the main features and ideas we want to implement but only covers some of what we are planning for this tool. Stay in touch if you are interested.

Version 0.1

  • Generate docker-compose scripts and .env files for selected clients with a cli tool
  • Generate keystore folder with the cli
  • Test coverage (unit tests)
  • Integrate Kiln network
  • Integrate MEV-Boost as an option
  • Integrate Ropsten network

Version 0.2

  • Integrate Goerli/Prater network
  • Integrate Sepolia network
  • Documentation with examples

Version 0.3

  • Integrate Gnosis network
  • Prepare for the Merge

Version 0.4

  • Create and handle keystores on our own instead of using staking-deposit-cli
  • Improve validator testing
  • Bug fixes
  • Deprecate Kiln, Ropsten, Denver networks
  • Improve support for chiado network (Gnosis testnet)

Version 0.5

  • Support for Gnosis Merge
  • Bug fixes

Version 0.6

  • Besu and Erigon support
  • Windows support
  • Bug fixes

Version 1.0

  • Full Ethereum PoS support with MEV-Boost
  • Set up and run only one node (execution/consensus/validator)
  • Keystore generation
  • Slashing protection

Version 1.X (Current)

  • Support Erigon on Gnosis
  • Include monitoring tool for alerting, tracking validator balance, and tracking sync progress and status of nodes
  • More tests!!!
  • Support for Nimbus client

πŸ’ͺ 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 is welcome), please file an issue first so that the main team is aware and can discuss it.

If you know of any good tricks for validator setup that other people could also use well, please consider adding it to Sedge. Your efforts will be greatly appreciated by the community.

⚠️ License

Sedge is a Nethermind free and open-source software licensed under the Apache 2.0 License.

More Repositories

1

nethermind

A robust execution client for Ethereum node operators.
C#
1,036
star
2

warp

Warp - Bringing Solidity to Starknet at warp speed. Warp is a Solidity to Cairo Compiler, this allows teams to write/migrate Solidity to Cairo for easy onboarding into the StarkNet ecosystem.
TypeScript
753
star
3

juno

Starknet client implementation.
Go
315
star
4

starknet.go

Golang Library for StarkNet/Cairo
Go
144
star
5

StarknetByExample

A collection of examples of Cairo smart contracts for Starknet.
Cairo
110
star
6

Forta-Agents

TypeScript
95
star
7

Paprika

A custom storage engine of Nethermind, benefiting from the alignment of the underlying data structure with the layout of State & Storage trees of Ethereum.
C#
90
star
8

cairo-vm-go

A virtual machine for Cairo written in Go
Go
82
star
9

dotnet-libp2p

A libp2p implementation for .NET in C#.
C#
60
star
10

horus-checker

Horus, a formal verification tool for StarkNet smart contracts.
Haskell
59
star
11

starknet-remix-plugin

A plugin that brings Starknet to Remix! 🐺 ⭐
TypeScript
41
star
12

Clear

Interactive formal verification tool for Yul programs
Lean
35
star
13

PublicAuditReports

Public reports of audits performed by Nethermind Security
34
star
14

UniStark

Using HardhatWarp for testing
HTML
33
star
15

eigenlayer

EigenLayer CLI (https://www.eigenlayer.xyz)
Go
32
star
16

voyager-verify

A CLI Verifier Package for Voyager
TypeScript
30
star
17

EVMYulLean

Executable formal model of the EVM and Yul in Lean 4.
Lean
30
star
18

el-node-spec

Go
24
star
19

int256

A 256-bit integer implementation for .NET
C#
23
star
20

entro

Library Interacting with Blockchains
Python
23
star
21

hardhat-warp

A Hardhat plugin that uses Warp to bring Solidity contracts to StarkNet
TypeScript
19
star
22

general-agents-module

TypeScript
18
star
23

awesome-preconfirmations

18
star
24

starknet-contract-verifier

CLI to verify your starknet contracts classes on block explorers!
Rust
18
star
25

research-mnemonic

Shamir secret sharing for mnemonic lists
Python
16
star
26

Cairo-SafeMath

Python
16
star
27

verify-everything

Aims to create various ZK verifiers on Starknet for network growth
Cairo
14
star
28

optimized_ecc_cairo

Cairo implementation of operations over the elliptic curve BLS12-381
Cairo
14
star
29

cortex

.NET Core Ethereum 2.0
C#
13
star
30

Mpt-Instruct-DotNet-S

Training and Evaluation code for DotNet focused LLM (based on mosaicml/mpt-7b-instruct)
C#
13
star
31

Yul-Specification

A formal specification of the Yul IR semantics in the Lean proof assistant.
Lean
13
star
32

starknet.unity

Starknet Unity SDK lets game developers to integrate Starknet blockchain functionality into their Unity projects with ease.
C#
12
star
33

zksync-remix-plugin

Remix plugin for zkSync
TypeScript
12
star
34

cairo_zstd

Cairo v1 port of a Zstandard decompressor (WIP)
Cairo
11
star
35

Mev-Searcher

C#
11
star
36

underhanded-cairo-contest

11
star
37

Taiko-Preconf-AVS

Rust
11
star
38

kzg-ceremony-client

C#
10
star
39

starknet-state-verifier

TypeScript
10
star
40

blink-extension

TypeScript
10
star
41

stwo-gpu

Rust
9
star
42

docs

Nethermind documentation
JavaScript
8
star
43

horus-compile

Cairo compiler plugin extending language with annotations
Python
8
star
44

0to1CairoDemo

Demo to upgrade your upgradeable cairo 0 proxy contract to cairo 1 via replace_class_syscall
Python
8
star
45

research-basic-Cairo-operations-big-integers

Cairo implementation of operations involving big integers, including arithmetic operations between 256 and 384 bit integers, and prime field arithmetic of corresponding prime size
Cairo
7
star
46

ethtaipei-cairo1-workshop

6
star
47

cortex-cryptography-bls

Library wrapper for Eth 2.0 version of BLS signatures for .NET Core, using the Herumi library.
C#
6
star
48

near-sffl

Go
6
star
49

starknet-node-data-spec

Specification of network nodes data collection and sharing.
6
star
50

research

Jupyter Notebook
5
star
51

metrics-infrastructure

Metrics Infrastracture sample then can be used to monitor your running Nethermind nodes
5
star
52

restaking-dashboard

Restaking Dashboard
JavaScript
5
star
53

rpc-request-builder

TypeScript
5
star
54

nethermind-encode-bootcamp

Python
4
star
55

eth-docker-compose

Set of docker-compose recipes for Eth2 networks
4
star
56

go-template

This is a template repository for starting new Go projects from scratch with common configurations that we use at Nethermind
Makefile
4
star
57

starknet-abi-form

Starknet ABI Form
TypeScript
4
star
58

nethermind-node-tests

In this repository, there will be a set of test cases which will be executed on various stages of post-merge-smoke-tests nodes syncing process.
C#
3
star
59

research-mnemonic-public

Using Shamir's secret sharing to share mnemonic keys
Python
3
star
60

AA_bundler

Go
3
star
61

homebrew-sedge

Homebrew repository for Sedge
Ruby
3
star
62

voyager-translations

JavaScript
3
star
63

formalverification.xyz

A website listing all the best FV companies in the Crypto space.
TypeScript
3
star
64

terraform-nethermind

Recipe for a fast & easy terraform deployment of Nethermind Client and Monitoring stack (Grafana/Prometheus/Seq)
HCL
3
star
65

sign-in-with-starknet

Reference implementation to use Starknet accounts to sign in
TypeScript
2
star
66

kudu

C++
2
star
67

forta-staking-vault

Forta Vault for FORT holders to get access to FORT staking rewards abstracting the complexity of tracking scanning pools performance
Solidity
2
star
68

validators-watcher

Simple validators balance watcher
Go
2
star
69

boost-builder

Go
2
star
70

validators-alerting-service

Simple function that detects decreasing ETH/Gnosis validator's balance and alerts the user.
Python
2
star
71

shutter-validator-registration

JavaScript
2
star
72

gas-benchmarks

Gas benchmark research repository
Python
2
star
73

posmoni

A tool to monitor validators in a PoS network of chain, using official HTTP APIs.
Go
2
star
74

vmsToNotion

Go
2
star
75

CommitEd

Learn about various commitment schemes through visualisation
TypeScript
2
star
76

netherverse

Netherverse (Atlantis Team)
JavaScript
2
star
77

blst-bindings

C#
2
star
78

cairo-workshop

Cairo smart contract development workshop content
Cairo
2
star
79

starknet-worldcoin-bridge

A Worldcoin bridge for Starknet
Cairo
2
star
80

tsim

TypeScript
2
star
81

jrpc-interceptor

A tool to intercept json rpc requests and publish metrics like response time to Prometheus
Go
2
star
82

l2-finality

Tooling to provide real-time data and assess these risks across various L2s
TypeScript
2
star
83

starknet-abi

Python Abi Decoder for Starknet
Python
2
star
84

pwn-starknet

Cairo
2
star
85

aura-validators-monitoring

Go
1
star
86

EOF-Header-Parser

a simple parser of EOF headers from Shanghai compatible bytecodes
C#
1
star
87

Atlantis-Repo

Team Atlantis main repository
1
star
88

warp-plugin

Cairo
1
star
89

vm-request-slack-bot

A slack bot for managing vm requests
Go
1
star
90

hardhat-warp-template

TypeScript
1
star
91

cortex-ssz

An implementation of the ETH2.0 Simple Serialize (SSZ) specification, for .NET Core (written in C#).
C#
1
star
92

nethermind.launcher

JavaScript
1
star
93

optimistic-zk

Solidity
1
star
94

warp-build-action

1
star
95

secp256k1-bindings

C# bindings for the libsecp256k1 library
C#
1
star
96

docker-volumes-snapshotter

Go
1
star
97

IL-EVM

An EVM contract precompiler that emits .NET code to make the execution faster
1
star
98

nethermind-plugins-guide

C#
1
star
99

eigenlayer-operator

1
star
100

eth-pairings-bindings

C# bindings for the eth_pairings library
C#
1
star