fix: remove naturally finality
This commit is contained in:
parent
1036dc70be
commit
3d8753cae6
@ -1740,19 +1740,13 @@ func (p *Parlia) GetJustifiedNumberAndHash(chain consensus.ChainHeaderReader, he
|
||||
}
|
||||
|
||||
// GetFinalizedHeader returns highest finalized block header.
|
||||
// It will find vote finalized block within NaturallyFinalizedDist blocks firstly,
|
||||
// If the vote finalized block not found, return its naturally finalized block.
|
||||
func (p *Parlia) GetFinalizedHeader(chain consensus.ChainHeaderReader, header *types.Header) *types.Header {
|
||||
backward := uint64(types.NaturallyFinalizedDist)
|
||||
if chain == nil || header == nil {
|
||||
return nil
|
||||
}
|
||||
if !chain.Config().IsPlato(header.Number) {
|
||||
return chain.GetHeaderByNumber(0)
|
||||
}
|
||||
if header.Number.Uint64() < backward {
|
||||
backward = header.Number.Uint64()
|
||||
}
|
||||
|
||||
snap, err := p.snapshot(chain, header.Number.Uint64(), header.Hash(), nil)
|
||||
if err != nil {
|
||||
@ -1761,21 +1755,11 @@ func (p *Parlia) GetFinalizedHeader(chain consensus.ChainHeaderReader, header *t
|
||||
return nil
|
||||
}
|
||||
|
||||
for snap.Attestation != nil && snap.Attestation.SourceNumber >= header.Number.Uint64()-backward {
|
||||
if snap.Attestation.TargetNumber == snap.Attestation.SourceNumber+1 {
|
||||
return chain.GetHeaderByHash(snap.Attestation.SourceHash)
|
||||
if snap.Attestation != nil {
|
||||
return chain.GetHeader(snap.Attestation.SourceHash, snap.Attestation.SourceNumber)
|
||||
}
|
||||
|
||||
snap, err = p.snapshot(chain, snap.Attestation.SourceNumber, snap.Attestation.SourceHash, nil)
|
||||
if err != nil {
|
||||
log.Error("Unexpected error when getting snapshot",
|
||||
"error", err, "blockNumber", snap.Attestation.SourceNumber, "blockHash", snap.Attestation.SourceHash)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return FindAncientHeader(header, backward, chain, nil)
|
||||
}
|
||||
|
||||
// =========================== utility function ==========================
|
||||
// SealHash returns the hash of a block prior to it being sealed.
|
||||
|
@ -46,7 +46,7 @@ type Snapshot struct {
|
||||
Validators map[common.Address]*ValidatorInfo `json:"validators"` // Set of authorized validators at this moment
|
||||
Recents map[uint64]common.Address `json:"recents"` // Set of recent validators for spam protections
|
||||
RecentForkHashes map[uint64]string `json:"recent_fork_hashes"` // Set of recent forkHash
|
||||
Attestation *types.VoteData `json:"attestation:omitempty"` // Attestation for fast finality
|
||||
Attestation *types.VoteData `json:"attestation:omitempty"` // Attestation for fast finality, but `Source` used as `Finalized`
|
||||
}
|
||||
|
||||
type ValidatorInfo struct {
|
||||
@ -199,11 +199,11 @@ func (s *Snapshot) updateAttestation(header *types.Header, chainConfig *params.C
|
||||
}
|
||||
|
||||
// Update attestation
|
||||
s.Attestation = &types.VoteData{
|
||||
SourceNumber: attestation.Data.SourceNumber,
|
||||
SourceHash: attestation.Data.SourceHash,
|
||||
TargetNumber: attestation.Data.TargetNumber,
|
||||
TargetHash: attestation.Data.TargetHash,
|
||||
if s.Attestation != nil && attestation.Data.SourceNumber+1 != attestation.Data.TargetNumber {
|
||||
s.Attestation.TargetNumber = attestation.Data.TargetNumber
|
||||
s.Attestation.TargetHash = attestation.Data.TargetHash
|
||||
} else {
|
||||
s.Attestation = attestation.Data
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,6 @@ const (
|
||||
BLSSignatureLength = 96
|
||||
|
||||
MaxAttestationExtraLength = 256
|
||||
NaturallyFinalizedDist = 21 // The distance to naturally finalized a block
|
||||
)
|
||||
|
||||
type BLSPublicKey [BLSPublicKeyLength]byte
|
||||
|
Loading…
Reference in New Issue
Block a user