v1alpha1

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2024 License: Apache-2.0 Imports: 16 Imported by: 5

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the ethereum v1alpha1 API group +kubebuilder:object:generate=true +groupName=ethereum.kotal.io

Index

Constants

View Source
const (
	// DefaultBesuImage is hyperledger besu image
	DefaultBesuImage = "hyperledger/besu:24.3.0"
	// DefaultGethImage is go-ethereum image
	DefaultGethImage = "kotalco/geth:v1.13.14"
	// DefaultNethermindImage is nethermind image
	DefaultNethermindImage = "kotalco/nethermind:v1.25.4"
)
View Source
const (
	// DefaultLogging is the default logging verbosity level
	DefaultLogging = shared.InfoLogs
	// DefaultP2PPort is the default p2p port
	DefaultP2PPort uint = 30303
	// DefaultPublicNetworkSyncMode is the default sync mode for public networks
	DefaultPublicNetworkSyncMode = FastSynchronization
	// DefaultPrivateNetworkSyncMode is the default sync mode for private networks
	DefaultPrivateNetworkSyncMode = FullSynchronization
	// DefaultEngineRPCPort is the default engine rpc port
	DefaultEngineRPCPort uint = 8551
	// DefaultRPCPort is the default rpc port
	DefaultRPCPort uint = 8545
	// DefaultWSPort is the default ws port
	DefaultWSPort uint = 8546
	// DefaultGraphQLPort is the default graphQL port
	DefaultGraphQLPort uint = 8547
)

Node defaults

View Source
const (
	// DefaultCoinbase is the default coinbase
	DefaultCoinbase = shared.EthereumAddress("0x0000000000000000000000000000000000000000")
	// DefaultDifficulty is the default difficulty
	DefaultDifficulty = HexString("0x1")
	// DefaultMixHash is the default mix hash
	DefaultMixHash = Hash("0x0000000000000000000000000000000000000000000000000000000000000000")
	// DefaultGasLimit is the default gas limit
	DefaultGasLimit = HexString("0x47b760")
	// DefaultNonce is the default nonce
	DefaultNonce = HexString("0x0")
	// DefaultTimestamp is the default timestamp
	DefaultTimestamp = HexString("0x0")
)

Genesis block defaults

View Source
const (
	// DefaultCliqueBlockPeriod is the default clique block period
	DefaultCliqueBlockPeriod uint = 15
	// DefaultCliqueEpochLength is th default clique epoch length
	DefaultCliqueEpochLength uint = 3000
)

Clique engine defaults

View Source
const (
	// DefaultIBFT2BlockPeriod is the default ibft2 block period
	DefaultIBFT2BlockPeriod uint = 15
	// DefaultIBFT2EpochLength is the default ibft2 epoch length
	DefaultIBFT2EpochLength uint = 3000
	// DefaultIBFT2RequestTimeout is the default ibft2 request timeout
	DefaultIBFT2RequestTimeout uint = 10
	// DefaultIBFT2MessageQueueLimit is the default ibft2 message queue limit
	DefaultIBFT2MessageQueueLimit uint = 1000
	// DefaultIBFT2DuplicateMessageLimit is the default ibft2 duplicate message limit
	DefaultIBFT2DuplicateMessageLimit uint = 100
	// DefaultIBFT2FutureMessagesLimit is the default ibft2 future message limit
	DefaultIBFT2FutureMessagesLimit uint = 1000
	// DefaultIBFT2FutureMessagesMaxDistance is the default ibft2 future message max distance
	DefaultIBFT2FutureMessagesMaxDistance uint = 10
)

IBFT2 engine defaults

