Documentation ¶
Index ¶
- Variables
- type BigIntCaster
- type BodyHandler
- type ChainHandler
- type ConsensusRewardData
- type DBRemoveCacher
- type DBWriteCacher
- type EventHandler
- type GoRoutineThrottler
- type HeaderHandler
- type LogHandler
- type MiniBlockInfo
- type ModifiedHashes
- type NumNodesDTO
- type ShardValidatorInfoHandler
- type SnapshotDbHandler
- type StorageManager
- type SyncStatisticsHandler
- 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 ErrInvalidUserNameLength = errors.New("invalid user name length")
ErrInvalidUserNameLength signals that provided user name length is invalid
var ErrInvalidValue = errors.New("invalid value")
ErrInvalidValue signals that an invalid value has been provided such as NaN to an integer field
var ErrLeafSizeTooBig = errors.New("leaf size too big")
ErrLeafSizeTooBig signals that the value size of the leaf is too big
var ErrMiniBlockEmpty = errors.New("mini block is empty")
ErrMiniBlockEmpty signals that mini block is empty
var ErrNegativeValue = errors.New("negative value")
ErrNegativeValue signals that a negative value has been detected and it is not allowed
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 ErrNilRcvAddr = errors.New("nil receiver address")
ErrNilRcvAddr signals that an operation has been attempted to or with a nil receiver address
var ErrNilShardCoordinator = errors.New("nil shard coordinator")
ErrNilShardCoordinator signals that nil shard coordinator was provided
var ErrNilSignature = errors.New("nil signature")
ErrNilSignature signals that a operation has been attempted with a nil signature
var ErrNilSndAddr = errors.New("nil sender address")
ErrNilSndAddr signals that an operation has been attempted to or with a nil sender address
var ErrNilThrottler = errors.New("nil throttler")
ErrNilThrottler signals that nil throttler has been provided
var ErrNilTxHash = errors.New("nil transaction hash")
ErrNilTxHash signals that an operation has been attempted with a nil hash
var ErrNilValue = errors.New("nil value")
ErrNilValue signals the value is nil
var ErrTimeIsOut = errors.New("time is out")
ErrTimeIsOut signals that time is out
Functions ¶
This section is empty.
Types ¶
type BigIntCaster ¶
type BigIntCaster struct{}
BigIntCaster handles big int operations
func (*BigIntCaster) Equal ¶
func (c *BigIntCaster) Equal(a, b *big.Int) bool
Equal returns true if the provided big ints are equal
func (*BigIntCaster) NewPopulated ¶
func (c *BigIntCaster) NewPopulated() *big.Int
NewPopulated returns a new instance of a big int, pre-populated with a zero
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 GetOrderedCrossMiniblocksWithDst(destId uint32) []*MiniBlockInfo GetMiniBlockHeadersHashes() [][]byte 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 MiniBlockInfo ¶
MiniBlockInfo holds information about a cross miniblock referenced in a received block
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 NumNodesDTO ¶
NumNodesDTO represents the DTO structure that will hold the number of nodes split by category and other trie structure relevant data such as maximum number of trie levels including the roothash node and all leaves
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 EnterPruningBufferingMode() ExitPruningBufferingMode() GetSnapshotDbBatchDelay() int IsInterfaceNil() bool }
StorageManager manages all trie storage operations
type SyncStatisticsHandler ¶
type SyncStatisticsHandler interface { Reset() AddNumReceived(value int) SetNumMissing(rootHash []byte, value int) NumReceived() int NumMissing() int IsInterfaceNil() bool }
SyncStatisticsHandler defines the methods for a component able to store the sync statistics for a trie
type TransactionHandler ¶
type TransactionHandler interface { IsInterfaceNil() bool GetValue() *big.Int GetNonce() uint64 GetData() []byte GetRcvAddr() []byte GetRcvUserName() []byte GetSndAddr() []byte GetGasLimit() uint64 GetGasPrice() uint64 SetValue(*big.Int) SetData([]byte) SetRcvAddr([]byte) SetSndAddr([]byte) Size() int CheckIntegrity() error }
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 RootHash() ([]byte, error) Commit() error Recreate(root []byte) (Trie, error) String() string ResetOldHashes() [][]byte AppendToOldHashes([][]byte) GetDirtyHashes() (ModifiedHashes, error) SetNewHashes(ModifiedHashes) GetSerializedNodes([]byte, uint64) ([][]byte, uint64, error) GetSerializedNode([]byte) ([]byte, error) GetNumNodes() NumNodesDTO GetAllLeavesOnChannel(rootHash []byte, ctx context.Context) (chan core.KeyValueHolder, error) GetAllHashes() ([][]byte, error) IsInterfaceNil() bool ClosePersister() error GetProof(key []byte) ([][]byte, error) VerifyProof(key []byte, proof [][]byte) (bool, error) GetStorageManager() StorageManager }
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 )