Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
156d119
Add `DijkstraEra era` to `CardanoEra era`
Jimbo4350 Jul 30, 2025
2872eda
Add `ShelleyBasedEraDijkstra` to `ShelleyBasedEra era`
Jimbo4350 Jul 30, 2025
dda8797
Add Dijkstra era to eons
Jimbo4350 Jul 30, 2025
704d11d
Add `DijkstraEra` to `Era era`
Jimbo4350 Jul 30, 2025
7a86381
COMBINE ME: cabal file updates
Jimbo4350 Jul 30, 2025
5be60e0
Update `QueryInShelleyBasedEra era result`
Jimbo4350 Jul 30, 2025
3a8826d
Update `makeShelleyTransactionBody` with Dijkstra era
Jimbo4350 Jul 30, 2025
e63bb2c
Update ledger types `PParamUpdatePurpose`, `CommitteePurpose` and
Jimbo4350 Jul 30, 2025
63ad603
Propagate `ChainAccountState`
Jimbo4350 Jul 30, 2025
b483de7
Consensus related Dijkstra changes
Jimbo4350 Jul 30, 2025
0d8ee49
Temporary Cardano.Api.LedgerState Dijkstra update
Jimbo4350 Jul 30, 2025
730ff11
Update TxOut rendering to handle Dijkstra era
Jimbo4350 Jul 30, 2025
ca28c36
Update `eraSpecificLedgerTxBody` with Dijkstra era
Jimbo4350 Jul 30, 2025
d91aedc
Update `decodeBigLedgerPeerSnapshot` to support snapshot SRV names
Jimbo4350 Jul 30, 2025
338a657
Update generators with PlutusScriptV4
Jimbo4350 Jul 30, 2025
acdff31
Introduce PlutusScriptV4
Jimbo4350 Jul 30, 2025
3437b94
Propagate Dijkstra era
Jimbo4350 Jul 30, 2025
0a737a6
Merge with PlutusV4 intro
Jimbo4350 Jul 30, 2025
5229ec3
Merge with propagate Dikstra
Jimbo4350 Jul 30, 2025
6e832cb
REMOVE ME: Add ledger and consensus SRPs
Jimbo4350 Jul 30, 2025
8330132
Update nix flake
Jimbo4350 Jul 30, 2025
f3ca538
Update cardano-rpc with PlutusV4
Jimbo4350 Jul 31, 2025
6d81484
Implement `executeLocalStateQueryExprWithVersion`
Jimbo4350 Jul 31, 2025
4904a0d
Fix parseHardForkTriggers
Jimbo4350 Jul 31, 2025
2da81eb
Fix cardano-rpc-test for protocol parameters roundtrip
carbolymer Aug 1, 2025
673e4a8
Update flake lock and ouroboros-network and plutus patches
palas Aug 1, 2025
65013af
Update wasm cache
palas Aug 1, 2025
1efbb74
Merge with: Consensus related Dijkstra change
Aug 7, 2025
faab1c2
Use exampleDijkstraGenesis value
Aug 7, 2025
7b8fa12
Fix cabal-gild CI failure
Aug 7, 2025
0eeff17
Run formolu
Aug 7, 2025
a93eab2
Fix HLS CI job
carbolymer Aug 11, 2025
79b9c02
Address lints
palas Aug 12, 2025
64e62e7
Update `ouroboros-consensus` stanza
palas Aug 12, 2025
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
Prev Previous commit
Next Next commit
Merge with propagate Dikstra
  • Loading branch information
Jimbo4350 authored and Jordan Millar committed Aug 8, 2025
commit 5229ec39b2bd59a33a5211f390123a42cf035669
3 changes: 3 additions & 0 deletions cardano-api/cardano-api.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ library gen
Test.Gen.Cardano.Api.Era
Test.Gen.Cardano.Api.Hardcoded
Test.Gen.Cardano.Api.Metadata
Test.Gen.Cardano.Api.Orphans
Test.Gen.Cardano.Api.ProtocolParameters
Test.Gen.Cardano.Api.Typed
Test.Gen.Cardano.Crypto.Seed
Expand All @@ -316,9 +317,11 @@ library gen
cardano-ledger-byron-test >=1.5,
cardano-ledger-conway:testlib,
cardano-ledger-core:{cardano-ledger-core, testlib} >=1.14,
cardano-ledger-dijkstra >=0.1,
cardano-ledger-shelley >=1.13,
containers,
filepath,
generic-random,
hedgehog >=1.1,
hedgehog-extras,
hedgehog-quickcheck,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ where

