Documentation
¶
Index ¶
- Constants
- Variables
- func GetVMConfigCtx(ctx context.Context) (vm.Config, bool)
- func NewKVStoreForTrieWithStateManager(ns string, sm StateManager) trie.KVStore
- func NewKVStoreForTrieWithStateReader(ns string, sr StateReader) trie.KVStore
- 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 WithFeatureCtx(ctx context.Context) context.Context
- func WithFeatureWithHeightCtx(ctx context.Context) context.Context
- func WithRegistry(ctx context.Context, reg *Registry) context.Context
- func WithVMConfigCtx(ctx context.Context, vmConfig vm.Config) context.Context
- type AccountState
- type ActionCtx
- type ActionHandler
- type ActionValidator
- type BlockCtx
- type BlockchainCtx
- type CheckFunc
- type Committer
- type Dock
- type FeatureCtx
- type FeatureWithHeightCtx
- type GenericValidator
- type GenesisStateCreator
- type PostSystemActionsCreator
- type PreStatesCreator
- type Protocol
- type Registry
- type SerializableBytes
- type Starter
- type StateConfig
- type StateManager
- type StateOption
- type StateReader
- type TipInfo
- type View
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 GetVMConfigCtx ¶
GetVMConfigCtx returns the vm config from context
func NewKVStoreForTrieWithStateManager ¶
func NewKVStoreForTrieWithStateManager(ns string, sm StateManager) trie.KVStore
NewKVStoreForTrieWithStateManager creates a trie.KVStore with state manager
func NewKVStoreForTrieWithStateReader ¶
func NewKVStoreForTrieWithStateReader(ns string, sr StateReader) trie.KVStore
NewKVStoreForTrieWithStateReader creates a trie.KVStore with state reader
func WithActionCtx ¶
WithActionCtx add ActionCtx into context.
func WithBlockCtx ¶
WithBlockCtx add BlockCtx into context.
func WithBlockchainCtx ¶
func WithBlockchainCtx(ctx context.Context, bc BlockchainCtx) context.Context
WithBlockchainCtx add BlockchainCtx into context.
func WithFeatureCtx ¶
WithFeatureCtx add FeatureCtx into context.
func WithFeatureWithHeightCtx ¶
WithFeatureWithHeightCtx add FeatureWithHeightCtx into context.
func WithRegistry ¶
WithRegistry adds registry to context
Types ¶
type AccountState ¶
AccountState defines a function to return the account state of a given address
type ActionCtx ¶
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 ¶
GetActionCtx gets ActionCtx
func MustGetActionCtx ¶
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 ¶
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 MustGetBlockCtx ¶
MustGetBlockCtx must get BlockCtx . If context doesn't exist, this function panic.
type BlockchainCtx ¶
type BlockchainCtx struct {
// Tip is the information of tip block
Tip TipInfo
//ChainID of the node
ChainID uint32
}
BlockchainCtx provides blockchain auxiliary information.
func GetBlockchainCtx ¶
func GetBlockchainCtx(ctx context.Context) (BlockchainCtx, bool)
GetBlockchainCtx gets BlockchainCtx
func MustGetBlockchainCtx ¶
func MustGetBlockchainCtx(ctx context.Context) BlockchainCtx
MustGetBlockchainCtx must get BlockchainCtx. If context doesn't exist, this function panic.
type Committer ¶
type Committer interface {
Commit(context.Context, StateManager) error
}
Committer performs commit action of the protocol
type Dock ¶
type Dock interface {
ProtocolDirty(string) bool
Load(string, string, interface{}) error
Unload(string, 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 FeatureCtx ¶
type FeatureCtx struct {
FixDoubleChargeGas bool
SystemWideActionGasLimit bool
NotFixTopicCopyBug bool
SetRevertMessageToReceipt bool
FixGetHashFnHeight bool
UsePendingNonceOption bool
AsyncContractTrie bool
AddOutOfGasToTransactionLog bool
AddChainIDToConfig bool
UseV2Storage bool
CannotUnstakeAgain bool
SkipStakingIndexer bool
ReturnFetchError bool
CannotTranferToSelf bool
NewStakingReceiptFormat bool
UpdateBlockMeta bool
CurrentEpochProductivity bool
FixSnapshotOrder bool
AllowCorrectDefaultChainID bool
CorrectGetHashFn bool
CorrectTxLogIndex bool
RevertLog bool
}
FeatureCtx provides features information.
func GetFeatureCtx ¶
func GetFeatureCtx(ctx context.Context) (FeatureCtx, bool)
GetFeatureCtx gets FeatureCtx.
func MustGetFeatureCtx ¶
func MustGetFeatureCtx(ctx context.Context) FeatureCtx
MustGetFeatureCtx must get FeatureCtx. If context doesn't exist, this function panic.
type FeatureWithHeightCtx ¶
type FeatureWithHeightCtx struct {
GetUnproductiveDelegates CheckFunc
ReadStateFromDB CheckFunc
UseV2Staking CheckFunc
EnableNativeStaking CheckFunc
StakingCorrectGas CheckFunc
CalculateProbationList CheckFunc
LoadCandidatesLegacy CheckFunc
}
FeatureWithHeightCtx provides feature check functions.
func GetFeatureWithHeightCtx ¶
func GetFeatureWithHeightCtx(ctx context.Context) (FeatureWithHeightCtx, bool)
GetFeatureWithHeightCtx gets FeatureWithHeightCtx.
func MustGetFeatureWithHeightCtx ¶
func MustGetFeatureWithHeightCtx(ctx context.Context) FeatureWithHeightCtx
MustGetFeatureWithHeightCtx must get FeatureWithHeightCtx. If context doesn't exist, this function panic.
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 ¶
type GenesisStateCreator interface {
CreateGenesisStates(context.Context, StateManager) error
}
GenesisStateCreator creates some genesis states
type PostSystemActionsCreator ¶
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 ¶
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, uint64, error)
Register(*Registry) error
ForceRegister(*Registry) error
Name() string
}
Protocol defines the protocol interfaces atop IoTeX blockchain
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry is the hub of all protocols deployed on the chain
func GetRegistry ¶
GetRegistry returns the registry from context
func MustGetRegistry ¶
MustGetRegistry returns the registry from context
func (*Registry) ForceRegister ¶
ForceRegister registers the protocol with a unique ID and force replacing the previous protocol if it exists
type SerializableBytes ¶
type SerializableBytes []byte
SerializableBytes defines a type of serializable bytes
func (*SerializableBytes) Deserialize ¶
func (sb *SerializableBytes) Deserialize(data []byte) error
Deserialize copies data into bytes
func (SerializableBytes) Serialize ¶
func (sb SerializableBytes) Serialize() ([]byte, error)
Serialize copies and return bytes
type Starter ¶
type Starter interface {
Start(context.Context, StateReader) (interface{}, error)
}
Starter starts the protocol
type StateConfig ¶
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 ¶
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 ¶
type StateOption func(*StateConfig) error
StateOption sets parameter for access state
func FilterOption ¶
func FilterOption(cond db.Condition, minKey, maxKey []byte) StateOption
FilterOption sets the filter
func LegacyKeyOption ¶
func LegacyKeyOption(key hash.Hash160) StateOption
LegacyKeyOption sets the key for call with legacy key
func NamespaceOption ¶
func NamespaceOption(ns string) StateOption
NamespaceOption creates an option for given namesapce
type StateReader ¶
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