View Source
const (
	// DefaultPrivateNetworkNodeCPURequest is the cpu requested by private network node
	DefaultPrivateNetworkNodeCPURequest = "2"
	// DefaultPrivateNetworkNodeCPULimit is the cpu limit for private network node
	DefaultPrivateNetworkNodeCPULimit = "3"
	// DefaultPublicNetworkNodeCPURequest is the cpu requested by public network node
	DefaultPublicNetworkNodeCPURequest = "4"
	// DefaultPublicNetworkNodeCPULimit is the cpu limit for public network node
	DefaultPublicNetworkNodeCPULimit = "6"
	// DefaultPrivateNetworkNodeMemoryRequest is the memory requested by private network node
	DefaultPrivateNetworkNodeMemoryRequest = "4Gi"
	// DefaultPrivateNetworkNodeMemoryLimit is the memory limit for private network node
	DefaultPrivateNetworkNodeMemoryLimit = "6Gi"
	// DefaultPublicNetworkNodeMemoryRequest is the Memory requested by public network node
	DefaultPublicNetworkNodeMemoryRequest = "8Gi"
	// DefaultPublicNetworkNodeMemoryLimit is the Memory limit for public network node
	DefaultPublicNetworkNodeMemoryLimit = "16Gi"
	// DefaultPrivateNetworkNodeStorageRequest is the Storage requested by private network node
	DefaultPrivateNetworkNodeStorageRequest = "100Gi"
	// DefaultMainNetworkFullNodeStorageRequest is the Storage requested by main network archive node
	DefaultMainNetworkFullNodeStorageRequest = "6Ti"
	// DefaultMainNetworkFastNodeStorageRequest is the Storage requested by main network full node
	DefaultMainNetworkFastNodeStorageRequest = "750Gi"
	// DefaultTestNetworkStorageRequest is the Storage requested by main network full node
	DefaultTestNetworkStorageRequest = "25Gi"
)

Resources

View Source
const (
	// MainNetwork is ethereum main network
	MainNetwork = "mainnet"
	// RopstenNetwork is ropsten pos network
	RopstenNetwork = "ropsten"
	// RinkebyNetwork is rinkeby poa network
	RinkebyNetwork = "rinkeby"
	// GoerliNetwork is goerli pos cross-client network
	GoerliNetwork = "goerli"
	// SepoliaNetwork is sepolia pos network
	SepoliaNetwork = "sepolia"
	// XDaiNetwork is xdai pos network
	XDaiNetwork = "xdai"
	// KottiNetwork is kotti poa ethereum classic test network
	KottiNetwork = "kotti"
	// ClassicNetwork is ethereum classic network
	ClassicNetwork = "classic"
	// MordorNetwork is mordon poe ethereum classic test network
	MordorNetwork = "mordor"
	// DevNetwork is local development network
	DevNetwork = "dev"
)
View Source
const (
	// DefaultEthashFixedDifficulty is the default ethash fixed difficulty
	DefaultEthashFixedDifficulty uint = 1000
)

Ethash engine defaults

Variables

View Source
var (
	// DefaultAPIs is the default rpc, ws APIs
	DefaultAPIs []API = []API{Web3API, ETHAPI, NetworkAPI}
	// DefaultOrigins is the default origins
	DefaultOrigins []string = []string{"*"}
	// DefaltReplicas is the default replicas
	DefaltReplicas uint = 1
)
View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "ethereum.kotal.io", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var (
	// ChainByID is public chains indexed by ID
	ChainByID = map[uint]string{
		1:        MainNetwork,
		3:        RopstenNetwork,
		4:        RinkebyNetwork,
		5:        GoerliNetwork,
		6:        KottiNetwork,
		61:       ClassicNetwork,
		63:       MordorNetwork,
		2018:     DevNetwork,
		11155111: SepoliaNetwork,
	}
)

Functions

This section is empty.

Types

type API

type API string

API is RPC API to be exposed by RPC or web socket server +kubebuilder:validation:Enum=admin;clique;debug;eea;eth;ibft;miner;net;perm;plugins;priv;txpool;web3

const (
	// AdminAPI is administration API
	AdminAPI API = "admin"

	// CliqueAPI is clique (Proof of Authority consensus) API
	CliqueAPI API = "clique"

	// DebugAPI is debugging API
	DebugAPI API = "debug"

	// EEAAPI is EEA (Enterprise Ethereum Alliance) API
	EEAAPI API = "eea"

	// ETHAPI is ethereum API
	ETHAPI API = "eth"

	// IBFTAPI is IBFT consensus API
	IBFTAPI API = "ibft"

	// MinerAPI is miner API
	MinerAPI API = "miner"

	// NetworkAPI is network API
	NetworkAPI API = "net"

	// PermissionAPI is permission API
	PermissionAPI API = "perm"

	// PluginsAPI is plugins API
	PluginsAPI API = "plugins"

	// PrivacyAPI is privacy API
	PrivacyAPI API = "privacy"

	// TransactionPoolAPI is transaction pool API
	TransactionPoolAPI API = "txpool"

	// Web3API is web3 API
	Web3API API = "web3"
)

