@@ -52,9 +52,9 @@ import Pos.Chain.Ssc.Base (verifyOpening, vssThreshold)
52
52
import Pos.Chain.Ssc.Error (SscVerifyError (.. ))
53
53
import Pos.Chain.Ssc.Toss.Class (MonadToss (.. ), MonadTossEnv (.. ),
54
54
MonadTossRead (.. ))
55
- import Pos.Core ( BlockCount , CoinPortion , EpochIndex , StakeholderId ,
56
- addressHash , coinPortionDenominator , getCoinPortion ,
57
- unsafeGetCoin )
55
+ import Pos.Core as Core ( CoinPortion , Config , EpochIndex ,
56
+ StakeholderId , addressHash , coinPortionDenominator ,
57
+ getCoinPortion , unsafeGetCoin )
58
58
import Pos.Core.Ssc (Commitment (.. ),
59
59
CommitmentsMap (getCommitmentsMap ), InnerSharesMap ,
60
60
Opening (.. ), OpeningsMap , SharesDistribution , SharesMap ,
@@ -98,11 +98,11 @@ hasCertificateToss id = memberVss id <$> getVssCertificates
98
98
-- 'VssPublicKey's of participating nodes for given epoch.
99
99
getParticipants
100
100
:: (MonadError SscVerifyError m , MonadToss m , MonadTossEnv m )
101
- => BlockCount
101
+ => Core. Config
102
102
-> EpochIndex
103
103
-> m VssCertificatesMap
104
- getParticipants k epoch = do
105
- stableCerts <- getStableCertificates k epoch
104
+ getParticipants coreConfig epoch = do
105
+ stableCerts <- getStableCertificates coreConfig epoch
106
106
richmen <- note (NoRichmen epoch) =<< getRichmen epoch
107
107
pure $ computeParticipants (getKeys richmen) stableCerts
108
108
@@ -119,12 +119,12 @@ matchCommitment op = flip matchCommitmentPure op <$> getCommitments
119
119
120
120
checkShares
121
121
:: (MonadTossRead m , MonadTossEnv m )
122
- => BlockCount
122
+ => Core. Config
123
123
-> EpochIndex
124
124
-> (StakeholderId , InnerSharesMap )
125
125
-> m Bool
126
- checkShares k epoch (id , sh) = do
127
- certs <- getStableCertificates k epoch
126
+ checkShares coreConfig epoch (id , sh) = do
127
+ certs <- getStableCertificates coreConfig epoch
128
128
let warnFmt = (" checkShares: no richmen for " % ords% " epoch" )
129
129
getRichmen epoch >>= \ case
130
130
Nothing -> False <$ logWarning (sformat warnFmt epoch)
@@ -404,17 +404,17 @@ computeSharesDistr richmen =
404
404
-- * shares in the commitment are valid
405
405
checkCommitmentsPayload
406
406
:: (MonadToss m , MonadTossEnv m , MonadError SscVerifyError m , MonadRandom m )
407
- => BlockCount
407
+ => Core. Config
408
408
-> EpochIndex
409
409
-> CommitmentsMap
410
410
-> m ()
411
- checkCommitmentsPayload k epoch (getCommitmentsMap -> comms) =
411
+ checkCommitmentsPayload coreConfig epoch (getCommitmentsMap -> comms) =
412
412
-- We don't verify an empty commitments map, because an empty commitments
413
413
-- map is always valid. Moreover, the commitments check requires us to
414
414
-- compute 'SharesDistribution', which might be expensive.
415
415
unless (null comms) $ do
416
416
richmen <- note (NoRichmen epoch) =<< getRichmen epoch
417
- participants <- getParticipants k epoch
417
+ participants <- getParticipants coreConfig epoch
418
418
distr <- computeSharesDistr richmen
419
419
exceptGuard CommittingNoParticipants
420
420
(`memberVss` participants) (HM. keys comms)
@@ -450,23 +450,23 @@ checkOpeningsPayload opens = do
450
450
-- decrypted shares
451
451
checkSharesPayload
452
452
:: (MonadToss m , MonadTossEnv m , MonadError SscVerifyError m )
453
- => BlockCount
453
+ => Core. Config
454
454
-> EpochIndex
455
455
-> SharesMap
456
456
-> m ()
457
- checkSharesPayload k epoch shares = do
457
+ checkSharesPayload coreConfig epoch shares = do
458
458
-- We intentionally don't check that nodes which decrypted shares sent
459
459
-- its commitments. If a node decrypted shares correctly, such node is
460
460
-- useful for us, despite that it didn't send its commitment.
461
- part <- getParticipants k epoch
461
+ part <- getParticipants coreConfig epoch
462
462
exceptGuard SharesNotRichmen
463
463
(`memberVss` part) (HM. keys shares)
464
464
exceptGuardM InternalShareWithoutCommitment
465
465
hasCommitmentToss (concatMap HM. keys $ toList shares)
466
466
exceptGuardM SharesAlreadySent
467
467
(notM hasSharesToss) (HM. keys shares)
468
468
exceptGuardEntryM DecrSharesNotMatchCommitment
469
- (checkShares k epoch) (HM. toList shares)
469
+ (checkShares coreConfig epoch) (HM. toList shares)
470
470
471
471
-- For certificates we check that
472
472
-- * certificate hasn't been sent already
@@ -496,16 +496,18 @@ checkCertificatesPayload epoch certs = do
496
496
497
497
checkPayload
498
498
:: (MonadToss m , MonadTossEnv m , MonadError SscVerifyError m , MonadRandom m )
499
- => BlockCount
499
+ => Core. Config
500
500
-> EpochIndex
501
501
-> SscPayload
502
502
-> m ()
503
- checkPayload k epoch payload = do
503
+ checkPayload coreConfig epoch payload = do
504
504
let payloadCerts = spVss payload
505
505
case payload of
506
- CommitmentsPayload comms _ -> checkCommitmentsPayload k epoch comms
506
+ CommitmentsPayload comms _ -> checkCommitmentsPayload coreConfig
507
+ epoch
508
+ comms
507
509
OpeningsPayload opens _ -> checkOpeningsPayload opens
508
- SharesPayload shares _ -> checkSharesPayload k epoch shares
510
+ SharesPayload shares _ -> checkSharesPayload coreConfig epoch shares
509
511
CertificatesPayload _ -> pass
510
512
checkCertificatesPayload epoch payloadCerts
511
513
0 commit comments