Documentation
¶
Index ¶
- type Body
- type Economics
- type EpochStart
- type EpochStartShardData
- type Header
- func (h *Header) CheckChainID(reference []byte) error
- func (h *Header) Clone() data.HeaderHandler
- func (h *Header) GetAccumulatedFees() *big.Int
- func (h *Header) GetChainID() []byte
- func (h *Header) GetEpoch() uint32
- func (h *Header) GetLeaderSignature() []byte
- func (h *Header) GetMiniBlockHeadersWithDst(destId uint32) map[string]uint32
- func (h *Header) GetNonce() uint64
- func (h *Header) GetPrevHash() []byte
- func (h *Header) GetPrevRandSeed() []byte
- func (h *Header) GetPubKeysBitmap() []byte
- func (h *Header) GetRandSeed() []byte
- func (h *Header) GetReceiptsHash() []byte
- func (h *Header) GetRootHash() []byte
- func (h *Header) GetRound() uint64
- func (h *Header) GetShardID() uint32
- func (h *Header) GetSignature() []byte
- func (h *Header) GetTimeStamp() uint64
- func (h *Header) GetTxCount() uint32
- func (h *Header) GetValidatorStatsRootHash() []byte
- func (h *Header) IsInterfaceNil() bool
- func (h *Header) IsStartOfEpochBlock() bool
- func (h *Header) ItemsInBody() uint32
- func (h *Header) ItemsInHeader() uint32
- func (h *Header) MapMiniBlockHashesToShards() map[string]uint32
- func (h *Header) SetAccumulatedFees(value *big.Int)
- func (h *Header) SetChainID(chainID []byte)
- func (h *Header) SetEpoch(e uint32)
- func (h *Header) SetLeaderSignature(sg []byte)
- func (h *Header) SetNonce(n uint64)
- func (h *Header) SetPrevHash(pvHash []byte)
- func (h *Header) SetPrevRandSeed(pvRandSeed []byte)
- func (h *Header) SetPubKeysBitmap(pkbm []byte)
- func (h *Header) SetRandSeed(randSeed []byte)
- func (h *Header) SetRootHash(rHash []byte)
- func (h *Header) SetRound(r uint64)
- func (h *Header) SetShardID(shId uint32)
- func (h *Header) SetSignature(sg []byte)
- func (h *Header) SetTimeStamp(ts uint64)
- func (h *Header) SetTxCount(txCount uint32)
- func (h *Header) SetValidatorStatsRootHash(rHash []byte)
- type MetaBlock
- func (m *MetaBlock) CheckChainID(reference []byte) error
- func (m *MetaBlock) Clone() data.HeaderHandler
- func (m *MetaBlock) GetAccumulatedFees() *big.Int
- func (m *MetaBlock) GetChainID() []byte
- func (m *MetaBlock) GetEpoch() uint32
- func (m *MetaBlock) GetLeaderSignature() []byte
- func (m *MetaBlock) GetMiniBlockHeadersWithDst(destId uint32) map[string]uint32
- func (m *MetaBlock) GetNonce() uint64
- func (m *MetaBlock) GetPrevHash() []byte
- func (m *MetaBlock) GetPrevRandSeed() []byte
- func (m *MetaBlock) GetPubKeysBitmap() []byte
- func (m *MetaBlock) GetRandSeed() []byte
- func (m *MetaBlock) GetReceiptsHash() []byte
- func (m *MetaBlock) GetRootHash() []byte
- func (m *MetaBlock) GetRound() uint64
- func (m *MetaBlock) GetShardID() uint32
- func (m *MetaBlock) GetSignature() []byte
- func (m *MetaBlock) GetTimeStamp() uint64
- func (m *MetaBlock) GetTxCount() uint32
- func (m *MetaBlock) GetValidatorStatsRootHash() []byte
- func (m *MetaBlock) IsInterfaceNil() bool
- func (m *MetaBlock) IsStartOfEpochBlock() bool
- func (m *MetaBlock) ItemsInBody() uint32
- func (m *MetaBlock) ItemsInHeader() uint32
- func (m *MetaBlock) SetAccumulatedFees(value *big.Int)
- func (m *MetaBlock) SetChainID(chainID []byte)
- func (m *MetaBlock) SetEpoch(e uint32)
- func (m *MetaBlock) SetLeaderSignature(sg []byte)
- func (m *MetaBlock) SetNonce(n uint64)
- func (m *MetaBlock) SetPrevHash(pvHash []byte)
- func (m *MetaBlock) SetPrevRandSeed(pvRandSeed []byte)
- func (m *MetaBlock) SetPubKeysBitmap(pkbm []byte)
- func (m *MetaBlock) SetRandSeed(randSeed []byte)
- func (m *MetaBlock) SetRootHash(rHash []byte)
- func (m *MetaBlock) SetRound(r uint64)
- func (m *MetaBlock) SetShardID(_ uint32)
- func (m *MetaBlock) SetSignature(sg []byte)
- func (m *MetaBlock) SetTimeStamp(ts uint64)
- func (m *MetaBlock) SetTxCount(txCount uint32)
- func (m *MetaBlock) SetValidatorStatsRootHash(rHash []byte)
- type MiniBlock
- type MiniBlockHeader
- type MiniBlockSlice
- type PeerAction
- type PeerChange
- type PeerData
- type ShardData
- type ShardMiniBlockHeader
- type Type
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Body ¶
type Body []*MiniBlock
Body should be used when referring to the full list of mini blocks that forms a block body
func (Body) IntegrityAndValidity ¶
IntegrityAndValidity checks if data is valid
func (Body) IsInterfaceNil ¶
IsInterfaceNil returns true if there is no value under the interface
type Economics ¶
type Economics struct {
TotalSupply *big.Int
TotalToDistribute *big.Int
TotalNewlyMinted *big.Int
RewardsPerBlockPerNode *big.Int
NodePrice *big.Int
}
Economics holds the block information for total supply and rewards
type EpochStart ¶
type EpochStart struct {
LastFinalizedHeaders []EpochStartShardData
Economics Economics
}
EpochStart holds the block information for end-of-epoch
type EpochStartShardData ¶
type EpochStartShardData struct {
ShardId uint32
Round uint64
Nonce uint64
HeaderHash []byte
RootHash []byte
FirstPendingMetaBlock []byte
LastFinishedMetaBlock []byte
PendingMiniBlockHeaders []ShardMiniBlockHeader
}
EpochStartShardData hold the last finalized headers hash and state root hash
type Header ¶
type Header struct {
Nonce uint64
PrevHash []byte
PrevRandSeed []byte
RandSeed []byte
PubKeysBitmap []byte
TimeStamp uint64
Round uint64
Signature []byte
LeaderSignature []byte
RootHash []byte
ValidatorStatsRootHash []byte
MetaBlockHashes [][]byte
EpochStartMetaHash []byte
ReceiptsHash []byte
ChainID []byte
MiniBlockHeaders []MiniBlockHeader
PeerChanges []PeerChange
Epoch uint32
TxCount uint32
AccumulatedFees *big.Int
ShardId uint32
BlockBodyType Type
}
Header holds the metadata of a block. This is the part that is being hashed and run through consensus. The header holds the hash of the body and also the link to the previous block header hash
func (*Header) CheckChainID ¶
CheckChainID returns nil if the header's chain ID matches the one provided otherwise, it will error
func (*Header) Clone ¶
func (h *Header) Clone() data.HeaderHandler
Clone returns a clone of the object
func (*Header) GetAccumulatedFees ¶
GetAccumulatedFees returns the accumulated fees in the header
func (*Header) GetChainID ¶
GetChainID gets the chain ID on which this block is valid on
func (*Header) GetLeaderSignature ¶
GetLeaderSignature returns the leader's signature
func (*Header) GetMiniBlockHeadersWithDst ¶
GetMiniBlockHeadersWithDst as a map of hashes and sender IDs
func (*Header) GetPrevHash ¶
GetPrevHash returns previous block header hash
func (*Header) GetPrevRandSeed ¶
GetPrevRandSeed returns previous random seed
func (*Header) GetPubKeysBitmap ¶
GetPubKeysBitmap return signers bitmap
func (*Header) GetRandSeed ¶
GetRandSeed returns the random seed
func (*Header) GetReceiptsHash ¶
GetReceiptsHash returns the hash of the receipts and intra-shard smart contract results
func (*Header) GetRootHash ¶
GetRootHash returns the roothash from header
func (*Header) GetSignature ¶
GetSignature returns signed data
func (*Header) GetTimeStamp ¶
GetTimeStamp returns the time stamp
func (*Header) GetTxCount ¶
GetTxCount returns transaction count in the block associated with this header
func (*Header) GetValidatorStatsRootHash ¶
GetValidatorStatsRootHash returns the root hash for the validator statistics trie at this current block
func (*Header) IsInterfaceNil ¶
IsInterfaceNil returns true if there is no value under the interface
func (*Header) IsStartOfEpochBlock ¶
IsStartOfEpochBlock verifies if the block is of type start of epoch
func (*Header) ItemsInBody ¶ added in v1.0.11
ItemsInBody gets the number of items(hashes) added in block body
func (*Header) ItemsInHeader ¶ added in v1.0.11
ItemsInHeader gets the number of items(hashes) added in block header
func (*Header) MapMiniBlockHashesToShards ¶
MapMiniBlockHashesToShards is a map of mini block hashes and sender IDs
func (*Header) SetAccumulatedFees ¶
SetAccumulatedFees sets the accumulated fees in the header
func (*Header) SetChainID ¶
SetChainID sets the chain ID on which this block is valid on
func (*Header) SetLeaderSignature ¶
SetLeaderSignature will set the leader's signature
func (*Header) SetPrevRandSeed ¶
SetPrevRandSeed sets previous random seed
func (*Header) SetPubKeysBitmap ¶
SetPubKeysBitmap sets publick key bitmap
func (*Header) SetRandSeed ¶
SetRandSeed sets previous random seed
func (*Header) SetShardID ¶
SetShardID sets header shard ID
func (*Header) SetSignature ¶
SetSignature sets header signature
func (*Header) SetTimeStamp ¶
SetTimeStamp sets header timestamp
func (*Header) SetTxCount ¶
SetTxCount sets the transaction count of the block associated with this header
func (*Header) SetValidatorStatsRootHash ¶
SetValidatorStatsRootHash set's the root hash for the validator statistics trie
type MetaBlock ¶
type MetaBlock struct {
Nonce uint64
Round uint64
TimeStamp uint64
ShardInfo []ShardData
Signature []byte
LeaderSignature []byte
PubKeysBitmap []byte
PrevHash []byte
PrevRandSeed []byte
RandSeed []byte
RootHash []byte
ValidatorStatsRootHash []byte
MiniBlockHeaders []MiniBlockHeader
ReceiptsHash []byte
EpochStart EpochStart
ChainID []byte
Epoch uint32
TxCount uint32
AccumulatedFees *big.Int
AccumulatedFeesInEpoch *big.Int
}
MetaBlock holds the data that will be saved to the metachain each round
func (*MetaBlock) CheckChainID ¶
CheckChainID returns nil if the header's chain ID matches the one provided otherwise, it will error
func (*MetaBlock) Clone ¶
func (m *MetaBlock) Clone() data.HeaderHandler
Clone will return a clone of the object
func (*MetaBlock) GetAccumulatedFees ¶
GetAccumulatedFees returns the accumulated fees in the header
func (*MetaBlock) GetChainID ¶
GetChainID gets the chain ID on which this block is valid on
func (*MetaBlock) GetLeaderSignature ¶
GetLeaderSignature returns the signature of the leader
func (*MetaBlock) GetMiniBlockHeadersWithDst ¶
GetMiniBlockHeadersWithDst as a map of hashes and sender IDs
func (*MetaBlock) GetPrevHash ¶
GetPrevHash returns previous block header hash
func (*MetaBlock) GetPrevRandSeed ¶
GetPrevRandSeed gets the previous random seed
func (*MetaBlock) GetPubKeysBitmap ¶
GetPubKeysBitmap return signers bitmap
func (*MetaBlock) GetRandSeed ¶
GetRandSeed gets the current random seed
func (*MetaBlock) GetReceiptsHash ¶
GetReceiptsHash returns the hash of the receipts and intra-shard smart contract results
func (*MetaBlock) GetRootHash ¶
GetRootHash returns the roothash from header
func (*MetaBlock) GetShardID ¶
GetShardID returns the metachain shard id
func (*MetaBlock) GetSignature ¶
GetSignature return signed data
func (*MetaBlock) GetTimeStamp ¶
GetTimeStamp returns the time stamp
func (*MetaBlock) GetTxCount ¶
GetTxCount returns transaction count in the current meta block
func (*MetaBlock) GetValidatorStatsRootHash ¶
GetValidatorStatsRootHash returns the root hash for the validator statistics trie at this current block
func (*MetaBlock) IsInterfaceNil ¶
IsInterfaceNil returns true if there is no value under the interface
func (*MetaBlock) IsStartOfEpochBlock ¶
IsStartOfEpochBlock verifies if the block is of type start of epoch
func (*MetaBlock) ItemsInBody ¶ added in v1.0.11
ItemsInBody gets the number of items(hashes) added in block body
func (*MetaBlock) ItemsInHeader ¶ added in v1.0.11
ItemsInHeader gets the number of items(hashes) added in block header
func (*MetaBlock) SetAccumulatedFees ¶
SetAccumulatedFees sets the accumulated fees in the header
func (*MetaBlock) SetChainID ¶
SetChainID sets the chain ID on which this block is valid on
func (*MetaBlock) SetLeaderSignature ¶
SetLeaderSignature will set the leader's signature
func (*MetaBlock) SetPrevHash ¶
SetPrevHash sets prev hash
func (*MetaBlock) SetPrevRandSeed ¶
SetPrevRandSeed sets the previous randomness seed
func (*MetaBlock) SetPubKeysBitmap ¶
SetPubKeysBitmap sets publick key bitmap
func (*MetaBlock) SetRandSeed ¶
SetRandSeed sets the current random seed
func (*MetaBlock) SetRootHash ¶
SetRootHash sets root hash
func (*MetaBlock) SetShardID ¶
SetShardID sets header shard ID
func (*MetaBlock) SetSignature ¶
SetSignature set header signature
func (*MetaBlock) SetTimeStamp ¶
SetTimeStamp sets header timestamp
func (*MetaBlock) SetTxCount ¶
SetTxCount sets the transaction count of the current meta block
func (*MetaBlock) SetValidatorStatsRootHash ¶
SetValidatorStatsRootHash set's the root hash for the validator statistics trie
type MiniBlockHeader ¶
type MiniBlockHeader struct {
Hash []byte
SenderShardID uint32
ReceiverShardID uint32
TxCount uint32
Type Type
}
MiniBlockHeader holds the hash of a miniblock together with sender/deastination shard id pair. The shard ids are both kept in order to differentiate between cross and single shard transactions
type MiniBlockSlice ¶
type MiniBlockSlice []*MiniBlock
MiniBlockSlice should be used when referring to subset of mini blocks that is not
necessarily representing a full block body
type PeerAction ¶
type PeerAction uint8
PeerAction type represents the possible events that a node can trigger for the metachain to notarize
const ( PeerRegistration PeerAction = iota + 1 PeerUnstaking PeerDeregistration PeerJailed PeerUnJailed PeerSlashed PeerReStake )
Constants mapping the actions that a node can take
func (PeerAction) String ¶
func (pa PeerAction) String() string
type PeerChange ¶
PeerChange holds a change in one peer to shard assignation
type PeerData ¶
type PeerData struct {
Address []byte
PublicKey []byte
Action PeerAction
TimeStamp uint64
ValueChange *big.Int
}
PeerData holds information about actions taken by a peer:
- a peer can register with an amount to become a validator
- a peer can choose to deregister and get back the deposited value
type ShardData ¶
type ShardData struct {
HeaderHash []byte
ShardMiniBlockHeaders []ShardMiniBlockHeader
PrevRandSeed []byte
PubKeysBitmap []byte
Signature []byte
Round uint64
PrevHash []byte
Nonce uint64
NumPendingMiniBlocks uint32
ShardID uint32
TxCount uint32
AccumulatedFees *big.Int
}
ShardData holds the block information sent by the shards to the metachain
type ShardMiniBlockHeader ¶
type ShardMiniBlockHeader struct {
Hash []byte
ReceiverShardID uint32
SenderShardID uint32
TxCount uint32
}
ShardMiniBlockHeader holds data for one shard miniblock header
type Type ¶
type Type uint8
Type identifies the type of the block
const ( // TxBlock identifies a miniblock holding transactions TxBlock Type = 0 // StateBlock identifies a miniblock holding account state StateBlock Type = 30 // PeerBlock identifies a miniblock holding peer assignation PeerBlock Type = 60 // SmartContractResultBlock identifies a miniblock holding smartcontractresults SmartContractResultBlock Type = 90 // InvalidBlock identifies a miniblock holding invalid transactions InvalidBlock Type = 120 // ReceiptBlock identifies a miniblock holding receipts ReceiptBlock Type = 150 // RewardsBlock identifies a miniblock holding accumulated rewards, both system generated and from tx fees RewardsBlock Type = 255 )