Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate latest ledger and ouroboros-consensus for 8.6 #321

Merged
merged 14 commits into from
Oct 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/haskell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:

env:
# Modify this value to "invalidate" the cabal cache.
CABAL_CACHE_VERSION: "2023-10-23"
CABAL_CACHE_VERSION: "2023-10-27"

concurrency:
group: >
Expand Down
2 changes: 1 addition & 1 deletion cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ repository cardano-haskell-packages
-- you need to run if you change them
index-state:
, hackage.haskell.org 2023-08-06T23:58:58Z
, cardano-haskell-packages 2023-10-23T08:59:58Z
, cardano-haskell-packages 2023-10-26T16:30:55Z

packages:
cardano-api
Expand Down
49 changes: 24 additions & 25 deletions cardano-api/cardano-api.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -149,17 +149,17 @@ library internal
, cardano-crypto-class ^>= 2.1.2
, cardano-crypto-wrapper ^>= 1.5
, cardano-data >= 1.0
, cardano-ledger-alonzo >= 1.3.1.1
, cardano-ledger-allegra >= 1.2.0.2
, cardano-ledger-api >= 1.3
, cardano-ledger-babbage >= 1.4.0.1
, cardano-ledger-alonzo >= 1.5.0
, cardano-ledger-allegra >= 1.2.3.1
, cardano-ledger-api ^>= 1.7
, cardano-ledger-babbage >= 1.5.0
, cardano-ledger-binary
, cardano-ledger-byron >= 1.0.0.2
, cardano-ledger-conway >= 1.5
, cardano-ledger-core >= 1.4
, cardano-ledger-conway >= 1.10.0
, cardano-ledger-core >= 1.8.0
, cardano-ledger-mary >= 1.3.0.2
, cardano-ledger-shelley >= 1.4.1.0
, cardano-protocol-tpraos >= 1.0.3.3
, cardano-ledger-shelley >= 1.7.0
, cardano-protocol-tpraos >= 1.0.3.6
, cardano-slotting >= 0.1
, cardano-strict-containers >= 0.1
, cborg
Expand All @@ -177,18 +177,18 @@ library internal
, mtl
, network
, optparse-applicative-fork
, ouroboros-consensus ^>= 0.12
, ouroboros-consensus-cardano ^>= 0.10
, ouroboros-consensus-diffusion ^>= 0.8.0.1
, ouroboros-consensus-protocol ^>= 0.5.0.7
, ouroboros-consensus ^>= 0.13
, ouroboros-consensus-cardano ^>= 0.11
, ouroboros-consensus-diffusion ^>= 0.8.0.2
, ouroboros-consensus-protocol ^>= 0.6
, ouroboros-network
, ouroboros-network-api
, ouroboros-network-framework
, ouroboros-network-protocols
, parsec
, plutus-ledger-api:{plutus-ledger-api, plutus-ledger-api-testlib} ^>= 1.11
, plutus-ledger-api:{plutus-ledger-api, plutus-ledger-api-testlib} ^>= 1.15
, prettyprinter
, prettyprinter-configurable ^>= 1.11
, prettyprinter-configurable ^>= 1.15
, random
, scientific
, serialise
Expand Down Expand Up @@ -261,12 +261,11 @@ library gen
, cardano-binary >= 1.6 && < 1.8
, cardano-crypto-class ^>= 2.1.2
, cardano-crypto-test ^>= 1.5
, cardano-ledger-alonzo >= 1.3.1.1
, cardano-ledger-alonzo-test
, cardano-ledger-alonzo:{cardano-ledger-alonzo, testlib} >= 1.5.0
, cardano-ledger-byron-test >= 1.5
, cardano-ledger-core:{cardano-ledger-core, testlib} >= 1.4
, cardano-ledger-shelley >= 1.4.1.0
, cardano-ledger-conway:testlib >= 1.5
, cardano-ledger-core:{cardano-ledger-core, testlib} >= 1.8.0
, cardano-ledger-shelley >= 1.7.0
, cardano-ledger-conway:testlib >= 1.10.0
, containers
, filepath
, hedgehog >= 1.1
Expand All @@ -292,8 +291,8 @@ test-suite cardano-api-test
, cardano-crypto-class ^>= 2.1.2
, cardano-crypto-test ^>= 1.5
, cardano-crypto-tests ^>= 2.1
, cardano-ledger-api >= 1.3
, cardano-ledger-core:{cardano-ledger-core, testlib} >= 1.4
, cardano-ledger-api ^>= 1.7
, cardano-ledger-core:{cardano-ledger-core, testlib} >= 1.8
, containers
, directory
, hedgehog >= 1.1
Expand Down Expand Up @@ -341,8 +340,8 @@ test-suite cardano-api-golden
, cardano-crypto-class ^>= 2.1.2
, cardano-data >= 1.0
, cardano-ledger-alonzo
, cardano-ledger-api >= 1.3
, cardano-ledger-core:{cardano-ledger-core, testlib} >= 1.4
, cardano-ledger-api ^>= 1.7
, cardano-ledger-core:{cardano-ledger-core, testlib} >= 1.8
, cardano-ledger-shelley
, cardano-ledger-shelley-test >= 1.2.0.1
, cardano-slotting ^>= 0.1
Expand All @@ -352,8 +351,8 @@ test-suite cardano-api-golden
, hedgehog >= 1.1
, hedgehog-extras ^>= 0.4.7.0
, microlens
, plutus-core ^>= 1.11
, plutus-ledger-api ^>= 1.11
, plutus-core ^>= 1.15
, plutus-ledger-api ^>= 1.15
, tasty
, tasty-hedgehog
, time
Expand Down
13 changes: 5 additions & 8 deletions cardano-api/gen/Test/Gen/Cardano/Api/Typed.hs
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ import Test.Gen.Cardano.Api.Metadata (genTxMetadata)

