Documentation ¶
Index ¶
- Variables
- type BigIntCaster
- type BodyHandler
- type ChainHandler
- type ConsensusRewardData
- type EconomicsHandler
- type Encoder
- type EpochStartHandler
- type EpochStartShardDataHandler
- type EventHandler
- type GoRoutineThrottler
- type GuardedTransactionHandler
- type Hasher
- type HeaderHandler
- type KeyValuePair
- type LogData
- type LogHandler
- type Marshaller
- type MetaHeaderHandler
- type MiniBlockHeaderHandler
- type MiniBlockInfo
- type PeerChangeHandler
- type ShardDataHandler
- type ShardHeaderHandler
- type ShardValidatorInfoHandler
- type SyncStatisticsHandler
- type TransactionHandler
- type TransactionWithFeeHandler
- type TriggerRegistryHandler
- type TxWithExecutionOrderHandler
- type UserAccountHandler
- 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 ErrInvalidTypeAssertion = errors.New("invalid type assertion")
ErrInvalidTypeAssertion signals an invalid type assertion
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 ErrNilEmptyBlockCreator = errors.New("nil empty block creator")
ErrNilEmptyBlockCreator is raised when attempting to work with a nil empty block creator
var ErrNilMarshalizer = errors.New("no marshalizer provided")
ErrNilMarshalizer is raised when the NewTrie() function is called, but a marshalizer isn't provided
var ErrNilPointerDereference = errors.New("nil pointer dereference")
ErrNilPointerDereference signals that a nil pointer dereference was detected and avoided
var ErrNilPointerReceiver = errors.New("nil pointer receiver")
ErrNilPointerReceiver signals that a nil pointer receiver was used
var ErrNilRcvAddr = errors.New("nil receiver address")
ErrNilRcvAddr signals that an operation has been attempted to or with a nil receiver address
var ErrNilReservedField = errors.New("reserved field is nil")
ErrNilReservedField signals that a nil reserved field was provided
var ErrNilScheduledRootHash = errors.New("scheduled root hash is nil")
ErrNilScheduledRootHash signals that a nil scheduled root hash was used
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 ErrScheduledRootHashNotSupported = errors.New("scheduled root hash is not supported")
ErrScheduledRootHashNotSupported signals that a scheduled root hash is not supported
var ErrTimeIsOut = errors.New("time is out")
ErrTimeIsOut signals that time is out
var ErrWrongTransactionsTypeSize = errors.New("wrong transactions type size")
ErrWrongTransactionsTypeSize signals that size of transactions type buffer from mini block reserved field is wrong
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 SetCurrentBlockHeaderAndRootHash(bh HeaderHandler, rootHash []byte) error GetCurrentBlockHeaderHash() []byte SetCurrentBlockHeaderHash(hash []byte) GetCurrentBlockRootHash() []byte SetFinalBlockInfo(nonce uint64, blockHash []byte, rootHash []byte) GetFinalBlockInfo() (nonce uint64, blockHash []byte, rootHash []byte) IsInterfaceNil() bool }
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 EconomicsHandler ¶
type EconomicsHandler interface { GetTotalSupply() *big.Int GetTotalToDistribute() *big.Int GetTotalNewlyMinted() *big.Int GetRewardsPerBlock() *big.Int GetRewardsForProtocolSustainability() *big.Int GetNodePrice() *big.Int GetPrevEpochStartRound() uint64 GetPrevEpochStartHash() []byte SetTotalSupply(totalSupply *big.Int) error SetTotalToDistribute(totalToDistribute *big.Int) error SetTotalNewlyMinted(totalNewlyMinted *big.Int) error SetRewardsPerBlock(rewardsPerBlock *big.Int) error SetRewardsForProtocolSustainability(rewardsForProtocolSustainability *big.Int) error SetNodePrice(nodePrice *big.Int) error SetPrevEpochStartRound(prevEpochStartRound uint64) error SetPrevEpochStartHash(prevEpochStartHash []byte) error }
EconomicsHandler defines setters and getters for Economics
type EpochStartHandler ¶
type EpochStartHandler interface { GetLastFinalizedHeaderHandlers() []EpochStartShardDataHandler GetEconomicsHandler() EconomicsHandler SetLastFinalizedHeaders(epochStartShardDataHandlers []EpochStartShardDataHandler) error SetEconomics(economicsHandler EconomicsHandler) error }
EpochStartHandler defines setters and getters for EpochStart
type EpochStartShardDataHandler ¶
type EpochStartShardDataHandler interface { GetShardID() uint32 GetEpoch() uint32 GetRound() uint64 GetNonce() uint64 GetHeaderHash() []byte GetRootHash() []byte GetFirstPendingMetaBlock() []byte GetLastFinishedMetaBlock() []byte GetPendingMiniBlockHeaderHandlers() []MiniBlockHeaderHandler SetShardID(uint32) error SetEpoch(uint32) error SetRound(uint64) error SetNonce(uint64) error SetHeaderHash([]byte) error SetRootHash([]byte) error SetFirstPendingMetaBlock([]byte) error SetLastFinishedMetaBlock([]byte) error SetPendingMiniBlockHeaders([]MiniBlockHeaderHandler) error }
EpochStartShardDataHandler defines setters and getters for EpochStartShardData
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 GuardedTransactionHandler ¶
type GuardedTransactionHandler interface { GetGuardianAddr() []byte GetGuardianSignature() []byte GetSignature() []byte GetDataForSigning(encoder Encoder, marshaller Marshaller, hasher Hasher) ([]byte, error) }
GuardedTransactionHandler defines functionality for the guarded transactions
type HeaderHandler ¶
type HeaderHandler interface { GetShardID() uint32 GetNonce() uint64 GetEpoch() uint32 GetRound() uint64 GetRootHash() []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 GetReserved() []byte GetMiniBlockHeadersWithDst(destId uint32) map[string]uint32 GetOrderedCrossMiniblocksWithDst(destId uint32) []*MiniBlockInfo GetMiniBlockHeadersHashes() [][]byte GetMiniBlockHeaderHandlers() []MiniBlockHeaderHandler HasScheduledSupport() bool GetAdditionalData() headerVersionData.HeaderAdditionalData HasScheduledMiniBlocks() bool SetAccumulatedFees(value *big.Int) error SetDeveloperFees(value *big.Int) error SetShardID(shId uint32) error SetNonce(n uint64) error SetEpoch(e uint32) error SetRound(r uint64) error SetTimeStamp(ts uint64) error SetRootHash(rHash []byte) error SetPrevHash(pvHash []byte) error SetPrevRandSeed(pvRandSeed []byte) error SetRandSeed(randSeed []byte) error SetPubKeysBitmap(pkbm []byte) error SetSignature(sg []byte) error SetLeaderSignature(sg []byte) error SetChainID(chainID []byte) error SetSoftwareVersion(version []byte) error SetTxCount(txCount uint32) error SetMiniBlockHeaderHandlers(mbHeaderHandlers []MiniBlockHeaderHandler) error SetReceiptsHash(hash []byte) error SetScheduledRootHash(rootHash []byte) error ValidateHeaderVersion() error SetAdditionalData(headerVersionData headerVersionData.HeaderAdditionalData) error IsStartOfEpochBlock() bool ShallowClone() HeaderHandler CheckFieldsForNil() error IsInterfaceNil() bool }
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 KeyValuePair ¶
KeyValuePair is a tuple of (key, value)
type LogData ¶
type LogData struct { LogHandler TxHash string }
LogData holds the data needed for indexing logs and events
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 Marshaller ¶
Marshaller is able to encode an object to its byte slice representation
type MetaHeaderHandler ¶
type MetaHeaderHandler interface { HeaderHandler GetValidatorStatsRootHash() []byte GetEpochStartHandler() EpochStartHandler GetDevFeesInEpoch() *big.Int GetShardInfoHandlers() []ShardDataHandler SetValidatorStatsRootHash(rHash []byte) error SetDevFeesInEpoch(value *big.Int) error SetShardInfoHandlers(shardInfo []ShardDataHandler) error SetAccumulatedFeesInEpoch(value *big.Int) error }
MetaHeaderHandler defines getters and setters for the meta block header
type MiniBlockHeaderHandler ¶
type MiniBlockHeaderHandler interface { GetHash() []byte GetSenderShardID() uint32 GetReceiverShardID() uint32 GetTxCount() uint32 GetTypeInt32() int32 GetReserved() []byte GetProcessingType() int32 GetConstructionState() int32 IsFinal() bool GetIndexOfFirstTxProcessed() int32 GetIndexOfLastTxProcessed() int32 SetHash(hash []byte) error SetSenderShardID(shardID uint32) error SetReceiverShardID(shardID uint32) error SetTxCount(count uint32) error SetTypeInt32(t int32) error SetReserved(reserved []byte) error SetProcessingType(procType int32) error SetConstructionState(state int32) error SetIndexOfLastTxProcessed(indexOfLastTxProcessed int32) error SetIndexOfFirstTxProcessed(indexOfFirstTxProcessed int32) error ShallowClone() MiniBlockHeaderHandler }
MiniBlockHeaderHandler defines setters and getters for miniBlock headers
type MiniBlockInfo ¶
MiniBlockInfo holds information about a cross miniblock referenced in a received block
type PeerChangeHandler ¶
type PeerChangeHandler interface { GetPubKey() []byte GetShardIdDest() uint32 SetPubKey(pubKey []byte) error SetShardIdDest(shardID uint32) error }
PeerChangeHandler defines setters and getters for PeerChange
type ShardDataHandler ¶
type ShardDataHandler interface { GetHeaderHash() []byte GetShardMiniBlockHeaderHandlers() []MiniBlockHeaderHandler GetPrevRandSeed() []byte GetPubKeysBitmap() []byte GetSignature() []byte GetRound() uint64 GetPrevHash() []byte GetNonce() uint64 GetAccumulatedFees() *big.Int GetDeveloperFees() *big.Int GetNumPendingMiniBlocks() uint32 GetLastIncludedMetaNonce() uint64 GetShardID() uint32 GetTxCount() uint32 SetHeaderHash(hash []byte) error SetShardMiniBlockHeaderHandlers(mbHeaderHandlers []MiniBlockHeaderHandler) error SetPrevRandSeed(prevRandSeed []byte) error SetPubKeysBitmap(pubKeysBitmap []byte) error SetSignature(signature []byte) error SetRound(round uint64) error SetPrevHash(prevHash []byte) error SetNonce(nonce uint64) error SetAccumulatedFees(fees *big.Int) error SetDeveloperFees(fees *big.Int) error SetNumPendingMiniBlocks(num uint32) error SetLastIncludedMetaNonce(nonce uint64) error SetShardID(shardID uint32) error SetTxCount(txCount uint32) error ShallowClone() ShardDataHandler }
ShardDataHandler defines setters and getters for ShardDataHandler
type ShardHeaderHandler ¶
type ShardHeaderHandler interface { HeaderHandler GetMetaBlockHashes() [][]byte GetEpochStartMetaHash() []byte SetEpochStartMetaHash(hash []byte) error GetBlockBodyTypeInt32() int32 SetMetaBlockHashes(hashes [][]byte) error MapMiniBlockHashesToShards() map[string]uint32 SetBlockBodyTypeInt32(blockBodyType int32) error }
ShardHeaderHandler defines getters and setters for the shard block header
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 SyncStatisticsHandler ¶
type SyncStatisticsHandler interface { Reset() AddNumProcessed(value int) AddNumLarge(value int) SetNumMissing(rootHash []byte, value int) NumProcessed() int NumLarge() 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 TransactionWithFeeHandler ¶
type TransactionWithFeeHandler interface { GetGasLimit() uint64 GetGasPrice() uint64 GetData() []byte GetRcvAddr() []byte GetValue() *big.Int }
TransactionWithFeeHandler represents a transaction structure that has economics variables defined
type TriggerRegistryHandler ¶
type TriggerRegistryHandler interface { GetIsEpochStart() bool GetNewEpochHeaderReceived() bool GetEpoch() uint32 GetMetaEpoch() uint32 GetCurrentRoundIndex() int64 GetEpochStartRound() uint64 GetEpochFinalityAttestingRound() uint64 GetEpochMetaBlockHash() []byte GetEpochStartHeaderHandler() HeaderHandler SetIsEpochStart(isEpochStart bool) error SetNewEpochHeaderReceived(newEpochHeaderReceived bool) error SetEpoch(epoch uint32) error SetMetaEpoch(metaEpoch uint32) error SetCurrentRoundIndex(roundIndex int64) error SetEpochStartRound(startRound uint64) error SetEpochFinalityAttestingRound(finalityAttestingRound uint64) error SetEpochMetaBlockHash(epochMetaBlockHash []byte) error SetEpochStartHeaderHandler(epochStartHeaderHandler HeaderHandler) error }
TriggerRegistryHandler defines getters and setters for the trigger registry
type TxWithExecutionOrderHandler ¶
type TxWithExecutionOrderHandler interface { SetExecutionOrder(order uint32) GetExecutionOrder() uint32 GetTxHandler() TransactionHandler }