Documentation ¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the ethereum v1alpha1 API group +kubebuilder:object:generate=true +groupName=ethereum.kotal.io
Index ¶
- Constants
- Variables
- type API
- type Account
- type Clique
- type Enode
- type Ethash
- type EthereumClient
- type Forks
- type Genesis
- func (in *Genesis) DeepCopy() *Genesis
- func (in *Genesis) DeepCopyInto(out *Genesis)
- func (g *Genesis) Default()
- func (g *Genesis) EnabledConsensusConfigs() []string
- func (g *Genesis) ReservedAccountIsUsed() (bool, string)
- func (g *Genesis) ValidateCreate() field.ErrorList
- func (g *Genesis) ValidateForksOrder() field.ErrorList
- func (g *Genesis) ValidateUpdate(oldGenesis *Genesis) field.ErrorList
- type Hash
- type HexString
- type IBFT2
- type ImportedAccount
- type Node
- func (in *Node) DeepCopy() *Node
- func (in *Node) DeepCopyInto(out *Node)
- func (in *Node) DeepCopyObject() runtime.Object
- func (n *Node) Default()
- func (n *Node) DefaultNodeResources()
- func (r *Node) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (n *Node) ValidateCreate() (admission.Warnings, error)
- func (n *Node) ValidateDelete() (admission.Warnings, error)
- func (n *Node) ValidateUpdate(old runtime.Object) (admission.Warnings, error)
- type NodeList
- type NodeSpec
- type NodeStatus
- type PoA
- type SynchronizationMode
Constants ¶
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" )
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
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
const ( // DefaultCliqueBlockPeriod is the default clique block period DefaultCliqueBlockPeriod uint = 15 // DefaultCliqueEpochLength is th default clique epoch length DefaultCliqueEpochLength uint = 3000 )
Clique engine defaults
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
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
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" )
const ( // DefaultEthashFixedDifficulty is the default ethash fixed difficulty DefaultEthashFixedDifficulty uint = 1000 )
Ethash engine defaults
Variables ¶
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 )
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 )
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Account.
func (*Account) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Clique.
func (*Clique) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ethash.
func (*Ethash) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Forks.
func (*Forks) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Genesis.
func (*Genesis) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Genesis) EnabledConsensusConfigs ¶
EnabledConsensusConfigs returns enabled consensus configs
func (*Genesis) ReservedAccountIsUsed ¶
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 ¶
ValidateCreate validates genesis block during node creation
func (*Genesis) ValidateForksOrder ¶
ValidateForksOrder validates that forks are in correct order
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IBFT2.
func (*IBFT2) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node.
func (*Node) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Node) DeepCopyObject ¶
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 ¶
SetupWebhookWithManager sets up the webook with a given controller manager
func (*Node) ValidateCreate ¶
ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (*Node) ValidateDelete ¶
ValidateDelete 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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeList.
func (*NodeList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*NodeList) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeSpec.
func (*NodeSpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PoA.
func (*PoA) DeepCopyInto ¶
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" )