import Test.Cardano.Chain.UTxO.Gen (genVKWitness)
import Test.Cardano.Crypto.Gen (genProtocolMagicId)
import qualified Test.Cardano.Ledger.Alonzo.PlutusScripts as Plutus
import Test.Cardano.Ledger.Alonzo.Arbitrary (genValidCostModel)
import Test.Cardano.Ledger.Conway.Arbitrary ()
import Test.Cardano.Ledger.Core.Arbitrary ()

Expand Down Expand Up @@ -960,15 +960,12 @@ genUpdateProposal era =

genCostModel :: Gen Alonzo.CostModel
genCostModel = do
let costModelParams = Alonzo.getCostModelParams Plutus.testingCostModelV1
eCostModel <- Alonzo.mkCostModel <$> genPlutusLanguage
<*> mapM (const $ Gen.integral (Range.linear 0 5000)) costModelParams
case eCostModel of
Left err -> error $ "genCostModel: " <> show err
Right cModel -> return cModel
lang <- genPlutusLanguage
cm <- Q.quickcheck (genValidCostModel lang)
pure cm

genPlutusLanguage :: Gen Language
genPlutusLanguage = Gen.element [PlutusV1, PlutusV2]
genPlutusLanguage = Gen.element [PlutusV1, PlutusV2, PlutusV3]

_genCostModels :: Gen (Map AnyPlutusScriptVersion CostModel)
_genCostModels =
Expand Down
10 changes: 6 additions & 4 deletions cardano-api/internal/Cardano/Api/Certificate.hs
Original file line number Diff line number Diff line change
Expand Up @@ -421,16 +421,18 @@ data CommitteeColdkeyResignationRequirements era where
CommitteeColdkeyResignationRequirements
:: ConwayEraOnwards era
-> Ledger.KeyHash Ledger.ColdCommitteeRole (EraCrypto (ShelleyLedgerEra era))
-> Maybe (Ledger.Anchor (EraCrypto (ShelleyLedgerEra era)))
-> CommitteeColdkeyResignationRequirements era