type Account

type Account struct {
	// Address is account address
	Address shared.EthereumAddress `json:"address"`

	// Balance is account balance in wei
	Balance HexString `json:"balance,omitempty"`

	// Code is account contract byte code
	Code HexString `json:"code,omitempty"`

	// Storage is account contract storage as key value pair
	Storage map[HexString]HexString `json:"storage,omitempty"`
}

Account is Ethereum account

func (*Account) DeepCopy

func (in *Account) DeepCopy() *Account

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Account.

func (*Account) DeepCopyInto

func (in *Account) DeepCopyInto(out *Account)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Clique

type Clique struct {
	PoA `json:",inline"`

	// Signers are PoA initial signers, at least one signer is required
	// +kubebuilder:validation:MinItems=1
	Signers []shared.EthereumAddress `json:"signers,omitempty"`
}

Clique configuration

func (*Clique) DeepCopy

func (in *Clique) DeepCopy() *Clique

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Clique.

func (*Clique) DeepCopyInto

func (in *Clique) DeepCopyInto(out *Clique)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Enode

type Enode string

Enode is ethereum node url

type Ethash

type Ethash struct {
	// FixedDifficulty is fixed difficulty to be used in private PoW networks
	FixedDifficulty *uint `json:"fixedDifficulty,omitempty"`
}

Ethash configurations

func (*Ethash) DeepCopy

func (in *Ethash) DeepCopy() *Ethash

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ethash.

func (*Ethash) DeepCopyInto

func (in *Ethash) DeepCopyInto(out *Ethash)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EthereumClient

type EthereumClient string

EthereumClient is the ethereum client running on a given node +kubebuilder:validation:Enum=besu;geth;nethermind

const (
	// BesuClient is hyperledger besu ethereum client
	BesuClient EthereumClient = "besu"
	// GethClient is go ethereum client
	GethClient EthereumClient = "geth"
	// NethermindClient is Nethermind .NET client
	NethermindClient EthereumClient = "nethermind"
)

func (EthereumClient) SupportsVerbosityLevel

func (e EthereumClient) SupportsVerbosityLevel(level shared.VerbosityLevel) bool

type Forks

type Forks struct {
	// Homestead fork
	Homestead uint `json:"homestead,omitempty"`

	// DAO fork
	DAO *uint `json:"dao,omitempty"`

	// EIP150 (Tangerine Whistle) fork
	EIP150 uint `json:"eip150,omitempty"`

	// EIP155 (Spurious Dragon) fork
	EIP155 uint `json:"eip155,omitempty"`

	// EIP158 (state trie clearing) fork
	EIP158 uint `json:"eip158,omitempty"`

	// Byzantium fork
	Byzantium uint `json:"byzantium,omitempty"`

	// Constantinople fork
	Constantinople uint `json:"constantinople,omitempty"`

	// Petersburg fork
	Petersburg uint `json:"petersburg,omitempty"`

	// Istanbul fork
	Istanbul uint `json:"istanbul,omitempty"`

	// MuirGlacier fork
	MuirGlacier uint `json:"muirglacier,omitempty"`

	// Berlin fork
	Berlin uint `json:"berlin,omitempty"`

	// London fork
	London uint `json:"london,omitempty"`

	// ArrowGlacier fork
	ArrowGlacier uint `json:"arrowGlacier,omitempty"`
}

Forks is the supported forks by the network

func (*Forks) DeepCopy

func (in *Forks) DeepCopy() *Forks

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Forks.

func (*Forks) DeepCopyInto

func (in *Forks) DeepCopyInto(out *Forks)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Genesis

