Documentation
¶
Overview ¶
Package block implements the roothash block and header.
Index ¶
- Variables
- type Block
- type Header
- func (h *Header) EncodedHash() hash.Hash
- func (h *Header) IsParentOf(child *Header) bool
- func (h *Header) MostlyEqual(cmp *Header) bool
- func (h *Header) RootTypesForStorageReceipt() []storage.RootType
- func (h *Header) RootsForStorageReceipt() []hash.Hash
- func (h *Header) StorageRoots() []storage.Root
- func (h *Header) VerifyStorageReceipt(receipt *storage.ReceiptBody) error
- func (h *Header) VerifyStorageReceiptSignatures() error
- type HeaderType
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidVersion = errors.New("roothash: invalid version")
ErrInvalidVersion is the error returned when a version is invalid.
Functions ¶
This section is empty.
Types ¶
type Block ¶
type Block struct {
// Header is the block header.
Header Header `json:"header"`
}
Block is an Oasis block.
Keep this in sync with /runtime/src/common/roothash.rs.
func NewEmptyBlock ¶
func NewEmptyBlock(child *Block, timestamp uint64, htype HeaderType) *Block
NewEmptyBlock creates a new empty block with a specific type.
type Header ¶
type Header struct {
// Version is the protocol version number.
Version uint16 `json:"version"`
// Namespace is the header's chain namespace.
Namespace common.Namespace `json:"namespace"`
// Round is the block round.
Round uint64 `json:"round"`
// Timestamp is the block timestamp (POSIX time).
Timestamp uint64 `json:"timestamp"`
// HeaderType is the header type.
HeaderType HeaderType `json:"header_type"`
// PreviousHash is the previous block hash.
PreviousHash hash.Hash `json:"previous_hash"`
// IORoot is the I/O merkle root.
IORoot hash.Hash `json:"io_root"`
// StateRoot is the state merkle root.
StateRoot hash.Hash `json:"state_root"`
// MessagesHash is the hash of emitted runtime messages.
MessagesHash hash.Hash `json:"messages_hash"`
// StorageSignatures are the storage receipt signatures for the merkle
// roots.
StorageSignatures []signature.Signature `json:"storage_signatures"`
}
Header is a block header.
Keep this in sync with /runtime/src/common/roothash.rs.
func (*Header) EncodedHash ¶
EncodedHash returns the encoded cryptographic hash of the header.
func (*Header) IsParentOf ¶
IsParentOf returns true iff the header is the parent of a child header.
func (*Header) MostlyEqual ¶
MostlyEqual compares vs another header for equality, omitting the StorageSignatures field as it is not universally guaranteed to be present.
Locations where this matter should do the comparison manually.
func (*Header) RootTypesForStorageReceipt ¶ added in v0.2100.0
RootTypesForStorageReceipt gets the storage root type sequence for the roots returned by RootsForStorageReceipt.
func (*Header) RootsForStorageReceipt ¶
RootsForStorageReceipt gets the merkle roots that must be part of a storage receipt.
func (*Header) StorageRoots ¶
StorageRoots returns the storage roots contained in this header.
func (*Header) VerifyStorageReceipt ¶
func (h *Header) VerifyStorageReceipt(receipt *storage.ReceiptBody) error
VerifyStorageReceipt validates that the provided storage receipt matches the header.
func (*Header) VerifyStorageReceiptSignatures ¶
VerifyStorageReceiptSignatures validates that the storage receipt signatures match the signatures for the current merkle roots.
Note: Ensuring that the signatures are signed by keypair(s) that are expected is the responsibility of the caller.
type HeaderType ¶
type HeaderType uint8
HeaderType is the type of header.
const ( // Invalid is an invalid header type and should never be stored. Invalid HeaderType = 0 // Normal is a normal header. Normal HeaderType = 1 // RoundFailed is a header resulting from a failed round. Such a // header contains no transactions but advances the round as normal // to prevent replays of old commitments. RoundFailed HeaderType = 2 // EpochTransition is a header resulting from an epoch transition. // // Such a header contains no transactions but advances the round as // normal. // TODO: Consider renaming this to CommitteeTransition. EpochTransition HeaderType = 3 // Suspended is a header resulting from the runtime being suspended. // // Such a header contains no transactions but advances the round as // normal. Suspended HeaderType = 4 )