{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Ouroboros.Consensus.Tracing.Era.Byron () where
import Cardano.Chain.Block
( ABlockOrBoundaryHdr (..)
, AHeader (..)
, ChainValidationError (..)
, delegationCertificate
)
import Cardano.Chain.Byron.API (ApplyMempoolPayloadErr (..))
import qualified Cardano.Chain.Byron.API as CC
import Cardano.Chain.Delegation (delegateVK)
import Cardano.Crypto.Signing (VerificationKey)
import Cardano.Logging
import Data.Aeson (Value (String), (.=))
import Data.ByteString (ByteString)
import qualified Data.ByteString.Base16 as B16
import qualified Data.Set as Set
import Data.Text (Text)
import qualified Data.Text as Text
import qualified Data.Text.Encoding as Text.Encoding
import Ouroboros.Consensus.Block (Header)
import Ouroboros.Consensus.Block.EBB (fromIsEBB)
import Ouroboros.Consensus.Byron.Ledger
( ByronBlock (..)
, ByronOtherHeaderEnvelopeError (..)
, byronHeaderRaw
, toMempoolPayload
)
import Ouroboros.Consensus.Byron.Ledger.Inspect
( ByronLedgerUpdate (..)
, ProtocolUpdate (..)
, UpdateState (..)
)
import Ouroboros.Consensus.Ledger.SupportsMempool (GenTx, txId)
import Ouroboros.Consensus.Protocol.PBFT (PBftTiebreakerView (..))
import Ouroboros.Consensus.Tracing.Render (renderTxId)
import Ouroboros.Consensus.Util.Condense (condense)
import Ouroboros.Network.Block (blockHash, blockNo, blockSlot)
textShow :: Show a => a -> Text
textShow :: forall a. Show a => a -> Text
textShow = String -> Text
Text.pack (String -> Text) -> (a -> String) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
instance LogFormatting ApplyMempoolPayloadErr where
forMachine :: DetailLevel -> ApplyMempoolPayloadErr -> Object
forMachine DetailLevel
_dtal (MempoolTxErr UTxOValidationError
utxoValidationErr) =
[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
"MempoolTxErr"
, Key
"error" 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 (UTxOValidationError -> Text
forall a. Show a => a -> Text
textShow UTxOValidationError
utxoValidationErr)
]
forMachine DetailLevel
_dtal (MempoolDlgErr Error
delegScheduleError) =
[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
"MempoolDlgErr"
, Key
"error" 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 (Error -> Text
forall a. Show a => a -> Text
textShow Error
delegScheduleError)
]
forMachine DetailLevel
_dtal (MempoolUpdateProposalErr Error
iFaceErr) =
[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
"MempoolUpdateProposalErr"
, Key
"error" 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 (Error -> Text
forall a. Show a => a -> Text
textShow Error
iFaceErr)
]
forMachine DetailLevel
_dtal (MempoolUpdateVoteErr Error
iFaceErrr) =
[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
"MempoolUpdateVoteErr"
, Key
"error" 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 (Error -> Text
forall a. Show a => a -> Text
textShow Error
iFaceErrr)
]
instance LogFormatting ByronLedgerUpdate where
forMachine :: DetailLevel -> ByronLedgerUpdate -> Object
forMachine DetailLevel
dtal (ByronUpdatedProtocolUpdates [ProtocolUpdate]
protocolUpdates) =
[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
"ByronUpdatedProtocolUpdates"
, Key
"protocolUpdates" Key -> [Object] -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (ProtocolUpdate -> Object) -> [ProtocolUpdate] -> [Object]
forall a b. (a -> b) -> [a] -> [b]
map (DetailLevel -> ProtocolUpdate -> Object
forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
dtal) [ProtocolUpdate]
protocolUpdates
]
instance LogFormatting ProtocolUpdate where
forMachine :: DetailLevel -> ProtocolUpdate -> Object
forMachine DetailLevel
dtal (ProtocolUpdate ProtocolVersion
updateVersion UpdateState
updateState) =
[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
"ProtocolUpdate"
, Key
"protocolUpdateVersion" Key -> ProtocolVersion -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ProtocolVersion
updateVersion
, Key
"protocolUpdateState" Key -> Object -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= DetailLevel -> UpdateState -> Object
forall a. LogFormatting a => DetailLevel -> a -> Object
forMachine DetailLevel
dtal UpdateState
updateState
]
instance LogFormatting UpdateState where
forMachine :: DetailLevel -> UpdateState -> Object
forMachine DetailLevel
_dtal UpdateState
updateState = case UpdateState
updateState of
UpdateRegistered SlotNo
slot ->
[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
"UpdateRegistered"
, Key
"slot" Key -> SlotNo -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SlotNo
slot
]
UpdateActive Set KeyHash
votes ->
[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
"UpdateActive"
, Key
"votes" Key -> [Text] -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (KeyHash -> Text) -> [KeyHash] -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map (String -> Text
Text.pack (String -> Text) -> (KeyHash -> String) -> KeyHash -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash -> String
forall a. Show a => a -> String
show) (Set KeyHash -> [KeyHash]
forall a. Set a -> [a]
Set.toList Set KeyHash
votes)
]
UpdateConfirmed SlotNo
slot ->
[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
"UpdateConfirmed"
, Key
"slot" Key -> SlotNo -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SlotNo
slot
]
UpdateStablyConfirmed Set KeyHash
endorsements ->
[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
"UpdateStablyConfirmed"
, Key
"endorsements" Key -> [Text] -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (KeyHash -> Text) -> [KeyHash] -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map (String -> Text
Text.pack (String -> Text) -> (KeyHash -> String) -> KeyHash -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash -> String
forall a. Show a => a -> String
show) (Set KeyHash -> [KeyHash]
forall a. Set a -> [a]
Set.toList Set KeyHash
endorsements)
]
UpdateCandidate SlotNo
slot EpochNo
epoch ->
[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
"UpdateCandidate"
, Key
"slot" Key -> SlotNo -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SlotNo
slot
, Key
"epoch" Key -> EpochNo -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= EpochNo
epoch
]
UpdateStableCandidate EpochNo
transitionEpoch ->
[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
"UpdateStableCandidate"
, Key
"transitionEpoch" Key -> EpochNo -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= EpochNo
transitionEpoch
]
instance LogFormatting (GenTx ByronBlock) where
forMachine :: DetailLevel -> GenTx ByronBlock -> Object
forMachine DetailLevel
dtal GenTx ByronBlock
tx =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat ([Object] -> Object) -> [Object] -> Object
forall a b. (a -> b) -> a -> b
$
(Key
"txid" Key -> Text -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Int -> Text -> Text
Text.take Int
8 (Text -> Text)
-> (TxId (GenTx ByronBlock) -> Text)
-> TxId (GenTx ByronBlock)
-> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxId (GenTx ByronBlock) -> Text
forall blk. ConvertTxId blk => TxId (GenTx blk) -> Text
renderTxId (TxId (GenTx ByronBlock) -> Text)
-> TxId (GenTx ByronBlock) -> Text
forall a b. (a -> b) -> a -> b
$ GenTx ByronBlock -> TxId (GenTx ByronBlock)
forall tx. HasTxId tx => tx -> TxId tx
txId GenTx ByronBlock
tx))
Object -> [Object] -> [Object]
forall a. a -> [a] -> [a]
: [ Key
"tx"
Key -> Text -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ByteString -> Text
Text.Encoding.decodeLatin1 (ByteString -> ByteString
B16.encode (AMempoolPayload ByteString -> ByteString
CC.mempoolPayloadRecoverBytes (GenTx ByronBlock -> AMempoolPayload ByteString
toMempoolPayload GenTx ByronBlock
tx)))
| DetailLevel
dtal DetailLevel -> DetailLevel -> Bool
forall a. Eq a => a -> a -> Bool
== DetailLevel
DDetailed
]
instance LogFormatting ChainValidationError where
forMachine :: DetailLevel -> ChainValidationError -> Object
forMachine DetailLevel
_dtal ChainValidationError
ChainValidationBoundaryTooLarge =
[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
"ChainValidationBoundaryTooLarge"]
forMachine DetailLevel
_dtal ChainValidationError
ChainValidationBlockAttributesTooLarge =
[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
"ChainValidationBlockAttributesTooLarge"]
forMachine DetailLevel
_dtal (ChainValidationBlockTooLarge Natural
_ Natural
_) =
[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
"ChainValidationBlockTooLarge"]
forMachine DetailLevel
_dtal ChainValidationError
ChainValidationHeaderAttributesTooLarge =
[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
"ChainValidationHeaderAttributesTooLarge"]
forMachine DetailLevel
_dtal (ChainValidationHeaderTooLarge Natural
_ Natural
_) =
[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
"ChainValidationHeaderTooLarge"]
forMachine DetailLevel
_dtal (ChainValidationDelegationPayloadError Text
err) =
[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
err]
forMachine DetailLevel
_dtal (ChainValidationInvalidDelegation VerificationKey
_ VerificationKey
_) =
[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
"ChainValidationInvalidDelegation"]
forMachine DetailLevel
_dtal (ChainValidationGenesisHashMismatch GenesisHash
_ GenesisHash
_) =
[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
"ChainValidationGenesisHashMismatch"]
forMachine DetailLevel
_dtal (ChainValidationExpectedGenesisHash GenesisHash
_ HeaderHash
_) =
[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
"ChainValidationExpectedGenesisHash"]
forMachine DetailLevel
_dtal (ChainValidationExpectedHeaderHash HeaderHash
_ GenesisHash
_) =
[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
"ChainValidationExpectedHeaderHash"]
forMachine DetailLevel
_dtal (ChainValidationInvalidHash HeaderHash
_ HeaderHash
_) =
[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
"ChainValidationInvalidHash"]
forMachine DetailLevel
_dtal (ChainValidationMissingHash HeaderHash
_) =
[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
"ChainValidationMissingHash"]
forMachine DetailLevel
_dtal (ChainValidationUnexpectedGenesisHash HeaderHash
_) =
[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
"ChainValidationUnexpectedGenesisHash"]
forMachine DetailLevel
_dtal (ChainValidationInvalidSignature BlockSignature
_) =
[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
"ChainValidationInvalidSignature"]
forMachine DetailLevel
_dtal (ChainValidationDelegationSchedulingError Error
_) =
[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
"ChainValidationDelegationSchedulingError"]
forMachine DetailLevel
_dtal (ChainValidationProtocolMagicMismatch ProtocolMagicId
_ ProtocolMagicId
_) =
[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
"ChainValidationProtocolMagicMismatch"]
forMachine DetailLevel
_dtal ChainValidationError
ChainValidationSignatureLight =
[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
"ChainValidationSignatureLight"]
forMachine DetailLevel
_dtal (ChainValidationTooManyDelegations VerificationKey
_) =
[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
"ChainValidationTooManyDelegations"]
forMachine DetailLevel
_dtal (ChainValidationUpdateError SlotNumber
_ Error
_) =
[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
"ChainValidationUpdateError"]
forMachine DetailLevel
_dtal (ChainValidationUTxOValidationError UTxOValidationError
_) =
[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
"ChainValidationUTxOValidationError"]
forMachine DetailLevel
_dtal (ChainValidationProofValidationError ProofValidationError
_) =
[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
"ChainValidationProofValidationError"]
instance LogFormatting (Header ByronBlock) where
forMachine :: DetailLevel -> Header ByronBlock -> Object
forMachine DetailLevel
_dtal Header ByronBlock
b =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat ([Object] -> Object) -> [Object] -> Object
forall a b. (a -> b) -> a -> b
$
[ 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
"ByronBlock"
, Key
"hash" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= ByronHash -> String
forall a. Condense a => a -> String
condense (Header ByronBlock -> HeaderHash (Header ByronBlock)
forall b. HasHeader b => b -> HeaderHash b
blockHash Header ByronBlock
b)
, Key
"slotNo" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SlotNo -> String
forall a. Condense a => a -> String
condense (Header ByronBlock -> SlotNo
forall b. HasHeader b => b -> SlotNo
blockSlot Header ByronBlock
b)
, Key
"blockNo" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= BlockNo -> String
forall a. Condense a => a -> String
condense (Header ByronBlock -> BlockNo
forall b. HasHeader b => b -> BlockNo
blockNo Header ByronBlock
b)
]
[Object] -> [Object] -> [Object]
forall a. Semigroup a => a -> a -> a
<> case Header ByronBlock -> ABlockOrBoundaryHdr ByteString
byronHeaderRaw Header ByronBlock
b of
ABOBBoundaryHdr{} -> []
ABOBBlockHdr AHeader ByteString
h ->
[Key
"delegate" Key -> String -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= VerificationKey -> String
forall a. Condense a => a -> String
condense (AHeader ByteString -> VerificationKey
headerSignerVk AHeader ByteString
h)]
where
headerSignerVk :: AHeader ByteString -> VerificationKey
headerSignerVk :: AHeader ByteString -> VerificationKey
headerSignerVk =
ACertificate ByteString -> VerificationKey
forall a. ACertificate a -> VerificationKey
delegateVK (ACertificate ByteString -> VerificationKey)
-> (AHeader ByteString -> ACertificate ByteString)
-> AHeader ByteString
-> VerificationKey
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ABlockSignature ByteString -> ACertificate ByteString
forall a. ABlockSignature a -> ACertificate a
delegationCertificate (ABlockSignature ByteString -> ACertificate ByteString)
-> (AHeader ByteString -> ABlockSignature ByteString)
-> AHeader ByteString
-> ACertificate ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AHeader ByteString -> ABlockSignature ByteString
forall a. AHeader a -> ABlockSignature a
headerSignature
instance LogFormatting ByronOtherHeaderEnvelopeError where
forMachine :: DetailLevel -> ByronOtherHeaderEnvelopeError -> Object
forMachine DetailLevel
_dtal (UnexpectedEBBInSlot SlotNo
slot) =
[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
"UnexpectedEBBInSlot"
, Key
"slot" Key -> SlotNo -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= SlotNo
slot
]
instance LogFormatting PBftTiebreakerView where
forMachine :: DetailLevel -> PBftTiebreakerView -> Object
forMachine DetailLevel
_dtal (PBftTiebreakerView IsEBB
isEBB) =
[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
"PBftSelectView"
, Key
"isEBB" Key -> Bool -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= IsEBB -> Bool
fromIsEBB IsEBB
isEBB
]