Documentation
¶
Index ¶
- Constants
- Variables
- func ConsensusParamsFromProto(pbParams cmproto.ConsensusParams) types.ConsensusParams
- func ConsensusParamsValidateBasic(params cmtypes.ConsensusParams) error
- func GetGenesisWithPrivkey() (*cmtypes.GenesisDoc, ed25519.PrivKey)
- func GetNodeKey(nodeKey *p2p.NodeKey) (crypto.PrivKey, error)
- func GetRandomBytes(n int) []byte
- func GetRandomValidatorSet() *cmtypes.ValidatorSet
- func GetRandomValidatorSetWithPrivKey() (*cmtypes.ValidatorSet, ed25519.PrivKey)
- func GetValidatorSet(privKey ed25519.PrivKey) *cmtypes.ValidatorSet
- func GetValidatorSetFromGenesis(g *cmtypes.GenesisDoc) cmtypes.ValidatorSet
- func PostableBytesToShares(postableData []byte) (txShares []shares.Share, err error)
- func PrivKeyToSigningKey(privKey ed25519.PrivKey) (crypto.PrivKey, error)
- func SharesToPostableBytes(txShares []shares.Share) (postableData []byte, err error)
- func SharesToTxsWithISRs(txShares []shares.Share) (txsWithISRs []pb.TxWithISRs, err error)
- func TxsWithISRsToShares(txsWithISRs []pb.TxWithISRs) (txShares []shares.Share, err error)
- type BaseHeader
- type Block
- func (b *Block) ChainID() string
- func (b *Block) FromProto(other *pb.Block) error
- func (b *Block) Hash() Hash
- func (b *Block) Height() uint64
- func (b *Block) IsZero() bool
- func (b *Block) LastHeader() Hash
- func (b *Block) MarshalBinary() ([]byte, error)
- func (b *Block) New() *Block
- func (b *Block) Size() int
- func (b *Block) Time() time.Time
- func (b *Block) ToProto() (*pb.Block, error)
- func (b *Block) UnmarshalBinary(data []byte) error
- func (b *Block) Validate() error
- func (b *Block) ValidateBasic() error
- func (b *Block) Verify(untrustedBlock *Block) error
- type Commit
- func (c *Commit) FromProto(other *pb.Commit) error
- func (c *Commit) GetCommitHash(header *Header, proposerAddress []byte) []byte
- func (c *Commit) MarshalBinary() ([]byte, error)
- func (c *Commit) ToABCICommit(height uint64, hash Hash) *cmtypes.Commit
- func (c *Commit) ToProto() *pb.Commit
- func (c *Commit) UnmarshalBinary(data []byte) error
- func (c *Commit) ValidateBasic() error
- type Data
- type EvidenceData
- type Hash
- type Header
- func (h *Header) ChainID() string
- func (h *Header) FromProto(other *pb.Header) error
- func (h *Header) Hash() Hash
- func (h *Header) Height() uint64
- func (h *Header) IsZero() bool
- func (h *Header) LastHeader() Hash
- func (h *Header) MarshalBinary() ([]byte, error)
- func (h *Header) New() *Header
- func (h *Header) Time() time.Time
- func (h *Header) ToProto() *pb.Header
- func (h *Header) UnmarshalBinary(data []byte) error
- func (h *Header) Validate() error
- func (h *Header) ValidateBasic() error
- func (h *Header) Verify(untrstH *Header) error
- type IntermediateStateRoots
- type Signature
- type SignedHeader
- func GetFirstSignedHeader(privkey ed25519.PrivKey, valSet *cmtypes.ValidatorSet) (*SignedHeader, error)
- func GetRandomNextSignedHeader(signedHeader *SignedHeader, privKey ed25519.PrivKey) (*SignedHeader, error)
- func GetRandomSignedHeader() (*SignedHeader, ed25519.PrivKey, error)
- func GetRandomSignedHeaderWith(height uint64, dataHash header.Hash, privKey ed25519.PrivKey) (*SignedHeader, ed25519.PrivKey, error)
- func (sh *SignedHeader) FromProto(other *pb.SignedHeader) error
- func (sh *SignedHeader) IsZero() bool
- func (sh *SignedHeader) MarshalBinary() ([]byte, error)
- func (sh *SignedHeader) New() *SignedHeader
- func (sh *SignedHeader) ToProto() (*pb.SignedHeader, error)
- func (sh *SignedHeader) UnmarshalBinary(data []byte) error
- func (sh *SignedHeader) ValidateBasic() error
- func (sh *SignedHeader) Verify(untrstH *SignedHeader) error
- type State
- type ThreadManager
- type Tx
- type TxProof
- type Txs
- type Version
Constants ¶
const TestChainID = "test"
TestChainID is a constant used for testing purposes. It represents a mock chain ID.
Variables ¶
var ( // ErrNoProposerAddress is returned when the proposer address is not set. ErrNoProposerAddress = errors.New("no proposer address") // ErrProposerVerificationFailed is returned when the proposer verification fails. ErrProposerVerificationFailed = errors.New("proposer verification failed") )
var ( // ErrNonAdjacentHeaders is returned when the headers are not adjacent. ErrNonAdjacentHeaders = errors.New("non-adjacent headers") // ErrLastHeaderHashMismatch is returned when the last header hash doesn't match. ErrLastHeaderHashMismatch = errors.New("last header hash mismatch") // ErrLastCommitHashMismatch is returned when the last commit hash doesn't match. ErrLastCommitHashMismatch = errors.New("last commit hash mismatch") )
var ( // ErrAggregatorSetHashMismatch is returned when the aggregator set hash // in the signed header doesn't match the hash of the validator set. ErrAggregatorSetHashMismatch = errors.New("aggregator set hash in signed header and hash of validator set do not match") // ErrSignatureVerificationFailed is returned when the signature // verification fails ErrSignatureVerificationFailed = errors.New("signature verification failed") // ErrInvalidValidatorSetLengthMismatch is returned when the validator set length is not exactly one ErrInvalidValidatorSetLengthMismatch = errors.New("must have exactly one validator (the centralized sequencer)") // ErrProposerAddressMismatch is returned when the proposer address in the signed header does not match the proposer address in the validator set ErrProposerAddressMismatch = errors.New("proposer address in SignedHeader does not match the proposer address in the validator set") // ErrProposerNotInValSet is returned when the proposer address in the validator set is not in the validator set ErrProposerNotInValSet = errors.New("proposer address in the validator set is not in the validator set") // ErrNoSignatures is returned when there are no signatures ErrNoSignatures = errors.New("no signatures") // ErrSignatureEmpty is returned when signature is empty ErrSignatureEmpty = errors.New("signature is empty") )
var ( // EmptyEvidenceHash is the hash of an empty EvidenceData EmptyEvidenceHash = new(cmtypes.EvidenceData).Hash() )
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 ConsensusParamsFromProto ¶
func ConsensusParamsFromProto(pbParams cmproto.ConsensusParams) types.ConsensusParams
ConsensusParamsFromProto converts protobuf consensus parameters to consensus parameters
func ConsensusParamsValidateBasic ¶
func ConsensusParamsValidateBasic(params cmtypes.ConsensusParams) error
ConsensusParamsValidateBasic validates the ConsensusParams to ensure all values are within their allowed limits, and returns an error if they are not.
func GetGenesisWithPrivkey ¶
func GetGenesisWithPrivkey() (*cmtypes.GenesisDoc, ed25519.PrivKey)
GetGenesisWithPrivkey returns a genesis doc with a single validator and a signing key
func GetNodeKey ¶
GetNodeKey creates libp2p private key from Tendermints NodeKey.
func GetRandomBytes ¶
GetRandomBytes returns a byte slice of random bytes of length n.
func GetRandomValidatorSet ¶
func GetRandomValidatorSet() *cmtypes.ValidatorSet
GetRandomValidatorSet returns a validator set with a single validator
func GetRandomValidatorSetWithPrivKey ¶
func GetRandomValidatorSetWithPrivKey() (*cmtypes.ValidatorSet, ed25519.PrivKey)
GetRandomValidatorSetWithPrivKey returns a validator set with a single validator
func GetValidatorSet ¶
func GetValidatorSet(privKey ed25519.PrivKey) *cmtypes.ValidatorSet
GetValidatorSet returns a validator set with a single validator with the given key
func GetValidatorSetFromGenesis ¶
func GetValidatorSetFromGenesis(g *cmtypes.GenesisDoc) cmtypes.ValidatorSet
GetValidatorSetFromGenesis returns a ValidatorSet from a GenesisDoc, for usage with the centralized sequencer scheme.
func PostableBytesToShares ¶
PostableBytesToShares converts a slice of bytes that can be posted to the blockchain to a slice of shares
func PrivKeyToSigningKey ¶
PrivKeyToSigningKey converts a privKey to a signing key
func SharesToPostableBytes ¶
SharesToPostableBytes converts a slice of shares to a slice of bytes that can be posted to the blockchain.
func SharesToTxsWithISRs ¶
func SharesToTxsWithISRs(txShares []shares.Share) (txsWithISRs []pb.TxWithISRs, err error)
SharesToTxsWithISRs converts a slice of shares to a slice of TxWithISRs.
func TxsWithISRsToShares ¶
func TxsWithISRsToShares(txsWithISRs []pb.TxWithISRs) (txShares []shares.Share, err error)
TxsWithISRsToShares converts a slice of TxWithISRs to a slice of shares.
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 GetRandomBlock ¶
GetRandomBlock returns a block with random data
func GetRandomBlockWithKey ¶
func GetRandomBlockWithKey(height uint64, nTxs int, privKey ed25519.PrivKey) (*Block, ed25519.PrivKey)
GetRandomBlockWithKey returns a block with random data and a signing key
func GetRandomNextBlock ¶
func GetRandomNextBlock(block *Block, privKey ed25519.PrivKey, appHash header.Hash, nTxs int) *Block
GetRandomNextBlock returns a block with random data and height of +1 from the provided block
func (*Block) LastHeader ¶
LastHeader returns last header hash of the block.
func (*Block) MarshalBinary ¶
MarshalBinary encodes Block into binary form and returns it.
func (*Block) UnmarshalBinary ¶
UnmarshalBinary decodes binary form of Block into object.
func (*Block) ValidateBasic ¶
ValidateBasic performs basic validation of a block.
type Commit ¶
type Commit struct {
Signatures []Signature // most of the time this is a single signature
}
Commit contains evidence of block creation.
func GetCommit ¶
GetCommit returns a commit with a signature from the given private key over the given header
func (*Commit) GetCommitHash ¶
GetCommitHash returns hash of the commit.
func (*Commit) MarshalBinary ¶
MarshalBinary encodes Commit into binary form and returns it.
func (*Commit) ToABCICommit ¶
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) UnmarshalBinary ¶
UnmarshalBinary decodes binary form of Commit into object.
func (*Commit) ValidateBasic ¶
ValidateBasic performs basic validation of a commit.
type Data ¶
type Data struct { Txs Txs IntermediateStateRoots IntermediateStateRoots }
Data defines Rollkit block data.
func (*Data) MarshalBinary ¶
MarshalBinary encodes Data into binary form and returns it.
func (*Data) UnmarshalBinary ¶
UnmarshalBinary decodes binary form of Data into object.
func (*Data) ValidateBasic ¶
ValidateBasic performs basic validation of block data. Actually it's a placeholder, because nothing is checked.
type EvidenceData ¶
EvidenceData defines how evidence is stored in block.
type Hash ¶
type Hash = header.Hash
Hash is a 32-byte array which is used to represent a hash result.
type Header ¶
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 }
Header defines the structure of Rollkit block header.
func GetRandomHeader ¶
func GetRandomHeader() Header
GetRandomHeader returns a header with random fields and current time
func GetRandomNextHeader ¶
GetRandomNextHeader returns a header with random data and height of +1 from the provided Header
func (*Header) LastHeader ¶
LastHeader returns last header hash of the header.
func (*Header) MarshalBinary ¶
MarshalBinary encodes Header into binary form and returns it.
func (*Header) UnmarshalBinary ¶
UnmarshalBinary decodes binary form of Header into object.
func (*Header) ValidateBasic ¶
ValidateBasic performs basic validation of a header.
type IntermediateStateRoots ¶
type IntermediateStateRoots struct {
RawRootsList [][]byte
}
IntermediateStateRoots describes the state between transactions. They are required for fraud proofs.
type SignedHeader ¶
type SignedHeader struct { Header Commit Commit Validators *cmtypes.ValidatorSet }
SignedHeader combines Header and its Commit.
Used mostly for gossiping.
func GetFirstSignedHeader ¶
func GetFirstSignedHeader(privkey ed25519.PrivKey, valSet *cmtypes.ValidatorSet) (*SignedHeader, error)
GetFirstSignedHeader creates a 1st signed header for a chain, given a valset and signing key.
func GetRandomNextSignedHeader ¶
func GetRandomNextSignedHeader(signedHeader *SignedHeader, privKey ed25519.PrivKey) (*SignedHeader, error)
GetRandomNextSignedHeader returns a signed header with random data and height of +1 from the provided signed header
func GetRandomSignedHeader ¶
func GetRandomSignedHeader() (*SignedHeader, ed25519.PrivKey, error)
GetRandomSignedHeader returns a signed header with random data
func GetRandomSignedHeaderWith ¶
func GetRandomSignedHeaderWith(height uint64, dataHash header.Hash, privKey ed25519.PrivKey) (*SignedHeader, ed25519.PrivKey, error)
GetRandomSignedHeaderWith returns a signed header with specified height and data hash, and random data for other fields
func (*SignedHeader) FromProto ¶
func (sh *SignedHeader) FromProto(other *pb.SignedHeader) error
FromProto fills SignedHeader with data from protobuf representation.
func (*SignedHeader) IsZero ¶
func (sh *SignedHeader) IsZero() bool
IsZero returns true if the SignedHeader is nil
func (*SignedHeader) MarshalBinary ¶
func (sh *SignedHeader) MarshalBinary() ([]byte, error)
MarshalBinary encodes SignedHeader into binary form and returns it.
func (*SignedHeader) New ¶
func (sh *SignedHeader) New() *SignedHeader
New creates a new SignedHeader.
func (*SignedHeader) ToProto ¶
func (sh *SignedHeader) ToProto() (*pb.SignedHeader, error)
ToProto converts SignedHeader into protobuf representation and returns it.
func (*SignedHeader) UnmarshalBinary ¶
func (sh *SignedHeader) UnmarshalBinary(data []byte) error
UnmarshalBinary decodes binary form of SignedHeader into object.
func (*SignedHeader) ValidateBasic ¶
func (sh *SignedHeader) ValidateBasic() error
ValidateBasic performs basic validation of a signed header.
func (*SignedHeader) Verify ¶
func (sh *SignedHeader) Verify(untrstH *SignedHeader) error
Verify verifies the signed header.
type State ¶
type State struct { Version cmstate.Version // immutable ChainID string InitialHeight uint64 // should be 1, not 0, when starting from height 1 // LastBlockHeight=0 at genesis (ie. block(H=0) does not exist) LastBlockHeight uint64 LastBlockID types.BlockID LastBlockTime time.Time // DAHeight identifies DA block containing the latest applied Rollkit block. DAHeight uint64 // Consensus parameters used for validating blocks. // Changes returned by EndBlock and updated after Commit. ConsensusParams cmproto.ConsensusParams LastHeightConsensusParamsChanged uint64 // 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.
type ThreadManager ¶
type ThreadManager struct {
// contains filtered or unexported fields
}
ThreadManager is a simple wrapper around sync.WaitGroup to make it easier to manage threads
func NewThreadManager ¶
func NewThreadManager() *ThreadManager
NewThreadManager creates a new ThreadManager
func (*ThreadManager) Go ¶
func (tm *ThreadManager) Go(f func())
Go launches a goroutine and adds it to the WaitGroup
func (*ThreadManager) Wait ¶
func (tm *ThreadManager) Wait()
Wait blocks until all goroutines have called Done on the WaitGroup
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 ¶
Proof returns a simple merkle proof for this node. Panics if i < 0 or i >= len(txs) TODO: optimize this!
func (Txs) ToSliceOfBytes ¶
ToSliceOfBytes converts a Txs to slice of byte slices.
func (Txs) ToTxsWithISRs ¶
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.