block

package
v0.2103.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2021 License: Apache-2.0 Imports: 8 Imported by: 4

Documentation

Overview

Package block implements the roothash block and header.

Index

Constants

This section is empty.

Variables

View Source
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.

func NewGenesisBlock

func NewGenesisBlock(id common.Namespace, timestamp uint64) *Block

NewGenesisBlock creates a new empty genesis block given a runtime id and POSIX timestamp.

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 Timestamp `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

func (h *Header) EncodedHash() hash.Hash

EncodedHash returns the encoded cryptographic hash of the header.

func (*Header) IsParentOf

func (h *Header) IsParentOf(child *Header) bool

IsParentOf returns true iff the header is the parent of a child header.

func (*Header) MostlyEqual

func (h *Header) MostlyEqual(cmp *Header) bool

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

func (h *Header) RootTypesForStorageReceipt() []storage.RootType

RootTypesForStorageReceipt gets the storage root type sequence for the roots returned by RootsForStorageReceipt.

func (*Header) RootsForStorageReceipt

func (h *Header) RootsForStorageReceipt() []hash.Hash

RootsForStorageReceipt gets the merkle roots that must be part of a storage receipt.

func (*Header) StorageRoots

func (h *Header) StorageRoots() []storage.Root

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

func (h *Header) VerifyStorageReceiptSignatures() error

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
)

type Timestamp added in v0.2103.0

type Timestamp uint64

Timestamp is a custom time stamp type that encodes like time.Time when marshaling to text.

func (Timestamp) MarshalText added in v0.2103.0

func (ts Timestamp) MarshalText() ([]byte, error)

MarshalText encodes a Timestamp to text by converting it from Unix time to local time.

func (*Timestamp) UnmarshalText added in v0.2103.0

func (ts *Timestamp) UnmarshalText(data []byte) error

UnmarshalText decodes a text slice into a Timestamp.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL