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 )