block

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2021 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// HeaderHashSize size of a block header hash in bytes.
	HeaderHashSize = 32
	// HeightSize size of a block height field in bytes.
	HeightSize = 8
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Block

type Block struct {
	Header *Header                     `json:"header"`
	Txs    []transactions.ContractCall `json:"transactions"`
}

Block defines a block on the Dusk blockchain.

func NewBlock

func NewBlock() *Block

NewBlock will return an empty Block with an empty BlockHeader.

func (*Block) AddTx

func (b *Block) AddTx(tx *transactions.Transaction)

AddTx will add a transaction to the block.

func (*Block) CalculateHash

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

CalculateHash will calculate the block hash.

func (*Block) CalculateRoot

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

CalculateRoot will calculate and return the block merkle root hash.

func (*Block) Clear

func (b *Block) Clear()

Clear will empty out all the block's fields.

func (Block) Copy added in v0.4.0

func (b Block) Copy() payload.Safe

Copy returns a deep copy of the Block safe to publish to multiple subscribers.

func (*Block) Equals

func (b *Block) Equals(other *Block) bool

Equals returns true if two blocks are equal.

func (Block) IsEmpty added in v0.4.0

func (b Block) IsEmpty() bool

IsEmpty tells us if a block is empty. We can check this easily, because an empty block will be created as `block.Block{}`, meaning that the header is always nil. This function basically checks the existence of the block header.

func (*Block) SetPrevBlock

func (b *Block) SetPrevBlock(prevHeader *Header)

SetPrevBlock will set all the previous block hash field from a header.

type Certificate

type Certificate struct {
	StepOneBatchedSig []byte `json:"step-one-batched-sig"` // Batched BLS signature of the block reduction phase (33 bytes)
	StepTwoBatchedSig []byte `json:"step-two-batched-sig"`
	Step              uint8  `json:"step"`               // Step the agreement terminated at (1 byte)
	StepOneCommittee  uint64 `json:"step-one-committee"` // Binary representation of the committee members who voted in favor of this block (8 bytes)
	StepTwoCommittee  uint64 `json:"step-two-committee"`
}

Certificate defines a block certificate made as a result from the consensus.

func EmptyCertificate

func EmptyCertificate() *Certificate

EmptyCertificate returns an empty Certificate instance.

func (*Certificate) Copy added in v0.4.0

func (c *Certificate) Copy() *Certificate

Copy complies with message.Safe interface. It returns a deep copy of the message safe to publish to multiple subscribers.

func (*Certificate) Equals

func (c *Certificate) Equals(other *Certificate) bool

Equals returns true if both certificates are equal.

type Header struct {
	Version   uint8  `json:"version"`   // Block version byte
	Height    uint64 `json:"height"`    // Block height
	Timestamp int64  `json:"timestamp"` // Block timestamp

	PrevBlockHash []byte `json:"prev-hash"` // Hash of previous block (32 bytes)
	Seed          []byte `json:"seed"`      // Marshaled BLS signature or hash of the previous block seed (32 bytes)
	TxRoot        []byte `json:"tx-root"`   // Root hash of the merkle tree containing all txes (32 bytes)

	*Certificate `json:"certificate"` // Block certificate
	Hash         []byte               `json:"hash"` // Hash of all previous fields
}

Header defines a block header on a Dusk block.

func NewHeader

func NewHeader() *Header

NewHeader creates a new Block Header.

func (*Header) CalculateHash

func (b *Header) CalculateHash() ([]byte, error)

CalculateHash will calculate and return this block header's hash by encoding all the relevant fields and then hashing the result.

func (*Header) Copy added in v0.4.0

func (b *Header) Copy() *Header

Copy complies with message.Safe interface. It returns a deep copy of the message safe to publish to multiple subscribers.

func (*Header) Equals

func (b *Header) Equals(other *Header) bool

Equals returns true if headers are equal.

Jump to

Keyboard shortcuts

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