Documentation
¶
Index ¶
- Constants
- Variables
- type ContractValidatorStoreWrapper
- type ForkManager
- func (m *ForkManager) Close() error
- func (m *ForkManager) GetHooks(height uint64) HooksInterface
- func (m *ForkManager) GetSigner(height uint64) (signer.Signer, error)
- func (m *ForkManager) GetValidatorStore(height uint64) (ValidatorStore, error)
- func (m *ForkManager) GetValidators(height uint64) (validators.Validators, error)
- func (m *ForkManager) Initialize() error
- type HeaderModifier
- type HooksInterface
- type HooksRegister
- type IBFTFork
- type IBFTForks
- type IBFTType
- type PoAHookRegister
- type PoSHookRegister
- type SnapshotValidatorStoreWrapper
- type Updatable
- type ValidatorStore
Constants ¶
const ( // Keys in IBFT Configuration KeyType = "type" KeyTypes = "types" KeyValidatorType = "validator_type" )
Variables ¶
var ( ErrForkNotFound = errors.New("fork not found") ErrSignerNotFound = errors.New("signer not found") ErrValidatorStoreNotFound = errors.New("validator set not found") ErrKeyManagerNotFound = errors.New("key manager not found") )
var (
ErrTxInLastEpochOfBlock = errors.New("block must not have transactions in the last of epoch")
)
var (
ErrUndefinedIBFTConfig = errors.New("IBFT config is not defined")
)
Functions ¶
This section is empty.
Types ¶
type ContractValidatorStoreWrapper ¶
type ContractValidatorStoreWrapper struct {
*contract.ContractValidatorStore
// contains filtered or unexported fields
}
ContractValidatorStoreWrapper is a wrapper of *contract.ContractValidatorStore in order to add Close and GetValidators
func NewContractValidatorStoreWrapper ¶
func NewContractValidatorStoreWrapper( logger hclog.Logger, blockchain store.HeaderGetter, executor contract.Executor, getSigner func(uint64) (signer.Signer, error), ) (*ContractValidatorStoreWrapper, error)
NewContractValidatorStoreWrapper creates *ContractValidatorStoreWrapper
func (*ContractValidatorStoreWrapper) Close ¶
func (w *ContractValidatorStoreWrapper) Close() error
Close is closer process
func (*ContractValidatorStoreWrapper) GetValidators ¶
func (w *ContractValidatorStoreWrapper) GetValidators( height, epochSize, forkFrom uint64, ) (validators.Validators, error)
GetValidators gets and returns validators at the given height
type ForkManager ¶
type ForkManager struct {
// contains filtered or unexported fields
}
ForkManager is the module that has Fork configuration and multiple version of submodules and returns the proper submodule at specified height
func NewForkManager ¶
func NewForkManager( logger hclog.Logger, blockchain store.HeaderGetter, executor contract.Executor, secretManager secrets.SecretsManager, filePath string, epochSize uint64, ibftConfig map[string]interface{}, ) (*ForkManager, error)
NewForkManager is a constructor of ForkManager
func (*ForkManager) Close ¶
func (m *ForkManager) Close() error
Close calls termination process of submodules
func (*ForkManager) GetHooks ¶
func (m *ForkManager) GetHooks(height uint64) HooksInterface
GetHooks returns a hooks at specified height
func (*ForkManager) GetSigner ¶
func (m *ForkManager) GetSigner(height uint64) (signer.Signer, error)
GetSigner returns a proper signer at specified height
func (*ForkManager) GetValidatorStore ¶
func (m *ForkManager) GetValidatorStore(height uint64) (ValidatorStore, error)
GetValidatorStore returns a proper validator set at specified height
func (*ForkManager) GetValidators ¶
func (m *ForkManager) GetValidators(height uint64) (validators.Validators, error)
GetValidators returns validators at specified height
func (*ForkManager) Initialize ¶
func (m *ForkManager) Initialize() error
Initialize initializes ForkManager on initialization phase
type HeaderModifier ¶
type HeaderModifier interface {
ModifyHeader(*types.Header, types.Address) error
VerifyHeader(*types.Header) error
ProcessHeader(*types.Header) error
}
HeaderModifier is an interface for the struct that modifies block header for additional process
type HooksInterface ¶
type HooksInterface interface {
ShouldWriteTransactions(uint64) bool
ModifyHeader(*types.Header, types.Address) error
VerifyHeader(*types.Header) error
VerifyBlock(*types.Block) error
ProcessHeader(*types.Header) error
PreCommitState(*types.Header, *state.Transition) error
PostInsertBlock(*types.Block) error
}
HooksInterface is an interface of hooks to be called by IBFT This interface is referred from fork and ibft package
type HooksRegister ¶
type HooksRegister interface {
// RegisterHooks register hooks for the given block height
RegisterHooks(hooks *hook.Hooks, height uint64)
}
HookRegister is an interface that ForkManager calls for hook registrations
type IBFTFork ¶
type IBFTFork struct {
Type IBFTType `json:"type"`
ValidatorType validators.ValidatorType `json:"validator_type"`
Deployment *common.JSONNumber `json:"deployment,omitempty"`
From common.JSONNumber `json:"from"`
To *common.JSONNumber `json:"to,omitempty"`
// PoA
Validators validators.Validators `json:"validators,omitempty"`
// PoS
MaxValidatorCount *common.JSONNumber `json:"maxValidatorCount,omitempty"`
MinValidatorCount *common.JSONNumber `json:"minValidatorCount,omitempty"`
}
IBFT Fork represents setting in params.engine.ibft of genesis.json
func (*IBFTFork) UnmarshalJSON ¶
type IBFTForks ¶
type IBFTForks []*IBFTFork
func GetIBFTForks ¶
GetIBFTForks returns IBFT fork configurations from chain config
type IBFTType ¶
type IBFTType string
Define the type of the IBFT consensus
const ( // PoA defines the Proof of Authority IBFT type, // where the validator set is changed through voting / pre-set in genesis PoA IBFTType = "PoA" // PoS defines the Proof of Stake IBFT type, // where the validator set it changed through staking on the Staking Smart Contract PoS IBFTType = "PoS" )
func ParseIBFTType ¶
ParseIBFTType converts a ibftType string representation to a IBFTType
type PoAHookRegister ¶
type PoAHookRegister struct {
// contains filtered or unexported fields
}
PoAHookRegisterer that registers hooks for PoA mode
func NewPoAHookRegisterer ¶
func NewPoAHookRegisterer( getValidatorsStore func(*IBFTFork) ValidatorStore, forks IBFTForks, ) *PoAHookRegister
NewPoAHookRegisterer is a constructor of PoAHookRegister
func (*PoAHookRegister) RegisterHooks ¶
func (r *PoAHookRegister) RegisterHooks(hooks *hook.Hooks, height uint64)
RegisterHooks registers hooks of PoA for voting and validators updating
type PoSHookRegister ¶
type PoSHookRegister struct {
// contains filtered or unexported fields
}
PoAHookRegisterer that registers hooks for PoS mode
func NewPoSHookRegister ¶
func NewPoSHookRegister( forks IBFTForks, epochSize uint64, ) *PoSHookRegister
NewPoSHookRegister is a constructor of PoSHookRegister
func (*PoSHookRegister) RegisterHooks ¶
func (r *PoSHookRegister) RegisterHooks(hooks *hook.Hooks, height uint64)
RegisterHooks registers hooks of PoA for additional block verification and contract deployment
type SnapshotValidatorStoreWrapper ¶
type SnapshotValidatorStoreWrapper struct {
*snapshot.SnapshotValidatorStore
// contains filtered or unexported fields
}
SnapshotValidatorStoreWrapper is a wrapper of store.SnapshotValidatorStore in order to add initialization and closer process with side effect
func NewSnapshotValidatorStoreWrapper ¶
func NewSnapshotValidatorStoreWrapper( logger hclog.Logger, blockchain store.HeaderGetter, getSigner func(uint64) (signer.Signer, error), dirPath string, epochSize uint64, ) (*SnapshotValidatorStoreWrapper, error)
NewSnapshotValidatorStoreWrapper loads data from local storage and creates *SnapshotValidatorStoreWrapper
func (*SnapshotValidatorStoreWrapper) Close ¶
func (w *SnapshotValidatorStoreWrapper) Close() error
Close saves SnapshotValidator data into local storage
func (*SnapshotValidatorStoreWrapper) GetValidators ¶
func (w *SnapshotValidatorStoreWrapper) GetValidators(height, _, _ uint64) (validators.Validators, error)
GetValidators returns validators at the specific height
type Updatable ¶
type Updatable interface {
// UpdateValidatorSet updates validators forcibly
// in order that new validators are available from the given height
UpdateValidatorSet(validators.Validators, uint64) error
}
Updatable is an interface for the struct that updates validators in the middle
type ValidatorStore ¶
type ValidatorStore interface {
store.ValidatorStore
// Close defines termination process
Close() error
// GetValidators is a method to return validators at the given height
GetValidators(height, epochSize, forkFrom uint64) (validators.Validators, error)
}
ValidatorStore is an interface that ForkManager calls for Validator Store