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 )