Documentation ¶
Index ¶
- Constants
- Variables
- func WithActionCtx(ctx context.Context, ac ActionCtx) context.Context
- func WithBlockCtx(ctx context.Context, blk BlockCtx) context.Context
- func WithBlockchainCtx(ctx context.Context, bc BlockchainCtx) context.Context
- func WithRegistry(ctx context.Context, reg *Registry) context.Context
- type AccountState
- type ActionCtx
- type ActionHandler
- type ActionValidator
- type BlockCtx
- type BlockchainCtx
- type Committer
- type Dock
- type GenericValidator
- type GenesisStateCreator
- type PostSystemActionsCreator
- type PreStatesCreator
- type Protocol
- type Registry
- func (r *Registry) All() []Protocol
- func (r *Registry) Find(id string) (Protocol, bool)
- func (r *Registry) ForceRegister(id string, p Protocol) error
- func (r *Registry) Register(id string, p Protocol) error
- func (r *Registry) StartAll(ctx context.Context, sr StateReader) (map[string]interface{}, error)
- type Starter
- type StateConfig
- type StateManager
- type StateOption
- type StateReader
- type TipInfo
Constants ¶
const (
// SystemNamespace is the namespace to store system information such as candidates/probationList/unproductiveDelegates
SystemNamespace = "System"
)
Variables ¶
var (
ErrNoName = errors.New("name does not exist")
)
Errors
var ( // ErrUnimplemented indicates a method is not implemented yet ErrUnimplemented = errors.New("method is unimplemented") )
Functions ¶
func WithActionCtx ¶ added in v0.11.0
WithActionCtx add ActionCtx into context.
func WithBlockCtx ¶ added in v0.11.0
WithBlockCtx add BlockCtx into context.
func WithBlockchainCtx ¶ added in v0.11.0
func WithBlockchainCtx(ctx context.Context, bc BlockchainCtx) context.Context
WithBlockchainCtx add BlockchainCtx into context.
Types ¶
type AccountState ¶ added in v0.11.0
type AccountState func(StateReader, string) (*state.Account, error)
AccountState defines a function to return the account state of a given address
type ActionCtx ¶ added in v0.11.0
type ActionCtx struct { // Caller is the address of whom issues this action Caller address.Address // ActionHash is the hash of the action with the sealed envelope ActionHash hash.Hash256 // GasPrice is the action gas price GasPrice *big.Int // IntrinsicGas is the action intrinsic gas IntrinsicGas uint64 // Nonce is the nonce of the action Nonce uint64 }
ActionCtx provides action auxiliary information.
func GetActionCtx ¶ added in v0.11.0
GetActionCtx gets ActionCtx
func MustGetActionCtx ¶ added in v0.11.0
MustGetActionCtx must get ActionCtx . If context doesn't exist, this function panic.
type ActionHandler ¶
type ActionHandler interface {
Handle(context.Context, action.Action, StateManager) (*action.Receipt, error)
}
ActionHandler is the interface for the action handlers. For each incoming action, the assembled actions will be called one by one to process it. ActionHandler implementation is supposed to parse the sub-type of the action to decide if it wants to handle this action or not.
type ActionValidator ¶
ActionValidator is the interface of validating an action
type BlockCtx ¶ added in v0.11.0
type BlockCtx struct { // height of block containing those actions BlockHeight uint64 // timestamp of block containing those actions BlockTimeStamp time.Time // gas Limit for perform those actions GasLimit uint64 // Producer is the address of whom composes the block containing this action Producer address.Address }
BlockCtx provides block auxiliary information.
func GetBlockCtx ¶ added in v0.11.0
GetBlockCtx gets BlockCtx
func MustGetBlockCtx ¶ added in v0.11.0
MustGetBlockCtx must get BlockCtx . If context doesn't exist, this function panic.
type BlockchainCtx ¶ added in v0.11.0
type BlockchainCtx struct { // Genesis is a copy of current genesis Genesis genesis.Genesis // Tip is the information of tip block Tip TipInfo }
BlockchainCtx provides blockchain auxiliary information.
func GetBlockchainCtx ¶ added in v0.11.0
func GetBlockchainCtx(ctx context.Context) (BlockchainCtx, bool)
GetBlockchainCtx gets BlockchainCtx
func MustGetBlockchainCtx ¶ added in v0.11.0
func MustGetBlockchainCtx(ctx context.Context) BlockchainCtx
MustGetBlockchainCtx must get BlockchainCtx. If context doesn't exist, this function panic.
type Committer ¶ added in v1.0.0
type Committer interface {
Commit(context.Context, StateManager) error
}
Committer performs commit action of the protocol
type Dock ¶ added in v1.0.0
type Dock interface { ProtocolDirty(string) bool Load(string, interface{}) error Unload(string) (interface{}, error) Reset() }
Dock defines an interface for protocol to read/write their private data in StateReader/Manager data are stored as interface{}, user needs to type-assert on their own upon Unload()
type GenericValidator ¶
type GenericValidator struct {
// contains filtered or unexported fields
}
GenericValidator is the validator for generic action verification
func NewGenericValidator ¶
func NewGenericValidator(sr StateReader, accountState AccountState) *GenericValidator
NewGenericValidator constructs a new genericValidator
func (*GenericValidator) Validate ¶
func (v *GenericValidator) Validate(ctx context.Context, selp action.SealedEnvelope) error
Validate validates a generic action
type GenesisStateCreator ¶ added in v0.11.0
type GenesisStateCreator interface {
CreateGenesisStates(context.Context, StateManager) error
}
GenesisStateCreator creates some genesis states
type PostSystemActionsCreator ¶ added in v0.11.0
type PostSystemActionsCreator interface {
CreatePostSystemActions(context.Context, StateReader) ([]action.Envelope, error)
}
PostSystemActionsCreator creates a list of system actions to be appended to block actions
type PreStatesCreator ¶ added in v0.11.0
type PreStatesCreator interface {
CreatePreStates(context.Context, StateManager) error
}
PreStatesCreator creates preliminary states for state manager
type Protocol ¶
type Protocol interface { ActionHandler ReadState(context.Context, StateReader, []byte, ...[]byte) ([]byte, error) Register(*Registry) error ForceRegister(*Registry) error Name() string }
Protocol defines the protocol interfaces atop IoTeX blockchain
type Registry ¶ added in v0.5.0
type Registry struct {
// contains filtered or unexported fields
}
Registry is the hub of all protocols deployed on the chain
func GetRegistry ¶ added in v1.0.0
GetRegistry returns the registry from context
func MustGetRegistry ¶ added in v1.0.0
MustGetRegistry returns the registry from context
func (*Registry) ForceRegister ¶ added in v0.5.0
ForceRegister registers the protocol with a unique ID and force replacing the previous protocol if it exists
type Starter ¶ added in v1.0.0
type Starter interface {
Start(context.Context, StateReader) (interface{}, error)
}
Starter starts the protocol
type StateConfig ¶ added in v0.11.0
type StateConfig struct { Namespace string // namespace used by state's storage Key []byte MinKey []byte MaxKey []byte Cond db.Condition }
StateConfig is the config for accessing stateDB
func CreateStateConfig ¶ added in v0.11.0
func CreateStateConfig(opts ...StateOption) (*StateConfig, error)
CreateStateConfig creates a config for accessing stateDB
type StateManager ¶
type StateManager interface { StateReader // Accounts Snapshot() int Revert(int) error // General state PutState(interface{}, ...StateOption) (uint64, error) DelState(...StateOption) (uint64, error) WriteView(string, interface{}) error Dock }
StateManager defines the stateDB interface atop IoTeX blockchain
type StateOption ¶ added in v0.11.0
type StateOption func(*StateConfig) error
StateOption sets parameter for access state
func FilterOption ¶ added in v0.11.0
func FilterOption(cond db.Condition, minKey, maxKey []byte) StateOption
FilterOption sets the filter
func KeyOption ¶ added in v0.11.0
func KeyOption(key []byte) StateOption
KeyOption sets the key for call
func LegacyKeyOption ¶ added in v0.11.0
func LegacyKeyOption(key hash.Hash160) StateOption
LegacyKeyOption sets the key for call with legacy key
func NamespaceOption ¶ added in v0.11.0
func NamespaceOption(ns string) StateOption
NamespaceOption creates an option for given namesapce
type StateReader ¶ added in v0.11.0
type StateReader interface { Height() (uint64, error) State(interface{}, ...StateOption) (uint64, error) States(...StateOption) (uint64, state.Iterator, error) ReadView(string) (interface{}, error) }
StateReader defines an interface to read stateDB