Documentation ¶
Index ¶
- Variables
- type BigIntCaster
- type BodyHandler
- type ChainHandler
- type ConsensusRewardData
- type DBRemoveCacher
- type DBWriteCacher
- type EventHandler
- type GoRoutineThrottler
- type HeaderHandler
- type LogHandler
- type ModifiedHashes
- type ShardValidatorInfoHandler
- type SnapshotDbHandler
- type StorageManager
- type TransactionHandler
- type Trie
- type TrieFactory
- type TriePruningIdentifier
- type TrieSyncer
- type ValidatorInfoHandler
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidCacheSize = errors.New("cache size is invalid")
ErrInvalidCacheSize is raised when the given size for the cache is invalid
var ErrInvalidHeaderType = errors.New("invalid header type")
ErrInvalidHeaderType signals an invalid header pointer was provided
var ErrInvalidValue = errors.New("invalid value")
ErrInvalidValue signals that an invalid value has been provided such as NaN to an integer field
var ErrMiniBlockEmpty = errors.New("mini block is empty")
ErrMiniBlockEmpty signals that mini block is empty
var ErrNilBlockBody = errors.New("nil block body")
ErrNilBlockBody signals that block body is nil
var ErrNilCacher = errors.New("nil cacher")
ErrNilCacher signals that a nil cache has been provided
var ErrNilDatabase = errors.New("no database provided")
ErrNilDatabase is raised when a database operation is called, but no database is provided
var ErrNilMarshalizer = errors.New("no marshalizer provided")
ErrNilMarshalizer is raised when the NewTrie() function is called, but a marshalizer isn't provided
var ErrNilShardCoordinator = errors.New("nil shard coordinator")
ErrNilShardCoordinator signals that nil shard coordinator was provided
var ErrNilThrottler = errors.New("nil throttler")
ErrNilThrottler signals that nil throttler has been provided
var ErrTimeIsOut = errors.New("time is out")
ErrTimeIsOut signals that time is out
Functions ¶
This section is empty.
Types ¶
type BigIntCaster ¶
type BigIntCaster struct{}
func (*BigIntCaster) NewPopulated ¶
func (c *BigIntCaster) NewPopulated() *big.Int
type BodyHandler ¶
type BodyHandler interface { Clone() BodyHandler // IntegrityAndValidity checks the integrity and validity of the block IntegrityAndValidity() error // IsInterfaceNil returns true if there is no value under the interface IsInterfaceNil() bool }
BodyHandler interface for a block body
type ChainHandler ¶
type ChainHandler interface { GetGenesisHeader() HeaderHandler SetGenesisHeader(gb HeaderHandler) error GetGenesisHeaderHash() []byte SetGenesisHeaderHash(hash []byte) GetCurrentBlockHeader() HeaderHandler SetCurrentBlockHeader(bh HeaderHandler) error GetCurrentBlockHeaderHash() []byte SetCurrentBlockHeaderHash(hash []byte) IsInterfaceNil() bool CreateNewHeader() HeaderHandler }
ChainHandler is the interface defining the functionality a blockchain should implement
type ConsensusRewardData ¶
ConsensusRewardData holds the required data for rewarding validators in a specific round and epoch
type DBRemoveCacher ¶
type DBRemoveCacher interface { Put([]byte, ModifiedHashes) error Evict([]byte) (ModifiedHashes, error) ShouldKeepHash(hash string, identifier TriePruningIdentifier) (bool, error) IsInterfaceNil() bool }
DBRemoveCacher is used to cache keys that will be deleted from the database
type DBWriteCacher ¶
type DBWriteCacher interface { Put(key, val []byte) error Get(key []byte) ([]byte, error) Remove(key []byte) error Close() error IsInterfaceNil() bool }
DBWriteCacher is used to cache changes made to the trie, and only write to the database when it's needed
type EventHandler ¶
type EventHandler interface { // GetAddress returns the address of the contract that generated this event // - in sc calling another sc situation this will differ from the // LogHandler's GetAddress, whereas in the single sc situation // they will be the same GetAddress() []byte // GetIdentifier returns identifier of the event, that together with the ABI can // be used to understand the type of the event by other applications GetIdentifier() []byte // GetTopics returns the data that can be indexed so that it would be searchable // by other applications GetTopics() [][]byte // GetData returns the rest of the event data, which will not be indexed, so storing // information here should be cheaper GetData() []byte IsInterfaceNil() bool }
EventHandler defines the type for an event resulted from a smart contract call contained in a log
type GoRoutineThrottler ¶
type GoRoutineThrottler interface { CanProcess() bool StartProcessing() EndProcessing() IsInterfaceNil() bool }
GoRoutineThrottler can monitor the number of the currently running go routines
type HeaderHandler ¶
type HeaderHandler interface { GetShardID() uint32 GetNonce() uint64 GetEpoch() uint32 GetRound() uint64 GetRootHash() []byte GetValidatorStatsRootHash() []byte GetPrevHash() []byte GetPrevRandSeed() []byte GetRandSeed() []byte GetPubKeysBitmap() []byte GetSignature() []byte GetLeaderSignature() []byte GetChainID() []byte GetSoftwareVersion() []byte GetTimeStamp() uint64 GetTxCount() uint32 GetReceiptsHash() []byte GetAccumulatedFees() *big.Int GetDeveloperFees() *big.Int GetEpochStartMetaHash() []byte GetReserved() []byte SetAccumulatedFees(value *big.Int) SetDeveloperFees(value *big.Int) SetShardID(shId uint32) SetNonce(n uint64) SetEpoch(e uint32) SetRound(r uint64) SetTimeStamp(ts uint64) SetRootHash(rHash []byte) SetValidatorStatsRootHash(rHash []byte) SetPrevHash(pvHash []byte) SetPrevRandSeed(pvRandSeed []byte) SetRandSeed(randSeed []byte) SetPubKeysBitmap(pkbm []byte) SetSignature(sg []byte) SetLeaderSignature(sg []byte) SetChainID(chainID []byte) SetSoftwareVersion(version []byte) SetTxCount(txCount uint32) IsStartOfEpochBlock() bool GetMiniBlockHeadersWithDst(destId uint32) map[string]uint32 IsInterfaceNil() bool Clone() HeaderHandler }
HeaderHandler defines getters and setters for header data holder
func TrimHeaderHandlerSlice ¶
func TrimHeaderHandlerSlice(in []HeaderHandler) []HeaderHandler
TrimHeaderHandlerSlice creates a copy of the provided slice without the excess capacity
type LogHandler ¶
type LogHandler interface { // GetAddress returns the address of the sc that was originally called by the user GetAddress() []byte // GetLogEvents returns the events from a transaction log entry GetLogEvents() []EventHandler IsInterfaceNil() bool }
LogHandler defines the type for a log resulted from executing a transaction or smart contract call
type ModifiedHashes ¶
type ModifiedHashes map[string]struct{}
ModifiedHashes is used to memorize all old hashes and new hashes from when a trie is committed
type ShardValidatorInfoHandler ¶
type ShardValidatorInfoHandler interface { GetPublicKey() []byte GetTempRating() uint32 String() string IsInterfaceNil() bool }
ShardValidatorInfoHandler is used to store multiple validatorInfo properties required in shards
type SnapshotDbHandler ¶
type SnapshotDbHandler interface { DBWriteCacher IsInUse() bool DecreaseNumReferences() IncreaseNumReferences() MarkForRemoval() SetPath(string) }
SnapshotDbHandler is used to keep track of how many references a snapshot db has
type StorageManager ¶
type StorageManager interface { Database() DBWriteCacher TakeSnapshot([]byte) SetCheckpoint([]byte) Prune([]byte, TriePruningIdentifier) CancelPrune([]byte, TriePruningIdentifier) MarkForEviction([]byte, ModifiedHashes) error GetSnapshotThatContainsHash(rootHash []byte) SnapshotDbHandler IsPruningEnabled() bool EnterSnapshotMode() ExitSnapshotMode() GetSnapshotDbBatchDelay() int IsInterfaceNil() bool }
StorageManager manages all trie storage operations
type TransactionHandler ¶
type TransactionHandler interface { IsInterfaceNil() bool GetValue() *big.Int GetNonce() uint64 GetData() []byte GetRcvAddr() []byte GetSndAddr() []byte GetGasLimit() uint64 GetGasPrice() uint64 SetValue(*big.Int) SetData([]byte) SetRcvAddr([]byte) SetSndAddr([]byte) Size() int }
TransactionHandler defines the type of executable transaction
type Trie ¶
type Trie interface { Get(key []byte) ([]byte, error) Update(key, value []byte) error Delete(key []byte) error Root() ([]byte, error) Commit() error Recreate(root []byte) (Trie, error) String() string CancelPrune(rootHash []byte, identifier TriePruningIdentifier) Prune(rootHash []byte, identifier TriePruningIdentifier) TakeSnapshot(rootHash []byte) SetCheckpoint(rootHash []byte) ResetOldHashes() [][]byte AppendToOldHashes([][]byte) GetDirtyHashes() (ModifiedHashes, error) SetNewHashes(ModifiedHashes) Database() DBWriteCacher GetSerializedNodes([]byte, uint64) ([][]byte, uint64, error) GetAllLeaves() (map[string][]byte, error) GetAllLeavesOnChannel() chan core.KeyValueHolder GetAllHashes() ([][]byte, error) IsPruningEnabled() bool EnterSnapshotMode() ExitSnapshotMode() GetSnapshotDbBatchDelay() int IsInterfaceNil() bool ClosePersister() error }
Trie is an interface for Merkle Trees implementations
type TrieFactory ¶
type TrieFactory interface { Create(config.StorageConfig, string, bool, uint) (StorageManager, Trie, error) IsInterfaceNil() bool }
TrieFactory creates new tries
type TriePruningIdentifier ¶
type TriePruningIdentifier byte
TriePruningIdentifier is the type for trie pruning identifiers
const ( // OldRoot is appended to the key when oldHashes are added to the evictionWaitingList OldRoot TriePruningIdentifier = 0 // NewRoot is appended to the key when newHashes are added to the evictionWaitingList NewRoot TriePruningIdentifier = 1 )