Documentation ¶
Index ¶
- Constants
- Variables
- func GetAllViewFromHash(rHash string, byHash map[string]types.BlockPoolInterface, ...) (res []types.BlockPoolInterface)
- func GetBlksByPrevHash(prevHash string, byHash map[string]types.BlockPoolInterface, ...) (res []types.BlockPoolInterface)
- func GetFinalBlockFromBlockHash_v1(currentFinalHash string, byHash map[string]types.BlockPoolInterface, ...) (res []types.BlockPoolInterface)
- func GetLongestChain(currentFinalHash string, byHash map[string]types.BlockPoolInterface, ...) (res []types.BlockPoolInterface)
- func GetPoolInfo(byHash map[string]types.BlockPoolInterface) (res []types.BlockPoolInterface)
- func InsertBatchBlock(chain Chain, blocks []types.BlockInterface) (int, error)
- type BeaconChainInterface
- type BeaconPeerState
- type BeaconSyncProcess
- type BlkPool
- func (pool *BlkPool) AddBlock(blk types.BlockPoolInterface)
- func (pool *BlkPool) AddPreviousValidationData(hash common.Hash, validationData string)
- func (pool *BlkPool) GetAllViewByHash(rHash string) []types.BlockPoolInterface
- func (pool *BlkPool) GetBlock(hash common.Hash) types.BlockPoolInterface
- func (pool *BlkPool) GetBlockByPrevHash(prevHash common.Hash) []types.BlockPoolInterface
- func (pool *BlkPool) GetBlockList() []types.BlockPoolInterface
- func (pool *BlkPool) GetFinalBlockFromBlockHash(currentHash string) []types.BlockPoolInterface
- func (pool *BlkPool) GetLatestHeight(currentHash string) uint64
- func (pool *BlkPool) GetLongestChain(currentHash string) []types.BlockPoolInterface
- func (pool *BlkPool) GetPoolInfo() []types.BlockPoolInterface
- func (pool *BlkPool) GetPoolSize() int
- func (pool *BlkPool) GetPrevHashPool() map[string][]string
- func (pool *BlkPool) GetPreviousValidationData(hash common.Hash) string
- func (pool *BlkPool) HasHash(hash common.Hash) bool
- func (pool *BlkPool) RemoveBlock(block types.BlockPoolInterface)
- func (pool *BlkPool) RemoveBlocks(blocks []types.BlockPoolInterface)
- func (pool *BlkPool) RemovePrevHash(hash string)
- func (pool *BlkPool) Start()
- type Chain
- type CrossShardSyncProcess
- type CrossXReq
- type JsonRequest
- type JsonResponse
- type LastCrossShardBeaconProcess
- type Network
- type RPCError
- type ShardChainInterface
- type ShardPeerState
- type ShardSyncProcess
- type SyncInfo
- type SynckerLogger
- type SynckerManager
- func (synckerManager *SynckerManager) GetAllViewByHash(poolType byte, bestHash string, sID int) []types.BlockPoolInterface
- func (synckerManager *SynckerManager) GetCrossShardBlocksForShardProducer(curView *blockchain.ShardBestState, limit map[byte][]uint64) map[byte][]interface{}
- func (synckerManager *SynckerManager) GetCrossShardBlocksForShardValidator(curView *blockchain.ShardBestState, list map[byte][]uint64) (map[byte][]interface{}, error)
- func (synckerManager *SynckerManager) GetPoolInfo(poolType byte, sID int) []types.BlockPoolInterface
- func (synckerManager *SynckerManager) GetPoolLatestHeight(poolType byte, bestHash string, sID int) uint64
- func (synckerManager *SynckerManager) GetSyncStats() SynckerStats
- func (synckerManager *SynckerManager) Init(config *SynckerManagerConfig)
- func (s *SynckerManager) InsertCrossShardBlock(blk *types.CrossShardBlock)
- func (synckerManager *SynckerManager) IsChainReady(chainID int) bool
- func (synckerManager *SynckerManager) ReceiveBlock(block interface{}, previousValidationData string, peerID string)
- func (synckerManager *SynckerManager) ReceivePeerState(peerState *wire.MessagePeerState)
- func (synckerManager *SynckerManager) Start()
- func (synckerManager *SynckerManager) Stop()
- func (synckerManager *SynckerManager) StreamMissingCrossShardBlock(ctx context.Context, toShard byte, missingBlock map[byte][]uint64)
- func (synckerManager *SynckerManager) SyncMissingBeaconBlock(ctx context.Context, peerID string, fromHash common.Hash)
- func (synckerManager *SynckerManager) SyncMissingShardBlock(ctx context.Context, peerID string, sid byte, fromHash common.Hash)
- type SynckerManagerConfig
- type SynckerStats
- type TmpBlock
Constants ¶
View Source
const ( BeaconPoolType = iota ShardPoolType CrossShardPoolType )
View Source
const BOOTSTRAP_SYNC = "bootstrap_sync"
View Source
const MAX_CROSSX_BLOCK = 10
View Source
const MAX_S2B_BLOCK = 90
View Source
const RUNNING_SYNC = "running_sync"
View Source
const STALL_SYNC = "stall_sync" //for test only
View Source
const STOP_SYNC = "stop_sync"
Variables ¶
View Source
var Logger = SynckerLogger{}
Global instant to use
Functions ¶
func GetAllViewFromHash ¶
func GetAllViewFromHash( rHash string, byHash map[string]types.BlockPoolInterface, byPrevHash map[string][]string, ) ( res []types.BlockPoolInterface, )
func GetBlksByPrevHash ¶
func GetBlksByPrevHash( prevHash string, byHash map[string]types.BlockPoolInterface, byPrevHash map[string][]string, ) ( res []types.BlockPoolInterface, )
func GetFinalBlockFromBlockHash_v1 ¶
func GetFinalBlockFromBlockHash_v1(currentFinalHash string, byHash map[string]types.BlockPoolInterface, byPrevHash map[string][]string) (res []types.BlockPoolInterface)
final block
func GetLongestChain ¶
func GetLongestChain(currentFinalHash string, byHash map[string]types.BlockPoolInterface, byPrevHash map[string][]string) (res []types.BlockPoolInterface)
func GetPoolInfo ¶
func GetPoolInfo(byHash map[string]types.BlockPoolInterface) (res []types.BlockPoolInterface)
func InsertBatchBlock ¶
func InsertBatchBlock(chain Chain, blocks []types.BlockInterface) (int, error)
Types ¶
type BeaconChainInterface ¶
type BeaconPeerState ¶
type BeaconSyncProcess ¶
type BeaconSyncProcess struct {
// contains filtered or unexported fields
}
func NewBeaconSyncProcess ¶
func NewBeaconSyncProcess(network Network, consensus peerv2.ConsensusData, bc *blockchain.BlockChain, chain BeaconChainInterface) *BeaconSyncProcess
type BlkPool ¶
type BlkPool struct {
// contains filtered or unexported fields
}
func NewBlkPool ¶
func (*BlkPool) AddBlock ¶
func (pool *BlkPool) AddBlock(blk types.BlockPoolInterface)
func (*BlkPool) AddPreviousValidationData ¶
func (*BlkPool) GetAllViewByHash ¶
func (pool *BlkPool) GetAllViewByHash(rHash string) []types.BlockPoolInterface
func (*BlkPool) GetBlockByPrevHash ¶
func (pool *BlkPool) GetBlockByPrevHash(prevHash common.Hash) []types.BlockPoolInterface
func (*BlkPool) GetBlockList ¶
func (pool *BlkPool) GetBlockList() []types.BlockPoolInterface
func (*BlkPool) GetFinalBlockFromBlockHash ¶
func (pool *BlkPool) GetFinalBlockFromBlockHash(currentHash string) []types.BlockPoolInterface
When get s2b block for producer Get Block from current hash to final block
func (*BlkPool) GetLatestHeight ¶
func (*BlkPool) GetLongestChain ¶
func (pool *BlkPool) GetLongestChain(currentHash string) []types.BlockPoolInterface
When get last block for s2b synchronization Get longest branch in pool
func (*BlkPool) GetPoolInfo ¶
func (pool *BlkPool) GetPoolInfo() []types.BlockPoolInterface
func (*BlkPool) GetPoolSize ¶
func (*BlkPool) GetPrevHashPool ¶
func (*BlkPool) GetPreviousValidationData ¶
func (*BlkPool) RemoveBlock ¶
func (pool *BlkPool) RemoveBlock(block types.BlockPoolInterface)
func (*BlkPool) RemoveBlocks ¶
func (pool *BlkPool) RemoveBlocks(blocks []types.BlockPoolInterface)
func (*BlkPool) RemovePrevHash ¶
type Chain ¶
type Chain interface { GetBestView() multiview.View GetViewByHash(common.Hash) multiview.View GetDatabase() incdb.Database GetAllViewHash() []common.Hash GetBestViewHeight() uint64 GetFinalViewHeight() uint64 SetReady(bool) IsReady() bool GetBestViewHash() string GetFinalViewHash() string GetEpoch() uint64 ValidateBlockSignatures(block types.BlockInterface, committees []incognitokey.CommitteePublicKey, numOfFixNode int) error GetCommittee() []incognitokey.CommitteePublicKey GetLastCommittee() []incognitokey.CommitteePublicKey CurrentHeight() uint64 InsertBlock(block types.BlockInterface, shouldValidate bool) error ReplacePreviousValidationData(previousBlockHash common.Hash, previousProposeHash common.Hash, previousCommittees []incognitokey.CommitteePublicKey, newValidationData string) error CheckExistedBlk(block types.BlockInterface) bool GetCommitteeForSync(types.BlockInterface) ([]incognitokey.CommitteePublicKey, error) // Using only for stream blocks by gRPC CommitteeStateVersion() int }
type CrossShardSyncProcess ¶
type CrossShardSyncProcess struct {
// contains filtered or unexported fields
}
func NewCrossShardSyncProcess ¶
func NewCrossShardSyncProcess(network Network, bc *blockchain.BlockChain, shardSyncProcess *ShardSyncProcess, beaconChain BeaconChainInterface) *CrossShardSyncProcess
func (*CrossShardSyncProcess) InsertCrossShardBlock ¶
func (s *CrossShardSyncProcess) InsertCrossShardBlock(blk interface{})
type JsonRequest ¶
type JsonRequest struct { Jsonrpc string `json:"Jsonrpc"` Method string `json:"Method"` Params interface{} `json:"Params"` Id interface{} `json:"Id"` }
JsonRequest ...
type JsonResponse ¶
type JsonResponse struct { Id *interface{} `json:"Id"` Result json.RawMessage `json:"Result"` Error *RPCError `json:"Error"` Params interface{} `json:"Params"` Method string `json:"Method"` Jsonrpc string `json:"Jsonrpc"` }
type Network ¶
type Network interface { //network RequestBeaconBlocksViaStream(ctx context.Context, peerID string, from uint64, to uint64) (blockCh chan types.BlockInterface, err error) RequestShardBlocksViaStream(ctx context.Context, peerID string, fromSID int, from uint64, to uint64) (blockCh chan types.BlockInterface, err error) RequestCrossShardBlocksViaStream(ctx context.Context, peerID string, fromSID int, toSID int, heights []uint64) (blockCh chan types.BlockInterface, err error) RequestCrossShardBlocksByHashViaStream(ctx context.Context, peerID string, fromSID int, toSID int, hashes [][]byte) (blockCh chan types.BlockInterface, err error) RequestBeaconBlocksByHashViaStream(ctx context.Context, peerID string, hashes [][]byte) (blockCh chan types.BlockInterface, err error) RequestShardBlocksByHashViaStream(ctx context.Context, peerID string, fromSID int, hashes [][]byte) (blockCh chan types.BlockInterface, err error) PublishMessageToShard(msg wire.Message, shardID byte) error SetSyncMode(string) }
type ShardChainInterface ¶
type ShardPeerState ¶
type ShardSyncProcess ¶
type ShardSyncProcess struct { Network Network Chain ShardChainInterface // contains filtered or unexported fields }
func NewShardSyncProcess ¶
func NewShardSyncProcess( shardID int, network Network, bc *blockchain.BlockChain, beaconChain BeaconChainInterface, chain ShardChainInterface, consensus peerv2.ConsensusData, ) *ShardSyncProcess
func (*ShardSyncProcess) Stall ¶
func (s *ShardSyncProcess) Stall()
type SyncInfo ¶
type SyncInfo struct { IsSync bool LastInsert string BlockHeight uint64 BlockTime string BlockHash string }
Get Status Function
type SynckerLogger ¶
func (*SynckerLogger) Init ¶
func (self *SynckerLogger) Init(inst common.Logger)
type SynckerManager ¶
type SynckerManager struct { BeaconSyncProcess *BeaconSyncProcess ShardSyncProcess map[int]*ShardSyncProcess CrossShardSyncProcess map[int]*CrossShardSyncProcess Blockchain *blockchain.BlockChain // contains filtered or unexported fields }
func NewSynckerManager ¶
func NewSynckerManager() *SynckerManager
func (*SynckerManager) GetAllViewByHash ¶
func (synckerManager *SynckerManager) GetAllViewByHash(poolType byte, bestHash string, sID int) []types.BlockPoolInterface
func (*SynckerManager) GetCrossShardBlocksForShardProducer ¶
func (synckerManager *SynckerManager) GetCrossShardBlocksForShardProducer(curView *blockchain.ShardBestState, limit map[byte][]uint64) map[byte][]interface{}
Get Crossshard Block for creating shardblock block
func (*SynckerManager) GetCrossShardBlocksForShardValidator ¶
func (synckerManager *SynckerManager) GetCrossShardBlocksForShardValidator(curView *blockchain.ShardBestState, list map[byte][]uint64) (map[byte][]interface{}, error)
Get Crossshard Block for validating shardblock block
func (*SynckerManager) GetPoolInfo ¶
func (synckerManager *SynckerManager) GetPoolInfo(poolType byte, sID int) []types.BlockPoolInterface
func (*SynckerManager) GetPoolLatestHeight ¶
func (synckerManager *SynckerManager) GetPoolLatestHeight(poolType byte, bestHash string, sID int) uint64
func (*SynckerManager) GetSyncStats ¶
func (synckerManager *SynckerManager) GetSyncStats() SynckerStats
func (*SynckerManager) Init ¶
func (synckerManager *SynckerManager) Init(config *SynckerManagerConfig)
func (*SynckerManager) InsertCrossShardBlock ¶
func (s *SynckerManager) InsertCrossShardBlock(blk *types.CrossShardBlock)
func (*SynckerManager) IsChainReady ¶
func (synckerManager *SynckerManager) IsChainReady(chainID int) bool
func (*SynckerManager) ReceiveBlock ¶
func (synckerManager *SynckerManager) ReceiveBlock(block interface{}, previousValidationData string, peerID string)
Process incomming broadcast block
func (*SynckerManager) ReceivePeerState ¶
func (synckerManager *SynckerManager) ReceivePeerState(peerState *wire.MessagePeerState)
Process incomming broadcast peerstate
func (*SynckerManager) Start ¶
func (synckerManager *SynckerManager) Start()
func (*SynckerManager) Stop ¶
func (synckerManager *SynckerManager) Stop()
func (*SynckerManager) StreamMissingCrossShardBlock ¶
func (synckerManager *SynckerManager) StreamMissingCrossShardBlock(ctx context.Context, toShard byte, missingBlock map[byte][]uint64)
Stream Missing CrossShard Block
func (*SynckerManager) SyncMissingBeaconBlock ¶
func (synckerManager *SynckerManager) SyncMissingBeaconBlock(ctx context.Context, peerID string, fromHash common.Hash)
Sync missing beacon block from a hash to our final view (skip if we already have)
func (*SynckerManager) SyncMissingShardBlock ¶
func (synckerManager *SynckerManager) SyncMissingShardBlock(ctx context.Context, peerID string, sid byte, fromHash common.Hash)
Sync back missing shard block from a hash to our final views (skip if we already have)
type SynckerManagerConfig ¶
type SynckerManagerConfig struct { Network Network Blockchain *blockchain.BlockChain Consensus peerv2.ConsensusData MiningKey string }
type SynckerStats ¶
type TmpBlock ¶
type TmpBlock struct { Height uint64 BlkHash *common.Hash PreHash common.Hash ShardID int Round int }
func (*TmpBlock) FullHashString ¶
func (*TmpBlock) GetPrevHash ¶
func (*TmpBlock) GetShardID ¶
Source Files ¶
Click to show internal directories.
Click to hide internal directories.