types

package
v0.10.2-v0-10-x-lts.0 Latest Latest
Warning

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

Go to latest
Published: Aug 17, 2023 License: Apache-2.0 Imports: 17 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

View Source
var InitStateVersion = cmstate.Version{
	Consensus: cmversion.Consensus{
		Block: version.BlockProtocol,
		App:   0,
	},
	Software: version.TMCoreSemVer,
}

InitStateVersion sets the Consensus.Block and Software versions, but leaves the Consensus.App version blank. The Consensus.App version will be set during the Handshake, once we hear from the app what protocol version it is running.

Functions

func GetRandomBytes added in v0.9.0

func GetRandomBytes(n int) []byte

func GetRandomValidatorSet added in v0.9.0

func GetRandomValidatorSet() *cmtypes.ValidatorSet

TODO: accept argument for number of validators / proposer index

func GetRandomValidatorSetWithPrivKey added in v0.9.0

func GetRandomValidatorSetWithPrivKey() (*cmtypes.ValidatorSet, ed25519.PrivKey)

Types

type BaseHeader

type BaseHeader struct {
	// Height represents the block height (aka block number) of a given header
	Height uint64
	// Time contains Unix nanotime of a block
	Time uint64
	// The Chain ID
	ChainID string
}

BaseHeader contains the most basic data of a header

type Block

type Block struct {
	SignedHeader SignedHeader
	Data         Data
}

Block defines the structure of Rollkit block.

func (*Block) ChainID added in v0.9.0

func (b *Block) ChainID() string

func (*Block) FromProto

func (b *Block) FromProto(other *pb.Block) error

FromProto fills Block with data from its protobuf representation.

func (*Block) Hash

func (b *Block) Hash() Hash

Hash returns ABCI-compatible hash of a block.

func (*Block) Height added in v0.9.0

func (b *Block) Height() int64

func (*Block) IsZero added in v0.9.0

func (b *Block) IsZero() bool

func (*Block) LastHeader added in v0.9.0

func (b *Block) LastHeader() Hash

func (*Block) MarshalBinary

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

MarshalBinary encodes Block into binary form and returns it.

func (*Block) New added in v0.9.0

func (b *Block) New() header.Header

func (*Block) Time added in v0.9.0

func (b *Block) Time() time.Time

func (*Block) ToProto

func (b *Block) ToProto() (*pb.Block, error)

ToProto converts Block into protobuf representation and returns it.

func (*Block) UnmarshalBinary

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

UnmarshalBinary decodes binary form of Block into object.

func (*Block) Validate added in v0.9.0

func (b *Block) Validate() error

func (*Block) ValidateBasic

func (b *Block) ValidateBasic() error

ValidateBasic performs basic validation of a block.

func (*Block) Verify added in v0.9.0

func (b *Block) Verify(untrst header.Header) error

type Commit

type Commit struct {
	Signatures []Signature // most of the time this is a single signature
}

Commit contains evidence of block creation.

func (*Commit) FromProto

func (c *Commit) FromProto(other *pb.Commit) error

FromProto fills Commit with data from its protobuf representation.

func (*Commit) GetCommitHash added in v0.9.0

func (c *Commit) GetCommitHash(header *Header, proposerAddress []byte) []byte

func (*Commit) MarshalBinary

func (c *Commit) MarshalBinary() ([]byte, error)

MarshalBinary encodes Commit into binary form and returns it.

func (*Commit) ToABCICommit added in v0.9.0

func (c *Commit) ToABCICommit(height int64, hash Hash) *cmtypes.Commit

ToABCICommit converts Rollkit commit into commit format defined by ABCI. This function only converts fields that are available in Rollkit commit. Other fields (especially ValidatorAddress and Timestamp of Signature) has to be filled by caller.

func (*Commit) ToProto

func (c *Commit) ToProto() *pb.Commit

ToProto converts Commit into protobuf representation and returns it.

func (*Commit) UnmarshalBinary

func (c *Commit) UnmarshalBinary(data []byte) error

UnmarshalBinary decodes binary form of Commit into object.

func (*Commit) ValidateBasic

func (c *Commit) ValidateBasic() error

ValidateBasic performs basic validation of a commit.

type Data