import Cardano.Api.Address qualified as Api
import Cardano.Api.Certificate.Internal qualified as Api
import Cardano.Api.Era.Internal.Core (DijkstraEra)
import Cardano.Api.Era.Internal.Eon.Convert
import Cardano.Api.Era.Internal.Eon.ConwayEraOnwards
import Cardano.Api.Era.Internal.Eon.ShelleyToBabbageEra qualified as Api
import Cardano.Api.Experimental.Era
import Cardano.Api.Experimental.Plutus.Internal.Script qualified as Exp
Expand Down Expand Up @@ -45,13 +45,18 @@ deriving instance Eq (Certificate era)
deriving instance Ord (Certificate era)

convertToOldApiCertificate :: Era era -> Certificate (LedgerEra era) -> Api.Certificate era
convertToOldApiCertificate ConwayEra (Certificate cert) =
Api.ConwayCertificate ConwayEraOnwardsConway cert
convertToOldApiCertificate e (Certificate cert) =
obtainCommonConstraints e $ Api.ConwayCertificate (convert e) cert

convertToNewCertificate :: Era era -> Api.Certificate era -> Certificate (LedgerEra era)
convertToNewCertificate ConwayEra (Api.ConwayCertificate _ cert) = Certificate cert
convertToNewCertificate ConwayEra (Api.ShelleyRelatedCertificate sToBab _) =
case sToBab :: Api.ShelleyToBabbageEra ConwayEra of {}
convertToNewCertificate era (Api.ConwayCertificate _ cert) =
case era of
ConwayEra -> Certificate cert
DijkstraEra -> Certificate cert
convertToNewCertificate era (Api.ShelleyRelatedCertificate sToBab _) =
case era of
ConwayEra -> case sToBab :: Api.ShelleyToBabbageEra ConwayEra of {}
DijkstraEra -> case sToBab :: Api.ShelleyToBabbageEra DijkstraEra of {}

mkTxCertificates
:: forall era
Expand All @@ -61,29 +66,29 @@ mkTxCertificates
mkTxCertificates [] = TxCertificatesNone
mkTxCertificates certs =
TxCertificates (convert useEra) $ fromList $ map (getStakeCred useEra) certs
where
getStakeCred
:: Era era
-> (Certificate (LedgerEra era), AnyWitness (LedgerEra era))
-> ( Api.Certificate era
, Api.BuildTxWith
Api.BuildTx
(Maybe (Api.StakeCredential, Api.Witness Api.WitCtxStake era))
)
getStakeCred era (Certificate cert, witness) =
case era of
ConwayEra -> do
let oldApiCert = Api.ConwayCertificate (convert era) cert
mStakeCred = Api.selectStakeCredentialWitness oldApiCert
wit =
case witness of
AnyKeyWitnessPlaceholder -> Api.KeyWitness Api.KeyWitnessForStakeAddr
AnySimpleScriptWitness ss ->
Api.ScriptWitness Api.ScriptWitnessForStakeAddr $ newToOldSimpleScriptWitness era ss
AnyPlutusScriptWitness psw ->
Api.ScriptWitness Api.ScriptWitnessForStakeAddr $
newToOldPlutusCertificateScriptWitness ConwayEra psw
(oldApiCert, pure $ (,wit) <$> mStakeCred)

getStakeCred
:: Era era
-> (Certificate (LedgerEra era), AnyWitness (LedgerEra era))
-> ( Api.Certificate era
, Api.BuildTxWith
Api.BuildTx
(Maybe (Api.StakeCredential, Api.Witness Api.WitCtxStake era))
)
getStakeCred e (Certificate cert, witness) = do
let oldApiCert = obtainCommonConstraints e $ Api.ConwayCertificate (convert e) cert
mStakeCred = Api.selectStakeCredentialWitness oldApiCert
wit =
case witness of
AnyKeyWitnessPlaceholder -> Api.KeyWitness Api.KeyWitnessForStakeAddr
AnySimpleScriptWitness ss ->
Api.ScriptWitness Api.ScriptWitnessForStakeAddr $
obtainCommonConstraints e $
newToOldSimpleScriptWitness e ss
AnyPlutusScriptWitness psw ->
Api.ScriptWitness Api.ScriptWitnessForStakeAddr $
newToOldPlutusCertificateScriptWitness e psw
(oldApiCert, pure $ (,wit) <$> mStakeCred)

