Documentation
¶
Index ¶
- Variables
- func BuildBlock(t *testing.T, instance runtime.Instance, parent *types.Header, ...) *types.Block
- type BabeVerifier
- type BlockImportHandler
- type BlockState
- type ChainProcessor
- type ChainSync
- type CodeSubstitutedState
- type Config
- type DisjointBlockSet
- type FinalityGadget
- type Network
- type RuntimeInstance
- type Service
- func (s *Service) CreateBlockResponse(req *network.BlockRequestMessage) (*network.BlockResponseMessage, error)
- func (s *Service) HandleBlockAnnounce(from peer.ID, msg *network.BlockAnnounceMessage) error
- func (s *Service) HandleBlockAnnounceHandshake(from peer.ID, msg *network.BlockAnnounceHandshake) error
- func (s *Service) HighestBlock() uint
- func (s *Service) IsSynced() bool
- func (s *Service) Start() error
- func (s *Service) Stop() error
- type StorageState
- type TransactionState
Constants ¶
This section is empty.
Variables ¶
var ( // ErrServiceStopped is returned when the service has been stopped ErrServiceStopped = errors.New("service has been stopped") // ErrInvalidBlock is returned when a block cannot be verified ErrInvalidBlock = errors.New("could not verify block") // ErrInvalidBlockRequest is returned when an invalid block request is received ErrInvalidBlockRequest = errors.New("invalid block request") )
Functions ¶
Types ¶
type BabeVerifier ¶ added in v0.7.0
BabeVerifier deals with BABE block verification
type BlockImportHandler ¶ added in v0.7.0
type BlockImportHandler interface {
HandleBlockImport(block *types.Block, state *rtstorage.TrieState, announce bool) error
}
BlockImportHandler is the interface for the handler of newly imported blocks
type BlockState ¶
type BlockState interface {
BestBlockHash() common.Hash
BestBlockHeader() (*types.Header, error)
BestBlockNumber() (number uint, err error)
AddBlock(*types.Block) error
CompareAndSetBlockData(bd *types.BlockData) error
GetBlockByNumber(blockNumber uint) (*types.Block, error)
HasBlockBody(hash common.Hash) (bool, error)
GetBlockBody(common.Hash) (*types.Body, error)
SetHeader(*types.Header) error
GetHeader(common.Hash) (*types.Header, error)
HasHeader(hash common.Hash) (bool, error)
SubChain(start, end common.Hash) ([]common.Hash, error)
GetReceipt(common.Hash) ([]byte, error)
GetMessageQueue(common.Hash) ([]byte, error)
GetJustification(common.Hash) ([]byte, error)
SetJustification(hash common.Hash, data []byte) error
SetFinalisedHash(hash common.Hash, round, setID uint64) error
AddBlockToBlockTree(block *types.Block) error
GetHashByNumber(blockNumber uint) (common.Hash, error)
GetBlockByHash(common.Hash) (*types.Block, error)
GetRuntime(blockHash common.Hash) (instance runtime.Instance, err error)
StoreRuntime(common.Hash, runtime.Instance)
GetHighestFinalisedHeader() (*types.Header, error)
GetFinalisedNotifierChannel() chan *types.FinalisationInfo
GetHeaderByNumber(num uint) (*types.Header, error)
GetAllBlocksAtNumber(num uint) ([]common.Hash, error)
IsDescendantOf(parent, child common.Hash) (bool, error)
}
BlockState is the interface for the block state
type ChainProcessor ¶ added in v0.7.0
type ChainProcessor interface {
// contains filtered or unexported methods
}
ChainProcessor processes ready blocks. it is implemented by *chainProcessor
type ChainSync ¶ added in v0.7.0
type ChainSync interface {
// contains filtered or unexported methods
}
ChainSync contains the methods used by the high-level service into the `chainSync` module
type CodeSubstitutedState ¶ added in v0.7.0
type CodeSubstitutedState interface {
LoadCodeSubstitutedBlockHash() common.Hash
StoreCodeSubstitutedBlockHash(hash common.Hash) error
}
CodeSubstitutedState interface to handle storage of code substitute state
type Config ¶
type Config struct {
LogLvl log.Level
Network Network
BlockState BlockState
StorageState StorageState
FinalityGadget FinalityGadget
TransactionState TransactionState
BlockImportHandler BlockImportHandler
BabeVerifier BabeVerifier
MinPeers, MaxPeers int
SlotDuration time.Duration
Telemetry telemetry.Client
}
Config is the configuration for the sync Service.
type DisjointBlockSet ¶ added in v0.7.0
type DisjointBlockSet interface {
// contains filtered or unexported methods
}
DisjointBlockSet represents a set of incomplete blocks, or blocks with an unknown parent. it is implemented by *disjointBlockSet
type FinalityGadget ¶ added in v0.7.0
FinalityGadget implements justification verification functionality
type Network ¶ added in v0.7.0
type Network interface {
// DoBlockRequest sends a request to the given peer.
// If a response is received within a certain time period,
// it is returned, otherwise an error is returned.
DoBlockRequest(to peer.ID, req *network.BlockRequestMessage) (*network.BlockResponseMessage, error)
// Peers returns a list of currently connected peers
Peers() []common.PeerInfo
// ReportPeer reports peer based on the peer behaviour.
ReportPeer(change peerset.ReputationChange, p peer.ID)
}
Network is the interface for the network
type RuntimeInstance ¶ added in v0.7.0
type RuntimeInstance interface {
UpdateRuntimeCode([]byte) error
Stop()
NodeStorage() runtime.NodeStorage
NetworkService() runtime.BasicNetwork
Keystore() *keystore.GlobalKeystore
Validator() bool
Exec(function string, data []byte) ([]byte, error)
SetContextStorage(s runtime.Storage)
GetCodeHash() common.Hash
Version() runtime.Version
Metadata() ([]byte, error)
BabeConfiguration() (*types.BabeConfiguration, error)
GrandpaAuthorities() ([]types.Authority, error)
ValidateTransaction(e types.Extrinsic) (*transaction.Validity, error)
InitializeBlock(header *types.Header) error
InherentExtrinsics(data []byte) ([]byte, error)
ApplyExtrinsic(data types.Extrinsic) ([]byte, error)
FinalizeBlock() (*types.Header, error)
ExecuteBlock(block *types.Block) ([]byte, error)
DecodeSessionKeys(enc []byte) ([]byte, error)
PaymentQueryInfo(ext []byte) (*types.RuntimeDispatchInfo, error)
CheckInherents()
RandomSeed()
OffchainWorker()
GenerateSessionKeys()
}
RuntimeInstance is the interface for runtime Instance
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service deals with chain syncing by sending block request messages and watching for responses.
func NewService ¶
NewService returns a new *sync.Service
func (*Service) CreateBlockResponse ¶
func (s *Service) CreateBlockResponse(req *network.BlockRequestMessage) (*network.BlockResponseMessage, error)
CreateBlockResponse creates a block response message from a block request message
func (*Service) HandleBlockAnnounce ¶
HandleBlockAnnounce notifies the `chainSync` module that we have received a block announcement from the given peer.
func (*Service) HandleBlockAnnounceHandshake ¶ added in v0.7.0
func (s *Service) HandleBlockAnnounceHandshake(from peer.ID, msg *network.BlockAnnounceHandshake) error
HandleBlockAnnounceHandshake notifies the `chainSync` module that we have received a BlockAnnounceHandshake from the given peer.
func (*Service) HighestBlock ¶ added in v0.7.0
HighestBlock gets the highest known block number
type StorageState ¶
type StorageState interface {
TrieState(root *common.Hash) (*rtstorage.TrieState, error)
LoadCodeHash(*common.Hash) (common.Hash, error)
sync.Locker
}
StorageState is the interface for the storage state
type TransactionState ¶
TransactionState is the interface for transaction queue methods