Ethereum2 APIs
API Specifications Clients, Nodes, and DApps
Phase0
The beacon node (BN) maintains the state of the beacon chain by communicating with other beacon nodes in the Ethereum network. Conceptually, it does not maintain keypairs that participate with the beacon chain .
Validator client (VC) i
These duties include the production of beacon blocks and signing of attestations..
Beacon node (BN)
Maintains the state of the beacon chain by communicating with other beacon nodes in the Ethereum network..
Execution APIs
This interface allows downstream tooling and infrastructure to treat different Ethereum clients as modules that can be swapped at will..
Comparison
How do Eth2 clients compare to each other?
This is not an exhaustive list of clients!
Beacon | Validator | Execution | |
---|---|---|---|
Asynchronous | |||
Plugin support | |||
Metrics | |||
Monitoring | |||
Key Management |
Production Ready
Terraform Eth2 Modules
- module.tf
- variables.tf
- node.tf
- provider.tf
module "some_node" {source = "path/to/this/module"destination_disk = "/dev/nvme0n1"talos_node_config = "NODECONFIGHERE"talos_version = "v1.0.3"worker_address = "x.x.x.x"}
variable "destination_disk" {type = stringdescription = "Device to copy the Talos installer to"}variable "talos_version" {type = stringdescription = "The version of Talos Linux to install on creation. Doesn't affect existing nodes."}variable "worker_address" {type = stringdescription = "IP address or hostname to deploy Talos onto"}variable "talos_node_config" {description = "The config that should be applied to the node. Keep in mind this only works on a fresh node."}Footer}
resource "null_resource" "node" {connection {type = "ssh"user = "root"host = var.worker_addressagent = true}provisioner "remote-exec" {inline = ["set -o errexit","wipefs -af ${var.destination_disk}","wget https://github.com/talos-systems/talos/releases/download/${var.talos_version}/nocloud-amd64.raw.xz","xzcat nocloud-amd64.raw.xz | dd of=${var.destination_disk} bs=1M",# extend partition table to physical disk size"sgdisk --move-second-header ${var.destination_disk}",# create new CIDATA partition at the end of the disk"sgdisk --new 0:-100M:0 --typecode 0:8300 ${var.destination_disk} --change-name=0:'CIDATA' ${var.destination_disk}","sync","partprobe","sleep 1",# format"mkfs.vfat -F 32 -n CIDATA /dev/disk/by-partlabel/CIDATA",# mount"mkdir -p /mnt/cidata","mount /dev/disk/by-partlabel/CIDATA /mnt/cidata",# write config as user-data"echo ${base64encode(jsonencode(var.talos_node_config))} | base64 -d > /mnt/cidata/user-data",# done!"umount /mnt/cidata","systemctl --no-block reboot",]}}}
terraform {required_providers {hcloud = {source = "hetznercloud/hcloud"}}}