syncker

package
v0.0.0-...-7ece11e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 29, 2023 License: MIT Imports: 30 Imported by: 2

Documentation

Index

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 BeaconChainInterface interface {
	Chain
	GetShardBestViewHash() map[byte]common.Hash
	GetShardBestViewHeight() map[byte]uint64
}

type BeaconPeerState

type BeaconPeerState struct {
	Timestamp      int64
	BestViewHash   string
	BestViewHeight uint64
	// contains filtered or unexported fields
}

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 NewBlkPool(name string, IsOutdatedBlk func(interface{}) bool) *BlkPool

func (*BlkPool) AddBlock

func (pool *BlkPool) AddBlock(blk types.BlockPoolInterface)

func (*BlkPool) AddPreviousValidationData

func (pool *BlkPool) AddPreviousValidationData(hash common.Hash, validationData string)

func (*BlkPool) GetAllViewByHash

func (pool *BlkPool) GetAllViewByHash(rHash string) []types.BlockPoolInterface

func (*BlkPool) GetBlock

func (pool *BlkPool) GetBlock(hash common.Hash) 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 (pool *BlkPool) GetLatestHeight(currentHash string) uint64

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 (pool *BlkPool) GetPoolSize() int

func (*BlkPool) GetPrevHashPool

func (pool *BlkPool) GetPrevHashPool() map[string][]string

func (*BlkPool) GetPreviousValidationData

func (pool *BlkPool) GetPreviousValidationData(hash common.Hash) string

func (*BlkPool) HasHash

func (pool *BlkPool) HasHash(hash common.Hash) bool

func (*BlkPool) RemoveBlock

func (pool *BlkPool) RemoveBlock(block types.BlockPoolInterface)

func (*BlkPool) RemoveBlocks

func (pool *BlkPool) RemoveBlocks(blocks []types.BlockPoolInterface)

func (*BlkPool) RemovePrevHash

func (pool *BlkPool) RemovePrevHash(hash string)

func (*BlkPool) Start

func (pool *BlkPool) Start()

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 CrossXReq

type CrossXReq struct {
	// contains filtered or unexported fields
}

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 LastCrossShardBeaconProcess

type LastCrossShardBeaconProcess struct {
	BeaconHeight        uint64
	LastCrossShardState map[byte]map[byte]uint64
}

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 RPCError

type RPCError struct {
	Code       int    `json:"Code,omitempty"`
	Message    string `json:"Message,omitempty"`
	StackTrace string `json:"StackTrace"`
	// contains filtered or unexported fields
}

type ShardChainInterface

type ShardChainInterface interface {
	Chain
	GetCrossShardState() map[byte]uint64
}

type ShardPeerState

type ShardPeerState struct {
	Timestamp      int64
	BestViewHash   string
	BestViewHeight uint64
	// contains filtered or unexported fields
}

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

type SynckerLogger struct {
	common.Logger
}

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 SynckerStats struct {
	Beacon SyncInfo
	Shard  map[int]*SyncInfo
}

type TmpBlock

type TmpBlock struct {
	Height  uint64
	BlkHash *common.Hash
	PreHash common.Hash
	ShardID int
	Round   int
}

func (*TmpBlock) FullHashString

func (blk *TmpBlock) FullHashString() string

func (*TmpBlock) GetHeight

func (blk *TmpBlock) GetHeight() uint64

func (*TmpBlock) GetPrevHash

func (blk *TmpBlock) GetPrevHash() common.Hash

func (*TmpBlock) GetRound

func (blk *TmpBlock) GetRound() int

func (*TmpBlock) GetShardID

func (blk *TmpBlock) GetShardID() int

func (*TmpBlock) Hash

func (blk *TmpBlock) Hash() *common.Hash

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL