backend

package
v1.10.0-rc.4 Latest Latest
Warning

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

Go to latest
Published: Dec 6, 2022 License: GPL-3.0 Imports: 34 Imported by: 6

Documentation

Overview

Package backend defines backend struct which implements Backend interface of Istanbul consensus engine. backend struct works as a backbone of the consensus engine having Istanbul core, required objects to get information for making a consensus, recent messages and a broadcaster to send its message to peer nodes.

Source Files

Implementation of Backend interface and APIs are included in this package

  • `api.go`: Implements APIs which provide the states of Istanbul
  • `backend.go`: Defines backend struct which implements Backend interface working as a backbone of the consensus engine
  • `engine.go`: Implements various backend methods especially for verifying and building header information
  • `handler.go`: Implements backend methods for handling messages and broadcaster
  • `snapshot.go`: Defines snapshot struct which handles votes from nodes and makes governance changes

Index

Constants

View Source
const (
	IstanbulMsg = 0x11
)

Variables

View Source
var (

	// TODO-Klaytn-Istanbul: define Versions and Lengths with correct values.
	IstanbulProtocol = consensus.Protocol{
		Name:     "istanbul",
		Versions: []uint{65, 64},
		Lengths:  []uint64{23, 21},
	}
)

Functions

func New

func New(rewardbase common.Address, config *istanbul.Config, privateKey *ecdsa.PrivateKey, db database.DBManager, governance governance.Engine, nodetype common.ConnType) consensus.Istanbul

Types

type API

type API struct {
	// contains filtered or unexported fields
}

API is a user facing RPC API to dump Istanbul state

func (*API) Candidates

func (api *API) Candidates() map[common.Address]bool

Candidates returns the current candidates the node tries to uphold and vote on.

func (*API) Discard

func (api *API) Discard(address common.Address)

Discard drops a currently running candidate, stopping the validator from casting further votes (either for or against).

func (*API) GetDemoteValidators added in v1.9.0

func (api *API) GetDemoteValidators(number *rpc.BlockNumber) ([]common.Address, error)

GetDemotedValidators retrieves the list of authorized, but demoted validators with the given block number.

func (*API) GetDemotedValidatorsAtHash added in v1.7.0

func (api *API) GetDemotedValidatorsAtHash(hash common.Hash) ([]common.Address, error)

GetDemotedValidatorsAtHash retrieves the list of authorized, but demoted validators with the given block hash.

func (*API) GetSnapshot

func (api *API) GetSnapshot(number *rpc.BlockNumber) (*Snapshot, error)

GetSnapshot retrieves the state snapshot at a given block.

func (*API) GetSnapshotAtHash

func (api *API) GetSnapshotAtHash(hash common.Hash) (*Snapshot, error)

GetSnapshotAtHash retrieves the state snapshot at a given block.

func (*API) GetTimeout added in v1.3.0

func (api *API) GetTimeout() uint64

func (*API) GetValidators

func (api *API) GetValidators(number *rpc.BlockNumber) ([]common.Address, error)

GetValidators retrieves the list of authorized validators with the given block number.

func (*API) GetValidatorsAtHash

func (api *API) GetValidatorsAtHash(hash common.Hash) ([]common.Address, error)

GetValidatorsAtHash retrieves the list of authorized validators with the given block hash.

func (*API) Propose

func (api *API) Propose(address common.Address, auth bool)

Propose injects a new authorization candidate that the validator will attempt to push through.

type APIExtension

type APIExtension struct {
	// contains filtered or unexported fields
}

API extended by Klaytn developers

func (*APIExtension) GetBlockWithConsensusInfoByHash

func (api *APIExtension) GetBlockWithConsensusInfoByHash(blockHash common.Hash) (map[string]interface{}, error)

func (*APIExtension) GetBlockWithConsensusInfoByNumber

func (api *APIExtension) GetBlockWithConsensusInfoByNumber(number *rpc.BlockNumber) (map[string]interface{}, error)

TODO-Klaytn: This API functions should be managed with API functions with namespace "klay"

func (*APIExtension) GetBlockWithConsensusInfoByNumberRange

func (api *APIExtension) GetBlockWithConsensusInfoByNumberRange(start *rpc.BlockNumber, end *rpc.BlockNumber) (map[string]interface{}, error)

func (*APIExtension) GetCommittee

func (api *APIExtension) GetCommittee(number *rpc.BlockNumber) ([]common.Address, error)

func (*APIExtension) GetCommitteeSize

func (api *APIExtension) GetCommitteeSize(number *rpc.BlockNumber) (int, error)

func (*APIExtension) GetCouncil

func (api *APIExtension) GetCouncil(number *rpc.BlockNumber) ([]common.Address, error)

GetCouncil retrieves the list of authorized validators at the specified block.

func (*APIExtension) GetCouncilSize

func (api *APIExtension) GetCouncilSize(number *rpc.BlockNumber) (int, error)

type Snapshot

type Snapshot struct {
	Epoch         uint64                // The number of blocks after which to checkpoint and reset the pending votes
	Number        uint64                // Block number where the snapshot was created
	Hash          common.Hash           // Block hash where the snapshot was created
	ValSet        istanbul.ValidatorSet // Set of authorized validators at this moment
	Policy        uint64
	CommitteeSize uint64
	Votes         []governance.GovernanceVote      // List of votes cast in chronological order
	Tally         []governance.GovernanceTallyItem // Current vote tally to avoid recalculating
}

Snapshot is the state of the authorization voting at a given point in time.

func (*Snapshot) MarshalJSON

func (s *Snapshot) MarshalJSON() ([]byte, error)

Marshal to a json byte array

func (*Snapshot) UnmarshalJSON

func (s *Snapshot) UnmarshalJSON(b []byte) error

Unmarshal from a json byte array

Jump to

Keyboard shortcuts

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