Documentation
¶
Index ¶
- Variables
- func AddCustomRPC(cfg *config.Config, chainID int, chainName, endpoint string, readOnly bool) error
- func AddPublicRPCs(cfg *config.Config, chainID int, chainName string, endpoints []RPCEndpoint, ...) error
- func CheckNetworkDiskSpace(u *ui.UI, dataDir, network, mode, executionClient string, scope ArchiveScope) error
- func DefaultChainListFetcher() ([]byte, error)
- func Delete(cfg *config.Config, u *ui.UI, deploymentIdentifier string) error
- func DeregisterERPCUpstream(cfg *config.Config, networkType, id string) error
- func GetERPCStatus(cfg *config.Config) (podStatus string, upstreamCounts map[int]int, err error)
- func Install(cfg *config.Config, u *ui.UI, network string, overrides map[string]string, ...) error
- func List(cfg *config.Config, u *ui.UI) error
- func ListInstanceIDs(cfg *config.Config) ([]string, error)
- func RegisterERPCUpstream(cfg *config.Config, networkType, id string) error
- func RemovePublicRPCs(cfg *config.Config, chainID int) error
- func ResolveChainID(nameOrID string) (int, string, error)
- func ResolveInstance(cfg *config.Config, args []string) (identifier string, remaining []string, err error)
- func SortByQuality(endpoints []RPCEndpoint)
- func Sync(cfg *config.Config, u *ui.UI, deploymentIdentifier string) error
- func SyncAll(cfg *config.Config, u *ui.UI) error
- type ArchiveScope
- type ChainEntry
- type ChainListFetcher
- type Hardfork
- type RPCEndpoint
- type RPCNetworkInfo
- type RPCUpstreamInfo
- type TemplateField
Constants ¶
This section is empty.
Variables ¶
var MainnetHardforks = []Hardfork{
{
Name: "merge",
DisplayName: "the merge",
Block: 15537394,
Date: "2022-09-15",
ApproxArchiveSizeTB: 1.5,
},
{
Name: "shanghai",
DisplayName: "shanghai",
Block: 17034870,
Date: "2023-04-12",
ApproxArchiveSizeTB: 1.2,
},
{
Name: "cancun",
DisplayName: "cancun",
Block: 19426587,
Date: "2024-03-13",
ApproxArchiveSizeTB: 0.8,
},
{
Name: "prague",
DisplayName: "prague",
Block: 22431084,
Date: "2025-05-07",
ApproxArchiveSizeTB: 0.4,
},
{
Name: "osaka",
DisplayName: "osaka",
Block: 23935694,
Date: "2025-12-03",
ApproxArchiveSizeTB: 0.2,
},
}
MainnetHardforks is the ordered list of mainnet hardforks supported by --since presets, oldest first.
Functions ¶
func AddCustomRPC ¶ added in v0.5.0
AddCustomRPC adds a single custom RPC endpoint for a chain to the eRPC ConfigMap. Uses the "custom-" prefix to distinguish from ChainList-sourced upstreams. When readOnly is true, eth_sendRawTransaction and eth_sendTransaction are blocked.
func AddPublicRPCs ¶ added in v0.5.0
func AddPublicRPCs(cfg *config.Config, chainID int, chainName string, endpoints []RPCEndpoint, readOnly bool) error
AddPublicRPCs adds ChainList RPCs for a chain to the eRPC ConfigMap. When readOnly is true, eth_sendRawTransaction and eth_sendTransaction are blocked.
func CheckNetworkDiskSpace ¶ added in v0.10.0
func CheckNetworkDiskSpace(u *ui.UI, dataDir, network, mode, executionClient string, scope ArchiveScope) error
CheckNetworkDiskSpace warns when the data directory has less free disk than the install is expected to need. The default answer is to continue: in non-interactive contexts (no TTY, JSON mode) the prompt auto-accepts so scripted installs don't deadlock. The user only blocks the install by explicitly declining at an interactive prompt.
func DefaultChainListFetcher ¶ added in v0.5.0
DefaultChainListFetcher fetches from the real ChainList API.
func DeregisterERPCUpstream ¶ added in v0.3.2
DeregisterERPCUpstream removes a previously registered local upstream from the eRPC ConfigMap.
func GetERPCStatus ¶ added in v0.5.0
GetERPCStatus returns eRPC pod status and upstream counts.
func Install ¶
func Install(cfg *config.Config, u *ui.UI, network string, overrides map[string]string, force bool) error
Install creates a network configuration by executing Go templates and saving to config directory
func ListInstanceIDs ¶ added in v0.5.0
ListInstanceIDs returns all installed network deployment identifiers (as "network/id" strings) by walking the networks directory on disk.
func RegisterERPCUpstream ¶ added in v0.3.2
RegisterERPCUpstream reads the deployed network's RPC endpoint and adds it as an upstream in the eRPC ConfigMap. The local node becomes the primary upstream (group: "primary") with automatic fallback to existing remote upstreams.
func RemovePublicRPCs ¶ added in v0.5.0
RemovePublicRPCs removes all ChainList RPCs for a chain from the eRPC ConfigMap.
func ResolveChainID ¶ added in v0.5.0
ResolveChainID converts a chain name or numeric string to a chain ID. Returns the chain ID and the resolved name (for display).
func ResolveInstance ¶ added in v0.5.0
func ResolveInstance(cfg *config.Config, args []string) (identifier string, remaining []string, err error)
ResolveInstance determines which network deployment to target based on how many deployments are installed:
- 0 deployments: returns an error prompting the user to install one
- 1 deployment: auto-selects it, returns args unchanged
- 2+ deployments: expects args[0] to be a known "network/id" identifier; consumes it from args and returns the rest. Errors if no match.
func SortByQuality ¶ added in v0.5.0
func SortByQuality(endpoints []RPCEndpoint)
SortByQuality sorts RPC endpoints by tracking quality. Preference: tracking=none > tracking=limited > tracking=unknown > anything else.
Types ¶
type ArchiveScope ¶ added in v0.10.0
type ArchiveScope struct {
// Kind is one of: "all" (full archive from genesis), "before" (prune
// before a specific block), "distance" (keep last N blocks of history).
Kind string
// Block is set when Kind == "before".
Block uint64
// Distance is set when Kind == "distance".
Distance uint64
// Label is a human-readable description for logs/picker confirmation.
Label string
}
ArchiveScope is the resolved meaning of --since after parsing.
func ParseSince ¶ added in v0.10.0
func ParseSince(raw string) (ArchiveScope, error)
ParseSince resolves a --since value into an ArchiveScope. Accepted forms:
- "genesis", "all": full archive from genesis
- "merge", "shanghai", "cancun", "prague", "osaka": EL hardfork name
- "<N>d", "<N>mo", "<N>y": duration back from chain head (12s slots)
- "<block>": raw block number (any unsigned integer)
Mode is reth-anchored: "before" presets get translated to reth's --prune.<segment>.before flags; "distance" presets to --prune.<segment>.distance.
type ChainEntry ¶ added in v0.5.0
type ChainEntry struct {
Name string `json:"name"`
Chain string `json:"chain"`
ChainID int `json:"chainId"`
RPC []any `json:"rpc"` // mix of strings and objects
}
ChainEntry represents a single chain entry from the ChainList API.
type ChainListFetcher ¶ added in v0.5.0
ChainListFetcher abstracts the HTTP fetch so tests can inject fixtures.
type Hardfork ¶ added in v0.10.0
type Hardfork struct {
// Name is the canonical EL fork name used by --since=<name>.
Name string
// DisplayName is shown in the interactive picker.
DisplayName string
// Block is the first execution block at or after the fork activation.
Block uint64
// Date is the activation date, used only for picker labels.
Date string
// ApproxArchiveSizeTB is a rough estimate of mainnet archive disk usage
// when pruning state history before this block (reth). Used in picker
// labels so users have a realistic expectation. Values rounded.
ApproxArchiveSizeTB float64
}
Hardfork describes a mainnet hardfork activation point used by the partial-archive picker. All block numbers are verified for Ethereum mainnet — paris from the reth chainspec source, post-merge forks from the beacon API by computing slot = (fork_ts - beacon_genesis) / 12 and reading execution_payload.block_number from the canonical block at (or shortly after) that slot.
Verified 2026-05-27 against:
- reth v2.2.0 crates/chainspec/src/spec.rs (paris)
- go-ethereum params/config.go (post-merge fork timestamps)
- ethereum-beacon-api.publicnode.com (slot → execution block lookups)
func HardforkByName ¶ added in v0.10.0
HardforkByName returns the hardfork with the given name, or nil.
type RPCEndpoint ¶ added in v0.5.0
type RPCEndpoint struct {
URL string `json:"url"`
Tracking string `json:"tracking"` // "none", "limited", or "yes"
}
RPCEndpoint represents a single RPC endpoint from ChainList.
func FetchChainListRPCs ¶ added in v0.5.0
func FetchChainListRPCs(chainID int, fetcher ChainListFetcher) ([]RPCEndpoint, string, error)
FetchChainListRPCs fetches RPCs for a given chain ID from ChainList, filters for free/public HTTPS endpoints, and returns up to maxRPCs sorted by quality (tracking=none preferred over tracking=limited).
func FilterFreeRPCs ¶ added in v0.5.0
func FilterFreeRPCs(endpoints []RPCEndpoint) []RPCEndpoint
FilterFreeRPCs filters RPC endpoints to only include free, HTTPS, non-tracking endpoints.
func ParseAndFilterRPCs ¶ added in v0.5.0
func ParseAndFilterRPCs(data []byte, chainID, maxRPCs int) ([]RPCEndpoint, string, error)
ParseAndFilterRPCs parses ChainList JSON, finds the chain, filters and sorts RPCs. Exported for testing.
type RPCNetworkInfo ¶ added in v0.5.0
type RPCNetworkInfo struct {
ChainID int
Alias string
Upstreams []RPCUpstreamInfo
}
RPCNetworkInfo represents a network (chain) configured in eRPC.
func ListRPCNetworks ¶ added in v0.5.0
func ListRPCNetworks(cfg *config.Config) ([]RPCNetworkInfo, error)
ListRPCNetworks reads the eRPC ConfigMap and returns configured networks with their upstreams.
type RPCUpstreamInfo ¶ added in v0.5.0
RPCUpstreamInfo represents an upstream in the eRPC config for display.
type TemplateField ¶
type TemplateField struct {
Name string
DefaultValue string
FlagName string // CLI flag name derived from field name
Description string // Human-readable description from @description
EnumValues []string // Valid enum values from @enum
Required bool // Whether this field is required (no default value)
}
TemplateField represents a template field with its configuration
func ParseTemplateFields ¶
func ParseTemplateFields(networkName string) ([]TemplateField, error)
ParseTemplateFields extracts template fields from an embedded network values file Uses Go template parsing to identify field references and their annotations