makeCommitteeColdkeyResignationCertificate :: ()
=> CommitteeColdkeyResignationRequirements era
-> Certificate era
makeCommitteeColdkeyResignationCertificate (CommitteeColdkeyResignationRequirements cOnwards coldKeyHash) =
makeCommitteeColdkeyResignationCertificate (CommitteeColdkeyResignationRequirements cOnwards coldKeyHash anchor) =
ConwayCertificate cOnwards
. Ledger.ConwayTxCertGov
$ Ledger.ConwayResignCommitteeColdKey
(Ledger.KeyHashObj coldKeyHash)
(noInlineMaybeToStrictMaybe anchor)

data DRepUnregistrationRequirements era where
DRepUnregistrationRequirements
Expand Down Expand Up @@ -494,7 +496,7 @@ selectStakeCredential = fmap fromShelleyStakeCredential . \case
Ledger.DelegTxCert sCred _ -> Just sCred
Ledger.RegDepositDelegTxCert sCred _ _ -> Just sCred
Ledger.AuthCommitteeHotKeyTxCert{} -> Nothing
Ledger.ResignCommitteeColdTxCert _ -> Nothing
Ledger.ResignCommitteeColdTxCert _ _ -> Nothing
Ledger.RegDRepTxCert{} -> Nothing
Ledger.UnRegDRepTxCert{} -> Nothing
Ledger.UpdateDRepTxCert{} -> Nothing
Expand Down Expand Up @@ -523,7 +525,7 @@ filterUnRegCreds = fmap fromShelleyStakeCredential . \case
Ledger.DelegTxCert _ _ -> Nothing
Ledger.RegDepositDelegTxCert{} -> Nothing
Ledger.AuthCommitteeHotKeyTxCert{} -> Nothing
Ledger.ResignCommitteeColdTxCert _ -> Nothing
Ledger.ResignCommitteeColdTxCert _ _ -> Nothing
Ledger.RegDRepTxCert{} -> Nothing
Ledger.UnRegDRepTxCert{} -> Nothing
Ledger.UpdateDRepTxCert{} -> Nothing
Expand All @@ -544,7 +546,7 @@ filterUnRegDRepCreds = \case
Ledger.DelegTxCert _ _ -> Nothing
Ledger.RegDepositDelegTxCert{} -> Nothing
Ledger.AuthCommitteeHotKeyTxCert{} -> Nothing
Ledger.ResignCommitteeColdTxCert _ -> Nothing
Ledger.ResignCommitteeColdTxCert _ _ -> Nothing
Ledger.RegDRepTxCert{} -> Nothing
Ledger.UnRegDRepTxCert cred _ -> Just cred
Ledger.UpdateDRepTxCert{} -> Nothing
Expand Down
2 changes: 1 addition & 1 deletion cardano-api/internal/Cardano/Api/Convenience/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ import Cardano.Api.Utils
import Cardano.Api.Value

import qualified Cardano.Ledger.Api as L
import Cardano.Ledger.CertState (DRepState (..))
teodanciu marked this conversation as resolved.
Show resolved Hide resolved
import qualified Cardano.Ledger.Credential as L
import Cardano.Ledger.DRepDistr (DRepState (..))
import qualified Cardano.Ledger.Keys as L
import Ouroboros.Consensus.HardFork.Combinator.AcrossEras (EraMismatch (..))

Expand Down
14 changes: 4 additions & 10 deletions cardano-api/internal/Cardano/Api/Ledger/Lens.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