type Genesis struct {
	// Accounts is array of accounts to fund or associate with code and storage
	Accounts []Account `json:"accounts,omitempty"`

	// NetworkID is network id
	NetworkID uint `json:"networkId"`

	// ChainID is the the chain ID used in transaction signature to prevent reply attack
	// more details https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md
	ChainID uint `json:"chainId"`

	// Address to pay mining rewards to
	Coinbase shared.EthereumAddress `json:"coinbase,omitempty"`

	// Difficulty is the diffculty of the genesis block
	Difficulty HexString `json:"difficulty,omitempty"`

	// MixHash is hash combined with nonce to prove effort spent to create block
	MixHash Hash `json:"mixHash,omitempty"`

	// Ethash PoW engine configuration
	Ethash *Ethash `json:"ethash,omitempty"`

	// Clique PoA engine cinfiguration
	Clique *Clique `json:"clique,omitempty"`

	// IBFT2 PoA engine configuration
	IBFT2 *IBFT2 `json:"ibft2,omitempty"`

	// Forks is supported forks (network upgrade) and corresponding block number
	Forks *Forks `json:"forks,omitempty"`

	// GastLimit is the total gas limit for all transactions in a block
	GasLimit HexString `json:"gasLimit,omitempty"`

	// Nonce is random number used in block computation
	Nonce HexString `json:"nonce,omitempty"`

	// Timestamp is block creation date
	Timestamp HexString `json:"timestamp,omitempty"`
}

Genesis is genesis block sepcficition

func (*Genesis) DeepCopy

func (in *Genesis) DeepCopy() *Genesis

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Genesis.

func (*Genesis) DeepCopyInto

func (in *Genesis) DeepCopyInto(out *Genesis)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Genesis) Default

func (g *Genesis) Default()

Default defaults genesis block parameters

func (*Genesis) EnabledConsensusConfigs

func (g *Genesis) EnabledConsensusConfigs() []string

EnabledConsensusConfigs returns enabled consensus configs

func (*Genesis) ReservedAccountIsUsed

func (g *Genesis) ReservedAccountIsUsed() (bool, string)

ReservedAccountIsUsed returns true if reserved account is used reserved accounts are accounts from 0x00...01 to 0x00...ff (1 to 256) reserved accounts are used for precompiles

func (*Genesis) ValidateCreate

func (g *Genesis) ValidateCreate() field.ErrorList

ValidateCreate validates genesis block during node creation

func (*Genesis) ValidateForksOrder

func (g *Genesis) ValidateForksOrder() field.ErrorList

ValidateForksOrder validates that forks are in correct order

func (*Genesis) ValidateUpdate

func (g *Genesis) ValidateUpdate(oldGenesis *Genesis) field.ErrorList

type Hash

type Hash string

Hash is KECCAK-256 hash +kubebuilder:validation:Pattern="^0[xX][0-9a-fA-F]{64}$"

type HexString

type HexString string

HexString is String in hexadecial format +kubebuilder:validation:Pattern="^0[xX][0-9a-fA-F]+$"

type IBFT2

type IBFT2 struct {
	PoA `json:",inline"`

	// Validators are initial ibft2 validators
	// +kubebuilder:validation:MinItems=1
	Validators []shared.EthereumAddress `json:"validators,omitempty"`

	// RequestTimeout is the timeout for each consensus round in seconds
	RequestTimeout uint `json:"requestTimeout,omitempty"`

	// MessageQueueLimit is the message queue limit
	MessageQueueLimit uint `json:"messageQueueLimit,omitempty"`

	// DuplicateMessageLimit is duplicate messages limit
	DuplicateMessageLimit uint `json:"duplicateMessageLimit,omitempty"`

	// futureMessagesLimit is future messages buffer limit
	FutureMessagesLimit uint `json:"futureMessagesLimit,omitempty"`

	// FutureMessagesMaxDistance is maximum height from current chain height for buffering future messages
	FutureMessagesMaxDistance uint `json:"futureMessagesMaxDistance,omitempty"`
}

IBFT2 configuration

func (*IBFT2) DeepCopy

func (in *IBFT2) DeepCopy() *IBFT2

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IBFT2.

func (*IBFT2) DeepCopyInto

func (in *IBFT2) DeepCopyInto(out *IBFT2)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ImportedAccount