type Data struct {
	Txs                    Txs
	IntermediateStateRoots IntermediateStateRoots
}

Data defines Rollkit block data.

func (*Data) FromProto added in v0.10.2

func (d *Data) FromProto(other *pb.Data) error

FromProto fills the Data with data from its protobuf representation

func (*Data) MarshalBinary

func (d *Data) MarshalBinary() ([]byte, error)

MarshalBinary encodes Data into binary form and returns it.

func (*Data) ToProto

func (d *Data) ToProto() *pb.Data

ToProto converts Data into protobuf representation and returns it.

func (*Data) UnmarshalBinary added in v0.10.2

func (d *Data) UnmarshalBinary(data []byte) error

UnmarshalBinary decodes binary form of Data into object.

func (*Data) ValidateBasic

func (d *Data) ValidateBasic() error

ValidateBasic performs basic validation of block data. Actually it's a placeholder, because nothing is checked.

type EvidenceData

type EvidenceData struct {
	Evidence []cmtypes.Evidence
}

EvidenceData defines how evidence is stored in block.

type Hash

type Hash = header.Hash
type Header struct {
	BaseHeader
	// Block and App version
	Version Version

	// prev block info
	LastHeaderHash Hash

	// hashes of block data
	LastCommitHash Hash // commit from aggregator(s) from the last block
	DataHash       Hash // Block.Data root aka Transactions
	ConsensusHash  Hash // consensus params for current block
	AppHash        Hash // state after applying txs from the current block

	// Root hash of all results from the txs from the previous block.
	// This is ABCI specific but smart-contract chains require some way of committing
	// to transaction receipts/results.
	LastResultsHash Hash

	// Note that the address can be derived from the pubkey which can be derived
	// from the signature when using secp256k.
	// We keep this in case users choose another signature format where the
	// pubkey can't be recovered by the signature (e.g. ed25519).
	ProposerAddress []byte // original proposer of the block

	// Hash of block aggregator set, at a time of block creation
	AggregatorsHash Hash
}

Header defines the structure of Rollkit block header.

func (*Header) ChainID

func (h *Header) ChainID() string

func (*Header) FromProto

func (h *Header) FromProto(other *pb.Header) error

FromProto fills Header with data from its protobuf representation.

func (*Header) Hash

func (h *Header) Hash() Hash

Hash returns ABCI-compatible hash of a header.

func (*Header) Height

func (h *Header) Height() int64

func (*Header) IsZero

func (h *Header) IsZero() bool

func (*Header) LastHeader

func (h *Header) LastHeader() Hash

func (*Header) MarshalBinary

func (h *Header) MarshalBinary() ([]byte, error)

MarshalBinary encodes Header into binary form and returns it.

func (*Header) New

func (h *Header) New() header.Header

func (*Header) Time

func (h *Header) Time() time.Time

Returns unix time with nanosecond precision

func (*Header) ToProto

func (h *Header) ToProto() *pb.Header

ToProto converts Header into protobuf representation and returns it.

func (*Header) UnmarshalBinary

func (h *Header) UnmarshalBinary(data []byte) error

UnmarshalBinary decodes binary form of Header into object.

func (*Header) Validate

func (h *Header) Validate() error

func (*Header) ValidateBasic

func (h *Header) ValidateBasic() error

ValidateBasic performs basic validation of a header.

func (*Header) Verify added in v0.7.2

func (h *Header) Verify(untrst header.Header) error

type IntermediateStateRoots

type IntermediateStateRoots struct {
	RawRootsList [][]byte
}

IntermediateStateRoots describes the state between transactions. They are required for fraud proofs.

type NamespaceID

type NamespaceID [8]byte

type Signature

type Signature []byte

Signature represents signature of block creator.

type SignedHeader

type SignedHeader struct {
	Header
	Commit     Commit
	Validators *cmtypes.ValidatorSet
}

SignedHeader combines Header and its Commit.

Used mostly for gossiping.

func GetNextRandomHeader added in v0.9.0

func GetNextRandomHeader(signedHeader *SignedHeader, privKey ed25519.PrivKey) (*SignedHeader, error)

func GetRandomSignedHeader added in v0.9.0

func GetRandomSignedHeader() (*SignedHeader, ed25519.PrivKey, error)