module Cardano.Api.Ledger.Lens
( strictMaybeL
, invalidBeforeL
, invalidHereAfterL
, L.invalidBeforeL
, L.invalidHereAfterL
, invalidBeforeStrictL
, invalidHereAfterStrictL
, invalidBeforeTxBodyL
Expand Down Expand Up @@ -35,7 +35,7 @@ strictMaybeL = lens g s
s _ = maybe SNothing SJust

invalidBeforeTxBodyL :: AllegraEraOnwards era -> Lens' (L.TxBody (ShelleyLedgerEra era)) (Maybe SlotNo)
invalidBeforeTxBodyL w = allegraEraOnwardsConstraints w $ L.vldtTxBodyL . invalidBeforeL
invalidBeforeTxBodyL w = allegraEraOnwardsConstraints w $ L.vldtTxBodyL . L.invalidBeforeL

-- | Compatibility lens that provides a consistent interface over 'ttlTxBodyL' and
-- 'vldtTxBodyL . invalidHereAfterStrictL' across all shelley based eras.
Expand All @@ -56,7 +56,7 @@ invalidHereAfterTxBodyL :: ShelleyBasedEra era -> Lens' (L.TxBody (ShelleyLedger
invalidHereAfterTxBodyL =
caseShelleyEraOnlyOrAllegraEraOnwards
ttlAsInvalidHereAfterTxBodyL
(const $ L.vldtTxBodyL . invalidHereAfterL)
(const $ L.vldtTxBodyL . L.invalidHereAfterL)

-- | Compatibility lens over 'ttlTxBodyL' which represents 'maxBound' as Nothing and all other values as 'Just'.
ttlAsInvalidHereAfterTxBodyL :: ShelleyEraOnly era -> Lens' (L.TxBody (ShelleyLedgerEra era)) (Maybe SlotNo)
Expand All @@ -74,12 +74,6 @@ ttlAsInvalidHereAfterTxBodyL w = lens (g w) (s w)
Nothing -> txBody & L.ttlTxBodyL .~ maxBound
Just ttl -> txBody & L.ttlTxBodyL .~ ttl

invalidBeforeL :: Lens' L.ValidityInterval (Maybe SlotNo)
invalidBeforeL = invalidBeforeStrictL . strictMaybeL

invalidHereAfterL :: Lens' L.ValidityInterval (Maybe SlotNo)
invalidHereAfterL = invalidHereAfterStrictL . strictMaybeL

-- | Lens to access the 'invalidBefore' field of a 'ValidityInterval' as a 'StrictMaybe SlotNo'.
-- Ideally this should be defined in cardano-ledger
invalidBeforeStrictL :: Lens' L.ValidityInterval (StrictMaybe SlotNo)
Expand Down
3 changes: 2 additions & 1 deletion cardano-api/internal/Cardano/Api/Orphans.hs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import qualified Cardano.Ledger.Conway.PParams as Ledger
import Cardano.Ledger.Crypto (StandardCrypto)
import qualified Cardano.Ledger.Crypto as CC (Crypto)
import qualified Cardano.Ledger.Crypto as Crypto
import Cardano.Ledger.HKD (NoUpdate (..))
import qualified Cardano.Ledger.Shelley.PParams as Ledger
import qualified Cardano.Protocol.TPraos.API as Ledger
import Cardano.Protocol.TPraos.BHeader (HashHeader (..))
Expand Down Expand Up @@ -313,7 +314,7 @@ instance Semigroup (Ledger.ConwayPParams StrictMaybe era) where
, Ledger.cppA0 = lastMappendWith Ledger.cppA0 p1 p2
, Ledger.cppRho = lastMappendWith Ledger.cppRho p1 p2
, Ledger.cppTau = lastMappendWith Ledger.cppTau p1 p2
, Ledger.cppProtocolVersion = lastMappendWith Ledger.cppProtocolVersion p1 p2
, Ledger.cppProtocolVersion = NoUpdate -- For conway, protocol version cannot be changed via `PParamsUpdate`
, Ledger.cppMinPoolCost = lastMappendWith Ledger.cppMinPoolCost p1 p2
, Ledger.cppCoinsPerUTxOByte = lastMappendWith Ledger.cppCoinsPerUTxOByte p1 p2
, Ledger.cppCostModels = lastMappendWith Ledger.cppCostModels p1 p2
Expand Down
Loading