type ImportedAccount struct {
	// PrivateKeySecretName is the secret name holding account private key
	PrivateKeySecretName string `json:"privateKeySecretName"`
	// PasswordSecretName is the secret holding password used to encrypt account private key
	PasswordSecretName string `json:"passwordSecretName"`
}

ImportedAccount is account derived from private key

func (*ImportedAccount) DeepCopy

func (in *ImportedAccount) DeepCopy() *ImportedAccount

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImportedAccount.

func (*ImportedAccount) DeepCopyInto

func (in *ImportedAccount) DeepCopyInto(out *ImportedAccount)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Node

type Node struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   NodeSpec   `json:"spec,omitempty"`
	Status NodeStatus `json:"status,omitempty"`
}

Node is the Schema for the nodes API +kubebuilder:printcolumn:name="Client",type=string,JSONPath=".spec.client" +kubebuilder:printcolumn:name="Consensus",type=string,JSONPath=".status.consensus" +kubebuilder:printcolumn:name="Network",type=string,JSONPath=".status.network" +kubebuilder:printcolumn:name="enodeURL",type=string,JSONPath=".status.enodeURL",priority=10

func (*Node) DeepCopy

func (in *Node) DeepCopy() *Node

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node.

func (*Node) DeepCopyInto

func (in *Node) DeepCopyInto(out *Node)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Node) DeepCopyObject

func (in *Node) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Node) Default

func (n *Node) Default()

Default implements webhook.Defaulter so a webhook will be registered for the type

func (*Node) DefaultNodeResources

func (n *Node) DefaultNodeResources()

DefaultNodeResources defaults node cpu, memory and storage resources

func (*Node) SetupWebhookWithManager

func (r *Node) SetupWebhookWithManager(mgr ctrl.Manager) error

SetupWebhookWithManager sets up the webook with a given controller manager

func (*Node) ValidateCreate

func (n *Node) ValidateCreate() (admission.Warnings, error)

ValidateCreate implements webhook.Validator so a webhook will be registered for the type

func (*Node) ValidateDelete

func (n *Node) ValidateDelete() (admission.Warnings, error)

ValidateDelete implements webhook.Validator so a webhook will be registered for the type

func (*Node) ValidateUpdate

func (n *Node) ValidateUpdate(old runtime.Object) (admission.Warnings, error)

ValidateUpdate implements webhook.Validator so a webhook will be registered for the type

type NodeList

type NodeList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Node `json:"items"`
}

NodeList contains a list of Node

func (*NodeList) DeepCopy

func (in *NodeList) DeepCopy() *NodeList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeList.

func (*NodeList) DeepCopyInto

func (in *NodeList) DeepCopyInto(out *NodeList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NodeList) DeepCopyObject

