Documentation ¶
Index ¶
- Constants
- func DecodeAddresses(pkConverter core.PubkeyConverter, stringAddresses []string) ([][]byte, error)
- type BootstrapComponentsHandler
- type BootstrapComponentsHolder
- type BootstrapParamsHolder
- type Closer
- type ComponentHandler
- type ConsensusComponentsHandler
- type ConsensusComponentsHolder
- type ConsensusWorker
- type CoreComponentsHandler
- type CoreComponentsHolder
- type CryptoComponentsHandler
- type CryptoComponentsHolder
- type CryptoParamsHolder
- type DataComponentsHandler
- type DataComponentsHolder
- type EconomicsHandler
- type EpochStartBootstrapper
- type EpochStartNotifier
- type EpochStartNotifierWithConfirm
- type HardforkTrigger
- type HeartbeatV2ComponentsHandler
- type HeartbeatV2ComponentsHolder
- type HeartbeatV2Monitor
- type KeyLoaderHandler
- type LogsFacade
- type MiniBlockProvider
- type NetworkComponentsHandler
- type NetworkComponentsHolder
- type NetworkStatisticsProvider
- type P2PAntifloodHandler
- type PeerHonestyHandler
- type PersistentStatusHandler
- type PreferredPeersHolderHandler
- type ProcessComponentsHandler
- type ProcessComponentsHolder
- type ProcessDebuggerSetter
- type ReceiptsRepository
- type ResourceMonitor
- type ShuffleOutCloser
- type StateComponentsHandler
- type StateComponentsHolder
- type StatusComponentsHandler
- type StatusComponentsHolder
- type StatusCoreComponentsHandler
- type StatusCoreComponentsHolder
- type TransactionSimulatorProcessor
- type TrieSyncStatisticsProvider
Constants ¶
const ( // BootstrapComponentsName is the bootstrap components identifier BootstrapComponentsName = "managedBootstrapComponents" // ConsensusComponentsName is the consensus components identifier ConsensusComponentsName = "managedConsensusComponents" // CoreComponentsName is the core components identifier CoreComponentsName = "managedCoreComponents" // StatusCoreComponentsName is the status core components identifier StatusCoreComponentsName = "managedStatusCoreComponents" // CryptoComponentsName is the crypto components identifier CryptoComponentsName = "managedCryptoComponents" // DataComponentsName is the data components identifier DataComponentsName = "managedDataComponents" // HeartbeatComponentsName is the heartbeat components identifier HeartbeatComponentsName = "managedHeartbeatComponents" // HeartbeatV2ComponentsName is the heartbeat V2 components identifier HeartbeatV2ComponentsName = "managedHeartbeatV2Components" // NetworkComponentsName is the network components identifier NetworkComponentsName = "managedNetworkComponents" // ProcessComponentsName is the process components identifier ProcessComponentsName = "managedProcessComponents" // StateComponentsName is the state components identifier StateComponentsName = "managedStateComponents" // StatusComponentsName is the status components identifier StatusComponentsName = "managedStatusComponents" )
Variables ¶
This section is empty.
Functions ¶
func DecodeAddresses ¶ added in v1.4.0
func DecodeAddresses(pkConverter core.PubkeyConverter, stringAddresses []string) ([][]byte, error)
DecodeAddresses will decode the provided string addresses
Types ¶
type BootstrapComponentsHandler ¶ added in v1.2.0
type BootstrapComponentsHandler interface { ComponentHandler BootstrapComponentsHolder }
BootstrapComponentsHandler defines the bootstrap components handler actions
type BootstrapComponentsHolder ¶ added in v1.2.0
type BootstrapComponentsHolder interface { EpochStartBootstrapper() EpochStartBootstrapper EpochBootstrapParams() BootstrapParamsHolder NodeType() core.NodeType ShardCoordinator() sharding.Coordinator VersionedHeaderFactory() factory.VersionedHeaderFactory HeaderVersionHandler() factory.HeaderVersionHandler HeaderIntegrityVerifier() factory.HeaderIntegrityVerifierHandler IsInterfaceNil() bool }
BootstrapComponentsHolder holds the bootstrap components
type BootstrapParamsHolder ¶ added in v1.2.0
type BootstrapParamsHolder interface { Epoch() uint32 SelfShardID() uint32 NumOfShards() uint32 NodesConfig() *nodesCoordinator.NodesCoordinatorRegistry IsInterfaceNil() bool }
BootstrapParamsHolder gives read access to parameters after bootstrap
type Closer ¶ added in v1.2.0
type Closer interface {
Close() error
}
Closer defines the Close behavior
type ComponentHandler ¶ added in v1.2.0
type ComponentHandler interface { Create() error Close() error CheckSubcomponents() error String() string }
ComponentHandler defines the actions common to all component handlers
type ConsensusComponentsHandler ¶ added in v1.2.0
type ConsensusComponentsHandler interface { ComponentHandler ConsensusComponentsHolder }
ConsensusComponentsHandler defines the consensus components handler actions
type ConsensusComponentsHolder ¶ added in v1.2.0
type ConsensusComponentsHolder interface { Chronology() consensus.ChronologyHandler ConsensusWorker() ConsensusWorker BroadcastMessenger() consensus.BroadcastMessenger ConsensusGroupSize() (int, error) Bootstrapper() process.Bootstrapper IsInterfaceNil() bool }
ConsensusComponentsHolder holds the consensus components
type ConsensusWorker ¶ added in v1.2.0
type ConsensusWorker interface { Close() error StartWorking() // AddReceivedMessageCall adds a new handler function for a received message type AddReceivedMessageCall(messageType consensus.MessageType, receivedMessageCall func(ctx context.Context, cnsDta *consensus.Message) bool) // AddReceivedHeaderHandler adds a new handler function for a received header AddReceivedHeaderHandler(handler func(data.HeaderHandler)) // RemoveAllReceivedMessagesCalls removes all the functions handlers RemoveAllReceivedMessagesCalls() // ProcessReceivedMessage method redirects the received message to the channel which should handle it ProcessReceivedMessage(message p2p.MessageP2P, fromConnectedPeer core.PeerID) error // Extend does an extension for the subround with subroundId Extend(subroundId int) // GetConsensusStateChangedChannel gets the channel for the consensusStateChanged GetConsensusStateChangedChannel() chan bool // ExecuteStoredMessages tries to execute all the messages received which are valid for execution ExecuteStoredMessages() // DisplayStatistics method displays statistics of worker at the end of the round DisplayStatistics() // ResetConsensusMessages resets at the start of each round all the previous consensus messages received ResetConsensusMessages() // ReceivedHeader method is a wired method through which worker will receive headers from network ReceivedHeader(headerHandler data.HeaderHandler, headerHash []byte) // IsInterfaceNil returns true if there is no value under the interface IsInterfaceNil() bool }
ConsensusWorker is the consensus worker handle for the exported functionality
type CoreComponentsHandler ¶ added in v1.2.0
type CoreComponentsHandler interface { ComponentHandler CoreComponentsHolder }
CoreComponentsHandler defines the core components handler actions
type CoreComponentsHolder ¶ added in v1.2.0
type CoreComponentsHolder interface { InternalMarshalizer() marshal.Marshalizer SetInternalMarshalizer(marshalizer marshal.Marshalizer) error TxMarshalizer() marshal.Marshalizer VmMarshalizer() marshal.Marshalizer Hasher() hashing.Hasher TxSignHasher() hashing.Hasher Uint64ByteSliceConverter() typeConverters.Uint64ByteSliceConverter AddressPubKeyConverter() core.PubkeyConverter ValidatorPubKeyConverter() core.PubkeyConverter PathHandler() storage.PathManagerHandler Watchdog() core.WatchdogTimer AlarmScheduler() core.TimersScheduler SyncTimer() ntp.SyncTimer RoundHandler() consensus.RoundHandler EconomicsData() process.EconomicsDataHandler APIEconomicsData() process.EconomicsDataHandler RatingsData() process.RatingsInfoHandler Rater() sharding.PeerAccountListAndRatingHandler GenesisNodesSetup() sharding.GenesisNodesSetupHandler NodesShuffler() nodesCoordinator.NodesShuffler EpochNotifier() process.EpochNotifier EnableRoundsHandler() process.EnableRoundsHandler EpochStartNotifierWithConfirm() EpochStartNotifierWithConfirm ChanStopNodeProcess() chan endProcess.ArgEndProcess GenesisTime() time.Time ChainID() string MinTransactionVersion() uint32 TxVersionChecker() process.TxVersionCheckerHandler EncodedAddressLen() uint32 NodeTypeProvider() core.NodeTypeProviderHandler ArwenChangeLocker() common.Locker ProcessStatusHandler() common.ProcessStatusHandler HardforkTriggerPubKey() []byte EnableEpochsHandler() common.EnableEpochsHandler IsInterfaceNil() bool }
CoreComponentsHolder holds the core components
type CryptoComponentsHandler ¶ added in v1.2.0
type CryptoComponentsHandler interface { ComponentHandler CryptoComponentsHolder }
CryptoComponentsHandler defines the crypto components handler actions
type CryptoComponentsHolder ¶ added in v1.2.0
type CryptoComponentsHolder interface { CryptoParamsHolder TxSingleSigner() crypto.SingleSigner BlockSigner() crypto.SingleSigner SetMultiSignerContainer(container cryptoCommon.MultiSignerContainer) error MultiSignerContainer() cryptoCommon.MultiSignerContainer GetMultiSigner(epoch uint32) (crypto.MultiSigner, error) PeerSignatureHandler() crypto.PeerSignatureHandler BlockSignKeyGen() crypto.KeyGenerator TxSignKeyGen() crypto.KeyGenerator MessageSignVerifier() vm.MessageSignVerifier Clone() interface{} IsInterfaceNil() bool }
CryptoComponentsHolder holds the crypto components
type CryptoParamsHolder ¶ added in v1.2.0
type CryptoParamsHolder interface { PublicKey() crypto.PublicKey PrivateKey() crypto.PrivateKey PublicKeyString() string PublicKeyBytes() []byte PrivateKeyBytes() []byte }
CryptoParamsHolder permits access to crypto parameters such as the private and public keys
type DataComponentsHandler ¶ added in v1.2.0
type DataComponentsHandler interface { ComponentHandler DataComponentsHolder }
DataComponentsHandler defines the data components handler actions
type DataComponentsHolder ¶ added in v1.2.0
type DataComponentsHolder interface { Blockchain() data.ChainHandler SetBlockchain(chain data.ChainHandler) StorageService() dataRetriever.StorageService Datapool() dataRetriever.PoolsHolder MiniBlocksProvider() MiniBlockProvider Clone() interface{} IsInterfaceNil() bool }
DataComponentsHolder holds the data components
type EconomicsHandler ¶ added in v1.1.15
type EconomicsHandler interface { LeaderPercentage() float64 ProtocolSustainabilityPercentage() float64 ProtocolSustainabilityAddress() string MinInflationRate() float64 MaxInflationRate(year uint32) float64 DeveloperPercentage() float64 GenesisTotalSupply() *big.Int MaxGasLimitPerBlock(shardID uint32) uint64 ComputeGasLimit(tx data.TransactionWithFeeHandler) uint64 ComputeMoveBalanceFee(tx data.TransactionWithFeeHandler) *big.Int CheckValidityTxValues(tx data.TransactionWithFeeHandler) error MinGasPrice() uint64 MinGasLimit() uint64 GasPerDataByte() uint64 GasPriceModifier() float64 ComputeFeeForProcessing(tx data.TransactionWithFeeHandler, gasToUse uint64) *big.Int IsInterfaceNil() bool }
EconomicsHandler provides some economics related computation and read access to economics data
type EpochStartBootstrapper ¶ added in v1.2.0
type EpochStartBootstrapper interface { Bootstrap() (bootstrap.Parameters, error) IsInterfaceNil() bool Close() error }
EpochStartBootstrapper defines the epoch start bootstrap functionality
type EpochStartNotifier ¶
type EpochStartNotifier interface { RegisterHandler(handler epochStart.ActionHandler) UnregisterHandler(handler epochStart.ActionHandler) NotifyAll(hdr data.HeaderHandler) NotifyAllPrepare(metaHdr data.HeaderHandler, body data.BodyHandler) NotifyEpochChangeConfirmed(epoch uint32) IsInterfaceNil() bool }
EpochStartNotifier defines which actions should be done for handling new epoch's events
type EpochStartNotifierWithConfirm ¶ added in v1.2.0
type EpochStartNotifierWithConfirm interface { EpochStartNotifier RegisterForEpochChangeConfirmed(handler func(epoch uint32)) }
EpochStartNotifierWithConfirm defines which actions should be done for handling new epoch's events and confirmation
type HardforkTrigger ¶ added in v1.2.0
type HardforkTrigger interface { SetExportFactoryHandler(exportFactoryHandler update.ExportFactoryHandler) error TriggerReceived(payload []byte, data []byte, pkBytes []byte) (bool, error) RecordedTriggerMessage() ([]byte, bool) Trigger(epoch uint32, withEarlyEndOfEpoch bool) error CreateData() []byte AddCloser(closer update.Closer) error NotifyTriggerReceivedV2() <-chan struct{} IsSelfTrigger() bool IsInterfaceNil() bool }
HardforkTrigger defines the hard-fork trigger functionality
type HeartbeatV2ComponentsHandler ¶ added in v1.3.37
type HeartbeatV2ComponentsHandler interface { ComponentHandler HeartbeatV2ComponentsHolder }
HeartbeatV2ComponentsHandler defines the heartbeatV2 components handler actions
type HeartbeatV2ComponentsHolder ¶ added in v1.3.37
type HeartbeatV2ComponentsHolder interface { Monitor() HeartbeatV2Monitor IsInterfaceNil() bool }
HeartbeatV2ComponentsHolder holds the heartbeatV2 components
type HeartbeatV2Monitor ¶ added in v1.3.37
type HeartbeatV2Monitor interface { GetHeartbeats() []heartbeatData.PubKeyHeartbeat IsInterfaceNil() bool }
HeartbeatV2Monitor monitors the cache of heartbeatV2 messages
type KeyLoaderHandler ¶ added in v1.2.0
KeyLoaderHandler defines the loading of a key from a pem file and index
type LogsFacade ¶ added in v1.3.37
type LogsFacade interface { GetLog(logKey []byte, epoch uint32) (*transaction.ApiLogs, error) IncludeLogsInTransactions(txs []*transaction.ApiTransactionResult, logsKeys [][]byte, epoch uint32) error IsInterfaceNil() bool }
LogsFacade defines the interface of a logs facade
type MiniBlockProvider ¶ added in v1.2.0
type MiniBlockProvider interface { GetMiniBlocks(hashes [][]byte) ([]*block.MiniblockAndHash, [][]byte) GetMiniBlocksFromPool(hashes [][]byte) ([]*block.MiniblockAndHash, [][]byte) GetMiniBlocksFromStorer(hashes [][]byte) ([]*block.MiniblockAndHash, [][]byte) IsInterfaceNil() bool }
MiniBlockProvider defines what a miniblock data provider should do
type NetworkComponentsHandler ¶ added in v1.2.0
type NetworkComponentsHandler interface { ComponentHandler NetworkComponentsHolder }
NetworkComponentsHandler defines the network components handler actions
type NetworkComponentsHolder ¶ added in v1.2.0
type NetworkComponentsHolder interface { NetworkMessenger() p2p.Messenger InputAntiFloodHandler() P2PAntifloodHandler OutputAntiFloodHandler() P2PAntifloodHandler PubKeyCacher() process.TimeCacher PeerBlackListHandler() process.PeerBlackListCacher PeerHonestyHandler() PeerHonestyHandler PreferredPeersHolderHandler() PreferredPeersHolderHandler PeersRatingHandler() p2p.PeersRatingHandler IsInterfaceNil() bool }
NetworkComponentsHolder holds the network components
type NetworkStatisticsProvider ¶ added in v1.4.0
type NetworkStatisticsProvider interface { BpsSent() uint64 BpsRecv() uint64 BpsSentPeak() uint64 BpsRecvPeak() uint64 PercentSent() uint64 PercentRecv() uint64 TotalBytesSentInCurrentEpoch() uint64 TotalBytesReceivedInCurrentEpoch() uint64 TotalSentInCurrentEpoch() string TotalReceivedInCurrentEpoch() string EpochConfirmed(epoch uint32, timestamp uint64) Close() error IsInterfaceNil() bool }
NetworkStatisticsProvider is able to provide network statistics
type P2PAntifloodHandler ¶
type P2PAntifloodHandler interface { CanProcessMessage(message p2p.MessageP2P, fromConnectedPeer core.PeerID) error CanProcessMessagesOnTopic(peer core.PeerID, topic string, numMessages uint32, totalSize uint64, sequence []byte) error ResetForTopic(topic string) SetMaxMessagesForTopic(topic string, maxNum uint32) SetDebugger(debugger process.AntifloodDebugger) error SetPeerValidatorMapper(validatorMapper process.PeerValidatorMapper) error SetTopicsForAll(topics ...string) ApplyConsensusSize(size int) BlacklistPeer(peer core.PeerID, reason string, duration time.Duration) IsOriginatorEligibleForTopic(pid core.PeerID, topic string) error Close() error IsInterfaceNil() bool }
P2PAntifloodHandler defines the behavior of a component able to signal that the system is too busy (or flooded) processing p2p messages
type PeerHonestyHandler ¶ added in v1.2.0
type PeerHonestyHandler interface { ChangeScore(pk string, topic string, units int) IsInterfaceNil() bool Close() error }
PeerHonestyHandler defines the behaivour of a component able to handle/monitor the peer honesty of nodes which are participating in consensus
type PersistentStatusHandler ¶ added in v1.4.0
type PersistentStatusHandler interface { core.AppStatusHandler SetStorage(store storage.Storer) error }
PersistentStatusHandler defines a persistent status handler
type PreferredPeersHolderHandler ¶ added in v1.2.3
type PreferredPeersHolderHandler interface { PutConnectionAddress(peerID core.PeerID, address string) PutShardID(peerID core.PeerID, shardID uint32) Get() map[uint32][]core.PeerID Contains(peerID core.PeerID) bool Remove(peerID core.PeerID) Clear() IsInterfaceNil() bool }
PreferredPeersHolderHandler defines the behavior of a component able to handle preferred peers operations
type ProcessComponentsHandler ¶ added in v1.2.0
type ProcessComponentsHandler interface { ComponentHandler ProcessComponentsHolder }
ProcessComponentsHandler defines the process components handler actions
type ProcessComponentsHolder ¶ added in v1.2.0
type ProcessComponentsHolder interface { NodesCoordinator() nodesCoordinator.NodesCoordinator ShardCoordinator() sharding.Coordinator InterceptorsContainer() process.InterceptorsContainer ResolversFinder() dataRetriever.ResolversFinder RoundHandler() consensus.RoundHandler EpochStartTrigger() epochStart.TriggerHandler EpochStartNotifier() EpochStartNotifier ForkDetector() process.ForkDetector BlockProcessor() process.BlockProcessor BlackListHandler() process.TimeCacher BootStorer() process.BootStorer HeaderSigVerifier() process.InterceptedHeaderSigVerifier HeaderIntegrityVerifier() process.HeaderIntegrityVerifier ValidatorsStatistics() process.ValidatorStatisticsProcessor ValidatorsProvider() process.ValidatorsProvider BlockTracker() process.BlockTracker PendingMiniBlocksHandler() process.PendingMiniBlocksHandler RequestHandler() process.RequestHandler TxLogsProcessor() process.TransactionLogProcessorDatabase HeaderConstructionValidator() process.HeaderConstructionValidator PeerShardMapper() process.NetworkShardingCollector FallbackHeaderValidator() process.FallbackHeaderValidator TransactionSimulatorProcessor() TransactionSimulatorProcessor WhiteListHandler() process.WhiteListHandler WhiteListerVerifiedTxs() process.WhiteListHandler HistoryRepository() dblookupext.HistoryRepository ImportStartHandler() update.ImportStartHandler RequestedItemsHandler() dataRetriever.RequestedItemsHandler NodeRedundancyHandler() consensus.NodeRedundancyHandler CurrentEpochProvider() process.CurrentNetworkEpochProviderHandler ScheduledTxsExecutionHandler() process.ScheduledTxsExecutionHandler TxsSenderHandler() process.TxsSenderHandler HardforkTrigger() HardforkTrigger ProcessedMiniBlocksTracker() process.ProcessedMiniBlocksTracker ESDTDataStorageHandlerForAPI() vmcommon.ESDTNFTStorageHandler AccountsParser() genesis.AccountsParser ReceiptsRepository() ReceiptsRepository IsInterfaceNil() bool }
ProcessComponentsHolder holds the process components
type ProcessDebuggerSetter ¶ added in v1.4.0
ProcessDebuggerSetter allows setting a debugger on the process component
type ReceiptsRepository ¶ added in v1.3.37
type ReceiptsRepository interface { SaveReceipts(holder common.ReceiptsHolder, header data.HeaderHandler, headerHash []byte) error LoadReceipts(header data.HeaderHandler, headerHash []byte) (common.ReceiptsHolder, error) IsInterfaceNil() bool }
ReceiptsRepository defines the interface of a receiptsRepository
type ResourceMonitor ¶ added in v1.4.0
ResourceMonitor defines the function implemented by a struct that can monitor resources
type ShuffleOutCloser ¶ added in v1.2.0
type ShuffleOutCloser interface { EndOfProcessingHandler(event endProcess.ArgEndProcess) error IsInterfaceNil() bool Close() error }
ShuffleOutCloser defines the action for end of processing
type StateComponentsHandler ¶ added in v1.2.0
type StateComponentsHandler interface { ComponentHandler StateComponentsHolder }
StateComponentsHandler defines the state components handler actions
type StateComponentsHolder ¶ added in v1.2.0
type StateComponentsHolder interface { PeerAccounts() state.AccountsAdapter AccountsAdapter() state.AccountsAdapter AccountsAdapterAPI() state.AccountsAdapter AccountsRepository() state.AccountsRepository TriesContainer() common.TriesHolder TrieStorageManagers() map[string]common.StorageManager IsInterfaceNil() bool }
StateComponentsHolder holds the
type StatusComponentsHandler ¶ added in v1.2.0
type StatusComponentsHandler interface { ComponentHandler StatusComponentsHolder // SetForkDetector should be set before starting Polling for updates SetForkDetector(forkDetector process.ForkDetector) StartPolling() error }
StatusComponentsHandler defines the status components handler actions
type StatusComponentsHolder ¶ added in v1.2.0
type StatusComponentsHolder interface { OutportHandler() outport.OutportHandler SoftwareVersionChecker() statistics.SoftwareVersionChecker IsInterfaceNil() bool }
StatusComponentsHolder holds the status components
type StatusCoreComponentsHandler ¶ added in v1.4.0
type StatusCoreComponentsHandler interface { ComponentHandler StatusCoreComponentsHolder }
StatusCoreComponentsHandler defines the status core components handler actions
type StatusCoreComponentsHolder ¶ added in v1.4.0
type StatusCoreComponentsHolder interface { ResourceMonitor() ResourceMonitor NetworkStatistics() NetworkStatisticsProvider TrieSyncStatistics() TrieSyncStatisticsProvider AppStatusHandler() core.AppStatusHandler StatusMetrics() external.StatusMetricsHandler PersistentStatusHandler() PersistentStatusHandler IsInterfaceNil() bool }
StatusCoreComponentsHolder holds the status core components
type TransactionSimulatorProcessor ¶ added in v1.2.0
type TransactionSimulatorProcessor interface { ProcessTx(tx *transaction.Transaction) (*txSimData.SimulationResults, error) IsInterfaceNil() bool }
TransactionSimulatorProcessor defines the actions which a transaction simulator processor has to implement
type TrieSyncStatisticsProvider ¶ added in v1.4.0
type TrieSyncStatisticsProvider interface { data.SyncStatisticsHandler AddNumBytesReceived(bytes uint64) NumBytesReceived() uint64 NumTries() int AddProcessingTime(duration time.Duration) IncrementIteration() ProcessingTime() time.Duration NumIterations() int }
TrieSyncStatisticsProvider is able to provide trie sync statistics