Documentation
¶
Index ¶
- Constants
- type AdditionalRequest
- type Communicator
- type CommunicatorMock
- func (m *CommunicatorMock) AllMocksCalled() bool
- func (m *CommunicatorMock) CheckMocksCalled()
- func (m *CommunicatorMock) ExchangePhase1(p context.Context, p1 *packets.NodeAnnounceClaim, p2 []core.Node, ...) (r map[core.RecordRef]*packets.Phase1Packet, r1 error)
- func (m *CommunicatorMock) ExchangePhase1Finished() bool
- func (m *CommunicatorMock) ExchangePhase1MinimockCounter() uint64
- func (m *CommunicatorMock) ExchangePhase1MinimockPreCounter() uint64
- func (m *CommunicatorMock) ExchangePhase2(p context.Context, p1 network.UnsyncList, p2 []core.Node, ...) (r map[core.RecordRef]*packets.Phase2Packet, r1 error)
- func (m *CommunicatorMock) ExchangePhase2Finished() bool
- func (m *CommunicatorMock) ExchangePhase2MinimockCounter() uint64
- func (m *CommunicatorMock) ExchangePhase2MinimockPreCounter() uint64
- func (m *CommunicatorMock) ExchangePhase3(p context.Context, p1 []core.Node, p2 *packets.Phase3Packet) (r map[core.RecordRef]*packets.Phase3Packet, r1 error)
- func (m *CommunicatorMock) ExchangePhase3Finished() bool
- func (m *CommunicatorMock) ExchangePhase3MinimockCounter() uint64
- func (m *CommunicatorMock) ExchangePhase3MinimockPreCounter() uint64
- func (m *CommunicatorMock) ExchangePhase21(p context.Context, p1 network.UnsyncList, p2 *packets.Phase2Packet, ...) (r []packets.ReferendumVote, r1 error)
- func (m *CommunicatorMock) ExchangePhase21Finished() bool
- func (m *CommunicatorMock) ExchangePhase21MinimockCounter() uint64
- func (m *CommunicatorMock) ExchangePhase21MinimockPreCounter() uint64
- func (m *CommunicatorMock) Finish()
- func (m *CommunicatorMock) Init(p context.Context) (r error)
- func (m *CommunicatorMock) InitFinished() bool
- func (m *CommunicatorMock) InitMinimockCounter() uint64
- func (m *CommunicatorMock) InitMinimockPreCounter() uint64
- func (m *CommunicatorMock) MinimockFinish()
- func (m *CommunicatorMock) MinimockWait(timeout time.Duration)
- func (m *CommunicatorMock) ValidateCallCounters()
- func (m *CommunicatorMock) Wait(timeout time.Duration)
- type CommunicatorMockExchangePhase1Expectation
- type CommunicatorMockExchangePhase1Input
- type CommunicatorMockExchangePhase1Result
- type CommunicatorMockExchangePhase2Expectation
- type CommunicatorMockExchangePhase2Input
- type CommunicatorMockExchangePhase2Result
- type CommunicatorMockExchangePhase3Expectation
- type CommunicatorMockExchangePhase3Input
- type CommunicatorMockExchangePhase3Result
- type CommunicatorMockExchangePhase21Expectation
- type CommunicatorMockExchangePhase21Input
- type CommunicatorMockExchangePhase21Result
- type CommunicatorMockInitExpectation
- type CommunicatorMockInitInput
- type CommunicatorMockInitResult
- type ConsensusCommunicator
- func (nc *ConsensusCommunicator) ExchangePhase1(ctx context.Context, originClaim *packets.NodeAnnounceClaim, ...) (map[core.RecordRef]*packets.Phase1Packet, error)
- func (nc *ConsensusCommunicator) ExchangePhase2(ctx context.Context, list network.UnsyncList, participants []core.Node, ...) (map[core.RecordRef]*packets.Phase2Packet, error)
- func (nc *ConsensusCommunicator) ExchangePhase3(ctx context.Context, participants []core.Node, packet *packets.Phase3Packet) (map[core.RecordRef]*packets.Phase3Packet, error)
- func (nc *ConsensusCommunicator) ExchangePhase21(ctx context.Context, list network.UnsyncList, packet *packets.Phase2Packet, ...) ([]packets.ReferendumVote, error)
- func (nc *ConsensusCommunicator) Init(ctx context.Context) error
- type FirstPhase
- type FirstPhaseImpl
- type FirstPhaseState
- type Phase2MatrixState
- type PhaseManager
- type Phases
- type SecondPhase
- type SecondPhaseImpl
- type SecondPhaseState
- type StateMatrix
- type ThirdPhase
- type ThirdPhaseImpl
- type ThirdPhaseState
Constants ¶
const BFTPercent = 2.0 / 3.0
const MajorityPercent = 0.5
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdditionalRequest ¶ added in v0.8.0
type Communicator ¶ added in v0.6.3
type Communicator interface {
// ExchangePhase1 used in first consensus step to exchange data between participants
ExchangePhase1(
ctx context.Context,
originClaim *packets.NodeAnnounceClaim,
participants []core.Node,
packet *packets.Phase1Packet,
) (map[core.RecordRef]*packets.Phase1Packet, error)
// ExchangePhase2 used in second consensus step to exchange data between participants
ExchangePhase2(ctx context.Context, list network.UnsyncList, participants []core.Node, packet *packets.Phase2Packet) (map[core.RecordRef]*packets.Phase2Packet, error)
// ExchangePhase21 is used between phases 2 and 3 of consensus to send additional MissingNode requests
ExchangePhase21(ctx context.Context, list network.UnsyncList, packet *packets.Phase2Packet, additionalRequests []*AdditionalRequest) ([]packets.ReferendumVote, error)
// ExchangePhase3 used in third consensus step to exchange data between participants
ExchangePhase3(ctx context.Context, participants []core.Node, packet *packets.Phase3Packet) (map[core.RecordRef]*packets.Phase3Packet, error)
component.Initer
}
Communicator interface provides methods to exchange data between nodes
type CommunicatorMock ¶ added in v0.6.3
type CommunicatorMock struct {
ExchangePhase1Func func(p context.Context, p1 *packets.NodeAnnounceClaim, p2 []core.Node, p3 *packets.Phase1Packet) (r map[core.RecordRef]*packets.Phase1Packet, r1 error)
ExchangePhase1Counter uint64
ExchangePhase1PreCounter uint64
ExchangePhase1Mock mCommunicatorMockExchangePhase1
ExchangePhase2Func func(p context.Context, p1 network.UnsyncList, p2 []core.Node, p3 *packets.Phase2Packet) (r map[core.RecordRef]*packets.Phase2Packet, r1 error)
ExchangePhase2Counter uint64
ExchangePhase2PreCounter uint64
ExchangePhase2Mock mCommunicatorMockExchangePhase2
ExchangePhase21Func func(p context.Context, p1 network.UnsyncList, p2 *packets.Phase2Packet, p3 []*AdditionalRequest) (r []packets.ReferendumVote, r1 error)
ExchangePhase21Counter uint64
ExchangePhase21PreCounter uint64
ExchangePhase21Mock mCommunicatorMockExchangePhase21
ExchangePhase3Func func(p context.Context, p1 []core.Node, p2 *packets.Phase3Packet) (r map[core.RecordRef]*packets.Phase3Packet, r1 error)
ExchangePhase3Counter uint64
ExchangePhase3PreCounter uint64
ExchangePhase3Mock mCommunicatorMockExchangePhase3
InitFunc func(p context.Context) (r error)
InitCounter uint64
InitPreCounter uint64
InitMock mCommunicatorMockInit
// contains filtered or unexported fields
}
CommunicatorMock implements github.com/insolar/insolar/consensus/phases.Communicator
func NewCommunicatorMock ¶ added in v0.6.3
func NewCommunicatorMock(t minimock.Tester) *CommunicatorMock
NewCommunicatorMock returns a mock for github.com/insolar/insolar/consensus/phases.Communicator
func (*CommunicatorMock) AllMocksCalled ¶ added in v0.6.3
func (m *CommunicatorMock) AllMocksCalled() bool
AllMocksCalled returns true if all mocked methods were called before the execution of AllMocksCalled, it can be used with assert/require, i.e. assert.True(mock.AllMocksCalled())
func (*CommunicatorMock) CheckMocksCalled ¶ added in v0.6.3
func (m *CommunicatorMock) CheckMocksCalled()
CheckMocksCalled checks that all mocked methods of the interface have been called at least once Deprecated: please use MinimockFinish method or use Finish method of minimock.Controller
func (*CommunicatorMock) ExchangePhase1 ¶ added in v0.6.3
func (m *CommunicatorMock) ExchangePhase1(p context.Context, p1 *packets.NodeAnnounceClaim, p2 []core.Node, p3 *packets.Phase1Packet) (r map[core.RecordRef]*packets.Phase1Packet, r1 error)
ExchangePhase1 implements github.com/insolar/insolar/consensus/phases.Communicator interface
func (*CommunicatorMock) ExchangePhase1Finished ¶ added in v0.7.5
func (m *CommunicatorMock) ExchangePhase1Finished() bool
ExchangePhase1Finished returns true if mock invocations count is ok
func (*CommunicatorMock) ExchangePhase1MinimockCounter ¶ added in v0.6.3
func (m *CommunicatorMock) ExchangePhase1MinimockCounter() uint64
ExchangePhase1MinimockCounter returns a count of CommunicatorMock.ExchangePhase1Func invocations
func (*CommunicatorMock) ExchangePhase1MinimockPreCounter ¶ added in v0.6.3
func (m *CommunicatorMock) ExchangePhase1MinimockPreCounter() uint64
ExchangePhase1MinimockPreCounter returns the value of CommunicatorMock.ExchangePhase1 invocations
func (*CommunicatorMock) ExchangePhase2 ¶ added in v0.6.3
func (m *CommunicatorMock) ExchangePhase2(p context.Context, p1 network.UnsyncList, p2 []core.Node, p3 *packets.Phase2Packet) (r map[core.RecordRef]*packets.Phase2Packet, r1 error)
ExchangePhase2 implements github.com/insolar/insolar/consensus/phases.Communicator interface
func (*CommunicatorMock) ExchangePhase2Finished ¶ added in v0.7.5
func (m *CommunicatorMock) ExchangePhase2Finished() bool
ExchangePhase2Finished returns true if mock invocations count is ok
func (*CommunicatorMock) ExchangePhase2MinimockCounter ¶ added in v0.6.3
func (m *CommunicatorMock) ExchangePhase2MinimockCounter() uint64
ExchangePhase2MinimockCounter returns a count of CommunicatorMock.ExchangePhase2Func invocations
func (*CommunicatorMock) ExchangePhase2MinimockPreCounter ¶ added in v0.6.3
func (m *CommunicatorMock) ExchangePhase2MinimockPreCounter() uint64
ExchangePhase2MinimockPreCounter returns the value of CommunicatorMock.ExchangePhase2 invocations
func (*CommunicatorMock) ExchangePhase3 ¶ added in v0.6.3
func (m *CommunicatorMock) ExchangePhase3(p context.Context, p1 []core.Node, p2 *packets.Phase3Packet) (r map[core.RecordRef]*packets.Phase3Packet, r1 error)
ExchangePhase3 implements github.com/insolar/insolar/consensus/phases.Communicator interface
func (*CommunicatorMock) ExchangePhase3Finished ¶ added in v0.7.5
func (m *CommunicatorMock) ExchangePhase3Finished() bool
ExchangePhase3Finished returns true if mock invocations count is ok
func (*CommunicatorMock) ExchangePhase3MinimockCounter ¶ added in v0.6.3
func (m *CommunicatorMock) ExchangePhase3MinimockCounter() uint64
ExchangePhase3MinimockCounter returns a count of CommunicatorMock.ExchangePhase3Func invocations
func (*CommunicatorMock) ExchangePhase3MinimockPreCounter ¶ added in v0.6.3
func (m *CommunicatorMock) ExchangePhase3MinimockPreCounter() uint64
ExchangePhase3MinimockPreCounter returns the value of CommunicatorMock.ExchangePhase3 invocations
func (*CommunicatorMock) ExchangePhase21 ¶ added in v0.8.0
func (m *CommunicatorMock) ExchangePhase21(p context.Context, p1 network.UnsyncList, p2 *packets.Phase2Packet, p3 []*AdditionalRequest) (r []packets.ReferendumVote, r1 error)
ExchangePhase21 implements github.com/insolar/insolar/consensus/phases.Communicator interface
func (*CommunicatorMock) ExchangePhase21Finished ¶ added in v0.8.0
func (m *CommunicatorMock) ExchangePhase21Finished() bool
ExchangePhase21Finished returns true if mock invocations count is ok
func (*CommunicatorMock) ExchangePhase21MinimockCounter ¶ added in v0.8.0
func (m *CommunicatorMock) ExchangePhase21MinimockCounter() uint64
ExchangePhase21MinimockCounter returns a count of CommunicatorMock.ExchangePhase21Func invocations
func (*CommunicatorMock) ExchangePhase21MinimockPreCounter ¶ added in v0.8.0
func (m *CommunicatorMock) ExchangePhase21MinimockPreCounter() uint64
ExchangePhase21MinimockPreCounter returns the value of CommunicatorMock.ExchangePhase21 invocations
func (*CommunicatorMock) Finish ¶ added in v0.6.3
func (m *CommunicatorMock) Finish()
Finish checks that all mocked methods of the interface have been called at least once Deprecated: please use MinimockFinish or use Finish method of minimock.Controller
func (*CommunicatorMock) Init ¶ added in v0.8.0
func (m *CommunicatorMock) Init(p context.Context) (r error)
Init implements github.com/insolar/insolar/consensus/phases.Communicator interface
func (*CommunicatorMock) InitFinished ¶ added in v0.8.0
func (m *CommunicatorMock) InitFinished() bool
InitFinished returns true if mock invocations count is ok
func (*CommunicatorMock) InitMinimockCounter ¶ added in v0.8.0
func (m *CommunicatorMock) InitMinimockCounter() uint64
InitMinimockCounter returns a count of CommunicatorMock.InitFunc invocations
func (*CommunicatorMock) InitMinimockPreCounter ¶ added in v0.8.0
func (m *CommunicatorMock) InitMinimockPreCounter() uint64
InitMinimockPreCounter returns the value of CommunicatorMock.Init invocations
func (*CommunicatorMock) MinimockFinish ¶ added in v0.6.3
func (m *CommunicatorMock) MinimockFinish()
MinimockFinish checks that all mocked methods of the interface have been called at least once
func (*CommunicatorMock) MinimockWait ¶ added in v0.6.3
func (m *CommunicatorMock) MinimockWait(timeout time.Duration)
MinimockWait waits for all mocked methods to be called at least once this method is called by minimock.Controller
func (*CommunicatorMock) ValidateCallCounters ¶ added in v0.6.3
func (m *CommunicatorMock) ValidateCallCounters()
ValidateCallCounters checks that all mocked methods of the interface have been called at least once Deprecated: please use MinimockFinish method or use Finish method of minimock.Controller
func (*CommunicatorMock) Wait ¶ added in v0.6.3
func (m *CommunicatorMock) Wait(timeout time.Duration)
Wait waits for all mocked methods to be called at least once Deprecated: please use MinimockWait or use Wait method of minimock.Controller
type CommunicatorMockExchangePhase1Expectation ¶ added in v0.7.5
type CommunicatorMockExchangePhase1Expectation struct {
// contains filtered or unexported fields
}
func (*CommunicatorMockExchangePhase1Expectation) Return ¶ added in v0.7.5
func (e *CommunicatorMockExchangePhase1Expectation) Return(r map[core.RecordRef]*packets.Phase1Packet, r1 error)
type CommunicatorMockExchangePhase1Input ¶ added in v0.7.5
type CommunicatorMockExchangePhase1Input struct {
// contains filtered or unexported fields
}
type CommunicatorMockExchangePhase1Result ¶ added in v0.7.5
type CommunicatorMockExchangePhase1Result struct {
// contains filtered or unexported fields
}
type CommunicatorMockExchangePhase2Expectation ¶ added in v0.7.5
type CommunicatorMockExchangePhase2Expectation struct {
// contains filtered or unexported fields
}
func (*CommunicatorMockExchangePhase2Expectation) Return ¶ added in v0.7.5
func (e *CommunicatorMockExchangePhase2Expectation) Return(r map[core.RecordRef]*packets.Phase2Packet, r1 error)
type CommunicatorMockExchangePhase2Input ¶ added in v0.7.5
type CommunicatorMockExchangePhase2Input struct {
// contains filtered or unexported fields
}
type CommunicatorMockExchangePhase2Result ¶ added in v0.7.5
type CommunicatorMockExchangePhase2Result struct {
// contains filtered or unexported fields
}
type CommunicatorMockExchangePhase3Expectation ¶ added in v0.7.5
type CommunicatorMockExchangePhase3Expectation struct {
// contains filtered or unexported fields
}
func (*CommunicatorMockExchangePhase3Expectation) Return ¶ added in v0.7.5
func (e *CommunicatorMockExchangePhase3Expectation) Return(r map[core.RecordRef]*packets.Phase3Packet, r1 error)
type CommunicatorMockExchangePhase3Input ¶ added in v0.7.5
type CommunicatorMockExchangePhase3Input struct {
// contains filtered or unexported fields
}
type CommunicatorMockExchangePhase3Result ¶ added in v0.7.5
type CommunicatorMockExchangePhase3Result struct {
// contains filtered or unexported fields
}
type CommunicatorMockExchangePhase21Expectation ¶ added in v0.8.0
type CommunicatorMockExchangePhase21Expectation struct {
// contains filtered or unexported fields
}
func (*CommunicatorMockExchangePhase21Expectation) Return ¶ added in v0.8.0
func (e *CommunicatorMockExchangePhase21Expectation) Return(r []packets.ReferendumVote, r1 error)
type CommunicatorMockExchangePhase21Input ¶ added in v0.8.0
type CommunicatorMockExchangePhase21Input struct {
// contains filtered or unexported fields
}
type CommunicatorMockExchangePhase21Result ¶ added in v0.8.0
type CommunicatorMockExchangePhase21Result struct {
// contains filtered or unexported fields
}
type CommunicatorMockInitExpectation ¶ added in v0.8.0
type CommunicatorMockInitExpectation struct {
// contains filtered or unexported fields
}
func (*CommunicatorMockInitExpectation) Return ¶ added in v0.8.0
func (e *CommunicatorMockInitExpectation) Return(r error)
type CommunicatorMockInitInput ¶ added in v0.8.0
type CommunicatorMockInitInput struct {
// contains filtered or unexported fields
}
type CommunicatorMockInitResult ¶ added in v0.8.0
type CommunicatorMockInitResult struct {
// contains filtered or unexported fields
}
type ConsensusCommunicator ¶ added in v0.8.0
type ConsensusCommunicator struct {
ConsensusNetwork network.ConsensusNetwork `inject:""`
PulseHandler network.PulseHandler `inject:""`
Cryptography core.CryptographyService `inject:""`
NodeKeeper network.NodeKeeper `inject:""`
// contains filtered or unexported fields
}
ConsensusCommunicator is simple Communicator implementation which communicates with each participants
func NewCommunicator ¶ added in v0.8.0
func NewCommunicator() *ConsensusCommunicator
NewCommunicator constructor creates new ConsensusCommunicator
func (*ConsensusCommunicator) ExchangePhase1 ¶ added in v0.8.0
func (nc *ConsensusCommunicator) ExchangePhase1( ctx context.Context, originClaim *packets.NodeAnnounceClaim, participants []core.Node, packet *packets.Phase1Packet, ) (map[core.RecordRef]*packets.Phase1Packet, error)
ExchangePhase1 used in first consensus phase to exchange data between participants
func (*ConsensusCommunicator) ExchangePhase2 ¶ added in v0.8.0
func (nc *ConsensusCommunicator) ExchangePhase2(ctx context.Context, list network.UnsyncList, participants []core.Node, packet *packets.Phase2Packet) (map[core.RecordRef]*packets.Phase2Packet, error)
ExchangePhase2 used in second consensus phase to exchange data between participants
func (*ConsensusCommunicator) ExchangePhase3 ¶ added in v0.8.0
func (nc *ConsensusCommunicator) ExchangePhase3(ctx context.Context, participants []core.Node, packet *packets.Phase3Packet) (map[core.RecordRef]*packets.Phase3Packet, error)
ExchangePhase3 used in third consensus step to exchange data between participants
func (*ConsensusCommunicator) ExchangePhase21 ¶ added in v0.8.0
func (nc *ConsensusCommunicator) ExchangePhase21(ctx context.Context, list network.UnsyncList, packet *packets.Phase2Packet, additionalRequests []*AdditionalRequest) ([]packets.ReferendumVote, error)
ExchangePhase21 used in second consensus phase to exchange data between participants
type FirstPhase ¶
type FirstPhase interface {
Execute(ctx context.Context, pulse *core.Pulse) (*FirstPhaseState, error)
}
func NewFirstPhase ¶ added in v0.7.5
func NewFirstPhase() FirstPhase
type FirstPhaseImpl ¶ added in v0.8.0
type FirstPhaseImpl struct {
Calculator merkle.Calculator `inject:""`
Communicator Communicator `inject:""`
Cryptography core.CryptographyService `inject:""`
NodeKeeper network.NodeKeeper `inject:""`
}
func (*FirstPhaseImpl) Execute ¶ added in v0.8.0
func (fp *FirstPhaseImpl) Execute(ctx context.Context, pulse *core.Pulse) (*FirstPhaseState, error)
Execute do first phase
type FirstPhaseState ¶ added in v0.6.3
type FirstPhaseState struct {
PulseEntry *merkle.PulseEntry
PulseHash merkle.OriginHash
PulseProof *merkle.PulseProof
ValidProofs map[core.Node]*merkle.PulseProof
FaultProofs map[core.RecordRef]*merkle.PulseProof
UnsyncList network.UnsyncList
}
type Phase2MatrixState ¶ added in v0.8.0
type PhaseManager ¶
type PhaseManager interface {
OnPulse(ctx context.Context, pulse *core.Pulse, pulseStartTime time.Time) error
}
func NewPhaseManager ¶
func NewPhaseManager() PhaseManager
NewPhaseManager creates and returns a new phase manager.
type Phases ¶ added in v0.6.3
type Phases struct {
FirstPhase FirstPhase `inject:""`
SecondPhase SecondPhase `inject:""`
ThirdPhase ThirdPhase `inject:""`
PulseManager core.PulseManager `inject:""`
NodeKeeper network.NodeKeeper `inject:""`
Calculator merkle.Calculator `inject:""`
// contains filtered or unexported fields
}
type SecondPhase ¶
type SecondPhase interface {
Execute(ctx context.Context, pulse *core.Pulse, state *FirstPhaseState) (*SecondPhaseState, error)
Execute21(ctx context.Context, pulse *core.Pulse, state *SecondPhaseState) (*SecondPhaseState, error)
}
func NewSecondPhase ¶ added in v0.7.5
func NewSecondPhase() SecondPhase
type SecondPhaseImpl ¶ added in v0.8.0
type SecondPhaseImpl struct {
NodeKeeper network.NodeKeeper `inject:""`
Calculator merkle.Calculator `inject:""`
Communicator Communicator `inject:""`
Cryptography core.CryptographyService `inject:""`
}
func (*SecondPhaseImpl) Execute ¶ added in v0.8.0
func (sp *SecondPhaseImpl) Execute(ctx context.Context, pulse *core.Pulse, state *FirstPhaseState) (*SecondPhaseState, error)
func (*SecondPhaseImpl) Execute21 ¶ added in v0.8.0
func (sp *SecondPhaseImpl) Execute21(ctx context.Context, pulse *core.Pulse, state *SecondPhaseState) (*SecondPhaseState, error)
type SecondPhaseState ¶ added in v0.6.3
type SecondPhaseState struct {
*FirstPhaseState
GlobuleHash merkle.OriginHash
GlobuleProof *merkle.GlobuleProof
MatrixState *Phase2MatrixState
Matrix *StateMatrix
BitSet packets.BitSet
}
type StateMatrix ¶ added in v0.8.0
type StateMatrix struct {
// contains filtered or unexported fields
}
func NewStateMatrix ¶ added in v0.8.0
func NewStateMatrix(mapper packets.BitSetMapper) *StateMatrix
func (*StateMatrix) ApplyBitSet ¶ added in v0.8.0
func (*StateMatrix) CalculatePhase2 ¶ added in v0.8.0
func (sm *StateMatrix) CalculatePhase2(origin core.RecordRef) (*Phase2MatrixState, error)
func (*StateMatrix) ReceivedProofFromNode ¶ added in v0.8.0
func (sm *StateMatrix) ReceivedProofFromNode(origin, nodeID core.RecordRef) error
type ThirdPhase ¶ added in v0.6.3
type ThirdPhase interface {
Execute(ctx context.Context, pulse *core.Pulse, state *SecondPhaseState) (*ThirdPhaseState, error)
}
func NewThirdPhase ¶ added in v0.7.5
func NewThirdPhase() ThirdPhase
type ThirdPhaseImpl ¶ added in v0.8.0
type ThirdPhaseImpl struct {
Cryptography core.CryptographyService `inject:""`
Communicator Communicator `inject:""`
NodeKeeper network.NodeKeeper `inject:""`
Calculator merkle.Calculator `inject:""`
}
func (*ThirdPhaseImpl) Execute ¶ added in v0.8.0
func (tp *ThirdPhaseImpl) Execute(ctx context.Context, pulse *core.Pulse, state *SecondPhaseState) (*ThirdPhaseState, error)
type ThirdPhaseState ¶ added in v0.8.0
type ThirdPhaseState struct {
ActiveNodes []core.RecordRef
UnsyncList network.UnsyncList
GlobuleProof *merkle.GlobuleProof
}