func (in *NodeList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type NodeSpec

type NodeSpec struct {

	// Image is Ethereum node client image
	Image string `json:"image,omitempty"`

	// ExtraArgs is extra arguments to pass down to the cli
	ExtraArgs shared.ExtraArgs `json:"extraArgs,omitempty"`

	// Replicas is number of replicas
	// +kubebuilder:validation:Enum=0;1
	Replicas *uint `json:"replicas,omitempty"`

	// Genesis is genesis block configuration
	Genesis *Genesis `json:"genesis,omitempty"`

	// Network specifies the network to join
	Network string `json:"network,omitempty"`

	// Client is ethereum client running on the node
	Client EthereumClient `json:"client"`

	// import is account to import
	Import *ImportedAccount `json:"import,omitempty"`

	// Bootnodes is set of ethereum node URLS for p2p discovery bootstrap
	// +listType=set
	Bootnodes []Enode `json:"bootnodes,omitempty"`

	// NodePrivateKeySecretName is the secret name holding node private key
	NodePrivateKeySecretName string `json:"nodePrivateKeySecretName,omitempty"`

	// StaticNodes is a set of ethereum nodes to maintain connection to
	// +listType=set
	StaticNodes []Enode `json:"staticNodes,omitempty"`

	// P2PPort is port used for peer to peer communication
	P2PPort uint `json:"p2pPort,omitempty"`

	// SyncMode is the node synchronization mode
	SyncMode SynchronizationMode `json:"syncMode,omitempty"`

	// Miner is whether node is mining/validating blocks or no
	Miner bool `json:"miner,omitempty"`

	// Logging is logging verboisty level
	// +kubebuilder:validation:Enum=off;fatal;error;warn;info;debug;trace;all
	Logging shared.VerbosityLevel `json:"logging,omitempty"`

	// Coinbase is the account to which mining rewards are paid
	Coinbase shared.EthereumAddress `json:"coinbase,omitempty"`

	// Hosts is a list of hostnames to to whitelist for RPC access
	// +listType=set
	Hosts []string `json:"hosts,omitempty"`

	// CORSDomains is the domains from which to accept cross origin requests
	// +listType=set
	CORSDomains []string `json:"corsDomains,omitempty"`

	// Engine enables authenticated Engine RPC APIs
	Engine bool `json:"engine,omitempty"`

	// EnginePort is engine authenticated RPC APIs port
	EnginePort uint `json:"enginePort,omitempty"`

	// JWTSecretName is kubernetes secret name holding JWT secret
	JWTSecretName string `json:"jwtSecretName,omitempty"`

	// RPC is whether HTTP-RPC server is enabled or not
	RPC bool `json:"rpc,omitempty"`

	// RPCPort is HTTP-RPC server listening port
	RPCPort uint `json:"rpcPort,omitempty"`

	// RPCAPI is a list of rpc services to enable
	// +listType=set
	RPCAPI []API `json:"rpcAPI,omitempty"`

	// WS is whether web socket server is enabled or not
	WS bool `json:"ws,omitempty"`

	// WSPort is the web socket server listening port
	WSPort uint `json:"wsPort,omitempty"`

	// WSAPI is a list of WS services to enable
	// +listType=set
	WSAPI []API `json:"wsAPI,omitempty"`

	// GraphQL is whether GraphQL server is enabled or not
	GraphQL bool `json:"graphql,omitempty"`

	// GraphQLPort is the GraphQL server listening port
	GraphQLPort uint `json:"graphqlPort,omitempty"`

	// Resources is node compute and storage resources
	shared.Resources `json:"resources,omitempty"`
}

NodeSpec is the specification of the node

func (*NodeSpec) DeepCopy

func (in *NodeSpec) DeepCopy() *NodeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeSpec.

func (*NodeSpec) DeepCopyInto

func (in *NodeSpec) DeepCopyInto(out *NodeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NodeStatus

type NodeStatus struct {
	// Consensus is network consensus algorithm
	Consensus string `json:"consensus,omitempty"`
	// Network is the network this node is joining
	Network string `json:"network,omitempty"`
	// EnodeURL is the node URL
	EnodeURL string `json:"enodeURL,omitempty"`
}

NodeStatus defines the observed state of Node

func (*NodeStatus) DeepCopy

func (in *NodeStatus) DeepCopy() *NodeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeStatus.

func (*NodeStatus) DeepCopyInto

func (in *NodeStatus) DeepCopyInto(out *NodeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PoA

type PoA struct {
	// BlockPeriod is block time in seconds
	BlockPeriod uint `json:"blockPeriod,omitempty"`

	// EpochLength is the Number of blocks after which to reset all votes
	EpochLength uint `json:"epochLength,omitempty"`
}

PoA is Shared PoA engine config

func (*PoA) DeepCopy

func (in *PoA) DeepCopy() *PoA

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PoA.

func (*PoA) DeepCopyInto

func (in *PoA) DeepCopyInto(out *PoA)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SynchronizationMode

type SynchronizationMode string

SynchronizationMode is the node synchronization mode +kubebuilder:validation:Enum=fast;full;light;snap

const (
	//SnapSynchronization is the snap synchronization mode
	SnapSynchronization SynchronizationMode = "snap"

	//FastSynchronization is the fast synchronization mode
	FastSynchronization SynchronizationMode = "fast"

	//LightSynchronization is the light synchronization mode
	LightSynchronization SynchronizationMode = "light"

	//FullSynchronization is full archival synchronization mode
	FullSynchronization SynchronizationMode = "full"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL