{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Ouroboros.Consensus.Tracing.Committee () where
import Cardano.Logging (LogFormatting (..))
import Data.Aeson (Value (..), (.=))
import Ouroboros.Consensus.Committee.Class (VotingCommitteeError)
import Ouroboros.Consensus.Committee.EveryoneVotes (EveryoneVotes)
import qualified Ouroboros.Consensus.Committee.EveryoneVotes as EveryoneVotes
import Ouroboros.Consensus.Committee.Types (PoolId (..), TargetCommitteeSize (..))
import Ouroboros.Consensus.Committee.WFA
( NumPoolsWithPositiveStake (..)
, SeatIndex (..)
, WFAError (..)
)
import Ouroboros.Consensus.Committee.WFALS (WFALS)
import qualified Ouroboros.Consensus.Committee.WFALS as WFALS
instance LogFormatting WFAError where
forMachine :: DetailLevel -> WFAError -> Object
forMachine DetailLevel
_dtal WFAError
EmptyStakeDistribution =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"EmptyStakeDistribution"
]
forMachine DetailLevel
_dtal (NotEnoughPoolsWithPositiveStake TargetCommitteeSize
targetCommitteeSize NumPoolsWithPositiveStake
numPoolsWithPositiveStake) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"NotEnoughPoolsWithPositiveStake"
, Key
"targetCommitteeSize" Key -> Word64 -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= TargetCommitteeSize -> Word64
unTargetCommitteeSize TargetCommitteeSize
targetCommitteeSize
, Key
"numPoolsWithPositiveStake" Key -> Word64 -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= NumPoolsWithPositiveStake -> Word64
unNumPoolsWithPositiveStake NumPoolsWithPositiveStake
numPoolsWithPositiveStake
]
instance LogFormatting (VotingCommitteeError crypto WFALS) where
forMachine :: DetailLevel -> VotingCommitteeError crypto WFALS -> Object
forMachine DetailLevel
_dtal (WFALS.WFAError WFAError
e) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"WFAError"
, DetailLevel -> WFAError -> Object
forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
_dtal WFAError
e
]
forMachine DetailLevel
_dtal (WFALS.MissingPoolId PoolId
poolId) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MissingPoolId"
, Key
"poolId" Key -> KeyHash StakePool -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PoolId -> KeyHash StakePool
unPoolId PoolId
poolId
]
forMachine DetailLevel
_dtal (WFALS.NotAPersistentMember SeatIndex
seatIndex) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"NotAPersistentMember"
, Key
"seatIndex" Key -> Word64 -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SeatIndex -> Word64
unSeatIndex SeatIndex
seatIndex
]
forMachine DetailLevel
_dtal (WFALS.NotANonPersistentMember SeatIndex
seatIndex) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"NotANonPersistentMember"
, Key
"seatIndex" Key -> Word64 -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SeatIndex -> Word64
unSeatIndex SeatIndex
seatIndex
]
forMachine DetailLevel
_dtal (WFALS.ZeroNonPersistentSeats SeatIndex
seatIndex) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"ZeroNonPersistentSeats"
, Key
"seatIndex" Key -> Word64 -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SeatIndex -> Word64
unSeatIndex SeatIndex
seatIndex
]
forMachine DetailLevel
_dtal (WFALS.InvalidVoteSignature String
msg) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"InvalidVoteSignature"
, Key
"message" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
msg
]
forMachine DetailLevel
_dtal (WFALS.InvalidVoterEligibilityProof String
msg) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"InvalidVoterEligibilityProof"
, Key
"message" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
msg
]
forMachine DetailLevel
_dtal (WFALS.InvalidCertSignature String
msg) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"InvalidCertSignature"
, Key
"message" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
msg
]
forMachine DetailLevel
_dtal (WFALS.CryptoError String
msg) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"CryptoError"
, Key
"message" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
msg
]
instance LogFormatting (VotingCommitteeError crypto EveryoneVotes) where
forMachine :: DetailLevel -> VotingCommitteeError crypto EveryoneVotes -> Object
forMachine DetailLevel
_dtal (EveryoneVotes.WFAError WFAError
e) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"WFAError"
, DetailLevel -> WFAError -> Object
forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
_dtal WFAError
e
]
forMachine DetailLevel
_dtal (EveryoneVotes.MissingPoolId PoolId
poolId) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MissingPoolId"
, Key
"poolId" Key -> KeyHash StakePool -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= PoolId -> KeyHash StakePool
unPoolId PoolId
poolId
]
forMachine DetailLevel
_dtal (EveryoneVotes.MissingSeatIndex SeatIndex
seatIndex) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"MissingSeatIndex"
, Key
"seatIndex" Key -> Word64 -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SeatIndex -> Word64
unSeatIndex SeatIndex
seatIndex
]
forMachine DetailLevel
_dtal (EveryoneVotes.PoolHasNoStake SeatIndex
seatIndex) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"PoolHasNoStake"
, Key
"seatIndex" Key -> Word64 -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SeatIndex -> Word64
unSeatIndex SeatIndex
seatIndex
]
forMachine DetailLevel
_dtal (EveryoneVotes.InvalidVoteSignature String
msg) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"InvalidVoteSignature"
, Key
"message" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
msg
]
forMachine DetailLevel
_dtal (EveryoneVotes.InvalidCertSignature String
msg) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"InvalidCertSignature"
, Key
"message" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
msg
]
forMachine DetailLevel
_dtal (EveryoneVotes.CryptoError String
msg) =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat
[ Key
"kind" Key -> Value -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= Text -> Value
String Text
"CryptoError"
, Key
"message" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= String
msg
]