block

package
v0.97.1 Latest Latest
Warning

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

Go to latest
Published: Aug 6, 2021 License: MIT Imports: 11 Imported by: 16

Documentation

Overview

Package block contains Neo block definition.

This is one of the core structures of Neo blockchain.

Index

Constants

View Source
const (
	// MaxTransactionsPerBlock is the maximum number of transactions per block.
	MaxTransactionsPerBlock = math.MaxUint16
)

Variables

View Source
var ErrMaxContentsPerBlock = errors.New("the number of contents exceeds the maximum number of contents per block")

ErrMaxContentsPerBlock is returned when the maximum number of contents per block is reached.

Functions

This section is empty.

Types

type Block

type Block struct {
	// The base of the block.
	Header

	// Transaction list.
	Transactions []*transaction.Transaction

	// True if this block is created from trimmed data.
	Trimmed bool
}

Block represents one block in the chain.

func New added in v0.90.0

func New(stateRootEnabled bool) *Block

New creates a new blank block with proper state root setting.

func NewBlockFromTrimmedBytes

func NewBlockFromTrimmedBytes(stateRootEnabled bool, b []byte) (*Block, error)

NewBlockFromTrimmedBytes returns a new block from trimmed data. This is commonly used to create a block from stored data. Blocks created from trimmed data will have their Trimmed field set to true.

func (*Block) Compare

func (b *Block) Compare(item queue.Item) int

Compare implements the queue Item interface.

func (*Block) ComputeMerkleRoot added in v0.92.0

func (b *Block) ComputeMerkleRoot() util.Uint256

ComputeMerkleRoot computes Merkle tree root hash based on actual block's data.

func (*Block) DecodeBinary

func (b *Block) DecodeBinary(br *io.BinReader)

DecodeBinary decodes the block from the given BinReader, implementing Serializable interface.

func (*Block) EncodeBinary

func (b *Block) EncodeBinary(bw *io.BinWriter)

EncodeBinary encodes the block to the given BinWriter, implementing Serializable interface.

func (*Block) GetExpectedBlockSize added in v0.94.0

func (b *Block) GetExpectedBlockSize() int

GetExpectedBlockSize returns expected block size which should be equal to io.GetVarSize(b).

func (*Block) GetExpectedBlockSizeWithoutTransactions added in v0.94.0

func (b *Block) GetExpectedBlockSizeWithoutTransactions(txCount int) int

GetExpectedBlockSizeWithoutTransactions returns expected block size without transactions size.

func (Block) MarshalJSON added in v0.75.0

func (b Block) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*Block) RebuildMerkleRoot

func (b *Block) RebuildMerkleRoot()

RebuildMerkleRoot rebuilds the merkleroot of the block.

func (*Block) Trim

func (b *Block) Trim() ([]byte, error)

Trim returns a subset of the block data to save up space in storage. Notice that only the hashes of the transactions are stored.

func (*Block) UnmarshalJSON added in v0.75.0

func (b *Block) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler interface.

type Header struct {
	// Version of the block.
	Version uint32

	// hash of the previous block.
	PrevHash util.Uint256

	// Root hash of a transaction list.
	MerkleRoot util.Uint256

	// Timestamp is a millisecond-precision timestamp.
	// The time stamp of each block must be later than previous block's time stamp.
	// Generally the difference of two block's time stamp is about 15 seconds and imprecision is allowed.
	// The height of the block must be exactly equal to the height of the previous block plus 1.
	Timestamp uint64

	// Nonce is block random number.
	Nonce uint64

	// index/height of the block
	Index uint32

	// Contract address of the next miner
	NextConsensus util.Uint160

	// Script used to validate the block
	Script transaction.Witness

	// StateRootEnabled specifies if header contains state root.
	StateRootEnabled bool
	// PrevStateRoot is state root of the previous block.
	PrevStateRoot util.Uint256
	// PrimaryIndex is the index of primary consensus node for this block.
	PrimaryIndex byte
	// contains filtered or unexported fields
}

Header holds the base info of a block.

func (*Header) DecodeBinary

func (b *Header) DecodeBinary(br *io.BinReader)

DecodeBinary implements Serializable interface.

func (*Header) EncodeBinary

func (b *Header) EncodeBinary(bw *io.BinWriter)

EncodeBinary implements Serializable interface.

func (*Header) Hash added in v0.94.0

func (b *Header) Hash() util.Uint256

Hash returns the hash of the block.

func (Header) MarshalJSON added in v0.94.0

func (b Header) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*Header) UnmarshalJSON added in v0.94.0

func (b *Header) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler interface.

Jump to

Keyboard shortcuts

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