From 2249b541441e76cde1e3f7bf7f49e087724ad853 Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Fri, 25 Oct 2024 11:02:23 +0200 Subject: [PATCH] Format code using script --- .../app/GenHeader/Parsers.hs | 10 +- ouroboros-consensus-cardano/app/gen-header.hs | 8 +- .../Cardano/Tools/Headers.hs | 66 +++--- .../test/shelley-test/Main.hs | 8 +- .../test/tools-test/Main.hs | 14 +- .../tools-test/Test/Cardano/Tools/Headers.hs | 28 +-- .../Ouroboros/Consensus/Protocol/Praos.hs | 191 ++++++++---------- .../Consensus/Protocol/Praos/Header.hs | 102 +++++----- 8 files changed, 184 insertions(+), 243 deletions(-) diff --git a/ouroboros-consensus-cardano/app/GenHeader/Parsers.hs b/ouroboros-consensus-cardano/app/GenHeader/Parsers.hs index 3d862ce0b2..e415ff96de 100644 --- a/ouroboros-consensus-cardano/app/GenHeader/Parsers.hs +++ b/ouroboros-consensus-cardano/app/GenHeader/Parsers.hs @@ -1,9 +1,11 @@ module GenHeader.Parsers where -import Cardano.Tools.Headers (Options (..)) -import Data.Version (showVersion) -import Options.Applicative (Parser, ParserInfo, auto, command, execParser, help, helper, hsubparser, info, long, metavar, option, progDesc, short, (<**>)) -import Paths_ouroboros_consensus_cardano (version) +import Cardano.Tools.Headers (Options (..)) +import Data.Version (showVersion) +import Options.Applicative (Parser, ParserInfo, auto, command, + execParser, help, helper, hsubparser, info, long, metavar, + option, progDesc, short, (<**>)) +import Paths_ouroboros_consensus_cardano (version) parseOptions :: IO Options parseOptions = execParser argsParser diff --git a/ouroboros-consensus-cardano/app/gen-header.hs b/ouroboros-consensus-cardano/app/gen-header.hs index 042e4f6e33..2a2ea76cae 100644 --- a/ouroboros-consensus-cardano/app/gen-header.hs +++ b/ouroboros-consensus-cardano/app/gen-header.hs @@ -1,10 +1,10 @@ -- | This tool generates valid and invalid Cardano headers. module Main (main) where -import Cardano.Crypto.Init (cryptoInit) -import Cardano.Tools.Headers (run) -import GenHeader.Parsers (parseOptions) -import Main.Utf8 (withUtf8) +import Cardano.Crypto.Init (cryptoInit) +import Cardano.Tools.Headers (run) +import GenHeader.Parsers (parseOptions) +import Main.Utf8 (withUtf8) main :: IO () main = withUtf8 $ do diff --git a/ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/Headers.hs b/ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/Headers.hs index 9e234746bf..888f70e88f 100644 --- a/ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/Headers.hs +++ b/ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/Headers.hs @@ -7,48 +7,40 @@ -- | Tooling to generate and validate (Praos) headers. module Cardano.Tools.Headers where -import Cardano.Crypto.DSIGN (deriveVerKeyDSIGN) -import Cardano.Crypto.Hash (Blake2b_256, hashToBytes) -import Cardano.Crypto.VRF (VRFAlgorithm (deriveVerKeyVRF, hashVerKeyVRF)) -import Cardano.Ledger.Api (ConwayEra, StandardCrypto, VRF) -import Cardano.Ledger.BaseTypes (BoundedRational (boundRational), PositiveUnitInterval, mkActiveSlotCoeff) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Compactible (toCompact) -import Cardano.Ledger.Keys (VKey (..), hashKey) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..)) -import Cardano.Prelude (ExitCode (..), exitWith, forM_, hPutStrLn, stderr) -import Control.Monad.Except (runExcept) +import Cardano.Crypto.DSIGN (deriveVerKeyDSIGN) +import Cardano.Crypto.Hash (Blake2b_256, hashToBytes) +import Cardano.Crypto.VRF + (VRFAlgorithm (deriveVerKeyVRF, hashVerKeyVRF)) +import Cardano.Ledger.Api (ConwayEra, StandardCrypto, VRF) +import Cardano.Ledger.BaseTypes (BoundedRational (boundRational), + PositiveUnitInterval, mkActiveSlotCoeff) +import Cardano.Ledger.Coin (Coin (..)) +import Cardano.Ledger.Compactible (toCompact) +import Cardano.Ledger.Keys (VKey (..), hashKey) +import Cardano.Ledger.PoolDistr (IndividualPoolStake (..)) +import Cardano.Prelude (ExitCode (..), exitWith, forM_, hPutStrLn, + stderr) +import Control.Monad.Except (runExcept) import qualified Data.Aeson as Json import qualified Data.ByteString.Base16 as Hex import qualified Data.ByteString.Lazy as LBS import qualified Data.Map as Map -import Data.Maybe (fromJust) -import Data.Text (unpack) -import Data.Text.Encoding (decodeUtf8) -import Debug.Trace (trace) -import Ouroboros.Consensus.Block (validateView) -import Ouroboros.Consensus.Protocol.Praos ( - Praos, - doValidateKESSignature, - doValidateVRFSignature, - ) +import Data.Maybe (fromJust) +import Data.Text (unpack) +import Data.Text.Encoding (decodeUtf8) +import Debug.Trace (trace) +import Ouroboros.Consensus.Block (validateView) +import Ouroboros.Consensus.Protocol.Praos (Praos, + doValidateKESSignature, doValidateVRFSignature) import qualified Ouroboros.Consensus.Protocol.Praos.Views as Views -import Ouroboros.Consensus.Shelley.HFEras () -import Ouroboros.Consensus.Shelley.Ledger ( - ShelleyBlock, - mkShelleyHeader, - ) -import Ouroboros.Consensus.Shelley.Protocol.Praos () -import Test.Ouroboros.Consensus.Protocol.Praos.Header ( - GeneratorContext (..), - MutatedHeader (..), - Mutation (..), - Sample (..), - expectedError, - generateSamples, - header, - mutation, - ) +import Ouroboros.Consensus.Shelley.HFEras () +import Ouroboros.Consensus.Shelley.Ledger (ShelleyBlock, + mkShelleyHeader) +import Ouroboros.Consensus.Shelley.Protocol.Praos () +import Test.Ouroboros.Consensus.Protocol.Praos.Header + (GeneratorContext (..), MutatedHeader (..), Mutation (..), + Sample (..), expectedError, generateSamples, header, + mutation) type ConwayBlock = ShelleyBlock (Praos StandardCrypto) (ConwayEra StandardCrypto) diff --git a/ouroboros-consensus-cardano/test/shelley-test/Main.hs b/ouroboros-consensus-cardano/test/shelley-test/Main.hs index 012c466fc4..30f2422978 100644 --- a/ouroboros-consensus-cardano/test/shelley-test/Main.hs +++ b/ouroboros-consensus-cardano/test/shelley-test/Main.hs @@ -4,12 +4,10 @@ import qualified Test.Consensus.Shelley.Coherence (tests) import qualified Test.Consensus.Shelley.Golden (tests) import qualified Test.Consensus.Shelley.Serialisation (tests) import qualified Test.Consensus.Shelley.SupportedNetworkProtocolVersion (tests) -import Test.Tasty +import Test.Tasty import qualified Test.ThreadNet.Shelley (tests) -import Test.Util.TestEnv ( - defaultMainWithTestEnv, - defaultTestEnvConfig, - ) +import Test.Util.TestEnv (defaultMainWithTestEnv, + defaultTestEnvConfig) main :: IO () main = defaultMainWithTestEnv defaultTestEnvConfig tests diff --git a/ouroboros-consensus-cardano/test/tools-test/Main.hs b/ouroboros-consensus-cardano/test/tools-test/Main.hs index b75dccb323..4c4a2ed38c 100644 --- a/ouroboros-consensus-cardano/test/tools-test/Main.hs +++ b/ouroboros-consensus-cardano/test/tools-test/Main.hs @@ -2,16 +2,16 @@ module Main (main) where import qualified Cardano.Tools.DBAnalyser.Block.Cardano as Cardano import qualified Cardano.Tools.DBAnalyser.Run as DBAnalyser -import Cardano.Tools.DBAnalyser.Types +import Cardano.Tools.DBAnalyser.Types import qualified Cardano.Tools.DBImmutaliser.Run as DBImmutaliser import qualified Cardano.Tools.DBSynthesizer.Run as DBSynthesizer -import Cardano.Tools.DBSynthesizer.Types -import Ouroboros.Consensus.Block -import Ouroboros.Consensus.Cardano.Block +import Cardano.Tools.DBSynthesizer.Types +import Ouroboros.Consensus.Block +import Ouroboros.Consensus.Cardano.Block import qualified Test.Cardano.Tools.Headers -import Test.Tasty -import Test.Tasty.HUnit -import Test.Util.TestEnv +import Test.Tasty +import Test.Tasty.HUnit +import Test.Util.TestEnv nodeConfig, chainDB :: FilePath nodeConfig = "test/tools-test/disk/config/config.json" diff --git a/ouroboros-consensus-cardano/test/tools-test/Test/Cardano/Tools/Headers.hs b/ouroboros-consensus-cardano/test/tools-test/Test/Cardano/Tools/Headers.hs index 02577dfdd8..fc2b10e505 100644 --- a/ouroboros-consensus-cardano/test/tools-test/Test/Cardano/Tools/Headers.hs +++ b/ouroboros-consensus-cardano/test/tools-test/Test/Cardano/Tools/Headers.hs @@ -1,26 +1,16 @@ module Test.Cardano.Tools.Headers (tests) where -import Cardano.Tools.Headers (ValidationResult (..), validate) +import Cardano.Tools.Headers (ValidationResult (..), validate) import qualified Data.Aeson as Json -import Data.Function ((&)) +import Data.Function ((&)) import qualified Data.Text.Lazy as LT -import Data.Text.Lazy.Encoding (decodeUtf8) -import Test.Ouroboros.Consensus.Protocol.Praos.Header ( - genContext, - genMutatedHeader, - genSample, - ) -import Test.QuickCheck ( - Property, - counterexample, - forAll, - forAllBlind, - label, - property, - (===), - ) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.QuickCheck (testProperty) +import Data.Text.Lazy.Encoding (decodeUtf8) +import Test.Ouroboros.Consensus.Protocol.Praos.Header (genContext, + genMutatedHeader, genSample) +import Test.QuickCheck (Property, counterexample, forAll, forAllBlind, + label, property, (===)) +import Test.Tasty (TestTree, testGroup) +import Test.Tasty.QuickCheck (testProperty) tests :: TestTree tests = diff --git a/ouroboros-consensus-protocol/src/ouroboros-consensus-protocol/Ouroboros/Consensus/Protocol/Praos.hs b/ouroboros-consensus-protocol/src/ouroboros-consensus-protocol/Ouroboros/Consensus/Protocol/Praos.hs index 381c9c4ebb..4df25a8eac 100644 --- a/ouroboros-consensus-protocol/src/ouroboros-consensus-protocol/Ouroboros/Consensus/Protocol/Praos.hs +++ b/ouroboros-consensus-protocol/src/ouroboros-consensus-protocol/Ouroboros/Consensus/Protocol/Praos.hs @@ -16,116 +16,87 @@ {-# LANGUAGE ViewPatterns #-} module Ouroboros.Consensus.Protocol.Praos ( - ConsensusConfig (..), - Praos, - PraosCannotForge (..), - PraosCrypto, - PraosFields (..), - PraosIsLeader (..), - PraosParams (..), - PraosState (..), - PraosToSign (..), - PraosValidationErr (..), - Ticked (..), - forgePraosFields, - praosCheckCanForge, - + ConsensusConfig (..) + , Praos + , PraosCannotForge (..) + , PraosCrypto + , PraosFields (..) + , PraosIsLeader (..) + , PraosParams (..) + , PraosState (..) + , PraosToSign (..) + , PraosValidationErr (..) + , Ticked (..) + , forgePraosFields + , praosCheckCanForge -- * For testing purposes - doValidateKESSignature, - doValidateVRFSignature, -) where + , doValidateKESSignature + , doValidateVRFSignature + ) where -import Cardano.Binary (FromCBOR (..), ToCBOR (..), enforceSize) +import Cardano.Binary (FromCBOR (..), ToCBOR (..), enforceSize) import qualified Cardano.Crypto.DSIGN as DSIGN import qualified Cardano.Crypto.KES as KES -import Cardano.Crypto.VRF (hashVerKeyVRF) +import Cardano.Crypto.VRF (hashVerKeyVRF) import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.BaseTypes (ActiveSlotCoeff, Nonce, (⭒)) +import Cardano.Ledger.BaseTypes (ActiveSlotCoeff, Nonce, (⭒)) import qualified Cardano.Ledger.BaseTypes as SL import qualified Cardano.Ledger.Chain as SL -import Cardano.Ledger.Crypto (Crypto, DSIGN, KES, StandardCrypto, VRF) -import Cardano.Ledger.Hashes (EraIndependentTxBody) -import Cardano.Ledger.Keys ( - KeyHash, - KeyRole (BlockIssuer), - VKey (VKey), - coerceKeyRole, - hashKey, - ) +import Cardano.Ledger.Crypto (Crypto, DSIGN, KES, StandardCrypto, VRF) +import Cardano.Ledger.Hashes (EraIndependentTxBody) +import Cardano.Ledger.Keys (KeyHash, KeyRole (BlockIssuer), + VKey (VKey), coerceKeyRole, hashKey) import qualified Cardano.Ledger.Keys as SL -import Cardano.Ledger.PoolDistr ( - IndividualPoolStake (IndividualPoolStake), - ) +import Cardano.Ledger.PoolDistr + (IndividualPoolStake (IndividualPoolStake)) import qualified Cardano.Ledger.PoolDistr as SL -import Cardano.Ledger.Slot (Duration (Duration), (+*)) +import Cardano.Ledger.Slot (Duration (Duration), (+*)) import qualified Cardano.Protocol.TPraos.API as SL -import Cardano.Protocol.TPraos.BHeader ( - BoundedNatural (bvValue), - checkLeaderNatValue, - prevHashToNonce, - ) -import Cardano.Protocol.TPraos.OCert ( - KESPeriod (KESPeriod), - OCert (OCert), - OCertSignable, - ) +import Cardano.Protocol.TPraos.BHeader (BoundedNatural (bvValue), + checkLeaderNatValue, prevHashToNonce) +import Cardano.Protocol.TPraos.OCert (KESPeriod (KESPeriod), + OCert (OCert), OCertSignable) import qualified Cardano.Protocol.TPraos.OCert as OCert import qualified Cardano.Protocol.TPraos.Rules.Prtcl as SL import qualified Cardano.Protocol.TPraos.Rules.Tickn as SL -import Cardano.Slotting.EpochInfo ( - EpochInfo, - epochInfoEpoch, - epochInfoFirst, - hoistEpochInfo, - ) -import Cardano.Slotting.Slot ( - EpochNo (EpochNo), - SlotNo (SlotNo), - WithOrigin, - unSlotNo, - ) -import Cardano.Slotting.Time (SystemStart) +import Cardano.Slotting.EpochInfo (EpochInfo, epochInfoEpoch, + epochInfoFirst, hoistEpochInfo) +import Cardano.Slotting.Slot (EpochNo (EpochNo), SlotNo (SlotNo), + WithOrigin, unSlotNo) +import Cardano.Slotting.Time (SystemStart) import qualified Codec.CBOR.Encoding as CBOR -import Codec.Serialise (Serialise (decode, encode)) -import Control.Exception (throw) -import Control.Monad (unless) -import Control.Monad.Except (Except, runExcept, throwError) -import Data.Coerce (coerce) -import Data.Functor.Identity (runIdentity) -import Data.Map.Strict (Map) +import Codec.Serialise (Serialise (decode, encode)) +import Control.Exception (throw) +import Control.Monad (unless) +import Control.Monad.Except (Except, runExcept, throwError) +import Data.Coerce (coerce) +import Data.Functor.Identity (runIdentity) +import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (Proxy)) +import Data.Proxy (Proxy (Proxy)) import qualified Data.Set as Set -import Data.Word (Word64) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks) -import Numeric.Natural (Natural) -import Ouroboros.Consensus.Block (WithOrigin (NotOrigin)) +import Data.Word (Word64) +import GHC.Generics (Generic) +import NoThunks.Class (NoThunks) +import Numeric.Natural (Natural) +import Ouroboros.Consensus.Block (WithOrigin (NotOrigin)) import qualified Ouroboros.Consensus.HardFork.History as History -import Ouroboros.Consensus.Protocol.Abstract -import Ouroboros.Consensus.Protocol.Ledger.HotKey (HotKey) +import Ouroboros.Consensus.Protocol.Abstract +import Ouroboros.Consensus.Protocol.Ledger.HotKey (HotKey) import qualified Ouroboros.Consensus.Protocol.Ledger.HotKey as HotKey -import Ouroboros.Consensus.Protocol.Ledger.Util (isNewEpoch) -import Ouroboros.Consensus.Protocol.Praos.Common -import Ouroboros.Consensus.Protocol.Praos.Header (HeaderBody) -import Ouroboros.Consensus.Protocol.Praos.VRF ( - InputVRF, - mkInputVRF, - vrfLeaderValue, - vrfNonceValue, - ) +import Ouroboros.Consensus.Protocol.Ledger.Util (isNewEpoch) +import Ouroboros.Consensus.Protocol.Praos.Common +import Ouroboros.Consensus.Protocol.Praos.Header (HeaderBody) import qualified Ouroboros.Consensus.Protocol.Praos.Views as Views -import Ouroboros.Consensus.Protocol.TPraos ( - ConsensusConfig (TPraosConfig, tpraosEpochInfo, tpraosParams), - TPraos, - TPraosState (tpraosStateChainDepState, tpraosStateLastSlot), - ) -import Ouroboros.Consensus.Ticked (Ticked) -import Ouroboros.Consensus.Util.Versioned ( - VersionDecoder (Decode), - decodeVersion, - encodeVersion, - ) +import Ouroboros.Consensus.Protocol.Praos.VRF (InputVRF, mkInputVRF, + vrfLeaderValue, vrfNonceValue) +import Ouroboros.Consensus.Protocol.TPraos + (ConsensusConfig (TPraosConfig, tpraosEpochInfo, tpraosParams), + TPraos, + TPraosState (tpraosStateChainDepState, tpraosStateLastSlot)) +import Ouroboros.Consensus.Ticked (Ticked) +import Ouroboros.Consensus.Util.Versioned (VersionDecoder (Decode), + decodeVersion, encodeVersion) data Praos c @@ -146,7 +117,7 @@ instance PraosCrypto StandardCrypto data PraosFields c toSign = PraosFields { praosSignature :: SL.SignedKES c toSign - , praosToSign :: toSign + , praosToSign :: toSign } deriving (Generic) @@ -164,11 +135,11 @@ the block signature. data PraosToSign c = PraosToSign { praosToSignIssuerVK :: SL.VKey 'SL.BlockIssuer c -- ^ Verification key for the issuer of this block. - , praosToSignVrfVK :: SL.VerKeyVRF c - , praosToSignVrfRes :: SL.CertifiedVRF c InputVRF + , praosToSignVrfVK :: SL.VerKeyVRF c + , praosToSignVrfRes :: SL.CertifiedVRF c InputVRF -- ^ Verifiable random value. This is used both to prove the issuer is -- eligible to issue a block, and to contribute to the evolving nonce. - , praosToSignOCert :: OCert.OCert c + , praosToSignOCert :: OCert.OCert c -- ^ Lightweight delegation certificate mapping the cold (DSIGN) key to -- the online KES key. } @@ -220,29 +191,29 @@ forgePraosFields -- | Praos parameters that are node independent data PraosParams = PraosParams - { praosSlotsPerKESPeriod :: !Word64 + { praosSlotsPerKESPeriod :: !Word64 -- ^ See 'Globals.slotsPerKESPeriod'. - , praosLeaderF :: !SL.ActiveSlotCoeff + , praosLeaderF :: !SL.ActiveSlotCoeff -- ^ Active slots coefficient. This parameter represents the proportion -- of slots in which blocks should be issued. This can be interpreted as -- the probability that a party holding all the stake will be elected as -- leader for a given slot. - , praosSecurityParam :: !SecurityParam + , praosSecurityParam :: !SecurityParam -- ^ See 'Globals.securityParameter'. - , praosMaxKESEvo :: !Word64 + , praosMaxKESEvo :: !Word64 -- ^ Maximum number of KES iterations, see 'Globals.maxKESEvo'. - , praosQuorum :: !Word64 + , praosQuorum :: !Word64 -- ^ Quorum for update system votes and MIR certificates, see -- 'Globals.quorum'. - , praosMaxMajorPV :: !MaxMajorProtVer + , praosMaxMajorPV :: !MaxMajorProtVer -- ^ All blocks invalid after this protocol version, see -- 'Globals.maxMajorPV'. - , praosMaxLovelaceSupply :: !Word64 + , praosMaxLovelaceSupply :: !Word64 -- ^ Maximum number of lovelace in the system, see -- 'Globals.maxLovelaceSupply'. - , praosNetworkId :: !SL.Network + , praosNetworkId :: !SL.Network -- ^ Testnet or mainnet? - , praosSystemStart :: !SystemStart + , praosSystemStart :: !SystemStart -- ^ The system start, as projected from the chain's genesis block. , praosRandomnessStabilisationWindow :: !Word64 -- ^ The number of slots before the start of an epoch where the @@ -288,16 +259,16 @@ as a series of nonces which get updated in different ways over the course of an epoch. -} data PraosState c = PraosState - { praosStateLastSlot :: !(WithOrigin SlotNo) - , praosStateOCertCounters :: !(Map (KeyHash 'BlockIssuer c) Word64) + { praosStateLastSlot :: !(WithOrigin SlotNo) + , praosStateOCertCounters :: !(Map (KeyHash 'BlockIssuer c) Word64) -- ^ Operation Certificate counters - , praosStateEvolvingNonce :: !Nonce + , praosStateEvolvingNonce :: !Nonce -- ^ Evolving nonce - , praosStateCandidateNonce :: !Nonce + , praosStateCandidateNonce :: !Nonce -- ^ Candidate nonce - , praosStateEpochNonce :: !Nonce + , praosStateEpochNonce :: !Nonce -- ^ Epoch nonce - , praosStateLabNonce :: !Nonce + , praosStateLabNonce :: !Nonce -- ^ Nonce constructed from the hash of the previous block , praosStateLastEpochBlockNonce :: !Nonce -- ^ Nonce corresponding to the LAB nonce of the last block of the previous diff --git a/ouroboros-consensus-protocol/src/unstable-protocol-testlib/Test/Ouroboros/Consensus/Protocol/Praos/Header.hs b/ouroboros-consensus-protocol/src/unstable-protocol-testlib/Test/Ouroboros/Consensus/Protocol/Praos/Header.hs index 475d8e565d..cbf1e2b21c 100644 --- a/ouroboros-consensus-protocol/src/unstable-protocol-testlib/Test/Ouroboros/Consensus/Protocol/Praos/Header.hs +++ b/ouroboros-consensus-protocol/src/unstable-protocol-testlib/Test/Ouroboros/Consensus/Protocol/Praos/Header.hs @@ -10,70 +10,58 @@ module Test.Ouroboros.Consensus.Protocol.Praos.Header where -import Cardano.Crypto.DSIGN ( - DSIGNAlgorithm (SignKeyDSIGN, genKeyDSIGN, rawSerialiseSignKeyDSIGN), - Ed25519DSIGN, - deriveVerKeyDSIGN, - rawDeserialiseSignKeyDSIGN, - ) -import Cardano.Crypto.Hash (Blake2b_256, Hash, hash, hashFromBytes, hashToBytes) +import Cardano.Crypto.DSIGN + (DSIGNAlgorithm (SignKeyDSIGN, genKeyDSIGN, rawSerialiseSignKeyDSIGN), + Ed25519DSIGN, deriveVerKeyDSIGN, + rawDeserialiseSignKeyDSIGN) +import Cardano.Crypto.Hash (Blake2b_256, Hash, hash, hashFromBytes, + hashToBytes) import qualified Cardano.Crypto.KES as KES -import Cardano.Crypto.KES.Class (genKeyKES, rawDeserialiseSignKeyKES, rawSerialiseSignKeyKES) -import Cardano.Crypto.Seed (mkSeedFromBytes) -import Cardano.Crypto.VRF (deriveVerKeyVRF, hashVerKeyVRF, rawDeserialiseSignKeyVRF, rawSerialiseSignKeyVRF) +import Cardano.Crypto.KES.Class (genKeyKES, rawDeserialiseSignKeyKES, + rawSerialiseSignKeyKES) +import Cardano.Crypto.Seed (mkSeedFromBytes) +import Cardano.Crypto.VRF (deriveVerKeyVRF, hashVerKeyVRF, + rawDeserialiseSignKeyVRF, rawSerialiseSignKeyVRF) import qualified Cardano.Crypto.VRF as VRF -import Cardano.Crypto.VRF.Praos (skToBatchCompat) +import Cardano.Crypto.VRF.Praos (skToBatchCompat) import qualified Cardano.Crypto.VRF.Praos as VRF -import Cardano.Ledger.BaseTypes ( - ActiveSlotCoeff, - Globals (activeSlotCoeff), - Nonce (..), - PositiveUnitInterval, - ProtVer (..), - Version, - activeSlotVal, - boundRational, - mkActiveSlotCoeff, - natVersion, - ) -import Cardano.Ledger.Binary (MaxVersion, decCBOR, decodeFull', decodeFullAnnotator, serialize') -import Cardano.Ledger.Keys (KeyHash, KeyRole (BlockIssuer), VKey (..), hashKey, signedDSIGN) -import Cardano.Protocol.TPraos.BHeader ( - HashHeader (..), - PrevHash (..), - checkLeaderNatValue, - ) -import Cardano.Protocol.TPraos.OCert ( - KESPeriod (..), - OCert (..), - OCertSignable (..), - ) -import Cardano.Slotting.Block (BlockNo (..)) -import Cardano.Slotting.Slot (SlotNo (..)) -import Data.Aeson ((.:), (.=)) +import Cardano.Ledger.BaseTypes (ActiveSlotCoeff, + Globals (activeSlotCoeff), Nonce (..), + PositiveUnitInterval, ProtVer (..), Version, activeSlotVal, + boundRational, mkActiveSlotCoeff, natVersion) +import Cardano.Ledger.Binary (MaxVersion, decCBOR, decodeFull', + decodeFullAnnotator, serialize') +import Cardano.Ledger.Keys (KeyHash, KeyRole (BlockIssuer), VKey (..), + hashKey, signedDSIGN) +import Cardano.Protocol.TPraos.BHeader (HashHeader (..), + PrevHash (..), checkLeaderNatValue) +import Cardano.Protocol.TPraos.OCert (KESPeriod (..), OCert (..), + OCertSignable (..)) +import Cardano.Slotting.Block (BlockNo (..)) +import Cardano.Slotting.Slot (SlotNo (..)) +import Data.Aeson ((.:), (.=)) import qualified Data.Aeson as Json -import Data.Bifunctor (second) -import Data.ByteString (ByteString) +import Data.Bifunctor (second) +import Data.ByteString (ByteString) import qualified Data.ByteString as BS import qualified Data.ByteString.Base16 as Base16 import qualified Data.ByteString.Lazy as LBS -import Data.Coerce (coerce) -import Data.Foldable (toList) +import Data.Coerce (coerce) +import Data.Foldable (toList) import qualified Data.Map as Map -import Data.Maybe (fromJust, fromMaybe) -import Data.Proxy (Proxy (..)) -import Data.Ratio ((%)) -import Data.Text.Encoding (decodeUtf8, encodeUtf8) -import Data.Word (Word64) -import Ouroboros.Consensus.Protocol.Praos (PraosValidationErr (..)) -import Ouroboros.Consensus.Protocol.Praos.Header ( - Header, - HeaderBody (..), - pattern Header, - ) -import Ouroboros.Consensus.Protocol.Praos.VRF (InputVRF, mkInputVRF, vrfLeaderValue) -import Ouroboros.Consensus.Protocol.TPraos (StandardCrypto) -import Test.QuickCheck (Gen, arbitrary, choose, frequency, generate, getPositive, resize, shrinkList, sized, suchThat, vectorOf) +import Data.Maybe (fromJust, fromMaybe) +import Data.Proxy (Proxy (..)) +import Data.Ratio ((%)) +import Data.Text.Encoding (decodeUtf8, encodeUtf8) +import Data.Word (Word64) +import Ouroboros.Consensus.Protocol.Praos (PraosValidationErr (..)) +import Ouroboros.Consensus.Protocol.Praos.Header (Header, + HeaderBody (..), pattern Header) +import Ouroboros.Consensus.Protocol.Praos.VRF (InputVRF, mkInputVRF, + vrfLeaderValue) +import Ouroboros.Consensus.Protocol.TPraos (StandardCrypto) +import Test.QuickCheck (Gen, arbitrary, choose, frequency, generate, + getPositive, resize, shrinkList, sized, suchThat, vectorOf) -- * Test Vectors @@ -243,7 +231,7 @@ genMutation = ] data MutatedHeader = MutatedHeader - { header :: !(Header StandardCrypto) + { header :: !(Header StandardCrypto) , mutation :: !Mutation } deriving (Show, Eq)