diff --git a/README.md b/README.md index ce669d120bb..e6c171b9ff1 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ See **Installation Instructions** for each available [release](https://github.co > > | cardano-wallet | cardano-node (compatible versions) | SMASH (compatible versions) > | --- | --- | --- -> | `master` branch | [1.26.2](https://github.com/input-output-hk/cardano-node/releases/tag/1.26.2) | [1.4.0](https://github.com/input-output-hk/smash/releases/tag/1.4.0) +> | `master` branch | [1.27.0](https://github.com/input-output-hk/cardano-node/releases/tag/1.27.0) | [1.4.0](https://github.com/input-output-hk/smash/releases/tag/1.4.0) > | [v2021-05-26](https://github.com/input-output-hk/cardano-wallet/releases/tag/v2021-05-26) | [1.26.2](https://github.com/input-output-hk/cardano-node/releases/tag/1.26.2) | [1.4.0](https://github.com/input-output-hk/smash/releases/tag/1.4.0) > | [v2021-04-28](https://github.com/input-output-hk/cardano-wallet/releases/tag/v2021-04-28) | [1.26.2](https://github.com/input-output-hk/cardano-node/releases/tag/1.26.2) | [1.4.0](https://github.com/input-output-hk/smash/releases/tag/1.4.0) > | [v2021-04-08](https://github.com/input-output-hk/cardano-wallet/releases/tag/v2021-04-08) | [1.25.1](https://github.com/input-output-hk/cardano-node/releases/tag/1.25.1) | [1.3.0](https://github.com/input-output-hk/smash/releases/tag/1.3.0) diff --git a/cabal.project b/cabal.project index 50bd09a44b0..9358989592b 100644 --- a/cabal.project +++ b/cabal.project @@ -28,12 +28,13 @@ source-repository-package source-repository-package type: git location: https://github.com/input-output-hk/cardano-base - tag: 101e7752cf4b23fd0b411736f523b8f6c43f6bc2 + tag: 47db5b818ca4fa051f2e44cdf5e7c5c18c1fb0bf subdir: binary binary/test cardano-crypto-class cardano-crypto-praos cardano-crypto-tests + strict-containers slotting source-repository-package @@ -44,7 +45,7 @@ source-repository-package source-repository-package type: git location: https://github.com/input-output-hk/cardano-ledger-specs - tag: 2e0e7b625492e5e0182464247f4c26d6949ab6f7 + tag: e8f19bcc9c8f405131cb95ca6ada26b2b4eac638 subdir: byron/chain/executable-spec byron/crypto byron/crypto/test @@ -57,23 +58,21 @@ source-repository-package shelley/chain-and-ledger/dependencies/non-integer shelley/chain-and-ledger/executable-spec shelley/chain-and-ledger/shelley-spec-ledger-test + cardano-ledger-core source-repository-package type: git location: https://github.com/input-output-hk/cardano-node - tag: 3531289c9f79eab7ac5d3272ce6e6821504fec4c + tag: 8fe46140a52810b6ca456be01d652ca08fe730bf subdir: cardano-api - cardano-api/test cardano-cli cardano-config cardano-node - cardano-node-chairman - hedgehog-extras source-repository-package type: git location: https://github.com/input-output-hk/cardano-prelude - tag: ee4e7b547a991876e6b05ba542f4e62909f4a571 + tag: bb4ed71ba8e587f672d06edf9d2e376f4b055555 subdir: cardano-prelude cardano-prelude-test @@ -90,7 +89,7 @@ source-repository-package source-repository-package type: git location: https://github.com/input-output-hk/iohk-monitoring-framework - tag: f6ab0631275d04dff1b990283bbf9671093e7505 + tag: 808724ff8a19a33d0ed06f9ef59fbd900b08553c subdir: contra-tracer iohk-monitoring plugins/backend-aggregation @@ -103,7 +102,7 @@ source-repository-package source-repository-package type: git location: https://github.com/input-output-hk/ouroboros-network - tag: 7f90c8c59ffc7d61a4e161e886d8962a9c26787a + tag: 9b279c7548ee549e1ed755cd1acb69b6e69d0c7b subdir: cardano-client io-sim io-sim-classes @@ -115,6 +114,7 @@ source-repository-package ouroboros-consensus-mock ouroboros-consensus-shelley ouroboros-network + ouroboros-network-testing ouroboros-network-framework typed-protocols typed-protocols-examples diff --git a/lib/core/src/Cardano/Wallet/Primitive/CoinSelection/MA/RoundRobin.hs b/lib/core/src/Cardano/Wallet/Primitive/CoinSelection/MA/RoundRobin.hs index 256e7f02684..e23d35e98b4 100644 --- a/lib/core/src/Cardano/Wallet/Primitive/CoinSelection/MA/RoundRobin.hs +++ b/lib/core/src/Cardano/Wallet/Primitive/CoinSelection/MA/RoundRobin.hs @@ -62,7 +62,9 @@ module Cardano.Wallet.Primitive.CoinSelection.MA.RoundRobin , makeChangeForCoin , makeChangeForUserSpecifiedAsset , makeChangeForNonUserSpecifiedAsset + , makeChangeForNonUserSpecifiedAssets , assignCoinsToChangeMaps + , collateNonUserSpecifiedAssetQuantities -- * Splitting bundles , splitBundleIfAssetCountExcessive @@ -1083,11 +1085,8 @@ makeChange criteria -- Change for non-user-specified assets: assets that were not present -- in the original set of user-specified outputs ('outputsToCover'). changeForNonUserSpecifiedAssets :: NonEmpty TokenMap - changeForNonUserSpecifiedAssets = F.foldr - (NE.zipWith (<>) - . makeChangeForNonUserSpecifiedAsset outputMaps) - (TokenMap.empty <$ outputMaps) - nonUserSpecifiedAssets + changeForNonUserSpecifiedAssets = makeChangeForNonUserSpecifiedAssets + outputMaps nonUserSpecifiedAssetQuantities totalInputValueInsufficient = error "makeChange: not (totalOutputValue <= totalInputValue)" @@ -1136,15 +1135,34 @@ makeChange criteria -- -- Each asset is paired with the complete list of quantities of that asset -- present in the selected inputs. - nonUserSpecifiedAssets :: [(AssetId, NonEmpty TokenQuantity)] - nonUserSpecifiedAssets = Map.toList $ - F.foldr discardUserSpecifiedAssets mempty inputBundles + nonUserSpecifiedAssetQuantities :: Map AssetId (NonEmpty TokenQuantity) + nonUserSpecifiedAssetQuantities = + collateNonUserSpecifiedAssetQuantities + (view #tokens <$> inputBundles) userSpecifiedAssetIds +-- | Generates a map of all non-user-specified assets and their quantities. +-- +-- Each key in the resulting map corresponds to an asset that was NOT included +-- in the original set of user-specified outputs, but that was nevertheless +-- selected during the selection process. +-- +-- The value associated with each key corresponds to the complete list of all +-- discrete non-zero quantities of that asset present in the selected inputs. +-- +collateNonUserSpecifiedAssetQuantities + :: NonEmpty TokenMap + -- ^ Token maps of all selected inputs. + -> Set AssetId + -- ^ Set of all assets in user-specified outputs. + -> Map AssetId (NonEmpty TokenQuantity) +collateNonUserSpecifiedAssetQuantities inputMaps userSpecifiedAssetIds = + F.foldr discardUserSpecifiedAssets mempty inputMaps + where discardUserSpecifiedAssets - :: TokenBundle + :: TokenMap -> Map AssetId (NonEmpty TokenQuantity) -> Map AssetId (NonEmpty TokenQuantity) - discardUserSpecifiedAssets (TokenBundle _ tokens) m = + discardUserSpecifiedAssets tokens m = foldr (\(k, v) -> Map.insertWith (<>) k (v :| [])) m filtered where filtered = filter @@ -1309,15 +1327,34 @@ makeChangeForUserSpecifiedAsset targets (asset, excess) = -- with the `leq` function. -- makeChangeForNonUserSpecifiedAsset - :: NonEmpty TokenMap - -- ^ A list of weights for the distribution. The list is only used for - -- its number of elements. + :: NonEmpty a + -- ^ Determines the number of change maps to create. -> (AssetId, NonEmpty TokenQuantity) -- ^ An asset quantity to distribute. -> NonEmpty TokenMap + -- ^ The resultant change maps. makeChangeForNonUserSpecifiedAsset n (asset, quantities) = TokenMap.singleton asset <$> padCoalesce quantities n +-- | Constructs change outputs for all non-user-specified assets: assets that +-- were not present in the original set of outputs. +-- +-- The resultant list is sorted into ascending order when maps are compared +-- with the `leq` function. +-- +makeChangeForNonUserSpecifiedAssets + :: NonEmpty a + -- ^ Determines the number of change maps to create. + -> Map AssetId (NonEmpty TokenQuantity) + -- ^ A map of asset quantities to distribute. + -> NonEmpty TokenMap + -- ^ The resultant change maps. +makeChangeForNonUserSpecifiedAssets n nonUserSpecifiedAssetQuantities = + F.foldr + (NE.zipWith (<>) . makeChangeForNonUserSpecifiedAsset n) + (TokenMap.empty <$ n) + (Map.toList nonUserSpecifiedAssetQuantities) + -- | Constructs a list of ada change outputs based on the given distribution. -- -- If the sum of weights in given distribution is equal to zero, this function diff --git a/lib/core/test/unit/Cardano/Wallet/Primitive/CoinSelection/MA/RoundRobinSpec.hs b/lib/core/test/unit/Cardano/Wallet/Primitive/CoinSelection/MA/RoundRobinSpec.hs index fcc58fd19d5..abd49a9e324 100644 --- a/lib/core/test/unit/Cardano/Wallet/Primitive/CoinSelection/MA/RoundRobinSpec.hs +++ b/lib/core/test/unit/Cardano/Wallet/Primitive/CoinSelection/MA/RoundRobinSpec.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE LambdaCase #-} @@ -39,11 +40,13 @@ import Cardano.Wallet.Primitive.CoinSelection.MA.RoundRobin , assignCoinsToChangeMaps , balanceMissing , coinSelectionLens + , collateNonUserSpecifiedAssetQuantities , fullBalance , groupByKey , makeChange , makeChangeForCoin , makeChangeForNonUserSpecifiedAsset + , makeChangeForNonUserSpecifiedAssets , makeChangeForUserSpecifiedAsset , mapMaybe , performSelection @@ -135,6 +138,8 @@ import Data.Word ( Word64, Word8 ) import Fmt ( blockListF, pretty ) +import GHC.Generics + ( Generic ) import Numeric.Natural ( Natural ) import Safe @@ -301,6 +306,13 @@ spec = describe "Cardano.Wallet.Primitive.CoinSelection.MA.RoundRobinSpec" $ unitTests "makeChange" unit_makeChange + parallel $ describe "Collating non-user specified asset quantities" $ do + + it "prop_collateNonUserSpecifiedAssetQuantities" $ + property prop_collateNonUserSpecifiedAssetQuantities + describe "unit_collateNonUserSpecifiedAssetQuantities" + unit_collateNonUserSpecifiedAssetQuantities + parallel $ describe "assignCoinsToChangeMaps" $ do unitTests "assignCoinsToChangeMaps" unit_assignCoinsToChangeMaps @@ -314,7 +326,7 @@ spec = describe "Cardano.Wallet.Primitive.CoinSelection.MA.RoundRobinSpec" $ unitTests "makeChangeForCoin" unit_makeChangeForCoin - parallel $ describe "Making change for non-user-specified assets" $ do + parallel $ describe "Making change for one non-user-specified asset" $ do it "prop_makeChangeForNonUserSpecifiedAsset_sum" $ property prop_makeChangeForNonUserSpecifiedAsset_sum @@ -325,6 +337,17 @@ spec = describe "Cardano.Wallet.Primitive.CoinSelection.MA.RoundRobinSpec" $ unitTests "makeChangeForNonUserSpecifiedAsset" unit_makeChangeForNonUserSpecifiedAsset + parallel $ describe "Making change for many non-user-specified assets" $ do + + it "prop_makeChangeForNonUserSpecifiedAssets_length" $ + property prop_makeChangeForNonUserSpecifiedAssets_length + it "prop_makeChangeForNonUserSpecifiedAssets_order" $ + property prop_makeChangeForNonUserSpecifiedAssets_order + it "prop_makeChangeForNonUserSpecifiedAssets_sum" $ + property prop_makeChangeForNonUserSpecifiedAssets_sum + describe "unit_makeChangeForNonUserSpecifiedAssets" + unit_makeChangeForNonUserSpecifiedAssets + parallel $ describe "Making change for user-specified assets" $ do it "prop_makeChangeForUserSpecifiedAsset_sum" $ @@ -1917,6 +1940,218 @@ unit_makeChange = assetC :: AssetId assetC = AssetId (UnsafeTokenPolicyId $ Hash "A") (UnsafeTokenName "2") +-------------------------------------------------------------------------------- +-- Collating non-user-specified asset quantities. +-------------------------------------------------------------------------------- + +prop_collateNonUserSpecifiedAssetQuantities + :: NonEmpty TokenMap + -- ^ Token maps of all selected inputs. + -> Set AssetId + -- ^ Set of all assets in user-specified outputs. + -> Property +prop_collateNonUserSpecifiedAssetQuantities inputMaps userSpecifiedAssetIds = + checkCoverage $ + cover 40 bothSetsNonEmpty + "both sets non-empty" $ + cover 1 nonUserSpecifiedAssetIdsEmpty + "non-user-specified asset id set is empty" $ + cover 1 userSpecifiedAssetIdsEmpty + "user-specified asset id set is empty" $ + cover 0.1 bothSetsEmpty + "both sets empty" $ + conjoin + [ actualResult === expectedResult + , property $ + userSpecifiedAssetIds `Set.disjoint` nonUserSpecifiedAssetIds + ] + where + actualResult :: Map AssetId (NonEmpty TokenQuantity) + actualResult = + collateNonUserSpecifiedAssetQuantities inputMaps userSpecifiedAssetIds + + expectedResult :: Map AssetId (NonEmpty TokenQuantity) + expectedResult = Map.fromSet getQuantitiesForAsset nonUserSpecifiedAssetIds + where + getQuantitiesForAsset assetId = NE.fromList $ NE.filter + (> TokenQuantity 0) + ((`TokenMap.getQuantity` assetId) <$> inputMaps) + + nonUserSpecifiedAssetIds :: Set AssetId + nonUserSpecifiedAssetIds = + TokenMap.getAssets (F.fold inputMaps) + `Set.difference` + userSpecifiedAssetIds + + bothSetsEmpty :: Bool + bothSetsEmpty = (&&) + (Set.null userSpecifiedAssetIds) + (Set.null nonUserSpecifiedAssetIds) + + bothSetsNonEmpty :: Bool + bothSetsNonEmpty = (&&) + (not $ Set.null userSpecifiedAssetIds) + (not $ Set.null nonUserSpecifiedAssetIds) + + nonUserSpecifiedAssetIdsEmpty :: Bool + nonUserSpecifiedAssetIdsEmpty = (&&) + (not $ Set.null userSpecifiedAssetIds) + (Set.null nonUserSpecifiedAssetIds) + + userSpecifiedAssetIdsEmpty :: Bool + userSpecifiedAssetIdsEmpty = (&&) + (Set.null userSpecifiedAssetIds) + (not $ Set.null nonUserSpecifiedAssetIds) + +data TestDataForCollateNonUserSpecifiedAssetQuantities = + TestDataForCollateNonUserSpecifiedAssetQuantities + { selectedInputMaps + :: NonEmpty TokenMap + , userSpecifiedAssetIds + :: Set AssetId + , expectedResult + :: Map AssetId (NonEmpty TokenQuantity) + } + deriving (Eq, Generic) + +unit_collateNonUserSpecifiedAssetQuantities :: Spec +unit_collateNonUserSpecifiedAssetQuantities = + forM_ (zip [1..] tests) $ \(testNumber :: Int, test) -> do + let title = "Unit test #" <> show testNumber + it title $ property $ + collateNonUserSpecifiedAssetQuantities + (view #selectedInputMaps test) + (view #userSpecifiedAssetIds test) + === + (view #expectedResult test) + where + mkSelectedInputMaps :: [[(ByteString, Natural)]] -> NonEmpty TokenMap + mkSelectedInputMaps + = NE.fromList + . fmap (TokenMap.fromFlatList . fmap (uncurry mockAssetQuantity)) + + mkUserSpecifiedAssetIds :: [ByteString] -> Set AssetId + mkUserSpecifiedAssetIds + = Set.fromList . fmap mockAsset + + mkExpectedResult + :: [(ByteString, [Natural])] + -> Map AssetId (NonEmpty TokenQuantity) + mkExpectedResult + = fmap NE.fromList + . Map.fromList + . fmap (bimap mockAsset (fmap TokenQuantity)) + + tests :: [TestDataForCollateNonUserSpecifiedAssetQuantities] + tests = [test1, test2, test3, test4, test5, test6, test7, test8] + + test1 = TestDataForCollateNonUserSpecifiedAssetQuantities + { selectedInputMaps = mkSelectedInputMaps + [ [("A", 1)] + , [("A", 2)] + , [("A", 3)] + ] + , userSpecifiedAssetIds = mkUserSpecifiedAssetIds + [] + , expectedResult = mkExpectedResult + [ ("A", [1, 2, 3]) ] + } + + test2 = TestDataForCollateNonUserSpecifiedAssetQuantities + { selectedInputMaps = mkSelectedInputMaps + [ [("A", 1)] + , [("A", 2)] + , [("A", 3)] + ] + , userSpecifiedAssetIds = mkUserSpecifiedAssetIds + [ "A" ] + , expectedResult = mkExpectedResult + [] + } + + test3 = TestDataForCollateNonUserSpecifiedAssetQuantities + { selectedInputMaps = mkSelectedInputMaps + [ [("A", 1), ("B", 3) ] + , [ ("B", 4), ("C", 5)] + , [("A", 2), ("C", 6)] + ] + , userSpecifiedAssetIds = mkUserSpecifiedAssetIds + [] + , expectedResult = mkExpectedResult + [ ("A", [1, 2]) + , ("B", [3, 4]) + , ("C", [5, 6]) + ] + } + + test4 = TestDataForCollateNonUserSpecifiedAssetQuantities + { selectedInputMaps = mkSelectedInputMaps + [ [("A", 1), ("B", 3) ] + , [ ("B", 4), ("C", 5)] + , [("A", 2), ("C", 6)] + ] + , userSpecifiedAssetIds = mkUserSpecifiedAssetIds + [ "A" ] + , expectedResult = mkExpectedResult + [ ("B", [3, 4]) + , ("C", [5, 6]) + ] + } + + test5 = TestDataForCollateNonUserSpecifiedAssetQuantities + { selectedInputMaps = mkSelectedInputMaps + [ [("A", 1), ("B", 3) ] + , [ ("B", 4), ("C", 5)] + , [("A", 2), ("C", 6)] + ] + , userSpecifiedAssetIds = mkUserSpecifiedAssetIds + [ "B" ] + , expectedResult = mkExpectedResult + [ ("A", [1, 2]) + , ("C", [5, 6]) + ] + } + + test6 = TestDataForCollateNonUserSpecifiedAssetQuantities + { selectedInputMaps = mkSelectedInputMaps + [ [("A", 1), ("B", 3) ] + , [ ("B", 4), ("C", 5)] + , [("A", 2), ("C", 6)] + ] + , userSpecifiedAssetIds = mkUserSpecifiedAssetIds + [ "C" ] + , expectedResult = mkExpectedResult + [ ("A", [1, 2]) + , ("B", [3, 4]) + ] + } + + test7 = TestDataForCollateNonUserSpecifiedAssetQuantities + { selectedInputMaps = mkSelectedInputMaps + [ [("A", 1) ] + , [ ("B", 3)] + , [("A", 2) ] + , [ ("B", 4)] + ] + , userSpecifiedAssetIds = mkUserSpecifiedAssetIds + [ "A" ] + , expectedResult = mkExpectedResult + [ ("B", [3, 4]) ] + } + + test8 = TestDataForCollateNonUserSpecifiedAssetQuantities + { selectedInputMaps = mkSelectedInputMaps + [ [("A", 1) ] + , [ ("B", 3)] + , [("A", 2) ] + , [ ("B", 4)] + ] + , userSpecifiedAssetIds = mkUserSpecifiedAssetIds + [ "B" ] + , expectedResult = mkExpectedResult + [ ("A", [1, 2]) ] + } + -------------------------------------------------------------------------------- -- Assigning coins to change maps -------------------------------------------------------------------------------- @@ -2027,59 +2262,64 @@ unit_makeChangeForCoin = ] -------------------------------------------------------------------------------- --- Making change for unknown assets +-- Making change for a single non-user-specified asset -------------------------------------------------------------------------------- prop_makeChangeForNonUserSpecifiedAsset_sum - :: NonEmpty TokenMap + :: NonEmpty () -> (AssetId, NonEmpty TokenQuantity) -> Property -prop_makeChangeForNonUserSpecifiedAsset_sum weights (asset, quantities) = +prop_makeChangeForNonUserSpecifiedAsset_sum n (asset, quantities) = F.fold quantities === F.fold ((`TokenMap.getQuantity` asset) <$> changes) where - changes = makeChangeForNonUserSpecifiedAsset weights (asset, quantities) + changes = makeChangeForNonUserSpecifiedAsset n (asset, quantities) prop_makeChangeForNonUserSpecifiedAsset_order - :: NonEmpty TokenMap + :: NonEmpty () -> (AssetId, NonEmpty TokenQuantity) -> Property -prop_makeChangeForNonUserSpecifiedAsset_order weights assetQuantities = +prop_makeChangeForNonUserSpecifiedAsset_order n assetQuantities = property $ inAscendingPartialOrder - $ makeChangeForNonUserSpecifiedAsset weights assetQuantities + $ makeChangeForNonUserSpecifiedAsset n assetQuantities prop_makeChangeForNonUserSpecifiedAsset_length - :: NonEmpty TokenMap + :: NonEmpty () -> (AssetId, NonEmpty TokenQuantity) -> Property -prop_makeChangeForNonUserSpecifiedAsset_length weights surplus = - F.length changes === F.length weights +prop_makeChangeForNonUserSpecifiedAsset_length n surplus = + F.length changes === F.length n where - changes = makeChangeForNonUserSpecifiedAsset weights surplus + changes = makeChangeForNonUserSpecifiedAsset n surplus unit_makeChangeForNonUserSpecifiedAsset :: [Expectation] unit_makeChangeForNonUserSpecifiedAsset = - [ makeChangeForNonUserSpecifiedAsset weights surplus `shouldBe` expectation - | (weights, surplus, expectation) <- matrix + [ makeChangeForNonUserSpecifiedAsset + (mkChangeMapCount changeMapCount) surplus + `shouldBe` expectation + | (changeMapCount, surplus, expectation) <- matrix ] where matrix = - [ ( m [(assetA, q 1)] :| [m [(assetB, q 1)]] - , (assetC, q <$> 1 :| [1]) - , m [(assetC, q 1)] :| [m [(assetC, q 1)]] + [ ( 2 + , (assetA, q <$> 1 :| [1]) + , m [(assetA, q 1)] :| [m [(assetA, q 1)]] ) - , ( m [(assetA, q 1)] :| [m [(assetB, q 1)]] - , (assetC, q <$> 1 :| [1, 1]) - , m [(assetC, q 1)] :| [m [(assetC, q 2)]] + , ( 2 + , (assetA, q <$> 1 :| [1, 1]) + , m [(assetA, q 1)] :| [m [(assetA, q 2)]] ) - , ( m [(assetA, q 1)] :| [m [(assetB, q 1)]] - , (assetC, q <$> 1 :| []) - , m [(assetC, q 0)] :| [m [(assetC, q 1)]] + , ( 2 + , (assetA, q <$> 1 :| []) + , m [(assetA, q 0)] :| [m [(assetA, q 1)]] ) ] + mkChangeMapCount :: Int -> NonEmpty () + mkChangeMapCount n = NE.fromList $ replicate n () + q :: Natural -> TokenQuantity q = TokenQuantity @@ -2089,11 +2329,250 @@ unit_makeChangeForNonUserSpecifiedAsset = assetA :: AssetId assetA = AssetId (UnsafeTokenPolicyId $ Hash "A") (UnsafeTokenName "1") - assetB :: AssetId - assetB = AssetId (UnsafeTokenPolicyId $ Hash "B") (UnsafeTokenName "") +-------------------------------------------------------------------------------- +-- Making change for multiple non-user-specified assets +-------------------------------------------------------------------------------- - assetC :: AssetId - assetC = AssetId (UnsafeTokenPolicyId $ Hash "A") (UnsafeTokenName "2") +checkCoverageFor_makeChangeForNonUserSpecifiedAssets + :: NonEmpty () + -> Map AssetId (NonEmpty TokenQuantity) + -> Property + -> Property +checkCoverageFor_makeChangeForNonUserSpecifiedAssets n assetQuantityMap prop = + checkCoverage $ + + -- Number of distinct assets: + cover 1 (Map.size assetQuantityMap == 1) + "number of distinct assets == 1" $ + cover 50 (Map.size assetQuantityMap >= 2) + "number of distinct assets >= 2" $ + cover 10 (Map.size assetQuantityMap >= 4) + "number of distinct assets >= 4" $ + + -- Number of change maps: + cover 1 (length n == 1) + "number of change maps == 1" $ + cover 50 (length n >= 2) + "number of change maps >= 2" $ + cover 10 (length n >= 4) + "number of change maps >= 4" $ + + -- Largest number of distinct token quantities for a given asset: + cover 1 (largestTokenQuantityCount == 1) + "largest number of token quantities == 1" $ + cover 50 (largestTokenQuantityCount >= 2) + "largest number of token quantities >= 2" $ + cover 10 (largestTokenQuantityCount >= 4) + "largest number of token quantities >= 4" + + prop + where + largestTokenQuantityCount :: Int + largestTokenQuantityCount = maximum (length <$> F.toList (assetQuantityMap)) + +prop_makeChangeForNonUserSpecifiedAssets_length + :: NonEmpty () + -> NonEmpty (AssetId, NonEmpty TokenQuantity) + -> Property +prop_makeChangeForNonUserSpecifiedAssets_length n assetQuantities = + checkCoverageFor_makeChangeForNonUserSpecifiedAssets n assetQuantityMap $ + lengthActual === lengthExpected + where + assetQuantityMap :: Map AssetId (NonEmpty TokenQuantity) + assetQuantityMap = Map.fromList (F.toList assetQuantities) + + lengthActual :: Int + lengthActual = length + (makeChangeForNonUserSpecifiedAssets n assetQuantityMap) + + lengthExpected :: Int + lengthExpected = length n + +prop_makeChangeForNonUserSpecifiedAssets_order + :: NonEmpty () + -> NonEmpty (AssetId, NonEmpty TokenQuantity) + -> Property +prop_makeChangeForNonUserSpecifiedAssets_order n assetQuantities = + checkCoverageFor_makeChangeForNonUserSpecifiedAssets n assetQuantityMap $ + property $ inAscendingPartialOrder result + where + assetQuantityMap :: Map AssetId (NonEmpty TokenQuantity) + assetQuantityMap = Map.fromList (F.toList assetQuantities) + + result :: NonEmpty TokenMap + result = makeChangeForNonUserSpecifiedAssets n assetQuantityMap + +prop_makeChangeForNonUserSpecifiedAssets_sum + :: NonEmpty () + -> NonEmpty (AssetId, NonEmpty TokenQuantity) + -> Property +prop_makeChangeForNonUserSpecifiedAssets_sum n assetQuantities = + checkCoverageFor_makeChangeForNonUserSpecifiedAssets n assetQuantityMap $ + sumActual === sumExpected + where + assetQuantityMap :: Map AssetId (NonEmpty TokenQuantity) + assetQuantityMap = Map.fromList (F.toList assetQuantities) + + sumActual :: TokenMap + sumActual = + F.fold (makeChangeForNonUserSpecifiedAssets n assetQuantityMap) + + sumExpected :: TokenMap + sumExpected = + TokenMap.fromFlatList $ Map.toList $ F.fold <$> assetQuantityMap + +data TestDataForMakeChangeForNonUserSpecifiedAssets = + TestDataForMakeChangeForNonUserSpecifiedAssets + { changeMapCount + :: NonEmpty () + , nonUserSpecifiedAssetQuantities + :: Map AssetId (NonEmpty TokenQuantity) + , expectedResult + :: NonEmpty TokenMap + } + deriving (Eq, Generic) + +unit_makeChangeForNonUserSpecifiedAssets :: Spec +unit_makeChangeForNonUserSpecifiedAssets = + forM_ (zip [1..] tests) $ \(testNumber :: Int, test) -> do + let title = "Unit test #" <> show testNumber + it title $ property $ + makeChangeForNonUserSpecifiedAssets + (view #changeMapCount test) + (view #nonUserSpecifiedAssetQuantities test) + === + (view #expectedResult test) + where + mkChangeMapCount :: Int -> NonEmpty () + mkChangeMapCount n = NE.fromList $ replicate n () + + mkNonUserSpecifiedAssetQuantities + :: [(ByteString, [Natural])] + -> Map AssetId (NonEmpty TokenQuantity) + mkNonUserSpecifiedAssetQuantities = + Map.fromList . fmap (bimap mockAsset (NE.fromList . fmap TokenQuantity)) + + mkExpectedResult + :: [[(ByteString, Natural)]] + -> NonEmpty TokenMap + mkExpectedResult + = NE.fromList + . fmap (TokenMap.fromFlatList . fmap (uncurry mockAssetQuantity)) + + tests :: [TestDataForMakeChangeForNonUserSpecifiedAssets] + tests = [test1, test2, test3, test4, test5, test6, test7, test8] + + test1 = TestDataForMakeChangeForNonUserSpecifiedAssets + { changeMapCount = mkChangeMapCount + 1 + , nonUserSpecifiedAssetQuantities = mkNonUserSpecifiedAssetQuantities + [ ("A", [1]) + , ("B", [3, 2, 1]) + ] + , expectedResult = mkExpectedResult + [ [("A", 1), ("B", 6)] ] + } + + test2 = TestDataForMakeChangeForNonUserSpecifiedAssets + { changeMapCount = mkChangeMapCount + 2 + , nonUserSpecifiedAssetQuantities = mkNonUserSpecifiedAssetQuantities + [ ("A", [1]) + , ("B", [3, 2, 1]) + ] + , expectedResult = mkExpectedResult + [ [ ("B", 3)] + , [("A", 1), ("B", 3)] + ] + } + + test3 = TestDataForMakeChangeForNonUserSpecifiedAssets + { changeMapCount = mkChangeMapCount + 3 + , nonUserSpecifiedAssetQuantities = mkNonUserSpecifiedAssetQuantities + [ ("A", [1]) + , ("B", [3, 2, 1]) + ] + , expectedResult = mkExpectedResult + [ [ ("B", 1)] + , [ ("B", 2)] + , [("A", 1), ("B", 3)] + ] + } + + test4 = TestDataForMakeChangeForNonUserSpecifiedAssets + { changeMapCount = mkChangeMapCount + 4 + , nonUserSpecifiedAssetQuantities = mkNonUserSpecifiedAssetQuantities + [ ("A", [1]) + , ("B", [3, 2, 1]) + ] + , expectedResult = mkExpectedResult + [ [ ] + , [ ("B", 1)] + , [ ("B", 2)] + , [("A", 1), ("B", 3)] + ] + } + + test5 = TestDataForMakeChangeForNonUserSpecifiedAssets + { changeMapCount = mkChangeMapCount + 1 + , nonUserSpecifiedAssetQuantities = mkNonUserSpecifiedAssetQuantities + [ ("A", [4, 1, 3, 2]) + , ("B", [9, 1, 8, 2, 7, 3, 6, 4, 5]) + ] + , expectedResult = mkExpectedResult + [ [("A", 10), ("B", 45)] ] + } + + test6 = TestDataForMakeChangeForNonUserSpecifiedAssets + { changeMapCount = mkChangeMapCount + 2 + , nonUserSpecifiedAssetQuantities = mkNonUserSpecifiedAssetQuantities + [ ("A", [4, 1, 3, 2]) + , ("B", [9, 1, 8, 2, 7, 3, 6, 4, 5]) + ] + , expectedResult = mkExpectedResult + [ [("A", 4), ("B", 18)] + , [("A", 6), ("B", 27)] + ] + } + + test7 = TestDataForMakeChangeForNonUserSpecifiedAssets + { changeMapCount = mkChangeMapCount + 4 + , nonUserSpecifiedAssetQuantities = mkNonUserSpecifiedAssetQuantities + [ ("A", [4, 1, 3, 2]) + , ("B", [9, 1, 8, 2, 7, 3, 6, 4, 5]) + ] + , expectedResult = mkExpectedResult + [ [("A", 1), ("B", 9)] + , [("A", 2), ("B", 9)] + , [("A", 3), ("B", 12)] + , [("A", 4), ("B", 15)] + ] + } + + test8 = TestDataForMakeChangeForNonUserSpecifiedAssets + { changeMapCount = mkChangeMapCount + 9 + , nonUserSpecifiedAssetQuantities = mkNonUserSpecifiedAssetQuantities + [ ("A", [4, 1, 3, 2]) + , ("B", [9, 1, 8, 2, 7, 3, 6, 4, 5]) + ] + , expectedResult = mkExpectedResult + [ [ ("B", 1)] + , [ ("B", 2)] + , [ ("B", 3)] + , [ ("B", 4)] + , [ ("B", 5)] + , [("A", 1), ("B", 6)] + , [("A", 2), ("B", 7)] + , [("A", 3), ("B", 8)] + , [("A", 4), ("B", 9)] + ] + } -------------------------------------------------------------------------------- -- Making change for known assets diff --git a/lib/shelley/cardano-wallet.cabal b/lib/shelley/cardano-wallet.cabal index b8f3ab2d844..06623d0ef54 100644 --- a/lib/shelley/cardano-wallet.cabal +++ b/lib/shelley/cardano-wallet.cabal @@ -44,6 +44,7 @@ library , cardano-crypto-wrapper , cardano-wallet-launcher , cardano-ledger-byron + , cardano-ledger-core , cardano-ledger-shelley-ma , cardano-slotting , cardano-wallet-cli @@ -206,9 +207,10 @@ test-suite unit , cardano-addresses , cardano-api , cardano-crypto-class + , cardano-ledger-core + , cardano-wallet , cardano-wallet-core , cardano-wallet-test-utils - , cardano-wallet , containers , contra-tracer , fmt diff --git a/lib/shelley/src/Cardano/Wallet/Shelley/Compatibility.hs b/lib/shelley/src/Cardano/Wallet/Shelley/Compatibility.hs index bd1d7a26a39..43cddbe0204 100644 --- a/lib/shelley/src/Cardano/Wallet/Shelley/Compatibility.hs +++ b/lib/shelley/src/Cardano/Wallet/Shelley/Compatibility.hs @@ -264,6 +264,8 @@ import Ouroboros.Network.Point ( WithOrigin (..) ) import Shelley.Spec.Ledger.BaseTypes ( interval0, strictMaybeToMaybe, urlToText ) +import Shelley.Spec.Ledger.Serialization + ( ToCBORGroup ) import Type.Reflection ( Typeable, typeRep ) @@ -278,6 +280,7 @@ import qualified Cardano.Chain.Common as Byron import qualified Cardano.Crypto.Hash as Crypto import qualified Cardano.Ledger.Core as SL.Core import qualified Cardano.Ledger.Crypto as SL +import qualified Cardano.Ledger.Era as Ledger.Era import qualified Cardano.Ledger.SafeHash as SafeHash import qualified Cardano.Ledger.Shelley as SL import qualified Cardano.Ledger.Shelley.Constraints as SL @@ -309,6 +312,7 @@ import qualified Ouroboros.Network.Block as O import qualified Ouroboros.Network.Point as Point import qualified Shelley.Spec.Ledger.Address as SL import qualified Shelley.Spec.Ledger.API as SL +import qualified Shelley.Spec.Ledger.API as SLAPI import qualified Shelley.Spec.Ledger.BaseTypes as SL import qualified Shelley.Spec.Ledger.BlockChain as SL import qualified Shelley.Spec.Ledger.Credential as SL @@ -433,7 +437,7 @@ toCardanoBlockHeader gp = \case toShelleyBlockHeader (W.getGenesisBlockHash gp) blk toShelleyBlockHeader - :: Era e + :: (Era e, ToCBORGroup (Ledger.Era.TxSeq e)) => W.Hash "Genesis" -> ShelleyBlock e -> W.BlockHeader @@ -453,7 +457,9 @@ toShelleyBlockHeader genesisHash blk = SL.bheaderPrev header } -getProducer :: Era e => ShelleyBlock e -> W.PoolId +getProducer + :: (Era e, ToCBORGroup (Ledger.Era.TxSeq e)) + => ShelleyBlock e -> W.PoolId getProducer (ShelleyBlock (SL.Block (SL.BHeader header _) _) _) = fromPoolKeyHash $ SL.hashKey (SL.bheaderVk header) @@ -597,7 +603,7 @@ fromMaxTxSize = Quantity . fromIntegral fromShelleyPParams - :: forall era. W.EraInfo Bound -> SL.PParams era -> W.ProtocolParameters + :: forall era. W.EraInfo Bound -> SLAPI.PParams era -> W.ProtocolParameters fromShelleyPParams eraInfo pp = W.ProtocolParameters { decentralizationLevel = decentralizationLevelFromPParams pp @@ -635,7 +641,7 @@ fromShelleyPParams eraInfo pp = W.ProtocolParameters -- convert it into a percentage. -- decentralizationLevelFromPParams - :: SL.PParams era + :: SLAPI.PParams era -> W.DecentralizationLevel decentralizationLevelFromPParams pp = W.DecentralizationLevel $ fromUnitInterval @@ -645,7 +651,7 @@ decentralizationLevelFromPParams pp = d = SL._d pp txParametersFromPParams - :: SL.PParams era + :: SLAPI.PParams era -> W.TxParameters txParametersFromPParams pp = W.TxParameters { getFeePolicy = W.LinearFee @@ -658,17 +664,17 @@ txParametersFromPParams pp = W.TxParameters naturalToDouble = fromIntegral desiredNumberOfStakePoolsFromPParams - :: SL.PParams era + :: SLAPI.PParams era -> Word16 desiredNumberOfStakePoolsFromPParams pp = fromIntegral (SL._nOpt pp) minimumUTxOvalueFromPParams - :: SL.PParams era + :: SLAPI.PParams era -> W.Coin minimumUTxOvalueFromPParams = toWalletCoin . SL._minUTxOValue stakeKeyDepositFromPParams - :: SL.PParams era + :: SLAPI.PParams era -> W.Coin stakeKeyDepositFromPParams = toWalletCoin . SL._keyDeposit @@ -780,7 +786,10 @@ fromNonMyopicMemberRewards = . Map.mapKeys (bimap fromShelleyCoin fromStakeCredential) . O.unNonMyopicMemberRewards -optimumNumberOfPools :: forall era. (SL.PParams era ~ SL.Core.PParams era) => SL.Core.PParams era -> Int +optimumNumberOfPools + :: forall era. (SLAPI.PParams era ~ SL.Core.PParams era) + => SL.Core.PParams era + -> Int optimumNumberOfPools = unsafeConvert . SL._nOpt where -- A value of ~100 can be expected, so should be fine. @@ -809,9 +818,9 @@ fromShelleyTxOut :: ( SL.ShelleyBased era , SL.Core.Value era ~ SL.Coin ) - => SL.TxOut era + => SLAPI.TxOut era -> W.TxOut -fromShelleyTxOut (SL.TxOut addr amount) = W.TxOut +fromShelleyTxOut (SLAPI.TxOut addr amount) = W.TxOut (fromShelleyAddress addr) (TokenBundle.fromCoin $ fromShelleyCoin amount) @@ -834,7 +843,7 @@ toShelleyCoin (W.Coin c) = SL.Coin $ safeCast c -- NOTE: For resolved inputs we have to pass in a dummy value of 0. fromShelleyTx - :: SL.Tx (Cardano.ShelleyLedgerEra ShelleyEra) + :: SLAPI.Tx (Cardano.ShelleyLedgerEra ShelleyEra) -> ( W.Tx , [W.DelegationCertificate] , [W.PoolCertificate] @@ -854,7 +863,7 @@ fromShelleyTx tx = SL.Tx bod@(SL.TxBody ins outs certs wdrls fee _ _ _) _ mmd = tx fromAllegraTx - :: SL.Tx (Cardano.ShelleyLedgerEra AllegraEra) + :: SLAPI.Tx (Cardano.ShelleyLedgerEra AllegraEra) -> ( W.Tx , [W.DelegationCertificate] , [W.PoolCertificate] @@ -879,7 +888,7 @@ fromAllegraTx tx = toSLMetadata (MA.AuxiliaryData blob _scripts) = SL.Metadata blob fromMaryTx - :: SL.Tx (Cardano.ShelleyLedgerEra MaryEra) + :: SLAPI.Tx (Cardano.ShelleyLedgerEra MaryEra) -> ( W.Tx , [W.DelegationCertificate] , [W.PoolCertificate] @@ -905,7 +914,7 @@ fromMaryTx tx = toSLMetadata (MA.AuxiliaryData blob _scripts) = SL.Metadata blob fromMaryTxOut - :: SL.TxOut (Cardano.ShelleyLedgerEra MaryEra) + :: SLAPI.TxOut (Cardano.ShelleyLedgerEra MaryEra) -> W.TxOut fromMaryTxOut (SL.TxOut addr value) = W.TxOut (fromShelleyAddress addr) $ @@ -1085,7 +1094,7 @@ unsealShelleyTx wrap = wrap sealShelleyTx :: forall era b c. (O.ShelleyBasedEra (Cardano.ShelleyLedgerEra era)) - => (SL.Tx (Cardano.ShelleyLedgerEra era) -> (W.Tx, b, c)) + => (SLAPI.Tx (Cardano.ShelleyLedgerEra era) -> (W.Tx, b, c)) -> Cardano.Tx era -> (W.Tx, W.SealedTx) sealShelleyTx fromTx (Cardano.ShelleyTx _era tx) = diff --git a/lib/shelley/src/Cardano/Wallet/Shelley/Launch/Cluster.hs b/lib/shelley/src/Cardano/Wallet/Shelley/Launch/Cluster.hs index 2ca248c7186..33f63488cdc 100644 --- a/lib/shelley/src/Cardano/Wallet/Shelley/Launch/Cluster.hs +++ b/lib/shelley/src/Cardano/Wallet/Shelley/Launch/Cluster.hs @@ -354,11 +354,22 @@ cliConfig tr = cliConfigBase tr Nothing -- | A quick helper to interact with the 'cardano-cli'. Assumes the cardano-cli -- is available in PATH. cli :: Tracer IO ClusterLog -> [String] -> IO () -cli tr = cliConfig tr >=> void . readProcessStdout_ +cli tr = cliConfig tr >=> void . readProcessStdoutOrFail cliLine :: Tracer IO ClusterLog -> [String] -> IO String cliLine tr = cliConfig tr >=> - fmap (BL8.unpack . getFirstLine) . readProcessStdout_ + fmap (BL8.unpack . getFirstLine) . readProcessStdoutOrFail + +readProcessStdoutOrFail :: ProcessConfig () () () -> IO BL.ByteString +readProcessStdoutOrFail processConfig = do + (st, out, err) <- readProcess processConfig + case st of + ExitSuccess -> pure out + ExitFailure _ -> throwIO $ userError $ mconcat + [ "command failed: " + , BL8.unpack err + ] + getFirstLine :: BL8.ByteString -> BL8.ByteString getFirstLine = BL8.takeWhile (\c -> c /= '\r' && c /= '\n') @@ -520,7 +531,7 @@ withCluster tr dir LocalClusterConfig{..} onClusterStart = waitForSocket tr bftSocket (rawTx, faucetPrv) <- prepareKeyRegistration tr dir - tx <- signTx tr dir rawTx [] [faucetPrv] + tx <- signTx tr dir rawTx [faucetPrv] submitTx tr bftSocket "pre-registered stake key" tx waitGroup <- newChan @@ -770,7 +781,7 @@ setupStakePoolData tr dir name params url pledgeAmt mRetirementEpoch = do ] (rawTx, faucetPrv) <- preparePoolRegistration tr dir stakePub certificates pledgeAmt - tx <- signTx tr dir rawTx [] [faucetPrv, stakePrv, opPrv] + tx <- signTx tr dir rawTx [faucetPrv, stakePrv, opPrv] let cfg = CardanoNodeConfig { nodeDir = dir @@ -1283,6 +1294,9 @@ sendFaucet tr conn dir what targets = do let targetAssets = concatMap (snd . TokenBundle.toFlatList . fst . snd) targets + scripts <- forM (nub $ concatMap (map snd . snd . snd) targets) $ + writeMonetaryPolicyScriptFile dir + cli tr $ [ "transaction", "build-raw" , "--tx-in", faucetInput @@ -1293,14 +1307,13 @@ sendFaucet tr conn dir what targets = do , "--out-file", file ] ++ concatMap (uncurry mkOutput . fmap fst) targets ++ - mkMint targetAssets + mkMint targetAssets ++ + (concatMap (\f -> ["--minting-script-file", f]) scripts) policyKeys <- forM (nub $ concatMap (snd . snd) targets) $ \(skey, keyHash) -> writePolicySigningKey dir keyHash skey - scripts <- forM (nub $ concatMap (map snd . snd . snd) targets) $ - writeMonetaryPolicyScriptFile dir - tx <- signTx tr dir file scripts (faucetPrv:policyKeys) + tx <- signTx tr dir file (faucetPrv:policyKeys) submitTx tr conn (what ++ " faucet tx") tx batch :: Int -> [a] -> ([a] -> IO b) -> IO () @@ -1343,7 +1356,7 @@ moveInstantaneousRewardsTo tr conn dir targets = do testData <- getShelleyTestDataPath let bftPrv = testData "bft-leader" <> ".skey" - tx <- signTx tr dir file [] [faucetPrv, bftPrv] + tx <- signTx tr dir file [faucetPrv, bftPrv] submitTx tr conn "MIR certificates" tx where mkVerificationKey @@ -1434,10 +1447,9 @@ signTx :: Tracer IO ClusterLog -> FilePath -- ^ Output directory -> FilePath -- ^ Tx body file - -> [FilePath] -- ^ Script files -> [FilePath] -- ^ Signing keys for witnesses -> IO FilePath -signTx tr dir rawTx scripts keys = do +signTx tr dir rawTx keys = do let file = dir "tx.signed" cli tr $ [ "transaction", "sign" @@ -1445,7 +1457,6 @@ signTx tr dir rawTx scripts keys = do , "--mainnet" , "--out-file", file ] - ++ concatMap (\s -> ["--script-file", s]) scripts ++ concatMap (\key -> ["--signing-key-file", key]) keys pure file diff --git a/lib/shelley/src/Cardano/Wallet/Shelley/Network.hs b/lib/shelley/src/Cardano/Wallet/Shelley/Network.hs index 2f7039e9564..393e9e2cd94 100644 --- a/lib/shelley/src/Cardano/Wallet/Shelley/Network.hs +++ b/lib/shelley/src/Cardano/Wallet/Shelley/Network.hs @@ -169,7 +169,7 @@ import Ouroboros.Consensus.Cardano.Block , Query (..) ) import Ouroboros.Consensus.HardFork.Combinator - ( QueryAnytime (..), QueryHardFork (..), eraIndexToInt ) + ( EraIndex (..), QueryAnytime (..), QueryHardFork (..), eraIndexToInt ) import Ouroboros.Consensus.HardFork.Combinator.AcrossEras ( MismatchEraInfo ) import Ouroboros.Consensus.HardFork.History.Qry @@ -1354,7 +1354,6 @@ shelleyBased onShelleyBased = byronOrShelleyBased (pure Nothing) -- on byron (Just <$> onShelleyBased) - -- NOTE: -- In theory we should be able to know the current era from the tip sync -- client. But there are is a problem from the combination of: @@ -1364,14 +1363,23 @@ shelleyBased onShelleyBased = byronOrShelleyBased -- which would make us unable to send Local State Queries until the node has -- updated its tip once. currentEra :: LSQ (CardanoBlock StandardCrypto) m AnyCardanoEra -currentEra = intToEra . eraIndexToInt <$> LSQry (QueryHardFork GetCurrentEra) - where - -- NOTE: We could presumably map the EraIndex to a QueryIfCurrent in a - -- type-safe way. - -- - -- If this were to be messed up, our integration tests would tell - -- immediately though. - intToEra = toEnum . fromEnum +currentEra = eraIndexToAnyCardanoEra <$> LSQry (QueryHardFork GetCurrentEra) + +-- | Provides a mapping from 'EraIndex' to 'AnyCardanoEra'. +-- +-- This mapping replaces a conversion between enumerations. +-- +-- The following is used as a reference for the index mapping: +-- https://github.com/input-output-hk/cardano-node/blob/3531289c9f79eab7ac5d3272ce6e6821504fec4c/cardano-api/src/Cardano/Api/Eras.hs#L188 +-- +eraIndexToAnyCardanoEra :: EraIndex xs -> AnyCardanoEra +eraIndexToAnyCardanoEra index = + case eraIndexToInt index of + 0 -> AnyCardanoEra ByronEra + 1 -> AnyCardanoEra ShelleyEra + 2 -> AnyCardanoEra AllegraEra + 3 -> AnyCardanoEra MaryEra + _ -> error "eraIndexToAnyCardanoEra: unknown era" -- | Workaround to deal with @GetCurrentPParams@ now returning a -- 'SL.Core.PParams era' type family application, instead of a concrete datatype diff --git a/lib/shelley/src/Cardano/Wallet/Shelley/Transaction.hs b/lib/shelley/src/Cardano/Wallet/Shelley/Transaction.hs index 28e6914cb75..b7eacbaa6c7 100644 --- a/lib/shelley/src/Cardano/Wallet/Shelley/Transaction.hs +++ b/lib/shelley/src/Cardano/Wallet/Shelley/Transaction.hs @@ -11,6 +11,7 @@ {-# LANGUAGE Rank2Types #-} {-# LANGUAGE RoleAnnotations #-} {-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE TupleSections #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} @@ -51,7 +52,7 @@ import Cardano.Api ( AnyCardanoEra (..) , ByronEra , CardanoEra (..) - , IsShelleyBasedEra + , IsShelleyBasedEra (..) , NetworkId , SerialiseAsCBOR (..) , ShelleyBasedEra (..) @@ -108,9 +109,7 @@ import Cardano.Wallet.Primitive.Types.Tx , txSizeDistance ) import Cardano.Wallet.Shelley.Compatibility - ( AllegraEra - , ShelleyEra - , fromAllegraTx + ( fromAllegraTx , fromMaryTx , fromShelleyTx , maxTokenBundleSerializedLengthBytes @@ -187,6 +186,7 @@ import qualified Codec.CBOR.Write as CBOR import qualified Data.ByteString as BS import qualified Data.Foldable as F import qualified Data.List.NonEmpty as NE +import qualified Data.Map as Map import qualified Data.Set as Set import qualified Data.Text as T import qualified Shelley.Spec.Ledger.Address.Bootstrap as SL @@ -204,14 +204,14 @@ data TxPayload era = TxPayload , _certificates :: [Cardano.Certificate] -- ^ Certificates to be included in the transactions. - , _extraWitnesses :: Cardano.TxBody era -> [Cardano.Witness era] + , _extraWitnesses :: Cardano.TxBody era -> [Cardano.KeyWitness era] -- ^ Create payload-specific witesses given the unsigned transaction body. -- -- Caller has the freedom and responsibility to provide the correct -- witnesses for what they're trying to do. } -emptyTxPayload :: TxPayload c +emptyTxPayload :: TxPayload era emptyTxPayload = TxPayload Nothing mempty mempty data TxWitnessTag @@ -1077,7 +1077,8 @@ withShelleyBasedEra era fn = case era of -- -- Which suggests that we may get away with Shelley-only transactions for now? mkUnsignedTx - :: ShelleyBasedEra era + :: forall era. Cardano.IsCardanoEra era + => ShelleyBasedEra era -> Cardano.SlotNo -> SelectionResult TxOut -> Maybe Cardano.TxMetadata @@ -1086,132 +1087,92 @@ mkUnsignedTx -> Cardano.Lovelace -> Either ErrMkTx (Cardano.TxBody era) mkUnsignedTx era ttl cs md wdrls certs fees = - case era of - ShelleyBasedEraShelley -> mkShelleyTx - ShelleyBasedEraAllegra -> mkAllegraTx - ShelleyBasedEraMary -> mkMaryTx - where - mkShelleyTx :: Either ErrMkTx (Cardano.TxBody ShelleyEra) - mkShelleyTx = left toErrMkTx $ Cardano.makeTransactionBody $ Cardano.TxBodyContent - { Cardano.txIns = - toCardanoTxIn . fst <$> F.toList (inputsSelected cs) - - , Cardano.txOuts = - toShelleyTxOut <$> (outputsCovered cs ++ F.toList (changeGenerated cs)) - - , Cardano.txWithdrawals = - Cardano.TxWithdrawals Cardano.WithdrawalsInShelleyEra wdrls - - , Cardano.txCertificates = - Cardano.TxCertificates Cardano.CertificatesInShelleyEra certs - - , Cardano.txFee = - Cardano.TxFeeExplicit Cardano.TxFeesExplicitInShelleyEra fees - - , Cardano.txValidityRange = - ( Cardano.TxValidityNoLowerBound - , Cardano.TxValidityUpperBound Cardano.ValidityUpperBoundInShelleyEra ttl - ) - - , Cardano.txMetadata = - maybe - Cardano.TxMetadataNone - (Cardano.TxMetadataInEra Cardano.TxMetadataInShelleyEra) - md - - , Cardano.txAuxScripts = - Cardano.TxAuxScriptsNone - - , Cardano.txUpdateProposal = - Cardano.TxUpdateProposalNone - - , Cardano.txMintValue = - Cardano.TxMintNone - } - where - toErrMkTx :: Cardano.TxBodyError ShelleyEra -> ErrMkTx - toErrMkTx = ErrConstructedInvalidTx . T.pack . Cardano.displayError - - mkAllegraTx :: Either ErrMkTx (Cardano.TxBody AllegraEra) - mkAllegraTx = left toErrMkTx $ Cardano.makeTransactionBody $ Cardano.TxBodyContent - { Cardano.txIns = - toCardanoTxIn . fst <$> F.toList (inputsSelected cs) - - , Cardano.txOuts = - toAllegraTxOut <$> (outputsCovered cs ++ F.toList (changeGenerated cs)) - - , Cardano.txWithdrawals = - Cardano.TxWithdrawals Cardano.WithdrawalsInAllegraEra wdrls - - , Cardano.txCertificates = - Cardano.TxCertificates Cardano.CertificatesInAllegraEra certs - - , Cardano.txFee = - Cardano.TxFeeExplicit Cardano.TxFeesExplicitInAllegraEra fees - - , Cardano.txValidityRange = - ( Cardano.TxValidityNoLowerBound - , Cardano.TxValidityUpperBound Cardano.ValidityUpperBoundInAllegraEra ttl - ) - - , Cardano.txMetadata = - maybe - Cardano.TxMetadataNone - (Cardano.TxMetadataInEra Cardano.TxMetadataInAllegraEra) - md - - , Cardano.txAuxScripts = - Cardano.TxAuxScriptsNone - - , Cardano.txUpdateProposal = - Cardano.TxUpdateProposalNone - - , Cardano.txMintValue = - Cardano.TxMintNone - } - where - toErrMkTx :: Cardano.TxBodyError AllegraEra -> ErrMkTx - toErrMkTx = ErrConstructedInvalidTx . T.pack . Cardano.displayError - - - mkMaryTx = left toErrMkTx $ Cardano.makeTransactionBody $ Cardano.TxBodyContent - { Cardano.txIns = - toCardanoTxIn . fst <$> F.toList (inputsSelected cs) - - , Cardano.txOuts = - toMaryTxOut <$> (outputsCovered cs ++ F.toList (changeGenerated cs)) - - , Cardano.txWithdrawals = - Cardano.TxWithdrawals Cardano.WithdrawalsInMaryEra wdrls - - , Cardano.txCertificates = - Cardano.TxCertificates Cardano.CertificatesInMaryEra certs - - , Cardano.txFee = - Cardano.TxFeeExplicit Cardano.TxFeesExplicitInMaryEra fees - - , Cardano.txValidityRange = - ( Cardano.TxValidityNoLowerBound - , Cardano.TxValidityUpperBound Cardano.ValidityUpperBoundInMaryEra ttl - ) + left toErrMkTx $ Cardano.makeTransactionBody $ Cardano.TxBodyContent + { Cardano.txIns = + (,Cardano.BuildTxWith (Cardano.KeyWitness Cardano.KeyWitnessForSpending)) + . toCardanoTxIn + . fst <$> F.toList (inputsSelected cs) + + , Cardano.txOuts = + toShelleyBasedTxOut <$> (outputsCovered cs ++ F.toList (changeGenerated cs)) + + , Cardano.txWithdrawals = + let + wit = Cardano.BuildTxWith + $ Cardano.KeyWitness Cardano.KeyWitnessForStakeAddr + in + Cardano.TxWithdrawals wdrlsSupported + (map (\(key, coin) -> (key, coin, wit)) wdrls) + + , Cardano.txCertificates = + let + -- It seems that passing Map.empty here works just fine. + witMap = Map.empty + ctx = Cardano.BuildTxWith witMap + in + Cardano.TxCertificates certSupported certs ctx + + , Cardano.txFee = explicitFees fees + + , Cardano.txValidityRange = + ( Cardano.TxValidityNoLowerBound + , Cardano.TxValidityUpperBound txValidityUpperBoundSupported ttl + ) - , Cardano.txMetadata = - maybe - Cardano.TxMetadataNone - (Cardano.TxMetadataInEra Cardano.TxMetadataInMaryEra) - md + , Cardano.txMetadata = + maybe + Cardano.TxMetadataNone + (Cardano.TxMetadataInEra metadataSupported) + md - , Cardano.txAuxScripts = - Cardano.TxAuxScriptsNone + , Cardano.txAuxScripts = + Cardano.TxAuxScriptsNone - , Cardano.txUpdateProposal = - Cardano.TxUpdateProposalNone + , Cardano.txUpdateProposal = + Cardano.TxUpdateProposalNone - , Cardano.txMintValue = - Cardano.TxMintNone - } - where - toErrMkTx = ErrConstructedInvalidTx . T.pack . Cardano.displayError + , Cardano.txMintValue = + Cardano.TxMintNone + } + where + toErrMkTx :: Cardano.TxBodyError era -> ErrMkTx + toErrMkTx = ErrConstructedInvalidTx . T.pack . Cardano.displayError + + toShelleyBasedTxOut :: TxOut -> Cardano.TxOut era + toShelleyBasedTxOut = case era of + ShelleyBasedEraShelley -> toShelleyTxOut + ShelleyBasedEraAllegra -> toAllegraTxOut + ShelleyBasedEraMary -> toMaryTxOut + + metadataSupported :: Cardano.TxMetadataSupportedInEra era + metadataSupported = case era of + ShelleyBasedEraShelley -> Cardano.TxMetadataInShelleyEra + ShelleyBasedEraAllegra -> Cardano.TxMetadataInAllegraEra + ShelleyBasedEraMary -> Cardano.TxMetadataInMaryEra + + certSupported :: Cardano.CertificatesSupportedInEra era + certSupported = case era of + ShelleyBasedEraShelley -> Cardano.CertificatesInShelleyEra + ShelleyBasedEraAllegra -> Cardano.CertificatesInAllegraEra + ShelleyBasedEraMary -> Cardano.CertificatesInMaryEra + + explicitFees :: Cardano.Lovelace -> Cardano.TxFee era + explicitFees = case era of + ShelleyBasedEraShelley -> Cardano.TxFeeExplicit Cardano.TxFeesExplicitInShelleyEra + ShelleyBasedEraAllegra -> Cardano.TxFeeExplicit Cardano.TxFeesExplicitInAllegraEra + ShelleyBasedEraMary -> Cardano.TxFeeExplicit Cardano.TxFeesExplicitInMaryEra + + wdrlsSupported :: Cardano.WithdrawalsSupportedInEra era + wdrlsSupported = case era of + ShelleyBasedEraShelley -> Cardano.WithdrawalsInShelleyEra + ShelleyBasedEraAllegra -> Cardano.WithdrawalsInAllegraEra + ShelleyBasedEraMary -> Cardano.WithdrawalsInMaryEra + + txValidityUpperBoundSupported :: Cardano.ValidityUpperBoundSupportedInEra era + txValidityUpperBoundSupported = case era of + ShelleyBasedEraShelley -> Cardano.ValidityUpperBoundInShelleyEra + ShelleyBasedEraAllegra -> Cardano.ValidityUpperBoundInAllegraEra + ShelleyBasedEraMary -> Cardano.ValidityUpperBoundInMaryEra mkWithdrawals :: NetworkId @@ -1229,7 +1190,7 @@ mkShelleyWitness :: IsShelleyBasedEra era => Cardano.TxBody era -> (XPrv, Passphrase "encryption") - -> Cardano.Witness era + -> Cardano.KeyWitness era mkShelleyWitness body key = Cardano.makeShelleyKeyWitness body (unencrypt key) where @@ -1243,8 +1204,8 @@ mkByronWitness -> Cardano.NetworkId -> Address -> (XPrv, Passphrase "encryption") - -> Cardano.Witness era -mkByronWitness (Cardano.ShelleyTxBody era body _) nw addr encryptedKey = + -> Cardano.KeyWitness era +mkByronWitness (Cardano.ShelleyTxBody era body _scripts _auxData) nw addr encryptedKey = Cardano.ShelleyBootstrapWitness era $ SL.makeBootstrapWitness txHash (unencrypt encryptedKey) addrAttr where diff --git a/lib/shelley/test/unit/Cardano/Wallet/Shelley/CompatibilitySpec.hs b/lib/shelley/test/unit/Cardano/Wallet/Shelley/CompatibilitySpec.hs index 0f74286bd40..d064d82512b 100644 --- a/lib/shelley/test/unit/Cardano/Wallet/Shelley/CompatibilitySpec.hs +++ b/lib/shelley/test/unit/Cardano/Wallet/Shelley/CompatibilitySpec.hs @@ -146,6 +146,7 @@ import Test.QuickCheck import qualified Cardano.Api as Cardano import qualified Cardano.Ledger.Shelley as SL +import qualified Cardano.Ledger.Shelley as SLAPI import qualified Cardano.Wallet.Primitive.AddressDerivation.Byron as Byron import qualified Cardano.Wallet.Primitive.AddressDerivation.Shelley as Shelley import qualified Cardano.Wallet.Primitive.Types as W @@ -212,7 +213,7 @@ spec = do describe "decentralizationLevelFromPParams" $ do - let mkDecentralizationParam :: SL.UnitInterval -> SL.PParams (SL.ShelleyEra StandardCrypto) + let mkDecentralizationParam :: SL.UnitInterval -> SLAPI.PParams (SL.ShelleyEra StandardCrypto) mkDecentralizationParam i = SL.emptyPParams { SL._d = i } let testCases :: [(Ratio Word64, Text)] diff --git a/nix/.stack.nix/byron-spec-chain.nix b/nix/.stack.nix/byron-spec-chain.nix index a88b6f73ad1..82c6b4a77fa 100644 --- a/nix/.stack.nix/byron-spec-chain.nix +++ b/nix/.stack.nix/byron-spec-chain.nix @@ -64,8 +64,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/byron/chain/executable-spec; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/byron-spec-ledger.nix b/nix/.stack.nix/byron-spec-ledger.nix index 5e2a9eb08e5..ed778ca428e 100644 --- a/nix/.stack.nix/byron-spec-ledger.nix +++ b/nix/.stack.nix/byron-spec-ledger.nix @@ -45,15 +45,6 @@ buildable = true; }; tests = { - "doctests" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - ] ++ (pkgs.lib).optional (compiler.isGhc && (compiler.version).lt "8.10") (hsPkgs."doctest" or (errorHandler.buildDepError "doctest")); - build-tools = [ - (hsPkgs.buildPackages.doctest-discover.components.exes.doctest-discover or (pkgs.buildPackages.doctest-discover or (errorHandler.buildToolDepError "doctest-discover:doctest-discover"))) - ]; - buildable = true; - }; "byron-spec-ledger-test" = { depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) @@ -77,8 +68,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/byron/ledger/executable-spec; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-api-test.nix b/nix/.stack.nix/cardano-api-test.nix index 14cd23090ba..a2be2f24c05 100644 --- a/nix/.stack.nix/cardano-api-test.nix +++ b/nix/.stack.nix/cardano-api-test.nix @@ -35,6 +35,7 @@ (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) (hsPkgs."cardano-crypto-test" or (errorHandler.buildDepError "cardano-crypto-test")) (hsPkgs."cardano-ledger-byron-test" or (errorHandler.buildDepError "cardano-ledger-byron-test")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) (hsPkgs."hedgehog" or (errorHandler.buildDepError "hedgehog")) @@ -49,8 +50,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-node"; - rev = "3531289c9f79eab7ac5d3272ce6e6821504fec4c"; - sha256 = "17zr2lhnrly6gqb1hxf3cjwfw1iz8s85hhhdiivb5ax7fkrrp8pp"; + rev = "8fe46140a52810b6ca456be01d652ca08fe730bf"; + sha256 = "1c9zc899wlgicrs49i33l0bwb554acsavzh1vcyhnxmpm0dmy8vj"; }); postUnpack = "sourceRoot+=/cardano-api/test; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-api.nix b/nix/.stack.nix/cardano-api.nix index 8d58743324c..36aa1df21ee 100644 --- a/nix/.stack.nix/cardano-api.nix +++ b/nix/.stack.nix/cardano-api.nix @@ -11,7 +11,7 @@ flags = {}; package = { specVersion = "2.4"; - identifier = { name = "cardano-api"; version = "1.26.2"; }; + identifier = { name = "cardano-api"; version = "1.27.0"; }; license = "Apache-2.0"; copyright = ""; maintainer = "operations@iohk.io"; @@ -39,6 +39,7 @@ (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) (hsPkgs."cardano-crypto-wrapper" or (errorHandler.buildDepError "cardano-crypto-wrapper")) (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-ledger-shelley-ma" or (errorHandler.buildDepError "cardano-ledger-shelley-ma")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) @@ -46,6 +47,7 @@ (hsPkgs."contra-tracer" or (errorHandler.buildDepError "contra-tracer")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) (hsPkgs."cryptonite" or (errorHandler.buildDepError "cryptonite")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) (hsPkgs."directory" or (errorHandler.buildDepError "directory")) (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) (hsPkgs."formatting" or (errorHandler.buildDepError "formatting")) @@ -63,6 +65,7 @@ (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) (hsPkgs."stm" or (errorHandler.buildDepError "stm")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."text" or (errorHandler.buildDepError "text")) (hsPkgs."time" or (errorHandler.buildDepError "time")) (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) @@ -70,6 +73,7 @@ (hsPkgs."typed-protocols" or (errorHandler.buildDepError "typed-protocols")) (hsPkgs."unordered-containers" or (errorHandler.buildDepError "unordered-containers")) (hsPkgs."vector" or (errorHandler.buildDepError "vector")) + (hsPkgs."yaml" or (errorHandler.buildDepError "yaml")) ]; buildable = true; }; @@ -87,8 +91,8 @@ (hsPkgs."cardano-crypto-test" or (errorHandler.buildDepError "cardano-crypto-test")) (hsPkgs."cardano-crypto-tests" or (errorHandler.buildDepError "cardano-crypto-tests")) (hsPkgs."cardano-ledger-byron-test" or (errorHandler.buildDepError "cardano-ledger-byron-test")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) - (hsPkgs."cardano-prelude-test" or (errorHandler.buildDepError "cardano-prelude-test")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) (hsPkgs."hedgehog" or (errorHandler.buildDepError "hedgehog")) @@ -111,8 +115,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-node"; - rev = "3531289c9f79eab7ac5d3272ce6e6821504fec4c"; - sha256 = "17zr2lhnrly6gqb1hxf3cjwfw1iz8s85hhhdiivb5ax7fkrrp8pp"; + rev = "8fe46140a52810b6ca456be01d652ca08fe730bf"; + sha256 = "1c9zc899wlgicrs49i33l0bwb554acsavzh1vcyhnxmpm0dmy8vj"; }); postUnpack = "sourceRoot+=/cardano-api; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-binary-test.nix b/nix/.stack.nix/cardano-binary-test.nix index 3eb6fc4cd50..aa4f3fd663d 100644 --- a/nix/.stack.nix/cardano-binary-test.nix +++ b/nix/.stack.nix/cardano-binary-test.nix @@ -10,7 +10,7 @@ { flags = { development = false; }; package = { - specVersion = "1.10"; + specVersion = "2.2"; identifier = { name = "cardano-binary-test"; version = "1.3.0"; }; license = "MIT"; copyright = "2019-2021 IOHK"; @@ -26,6 +26,7 @@ components = { "library" = { depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) @@ -40,6 +41,7 @@ (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) (hsPkgs."quickcheck-instances" or (errorHandler.buildDepError "quickcheck-instances")) (hsPkgs."text" or (errorHandler.buildDepError "text")) + (hsPkgs."time" or (errorHandler.buildDepError "time")) (hsPkgs."vector" or (errorHandler.buildDepError "vector")) ]; buildable = true; @@ -48,8 +50,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-base"; - rev = "101e7752cf4b23fd0b411736f523b8f6c43f6bc2"; - sha256 = "04qnq9a3mhfqsisln2sygfm0xkkvj8f8hdzxm1qn2ss0mfsfzx8y"; + rev = "47db5b818ca4fa051f2e44cdf5e7c5c18c1fb0bf"; + sha256 = "0fr0r5dwfmsp15j19xh20js8nzsqyhwx4q797rxsvpyjfabb2y11"; }); postUnpack = "sourceRoot+=/binary/test; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-binary.nix b/nix/.stack.nix/cardano-binary.nix index d870f157f89..1c4d8ddc853 100644 --- a/nix/.stack.nix/cardano-binary.nix +++ b/nix/.stack.nix/cardano-binary.nix @@ -10,7 +10,7 @@ { flags = { development = false; }; package = { - specVersion = "1.10"; + specVersion = "2.2"; identifier = { name = "cardano-binary"; version = "1.5.0"; }; license = "Apache-2.0"; copyright = "2019-2021 IOHK"; @@ -26,6 +26,7 @@ components = { "library" = { depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."aeson" or (errorHandler.buildDepError "aeson")) (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) @@ -33,7 +34,6 @@ (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) (hsPkgs."data-fix" or (errorHandler.buildDepError "data-fix")) - (hsPkgs."digest" or (errorHandler.buildDepError "digest")) (hsPkgs."formatting" or (errorHandler.buildDepError "formatting")) (hsPkgs."nothunks" or (errorHandler.buildDepError "nothunks")) (hsPkgs."primitive" or (errorHandler.buildDepError "primitive")) @@ -49,6 +49,7 @@ tests = { "test" = { depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) @@ -64,6 +65,7 @@ (hsPkgs."quickcheck-instances" or (errorHandler.buildDepError "quickcheck-instances")) (hsPkgs."tagged" or (errorHandler.buildDepError "tagged")) (hsPkgs."text" or (errorHandler.buildDepError "text")) + (hsPkgs."time" or (errorHandler.buildDepError "time")) (hsPkgs."vector" or (errorHandler.buildDepError "vector")) ]; buildable = true; @@ -73,8 +75,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-base"; - rev = "101e7752cf4b23fd0b411736f523b8f6c43f6bc2"; - sha256 = "04qnq9a3mhfqsisln2sygfm0xkkvj8f8hdzxm1qn2ss0mfsfzx8y"; + rev = "47db5b818ca4fa051f2e44cdf5e7c5c18c1fb0bf"; + sha256 = "0fr0r5dwfmsp15j19xh20js8nzsqyhwx4q797rxsvpyjfabb2y11"; }); postUnpack = "sourceRoot+=/binary; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-cli.nix b/nix/.stack.nix/cardano-cli.nix index 55bd2492e21..13bcd7e1e35 100644 --- a/nix/.stack.nix/cardano-cli.nix +++ b/nix/.stack.nix/cardano-cli.nix @@ -11,7 +11,7 @@ flags = { unexpected_thunks = false; }; package = { specVersion = "2.4"; - identifier = { name = "cardano-cli"; version = "1.26.2"; }; + identifier = { name = "cardano-cli"; version = "1.27.0"; }; license = "Apache-2.0"; copyright = ""; maintainer = "operations@iohk.io"; @@ -29,6 +29,7 @@ (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."aeson" or (errorHandler.buildDepError "aeson")) (hsPkgs."aeson-pretty" or (errorHandler.buildDepError "aeson-pretty")) + (hsPkgs."ansi-terminal" or (errorHandler.buildDepError "ansi-terminal")) (hsPkgs."attoparsec" or (errorHandler.buildDepError "attoparsec")) (hsPkgs."bech32" or (errorHandler.buildDepError "bech32")) (hsPkgs."binary" or (errorHandler.buildDepError "binary")) @@ -41,6 +42,7 @@ (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) (hsPkgs."cardano-crypto-wrapper" or (errorHandler.buildDepError "cardano-crypto-wrapper")) (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-ledger-shelley-ma" or (errorHandler.buildDepError "cardano-ledger-shelley-ma")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."contra-tracer" or (errorHandler.buildDepError "contra-tracer")) @@ -62,6 +64,7 @@ (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) (hsPkgs."split" or (errorHandler.buildDepError "split")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."text" or (errorHandler.buildDepError "text")) (hsPkgs."time" or (errorHandler.buildDepError "time")) (hsPkgs."transformers-except" or (errorHandler.buildDepError "transformers-except")) @@ -117,6 +120,7 @@ (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."Diff" or (errorHandler.buildDepError "Diff")) (hsPkgs."directory" or (errorHandler.buildDepError "directory")) (hsPkgs."exceptions" or (errorHandler.buildDepError "exceptions")) (hsPkgs."hedgehog" or (errorHandler.buildDepError "hedgehog")) @@ -135,8 +139,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-node"; - rev = "3531289c9f79eab7ac5d3272ce6e6821504fec4c"; - sha256 = "17zr2lhnrly6gqb1hxf3cjwfw1iz8s85hhhdiivb5ax7fkrrp8pp"; + rev = "8fe46140a52810b6ca456be01d652ca08fe730bf"; + sha256 = "1c9zc899wlgicrs49i33l0bwb554acsavzh1vcyhnxmpm0dmy8vj"; }); postUnpack = "sourceRoot+=/cardano-cli; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-client.nix b/nix/.stack.nix/cardano-client.nix index 0aadaba1c72..c86c3dc1bc4 100644 --- a/nix/.stack.nix/cardano-client.nix +++ b/nix/.stack.nix/cardano-client.nix @@ -42,8 +42,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/cardano-client; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-config.nix b/nix/.stack.nix/cardano-config.nix index f072dc9a51d..1f8175faded 100644 --- a/nix/.stack.nix/cardano-config.nix +++ b/nix/.stack.nix/cardano-config.nix @@ -39,8 +39,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-node"; - rev = "3531289c9f79eab7ac5d3272ce6e6821504fec4c"; - sha256 = "17zr2lhnrly6gqb1hxf3cjwfw1iz8s85hhhdiivb5ax7fkrrp8pp"; + rev = "8fe46140a52810b6ca456be01d652ca08fe730bf"; + sha256 = "1c9zc899wlgicrs49i33l0bwb554acsavzh1vcyhnxmpm0dmy8vj"; }); postUnpack = "sourceRoot+=/cardano-config; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-crypto-class.nix b/nix/.stack.nix/cardano-crypto-class.nix index 24bb22f1a36..bf6a4db5c7c 100644 --- a/nix/.stack.nix/cardano-crypto-class.nix +++ b/nix/.stack.nix/cardano-crypto-class.nix @@ -10,7 +10,7 @@ { flags = { development = false; }; package = { - specVersion = "1.10"; + specVersion = "2.2"; identifier = { name = "cardano-crypto-class"; version = "2.0.0"; }; license = "Apache-2.0"; copyright = "2019-2021 IOHK"; @@ -26,6 +26,7 @@ components = { "library" = { depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."aeson" or (errorHandler.buildDepError "aeson")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."base16-bytestring" or (errorHandler.buildDepError "base16-bytestring")) @@ -51,6 +52,7 @@ tests = { "test-memory-example" = { depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) @@ -62,8 +64,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-base"; - rev = "101e7752cf4b23fd0b411736f523b8f6c43f6bc2"; - sha256 = "04qnq9a3mhfqsisln2sygfm0xkkvj8f8hdzxm1qn2ss0mfsfzx8y"; + rev = "47db5b818ca4fa051f2e44cdf5e7c5c18c1fb0bf"; + sha256 = "0fr0r5dwfmsp15j19xh20js8nzsqyhwx4q797rxsvpyjfabb2y11"; }); postUnpack = "sourceRoot+=/cardano-crypto-class; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-crypto-praos.nix b/nix/.stack.nix/cardano-crypto-praos.nix index 0185910724e..5d80d9bbaec 100644 --- a/nix/.stack.nix/cardano-crypto-praos.nix +++ b/nix/.stack.nix/cardano-crypto-praos.nix @@ -10,7 +10,7 @@ { flags = { development = false; external-libsodium-vrf = true; }; package = { - specVersion = "1.10"; + specVersion = "2.2"; identifier = { name = "cardano-crypto-praos"; version = "2.0.0"; }; license = "Apache-2.0"; copyright = "2019-2021 IOHK"; @@ -26,6 +26,7 @@ components = { "library" = { depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) @@ -42,8 +43,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-base"; - rev = "101e7752cf4b23fd0b411736f523b8f6c43f6bc2"; - sha256 = "04qnq9a3mhfqsisln2sygfm0xkkvj8f8hdzxm1qn2ss0mfsfzx8y"; + rev = "47db5b818ca4fa051f2e44cdf5e7c5c18c1fb0bf"; + sha256 = "0fr0r5dwfmsp15j19xh20js8nzsqyhwx4q797rxsvpyjfabb2y11"; }); postUnpack = "sourceRoot+=/cardano-crypto-praos; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-crypto-test.nix b/nix/.stack.nix/cardano-crypto-test.nix index 633b8efc828..57fb05a2282 100644 --- a/nix/.stack.nix/cardano-crypto-test.nix +++ b/nix/.stack.nix/cardano-crypto-test.nix @@ -44,8 +44,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/byron/crypto/test; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-crypto-tests.nix b/nix/.stack.nix/cardano-crypto-tests.nix index beda2cc9003..34f7a0360f0 100644 --- a/nix/.stack.nix/cardano-crypto-tests.nix +++ b/nix/.stack.nix/cardano-crypto-tests.nix @@ -10,7 +10,7 @@ { flags = { development = false; }; package = { - specVersion = "1.10"; + specVersion = "2.2"; identifier = { name = "cardano-crypto-tests"; version = "2.0.0"; }; license = "Apache-2.0"; copyright = "2020-2021 IOHK"; @@ -26,6 +26,7 @@ components = { "library" = { depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) @@ -47,6 +48,7 @@ tests = { "test-crypto" = { depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) (hsPkgs."cardano-crypto-tests" or (errorHandler.buildDepError "cardano-crypto-tests")) @@ -59,14 +61,9 @@ "bench-crypto" = { depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) - (hsPkgs."cardano-crypto-praos" or (errorHandler.buildDepError "cardano-crypto-praos")) (hsPkgs."cardano-crypto-tests" or (errorHandler.buildDepError "cardano-crypto-tests")) - (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) - (hsPkgs."cryptonite" or (errorHandler.buildDepError "cryptonite")) - (hsPkgs."formatting" or (errorHandler.buildDepError "formatting")) (hsPkgs."criterion" or (errorHandler.buildDepError "criterion")) ]; buildable = true; @@ -76,8 +73,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-base"; - rev = "101e7752cf4b23fd0b411736f523b8f6c43f6bc2"; - sha256 = "04qnq9a3mhfqsisln2sygfm0xkkvj8f8hdzxm1qn2ss0mfsfzx8y"; + rev = "47db5b818ca4fa051f2e44cdf5e7c5c18c1fb0bf"; + sha256 = "0fr0r5dwfmsp15j19xh20js8nzsqyhwx4q797rxsvpyjfabb2y11"; }); postUnpack = "sourceRoot+=/cardano-crypto-tests; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-crypto-wrapper.nix b/nix/.stack.nix/cardano-crypto-wrapper.nix index 84d2a7cc772..26b517f197d 100644 --- a/nix/.stack.nix/cardano-crypto-wrapper.nix +++ b/nix/.stack.nix/cardano-crypto-wrapper.nix @@ -71,8 +71,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/byron/crypto; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-ledger-byron-test.nix b/nix/.stack.nix/cardano-ledger-byron-test.nix index d230e125cfb..1473c504f73 100644 --- a/nix/.stack.nix/cardano-ledger-byron-test.nix +++ b/nix/.stack.nix/cardano-ledger-byron-test.nix @@ -63,8 +63,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/byron/ledger/impl/test; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-ledger-byron.nix b/nix/.stack.nix/cardano-ledger-byron.nix index 84aefef61ee..40d9fe68b4c 100644 --- a/nix/.stack.nix/cardano-ledger-byron.nix +++ b/nix/.stack.nix/cardano-ledger-byron.nix @@ -122,8 +122,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/byron/ledger/impl; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-ledger-core.nix b/nix/.stack.nix/cardano-ledger-core.nix new file mode 100644 index 00000000000..a51782ec9a0 --- /dev/null +++ b/nix/.stack.nix/cardano-ledger-core.nix @@ -0,0 +1,56 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "2.4"; + identifier = { name = "cardano-ledger-core"; version = "0.1.0.0"; }; + license = "Apache-2.0"; + copyright = "2021 Input Output (Hong Kong) Ltd."; + maintainer = "formal.methods@iohk.io"; + author = "IOHK Formal Methods Team"; + homepage = ""; + url = ""; + synopsis = "Core components of Cardano ledgers from the Shelley release on."; + description = "Cardano ledgers from the Shelley release onwards share a core basis rooted in\nthe Shelley ledger specification. This package abstracts a number of components\nwhich we expect to be shared amongst all future ledgers implemented around this base."; + buildType = "Simple"; + isLocal = true; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."aeson" or (errorHandler.buildDepError "aeson")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) + (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) + (hsPkgs."cardano-crypto-praos" or (errorHandler.buildDepError "cardano-crypto-praos")) + (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."groups" or (errorHandler.buildDepError "groups")) + (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) + (hsPkgs."nothunks" or (errorHandler.buildDepError "nothunks")) + (hsPkgs."partial-order" or (errorHandler.buildDepError "partial-order")) + (hsPkgs."quiet" or (errorHandler.buildDepError "quiet")) + (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) + ]; + buildable = true; + }; + }; + } // { + src = (pkgs.lib).mkDefault (pkgs.fetchgit { + url = "https://github.com/input-output-hk/cardano-ledger-specs"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; + }); + postUnpack = "sourceRoot+=/cardano-ledger-core; echo source root reset to \$sourceRoot"; + } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-ledger-shelley-ma-test.nix b/nix/.stack.nix/cardano-ledger-shelley-ma-test.nix new file mode 100644 index 00000000000..63aa7f2ece7 --- /dev/null +++ b/nix/.stack.nix/cardano-ledger-shelley-ma-test.nix @@ -0,0 +1,97 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "2.2"; + identifier = { + name = "cardano-ledger-shelley-ma-test"; + version = "0.1.0.0"; + }; + license = "Apache-2.0"; + copyright = "2020 Input Output (Hong Kong) Ltd."; + maintainer = "formal.methods@iohk.io"; + author = "IOHK Formal Methods Team"; + homepage = ""; + url = ""; + synopsis = "Shelley ledger with multiasset and time lock support."; + description = "This package extends the Shelley ledger with support for\nnative tokens and timelocks."; + buildType = "Simple"; + isLocal = true; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."array" or (errorHandler.buildDepError "array")) + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."base16-bytestring" or (errorHandler.buildDepError "base16-bytestring")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) + (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) + (hsPkgs."cardano-crypto-praos" or (errorHandler.buildDepError "cardano-crypto-praos")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) + (hsPkgs."cardano-ledger-shelley-ma" or (errorHandler.buildDepError "cardano-ledger-shelley-ma")) + (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) + (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) + (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."generic-random" or (errorHandler.buildDepError "generic-random")) + (hsPkgs."hashable" or (errorHandler.buildDepError "hashable")) + (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) + (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) + (hsPkgs."shelley-spec-ledger-test" or (errorHandler.buildDepError "shelley-spec-ledger-test")) + (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) + (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) + (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) + (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) + (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) + (hsPkgs."text" or (errorHandler.buildDepError "text")) + ]; + buildable = true; + }; + tests = { + "cardano-ledger-shelley-ma-test" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) + (hsPkgs."cardano-ledger-shelley-ma-test" or (errorHandler.buildDepError "cardano-ledger-shelley-ma-test")) + (hsPkgs."cardano-ledger-shelley-ma" or (errorHandler.buildDepError "cardano-ledger-shelley-ma")) + (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) + (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."data-default-class" or (errorHandler.buildDepError "data-default-class")) + (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) + (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) + (hsPkgs."shelley-spec-ledger-test" or (errorHandler.buildDepError "shelley-spec-ledger-test")) + (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) + (hsPkgs."small-steps-test" or (errorHandler.buildDepError "small-steps-test")) + (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) + (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) + (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) + (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) + ]; + buildable = true; + }; + }; + }; + } // { + src = (pkgs.lib).mkDefault (pkgs.fetchgit { + url = "https://github.com/input-output-hk/cardano-ledger-specs"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; + }); + postUnpack = "sourceRoot+=/shelley-ma/shelley-ma-test; echo source root reset to \$sourceRoot"; + } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-ledger-shelley-ma.nix b/nix/.stack.nix/cardano-ledger-shelley-ma.nix index b9f1d9711a2..4e8ed35f272 100644 --- a/nix/.stack.nix/cardano-ledger-shelley-ma.nix +++ b/nix/.stack.nix/cardano-ledger-shelley-ma.nix @@ -28,8 +28,10 @@ depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."base16-bytestring" or (errorHandler.buildDepError "base16-bytestring")) (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) @@ -43,6 +45,7 @@ (hsPkgs."primitive" or (errorHandler.buildDepError "primitive")) (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."text" or (errorHandler.buildDepError "text")) (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) ]; @@ -52,8 +55,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/shelley-ma/impl; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-node-chairman.nix b/nix/.stack.nix/cardano-node-chairman.nix index 67d79b2da34..6d617b6e169 100644 --- a/nix/.stack.nix/cardano-node-chairman.nix +++ b/nix/.stack.nix/cardano-node-chairman.nix @@ -11,7 +11,7 @@ flags = {}; package = { specVersion = "2.4"; - identifier = { name = "cardano-node-chairman"; version = "1.26.2"; }; + identifier = { name = "cardano-node-chairman"; version = "1.27.0"; }; license = "Apache-2.0"; copyright = ""; maintainer = "operations@iohk.io"; @@ -46,7 +46,6 @@ (hsPkgs."network-mux" or (errorHandler.buildDepError "network-mux")) (hsPkgs."optparse-applicative" or (errorHandler.buildDepError "optparse-applicative")) (hsPkgs."ouroboros-consensus" or (errorHandler.buildDepError "ouroboros-consensus")) - (hsPkgs."ouroboros-consensus-cardano" or (errorHandler.buildDepError "ouroboros-consensus-cardano")) (hsPkgs."ouroboros-network" or (errorHandler.buildDepError "ouroboros-network")) (hsPkgs."ouroboros-network-framework" or (errorHandler.buildDepError "ouroboros-network-framework")) (hsPkgs."process" or (errorHandler.buildDepError "process")) @@ -116,8 +115,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-node"; - rev = "3531289c9f79eab7ac5d3272ce6e6821504fec4c"; - sha256 = "17zr2lhnrly6gqb1hxf3cjwfw1iz8s85hhhdiivb5ax7fkrrp8pp"; + rev = "8fe46140a52810b6ca456be01d652ca08fe730bf"; + sha256 = "1c9zc899wlgicrs49i33l0bwb554acsavzh1vcyhnxmpm0dmy8vj"; }); postUnpack = "sourceRoot+=/cardano-node-chairman; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-node.nix b/nix/.stack.nix/cardano-node.nix index fdd58911c1a..e954e1bfe33 100644 --- a/nix/.stack.nix/cardano-node.nix +++ b/nix/.stack.nix/cardano-node.nix @@ -11,7 +11,7 @@ flags = { unexpected_thunks = false; systemd = true; }; package = { specVersion = "2.4"; - identifier = { name = "cardano-node"; version = "1.26.2"; }; + identifier = { name = "cardano-node"; version = "1.27.0"; }; license = "Apache-2.0"; copyright = ""; maintainer = "operations@iohk.io"; @@ -37,6 +37,7 @@ (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) (hsPkgs."cardano-crypto-wrapper" or (errorHandler.buildDepError "cardano-crypto-wrapper")) (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-ledger-shelley-ma" or (errorHandler.buildDepError "cardano-ledger-shelley-ma")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) @@ -111,7 +112,9 @@ (hsPkgs."hedgehog" or (errorHandler.buildDepError "hedgehog")) (hsPkgs."hedgehog-corpus" or (errorHandler.buildDepError "hedgehog-corpus")) (hsPkgs."iproute" or (errorHandler.buildDepError "iproute")) + (hsPkgs."ouroboros-consensus" or (errorHandler.buildDepError "ouroboros-consensus")) (hsPkgs."ouroboros-network" or (errorHandler.buildDepError "ouroboros-network")) + (hsPkgs."time" or (errorHandler.buildDepError "time")) ] ++ (pkgs.lib).optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix")); buildable = true; }; @@ -120,8 +123,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-node"; - rev = "3531289c9f79eab7ac5d3272ce6e6821504fec4c"; - sha256 = "17zr2lhnrly6gqb1hxf3cjwfw1iz8s85hhhdiivb5ax7fkrrp8pp"; + rev = "8fe46140a52810b6ca456be01d652ca08fe730bf"; + sha256 = "1c9zc899wlgicrs49i33l0bwb554acsavzh1vcyhnxmpm0dmy8vj"; }); postUnpack = "sourceRoot+=/cardano-node; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-prelude-test.nix b/nix/.stack.nix/cardano-prelude-test.nix index 96fed131a47..e1f083aed25 100644 --- a/nix/.stack.nix/cardano-prelude-test.nix +++ b/nix/.stack.nix/cardano-prelude-test.nix @@ -13,7 +13,7 @@ specVersion = "2.2"; identifier = { name = "cardano-prelude-test"; version = "0.1.0.0"; }; license = "MIT"; - copyright = "2018 IOHK"; + copyright = "2018-2021 IOHK"; maintainer = "operations@iohk.io"; author = "IOHK"; homepage = ""; @@ -67,8 +67,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-prelude"; - rev = "ee4e7b547a991876e6b05ba542f4e62909f4a571"; - sha256 = "0dg6ihgrn5mgqp95c4f11l6kh9k3y75lwfqf47hdp554w7wyvaw6"; + rev = "bb4ed71ba8e587f672d06edf9d2e376f4b055555"; + sha256 = "00h10l5mmiza9819p9v5q5749nb9pzgi20vpzpy1d34zmh6gf1cj"; }); postUnpack = "sourceRoot+=/cardano-prelude-test; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-prelude.nix b/nix/.stack.nix/cardano-prelude.nix index 8aeee086a1b..42250cd5840 100644 --- a/nix/.stack.nix/cardano-prelude.nix +++ b/nix/.stack.nix/cardano-prelude.nix @@ -13,7 +13,7 @@ specVersion = "2.2"; identifier = { name = "cardano-prelude"; version = "0.1.0.0"; }; license = "MIT"; - copyright = "2018-2020 IOHK"; + copyright = "2018-2021 IOHK"; maintainer = "operations@iohk.io"; author = "IOHK"; homepage = ""; @@ -34,15 +34,12 @@ (hsPkgs."canonical-json" or (errorHandler.buildDepError "canonical-json")) (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) - (hsPkgs."fingertree" or (errorHandler.buildDepError "fingertree")) (hsPkgs."formatting" or (errorHandler.buildDepError "formatting")) (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap")) (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) (hsPkgs."integer-gmp" or (errorHandler.buildDepError "integer-gmp")) (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) - (hsPkgs."nothunks" or (errorHandler.buildDepError "nothunks")) (hsPkgs."protolude" or (errorHandler.buildDepError "protolude")) - (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) (hsPkgs."tagged" or (errorHandler.buildDepError "tagged")) (hsPkgs."text" or (errorHandler.buildDepError "text")) (hsPkgs."time" or (errorHandler.buildDepError "time")) @@ -54,8 +51,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-prelude"; - rev = "ee4e7b547a991876e6b05ba542f4e62909f4a571"; - sha256 = "0dg6ihgrn5mgqp95c4f11l6kh9k3y75lwfqf47hdp554w7wyvaw6"; + rev = "bb4ed71ba8e587f672d06edf9d2e376f4b055555"; + sha256 = "00h10l5mmiza9819p9v5q5749nb9pzgi20vpzpy1d34zmh6gf1cj"; }); postUnpack = "sourceRoot+=/cardano-prelude; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-slotting.nix b/nix/.stack.nix/cardano-slotting.nix index 34e8f5cf11f..d96596b5008 100644 --- a/nix/.stack.nix/cardano-slotting.nix +++ b/nix/.stack.nix/cardano-slotting.nix @@ -10,7 +10,7 @@ { flags = { development = false; }; package = { - specVersion = "1.10"; + specVersion = "2.2"; identifier = { name = "cardano-slotting"; version = "0.1.0.0"; }; license = "Apache-2.0"; copyright = "IOHK"; @@ -26,6 +26,7 @@ components = { "library" = { depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."aeson" or (errorHandler.buildDepError "aeson")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) @@ -33,8 +34,9 @@ (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) (hsPkgs."mmorph" or (errorHandler.buildDepError "mmorph")) (hsPkgs."nothunks" or (errorHandler.buildDepError "nothunks")) - (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) (hsPkgs."quiet" or (errorHandler.buildDepError "quiet")) + (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) + (hsPkgs."time" or (errorHandler.buildDepError "time")) ]; buildable = true; }; @@ -42,8 +44,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-base"; - rev = "101e7752cf4b23fd0b411736f523b8f6c43f6bc2"; - sha256 = "04qnq9a3mhfqsisln2sygfm0xkkvj8f8hdzxm1qn2ss0mfsfzx8y"; + rev = "47db5b818ca4fa051f2e44cdf5e7c5c18c1fb0bf"; + sha256 = "0fr0r5dwfmsp15j19xh20js8nzsqyhwx4q797rxsvpyjfabb2y11"; }); postUnpack = "sourceRoot+=/slotting; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/cardano-wallet.nix b/nix/.stack.nix/cardano-wallet.nix index e76dec77c55..2db87726a93 100644 --- a/nix/.stack.nix/cardano-wallet.nix +++ b/nix/.stack.nix/cardano-wallet.nix @@ -41,6 +41,7 @@ (hsPkgs."cardano-crypto-wrapper" or (errorHandler.buildDepError "cardano-crypto-wrapper")) (hsPkgs."cardano-wallet-launcher" or (errorHandler.buildDepError "cardano-wallet-launcher")) (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-ledger-shelley-ma" or (errorHandler.buildDepError "cardano-ledger-shelley-ma")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) (hsPkgs."cardano-wallet-cli" or (errorHandler.buildDepError "cardano-wallet-cli")) @@ -149,9 +150,10 @@ (hsPkgs."cardano-addresses" or (errorHandler.buildDepError "cardano-addresses")) (hsPkgs."cardano-api" or (errorHandler.buildDepError "cardano-api")) (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) + (hsPkgs."cardano-wallet" or (errorHandler.buildDepError "cardano-wallet")) (hsPkgs."cardano-wallet-core" or (errorHandler.buildDepError "cardano-wallet-core")) (hsPkgs."cardano-wallet-test-utils" or (errorHandler.buildDepError "cardano-wallet-test-utils")) - (hsPkgs."cardano-wallet" or (errorHandler.buildDepError "cardano-wallet")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) (hsPkgs."contra-tracer" or (errorHandler.buildDepError "contra-tracer")) (hsPkgs."fmt" or (errorHandler.buildDepError "fmt")) diff --git a/nix/.stack.nix/contra-tracer.nix b/nix/.stack.nix/contra-tracer.nix index e85993bd070..175739b0f44 100644 --- a/nix/.stack.nix/contra-tracer.nix +++ b/nix/.stack.nix/contra-tracer.nix @@ -34,8 +34,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/iohk-monitoring-framework"; - rev = "f6ab0631275d04dff1b990283bbf9671093e7505"; - sha256 = "0hknkpjmfgdlcag9p0z0xspxm7nxl696ajbnafi1b0vzxnkiyhdx"; + rev = "808724ff8a19a33d0ed06f9ef59fbd900b08553c"; + sha256 = "0298dpl29gxzs9as9ha6y0w18hqwc00ipa3hzkxv7nlfrjjz8hmz"; }); postUnpack = "sourceRoot+=/contra-tracer; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/default.nix b/nix/.stack.nix/default.nix index ad2c341033a..5f5f21bd518 100644 --- a/nix/.stack.nix/default.nix +++ b/nix/.stack.nix/default.nix @@ -40,9 +40,10 @@ cardano-binary = ./cardano-binary.nix; cardano-binary-test = ./cardano-binary-test.nix; cardano-crypto-class = ./cardano-crypto-class.nix; - cardano-crypto-tests = ./cardano-crypto-tests.nix; cardano-crypto-praos = ./cardano-crypto-praos.nix; + cardano-crypto-tests = ./cardano-crypto-tests.nix; cardano-slotting = ./cardano-slotting.nix; + strict-containers = ./strict-containers.nix; cardano-crypto = ./cardano-crypto.nix; byron-spec-chain = ./byron-spec-chain.nix; cardano-crypto-wrapper = ./cardano-crypto-wrapper.nix; @@ -50,19 +51,20 @@ byron-spec-ledger = ./byron-spec-ledger.nix; cardano-ledger-byron = ./cardano-ledger-byron.nix; cardano-ledger-byron-test = ./cardano-ledger-byron-test.nix; + cardano-ledger-core = ./cardano-ledger-core.nix; small-steps = ./small-steps.nix; small-steps-test = ./small-steps-test.nix; shelley-spec-non-integral = ./shelley-spec-non-integral.nix; shelley-spec-ledger = ./shelley-spec-ledger.nix; shelley-spec-ledger-test = ./shelley-spec-ledger-test.nix; cardano-ledger-shelley-ma = ./cardano-ledger-shelley-ma.nix; + cardano-ledger-shelley-ma-test = ./cardano-ledger-shelley-ma-test.nix; cardano-api = ./cardano-api.nix; cardano-api-test = ./cardano-api-test.nix; cardano-cli = ./cardano-cli.nix; cardano-config = ./cardano-config.nix; cardano-node = ./cardano-node.nix; cardano-node-chairman = ./cardano-node-chairman.nix; - hedgehog-extras = ./hedgehog-extras.nix; cardano-prelude = ./cardano-prelude.nix; cardano-prelude-test = ./cardano-prelude-test.nix; cardano-sl-x509 = ./cardano-sl-x509.nix; @@ -84,6 +86,7 @@ ouroboros-consensus-shelley = ./ouroboros-consensus-shelley.nix; ouroboros-network = ./ouroboros-network.nix; ouroboros-network-framework = ./ouroboros-network-framework.nix; + ouroboros-network-testing = ./ouroboros-network-testing.nix; typed-protocols = ./typed-protocols.nix; typed-protocols-examples = ./typed-protocols-examples.nix; cardano-client = ./cardano-client.nix; diff --git a/nix/.stack.nix/io-sim-classes.nix b/nix/.stack.nix/io-sim-classes.nix index 6c7713a33f8..a526712b35a 100644 --- a/nix/.stack.nix/io-sim-classes.nix +++ b/nix/.stack.nix/io-sim-classes.nix @@ -51,8 +51,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/io-sim-classes; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/io-sim.nix b/nix/.stack.nix/io-sim.nix index 566e0937bb7..e0b38b831a2 100644 --- a/nix/.stack.nix/io-sim.nix +++ b/nix/.stack.nix/io-sim.nix @@ -56,8 +56,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/io-sim; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/iohk-monitoring.nix b/nix/.stack.nix/iohk-monitoring.nix index 247d281d5c0..e66bf852302 100644 --- a/nix/.stack.nix/iohk-monitoring.nix +++ b/nix/.stack.nix/iohk-monitoring.nix @@ -108,8 +108,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/iohk-monitoring-framework"; - rev = "f6ab0631275d04dff1b990283bbf9671093e7505"; - sha256 = "0hknkpjmfgdlcag9p0z0xspxm7nxl696ajbnafi1b0vzxnkiyhdx"; + rev = "808724ff8a19a33d0ed06f9ef59fbd900b08553c"; + sha256 = "0298dpl29gxzs9as9ha6y0w18hqwc00ipa3hzkxv7nlfrjjz8hmz"; }); postUnpack = "sourceRoot+=/iohk-monitoring; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/lobemo-backend-aggregation.nix b/nix/.stack.nix/lobemo-backend-aggregation.nix index 69a29718e14..40f422f4610 100644 --- a/nix/.stack.nix/lobemo-backend-aggregation.nix +++ b/nix/.stack.nix/lobemo-backend-aggregation.nix @@ -47,8 +47,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/iohk-monitoring-framework"; - rev = "f6ab0631275d04dff1b990283bbf9671093e7505"; - sha256 = "0hknkpjmfgdlcag9p0z0xspxm7nxl696ajbnafi1b0vzxnkiyhdx"; + rev = "808724ff8a19a33d0ed06f9ef59fbd900b08553c"; + sha256 = "0298dpl29gxzs9as9ha6y0w18hqwc00ipa3hzkxv7nlfrjjz8hmz"; }); postUnpack = "sourceRoot+=/plugins/backend-aggregation; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/lobemo-backend-ekg.nix b/nix/.stack.nix/lobemo-backend-ekg.nix index d928eca2c2d..bc4d5778b68 100644 --- a/nix/.stack.nix/lobemo-backend-ekg.nix +++ b/nix/.stack.nix/lobemo-backend-ekg.nix @@ -47,8 +47,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/iohk-monitoring-framework"; - rev = "f6ab0631275d04dff1b990283bbf9671093e7505"; - sha256 = "0hknkpjmfgdlcag9p0z0xspxm7nxl696ajbnafi1b0vzxnkiyhdx"; + rev = "808724ff8a19a33d0ed06f9ef59fbd900b08553c"; + sha256 = "0298dpl29gxzs9as9ha6y0w18hqwc00ipa3hzkxv7nlfrjjz8hmz"; }); postUnpack = "sourceRoot+=/plugins/backend-ekg; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/lobemo-backend-monitoring.nix b/nix/.stack.nix/lobemo-backend-monitoring.nix index 334ef5aa0d5..65f7f1c5f5f 100644 --- a/nix/.stack.nix/lobemo-backend-monitoring.nix +++ b/nix/.stack.nix/lobemo-backend-monitoring.nix @@ -83,8 +83,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/iohk-monitoring-framework"; - rev = "f6ab0631275d04dff1b990283bbf9671093e7505"; - sha256 = "0hknkpjmfgdlcag9p0z0xspxm7nxl696ajbnafi1b0vzxnkiyhdx"; + rev = "808724ff8a19a33d0ed06f9ef59fbd900b08553c"; + sha256 = "0298dpl29gxzs9as9ha6y0w18hqwc00ipa3hzkxv7nlfrjjz8hmz"; }); postUnpack = "sourceRoot+=/plugins/backend-monitoring; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/lobemo-backend-trace-forwarder.nix b/nix/.stack.nix/lobemo-backend-trace-forwarder.nix index b9be7637d31..1d9234e732e 100644 --- a/nix/.stack.nix/lobemo-backend-trace-forwarder.nix +++ b/nix/.stack.nix/lobemo-backend-trace-forwarder.nix @@ -47,8 +47,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/iohk-monitoring-framework"; - rev = "f6ab0631275d04dff1b990283bbf9671093e7505"; - sha256 = "0hknkpjmfgdlcag9p0z0xspxm7nxl696ajbnafi1b0vzxnkiyhdx"; + rev = "808724ff8a19a33d0ed06f9ef59fbd900b08553c"; + sha256 = "0298dpl29gxzs9as9ha6y0w18hqwc00ipa3hzkxv7nlfrjjz8hmz"; }); postUnpack = "sourceRoot+=/plugins/backend-trace-forwarder; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/lobemo-scribe-systemd.nix b/nix/.stack.nix/lobemo-scribe-systemd.nix index 92f150b6811..dea0e036b5e 100644 --- a/nix/.stack.nix/lobemo-scribe-systemd.nix +++ b/nix/.stack.nix/lobemo-scribe-systemd.nix @@ -48,8 +48,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/iohk-monitoring-framework"; - rev = "f6ab0631275d04dff1b990283bbf9671093e7505"; - sha256 = "0hknkpjmfgdlcag9p0z0xspxm7nxl696ajbnafi1b0vzxnkiyhdx"; + rev = "808724ff8a19a33d0ed06f9ef59fbd900b08553c"; + sha256 = "0298dpl29gxzs9as9ha6y0w18hqwc00ipa3hzkxv7nlfrjjz8hmz"; }); postUnpack = "sourceRoot+=/plugins/scribe-systemd; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/network-mux.nix b/nix/.stack.nix/network-mux.nix index 09640a2f400..4f3543ae7d9 100644 --- a/nix/.stack.nix/network-mux.nix +++ b/nix/.stack.nix/network-mux.nix @@ -119,8 +119,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/network-mux; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/ntp-client.nix b/nix/.stack.nix/ntp-client.nix index 026c7ca3d34..81d40f7f4e3 100644 --- a/nix/.stack.nix/ntp-client.nix +++ b/nix/.stack.nix/ntp-client.nix @@ -67,8 +67,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/ntp-client; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/ouroboros-consensus-byron.nix b/nix/.stack.nix/ouroboros-consensus-byron.nix index 1722444045c..611b86179a0 100644 --- a/nix/.stack.nix/ouroboros-consensus-byron.nix +++ b/nix/.stack.nix/ouroboros-consensus-byron.nix @@ -76,8 +76,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/ouroboros-consensus-byron; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/ouroboros-consensus-cardano.nix b/nix/.stack.nix/ouroboros-consensus-cardano.nix index fdb3fbd0669..caba3b0d9ee 100644 --- a/nix/.stack.nix/ouroboros-consensus-cardano.nix +++ b/nix/.stack.nix/ouroboros-consensus-cardano.nix @@ -42,6 +42,7 @@ (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) (hsPkgs."cardano-crypto-wrapper" or (errorHandler.buildDepError "cardano-crypto-wrapper")) (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) @@ -62,6 +63,7 @@ (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) (hsPkgs."cardano-crypto-wrapper" or (errorHandler.buildDepError "cardano-crypto-wrapper")) (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-ledger-shelley-ma" or (errorHandler.buildDepError "cardano-ledger-shelley-ma")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) @@ -71,6 +73,7 @@ (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) (hsPkgs."optparse-applicative" or (errorHandler.buildDepError "optparse-applicative")) (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."text" or (errorHandler.buildDepError "text")) (hsPkgs."ouroboros-consensus" or (errorHandler.buildDepError "ouroboros-consensus")) (hsPkgs."ouroboros-consensus-byron" or (errorHandler.buildDepError "ouroboros-consensus-byron")) @@ -85,8 +88,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/ouroboros-consensus-cardano; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/ouroboros-consensus-mock.nix b/nix/.stack.nix/ouroboros-consensus-mock.nix index 37da656bfe2..d621d71aa93 100644 --- a/nix/.stack.nix/ouroboros-consensus-mock.nix +++ b/nix/.stack.nix/ouroboros-consensus-mock.nix @@ -50,8 +50,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/ouroboros-consensus-mock; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/ouroboros-consensus-shelley.nix b/nix/.stack.nix/ouroboros-consensus-shelley.nix index 7158b1898ba..ebf340515df 100644 --- a/nix/.stack.nix/ouroboros-consensus-shelley.nix +++ b/nix/.stack.nix/ouroboros-consensus-shelley.nix @@ -34,6 +34,7 @@ (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) (hsPkgs."cardano-crypto-praos" or (errorHandler.buildDepError "cardano-crypto-praos")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) @@ -42,6 +43,7 @@ (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) (hsPkgs."nothunks" or (errorHandler.buildDepError "nothunks")) (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."text" or (errorHandler.buildDepError "text")) (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) (hsPkgs."cardano-ledger-shelley-ma" or (errorHandler.buildDepError "cardano-ledger-shelley-ma")) @@ -57,8 +59,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/ouroboros-consensus-shelley; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/ouroboros-consensus.nix b/nix/.stack.nix/ouroboros-consensus.nix index 1218b504b7c..c18709a9346 100644 --- a/nix/.stack.nix/ouroboros-consensus.nix +++ b/nix/.stack.nix/ouroboros-consensus.nix @@ -54,6 +54,7 @@ (hsPkgs."sop-core" or (errorHandler.buildDepError "sop-core")) (hsPkgs."stm" or (errorHandler.buildDepError "stm")) (hsPkgs."streaming" or (errorHandler.buildDepError "streaming")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."text" or (errorHandler.buildDepError "text")) (hsPkgs."these" or (errorHandler.buildDepError "these")) (hsPkgs."time" or (errorHandler.buildDepError "time")) @@ -76,8 +77,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/ouroboros-consensus; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/ouroboros-network-framework.nix b/nix/.stack.nix/ouroboros-network-framework.nix index bc636231555..93a3bae34e1 100644 --- a/nix/.stack.nix/ouroboros-network-framework.nix +++ b/nix/.stack.nix/ouroboros-network-framework.nix @@ -116,8 +116,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/ouroboros-network-framework; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/ouroboros-network-testing.nix b/nix/.stack.nix/ouroboros-network-testing.nix index 0bf8e47dd5d..3716e50b58c 100644 --- a/nix/.stack.nix/ouroboros-network-testing.nix +++ b/nix/.stack.nix/ouroboros-network-testing.nix @@ -27,7 +27,9 @@ "library" = { depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."contra-tracer" or (errorHandler.buildDepError "contra-tracer")) (hsPkgs."io-sim" or (errorHandler.buildDepError "io-sim")) + (hsPkgs."io-sim-classes" or (errorHandler.buildDepError "io-sim-classes")) (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) @@ -38,8 +40,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "f0eb6e439e7c0121476ded5e88d2f638e8aa36ac"; - sha256 = "0pii9myzb5ckf2vagd9b7fsmk78w72z8lw3zyyfzw58dyapy5c70"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/ouroboros-network-testing; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/ouroboros-network.nix b/nix/.stack.nix/ouroboros-network.nix index 8f36260c4c5..9801a423e6a 100644 --- a/nix/.stack.nix/ouroboros-network.nix +++ b/nix/.stack.nix/ouroboros-network.nix @@ -43,6 +43,7 @@ (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) (hsPkgs."random" or (errorHandler.buildDepError "random")) (hsPkgs."stm" or (errorHandler.buildDepError "stm")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) @@ -67,6 +68,7 @@ (hsPkgs."pipes" or (errorHandler.buildDepError "pipes")) (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) (hsPkgs."text" or (errorHandler.buildDepError "text")) @@ -77,6 +79,7 @@ (hsPkgs."io-sim-classes" or (errorHandler.buildDepError "io-sim-classes")) (hsPkgs."ouroboros-network" or (errorHandler.buildDepError "ouroboros-network")) (hsPkgs."ouroboros-network-framework" or (errorHandler.buildDepError "ouroboros-network-framework")) + (hsPkgs."ouroboros-network-testing" or (errorHandler.buildDepError "ouroboros-network-testing")) (hsPkgs."typed-protocols" or (errorHandler.buildDepError "typed-protocols")) ]; buildable = true; @@ -129,6 +132,7 @@ (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) (hsPkgs."splitmix" or (errorHandler.buildDepError "splitmix")) (hsPkgs."stm" or (errorHandler.buildDepError "stm")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) @@ -162,12 +166,16 @@ (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) (hsPkgs."fingertree" or (errorHandler.buildDepError "fingertree")) (hsPkgs."hashable" or (errorHandler.buildDepError "hashable")) + (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) (hsPkgs."pipes" or (errorHandler.buildDepError "pipes")) (hsPkgs."process-extras" or (errorHandler.buildDepError "process-extras")) (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) (hsPkgs."text" or (errorHandler.buildDepError "text")) + (hsPkgs."temporary" or (errorHandler.buildDepError "temporary")) (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) + (hsPkgs."quickcheck-instances" or (errorHandler.buildDepError "quickcheck-instances")) (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) + (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) @@ -187,8 +195,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/ouroboros-network; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/shelley-spec-ledger-test.nix b/nix/.stack.nix/shelley-spec-ledger-test.nix index 22bfbcd53cd..e706239700d 100644 --- a/nix/.stack.nix/shelley-spec-ledger-test.nix +++ b/nix/.stack.nix/shelley-spec-ledger-test.nix @@ -36,6 +36,7 @@ (hsPkgs."cardano-crypto" or (errorHandler.buildDepError "cardano-crypto")) (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) (hsPkgs."cardano-ledger-byron-test" or (errorHandler.buildDepError "cardano-ledger-byron-test")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-prelude-test" or (errorHandler.buildDepError "cardano-prelude-test")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) @@ -53,6 +54,7 @@ (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) (hsPkgs."small-steps-test" or (errorHandler.buildDepError "small-steps-test")) (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) @@ -78,6 +80,7 @@ (hsPkgs."cardano-crypto" or (errorHandler.buildDepError "cardano-crypto")) (hsPkgs."cardano-ledger-byron-test" or (errorHandler.buildDepError "cardano-ledger-byron-test")) (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-prelude-test" or (errorHandler.buildDepError "cardano-prelude-test")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) @@ -95,6 +98,7 @@ (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) (hsPkgs."small-steps-test" or (errorHandler.buildDepError "small-steps-test")) (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."tasty-hedgehog" or (errorHandler.buildDepError "tasty-hedgehog")) (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) @@ -112,6 +116,7 @@ (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) (hsPkgs."cardano-crypto-praos" or (errorHandler.buildDepError "cardano-crypto-praos")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) @@ -124,6 +129,7 @@ (hsPkgs."shelley-spec-ledger" or (errorHandler.buildDepError "shelley-spec-ledger")) (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) (hsPkgs."small-steps-test" or (errorHandler.buildDepError "small-steps-test")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) ]; buildable = true; @@ -133,8 +139,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/shelley/chain-and-ledger/shelley-spec-ledger-test; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/shelley-spec-ledger.nix b/nix/.stack.nix/shelley-spec-ledger.nix index 3749e41b5e4..8df080e778f 100644 --- a/nix/.stack.nix/shelley-spec-ledger.nix +++ b/nix/.stack.nix/shelley-spec-ledger.nix @@ -37,6 +37,7 @@ (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) (hsPkgs."cardano-crypto-wrapper" or (errorHandler.buildDepError "cardano-crypto-wrapper")) (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."cardano-ledger-core" or (errorHandler.buildDepError "cardano-ledger-core")) (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cardano-slotting" or (errorHandler.buildDepError "cardano-slotting")) (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) @@ -49,13 +50,13 @@ (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) (hsPkgs."network" or (errorHandler.buildDepError "network")) (hsPkgs."nothunks" or (errorHandler.buildDepError "nothunks")) - (hsPkgs."partial-order" or (errorHandler.buildDepError "partial-order")) (hsPkgs."prettyprinter" or (errorHandler.buildDepError "prettyprinter")) (hsPkgs."primitive" or (errorHandler.buildDepError "primitive")) (hsPkgs."quiet" or (errorHandler.buildDepError "quiet")) (hsPkgs."scientific" or (errorHandler.buildDepError "scientific")) (hsPkgs."shelley-spec-non-integral" or (errorHandler.buildDepError "shelley-spec-non-integral")) (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."text" or (errorHandler.buildDepError "text")) (hsPkgs."time" or (errorHandler.buildDepError "time")) (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) @@ -66,8 +67,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/shelley/chain-and-ledger/executable-spec; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/shelley-spec-non-integral.nix b/nix/.stack.nix/shelley-spec-non-integral.nix index ce072e707c2..9bf661ecd1a 100644 --- a/nix/.stack.nix/shelley-spec-non-integral.nix +++ b/nix/.stack.nix/shelley-spec-non-integral.nix @@ -43,8 +43,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/shelley/chain-and-ledger/dependencies/non-integer; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/small-steps-test.nix b/nix/.stack.nix/small-steps-test.nix index 4030dabf361..725e644d2af 100644 --- a/nix/.stack.nix/small-steps-test.nix +++ b/nix/.stack.nix/small-steps-test.nix @@ -36,21 +36,12 @@ (hsPkgs."nothunks" or (errorHandler.buildDepError "nothunks")) (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) - (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."small-steps" or (errorHandler.buildDepError "small-steps")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) ]; buildable = true; }; tests = { - "doctests" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - ] ++ (pkgs.lib).optional (compiler.isGhc && (compiler.version).lt "8.10") (hsPkgs."doctest" or (errorHandler.buildDepError "doctest")); - build-tools = [ - (hsPkgs.buildPackages.doctest-discover.components.exes.doctest-discover or (pkgs.buildPackages.doctest-discover or (errorHandler.buildToolDepError "doctest-discover:doctest-discover"))) - ]; - buildable = true; - }; "examples" = { depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) @@ -76,8 +67,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/semantics/small-steps-test; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/small-steps.nix b/nix/.stack.nix/small-steps.nix index 14e9209158e..8ee0d46a1fe 100644 --- a/nix/.stack.nix/small-steps.nix +++ b/nix/.stack.nix/small-steps.nix @@ -31,15 +31,16 @@ (hsPkgs."ansi-wl-pprint" or (errorHandler.buildDepError "ansi-wl-pprint")) (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."cardano-prelude" or (errorHandler.buildDepError "cardano-prelude")) (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) (hsPkgs."cryptonite" or (errorHandler.buildDepError "cryptonite")) (hsPkgs."data-default-class" or (errorHandler.buildDepError "data-default-class")) (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."formatting" or (errorHandler.buildDepError "formatting")) (hsPkgs."free" or (errorHandler.buildDepError "free")) (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) (hsPkgs."nothunks" or (errorHandler.buildDepError "nothunks")) + (hsPkgs."strict-containers" or (errorHandler.buildDepError "strict-containers")) (hsPkgs."text" or (errorHandler.buildDepError "text")) (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) @@ -47,23 +48,12 @@ ]; buildable = true; }; - tests = { - "doctests" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - ] ++ (pkgs.lib).optional (compiler.isGhc && (compiler.version).lt "8.10") (hsPkgs."doctest" or (errorHandler.buildDepError "doctest")); - build-tools = [ - (hsPkgs.buildPackages.doctest-discover.components.exes.doctest-discover or (pkgs.buildPackages.doctest-discover or (errorHandler.buildToolDepError "doctest-discover:doctest-discover"))) - ]; - buildable = true; - }; - }; }; } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/cardano-ledger-specs"; - rev = "2e0e7b625492e5e0182464247f4c26d6949ab6f7"; - sha256 = "14affgsf0yl0y5mf9c5r9d9jvah2crrvcslq5cc2h4wii1agl07z"; + rev = "e8f19bcc9c8f405131cb95ca6ada26b2b4eac638"; + sha256 = "1v36d3lyhmadzj0abdfsppjna7n7llzqzp9ikx5yq28l2kda2f1p"; }); postUnpack = "sourceRoot+=/semantics/executable-spec; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/strict-containers.nix b/nix/.stack.nix/strict-containers.nix new file mode 100644 index 00000000000..e9ec6f651e8 --- /dev/null +++ b/nix/.stack.nix/strict-containers.nix @@ -0,0 +1,50 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { development = false; }; + package = { + specVersion = "1.10"; + identifier = { name = "strict-containers"; version = "0.1.0.0"; }; + license = "Apache-2.0"; + copyright = "IOHK"; + maintainer = "operations@iohk.io"; + author = "IOHK"; + homepage = ""; + url = ""; + synopsis = "Various strict container types"; + description = ""; + buildType = "Simple"; + isLocal = true; + }; + components = { + "library" = { + depends = [ + (hsPkgs."aeson" or (errorHandler.buildDepError "aeson")) + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) + (hsPkgs."cborg" or (errorHandler.buildDepError "cborg")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."data-default-class" or (errorHandler.buildDepError "data-default-class")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."fingertree" or (errorHandler.buildDepError "fingertree")) + (hsPkgs."nothunks" or (errorHandler.buildDepError "nothunks")) + (hsPkgs."serialise" or (errorHandler.buildDepError "serialise")) + ]; + buildable = true; + }; + }; + } // { + src = (pkgs.lib).mkDefault (pkgs.fetchgit { + url = "https://github.com/input-output-hk/cardano-base"; + rev = "47db5b818ca4fa051f2e44cdf5e7c5c18c1fb0bf"; + sha256 = "0fr0r5dwfmsp15j19xh20js8nzsqyhwx4q797rxsvpyjfabb2y11"; + }); + postUnpack = "sourceRoot+=/strict-containers; echo source root reset to \$sourceRoot"; + } \ No newline at end of file diff --git a/nix/.stack.nix/tracer-transformers.nix b/nix/.stack.nix/tracer-transformers.nix index 7626a3192a6..d70e563739d 100644 --- a/nix/.stack.nix/tracer-transformers.nix +++ b/nix/.stack.nix/tracer-transformers.nix @@ -57,8 +57,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/iohk-monitoring-framework"; - rev = "f6ab0631275d04dff1b990283bbf9671093e7505"; - sha256 = "0hknkpjmfgdlcag9p0z0xspxm7nxl696ajbnafi1b0vzxnkiyhdx"; + rev = "808724ff8a19a33d0ed06f9ef59fbd900b08553c"; + sha256 = "0298dpl29gxzs9as9ha6y0w18hqwc00ipa3hzkxv7nlfrjjz8hmz"; }); postUnpack = "sourceRoot+=/tracer-transformers; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/typed-protocols-examples.nix b/nix/.stack.nix/typed-protocols-examples.nix index 9661d514f09..f398dfee873 100644 --- a/nix/.stack.nix/typed-protocols-examples.nix +++ b/nix/.stack.nix/typed-protocols-examples.nix @@ -57,8 +57,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/typed-protocols-examples; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/nix/.stack.nix/typed-protocols.nix b/nix/.stack.nix/typed-protocols.nix index d13c1a2bf6c..8c9683484ea 100644 --- a/nix/.stack.nix/typed-protocols.nix +++ b/nix/.stack.nix/typed-protocols.nix @@ -35,8 +35,8 @@ } // { src = (pkgs.lib).mkDefault (pkgs.fetchgit { url = "https://github.com/input-output-hk/ouroboros-network"; - rev = "7f90c8c59ffc7d61a4e161e886d8962a9c26787a"; - sha256 = "0hnw6hvbyny3wniaqw8d37l4ysgp8xrq5d84fapxfm525a4hfs0x"; + rev = "9b279c7548ee549e1ed755cd1acb69b6e69d0c7b"; + sha256 = "0d7bk9vzmhhb2z4ns2qw7f1vz6lr186m98sh8wvrnfpxk3z86dxb"; }); postUnpack = "sourceRoot+=/typed-protocols; echo source root reset to \$sourceRoot"; } \ No newline at end of file diff --git a/stack.yaml b/stack.yaml index f0d848a076b..8fbc1dc024c 100644 --- a/stack.yaml +++ b/stack.yaml @@ -3,7 +3,7 @@ # # NOTE: Remember to update the version matrix in README.md when # bumping the Cardano version. -resolver: https://raw.githubusercontent.com/input-output-hk/cardano-haskell/a28898ff0bed737087c74d349c3c7e6b60edb719/snapshots/cardano-1.26.2.yaml +resolver: https://raw.githubusercontent.com/input-output-hk/cardano-haskell/a79b6d536ac082596194ba02a50ae4c272d404fe/snapshots/cardano-1.27.0.yaml packages: - lib/core