func (*SignedHeader) FromProto

func (h *SignedHeader) FromProto(other *pb.SignedHeader) error

FromProto fills SignedHeader with data from protobuf representation.

func (*SignedHeader) IsZero added in v0.7.0

func (sH *SignedHeader) IsZero() bool

func (*SignedHeader) MarshalBinary

func (h *SignedHeader) MarshalBinary() ([]byte, error)

MarshalBinary encodes SignedHeader into binary form and returns it.

func (*SignedHeader) New added in v0.7.0

func (sH *SignedHeader) New() header.Header

func (*SignedHeader) ToProto

func (h *SignedHeader) ToProto() (*pb.SignedHeader, error)

ToProto converts SignedHeader into protobuf representation and returns it.

func (*SignedHeader) UnmarshalBinary

func (h *SignedHeader) UnmarshalBinary(data []byte) error

UnmarshalBinary decodes binary form of SignedHeader into object.

func (*SignedHeader) ValidateBasic

func (h *SignedHeader) ValidateBasic() error

ValidateBasic performs basic validation of a signed header.

func (*SignedHeader) Verify added in v0.7.2

func (sH *SignedHeader) Verify(untrst header.Header) error

type State

type State struct {
	Version cmstate.Version

	// immutable
	ChainID       string
	InitialHeight int64 // should be 1, not 0, when starting from height 1

	// LastBlockHeight=0 at genesis (ie. block(H=0) does not exist)
	LastBlockHeight int64
	LastBlockID     types.BlockID
	LastBlockTime   time.Time

	// DAHeight identifies DA block containing the latest applied Rollkit block.
	DAHeight uint64

	// In the MVP implementation, there will be only one Validator
	NextValidators              *types.ValidatorSet
	Validators                  *types.ValidatorSet
	LastValidators              *types.ValidatorSet
	LastHeightValidatorsChanged int64

	// Consensus parameters used for validating blocks.
	// Changes returned by EndBlock and updated after Commit.
	ConsensusParams                  cmproto.ConsensusParams
	LastHeightConsensusParamsChanged int64

	// Merkle root of the results from executing prev block
	LastResultsHash Hash

	// the latest AppHash we've received from calling abci.Commit()
	AppHash Hash
}

State contains information about current state of the blockchain.

func NewFromGenesisDoc

func NewFromGenesisDoc(genDoc *types.GenesisDoc) (State, error)

NewFromGenesisDoc reads blockchain State from genesis.

func (*State) FromProto

func (s *State) FromProto(other *pb.State) error

FromProto fills State with data from its protobuf representation.

func (*State) ToProto

func (s *State) ToProto() (*pb.State, error)

ToProto converts State into protobuf representation and returns it.

type Tx

type Tx []byte

Tx represents transactoin.

func GetRandomTx added in v0.9.0

func GetRandomTx() Tx

func (Tx) Hash

func (tx Tx) Hash() []byte

Hash computes the TMHASH hash of the wire encoded transaction.

type TxProof

type TxProof struct {
	RootHash cmbytes.HexBytes `json:"root_hash"`
	Data     Tx               `json:"data"`
	Proof    merkle.Proof     `json:"proof"`
}

TxProof represents a Merkle proof of the presence of a transaction in the Merkle tree.

type Txs

type Txs []Tx

Txs represents a slice of transactions.

func (Txs) Proof

func (txs Txs) Proof(i int) TxProof

Proof returns a simple merkle proof for this node. Panics if i < 0 or i >= len(txs) TODO: optimize this!

func (Txs) ToTxsWithISRs added in v0.8.0

func (txs Txs) ToTxsWithISRs(intermediateStateRoots IntermediateStateRoots) ([]pb.TxWithISRs, error)

ToTxsWithISRs converts a slice of transactions and a list of intermediate state roots to a slice of TxWithISRs. Note that the length of intermediateStateRoots is equal to the length of txs + 1.

type Version

type Version struct {
	Block uint64
	App   uint64
}

Version captures the consensus rules for processing a block in the blockchain, including all blockchain data structures and the rules of the application's state transition machine. This is equivalent to the tmversion.Consensus type in Tendermint.

Directories

Path Synopsis
pb

Jump to

Keyboard shortcuts

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