From f8d400d6a8814ba750a372a666f1751a7c2d9327 Mon Sep 17 00:00:00 2001 From: Sjoerd Visscher Date: Thu, 15 Feb 2024 14:58:07 +0100 Subject: [PATCH 1/4] Update to cardano-api 8.38 --- cabal.project | 16 +- .../cardano-node-emulator.cabal | 2 +- .../Node/Emulator/Internal/Node/Fee.hs | 8 +- .../Node/Emulator/Internal/Node/Params.hs | 7 +- .../Node/Emulator/Internal/Node/Validation.hs | 16 +- .../test/Plutus/Examples/Escrow.hs | 1 + .../cardano-node-socket-emulator.cabal | 2 +- .../src/Cardano/Node/Socket/Emulator/Types.hs | 4 +- flake.lock | 2583 +++++++++-------- flake.nix | 6 +- freer-extras/freer-extras.cabal | 2 +- nix/shell.nix | 11 - plutus-ledger/plutus-ledger.cabal | 8 +- plutus-ledger/src/Ledger/Index/Internal.hs | 11 +- plutus-ledger/src/Ledger/Tx.hs | 4 +- .../src/Ledger/Tx/CardanoAPI/Internal.hs | 22 +- plutus-script-utils/plutus-script-utils.cabal | 2 +- 17 files changed, 1465 insertions(+), 1240 deletions(-) diff --git a/cabal.project b/cabal.project index 114fb98..ebbbef4 100644 --- a/cabal.project +++ b/cabal.project @@ -13,8 +13,8 @@ repository cardano-haskell-packages -- See CONTRIBUTING.adoc for how to update index-state index-state: - , hackage.haskell.org 2024-01-01T00:00:00Z - , cardano-haskell-packages 2024-01-01T00:00:00Z + , hackage.haskell.org 2024-02-14T00:00:00Z + , cardano-haskell-packages 2024-02-14T00:00:00Z packages: plutus-ledger plutus-script-utils @@ -47,5 +47,13 @@ package cardano-crypto-praos flags: -external-libsodium-vrf constraints: - cardano-api ^>= 8.36 - , quickcheck-contractmodel ^>= 0.1.6 + cardano-api ^>= 8.38 + +source-repository-package + type: git + location: https://github.com/input-output-hk/quickcheck-contractmodel + tag: 266b94017e24aff37c9d57cd8d4bafe4237f56df + --sha256: sha256-na8LEzjUcycdQecwfyiGcP7C2xCtBv+MXEtzK76YB+E= + subdir: + quickcheck-contractmodel + quickcheck-threatmodel diff --git a/cardano-node-emulator/cardano-node-emulator.cabal b/cardano-node-emulator/cardano-node-emulator.cabal index 87f463a..6676c88 100644 --- a/cardano-node-emulator/cardano-node-emulator.cabal +++ b/cardano-node-emulator/cardano-node-emulator.cabal @@ -1,4 +1,4 @@ -cabal-version: 3.0 +cabal-version: 3.8 name: cardano-node-emulator version: 1.3.0.0 diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs index c4fc468..06c593e 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs @@ -83,8 +83,10 @@ fillTxExUnits params txUtxo buildTx@(CardanoBuildTx txBodyContent) = do first Right $ C.makeSignedTransaction [] <$> CardanoAPI.createTransactionBody buildTx exUnitsMap' <- - bimap Left (Map.mapKeys C.fromAlonzoRdmrPtr . fmap (C.fromAlonzoExUnits . snd)) $ - getTxExUnitsWithLogs params (CardanoAPI.fromPlutusIndex txUtxo) tmpTx' + bimap + Left + (Map.mapKeys (C.toScriptIndex C.AlonzoEraOnwardsBabbage) . fmap (C.fromAlonzoExUnits . snd)) + $ getTxExUnitsWithLogs params (CardanoAPI.fromPlutusIndex txUtxo) tmpTx' bimap (Right . TxBodyError . C.Api.displayError) CardanoBuildTx $ mapTxScriptWitnesses (mapWitness exUnitsMap') txBodyContent where @@ -92,7 +94,7 @@ fillTxExUnits params txUtxo buildTx@(CardanoBuildTx txBodyContent) = do :: Map.Map C.Api.ScriptWitnessIndex C.Api.ExecutionUnits -> C.ScriptWitnessIndex -> C.ScriptWitness witctx era - -> Either C.TxBodyErrorAutoBalance (C.ScriptWitness witctx era) + -> Either (C.TxBodyErrorAutoBalance era) (C.ScriptWitness witctx era) mapWitness _ _ wit@C.SimpleScriptWitness{} = Right wit mapWitness eum idx (C.PlutusScriptWitness langInEra version script datum redeemer _) = case Map.lookup idx eum of diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Params.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Params.hs index b75023a..981738e 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Params.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Params.hs @@ -38,9 +38,10 @@ import Cardano.Ledger.Alonzo.PParams qualified as C import Cardano.Ledger.Alonzo.Scripts qualified as Alonzo import Cardano.Ledger.Babbage (BabbageEra) import Cardano.Ledger.Babbage.PParams qualified as C -import Cardano.Ledger.BaseTypes (boundRational) +import Cardano.Ledger.BaseTypes (EpochInterval (EpochInterval), boundRational) import Cardano.Ledger.Core qualified as C import Cardano.Ledger.Crypto (StandardCrypto) +import Cardano.Ledger.Plutus.CostModels (mkCostModels) import Cardano.Ledger.Shelley.API (Coin (Coin), Globals, ShelleyGenesis, mkShelleyGlobals) import Cardano.Ledger.Shelley.API qualified as C.Ledger import Cardano.Ledger.Slot (EpochSize (EpochSize)) @@ -192,7 +193,7 @@ instance Default C.ProtocolParameters where , protocolParamStakeAddressDeposit = C.Lovelace 2000000 , protocolParamStakePoolDeposit = C.Lovelace 500000000 , protocolParamMinPoolCost = C.Lovelace 340000000 - , protocolParamPoolRetireMaxEpoch = C.EpochNo 18 + , protocolParamPoolRetireMaxEpoch = EpochInterval 18 , protocolParamStakePoolTargetNum = 500 , protocolParamPoolPledgeInfluence = 3 % 10 , protocolParamMonetaryExpansion = 3 % 1000 @@ -211,7 +212,7 @@ instance Default C.ProtocolParameters where mapParamNames PlutusV1 "verifyEd25519Signature-cpu-arguments-slope" = "verifySignature-cpu-arguments-slope" mapParamNames PlutusV1 "verifyEd25519Signature-memory-arguments" = "verifySignature-memory-arguments" mapParamNames _ name = name - in C.fromAlonzoCostModels $ Alonzo.CostModels costModels mempty mempty + in C.fromAlonzoCostModels $ mkCostModels costModels , protocolParamPrices = Just (C.ExecutionUnitPrices{priceExecutionSteps = 721 % 10000000, priceExecutionMemory = 577 % 10000}) diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Validation.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Validation.hs index eb8ac6f..924ab7c 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Validation.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Validation.hs @@ -44,8 +44,7 @@ module Cardano.Node.Emulator.Internal.Node.Validation ( import Cardano.Api.Error qualified as C import Cardano.Api.Shelley qualified as C -import Cardano.Ledger.Alonzo.Plutus.TxInfo (ScriptResult (Fails, Passes)) -import Cardano.Ledger.Alonzo.PlutusScriptApi ( +import Cardano.Ledger.Alonzo.Plutus.Evaluate ( collectPlutusScriptsWithContext, evalPlutusScripts, ) @@ -54,10 +53,8 @@ import Cardano.Ledger.Alonzo.Rules ( AlonzoUtxosPredFailure (CollectErrors), ) import Cardano.Ledger.Alonzo.Tx (AlonzoTx (AlonzoTx), IsValid (IsValid)) -import Cardano.Ledger.Api.PParams (ppProtocolVersionL) import Cardano.Ledger.Api.Tx ( TransactionScriptFailure (ValidationFailure), - ValidationFailed (ValidationFailedV1, ValidationFailedV2), evalTxExUnitsWithLogs, ) import Cardano.Ledger.Babbage.Rules ( @@ -66,6 +63,7 @@ import Cardano.Ledger.Babbage.Rules ( ) import Cardano.Ledger.BaseTypes (Globals (systemStart), epochInfo) import Cardano.Ledger.Core qualified as Core +import Cardano.Ledger.Plutus.Evaluate (ScriptResult (Fails, Passes)) import Cardano.Ledger.Shelley.API ( ApplyTxError (ApplyTxError), Coin (Coin), @@ -203,7 +201,7 @@ initialState params = } utxoEnv :: Params -> SlotNo -> C.Ledger.UtxoEnv EmulatorEra -utxoEnv params slotNo = C.Ledger.UtxoEnv slotNo (emulatorPParams params) def (C.Ledger.GenDelegs mempty) +utxoEnv params slotNo = C.Ledger.UtxoEnv slotNo (emulatorPParams params) def applyTx :: Params @@ -266,7 +264,7 @@ constructValidated -> C.Ledger.UTxOState EmulatorEra -> Core.Tx EmulatorEra -> m (AlonzoTx EmulatorEra) -constructValidated globals (C.Ledger.UtxoEnv _ pp _ _) st tx = +constructValidated globals (C.Ledger.UtxoEnv _ pp _) st tx = case collectPlutusScriptsWithContext ei sysS pp tx utxo of Left errs -> throwError @@ -274,7 +272,7 @@ constructValidated globals (C.Ledger.UtxoEnv _ pp _ _) st tx = [UtxowFailure (UtxoFailure (AlonzoInBabbageUtxoPredFailure (UtxosFailure (CollectErrors errs))))] ) Right sLst -> - let scriptEvalResult = evalPlutusScripts (view ppProtocolVersionL pp) tx sLst + let scriptEvalResult = evalPlutusScripts @EmulatorEra tx sLst vTx = AlonzoTx (view Core.bodyTxL tx) @@ -316,9 +314,7 @@ getTxExUnitsWithLogs params utxo (C.ShelleyTx _ tx) = eg = emulatorGlobals params ss = systemStart eg ei = epochInfo eg - toCardanoLedgerError (ValidationFailure (ValidationFailedV1 (V1.CekError ce) logs _)) = - Left (P.Phase2, P.ScriptFailure (P.EvaluationError logs ("CekEvaluationFailure: " ++ show ce))) - toCardanoLedgerError (ValidationFailure (ValidationFailedV2 (V1.CekError ce) logs _)) = + toCardanoLedgerError (ValidationFailure _ (V1.CekError ce) logs _) = Left (P.Phase2, P.ScriptFailure (P.EvaluationError logs ("CekEvaluationFailure: " ++ show ce))) toCardanoLedgerError e = Left (P.Phase2, P.CardanoLedgerValidationError $ Text.pack $ show e) diff --git a/cardano-node-emulator/test/Plutus/Examples/Escrow.hs b/cardano-node-emulator/test/Plutus/Examples/Escrow.hs index cbdf022..1c2875a 100644 --- a/cardano-node-emulator/test/Plutus/Examples/Escrow.hs +++ b/cardano-node-emulator/test/Plutus/Examples/Escrow.hs @@ -13,6 +13,7 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE ViewPatterns #-} {-# OPTIONS_GHC -g -fplugin-opt PlutusTx.Plugin:coverage-all #-} -- | A general-purpose escrow contract in Plutus diff --git a/cardano-node-socket-emulator/cardano-node-socket-emulator.cabal b/cardano-node-socket-emulator/cardano-node-socket-emulator.cabal index 34c3058..60c944f 100644 --- a/cardano-node-socket-emulator/cardano-node-socket-emulator.cabal +++ b/cardano-node-socket-emulator/cardano-node-socket-emulator.cabal @@ -1,4 +1,4 @@ -cabal-version: 3.0 +cabal-version: 3.8 name: cardano-node-socket-emulator version: 1.3.0.0 diff --git a/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Types.hs b/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Types.hs index 18ea145..2f47310 100644 --- a/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Types.hs +++ b/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Types.hs @@ -56,7 +56,7 @@ import Data.ByteString.Short qualified as BS import Data.Coerce (coerce) import Data.Default (Default, def) import Data.Foldable (toList) -import Data.Functor (void, (<&>)) +import Data.Functor ((<&>)) import Data.Map qualified as Map import Data.Maybe (listToMaybe) import Data.Text qualified as Text @@ -411,7 +411,7 @@ toCardanoBlock (Ouroboros.Tip curSlotNo _ curBlockNo) block = do , Praos.hbVk = bheaderVk bhBody , Praos.hbVrfVk = bheaderVrfVk bhBody , Praos.hbVrfRes = coerce $ bheaderEta bhBody - , Praos.hbBodySize = fromIntegral $ bsize bhBody + , Praos.hbBodySize = bsize bhBody , Praos.hbBodyHash = bhash bhBody , Praos.hbOCert = bheaderOCert bhBody , Praos.hbProtVer = bprotver bhBody diff --git a/flake.lock b/flake.lock index 1767c69..797b645 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1704207160, - "narHash": "sha256-vvm56KzA6jEkG3mvwh1LEdK4H4FKxeoOJNz90H8l8dQ=", + "lastModified": 1708015143, + "narHash": "sha256-KkKYA6TP2T+lt74+m3lzeA6I5zzk2JNjw3TClg0ynDM=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "3df392af2a61d61bdac1afd9c3674f27d6aa8efc", + "rev": "1d3af4a597179eedf818575254782f0767eb00bd", "type": "github" }, "original": { @@ -20,11 +20,28 @@ "CHaP_2": { "flake": false, "locked": { - "lastModified": 1694606166, - "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "5c3037fa1d0f9735fa797a8d3aa47ac3ae912a74", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_3": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -66,37 +83,40 @@ "type": "github" } }, - "blank": { + "HTTP_3": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "blank_2": { + "blst": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "blst": { + "blst_2": { "flake": false, "locked": { "lastModified": 1656163412, @@ -113,7 +133,7 @@ "type": "github" } }, - "blst_2": { + "blst_3": { "flake": false, "locked": { "lastModified": 1656163412, @@ -164,6 +184,23 @@ "type": "github" } }, + "cabal-32_3": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, "cabal-34": { "flake": false, "locked": { @@ -198,24 +235,24 @@ "type": "github" } }, - "cabal-36": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-36_2": { + "cabal-36": { "flake": false, "locked": { "lastModified": 1669081697, @@ -232,94 +269,57 @@ "type": "github" } }, - "cardano-automation": { - "inputs": { - "flake-utils": "flake-utils", - "haskellNix": [ - "cardano-node", - "haskellNix" - ], - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "tullia": "tullia" - }, + "cabal-36_2": { + "flake": false, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_4" - }, + "cabal-36_3": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_2", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake", - "flake-compat": "flake-compat_2", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "hostNixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix", - "nix2container": "nix2container_2", - "nixpkgs": [ - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib", - "std": "std_2", - "utils": "utils_2" - }, + "cardano-shell": { + "flake": false, "locked": { - "lastModified": 1695104893, - "narHash": "sha256-aOedRHY27/Iq+tMuA5DMbqySj2BORRaFWRdPhaajExs=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "9a0898636a4ea13f720dc3c6c8789b27beeb37c9", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "8.4.0-pre", - "repo": "cardano-node", + "repo": "cardano-shell", "type": "github" } }, - "cardano-shell": { + "cardano-shell_2": { "flake": false, "locked": { "lastModified": 1608537748, @@ -335,7 +335,7 @@ "type": "github" } }, - "cardano-shell_2": { + "cardano-shell_3": { "flake": false, "locked": { "lastModified": 1608537748, @@ -352,40 +352,14 @@ } }, "crane": { - "inputs": { - "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_7", - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ], - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "crane_2": { "inputs": { "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_11", + "flake-utils": "flake-utils_13", "nixpkgs": [ "mithril", "nixpkgs" ], - "rust-overlay": "rust-overlay_2" + "rust-overlay": "rust-overlay" }, "locked": { "lastModified": 1688772518, @@ -401,143 +375,9 @@ "type": "github" } }, - "customConfig": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "devshell": { - "inputs": { - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "systems": "systems" - }, - "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", - "owner": "numtide", - "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "dmerge": { - "inputs": { - "nixlib": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_2": { - "inputs": { - "haumea": [ - "cardano-node", - "std", - "haumea" - ], - "nixlib": [ - "cardano-node", - "std", - "haumea", - "nixpkgs" - ], - "yants": [ - "cardano-node", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", - "type": "github" - }, - "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", - "type": "github" - } - }, "easy-purescript-nix": { "inputs": { - "flake-utils": "flake-utils_8" + "flake-utils": "flake-utils" }, "locked": { "lastModified": 1696584097, @@ -553,90 +393,60 @@ "type": "github" } }, - "em": { - "flake": false, - "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", - "type": "github" + "easy-purescript-nix_2": { + "inputs": { + "flake-utils": "flake-utils_3" }, - "original": { - "owner": "deepfire", - "repo": "em", - "type": "github" - } - }, - "empty-flake": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "fenix": { + "easy-purescript-nix_3": { "inputs": { - "nixpkgs": "nixpkgs_9", - "rust-analyzer-src": "rust-analyzer-src" + "flake-utils": "flake-utils_7" }, "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, "flake-compat": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } }, - "flake-compat_3": { + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1672831974, @@ -653,7 +463,7 @@ "type": "github" } }, - "flake-compat_4": { + "flake-compat_3": { "flake": false, "locked": { "lastModified": 1673956053, @@ -669,7 +479,7 @@ "type": "github" } }, - "flake-compat_5": { + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1672831974, @@ -686,7 +496,7 @@ "type": "github" } }, - "flake-compat_6": { + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1673956053, @@ -702,7 +512,7 @@ "type": "github" } }, - "flake-compat_7": { + "flake-compat_6": { "flake": false, "locked": { "lastModified": 1673956053, @@ -718,10 +528,26 @@ "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, + "flake-compat_7": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, "locked": { "lastModified": 1678379998, "narHash": "sha256-TZdfNqftHhDuIFwBcN9MUThx5sQXCTeZk9je5byPKRw=", @@ -737,12 +563,15 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -753,7 +582,7 @@ }, "flake-utils_10": { "inputs": { - "systems": "systems_4" + "systems": "systems_10" }, "locked": { "lastModified": 1685518550, @@ -771,7 +600,43 @@ }, "flake-utils_11": { "inputs": { - "systems": "systems_5" + "systems": "systems_11" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_12": { + "inputs": { + "systems": "systems_12" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_13": { + "inputs": { + "systems": "systems_13" }, "locked": { "lastModified": 1687709756, @@ -788,12 +653,15 @@ } }, "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -803,12 +671,15 @@ } }, "flake-utils_3": { + "inputs": { + "systems": "systems_3" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -818,28 +689,33 @@ } }, "flake-utils_4": { + "inputs": { + "systems": "systems_4" + }, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "flake-utils_5": { + "inputs": { + "systems": "systems_5" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -849,12 +725,15 @@ } }, "flake-utils_6": { + "inputs": { + "systems": "systems_6" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -864,12 +743,15 @@ } }, "flake-utils_7": { + "inputs": { + "systems": "systems_7" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -880,14 +762,14 @@ }, "flake-utils_8": { "inputs": { - "systems": "systems_2" + "systems": "systems_8" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -898,7 +780,7 @@ }, "flake-utils_9": { "inputs": { - "systems": "systems_3" + "systems": "systems_9" }, "locked": { "lastModified": 1694529238, @@ -948,6 +830,23 @@ "type": "github" } }, + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, "ghc98X": { "flake": false, "locked": { @@ -967,6 +866,44 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, + "ghc98X_2": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_3": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, "ghc99": { "flake": false, "locked": { @@ -985,9 +922,47 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, + "ghc99_2": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_3": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, "gitignore": { "inputs": { "nixpkgs": [ + "iogx", + "iogx-template-haskell", "iogx", "pre-commit-hooks-nix", "nixpkgs" @@ -1007,33 +982,60 @@ "type": "github" } }, - "gomod2nix": { + "gitignore_2": { "inputs": { - "nixpkgs": "nixpkgs", - "utils": "utils" + "nixpkgs": [ + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_3": { + "inputs": { + "nixpkgs": [ + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, "hackage": { "flake": false, "locked": { - "lastModified": 1704241381, - "narHash": "sha256-LOWwnjVL2Wk1pP5boqY+5g6Yiu0/Pb1aKaXsYdssojA=", + "lastModified": 1707956526, + "narHash": "sha256-pbbUjvxdsKVlYo/KpnY08csMQdy6Lcybuung6p8S7I8=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "1d79ba01707abbb321020f9c568824f5040fbfc0", + "rev": "6563cbfb5feeb444a6b89ee3415f6f54910c1be0", "type": "github" }, "original": { @@ -1042,14 +1044,14 @@ "type": "github" } }, - "hackageNix": { + "hackage_2": { "flake": false, "locked": { - "lastModified": 1693182531, - "narHash": "sha256-OejogS2E745biMj8NuUYatN7uoMRsg7giVnRQwfiays=", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "34cd9fe31d210f2ff041f490eaa4029f6b2812c4", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { @@ -1058,78 +1060,47 @@ "type": "github" } }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ - "hackage" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0_2", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305_2", - "nixpkgs-unstable": "nixpkgs-unstable_2", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" - }, + "hackage_3": { + "flake": false, "locked": { - "lastModified": 1698022192, - "narHash": "sha256-qf8o096ErY5hJPdWqk8fmJqtXB5qsm35f2kOEmvQM3o=", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "c390991becb2a45a0963274e7924d3deaefcea29", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "hackage.nix", "type": "github" } }, - "haskellNix": { + "haskell-nix": { "inputs": { "HTTP": "HTTP", "cabal-32": "cabal-32", "cabal-34": "cabal-34", "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_4", + "flake-compat": "flake-compat", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": [ - "cardano-node", - "hackageNix" + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "hackage" ], "hls-1.10": "hls-1.10", "hls-2.0": "hls-2.0", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", "nixpkgs": [ - "cardano-node", - "nixpkgs" + "haskell-nix", + "nixpkgs-unstable" ], "nixpkgs-2003": "nixpkgs-2003", "nixpkgs-2105": "nixpkgs-2105", @@ -1142,11 +1113,11 @@ "stackage": "stackage" }, "locked": { - "lastModified": 1690764022, - "narHash": "sha256-+BFPab4/766AF+jfEAo6l3AZH5Zs1lbba2EVOcGhid0=", + "lastModified": 1698022192, + "narHash": "sha256-qf8o096ErY5hJPdWqk8fmJqtXB5qsm35f2kOEmvQM3o=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "0f2a6a9dfad636680367c0462dcd50ee64a9bddc", + "rev": "c390991becb2a45a0963274e7924d3deaefcea29", "type": "github" }, "original": { @@ -1155,22 +1126,117 @@ "type": "github" } }, - "haumea": { + "haskell-nix_2": { "inputs": { - "nixpkgs": "nixpkgs_7" + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-compat": "flake-compat_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", + "hackage": [ + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_2", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2" }, "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-compat": "flake-compat_4", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "ghc98X": "ghc98X_3", + "ghc99": "ghc99_3", + "hackage": [ + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_3", + "hls-2.0": "hls-2.0_3", + "hls-2.2": "hls-2.2_3", + "hls-2.3": "hls-2.3_3", + "hls-2.4": "hls-2.4_3", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "iserv-proxy": "iserv-proxy_3", + "nixpkgs": [ + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-2305": "nixpkgs-2305_3", + "nixpkgs-2311": "nixpkgs-2311_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, @@ -1208,6 +1274,23 @@ "type": "github" } }, + "hls-1.10_3": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.0": { "flake": false, "locked": { @@ -1242,6 +1325,23 @@ "type": "github" } }, + "hls-2.0_3": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.2": { "flake": false, "locked": { @@ -1259,6 +1359,40 @@ "type": "github" } }, + "hls-2.2_2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_3": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.3": { "flake": false, "locked": { @@ -1276,6 +1410,40 @@ "type": "github" } }, + "hls-2.3_2": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.4": { "flake": false, "locked": { @@ -1293,6 +1461,40 @@ "type": "github" } }, + "hls-2.4_2": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_3": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, "hpc-coveralls": { "flake": false, "locked": { @@ -1325,12 +1527,27 @@ "type": "github" } }, + "hpc-coveralls_3": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, "hydra": { "inputs": { "nix": "nix", "nixpkgs": [ - "cardano-node", - "haskellNix", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -1353,6 +1570,9 @@ "inputs": { "nix": "nix_2", "nixpkgs": [ + "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "hydra", "nix", @@ -1372,51 +1592,30 @@ "type": "indirect" } }, - "incl": { - "inputs": { - "nixlib": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_2": { + "hydra_3": { "inputs": { - "nixlib": [ - "cardano-node", - "std", - "haumea", + "nix": "nix_3", + "nixpkgs": [ + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" + "id": "hydra", + "type": "indirect" } }, "iogx": { @@ -1425,27 +1624,30 @@ "CHaP" ], "easy-purescript-nix": "easy-purescript-nix", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_2", "hackage": [ "hackage" ], "haskell-nix": [ "haskell-nix" ], - "iohk-nix": "iohk-nix", + "iogx-template-haskell": "iogx-template-haskell", + "iogx-template-vanilla": "iogx-template-vanilla", + "iohk-nix": "iohk-nix_3", + "nix2container": "nix2container_3", "nixpkgs": [ "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable", - "pre-commit-hooks-nix": "pre-commit-hooks-nix", - "sphinxcontrib-haddock": "sphinxcontrib-haddock" + "nixpkgs-stable": "nixpkgs-stable_5", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_3", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_3" }, "locked": { - "lastModified": 1699537966, - "narHash": "sha256-MGGza+vZDRjKj31WhQJDt7CqVVdrFkgkXIcqr0gDiU8=", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", "owner": "input-output-hk", "repo": "iogx", - "rev": "c6ce7f034717ed0c0e9c6dd8fa2f898a15439627", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", "type": "github" }, "original": { @@ -1454,46 +1656,172 @@ "type": "github" } }, - "iohk-nix": { + "iogx-template-haskell": { "inputs": { - "blst": "blst_2", - "nixpkgs": [ - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" + "iogx": "iogx_2" }, "locked": { - "lastModified": 1696445248, - "narHash": "sha256-2B/fqwyaRAaHVmkf15tKwkFbL5O46TmMw+Rc2viUPEY=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "e32040e84180b3c27c0f13587025f6a17a4da520", - "type": "github" + "lastModified": 1, + "narHash": "sha256-M3xlu7bsl9IfJN0oOMAPaUh4KNE00exej6+yss9eSnA=", + "path": "templates/haskell", + "type": "path" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" + "path": "templates/haskell", + "type": "path" } }, - "iohkNix": { + "iogx-template-vanilla": { "inputs": { - "blst": "blst", + "iogx": "iogx_3" + }, + "locked": { + "lastModified": 1, + "narHash": "sha256-KpBQGIw1+d2FCSRBxWKMwLFh7rIJqWm8pf+MP6gqT1Q=", + "path": "templates/vanilla", + "type": "path" + }, + "original": { + "path": "templates/vanilla", + "type": "path" + } + }, + "iogx_2": { + "inputs": { + "CHaP": "CHaP_2", + "easy-purescript-nix": "easy-purescript-nix_2", + "flake-utils": "flake-utils_4", + "hackage": "hackage_2", + "haskell-nix": "haskell-nix_2", + "iohk-nix": "iohk-nix", + "nix2container": "nix2container", + "nixpkgs": [ + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable", + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "sphinxcontrib-haddock": "sphinxcontrib-haddock" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_3": { + "inputs": { + "CHaP": "CHaP_3", + "easy-purescript-nix": "easy-purescript-nix_3", + "flake-utils": "flake-utils_8", + "hackage": "hackage_3", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "nix2container": "nix2container_2", "nixpkgs": [ - "cardano-node", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_3", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_2", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_2" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "blst": "blst", + "nixpkgs": [ + "iogx", + "iogx-template-haskell", + "iogx", "nixpkgs" ], "secp256k1": "secp256k1", "sodium": "sodium" }, "locked": { - "lastModified": 1692743532, - "narHash": "sha256-OcnZRZBh3pOx5uChTuO+4o9OHiG1ip36C35DaFrwjbM=", + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "blst": "blst_2", + "nixpkgs": [ + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "blst": "blst_3", + "nixpkgs": [ + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_3", + "sodium": "sodium_3" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "e5b4889e4d191cf2cb1495dd16b13ea016b5569a", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", "type": "github" }, "original": { @@ -1505,11 +1833,11 @@ "iserv-proxy": { "flake": false, "locked": { - "lastModified": 1688517130, - "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", "ref": "hkm/remote-iserv", - "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", - "revCount": 13, + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, "type": "git", "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, @@ -1536,6 +1864,23 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, + "iserv-proxy_3": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, "lowdown-src": { "flake": false, "locked": { @@ -1568,11 +1913,27 @@ "type": "github" } }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, "mithril": { "inputs": { - "crane": "crane_2", + "crane": "crane", "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_12", + "nixpkgs": "nixpkgs_10", "treefmt-nix": "treefmt-nix" }, "locked": { @@ -1589,68 +1950,10 @@ "type": "github" } }, - "n2c": { - "inputs": { - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_2": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { @@ -1668,55 +1971,36 @@ "type": "github" } }, - "nix-nomad": { + "nix2container": { "inputs": { - "flake-compat": "flake-compat", - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ] + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "nix2container": { + "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_2" + "flake-utils": "flake-utils_9", + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", "owner": "nlewo", "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", "type": "github" }, "original": { @@ -1725,17 +2009,17 @@ "type": "github" } }, - "nix2container_2": { + "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_6" + "flake-utils": "flake-utils_11", + "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", "owner": "nlewo", "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", "type": "github" }, "original": { @@ -1747,7 +2031,7 @@ "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_10", + "nixpkgs": "nixpkgs_2", "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { @@ -1765,93 +2049,60 @@ "type": "github" } }, - "nixago": { + "nix_3": { "inputs": { - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_5", + "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", - "owner": "nix-community", - "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] - }, + "nixpkgs": { "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "nixpkgs": { + "nixpkgs-2003": { "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003": { + "nixpkgs-2003_2": { "locked": { "lastModified": 1620055814, "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", @@ -1867,7 +2118,7 @@ "type": "github" } }, - "nixpkgs-2003_2": { + "nixpkgs-2003_3": { "locked": { "lastModified": 1620055814, "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", @@ -1905,140 +2156,252 @@ "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_3": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_2": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_3": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_2": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_3": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111": { + "nixpkgs-2211": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_2": { + "nixpkgs-2211_2": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205": { + "nixpkgs-2211_3": { "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_2": { + "nixpkgs-2305": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixpkgs-23.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211": { + "nixpkgs-2305_2": { "locked": { - "lastModified": 1685314633, - "narHash": "sha256-8LXBPqTQXl5ofkjpJ18JcbmLJ/lWDoMxtUwiDYv0wro=", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c8a17ce7abc03c50cd072e9e6c9b389c5f61836b", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", + "ref": "nixpkgs-23.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211_2": { + "nixpkgs-2305_3": { "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", + "ref": "nixpkgs-23.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2305": { + "nixpkgs-2311": { "locked": { - "lastModified": 1685338297, - "narHash": "sha256-+Aq4O0Jn1W1q927ZHc3Zn6RO7bwQGmb6O8xYoGy0KrM=", + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6287b47dbfabbb8bfbb9b1b53d198ad58a774de4", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", + "ref": "nixpkgs-23.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2305_2": { + "nixpkgs-2311_2": { "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", + "ref": "nixpkgs-23.11-darwin", "repo": "nixpkgs", "type": "github" } @@ -2093,6 +2456,22 @@ "type": "github" } }, + "nixpkgs-regression_3": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, "nixpkgs-stable": { "locked": { "lastModified": 1690680713, @@ -2125,23 +2504,71 @@ "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs-stable_3": { "locked": { - "lastModified": 1685347552, - "narHash": "sha256-9woSppRyUFo26yUffORTzttJ+apOt8MmCv6RxpPNTU4=", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f2f1ec390714d303cf84ba086e34e45b450dd8c4", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_4": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_2": { + "nixpkgs-stable_5": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_6": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { "locked": { "lastModified": 1695318763, "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", @@ -2157,39 +2584,39 @@ "type": "github" } }, - "nixpkgs_10": { + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "nixpkgs_11": { + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_10": { "locked": { "lastModified": 1687886075, "narHash": "sha256-PeayJDDDy+uw1Ats4moZnRdL1OFuZm1Tj+KiHlD67+o=", @@ -2207,47 +2634,49 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_3": { "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_4": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_5": { @@ -2268,11 +2697,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { @@ -2283,81 +2712,51 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, "nixpkgs_8": { "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_9": { "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nosys": { - "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, - "nosys_2": { - "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, "old-ghc-nix": { "flake": false, "locked": { @@ -2392,206 +2791,81 @@ "type": "github" } }, - "ops-lib": { + "old-ghc-nix_3": { "flake": false, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "paisano": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "nosys": "nosys", - "yants": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "core", - "type": "github" - } - }, - "paisano-actions": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "actions", - "type": "github" - } - }, - "paisano-mdbook-preprocessor": { - "inputs": { - "crane": "crane", - "fenix": "fenix", - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions", - "std": [ - "cardano-node", - "std" - ] - }, - "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "type": "github" - } - }, - "paisano-tui": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "cardano-node", - "cardano-automation", - "tullia", - "std" - ] - }, - "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "tui", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "paisano-tui_2": { + "pre-commit-hooks-nix": { "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "blank" - ], - "std": [ - "cardano-node", - "std" - ] + "flake-compat": "flake-compat_3", + "flake-utils": "flake-utils_6", + "gitignore": "gitignore", + "nixpkgs": "nixpkgs_4", + "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "tui", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "paisano_2": { + "pre-commit-hooks-nix_2": { "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "nosys": "nosys_2", - "yants": [ - "cardano-node", - "std", - "yants" - ] + "flake-compat": "flake-compat_5", + "flake-utils": "flake-utils_10", + "gitignore": "gitignore_2", + "nixpkgs": "nixpkgs_7", + "nixpkgs-stable": "nixpkgs-stable_4" }, "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", - "owner": "paisano-nix", - "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "core", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "pre-commit-hooks-nix": { + "pre-commit-hooks-nix_3": { "inputs": { "flake-compat": "flake-compat_6", - "flake-utils": "flake-utils_10", - "gitignore": "gitignore", - "nixpkgs": "nixpkgs_11", - "nixpkgs-stable": "nixpkgs-stable_2" + "flake-utils": "flake-utils_12", + "gitignore": "gitignore_3", + "nixpkgs": "nixpkgs_9", + "nixpkgs-stable": "nixpkgs-stable_6" }, "locked": { - "lastModified": 1696846637, - "narHash": "sha256-0hv4kbXxci2+pxhuXlVgftj/Jq79VSmtAyvfabCCtYk=", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "42e1b6095ef80a51f79595d9951eb38e91c4e6ca", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { @@ -2603,7 +2877,6 @@ "root": { "inputs": { "CHaP": "CHaP", - "cardano-node": "cardano-node", "hackage": "hackage", "haskell-nix": "haskell-nix", "iogx": "iogx", @@ -2614,55 +2887,7 @@ ] } }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, "rust-overlay": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { "inputs": { "flake-utils": [ "mithril", @@ -2723,6 +2948,23 @@ "type": "github" } }, + "secp256k1_3": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, "sodium": { "flake": false, "locked": { @@ -2757,6 +2999,23 @@ "type": "github" } }, + "sodium_3": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, "sphinxcontrib-haddock": { "flake": false, "locked": { @@ -2773,14 +3032,46 @@ "type": "github" } }, + "sphinxcontrib-haddock_2": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_3": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, "stackage": { "flake": false, "locked": { - "lastModified": 1690762200, - "narHash": "sha256-UB02izyJREbLmS7+pyJvKF3mDePI6fTasqtg3fltJA0=", + "lastModified": 1698019774, + "narHash": "sha256-MXoKr4WS/wG/RA9VOiHH26dYOraZ1q8QayeA0rpfQUU=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "c91713e7ca38abba6a90686df895acda53fd5038", + "rev": "87572456de828c621db6fc4082a93e34413e1d5d", "type": "github" }, "original": { @@ -2792,11 +3083,11 @@ "stackage_2": { "flake": false, "locked": { - "lastModified": 1698019774, - "narHash": "sha256-MXoKr4WS/wG/RA9VOiHH26dYOraZ1q8QayeA0rpfQUU=", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "87572456de828c621db6fc4082a93e34413e1d5d", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { @@ -2805,101 +3096,38 @@ "type": "github" } }, - "std": { - "inputs": { - "arion": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_3", - "incl": "incl", - "makes": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "microvm": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_3", - "paisano": "paisano", - "paisano-tui": "paisano-tui", - "yants": "yants" - }, + "stackage_3": { + "flake": false, "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", - "owner": "divnix", - "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "std_2": { - "inputs": { - "arion": [ - "cardano-node", - "std", - "blank" - ], - "blank": "blank_2", - "devshell": "devshell_2", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_6", - "haumea": "haumea", - "incl": "incl_2", - "makes": [ - "cardano-node", - "std", - "blank" - ], - "microvm": [ - "cardano-node", - "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_8", - "paisano": "paisano_2", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", - "paisano-tui": "paisano-tui_2", - "yants": "yants_2" - }, + "systems": { "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", - "owner": "divnix", - "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "systems": { + "systems_10": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2914,7 +3142,7 @@ "type": "github" } }, - "systems_2": { + "systems_11": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2929,7 +3157,7 @@ "type": "github" } }, - "systems_3": { + "systems_12": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2944,7 +3172,7 @@ "type": "github" } }, - "systems_4": { + "systems_13": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2959,7 +3187,7 @@ "type": "github" } }, - "systems_5": { + "systems_2": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2974,126 +3202,129 @@ "type": "github" } }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "mithril", - "nixpkgs" - ] - }, + "systems_3": { "locked": { - "lastModified": 1678901796, - "narHash": "sha256-9myDjq948gHbiv16HnFQZaswQEpNodE/CuGCfDNnv/g=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "0f560a84215e79facd2833b20bfdc2033266f126", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "treefmt-nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "tullia": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container", - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "nixpkgs" - ], - "std": "std" + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { "locked": { - "lastModified": 1684859161, - "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "utils": { + "systems_6": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "utils_2": { + "systems_7": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "yants": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_9": { "locked": { - "lastModified": 1667096281, - "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", - "owner": "divnix", - "repo": "yants", - "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "yants", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "yants_2": { + "treefmt-nix": { "inputs": { "nixpkgs": [ - "cardano-node", - "std", - "haumea", + "mithril", "nixpkgs" ] }, "locked": { - "lastModified": 1686863218, - "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", - "owner": "divnix", - "repo": "yants", - "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", + "lastModified": 1678901796, + "narHash": "sha256-9myDjq948gHbiv16HnFQZaswQEpNodE/CuGCfDNnv/g=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "0f560a84215e79facd2833b20bfdc2033266f126", "type": "github" }, "original": { - "owner": "divnix", - "repo": "yants", + "owner": "numtide", + "repo": "treefmt-nix", "type": "github" } } diff --git a/flake.nix b/flake.nix index b533fff..0388dab 100644 --- a/flake.nix +++ b/flake.nix @@ -33,9 +33,9 @@ }; # Used to provide the cardano-node and cardano-cli executables. - cardano-node = { - url = "github:input-output-hk/cardano-node?ref=8.4.0-pre"; - }; + # cardano-node = { + # url = "github:input-output-hk/cardano-node?ref=8.8.0-pre"; + # }; mithril = { url = "github:input-output-hk/mithril"; diff --git a/freer-extras/freer-extras.cabal b/freer-extras/freer-extras.cabal index ee5e896..1d07c72 100644 --- a/freer-extras/freer-extras.cabal +++ b/freer-extras/freer-extras.cabal @@ -1,4 +1,4 @@ -cabal-version: 2.2 +cabal-version: 3.8 name: freer-extras version: 1.3.0.0 synopsis: Useful extensions to simple-freer diff --git a/nix/shell.nix b/nix/shell.nix index 18ee1f4..3303b7b 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -2,24 +2,13 @@ _cabalProject: -let - cardano-cli = inputs.cardano-node.legacyPackages.cardano-cli; - cardano-node = inputs.cardano-node.legacyPackages.cardano-node; -in { name = "cardano-node-emulator"; packages = [ - cardano-cli - cardano-node inputs.mithril.packages.mithril-client ]; - env = { - CARDANO_CLI = "${cardano-cli}/bin/cardano-cli"; - CARDANO_NODE = "${cardano-node}/bin/cardano-node"; - }; - preCommit = { fourmolu.enable = true; shellcheck.enable = true; diff --git a/plutus-ledger/plutus-ledger.cabal b/plutus-ledger/plutus-ledger.cabal index 24ea4c9..523d150 100644 --- a/plutus-ledger/plutus-ledger.cabal +++ b/plutus-ledger/plutus-ledger.cabal @@ -1,4 +1,4 @@ -cabal-version: 3.0 +cabal-version: 3.8 name: plutus-ledger version: 1.3.0.0 license: Apache-2.0 @@ -175,9 +175,9 @@ test-suite plutus-ledger-test -- Other IOG dependencies -------------------------- build-depends: - , cardano-api:{cardano-api, gen} - , plutus-ledger-api >=1.0.0 - , plutus-tx >=1.0.0 + , cardano-api + , plutus-ledger-api >=1.0.0 + , plutus-tx >=1.0.0 ------------------------ -- Non-IOG dependencies diff --git a/plutus-ledger/src/Ledger/Index/Internal.hs b/plutus-ledger/src/Ledger/Index/Internal.hs index d103e3b..551b990 100644 --- a/plutus-ledger/src/Ledger/Index/Internal.hs +++ b/plutus-ledger/src/Ledger/Index/Internal.hs @@ -20,12 +20,9 @@ import Prelude hiding (lookup) import Cardano.Api qualified as C import Cardano.Api.Shelley qualified as C import Cardano.Binary qualified as CBOR -import Cardano.Ledger.Alonzo.Scripts (ExUnits) +import Cardano.Ledger.Alonzo.Scripts (AsIndex, ExUnits, PlutusPurpose) import Cardano.Ledger.Alonzo.Tx (AlonzoTx (AlonzoTx), IsValid (IsValid)) -import Cardano.Ledger.Alonzo.TxWits (RdmrPtr) -import Cardano.Ledger.Babbage (BabbageEra) import Cardano.Ledger.Core (Tx) -import Cardano.Ledger.Crypto (StandardCrypto) import Cardano.Ledger.Shelley.API (Validated, extractTx) import Codec.Serialise (Serialise (..)) import Control.Lens (makePrisms) @@ -34,7 +31,7 @@ import Data.Map qualified as Map import Data.Text (Text) import GHC.Generics (Generic) import Ledger.Orphans () -import Ledger.Tx.CardanoAPI.Internal (CardanoTx, pattern CardanoEmulatorEraTx) +import Ledger.Tx.CardanoAPI.Internal (CardanoTx, EmulatorEra, pattern CardanoEmulatorEraTx) import PlutusLedgerApi.V1.Scripts qualified as Scripts import Prettyprinter (Pretty (..), hang, vsep, (<+>)) import Prettyprinter.Extras (PrettyShow (..)) @@ -58,8 +55,6 @@ eitherTx ifInvalid ifValid (extractTx . getOnChainTx -> tx@(AlonzoTx _ _ (IsVali unOnChain :: OnChainTx -> CardanoTx unOnChain = eitherTx id id -type EmulatorEra = BabbageEra StandardCrypto - -- | The UTxOs of a blockchain indexed by their references. type UtxoIndex = C.UTxO C.BabbageEra @@ -89,7 +84,7 @@ data ValidationPhase = Phase1 | Phase2 deriving (Eq, Show, Generic, FromJSON, To deriving via (PrettyShow ValidationPhase) instance Pretty ValidationPhase type ValidationErrorInPhase = (ValidationPhase, ValidationError) type ValidationSuccess = (RedeemerReport, Validated (Tx EmulatorEra)) -type RedeemerReport = Map.Map RdmrPtr ([Text], ExUnits) +type RedeemerReport = Map.Map (PlutusPurpose AsIndex EmulatorEra) ([Text], ExUnits) data ValidationResult = -- | A transaction failed to validate in phase 1. diff --git a/plutus-ledger/src/Ledger/Tx.hs b/plutus-ledger/src/Ledger/Tx.hs index e398e20..a53a169 100644 --- a/plutus-ledger/src/Ledger/Tx.hs +++ b/plutus-ledger/src/Ledger/Tx.hs @@ -450,7 +450,7 @@ getCardanoTxValidityRange :: CardanoTx -> SlotRange getCardanoTxValidityRange (CardanoTx (C.Tx (C.TxBody C.TxBodyContent{..}) _) _) = CardanoAPI.fromCardanoValidityRange txValidityLowerBound txValidityUpperBound getCardanoTxData :: CardanoTx -> Map V1.DatumHash V1.Datum -getCardanoTxData (CardanoTx (C.Tx txBody _) _) = fst $ CardanoAPI.scriptDataFromCardanoTxBody txBody +getCardanoTxData (CardanoEmulatorEraTx (C.Tx txBody _)) = fst $ CardanoAPI.scriptDataFromCardanoTxBody txBody -- TODO: add txMetaData @@ -477,7 +477,7 @@ txBodyContentOuts :: Lens' (C.TxBodyContent ctx C.BabbageEra) [TxOut] txBodyContentOuts = lens (map TxOut . C.txOuts) (\bodyContent outs -> bodyContent{C.txOuts = map getTxOut outs}) getCardanoTxRedeemers :: CardanoTx -> V2.Tx.Redeemers -getCardanoTxRedeemers (CardanoTx (C.Tx txBody _) _) = snd $ CardanoAPI.scriptDataFromCardanoTxBody txBody +getCardanoTxRedeemers (CardanoEmulatorEraTx (C.Tx txBody _)) = snd $ CardanoAPI.scriptDataFromCardanoTxBody txBody getCardanoTxExtraKeyWitnesses :: CardanoTx -> [C.Hash C.PaymentKey] getCardanoTxExtraKeyWitnesses (CardanoEmulatorEraTx (C.Tx (C.TxBody C.TxBodyContent{..}) _)) = case txExtraKeyWits of diff --git a/plutus-ledger/src/Ledger/Tx/CardanoAPI/Internal.hs b/plutus-ledger/src/Ledger/Tx/CardanoAPI/Internal.hs index 7486731..5359de6 100644 --- a/plutus-ledger/src/Ledger/Tx/CardanoAPI/Internal.hs +++ b/plutus-ledger/src/Ledger/Tx/CardanoAPI/Internal.hs @@ -88,17 +88,20 @@ module Ledger.Tx.CardanoAPI.Internal ( zeroExecutionUnits, tag, withIsCardanoEra, + EmulatorEra, ) where import Cardano.Api qualified as C import Cardano.Api.Byron qualified as C import Cardano.Api.Error qualified as C import Cardano.Api.Shelley qualified as C -import Cardano.Api.TxBody qualified as C +import Cardano.Api.Tx.Body qualified as C import Cardano.BM.Data.Tracer (ToObject) import Cardano.Chain.Common (addrToBase58) import Cardano.Ledger.Alonzo.Scripts qualified as Alonzo import Cardano.Ledger.Alonzo.TxWits qualified as Alonzo +import Cardano.Ledger.Babbage (BabbageEra) +import Cardano.Ledger.Crypto (StandardCrypto) import Cardano.Ledger.Core qualified as Ledger import Control.Lens ((<&>)) @@ -128,6 +131,8 @@ import PlutusLedgerApi.V2 qualified as PV2 import PlutusTx.Prelude qualified as PlutusTx import Prettyprinter (Pretty (pretty), colon, viaShow, (<+>)) +type EmulatorEra = BabbageEra StandardCrypto + newtype CardanoBuildTx = CardanoBuildTx {getCardanoBuildTx :: C.TxBodyContent C.BuildTx C.BabbageEra} deriving (Eq, Show, Generic) @@ -237,7 +242,7 @@ withShelleyBasedEraConstraintsForLedger = \case with their hashes. -} scriptDataFromCardanoTxBody - :: C.TxBody era + :: C.TxBody C.BabbageEra -> (Map P.DatumHash P.Datum, PV1.Redeemers) -- scriptDataFromCardanoTxBody C.ByronTxBody{} = (mempty, mempty) scriptDataFromCardanoTxBody (C.ShelleyTxBody _ _ _ C.TxBodyNoScriptData _ _) = @@ -269,14 +274,11 @@ scriptDataFromCardanoTxBody $ Map.toList reds in (datums, redeemers) -redeemerPtrFromCardanoRdmrPtr :: Alonzo.RdmrPtr -> PV1.RedeemerPtr -redeemerPtrFromCardanoRdmrPtr (Alonzo.RdmrPtr rdmrTag ptr) = PV1.RedeemerPtr t (toInteger ptr) - where - t = case rdmrTag of - Alonzo.Spend -> PV1.Spend - Alonzo.Mint -> PV1.Mint - Alonzo.Cert -> PV1.Cert - Alonzo.Rewrd -> PV1.Reward +redeemerPtrFromCardanoRdmrPtr :: Alonzo.PlutusPurpose Alonzo.AsIndex EmulatorEra -> PV1.RedeemerPtr +redeemerPtrFromCardanoRdmrPtr (Alonzo.AlonzoSpending (Alonzo.AsIndex ix)) = PV1.RedeemerPtr PV1.Spend (toInteger ix) +redeemerPtrFromCardanoRdmrPtr (Alonzo.AlonzoMinting (Alonzo.AsIndex ix)) = PV1.RedeemerPtr PV1.Mint (toInteger ix) +redeemerPtrFromCardanoRdmrPtr (Alonzo.AlonzoCertifying (Alonzo.AsIndex ix)) = PV1.RedeemerPtr PV1.Cert (toInteger ix) +redeemerPtrFromCardanoRdmrPtr (Alonzo.AlonzoRewarding (Alonzo.AsIndex ix)) = PV1.RedeemerPtr PV1.Reward (toInteger ix) {- | Extract plutus scripts from a Cardano API tx body. diff --git a/plutus-script-utils/plutus-script-utils.cabal b/plutus-script-utils/plutus-script-utils.cabal index 744c697..8621731 100644 --- a/plutus-script-utils/plutus-script-utils.cabal +++ b/plutus-script-utils/plutus-script-utils.cabal @@ -1,4 +1,4 @@ -cabal-version: 3.0 +cabal-version: 3.8 name: plutus-script-utils version: 1.3.0.0 license: Apache-2.0 From 37342073dfc95e25fd13790a836106ed2f425999 Mon Sep 17 00:00:00 2001 From: Sjoerd Visscher Date: Thu, 22 Feb 2024 17:17:45 +0100 Subject: [PATCH 2/4] plutus-tx-plugin only builds with GHC 9.6 --- cardano-node-emulator/cardano-node-emulator.cabal | 4 ++++ .../cardano-node-socket-emulator.cabal | 4 ++++ plutus-ledger/plutus-ledger.cabal | 14 ++++++++------ plutus-script-utils/plutus-script-utils.cabal | 4 ++++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/cardano-node-emulator/cardano-node-emulator.cabal b/cardano-node-emulator/cardano-node-emulator.cabal index 6676c88..487e10d 100644 --- a/cardano-node-emulator/cardano-node-emulator.cabal +++ b/cardano-node-emulator/cardano-node-emulator.cabal @@ -114,6 +114,10 @@ test-suite cardano-node-emulator-test Plutus.Examples.Game Plutus.Examples.GameSpec + -- The limitation of plutus-tx-plugin + if (impl(ghc <9.6) || impl(ghc >=9.7)) + buildable: False + -------------------- -- Local components -------------------- diff --git a/cardano-node-socket-emulator/cardano-node-socket-emulator.cabal b/cardano-node-socket-emulator/cardano-node-socket-emulator.cabal index 60c944f..2b4eca8 100644 --- a/cardano-node-socket-emulator/cardano-node-socket-emulator.cabal +++ b/cardano-node-socket-emulator/cardano-node-socket-emulator.cabal @@ -37,6 +37,10 @@ library Cardano.Node.Socket.Emulator.Types Plutus.Monitoring.Util + -- The limitation of plutus-tx-plugin + if (impl(ghc <9.6) || impl(ghc >=9.7)) + buildable: False + -------------------- -- Local components -------------------- diff --git a/plutus-ledger/plutus-ledger.cabal b/plutus-ledger/plutus-ledger.cabal index 523d150..4edc6a4 100644 --- a/plutus-ledger/plutus-ledger.cabal +++ b/plutus-ledger/plutus-ledger.cabal @@ -96,6 +96,10 @@ library -- For example: PlutusLedgerApi.V1.Address is reexported by Ledger.Address other-modules: Codec.CBOR.Extras + -- The limitation of plutus-tx-plugin + if (impl(ghc <9.6) || impl(ghc >=9.7)) + buildable: False + -------------------- -- Local components -------------------- @@ -118,6 +122,7 @@ library , plutus-core >=1.0.0 , plutus-ledger-api >=1.0.0 , plutus-tx >=1.0.0 + , plutus-tx-plugin >=1.0.0 ------------------------ -- Non-IOG dependencies @@ -149,9 +154,6 @@ library ghc-options: -fprint-potential-instances - if !(impl(ghcjs) || os(ghcjs)) - build-depends: plutus-tx-plugin >=1.0.0 - if flag(defer-plugin-errors) ghc-options: -fplugin-opt PlutusTx.Plugin:defer-errors @@ -175,9 +177,9 @@ test-suite plutus-ledger-test -- Other IOG dependencies -------------------------- build-depends: - , cardano-api - , plutus-ledger-api >=1.0.0 - , plutus-tx >=1.0.0 + , cardano-api:{cardano-api, gen} + , plutus-ledger-api >=1.0.0 + , plutus-tx >=1.0.0 ------------------------ -- Non-IOG dependencies diff --git a/plutus-script-utils/plutus-script-utils.cabal b/plutus-script-utils/plutus-script-utils.cabal index 8621731..c6b8bb8 100644 --- a/plutus-script-utils/plutus-script-utils.cabal +++ b/plutus-script-utils/plutus-script-utils.cabal @@ -82,6 +82,10 @@ library Plutus.Script.Utils.Value Prettyprinter.Extras + -- The limitation of plutus-tx-plugin + if (impl(ghc <9.6) || impl(ghc >=9.7)) + buildable: False + -------------------------- -- Other IOG dependencies -------------------------- From 8923ffd91a7b382c5863163dd3710a3ca3c626d9 Mon Sep 17 00:00:00 2001 From: Sjoerd Visscher Date: Wed, 14 Feb 2024 12:05:15 +0100 Subject: [PATCH 3/4] Support registration certificates --- .../cardano-node-emulator.cabal | 8 ++-- .../src/Cardano/Node/Emulator/API.hs | 25 +++++++------ .../src/Cardano/Node/Emulator/Generators.hs | 7 ++-- .../Node/Emulator/Internal/Node/Fee.hs | 12 +++++- .../test/Cardano/Node/Emulator/MTLSpec.hs | 37 +++++++++++++------ .../test/Plutus/Examples/Escrow.hs | 9 +++-- .../test/Plutus/Examples/Game.hs | 6 +-- plutus-ledger/src/Ledger/Address.hs | 13 +++++++ plutus-ledger/src/Ledger/Tx.hs | 28 +++++++------- 9 files changed, 92 insertions(+), 53 deletions(-) diff --git a/cardano-node-emulator/cardano-node-emulator.cabal b/cardano-node-emulator/cardano-node-emulator.cabal index 487e10d..8967b7d 100644 --- a/cardano-node-emulator/cardano-node-emulator.cabal +++ b/cardano-node-emulator/cardano-node-emulator.cabal @@ -130,10 +130,10 @@ test-suite cardano-node-emulator-test -- Other IOG dependencies -------------------------- build-depends: - , cardano-api - , plutus-ledger-api >=1.0.0 - , plutus-tx >=1.0.0 - , plutus-tx-plugin >=1.0.0 + , cardano-api:{cardano-api, gen, internal} + , plutus-ledger-api >=1.0.0 + , plutus-tx >=1.0.0 + , plutus-tx-plugin >=1.0.0 ------------------------ -- Non-IOG dependencies diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/API.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/API.hs index 164fe21..cf80ab2 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/API.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/API.hs @@ -82,16 +82,17 @@ import Ledger ( DatumHash, DecoratedTxOut, POSIXTime, - PaymentPrivateKey (unPaymentPrivateKey), + PaymentPrivateKey, Slot, TxOutRef, UtxoIndex, ) +import Ledger.Address (toWitness) import Ledger.AddressMap qualified as AM import Ledger.Index qualified as Index import Ledger.Tx ( TxOut, - addCardanoTxSignature, + addCardanoTxWitness, cardanoTxOutValue, getCardanoTxData, getCardanoTxId, @@ -262,13 +263,13 @@ balanceTx utxoIndex changeAddr utx = do -- | Sign a transaction with the given signatures. signTx :: (MonadEmulator m, Foldable f) - => f PaymentPrivateKey + => f C.ShelleyWitnessSigningKey -- ^ Signatures -> CardanoTx -> m CardanoTx -signTx keys tx = do +signTx witnesses tx = do logMsg L.Info $ TxBalanceMsg $ SigningTx tx - pure $ foldr (addCardanoTxSignature . unPaymentPrivateKey) tx keys + pure $ foldr addCardanoTxWitness tx witnesses -- | Balance a transaction, sign it with the given signatures, and finally queue it. submitUnbalancedTx @@ -277,13 +278,13 @@ submitUnbalancedTx -- ^ Just the transaction inputs, not the entire 'UTxO'. -> CardanoAddress -- ^ Wallet address - -> f PaymentPrivateKey + -> f C.ShelleyWitnessSigningKey -- ^ Signatures -> CardanoBuildTx -> m CardanoTx -submitUnbalancedTx utxoIndex changeAddr keys utx = do +submitUnbalancedTx utxoIndex changeAddr witnesses utx = do newTx <- balanceTx utxoIndex changeAddr utx - signedTx <- signTx keys newTx + signedTx <- signTx witnesses newTx queueTx signedTx pure signedTx @@ -293,12 +294,12 @@ submitTxConfirmed -- ^ Just the transaction inputs, not the entire 'UTxO'. -> CardanoAddress -- ^ Wallet address - -> f PaymentPrivateKey + -> f C.ShelleyWitnessSigningKey -- ^ Signatures -> CardanoBuildTx -> m CardanoTx -submitTxConfirmed utxoIndex addr privateKeys utx = do - tx <- submitUnbalancedTx utxoIndex addr privateKeys utx +submitTxConfirmed utxoIndex addr witnesses utx = do + tx <- submitUnbalancedTx utxoIndex addr witnesses utx nextSlot pure tx @@ -311,7 +312,7 @@ payToAddress (sourceAddr, sourcePrivKey) targetAddr value = do G.emptyTxBodyContent { C.txOuts = [C.TxOut targetAddr (toCardanoTxOutValue value) C.TxOutDatumNone C.ReferenceScriptNone] } - getCardanoTxId <$> submitUnbalancedTx mempty sourceAddr [sourcePrivKey] buildTx + getCardanoTxId <$> submitUnbalancedTx mempty sourceAddr [toWitness sourcePrivKey] buildTx -- | Log any message logMsg :: (MonadEmulator m) => L.LogLevel -> EmulatorMsg -> m () diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Generators.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Generators.hs index 081c961..8ba1a99 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Generators.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Generators.hs @@ -102,10 +102,11 @@ import Ledger ( ValidationErrorInPhase, ValidationPhase (Phase1, Phase2), ValidationResult (FailPhase1, FailPhase2), - addCardanoTxSignature, + addCardanoTxWitness, createGenesisTransaction, minLovelaceTxOutEstimated, pubKeyAddress, + toWitness, txOutValue, ) import Ledger.CardanoWallet qualified as CW @@ -123,8 +124,8 @@ import Test.Gen.Cardano.Api.Typed qualified as Gen -- | Attach signatures of all known private keys to a transaction. signAll :: CardanoTx -> CardanoTx signAll tx = - foldl' (flip addCardanoTxSignature) tx $ - fmap unPaymentPrivateKey CW.knownPaymentPrivateKeys + foldl' (flip addCardanoTxWitness) tx $ + fmap toWitness CW.knownPaymentPrivateKeys -- | The parameters for the generators in this module. data GeneratorModel = GeneratorModel diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs index 06c593e..0596f00 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs @@ -25,6 +25,7 @@ import Cardano.Api.Fees (mapTxScriptWitnesses) import Cardano.Api.Shelley qualified as C import Cardano.Api.Shelley qualified as C.Api import Cardano.Ledger.BaseTypes (Globals (systemStart), epochInfo) +import Cardano.Ledger.Shelley.TxCert (shelleyTotalDepositsTxCerts) import Cardano.Node.Emulator.Internal.Node.Params ( EmulatorEra, Params (emulatorPParams), @@ -34,6 +35,7 @@ import Cardano.Node.Emulator.Internal.Node.Params ( ) import Cardano.Node.Emulator.Internal.Node.Validation ( CardanoLedgerError, + Coin (unCoin), UTxO (UTxO), createAndValidateTransactionBody, getTxExUnitsWithLogs, @@ -250,8 +252,14 @@ handleBalanceTx params (C.UTxO txUtxo) cChangeAddr utxoProvider errorReporter fe inputValues <- traverse lookupValue txInputs - let left = Tx.getTxBodyContentMint filteredUnbalancedTxTx <> fold inputValues - right = lovelaceToValue fees <> foldMap (Tx.txOutValue . Tx.TxOut) (C.txOuts filteredUnbalancedTxTx) + let pp = emulatorPParams params + txDeposits = shelleyTotalDepositsTxCerts pp (const False) (Tx.getTxBodyContentCerts utx) + coinToValue = lovelaceToValue . C.Lovelace . unCoin + left = Tx.getTxBodyContentMint filteredUnbalancedTxTx <> fold inputValues + right = + lovelaceToValue fees + <> foldMap (Tx.txOutValue . Tx.TxOut) (C.txOuts filteredUnbalancedTxTx) + <> coinToValue txDeposits balance = left <> C.negateValue right ((neg, newInputs), (pos, mNewTxOut)) <- diff --git a/cardano-node-emulator/test/Cardano/Node/Emulator/MTLSpec.hs b/cardano-node-emulator/test/Cardano/Node/Emulator/MTLSpec.hs index 9ff1074..9a79bdd 100644 --- a/cardano-node-emulator/test/Cardano/Node/Emulator/MTLSpec.hs +++ b/cardano-node-emulator/test/Cardano/Node/Emulator/MTLSpec.hs @@ -2,16 +2,8 @@ module Cardano.Node.Emulator.MTLSpec (tests) where -import Control.Monad (void) -import Data.Map qualified as Map -import Data.Text.Lazy qualified as LText -import Data.Text.Lazy.Encoding qualified as Text -import Ledger.Address (CardanoAddress, PaymentPrivateKey) -import Ledger.Tx.CardanoAPI (CardanoBuildTx (CardanoBuildTx)) -import Ledger.Value.CardanoAPI qualified as Value -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.Golden (goldenVsString) - +import Cardano.Api qualified as C +import Cardano.Api.Address qualified as C import Cardano.Node.Emulator.API ( nextSlot, payToAddress, @@ -26,13 +18,23 @@ import Cardano.Node.Emulator.Test ( renderLogs, runEmulatorM, ) +import Control.Monad (void) +import Data.Map qualified as Map +import Data.Text.Lazy qualified as LText +import Data.Text.Lazy.Encoding qualified as Text +import Ledger.Address (CardanoAddress, PaymentPrivateKey, toWitness, unPaymentPubKeyHash) +import Ledger.CardanoWallet (knownMockWallet, paymentPubKeyHash) +import Ledger.Tx.CardanoAPI (CardanoBuildTx (CardanoBuildTx), toCardanoStakeKeyHash) +import Ledger.Value.CardanoAPI qualified as Value +import Test.Tasty (TestTree, testGroup) +import Test.Tasty.Golden (goldenVsString) tests :: TestTree tests = testGroup "Cardano.Node.Emulator.MTL" [ checkPredicateOptions options "submit empty tx" (hasValidatedTransactionCountOfTotal 1 1) $ do - void $ submitUnbalancedTx mempty w1 [pk1] (CardanoBuildTx E.emptyTxBodyContent) + void $ submitUnbalancedTx mempty w1 [toWitness pk1] (CardanoBuildTx E.emptyTxBodyContent) nextSlot , checkPredicateOptions options "payToAddress" (hasValidatedTransactionCountOfTotal 1 1) $ do void $ payToAddress (w1, pk1) w2 (Value.adaValueOf 1) @@ -59,6 +61,19 @@ tests = void $ payToAddress (w1, pk1) w2 (Value.adaValueOf 1) nextSlot ) + , checkPredicateOptions options "submit staking tx" (hasValidatedTransactionCountOfTotal 1 1) $ do + let + Right stakeKeyHash = toCardanoStakeKeyHash . unPaymentPubKeyHash . paymentPubKeyHash $ knownMockWallet 1 + stakeCred = C.StakeCredentialByKey stakeKeyHash + stakeCert = + C.makeStakeAddressRegistrationCertificate + (C.StakeAddrRegistrationPreConway C.ShelleyToBabbageEraBabbage stakeCred) + tx = + E.emptyTxBodyContent + { C.txCertificates = C.TxCertificates C.shelleyBasedEra [stakeCert] (C.BuildTxWith mempty) + } + void $ submitUnbalancedTx mempty w1 [toWitness pk1] (CardanoBuildTx tx) + nextSlot ] w1, w2 :: CardanoAddress diff --git a/cardano-node-emulator/test/Plutus/Examples/Escrow.hs b/cardano-node-emulator/test/Plutus/Examples/Escrow.hs index 1c2875a..d5c9f22 100644 --- a/cardano-node-emulator/test/Plutus/Examples/Escrow.hs +++ b/cardano-node-emulator/test/Plutus/Examples/Escrow.hs @@ -71,6 +71,7 @@ import Cardano.Node.Emulator.Test (testnet) import Data.Maybe (fromJust) import Ledger (POSIXTime, PaymentPubKeyHash (unPaymentPubKeyHash), TxId, getCardanoTxId) import Ledger qualified +import Ledger.Address (toWitness) import Ledger.Tx.CardanoAPI qualified as C import Ledger.Typed.Scripts (validatorCardanoAddress) import Ledger.Typed.Scripts qualified as Scripts @@ -301,7 +302,7 @@ pay wallet privateKey escrow vl = do E.logInfo @String $ "Pay " <> show vl <> " to the script" slotConfig <- asks pSlotConfig let (utx, utxoIndex) = mkPayTx slotConfig escrow wallet vl - void $ E.submitTxConfirmed utxoIndex wallet [privateKey] utx + void $ E.submitTxConfirmed utxoIndex wallet [toWitness privateKey] utx newtype RedeemSuccess = RedeemSuccess TxId deriving (Eq, Show) @@ -356,7 +357,7 @@ redeem redeem wallet privateKey escrow = do E.logInfo @String "Redeeming" (utx, utxoIndex) <- mkRedeemTx escrow - RedeemSuccess . getCardanoTxId <$> E.submitTxConfirmed utxoIndex wallet [privateKey] utx + RedeemSuccess . getCardanoTxId <$> E.submitTxConfirmed utxoIndex wallet [toWitness privateKey] utx newtype RefundSuccess = RefundSuccess TxId deriving newtype (Eq, Show) @@ -409,7 +410,7 @@ refund refund wallet privateKey escrow = do E.logInfo @String "Refunding" (utx, utxoIndex) <- mkRefundTx escrow wallet - RefundSuccess . getCardanoTxId <$> E.submitTxConfirmed utxoIndex wallet [privateKey] utx + RefundSuccess . getCardanoTxId <$> E.submitTxConfirmed utxoIndex wallet [toWitness privateKey] utx -- Submit a transaction attempting to take the refund belonging to the given pk. mkBadRefundTx @@ -450,7 +451,7 @@ badRefund badRefund wallet privateKey escrow pkh = do E.logInfo @String "Bad refund" (utx, utxoIndex) <- mkBadRefundTx escrow pkh - (void $ E.submitTxConfirmed utxoIndex wallet [privateKey] utx) + (void $ E.submitTxConfirmed utxoIndex wallet [toWitness privateKey] utx) `catchError` (\err -> E.logError $ "Caught error: " ++ show err) {- | Pay some money into the escrow contract. Then release all funds to their diff --git a/cardano-node-emulator/test/Plutus/Examples/Game.hs b/cardano-node-emulator/test/Plutus/Examples/Game.hs index 3baeb97..ea2f20b 100644 --- a/cardano-node-emulator/test/Plutus/Examples/Game.hs +++ b/cardano-node-emulator/test/Plutus/Examples/Game.hs @@ -30,7 +30,7 @@ import Data.ByteString.Char8 qualified as C import Data.Map qualified as Map import GHC.Generics (Generic) import Ledger (CardanoAddress, POSIXTime, PaymentPrivateKey, UtxoIndex, Validator, getValidator) -import Ledger.Address (mkValidatorCardanoAddress) +import Ledger.Address (mkValidatorCardanoAddress, toWitness) import Ledger.Tx.CardanoAPI qualified as C import Ledger.Typed.Scripts qualified as Scripts import Plutus.Script.Utils.Typed (ScriptContextV2, Versioned) @@ -168,11 +168,11 @@ submitLockTx :: (E.MonadEmulator m) => CardanoAddress -> PaymentPrivateKey -> Lo submitLockTx wallet privateKey lockArgs@LockArgs{lockArgsValue} = do E.logInfo @String $ "Pay " <> show lockArgsValue <> " to the script" let (utx, utxoIndex) = mkLockTx lockArgs - void $ E.submitTxConfirmed utxoIndex wallet [privateKey] utx + void $ E.submitTxConfirmed utxoIndex wallet [toWitness privateKey] utx submitGuessTx :: (E.MonadEmulator m) => CardanoAddress -> PaymentPrivateKey -> GuessArgs -> m () submitGuessTx wallet privateKey guessArgs@GuessArgs{guessArgsGameParam} = do E.logInfo @String "Taking a guess" utxos <- E.utxosAt (mkGameAddress guessArgsGameParam) let (utx, utxoIndex) = mkGuessTx utxos guessArgs - void $ E.submitTxConfirmed utxoIndex wallet [privateKey] utx + void $ E.submitTxConfirmed utxoIndex wallet [toWitness privateKey] utx diff --git a/plutus-ledger/src/Ledger/Address.hs b/plutus-ledger/src/Ledger/Address.hs index b9487c6..1c964d1 100644 --- a/plutus-ledger/src/Ledger/Address.hs +++ b/plutus-ledger/src/Ledger/Address.hs @@ -11,8 +11,10 @@ module Ledger.Address ( PaymentPrivateKey (..), PaymentPubKey (..), PaymentPubKeyHash (..), + StakePrivateKey (..), StakePubKey (..), StakePubKeyHash (..), + ToWitness (..), toPlutusAddress, toPlutusPubKeyHash, cardanoAddressCredential, @@ -143,6 +145,8 @@ makeLift ''PaymentPubKeyHash xprvToPaymentPubKeyHash :: Crypto.XPrv -> PaymentPubKeyHash xprvToPaymentPubKeyHash = PaymentPubKeyHash . pubKeyHash . toPublicKey +newtype StakePrivateKey = StakePrivateKey {unStakePrivateKey :: Crypto.XPrv} + newtype StakePubKey = StakePubKey {unStakePubKey :: PubKey} deriving stock (Eq, Ord, Generic) deriving anyclass (ToJSON, FromJSON, ToJSONKey, FromJSONKey) @@ -214,3 +218,12 @@ stakePubKeyHashCredential = StakingHash . PubKeyCredential . unStakePubKeyHash -- | Construct a `StakingCredential` from a validator script hash. stakeValidatorHashCredential :: StakeValidatorHash -> StakingCredential stakeValidatorHashCredential (StakeValidatorHash h) = StakingHash . ScriptCredential . ScriptHash $ h + +class ToWitness a where + toWitness :: a -> C.ShelleyWitnessSigningKey + +instance ToWitness PaymentPrivateKey where + toWitness (PaymentPrivateKey xprv) = C.WitnessPaymentExtendedKey (C.PaymentExtendedSigningKey xprv) + +instance ToWitness StakePrivateKey where + toWitness (StakePrivateKey xprv) = C.WitnessStakeExtendedKey (C.StakeExtendedSigningKey xprv) diff --git a/plutus-ledger/src/Ledger/Tx.hs b/plutus-ledger/src/Ledger/Tx.hs index a53a169..8610d49 100644 --- a/plutus-ledger/src/Ledger/Tx.hs +++ b/plutus-ledger/src/Ledger/Tx.hs @@ -69,13 +69,14 @@ module Ledger.Tx ( getCardanoTxData, CardanoTx (.., CardanoEmulatorEraTx), ToCardanoError (..), - addCardanoTxSignature, + addCardanoTxWitness, -- * TxBodyContent functions getTxBodyContentInputs, getTxBodyContentCollateralInputs, getTxBodyContentReturnCollateral, getTxBodyContentMint, + getTxBodyContentCerts, txBodyContentIns, txBodyContentCollateralIns, txBodyContentOuts, @@ -86,8 +87,8 @@ module Ledger.Tx ( ) where import Cardano.Api qualified as C +import Cardano.Api.ReexposeLedger qualified as C.Ledger import Cardano.Api.Shelley qualified as C.Api -import Cardano.Crypto.Wallet qualified as Crypto import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..)) import Cardano.Ledger.Alonzo.TxWits (txwitsVKey) import Codec.Serialise (Serialise) @@ -452,6 +453,11 @@ getCardanoTxValidityRange (CardanoTx (C.Tx (C.TxBody C.TxBodyContent{..}) _) _) getCardanoTxData :: CardanoTx -> Map V1.DatumHash V1.Datum getCardanoTxData (CardanoEmulatorEraTx (C.Tx txBody _)) = fst $ CardanoAPI.scriptDataFromCardanoTxBody txBody +getTxBodyContentCerts :: C.TxBodyContent ctx era -> [C.Ledger.TxCert (C.Api.ShelleyLedgerEra era)] +getTxBodyContentCerts C.TxBodyContent{..} = case txCertificates of + C.TxCertificatesNone -> mempty + C.TxCertificates _ certs _ -> C.Api.toShelleyCertificate <$> certs + -- TODO: add txMetaData txBodyContentIns @@ -484,28 +490,22 @@ getCardanoTxExtraKeyWitnesses (CardanoEmulatorEraTx (C.Tx (C.TxBody C.TxBodyCont C.Api.TxExtraKeyWitnessesNone -> mempty C.Api.TxExtraKeyWitnesses _ txwits -> txwits -type PrivateKey = Crypto.XPrv - -addCardanoTxSignature :: PrivateKey -> CardanoTx -> CardanoTx -addCardanoTxSignature privKey = addSignatureCardano +addCardanoTxWitness :: C.Api.ShelleyWitnessSigningKey -> CardanoTx -> CardanoTx +addCardanoTxWitness witness (CardanoEmulatorEraTx ctx) = CardanoEmulatorEraTx (addWitness ctx) where - addSignatureCardano :: CardanoTx -> CardanoTx - addSignatureCardano (CardanoEmulatorEraTx ctx) = - CardanoEmulatorEraTx (addSignatureCardano' ctx) - - addSignatureCardano' (C.Api.ShelleyTx shelleyBasedEra (AlonzoTx body wits isValid aux)) = + addWitness (C.Api.ShelleyTx shelleyBasedEra (AlonzoTx body wits isValid aux)) = C.Api.ShelleyTx shelleyBasedEra (AlonzoTx body wits' isValid aux) where wits' = wits <> mempty{txwitsVKey = newWits} - newWits = case fromPaymentPrivateKey privKey body of + newWits = case fromShelleyWitnessSigningKey body of C.Api.ShelleyKeyWitness _ wit -> Set.singleton wit _ -> Set.empty - fromPaymentPrivateKey xprv txBody = + fromShelleyWitnessSigningKey txBody = C.Api.makeShelleyKeyWitness C.shelleyBasedEra (C.Api.ShelleyTxBody C.Api.ShelleyBasedEraBabbage txBody notUsed notUsed notUsed notUsed) - (C.Api.WitnessPaymentExtendedKey (C.Api.PaymentExtendedSigningKey xprv)) + witness where notUsed = undefined -- hack so we can reuse code from cardano-api From 695dcd58075f604307c63dca17c18a69bb94a98d Mon Sep 17 00:00:00 2001 From: Sjoerd Visscher Date: Wed, 20 Mar 2024 15:51:20 +0100 Subject: [PATCH 4/4] Keep the ledger state around --- .../src/Cardano/Node/Emulator/API.hs | 22 +++--- .../src/Cardano/Node/Emulator/Generators.hs | 7 +- .../Node/Emulator/Internal/Node/Chain.hs | 43 +++++++---- .../Node/Emulator/Internal/Node/Fee.hs | 14 +--- .../Node/Emulator/Internal/Node/Validation.hs | 77 ++++++++----------- .../src/Cardano/Node/Emulator/Test.hs | 2 +- .../src/Cardano/Node/Socket/Emulator.hs | 2 +- .../Cardano/Node/Socket/Emulator/Server.hs | 17 ++-- .../src/Cardano/Node/Socket/Emulator/Types.hs | 4 +- plutus-ledger/src/Ledger/Tx/CardanoAPI.hs | 13 ++++ 10 files changed, 106 insertions(+), 95 deletions(-) diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/API.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/API.hs index cf80ab2..7deeb55 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/API.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/API.hs @@ -67,7 +67,7 @@ import Cardano.Node.Emulator.Internal.API ( modifySlot, processBlock, ) -import Control.Lens (use, (%~), (&), (<>~), (^.)) +import Control.Lens (use, (%~), (&), (.~), (<>~), (^.)) import Control.Monad (void) import Control.Monad.Error.Class (throwError) import Control.Monad.Freer.Extras.Log qualified as L @@ -102,6 +102,7 @@ import Ledger.Tx ( import Ledger.Tx.CardanoAPI ( CardanoBuildTx (CardanoBuildTx), fromCardanoTxIn, + fromPlutusIndex, toCardanoTxIn, toCardanoTxOutValue, ) @@ -118,6 +119,7 @@ import Cardano.Node.Emulator.Internal.Node.Chain qualified as E ( emptyChainState, getCurrentSlot, index, + ledgerState, queueTx, ) import Cardano.Node.Emulator.Internal.Node.Fee qualified as E ( @@ -125,22 +127,24 @@ import Cardano.Node.Emulator.Internal.Node.Fee qualified as E ( utxoProviderFromWalletOutputs, ) import Cardano.Node.Emulator.Internal.Node.Params qualified as E (Params) -import Cardano.Node.Emulator.Internal.Node.Validation (unsafeMakeValid) +import Cardano.Node.Emulator.Internal.Node.Validation qualified as E (setUtxo, unsafeMakeValid) import Cardano.Node.Emulator.LogMessages ( EmulatorMsg (ChainEvent, GenericMsg, TxBalanceMsg), TxBalanceMsg (BalancingUnbalancedTx, FinishedBalancing, SigningTx, SubmittingTx), ) -emptyEmulatorState :: EmulatorState -emptyEmulatorState = EmulatorState E.emptyChainState mempty mempty +emptyEmulatorState :: E.Params -> EmulatorState +emptyEmulatorState params = EmulatorState (E.emptyChainState params) mempty mempty -emptyEmulatorStateWithInitialDist :: Map CardanoAddress C.Value -> EmulatorState -emptyEmulatorStateWithInitialDist initialDist = +emptyEmulatorStateWithInitialDist :: E.Params -> Map CardanoAddress C.Value -> EmulatorState +emptyEmulatorStateWithInitialDist params initialDist = let tx = Index.createGenesisTransaction initialDist - vtx = unsafeMakeValid tx - in emptyEmulatorState + vtx = E.unsafeMakeValid tx + index = Index.insertBlock [vtx] mempty + in emptyEmulatorState params & esChainState . E.chainNewestFirst %~ ([vtx] :) - & esChainState . E.index %~ Index.insertBlock [vtx] + & esChainState . E.index .~ index + & esChainState . E.ledgerState %~ E.setUtxo params (fromPlutusIndex index) & esAddressMap %~ AM.updateAllAddresses vtx & esDatumMap <>~ getCardanoTxData tx diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Generators.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Generators.hs index 8ba1a99..dfe6cd7 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Generators.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Generators.hs @@ -68,7 +68,7 @@ import Cardano.Crypto.Wallet qualified as Crypto import Cardano.Node.Emulator.Internal.Node.Params (Params (pSlotConfig), testnet) import Cardano.Node.Emulator.Internal.Node.TimeSlot (SlotConfig) import Cardano.Node.Emulator.Internal.Node.TimeSlot qualified as TimeSlot -import Cardano.Node.Emulator.Internal.Node.Validation (validateCardanoTx) +import Cardano.Node.Emulator.Internal.Node.Validation (initialState, setUtxo, validateCardanoTx) import Control.Monad (guard, replicateM) import Data.Bifunctor (Bifunctor (first)) import Data.ByteString qualified as BS @@ -343,8 +343,9 @@ pubKeyTxOut v pk sk = do validateMockchain :: Mockchain -> CardanoTx -> Maybe Ledger.ValidationErrorInPhase validateMockchain (Mockchain _ utxo params) tx = result where - cUtxoIndex = C.UTxO $ Tx.toCtxUTxOTxOut <$> utxo - result = case validateCardanoTx params 1 cUtxoIndex tx of + cUtxoIndex = C.fromPlutusIndex $ C.UTxO $ Tx.toCtxUTxOTxOut <$> utxo + ledgerState = setUtxo params cUtxoIndex (initialState params) + result = case snd $ validateCardanoTx params 1 ledgerState tx of FailPhase1 _ err -> Just (Phase1, err) FailPhase2 _ err _ -> Just (Phase2, err) _ -> Nothing diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Chain.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Chain.hs index 9487ca9..7606383 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Chain.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Chain.hs @@ -28,7 +28,7 @@ import Control.Monad.State qualified as S import Data.Aeson (FromJSON, ToJSON) import Data.Foldable (traverse_) import Data.List ((\\)) -import Data.Maybe (mapMaybe) +import Data.Maybe (fromMaybe, mapMaybe) import Data.Traversable (for) import GHC.Generics (Generic) import Ledger ( @@ -77,17 +77,18 @@ data ChainState = ChainState -- ^ The current slot number , _coverageData :: CoverageData -- ^ coverage data of validation scripts + , _ledgerState :: Validation.EmulatedLedgerState } deriving (Show, Generic) makeLenses ''ChainState -emptyChainState :: ChainState -emptyChainState = ChainState [] [] mempty 0 mempty +emptyChainState :: Params -> ChainState +emptyChainState params = ChainState [] [] mempty 0 mempty (Validation.initialState params) -fromBlockchain :: Blockchain -> ChainState -fromBlockchain bc = - emptyChainState +fromBlockchain :: Params -> Blockchain -> ChainState +fromBlockchain params bc = + emptyChainState params & chainNewestFirst .~ bc & index .~ Index.initialise bc @@ -125,12 +126,14 @@ handleControlChain params = \case pool <- gets $ view txPool slot <- gets $ view chainCurrentSlot idx <- gets $ view index + ls <- gets $ view ledgerState - let ValidatedBlock block events idx' = - validateBlock params slot idx pool + let ValidatedBlock block events idx' ls' = + validateBlock params slot idx ls pool modify $ txPool .~ [] modify $ index .~ idx' + modify $ ledgerState .~ ls' modify $ addBlock block modify $ coverageData <>~ foldMap getChainEventCoverageData events @@ -163,19 +166,25 @@ data ValidatedBlock = ValidatedBlock -- ^ Transaction validation events for the transactions in this block. , vlbIndex :: !Index.UtxoIndex -- ^ The updated UTxO index after processing the block + , vlbLedgerState :: !Validation.EmulatedLedgerState } -data ValidationCtx = ValidationCtx {vctxIndex :: !Index.UtxoIndex, vctxParams :: !Params} +data ValidationCtx = ValidationCtx + { vctxIndex :: !Index.UtxoIndex + , vctxParams :: !Params + , vctxLedgerState :: Validation.EmulatedLedgerState + } {- | Validate a block given the current slot and UTxO index, returning the valid transactions, success/failure events and the updated UTxO set. -} -validateBlock :: Params -> Slot -> Index.UtxoIndex -> TxPool -> ValidatedBlock -validateBlock params slot@(Slot s) idx txns = +validateBlock + :: Params -> Slot -> Index.UtxoIndex -> Validation.EmulatedLedgerState -> TxPool -> ValidatedBlock +validateBlock params slot@(Slot s) idx ls txns = let -- Validate transactions, updating the UTXO index each time - (results, ValidationCtx idx' _) = - flip S.runState (ValidationCtx idx params) $ for txns $ validateEm slot + (results, ValidationCtx idx' _ ls') = + flip S.runState (ValidationCtx idx params ls) $ for txns $ validateEm slot -- The new block contains all transaction that were validated -- successfully @@ -186,7 +195,7 @@ validateBlock params slot@(Slot s) idx txns = nextSlot = Slot (s + 1) events = (TxnValidation <$> results) ++ [SlotAdd nextSlot] in - ValidatedBlock block events idx' + ValidatedBlock block events idx' ls' -- | Validate a transaction in the current emulator state. validateEm @@ -195,14 +204,14 @@ validateEm -> CardanoTx -> m Index.ValidationResult validateEm h txn = do - ctx@(ValidationCtx idx params) <- S.get + ctx@(ValidationCtx idx params ls) <- S.get let - res = Validation.validateCardanoTx params h idx txn + (ls', res) = Validation.validateCardanoTx params h ls txn idx' = case res of Index.FailPhase1{} -> idx Index.FailPhase2{} -> Index.insertCollateral txn idx Index.Success{} -> Index.insert txn idx - _ <- S.put ctx{vctxIndex = idx'} + _ <- S.put ctx{vctxIndex = idx', vctxLedgerState = fromMaybe ls ls'} pure res -- | Adds a block to ChainState, without validation. diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs index 0596f00..bda8f2b 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Fee.hs @@ -36,7 +36,7 @@ import Cardano.Node.Emulator.Internal.Node.Params ( import Cardano.Node.Emulator.Internal.Node.Validation ( CardanoLedgerError, Coin (unCoin), - UTxO (UTxO), + UTxO, createAndValidateTransactionBody, getTxExUnitsWithLogs, ) @@ -148,7 +148,7 @@ makeAutoBalancedTransaction params utxo (CardanoBuildTx txBodyContent) cChangeAd globals = emulatorGlobals params ei = C.Api.LedgerEpochInfo $ epochInfo globals ss = systemStart globals - utxo' = fromLedgerUTxO utxo + utxo' = CardanoAPI.toPlutusIndex utxo balance extraOuts = C.Api.makeTransactionBodyAutoBalance C.Api.shelleyBasedEra @@ -464,16 +464,6 @@ takeUntil p (x : xs) | p x = [x] | otherwise = x : takeUntil p xs -fromLedgerUTxO - :: UTxO EmulatorEra - -> C.Api.UTxO C.Api.BabbageEra -fromLedgerUTxO (UTxO utxo) = - C.Api.UTxO - . Map.fromList - . map (bimap C.Api.fromShelleyTxIn (C.Api.fromShelleyTxOut C.Api.ShelleyBasedEraBabbage)) - . Map.toList - $ utxo - evaluateTransactionFee :: Params -> C.Api.TxBody C.Api.BabbageEra diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Validation.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Validation.hs index 924ab7c..34dea50 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Validation.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Internal/Node/Validation.hs @@ -11,7 +11,6 @@ -- | Transaction validation using 'cardano-ledger-specs' module Cardano.Node.Emulator.Internal.Node.Validation ( - EmulatorBlock, EmulatedLedgerState (..), Coin (..), SlotNo (..), @@ -26,7 +25,6 @@ module Cardano.Node.Emulator.Internal.Node.Validation ( validateAndApplyTx, -- * Modifying the state - makeBlock, setSlot, nextSlot, UTxO (..), @@ -35,8 +33,6 @@ module Cardano.Node.Emulator.Internal.Node.Validation ( -- * Lenses ledgerEnv, memPoolState, - currentBlock, - previousBlocks, -- * Etc. emulatorGlobals, @@ -85,9 +81,9 @@ import Cardano.Node.Emulator.Internal.Node.Params ( ledgerProtocolParameters, ) import Cardano.Slotting.Slot (SlotNo (SlotNo)) -import Control.Lens (makeLenses, over, view, (&), (.~), (^.)) +import Control.Lens (makeLenses, over, view, (&), (.~)) import Control.Monad.Except (MonadError (throwError)) -import Data.Bifunctor (Bifunctor (first)) +import Data.Bifunctor (Bifunctor (first), bimap) import Data.Default (def) import Data.Map qualified as Map import Data.Text qualified as Text @@ -102,8 +98,6 @@ import PlutusLedgerApi.V1.Scripts qualified as P type CardanoLedgerError = Either P.ValidationErrorInPhase P.ToCardanoError -type EmulatorBlock = [Validated (Core.Tx EmulatorEra)] - {- Note [Emulated ledger] In the real cardano node, there two types of validation: Transaction validation @@ -145,8 +139,6 @@ validating machinery. data EmulatedLedgerState = EmulatedLedgerState { _ledgerEnv :: !(MempoolEnv EmulatorEra) , _memPoolState :: !(LedgerState EmulatorEra) - , _currentBlock :: !EmulatorBlock - , _previousBlocks :: ![EmulatorBlock] } deriving (Show) @@ -171,14 +163,9 @@ setUtxo params utxo els@EmulatedLedgerState{_memPoolState} = els{_memPoolState = { lsUTxOState = smartUTxOState (emulatorPParams params) utxo (Coin 0) (Coin 0) def (Coin 0) } -{- | Make a block with all transactions that have been validated in the -current block, add the block to the blockchain, and empty the current block. --} -makeBlock :: EmulatedLedgerState -> EmulatedLedgerState -makeBlock state = - state - & currentBlock .~ [] - & over previousBlocks ((:) (reverse $ state ^. currentBlock)) +-- | Get the utxo +getUtxo :: EmulatedLedgerState -> UTxO EmulatorEra +getUtxo = utxosUtxo . lsUTxOState . view memPoolState -- | Initial ledger state for a distribution initialState :: Params -> EmulatedLedgerState @@ -196,8 +183,6 @@ initialState params = { lsUTxOState = smartUTxOState (emulatorPParams params) (UTxO mempty) (Coin 0) (Coin 0) def (Coin 0) , lsCertState = def } - , _currentBlock = [] - , _previousBlocks = [] } utxoEnv :: Params -> SlotNo -> C.Ledger.UtxoEnv EmulatorEra @@ -210,33 +195,39 @@ applyTx -> Either (ApplyTxError EmulatorEra) (EmulatedLedgerState, Validated (Core.Tx EmulatorEra)) applyTx params oldState@EmulatedLedgerState{_ledgerEnv, _memPoolState} tx = do (newMempool, vtx) <- C.Ledger.applyTx (emulatorGlobals params) _ledgerEnv _memPoolState tx - return (oldState & memPoolState .~ newMempool & over currentBlock ((:) vtx), vtx) + return (oldState & memPoolState .~ newMempool, vtx) -hasValidationErrors :: Params -> SlotNo -> P.UtxoIndex -> C.Tx C.BabbageEra -> P.ValidationResult -hasValidationErrors params slotNo utxoIndex tx = +hasValidationErrors + :: Params + -> SlotNo + -> EmulatedLedgerState + -> C.Tx C.BabbageEra + -> (Maybe EmulatedLedgerState, P.ValidationResult) +hasValidationErrors params slotNo ls tx = case res of - Left err -> P.FailPhase1 (CardanoEmulatorEraTx tx) err - Right vtx -> case getTxExUnitsWithLogs params utxo tx of - Left (P.Phase1, err) -> P.FailPhase1 (CardanoEmulatorEraTx tx) err - Left (P.Phase2, err) -> P.FailPhase2 vtx err $ getCollateral utxoIndex (CardanoEmulatorEraTx tx) - Right report -> P.Success vtx report + Left err -> (Nothing, P.FailPhase1 (CardanoEmulatorEraTx tx) err) + Right (ls', vtx) -> case getTxExUnitsWithLogs params utxo tx of + Left (P.Phase1, err) -> (Just ls', P.FailPhase1 (CardanoEmulatorEraTx tx) err) + Left (P.Phase2, err) -> + (Just ls', P.FailPhase2 vtx err $ getCollateral (P.toPlutusIndex utxo) (CardanoEmulatorEraTx tx)) + Right report -> (Just ls', P.Success vtx report) where - utxo = P.fromPlutusIndex utxoIndex + utxo = getUtxo ls res = - OnChainTx - <$> first - (P.CardanoLedgerValidationError . Text.pack . show) - (validateAndApplyTx params slotNo utxo tx) + bimap + (P.CardanoLedgerValidationError . Text.pack . show) + (fmap OnChainTx) + (validateAndApplyTx params slotNo ls tx) validateAndApplyTx :: Params -> SlotNo - -> UTxO EmulatorEra + -> EmulatedLedgerState -> C.Tx C.BabbageEra - -> Either (ApplyTxError EmulatorEra) (Validated (Core.Tx EmulatorEra)) -validateAndApplyTx params slotNo utxo (C.ShelleyTx _ tx) = res + -> Either (ApplyTxError EmulatorEra) (EmulatedLedgerState, Validated (Core.Tx EmulatorEra)) +validateAndApplyTx params slotNo ledgerState (C.ShelleyTx _ tx) = res where - state = setSlot slotNo $ setUtxo params utxo $ initialState params + state = setSlot slotNo ledgerState res = do vtx <- constructValidated @@ -244,7 +235,7 @@ validateAndApplyTx params slotNo utxo (C.ShelleyTx _ tx) = res (utxoEnv params slotNo) (lsUTxOState (_memPoolState state)) tx - snd <$> applyTx params state vtx + applyTx params state vtx {- | Construct a 'AlonzoTx' from a 'Core.Tx' by setting the `IsValid` flag. @@ -296,13 +287,13 @@ unsafeMakeValid (CardanoEmulatorEraTx (C.Tx txBody _)) = validateCardanoTx :: Params -> Slot - -> P.UtxoIndex + -> EmulatedLedgerState -> CardanoTx - -> P.ValidationResult -validateCardanoTx params slot utxo ctx@(CardanoEmulatorEraTx tx@(C.Tx (C.TxBody bodyContent) _)) = + -> (Maybe EmulatedLedgerState, P.ValidationResult) +validateCardanoTx params slot ls ctx@(CardanoEmulatorEraTx tx@(C.Tx (C.TxBody bodyContent) _)) = if map fst (C.txIns bodyContent) == [genesisTxIn] - then P.Success (unsafeMakeValid ctx) Map.empty - else hasValidationErrors params (fromIntegral slot) utxo tx + then (Just ls, P.Success (unsafeMakeValid ctx) Map.empty) + else hasValidationErrors params (fromIntegral slot) ls tx getTxExUnitsWithLogs :: Params -> UTxO EmulatorEra -> C.Tx C.BabbageEra -> Either P.ValidationErrorInPhase P.RedeemerReport diff --git a/cardano-node-emulator/src/Cardano/Node/Emulator/Test.hs b/cardano-node-emulator/src/Cardano/Node/Emulator/Test.hs index e94061f..d1d04e8 100644 --- a/cardano-node-emulator/src/Cardano/Node/Emulator/Test.hs +++ b/cardano-node-emulator/src/Cardano/Node/Emulator/Test.hs @@ -274,7 +274,7 @@ defaultOptions = Options defInitialDist def (\_ _ -> Nothing) balanceChangePredi runEmulatorM :: Options state -> EmulatorM a -> (Either EmulatorError a, (EmulatorState, EmulatorLogs)) runEmulatorM Options{..} m = - case runRWS (runExceptT m) params (emptyEmulatorStateWithInitialDist initialDistribution) of + case runRWS (runExceptT m) params (emptyEmulatorStateWithInitialDist params initialDistribution) of (r, s, l) -> (r, (s, l)) checkPredicate diff --git a/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator.hs b/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator.hs index 6b14dca..d826189 100644 --- a/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator.hs +++ b/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator.hs @@ -50,8 +50,8 @@ main dist = Map.fromList $ zip (getAddress <$> nscInitialTxWallets) (repeat (CardanoAPI.adaValueOf 1_000_000_000)) - initialState <- initialChainState dist params <- liftIO $ Params.fromNodeServerConfig nodeServerConfig + initialState <- initialChainState params dist let appState = AppState initialState mempty params serverHandler <- liftIO $ diff --git a/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Server.hs b/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Server.hs index 4bcefb6..8872f7f 100644 --- a/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Server.hs +++ b/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Server.hs @@ -35,7 +35,7 @@ import Control.Concurrent.STM ( writeTQueue, ) import Control.Exception (throwIO) -import Control.Lens (over, (^.)) +import Control.Lens (over, (.~), (^.)) import Control.Monad (forever, void) import Control.Monad.Freer (send) import Control.Monad.Freer.Extras.Log (LogMsg (LMessage)) @@ -57,7 +57,6 @@ import Data.Void (Void) import Cardano.BM.Data.Trace (Trace) import Cardano.Slotting.Slot (SlotNo (..), WithOrigin (..)) import Ledger (Block, CardanoTx (..), Slot (..)) -import Ledger.Tx.CardanoAPI (fromPlutusIndex) import Ouroboros.Consensus.Cardano.Block (CardanoBlock) import Ouroboros.Consensus.HardFork.Combinator qualified as Consensus import Ouroboros.Consensus.Ledger.Query (Query (..)) @@ -618,24 +617,28 @@ submitTx submitTx state tx = case C.fromConsensusGenTx tx of C.TxInMode C.ShelleyBasedEraBabbage shelleyTx -> do AppState - (SocketEmulatorState (E.EmulatorState (Chain.ChainState _ _ index slot _) _ _) _ _) + (SocketEmulatorState (E.EmulatorState (Chain.ChainState _ _ _ slot _ ls) _ _) _ _) _ params <- readMVar state - case Validation.validateAndApplyTx params (fromIntegral slot) (fromPlutusIndex index) shelleyTx of + case Validation.validateAndApplyTx params (fromIntegral slot) ls shelleyTx of Left err -> pure $ TxSubmission.SubmitFail ( Consensus.HardForkApplyTxErrFromEra (Consensus.OneEraApplyTxErr (S (S (S (S (S (Z (WrapApplyTxErr err)))))))) ) - Right _ -> do + Right (ls', _) -> do let ctx = CardanoEmulatorEraTx shelleyTx modifyMVar_ state - (pure . over (socketEmulatorState . emulatorState . E.esChainState) (Chain.addTxToPool ctx)) + ( pure + . over + (socketEmulatorState . emulatorState . E.esChainState) + (Chain.addTxToPool ctx . (Chain.ledgerState .~ ls')) + ) pure TxSubmission.SubmitSuccess - _ -> pure $ TxSubmission.SubmitSuccess -- should be SubmitFail HardForkApplyTxErrWrongEra, but the Mismatch type is complicated + _ -> pure TxSubmission.SubmitSuccess -- should be SubmitFail HardForkApplyTxErrWrongEra, but the Mismatch type is complicated stateQueryServer :: (block ~ CardanoBlock StandardCrypto) diff --git a/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Types.hs b/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Types.hs index 2f47310..858f11d 100644 --- a/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Types.hs +++ b/cardano-node-socket-emulator/src/Cardano/Node/Socket/Emulator/Types.hs @@ -220,8 +220,8 @@ fromEmulatorChainState state = do } -- | 'ChainState' with initial values -initialChainState :: (MonadIO m) => Map.Map CardanoAddress Value -> m SocketEmulatorState -initialChainState = fromEmulatorChainState . emptyEmulatorStateWithInitialDist +initialChainState :: (MonadIO m) => Params -> Map.Map CardanoAddress Value -> m SocketEmulatorState +initialChainState params = fromEmulatorChainState . emptyEmulatorStateWithInitialDist params getChannel :: (MonadIO m) => MVar AppState -> m (TChan Block) getChannel mv = liftIO (readMVar mv) <&> view (socketEmulatorState . channel) diff --git a/plutus-ledger/src/Ledger/Tx/CardanoAPI.hs b/plutus-ledger/src/Ledger/Tx/CardanoAPI.hs index b37a036..8ac0387 100644 --- a/plutus-ledger/src/Ledger/Tx/CardanoAPI.hs +++ b/plutus-ledger/src/Ledger/Tx/CardanoAPI.hs @@ -27,6 +27,7 @@ module Ledger.Tx.CardanoAPI ( getRequiredSigners, -- * Conversion from Plutus types + toPlutusIndex, fromPlutusIndex, fromPlutusTxOut, fromPlutusTxOutRef, @@ -40,6 +41,8 @@ import Cardano.Ledger.Babbage.TxBody (BabbageTxBody (BabbageTxBody, btbReqSigner import Cardano.Ledger.BaseTypes (mkTxIxPartial) import Cardano.Ledger.Crypto (StandardCrypto) import Cardano.Ledger.Shelley.API qualified as C.Ledger +import Data.Bifunctor (bimap) +import Data.Map qualified as Map import Ledger.Address qualified as P import Ledger.Index.Internal qualified as P import Ledger.Scripts qualified as P @@ -130,6 +133,16 @@ getRequiredSigners (C.ShelleyTx _ (AlonzoTx BabbageTxBody{btbReqSignerHashes = r (pure . P.PaymentPubKeyHash . P.toPlutusPubKeyHash . C.PaymentKeyHash . C.Ledger.coerceKeyRole) rsq +toPlutusIndex + :: C.Ledger.UTxO EmulatorEra + -> P.UtxoIndex +toPlutusIndex (C.Ledger.UTxO utxo) = + C.UTxO + . Map.fromList + . map (bimap C.fromShelleyTxIn (C.fromShelleyTxOut C.ShelleyBasedEraBabbage)) + . Map.toList + $ utxo + fromPlutusIndex :: P.UtxoIndex -> C.Ledger.UTxO (Babbage.BabbageEra StandardCrypto) fromPlutusIndex = C.toLedgerUTxO C.ShelleyBasedEraBabbage