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
- Variables
- func New(rewardbase common.Address, config *istanbul.Config, ...) consensus.Istanbul
- func RebalanceTreasury(state *state.StateDB, chain consensus.ChainReader, header *types.Header, ...) (*kip103result, error)
- type API
- func (api *API) Candidates() map[common.Address]bool
- func (api *API) Discard(address common.Address)
- func (api *API) GetDemoteValidators(number *rpc.BlockNumber) ([]common.Address, error)
- func (api *API) GetDemotedValidatorsAtHash(hash common.Hash) ([]common.Address, error)
- func (api *API) GetSnapshot(number *rpc.BlockNumber) (*Snapshot, error)
- func (api *API) GetSnapshotAtHash(hash common.Hash) (*Snapshot, error)
- func (api *API) GetTimeout() uint64
- func (api *API) GetValidators(number *rpc.BlockNumber) ([]common.Address, error)
- func (api *API) GetValidatorsAtHash(hash common.Hash) ([]common.Address, error)
- func (api *API) Propose(address common.Address, auth bool)
- type APIExtension
- func (api *APIExtension) GetBlockWithConsensusInfoByHash(blockHash common.Hash) (map[string]interface{}, error)
- func (api *APIExtension) GetBlockWithConsensusInfoByNumber(number *rpc.BlockNumber) (map[string]interface{}, error)
- func (api *APIExtension) GetBlockWithConsensusInfoByNumberRange(start *rpc.BlockNumber, end *rpc.BlockNumber) (map[string]interface{}, error)
- func (api *APIExtension) GetCommittee(number *rpc.BlockNumber) ([]common.Address, error)
- func (api *APIExtension) GetCommitteeSize(number *rpc.BlockNumber) (int, error)
- func (api *APIExtension) GetCouncil(number *rpc.BlockNumber) ([]common.Address, error)
- func (api *APIExtension) GetCouncilSize(number *rpc.BlockNumber) (int, error)
- type Kip103ContractCaller
- type Snapshot
Constants ¶
const (
IstanbulMsg = 0x11
)
Variables ¶
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 RebalanceTreasury ¶ added in v1.10.2
func RebalanceTreasury(state *state.StateDB, chain consensus.ChainReader, header *types.Header, c bind.ContractCaller) (*kip103result, error)
RebalanceTreasury reads data from a contract, validates stored values, and executes treasury rebalancing (KIP-103). It can change the global state by removing old treasury balances and allocating new treasury balances. The new allocation can be larger than the removed amount, and the difference between two amounts will be burnt.
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 ¶
Candidates returns the current candidates the node tries to uphold and vote on.
func (*API) Discard ¶
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
GetDemotedValidators retrieves the list of authorized, but demoted validators with the given block number.
func (*API) GetDemotedValidatorsAtHash ¶ added in v1.7.0
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 ¶
GetSnapshotAtHash retrieves the state snapshot at a given block.
func (*API) GetTimeout ¶ added in v1.3.0
func (*API) GetValidators ¶
GetValidators retrieves the list of authorized validators with the given block number.
func (*API) GetValidatorsAtHash ¶
GetValidatorsAtHash retrieves the list of authorized validators with the given block hash.
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 Kip103ContractCaller ¶ added in v1.10.2
type Kip103ContractCaller struct {
// contains filtered or unexported fields
}
Kip103ContractCaller is an implementation of contractCaller only for KIP-103. The caller interacts with a KIP-103 contract on a read only basis.
func (*Kip103ContractCaller) CallContract ¶ added in v1.10.2
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 ¶
Marshal to a json byte array
func (*Snapshot) UnmarshalJSON ¶
Unmarshal from a json byte array