Skip to content

Commit

Permalink
Updated ledger and ouroboros-network dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
Soupstraw committed Nov 7, 2022
1 parent 7ef8a73 commit ddb8704
Show file tree
Hide file tree
Showing 22 changed files with 702 additions and 680 deletions.
6 changes: 3 additions & 3 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ source-repository-package
source-repository-package
type: git
location: https://github.com/input-output-hk/ouroboros-network
tag: c764553561bed8978d2c6753d1608dc65449617a
tag: 9128bfcc044fc882decb0cf112545abf9bc2d615
--sha256: 0hdh7xdrvxw943r6qr0xr4kwszindh5mnsn1lww6qdnxnmn7wcsc
subdir:
monoidal-synchronisation
Expand All @@ -148,7 +148,7 @@ source-repository-package
source-repository-package
type: git
location: https://github.com/input-output-hk/cardano-ledger
tag: f49879a79098d9372d63baa13b94a941a56eda34
tag: 49613f11e034485c8377945c86c0465726c0860c
--sha256: 0i9x66yqkrvx2w79dy6lzlya82yxc8567rgjj828vc2d46d6nvx6
subdir:
eras/alonzo/impl
Expand Down Expand Up @@ -178,7 +178,7 @@ source-repository-package
source-repository-package
type: git
location: https://github.com/input-output-hk/cardano-prelude
tag: 6ea36cf2247ac0bc33e08c327abec34dfd05bd99
tag: 533aec85c1ca05c7d171da44b89341fb736ecfe5
--sha256: 0z2y3wzppc12bpn9bl48776ms3nszw8j58xfsdxf97nzjgrmd62g
subdir:
cardano-prelude
Expand Down
1 change: 1 addition & 0 deletions cardano-api/cardano-api.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ library
, formatting
, iproute
, memory
, microlens
, network
, nothunks
, optparse-applicative-fork
Expand Down
52 changes: 33 additions & 19 deletions cardano-api/src/Cardano/Api/Fees.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
{-# LANGUAGE TypeApplications #-}

{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
{-# LANGUAGE AllowAmbiguousTypes #-}

-- | Fee calculation
--
Expand Down Expand Up @@ -52,7 +53,6 @@ import Data.Map (Map)
import qualified Data.Map as Map
import Data.Maybe (catMaybes, fromMaybe, maybeToList)
import Data.Ratio
import Data.Sequence.Strict (StrictSeq (..))
import Data.Set (Set)
import qualified Data.Set as Set
import qualified Data.Text as Text
Expand All @@ -73,20 +73,18 @@ import qualified Cardano.Ledger.Coin as Ledger
import qualified Cardano.Ledger.Core as Ledger
import qualified Cardano.Ledger.Crypto as Ledger
import qualified Cardano.Ledger.Era as Ledger.Era (Crypto)
import qualified Cardano.Ledger.Hashes as Ledger
import qualified Cardano.Ledger.Keys as Ledger
import qualified Cardano.Ledger.Shelley.API as Ledger (CLI, DCert, TxIn, Wdrl)
import qualified Cardano.Ledger.Shelley.API as Ledger (CLI)
import qualified Cardano.Ledger.Shelley.API.Wallet as Ledger (evaluateTransactionBalance,
evaluateTransactionFee)

import qualified Cardano.Ledger.Shelley.API.Wallet as Shelley
import Cardano.Ledger.Shelley.PParams (PParams' (..))
import Cardano.Ledger.Shelley.PParams (ShelleyPParamsHKD (..))

import qualified Cardano.Ledger.Mary.Value as Mary

import qualified Cardano.Ledger.Alonzo as Alonzo
import qualified Cardano.Ledger.Alonzo.Language as Alonzo
import Cardano.Ledger.Alonzo.PParams (PParams' (..))
import Cardano.Ledger.Alonzo.PParams (AlonzoPParamsHKD (..))
import qualified Cardano.Ledger.Alonzo.Scripts as Alonzo
import qualified Cardano.Ledger.Alonzo.Tools as Alonzo
import qualified Cardano.Ledger.Alonzo.Tx as Alonzo
Expand All @@ -96,7 +94,7 @@ import qualified Cardano.Ledger.Alonzo.TxWitness as Alonzo
import qualified Plutus.V1.Ledger.Api as Plutus

import qualified Cardano.Ledger.Babbage as Babbage
import Cardano.Ledger.Babbage.PParams (PParams' (..))
import Cardano.Ledger.Babbage.PParams (BabbagePParamsHKD (..))

import qualified Ouroboros.Consensus.HardFork.History as Consensus

Expand All @@ -112,6 +110,10 @@ import Cardano.Api.Script
import Cardano.Api.Tx
import Cardano.Api.TxBody
import Cardano.Api.Value
import Lens.Micro ((^.))
import Cardano.Ledger.Core (EraTx(sizeTxF))
import Cardano.Ledger.Shelley.TxBody (ShelleyEraTxBody)
import Cardano.Ledger.Mary.Value (MaryValue)

{- HLINT ignore "Redundant return" -}

Expand All @@ -135,16 +137,15 @@ transactionFee txFeeFixed txFeePerByte tx =
let a = toInteger txFeePerByte
b = toInteger txFeeFixed
in case tx of
ShelleyTx _ tx' -> let x = obtainHasField shelleyBasedEra $ getField @"txsize" tx'
ShelleyTx _ tx' -> let x = obtainHasField shelleyBasedEra $ tx' ^. sizeTxF
in Lovelace (a * x + b)
--TODO: This can be made to work for Byron txs too. Do that: fill in this case
-- and remove the IsShelleyBasedEra constraint.
ByronTx _ -> case shelleyBasedEra :: ShelleyBasedEra ByronEra of {}
where
obtainHasField
:: ShelleyLedgerEra era ~ ledgerera
=> ShelleyBasedEra era
-> ( HasField "txsize" (Ledger.Tx (ShelleyLedgerEra era)) Integer
:: ShelleyBasedEra era
-> ( EraTx (ShelleyLedgerEra era)
=> a)
-> a
obtainHasField ShelleyBasedEraShelley f = f
Expand Down Expand Up @@ -538,6 +539,8 @@ evaluateTransactionExecutionUnits _eraInMode systemstart history pparams utxo tx
evalAlonzo :: forall ledgerera.
ShelleyLedgerEra era ~ ledgerera
=> ledgerera ~ Alonzo.AlonzoEra Ledger.StandardCrypto
=> HasField "_maxTxExUnits" (Ledger.PParams ledgerera) Alonzo.ExUnits
=> HasField"_protocolVersion" (Ledger.PParams ledgerera) Ledger.ProtVer
=> LedgerEraConstraints ledgerera
=> ShelleyBasedEra era
-> Ledger.Tx ledgerera
Expand Down Expand Up @@ -661,13 +664,28 @@ evaluateTransactionBalance _ _ _ (ByronTxBody _) =

evaluateTransactionBalance pparams poolids utxo
(ShelleyTxBody era txbody _ _ _ _) =
withLedgerConstraints era evalAdaOnly evalMultiAsset
withLedgerConstraints
era
(getShelleyEraTxBodyConstraint era evalAdaOnly)
(getShelleyEraTxBodyConstraint era evalMultiAsset)
where
getShelleyEraTxBodyConstraint
:: forall era' a.
ShelleyBasedEra era'
-> (ShelleyEraTxBody (ShelleyLedgerEra era') => a)
-> a
getShelleyEraTxBodyConstraint ShelleyBasedEraShelley x = x
getShelleyEraTxBodyConstraint ShelleyBasedEraMary x = x
getShelleyEraTxBodyConstraint ShelleyBasedEraAllegra x = x
getShelleyEraTxBodyConstraint ShelleyBasedEraAlonzo x = x
getShelleyEraTxBodyConstraint ShelleyBasedEraBabbage x = x

isNewPool :: Ledger.KeyHash Ledger.StakePool Ledger.StandardCrypto -> Bool
isNewPool kh = StakePoolKeyHash kh `Set.notMember` poolids

evalMultiAsset :: forall ledgerera.
ShelleyLedgerEra era ~ ledgerera
=> ShelleyEraTxBody ledgerera
=> LedgerEraConstraints ledgerera
=> LedgerMultiAssetConstraints ledgerera
=> MultiAssetSupportedInEra era
Expand All @@ -682,6 +700,7 @@ evaluateTransactionBalance pparams poolids utxo

evalAdaOnly :: forall ledgerera.
ShelleyLedgerEra era ~ ledgerera
=> ShelleyEraTxBody ledgerera
=> LedgerEraConstraints ledgerera
=> LedgerAdaOnlyConstraints ledgerera
=> OnlyAdaSupportedInEra era
Expand Down Expand Up @@ -726,8 +745,7 @@ type LedgerAdaOnlyConstraints ledgerera =
Ledger.Value ledgerera ~ Ledger.Coin

type LedgerMultiAssetConstraints ledgerera =
( Ledger.Value ledgerera ~ Mary.Value Ledger.StandardCrypto
, HasField "mint" (Ledger.TxBody ledgerera) (Ledger.Value ledgerera)
( Ledger.Value ledgerera ~ MaryValue Ledger.StandardCrypto
)

type LedgerPParamsConstraints ledgerera =
Expand All @@ -738,11 +756,7 @@ type LedgerPParamsConstraints ledgerera =
)

type LedgerTxBodyConstraints ledgerera =
( HasField "certs" (Ledger.TxBody ledgerera)
(StrictSeq (Ledger.DCert Ledger.StandardCrypto))
, HasField "inputs" (Ledger.TxBody ledgerera)
(Set (Ledger.TxIn Ledger.StandardCrypto))
, HasField "wdrls" (Ledger.TxBody ledgerera) (Ledger.Wdrl Ledger.StandardCrypto)
( Ledger.EraTx ledgerera
)


Expand Down
45 changes: 22 additions & 23 deletions cardano-api/src/Cardano/Api/LedgerEvent.hs
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,6 @@ import Cardano.Ledger.Era (Crypto)
import qualified Cardano.Ledger.Keys as Ledger
import Cardano.Ledger.Shelley.API (InstantaneousRewards (InstantaneousRewards))
import Cardano.Ledger.Shelley.Rewards
import Cardano.Ledger.Shelley.Rules.Epoch (EpochEvent (PoolReapEvent))
import Cardano.Ledger.Shelley.Rules.Mir (MirEvent (..))
import Cardano.Ledger.Shelley.Rules.NewEpoch
(NewEpochEvent (DeltaRewardEvent, EpochEvent, MirEvent, TotalRewardEvent))
import Cardano.Ledger.Shelley.Rules.PoolReap (PoolreapEvent (RetiredPools))
import Cardano.Ledger.Shelley.Rules.Rupd (RupdEvent (RupdEvent))
import Cardano.Ledger.Shelley.Rules.Tick (TickEvent (NewEpochEvent))
import Control.State.Transition (Event)
import Data.Function (($), (.))
import Data.Functor (fmap)
Expand All @@ -52,6 +45,12 @@ import Ouroboros.Consensus.Ledger.Basics (AuxLedgerEvent)
import Ouroboros.Consensus.Shelley.Ledger (ShelleyBlock,
ShelleyLedgerEvent (ShelleyLedgerEventTICK))
import Ouroboros.Consensus.TypeFamilyWrappers
import Cardano.Ledger.Shelley.Rules.Tick (ShelleyTickEvent (NewEpochEvent))
import Cardano.Ledger.Shelley.Rules.NewEpoch (ShelleyNewEpochEvent (..))
import Cardano.Ledger.Shelley.Rules.Epoch (ShelleyEpochEvent (..))
import Cardano.Ledger.Shelley.Rules.PoolReap (ShelleyPoolreapEvent (..))
import Cardano.Ledger.Shelley.Rules.Mir (ShelleyMirEvent (..))
import Cardano.Ledger.Shelley.Rules.Rupd (RupdEvent (..))

data LedgerEvent
= -- | The given pool is being registered for the first time on chain.
Expand All @@ -75,11 +74,11 @@ instance ConvertLedgerEvent ByronBlock where

instance
( Crypto ledgerera ~ StandardCrypto,
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ TickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ NewEpochEvent ledgerera,
Event (Ledger.Core.EraRule "EPOCH" ledgerera) ~ EpochEvent ledgerera,
Event (Ledger.Core.EraRule "POOLREAP" ledgerera) ~ PoolreapEvent ledgerera,
Event (Ledger.Core.EraRule "MIR" ledgerera) ~ MirEvent ledgerera,
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ ShelleyTickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ ShelleyNewEpochEvent ledgerera,
Event (Ledger.Core.EraRule "EPOCH" ledgerera) ~ ShelleyEpochEvent ledgerera,
Event (Ledger.Core.EraRule "POOLREAP" ledgerera) ~ ShelleyPoolreapEvent ledgerera,
Event (Ledger.Core.EraRule "MIR" ledgerera) ~ ShelleyMirEvent ledgerera,
Event (Ledger.Core.EraRule "RUPD" ledgerera) ~ RupdEvent (Crypto ledgerera)
) =>
ConvertLedgerEvent (ShelleyBlock protocol ledgerera)
Expand Down Expand Up @@ -134,8 +133,8 @@ data PoolReapDetails = PoolReapDetails

pattern LERewardEvent ::
( Crypto ledgerera ~ StandardCrypto,
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ TickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ NewEpochEvent ledgerera
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ ShelleyTickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ ShelleyNewEpochEvent ledgerera
) =>
EpochNo ->
Map StakeCredential (Set (Reward StandardCrypto)) ->
Expand All @@ -146,8 +145,8 @@ pattern LERewardEvent e m <-

pattern LEDeltaRewardEvent ::
( Crypto ledgerera ~ StandardCrypto,
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ TickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ NewEpochEvent ledgerera,
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ ShelleyTickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ ShelleyNewEpochEvent ledgerera,
Event (Ledger.Core.EraRule "RUPD" ledgerera) ~ RupdEvent (Crypto ledgerera)
) =>
EpochNo ->
Expand All @@ -159,9 +158,9 @@ pattern LEDeltaRewardEvent e m <-

pattern LEMirTransfer ::
( Crypto ledgerera ~ StandardCrypto,
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ TickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ NewEpochEvent ledgerera,
Event (Ledger.Core.EraRule "MIR" ledgerera) ~ MirEvent ledgerera
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ ShelleyTickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ ShelleyNewEpochEvent ledgerera,
Event (Ledger.Core.EraRule "MIR" ledgerera) ~ ShelleyMirEvent ledgerera
) =>
Map StakeCredential Lovelace ->
Map StakeCredential Lovelace ->
Expand All @@ -185,10 +184,10 @@ pattern LEMirTransfer rp tp rtt ttr <-

pattern LERetiredPools ::
( Crypto ledgerera ~ StandardCrypto,
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ TickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ NewEpochEvent ledgerera,
Event (Ledger.Core.EraRule "EPOCH" ledgerera) ~ EpochEvent ledgerera,
Event (Ledger.Core.EraRule "POOLREAP" ledgerera) ~ PoolreapEvent ledgerera
Event (Ledger.Core.EraRule "TICK" ledgerera) ~ ShelleyTickEvent ledgerera,
Event (Ledger.Core.EraRule "NEWEPOCH" ledgerera) ~ ShelleyNewEpochEvent ledgerera,
Event (Ledger.Core.EraRule "EPOCH" ledgerera) ~ ShelleyEpochEvent ledgerera,
Event (Ledger.Core.EraRule "POOLREAP" ledgerera) ~ ShelleyPoolreapEvent ledgerera
) =>
Map StakeCredential (Map (Hash StakePoolKey) Lovelace) ->
Map StakeCredential (Map (Hash StakePoolKey) Lovelace) ->
Expand Down
8 changes: 7 additions & 1 deletion cardano-api/src/Cardano/Api/LedgerState.hs
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ import qualified Ouroboros.Network.Block
import qualified Ouroboros.Network.Protocol.ChainSync.Client as CS
import qualified Ouroboros.Network.Protocol.ChainSync.ClientPipelined as CSP
import Ouroboros.Network.Protocol.ChainSync.PipelineDecision
import Cardano.Ledger.SafeHash (HashAnnotated)

data InitialLedgerStateError
= ILSEConfigFile Text
Expand Down Expand Up @@ -1313,7 +1314,8 @@ instance Error LeadershipError where

nextEpochEligibleLeadershipSlots
:: forall era.
HasField "_d" (Core.PParams (ShelleyLedgerEra era)) UnitInterval
( HasField "_d" (Core.PParams (ShelleyLedgerEra era)) UnitInterval
, HashAnnotated (Core.TxBody (ShelleyLedgerEra era)) Core.EraIndependentTxBody (Ledger.Crypto (ShelleyLedgerEra era)))
=> Ledger.Era (ShelleyLedgerEra era)
=> Share (Core.TxOut (ShelleyLedgerEra era)) ~ Interns (Shelley.Spec.Credential 'Shelley.Spec.Staking (Cardano.Ledger.Era.Crypto (ShelleyLedgerEra era)))
=> FromCBOR (Consensus.ChainDepState (Api.ConsensusProtocol era))
Expand Down Expand Up @@ -1482,6 +1484,10 @@ obtainDecodeEpochStateConstraints
, FromCBOR (State (Core.EraRule "PPUP" ledgerera))
, FromCBOR (Core.Value ledgerera)
, FromSharedCBOR (Core.TxOut ledgerera)
, HashAnnotated
(Core.TxBody ledgerera)
Core.EraIndependentTxBody
(Ledger.Crypto (ShelleyLedgerEra era))
) => a) -> a
obtainDecodeEpochStateConstraints ShelleyBasedEraShelley f = f
obtainDecodeEpochStateConstraints ShelleyBasedEraAllegra f = f
Expand Down
Loading

0 comments on commit ddb8704

Please sign in to comment.