dir : consensus/clique/clique.go
block number, signer를 확인
number := header.Number.Uint64()
// ...중략
signer, err := ecrecover(header, c.signatures)
// ...중략
// 지갑 주소가 authorized 된 signer인지 확인
if _, ok := snap.Signers[signer]; !ok {
return err
}
// 검증자가 최근에 서명을 했다면 차례가 돌아올 떄까지 기다림
for seen, recent := range snap.Recents {
if recent == signer {
// 검증자 수에 비해 자주 서명하려고 하면 에러
if limit := uint64(len(snap.Signers)/2 + 1); seen > number-limit {
return errRecentlySigned
}
}
}
// ...중략
return nil