rootchain

package
v1.0.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Nov 29, 2024 License: AGPL-3.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CertRequestBuffer

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

func NewCertificationRequestBuffer

func NewCertificationRequestBuffer() *CertRequestBuffer

NewCertificationRequestBuffer create new certification nodeRequest buffer

func (*CertRequestBuffer) Add

Add request to certification store. Per node id first valid request is stored. Rest are either duplicate or equivocating and in both cases error is returned. Clear or Reset in order to receive new nodeRequest

func (*CertRequestBuffer) Clear

func (c *CertRequestBuffer) Clear(id types.PartitionID, shard types.ShardID)

Clear clears node request in one partition

func (*CertRequestBuffer) IsConsensusReceived

func (c *CertRequestBuffer) IsConsensusReceived(id types.PartitionID, shard types.ShardID, tb QuorumInfo) QuorumStatus

IsConsensusReceived has partition with id reached consensus

func (*CertRequestBuffer) Reset

func (c *CertRequestBuffer) Reset()

Reset removed all incoming nodeRequest from all stores

type ConsensusManager

type ConsensusManager interface {
	// RequestCertification accepts certification requests with proof of quorum or no-quorum.
	RequestCertification(ctx context.Context, cr consensus.IRChangeRequest) error
	// CertificationResult read the channel to receive certification results
	CertificationResult() <-chan *certification.CertificationResponse
	ShardInfo(partition types.PartitionID, shard types.ShardID) (*storage.ShardInfo, error)
	// Run consensus algorithm
	Run(ctx context.Context) error
}

type Node

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

func New

func New(
	p *network.Peer,
	pNet PartitionNet,
	cm ConsensusManager,
	observe Observability,
) (*Node, error)

New creates a new instance of the root chain node

func (*Node) GetPeer

func (v *Node) GetPeer() *network.Peer

func (*Node) Run

func (v *Node) Run(ctx context.Context) error

type Observability

type Observability interface {
	Meter(name string, opts ...metric.MeterOption) metric.Meter
	Tracer(name string, options ...trace.TracerOption) trace.Tracer
	Logger() *slog.Logger
}

type PartitionNet

type PartitionNet interface {
	Send(ctx context.Context, msg any, receivers ...peer.ID) error
	ReceivedChannel() <-chan any
}

type QuorumInfo

type QuorumInfo interface {
	GetQuorum() uint64
	GetTotalNodes() uint64
}

type QuorumStatus

type QuorumStatus uint8
const (
	QuorumUnknown QuorumStatus = iota
	QuorumInProgress
	QuorumAchieved
	QuorumNotPossible
)

func (QuorumStatus) String

func (qs QuorumStatus) String() string

type Subscriptions

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

func NewSubscriptions

func NewSubscriptions(m metric.Meter) *Subscriptions

func (*Subscriptions) Get

func (s *Subscriptions) Get(id types.PartitionID) []string

func (*Subscriptions) ResponseSent

func (s *Subscriptions) ResponseSent(id types.PartitionID, nodeId string)

func (*Subscriptions) Subscribe

func (s *Subscriptions) Subscribe(id types.PartitionID, nodeId string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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