newToOldSimpleScriptWitness
:: L.AllegraEraScript (LedgerEra era)
Expand Down Expand Up @@ -127,12 +132,40 @@ newToOldPlutusCertificateScriptWitness ConwayEra (Exp.PlutusScriptWitness Plutus
Api.NoScriptDatumForStake
redeemer
execUnits
newToOldPlutusCertificateScriptWitness ConwayEra (Exp.PlutusScriptWitness Plutus.SPlutusV4 _scriptOrRef _ _redeemer _execUnits) =
error "dijkstra"
newToOldPlutusCertificateScriptWitness DijkstraEra (Exp.PlutusScriptWitness Plutus.SPlutusV1 scriptOrRef _ redeemer execUnits) =
Api.PlutusScriptWitness
Api.PlutusScriptV1InDijkstra
Api.PlutusScriptV1
(newToOldPlutusScriptOrReferenceInput DijkstraEra scriptOrRef)
Api.NoScriptDatumForStake
redeemer
execUnits
newToOldPlutusCertificateScriptWitness DijkstraEra (Exp.PlutusScriptWitness Plutus.SPlutusV2 scriptOrRef _ redeemer execUnits) =
Api.PlutusScriptWitness
Api.PlutusScriptV2InDijkstra
Api.PlutusScriptV2
(newToOldPlutusScriptOrReferenceInput DijkstraEra scriptOrRef)
Api.NoScriptDatumForStake
redeemer
execUnits
newToOldPlutusCertificateScriptWitness DijkstraEra (Exp.PlutusScriptWitness Plutus.SPlutusV3 scriptOrRef _ redeemer execUnits) =
Api.PlutusScriptWitness
Api.PlutusScriptV3InDijkstra
Api.PlutusScriptV3
(newToOldPlutusScriptOrReferenceInput DijkstraEra scriptOrRef)
Api.NoScriptDatumForStake
redeemer
execUnits
newToOldPlutusCertificateScriptWitness DijkstraEra (Exp.PlutusScriptWitness Plutus.SPlutusV4 _scriptOrRef _ _redeemer _execUnits) =
error "dijkstra"

newToOldPlutusScriptOrReferenceInput
:: Era era
-> Exp.PlutusScriptOrReferenceInput lang (LedgerEra era)
-> Api.PlutusScriptOrReferenceInput oldlang
newToOldPlutusScriptOrReferenceInput ConwayEra (Exp.PReferenceScript txin) = Api.PReferenceScript txin
newToOldPlutusScriptOrReferenceInput ConwayEra (Exp.PScript (Exp.PlutusScriptInEra plutusRunnable)) =
newToOldPlutusScriptOrReferenceInput _ (Exp.PReferenceScript txin) = Api.PReferenceScript txin
newToOldPlutusScriptOrReferenceInput _ (Exp.PScript (Exp.PlutusScriptInEra plutusRunnable)) =
let oldScript = L.unPlutusBinary . L.plutusBinary $ L.plutusFromRunnable plutusRunnable
in Api.PScript $ Api.PlutusScriptSerialised oldScript
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import Cardano.Api.Key.Internal (Hash (..), StakePoolKey)

import Cardano.Ledger.Coin qualified as L
import Cardano.Ledger.Coin qualified as Ledger
import Cardano.Ledger.Compactible qualified as Ledger
import Cardano.Ledger.Conway.Governance qualified as Ledger
import Cardano.Ledger.Core qualified as Ledger.Core
import Cardano.Ledger.Credential qualified as Ledger
Expand Down Expand Up @@ -110,8 +111,9 @@ data PoolReapDetails = PoolReapDetails
convertRetiredPoolsMap
:: Map
Ledger.StakeCredential
(Map (Ledger.KeyHash Ledger.StakePool) Ledger.Coin)
(Map (Ledger.KeyHash Ledger.StakePool) (Ledger.CompactForm Ledger.Coin))
-> Map StakeCredential (Map (Hash StakePoolKey) L.Coin)
convertRetiredPoolsMap =
Map.mapKeys fromShelleyStakeCredential
. fmap (Map.mapKeys StakePoolKeyHash)
. (fmap . fmap) Ledger.fromCompact
3 changes: 2 additions & 1 deletion cardano-api/src/Cardano/Api/Network/IPC/Internal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ import Data.ByteString.Lazy qualified as LBS
import Data.Void (Void)
import GHC.Exts (IsList (..))
import Network.Mux qualified as Net
import Network.Mux.Trace (nullTracers)

-- ----------------------------------------------------------------------------
-- The types for the client side of the node-to-client IPC protocols
Expand Down Expand Up @@ -211,7 +212,7 @@ connectToLocalNodeWithVersion
Net.connectTo
(Net.localSnocket iomgr)
Net.NetworkConnectTracers
{ Net.nctMuxTracer = nullTracer
{ Net.nctMuxTracers = nullTracers
, Net.nctHandshakeTracer = nullTracer
}
versionedProtocls
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ prop_txbody_backwards_compatibility = H.property $ do
ShelleyBasedEraAlonzo -> "Tx AlonzoEra"
ShelleyBasedEraBabbage -> "Tx BabbageEra"
ShelleyBasedEraConway -> "Tx ConwayEra"
ShelleyBasedEraDijkstra -> "Tx DijkstraEra"

prop_text_envelope_roundtrip_txbody_CBOR :: Property
prop_text_envelope_roundtrip_txbody_CBOR = H.property $ do
Expand Down