Skip to content

Commit

Permalink
Delete Praos.Translate module
Browse files Browse the repository at this point in the history
  • Loading branch information
jasagredo committed May 8, 2024
1 parent d4b636d commit 7324734
Show file tree
Hide file tree
Showing 14 changed files with 80 additions and 93 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ import qualified Ouroboros.Consensus.HardFork.History as History
import Ouroboros.Consensus.HeaderValidation (AnnTip)
import Ouroboros.Consensus.Ledger.Extended (ExtLedgerState (..))
import Ouroboros.Consensus.Ledger.SupportsMempool (ApplyTxErr)
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import Ouroboros.Consensus.Protocol.TPraos (TPraos)
import Ouroboros.Consensus.Shelley.Ledger (ShelleyBlock)
import qualified Ouroboros.Consensus.Shelley.Ledger as Shelley
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ import qualified Ouroboros.Consensus.HardFork.History as History
import Ouroboros.Consensus.HeaderValidation
import Ouroboros.Consensus.Node.NetworkProtocolVersion
import Ouroboros.Consensus.Node.Serialisation (Some (..))
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import Ouroboros.Consensus.Protocol.TPraos (TPraos)
import Ouroboros.Consensus.Shelley.Ledger
import Ouroboros.Consensus.Shelley.Ledger.Block ()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import qualified Ouroboros.Consensus.Ledger.SupportsProtocol as Consensus
import Ouroboros.Consensus.Node.ProtocolInfo (ProtocolClientInfo (..),
ProtocolInfo (..))
import Ouroboros.Consensus.Node.Run (RunNode)
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import qualified Ouroboros.Consensus.Protocol.TPraos as Consensus
import qualified Ouroboros.Consensus.Shelley.Eras as Consensus (ShelleyEra)
import qualified Ouroboros.Consensus.Shelley.Ledger.Block as Consensus
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ import Ouroboros.Consensus.HeaderValidation (HasAnnTip)
import Ouroboros.Consensus.Ledger.Abstract
import qualified Ouroboros.Consensus.Mempool as Mempool
import Ouroboros.Consensus.Node.ProtocolInfo
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import Ouroboros.Consensus.Shelley.HFEras ()
import qualified Ouroboros.Consensus.Shelley.Ledger as Shelley.Ledger
import Ouroboros.Consensus.Shelley.Ledger.Block (IsShelleyBlock,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ import Ouroboros.Consensus.Protocol.Praos (Praos)
import Ouroboros.Consensus.Protocol.Praos.Header
(HeaderBody (HeaderBody))
import qualified Ouroboros.Consensus.Protocol.Praos.Header as Praos
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import Ouroboros.Consensus.Protocol.TPraos (TPraos,
TPraosState (TPraosState))
import Ouroboros.Consensus.Protocol.Translate (TranslateProto,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import Ouroboros.Consensus.Cardano (CardanoBlock)
import Ouroboros.Consensus.HardFork.Combinator
import Ouroboros.Consensus.HardFork.Combinator.AcrossEras
import Ouroboros.Consensus.Protocol.PBFT
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import Ouroboros.Consensus.Shelley.Ledger (ShelleyBlock,
ShelleyCompatible)
import Ouroboros.Consensus.Shelley.Ledger.SupportsProtocol ()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import Ouroboros.Consensus.Node.NetworkProtocolVersion
(latestReleasedNodeVersion, supportedNodeToClientVersions)
import Ouroboros.Consensus.Node.Serialisation
(SerialiseNodeToClient (decodeNodeToClient))
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import Ouroboros.Consensus.Shelley.Ledger
(CodecConfig (ShelleyCodecConfig))
import Ouroboros.Consensus.Shelley.Ledger.SupportsProtocol ()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ module Test.Consensus.Cardano.SupportedNetworkProtocolVersion (tests) where
import Data.Proxy
import Ouroboros.Consensus.Cardano
import Ouroboros.Consensus.Cardano.Block
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import Ouroboros.Consensus.Shelley.Ledger.SupportsProtocol ()
import Test.Tasty
import Test.Tasty.HUnit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ import Ouroboros.Consensus.Node.NetworkProtocolVersion
import Ouroboros.Consensus.Node.ProtocolInfo
import Ouroboros.Consensus.NodeId
import Ouroboros.Consensus.Protocol.PBFT
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import Ouroboros.Consensus.Shelley.Ledger.SupportsProtocol ()
import Ouroboros.Consensus.Shelley.Node
import Ouroboros.Consensus.Util.IOLike (IOLike)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import Data.Typeable (Typeable)
import Ouroboros.Consensus.Cardano.Block
import Ouroboros.Consensus.Node.NetworkProtocolVersion
(SupportedNetworkProtocolVersion)
import Ouroboros.Consensus.Protocol.Praos.Translate ()
import Ouroboros.Consensus.Shelley.Ledger.SupportsProtocol ()
import Test.Tasty
import Test.Tasty.HUnit
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
### Breaking

- Deleted `Ouroboros.Consensus.Protocol.Praos.Translate`, moving the orphan
instance to `Ouroboros.Consensus.Protocol.Translate`.
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ library
Ouroboros.Consensus.Protocol.Praos
Ouroboros.Consensus.Protocol.Praos.Common
Ouroboros.Consensus.Protocol.Praos.Header
Ouroboros.Consensus.Protocol.Praos.Translate
Ouroboros.Consensus.Protocol.Praos.VRF
Ouroboros.Consensus.Protocol.Praos.Views
Ouroboros.Consensus.Protocol.TPraos
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,22 +1,95 @@
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}

module Ouroboros.Consensus.Protocol.Translate (TranslateProto (..)) where

import Ouroboros.Consensus.Protocol.Abstract
import Cardano.Crypto.DSIGN (VerKeyDSIGN)
import Cardano.Crypto.VRF (VerKeyVRF)
import qualified Cardano.Ledger.Chain as SL
import Cardano.Ledger.Crypto (ADDRHASH, HASH)
import qualified Cardano.Ledger.PoolDistr as SL
import qualified Cardano.Protocol.TPraos.API as SL
import qualified Cardano.Protocol.TPraos.Rules.Prtcl as SL
import qualified Cardano.Protocol.TPraos.Rules.Tickn as SL
import Data.Coerce (coerce)
import qualified Data.Map.Strict as Map
import qualified Ouroboros.Consensus.Protocol.Abstract as Abstract
import Ouroboros.Consensus.Protocol.Praos (Praos, PraosState (..))
import Ouroboros.Consensus.Protocol.Praos.Views
(LedgerView (lvMaxBodySize, lvMaxHeaderSize, lvProtocolVersion))
import qualified Ouroboros.Consensus.Protocol.Praos.Views as Views
import Ouroboros.Consensus.Protocol.TPraos (TPraos,
TPraosState (tpraosStateChainDepState, tpraosStateLastSlot))

-- | Translate across protocols
class TranslateProto protoFrom protoTo
where
-- | Translate the ledger view.
translateLedgerView ::
LedgerView protoFrom -> LedgerView protoTo
Abstract.LedgerView protoFrom -> Abstract.LedgerView protoTo
translateChainDepState ::
ChainDepState protoFrom -> ChainDepState protoTo
Abstract.ChainDepState protoFrom -> Abstract.ChainDepState protoTo

-- | Degenerate instance - we may always translate from a protocol to itself.
instance TranslateProto singleProto singleProto
where
translateLedgerView = id
translateChainDepState = id

{-------------------------------------------------------------------------------
Translation from transitional Praos
-------------------------------------------------------------------------------}

-- | We can translate between TPraos and Praos, provided:
--
-- - They share the same HASH algorithm
-- - They share the same ADDRHASH algorithm
-- - They share the same DSIGN verification keys
-- - They share the same VRF verification keys
instance
( HASH c1 ~ HASH c2,
ADDRHASH c1 ~ ADDRHASH c2,
VerKeyDSIGN c1 ~ VerKeyDSIGN c2,
VerKeyVRF c1 ~ VerKeyVRF c2
) =>
TranslateProto (TPraos c1) (Praos c2)
where
translateLedgerView SL.LedgerView {SL.lvPoolDistr, SL.lvChainChecks} =
Views.LedgerView
{ Views.lvPoolDistr = coercePoolDistr lvPoolDistr,
lvMaxHeaderSize = SL.ccMaxBHSize lvChainChecks,
lvMaxBodySize = SL.ccMaxBBSize lvChainChecks,
lvProtocolVersion = SL.ccProtocolVersion lvChainChecks
}
where
coercePoolDistr :: SL.PoolDistr c1 -> SL.PoolDistr c2
coercePoolDistr (SL.PoolDistr m) =
SL.PoolDistr
. Map.mapKeysMonotonic coerce
. Map.map coerceIndividualPoolStake
$ m
coerceIndividualPoolStake :: SL.IndividualPoolStake c1 -> SL.IndividualPoolStake c2
coerceIndividualPoolStake (SL.IndividualPoolStake stake vrf) =
SL.IndividualPoolStake stake $ coerce vrf

translateChainDepState tpState =
PraosState
{ praosStateLastSlot = tpraosStateLastSlot tpState,
praosStateOCertCounters = Map.mapKeysMonotonic coerce certCounters,
praosStateEvolvingNonce = evolvingNonce,
praosStateCandidateNonce = candidateNonce,
praosStateEpochNonce = SL.ticknStateEpochNonce csTickn,
praosStateLabNonce = csLabNonce,
praosStateLastEpochBlockNonce = SL.ticknStatePrevHashNonce csTickn
}
where
SL.ChainDepState {SL.csProtocol, SL.csTickn, SL.csLabNonce} =
tpraosStateChainDepState tpState
SL.PrtclState certCounters evolvingNonce candidateNonce =
csProtocol

0 comments on commit 7324734

Please sign in to comment.