Skip to content

Commit

Permalink
Add mkBasicTxAuxData and metadataTxAuxDataL to EraTxAuxData typ…
Browse files Browse the repository at this point in the history
…e class.
  • Loading branch information
lehins committed Apr 16, 2024
1 parent 8931d44 commit e202e39
Show file tree
Hide file tree
Showing 22 changed files with 69 additions and 16 deletions.
1 change: 1 addition & 0 deletions eras/allegra/impl/CHANGELOG.md
Expand Up @@ -3,6 +3,7 @@
## 1.4.1.0

* Add a `ToJSON` instance for `ValidityInterval`
* Add `metadataAllegraTxAuxDataL`

## 1.4.0.0

Expand Down
2 changes: 1 addition & 1 deletion eras/allegra/impl/cardano-ledger-allegra.cabal
Expand Up @@ -67,7 +67,7 @@ library
bytestring,
cardano-crypto-class,
cardano-ledger-binary ^>=1.3,
cardano-ledger-core ^>=1.11,
cardano-ledger-core ^>=1.12,
cardano-ledger-shelley ^>=1.10,
cardano-strict-containers,
cardano-slotting,
Expand Down
11 changes: 11 additions & 0 deletions eras/allegra/impl/src/Cardano/Ledger/Allegra/TxAuxData.hs
Expand Up @@ -19,6 +19,7 @@
module Cardano.Ledger.Allegra.TxAuxData (
AllegraTxAuxData (AllegraTxAuxData),
AllegraTxAuxDataRaw,
metadataAllegraTxAuxDataL,

-- * Deprecations
AuxiliaryData,
Expand Down Expand Up @@ -51,6 +52,7 @@ import Cardano.Ledger.MemoBytes (
Memoized (RawType),
getMemoRawType,
getMemoSafeHash,
lensMemoRawType,
mkMemoized,
)
import Cardano.Ledger.SafeHash (HashAnnotated, SafeToHash, hashAnnotated)
Expand All @@ -71,6 +73,7 @@ import Data.Sequence.Strict (StrictSeq)
import qualified Data.Sequence.Strict as StrictSeq
import Data.Word (Word64)
import GHC.Generics (Generic)
import Lens.Micro (Lens')
import NoThunks.Class (NoThunks)

-- =======================================
Expand All @@ -90,12 +93,20 @@ data AllegraTxAuxDataRaw era = AllegraTxAuxDataRaw
instance Crypto c => EraTxAuxData (AllegraEra c) where
type TxAuxData (AllegraEra c) = AllegraTxAuxData (AllegraEra c)

mkBasicTxAuxData = AllegraTxAuxData mempty mempty

metadataTxAuxDataL = metadataAllegraTxAuxDataL

upgradeTxAuxData (ShelleyTxAuxData md) = AllegraTxAuxData md mempty

validateTxAuxData _ (AllegraTxAuxData md as) = as `deepseq` all validMetadatum md

hashTxAuxData aux = AuxiliaryDataHash (hashAnnotated aux)

metadataAllegraTxAuxDataL :: Era era => Lens' (AllegraTxAuxData era) (Map Word64 Metadatum)
metadataAllegraTxAuxDataL =
lensMemoRawType atadrMetadata $ \txAuxDataRaw md -> txAuxDataRaw {atadrMetadata = md}

deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (AllegraTxAuxDataRaw era)

deriving instance Era era => NoThunks (AllegraTxAuxDataRaw era)
Expand Down
1 change: 1 addition & 0 deletions eras/alonzo/impl/CHANGELOG.md
Expand Up @@ -5,6 +5,7 @@
* Change the type of the balance field in `InsufficientCollateral` to `DeltaCoin`
* Add `ToJSON` instances for `FailureDescription` and `TagMismatchDescription`
* Undeprecate `redeemerPointer`.
* Add `metadataAlonzoTxAuxDataL`.

## 1.7.0.0

Expand Down
2 changes: 1 addition & 1 deletion eras/alonzo/impl/cardano-ledger-alonzo.cabal
Expand Up @@ -79,7 +79,7 @@ library
cardano-ledger-allegra ^>=1.4,
cardano-crypto-class,
cardano-ledger-binary ^>=1.3,
cardano-ledger-core ^>=1.11,
cardano-ledger-core ^>=1.12,
cardano-ledger-mary ^>=1.5,
cardano-ledger-shelley ^>=1.10,
cardano-slotting,
Expand Down
11 changes: 11 additions & 0 deletions eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxAuxData.hs
Expand Up @@ -37,6 +37,7 @@ module Cardano.Ledger.Alonzo.TxAuxData (
validateAlonzoTxAuxData,
getAlonzoTxAuxDataScripts,
translateAlonzoTxAuxData,
metadataAlonzoTxAuxDataL,

-- * Deprecated
AuxiliaryData,
Expand Down Expand Up @@ -77,6 +78,7 @@ import Cardano.Ledger.MemoBytes (
Memoized (RawType),
getMemoRawType,
getMemoSafeHash,
lensMemoRawType,
mkMemoized,
)
import Cardano.Ledger.Plutus.Language (Language (..), PlutusBinary (..), guardPlutus)
Expand All @@ -93,6 +95,7 @@ import qualified Data.Sequence.Strict as StrictSeq
import Data.Word (Word64)
import GHC.Generics (Generic)
import GHC.Stack
import Lens.Micro (Lens')
import NoThunks.Class (InspectHeapNamed (..), NoThunks)

-- =============================================================================
Expand Down Expand Up @@ -254,6 +257,10 @@ type AuxiliaryData era = AlonzoTxAuxData era
instance Crypto c => EraTxAuxData (AlonzoEra c) where
type TxAuxData (AlonzoEra c) = AlonzoTxAuxData (AlonzoEra c)

mkBasicTxAuxData = AlonzoTxAuxData mempty mempty mempty

metadataTxAuxDataL = metadataAlonzoTxAuxDataL

upgradeTxAuxData (AllegraTxAuxData md scripts) =
mkMemoized $
AlonzoTxAuxDataRaw
Expand All @@ -266,6 +273,10 @@ instance Crypto c => EraTxAuxData (AlonzoEra c) where

validateTxAuxData = validateAlonzoTxAuxData

metadataAlonzoTxAuxDataL :: Era era => Lens' (AlonzoTxAuxData era) (Map Word64 Metadatum)
metadataAlonzoTxAuxDataL =
lensMemoRawType atadrMetadata $ \txAuxDataRaw md -> txAuxDataRaw {atadrMetadata = md}

hashAlonzoTxAuxData ::
(HashAlgorithm (HASH c), HashAnnotated x EraIndependentTxAuxData c) =>
x ->
Expand Down
2 changes: 1 addition & 1 deletion eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal
Expand Up @@ -46,7 +46,7 @@ library
bytestring,
cardano-ledger-alonzo:{cardano-ledger-alonzo, testlib} >=1.7,
cardano-ledger-binary:{cardano-ledger-binary, testlib} >=1.0,
cardano-ledger-core:{cardano-ledger-core, testlib} >=1.11 && <1.12,
cardano-ledger-core:{cardano-ledger-core, testlib} >=1.11 && <1.13,
cardano-ledger-allegra >=1.2,
cardano-ledger-shelley:{cardano-ledger-shelley, testlib} >=1.6 && <1.11,
cardano-ledger-shelley-test >=1.2,
Expand Down
2 changes: 1 addition & 1 deletion eras/babbage/impl/cardano-ledger-babbage.cabal
Expand Up @@ -75,7 +75,7 @@ library
cardano-ledger-allegra ^>=1.4,
cardano-ledger-alonzo ^>=1.8,
cardano-ledger-binary ^>=1.3,
cardano-ledger-core ^>=1.11,
cardano-ledger-core ^>=1.12,
cardano-ledger-mary ^>=1.5,
cardano-ledger-shelley ^>=1.10,
cardano-strict-containers,
Expand Down
7 changes: 6 additions & 1 deletion eras/babbage/impl/src/Cardano/Ledger/Babbage/TxAuxData.hs
Expand Up @@ -4,8 +4,9 @@
module Cardano.Ledger.Babbage.TxAuxData () where

import Cardano.Ledger.Alonzo.TxAuxData (
AlonzoTxAuxData,
AlonzoTxAuxData (..),
hashAlonzoTxAuxData,
metadataAlonzoTxAuxDataL,
translateAlonzoTxAuxData,
validateAlonzoTxAuxData,
)
Expand All @@ -17,6 +18,10 @@ import Cardano.Ledger.Crypto
instance Crypto c => EraTxAuxData (BabbageEra c) where
type TxAuxData (BabbageEra c) = AlonzoTxAuxData (BabbageEra c)

mkBasicTxAuxData = AlonzoTxAuxData mempty mempty mempty

metadataTxAuxDataL = metadataAlonzoTxAuxDataL

upgradeTxAuxData = translateAlonzoTxAuxData

hashTxAuxData = hashAlonzoTxAuxData
Expand Down
2 changes: 1 addition & 1 deletion eras/conway/impl/cardano-ledger-conway.cabal
Expand Up @@ -90,7 +90,7 @@ library
cardano-ledger-allegra ^>=1.4,
cardano-ledger-alonzo ^>=1.8,
cardano-ledger-babbage ^>=1.8,
cardano-ledger-core ^>=1.11,
cardano-ledger-core ^>=1.12,
cardano-ledger-mary ^>=1.5,
cardano-ledger-shelley ^>=1.10,
cardano-slotting,
Expand Down
7 changes: 6 additions & 1 deletion eras/conway/impl/src/Cardano/Ledger/Conway/TxAuxData.hs
Expand Up @@ -4,8 +4,9 @@
module Cardano.Ledger.Conway.TxAuxData () where

import Cardano.Ledger.Alonzo.TxAuxData (
AlonzoTxAuxData,
AlonzoTxAuxData (..),
hashAlonzoTxAuxData,
metadataAlonzoTxAuxDataL,
translateAlonzoTxAuxData,
validateAlonzoTxAuxData,
)
Expand All @@ -17,6 +18,10 @@ import Cardano.Ledger.Crypto
instance Crypto c => EraTxAuxData (ConwayEra c) where
type TxAuxData (ConwayEra c) = AlonzoTxAuxData (ConwayEra c)

mkBasicTxAuxData = AlonzoTxAuxData mempty mempty mempty

metadataTxAuxDataL = metadataAlonzoTxAuxDataL

upgradeTxAuxData = translateAlonzoTxAuxData

hashTxAuxData = hashAlonzoTxAuxData
Expand Down
6 changes: 3 additions & 3 deletions eras/mary/impl/cardano-ledger-mary.cabal
@@ -1,6 +1,6 @@
cabal-version: 3.0
name: cardano-ledger-mary
version: 1.5.1.0
version: 1.5.1.1
license: Apache-2.0
maintainer: operations@iohk.io
author: IOHK
Expand Down Expand Up @@ -74,9 +74,9 @@ library
aeson >=2.2,
cardano-crypto-class,
cardano-data ^>=1.2,
cardano-ledger-allegra ^>=1.4,
cardano-ledger-allegra ^>=1.4.1,
cardano-ledger-binary ^>=1.3,
cardano-ledger-core ^>=1.11,
cardano-ledger-core ^>=1.12,
cardano-ledger-shelley ^>=1.10,
containers,
deepseq,
Expand Down
6 changes: 5 additions & 1 deletion eras/mary/impl/src/Cardano/Ledger/Mary/TxAuxData.hs
Expand Up @@ -12,7 +12,7 @@ module Cardano.Ledger.Mary.TxAuxData (
)
where

import Cardano.Ledger.Allegra.TxAuxData
import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..), metadataAllegraTxAuxDataL)
import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..))
import Cardano.Ledger.Core (EraTxAuxData (..), upgradeScript)
import Cardano.Ledger.Crypto (Crypto)
Expand All @@ -27,6 +27,10 @@ import Control.DeepSeq (deepseq)
instance Crypto c => EraTxAuxData (MaryEra c) where
type TxAuxData (MaryEra c) = AllegraTxAuxData (MaryEra c)

mkBasicTxAuxData = AllegraTxAuxData mempty mempty

metadataTxAuxDataL = metadataAllegraTxAuxDataL

upgradeTxAuxData (AllegraTxAuxData md scripts) = AllegraTxAuxData md $ upgradeScript <$> scripts

validateTxAuxData _ (AllegraTxAuxData md as) = as `deepseq` all validMetadatum md
Expand Down
2 changes: 1 addition & 1 deletion eras/shelley/impl/cardano-ledger-shelley.cabal
Expand Up @@ -108,7 +108,7 @@ library
cardano-data ^>=1.2.2,
cardano-ledger-binary ^>=1.3,
cardano-ledger-byron,
cardano-ledger-core ^>=1.11.1,
cardano-ledger-core ^>=1.12,
cardano-slotting,
vector-map ^>=1.1,
containers,
Expand Down
6 changes: 6 additions & 0 deletions eras/shelley/impl/src/Cardano/Ledger/Shelley/TxAuxData.hs
Expand Up @@ -47,6 +47,7 @@ import Cardano.Ledger.MemoBytes (
Memoized (RawType),
getMemoRawType,
getMemoSafeHash,
lensMemoRawType,
mkMemoized,
)
import Cardano.Ledger.Metadata (Metadatum (..), validMetadatum)
Expand Down Expand Up @@ -107,6 +108,11 @@ type Metadata era = ShelleyTxAuxData era
instance Crypto c => EraTxAuxData (ShelleyEra c) where
type TxAuxData (ShelleyEra c) = ShelleyTxAuxData (ShelleyEra c)

mkBasicTxAuxData = ShelleyTxAuxData mempty

metadataTxAuxDataL =
lensMemoRawType stadrMetadata $ \txAuxDataRaw md -> txAuxDataRaw {stadrMetadata = md}

-- Calling this partial function will result in compilation error, since ByronEra has
-- no instance for EraTxOut type class.
upgradeTxAuxData = error "It is not possible to translate Byron TxOut with 'upgradeTxOut'"
Expand Down
4 changes: 2 additions & 2 deletions eras/shelley/test-suite/cardano-ledger-shelley-test.cabal
@@ -1,6 +1,6 @@
cabal-version: 3.0
name: cardano-ledger-shelley-test
version: 1.4.0.0
version: 1.4.0.1
license: Apache-2.0
maintainer: operations@iohk.io
author: IOHK
Expand Down Expand Up @@ -78,7 +78,7 @@ library
cardano-data >=1.2,
cardano-ledger-binary:{cardano-ledger-binary, testlib} >=1.3,
cardano-ledger-byron,
cardano-ledger-core:{cardano-ledger-core, testlib} ^>=1.11,
cardano-ledger-core:{cardano-ledger-core, testlib} >=1.11 && <1.13,
cardano-ledger-shelley:{cardano-ledger-shelley, testlib} ^>=1.10,
cardano-protocol-tpraos:{cardano-protocol-tpraos, testlib} >=1.0.1,
cardano-slotting:{cardano-slotting, testlib},
Expand Down
1 change: 1 addition & 0 deletions libs/cardano-ledger-api/CHANGELOG.md
Expand Up @@ -3,6 +3,7 @@
## 1.9.1.0

* Add `redeemerPointer` and `redeemerPointerInverse`.
* Export `mkBasicTxAuxData` and `metadataTxAuxDataL`.

## 1.9.0.0

Expand Down
2 changes: 1 addition & 1 deletion libs/cardano-ledger-api/cardano-ledger-api.cabal
Expand Up @@ -59,7 +59,7 @@ library
cardano-ledger-babbage ^>=1.8,
cardano-ledger-binary ^>=1.3,
cardano-ledger-conway ^>=1.13,
cardano-ledger-core ^>=1.11,
cardano-ledger-core ^>=1.12,
cardano-ledger-mary ^>=1.5,
cardano-ledger-shelley ^>=1.10,
cardano-slotting,
Expand Down
2 changes: 2 additions & 0 deletions libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/AuxData.hs
@@ -1,5 +1,7 @@
module Cardano.Ledger.Api.Tx.AuxData (
EraTxAuxData (TxAuxData),
mkBasicTxAuxData,
metadataTxAuxDataL,
upgradeTxAuxData,
hashTxAuxData,
validateTxAuxData,
Expand Down
1 change: 1 addition & 0 deletions libs/cardano-ledger-core/CHANGELOG.md
Expand Up @@ -8,6 +8,7 @@
* Add functions `rdRewardCoin`, `rdDepositCoin` in UMap.hs
* Add function `mkCoinTxOut` in Core.hs
* Move `Metadatum` from `cardano-ledger-shelley` into a new module `Cardano.Ledger.Metadata`
* Add `mkBasicTxAuxData` and `metadataTxAuxDataL` to `EraTxAuxData` type class.

### `testlib`

Expand Down
2 changes: 1 addition & 1 deletion libs/cardano-ledger-core/cardano-ledger-core.cabal
@@ -1,6 +1,6 @@
cabal-version: 3.0
name: cardano-ledger-core
version: 1.11.1.0
version: 1.12.0.0
license: Apache-2.0
maintainer: operations@iohk.io
author: IOHK
Expand Down
5 changes: 5 additions & 0 deletions libs/cardano-ledger-core/src/Cardano/Ledger/Core.hs
Expand Up @@ -102,6 +102,7 @@ import Cardano.Ledger.Keys (KeyHash, KeyRole (..))
import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness)
import Cardano.Ledger.Keys.WitVKey (WitVKey)
import Cardano.Ledger.MemoBytes
import Cardano.Ledger.Metadata
import Cardano.Ledger.Rewards (Reward (..), RewardType (..))
import Cardano.Ledger.SafeHash (HashAnnotated (..), SafeToHash (..))
import Cardano.Ledger.TxIn (TxId (..), TxIn (..))
Expand Down Expand Up @@ -449,6 +450,10 @@ class
where
type TxAuxData era = (r :: Type) | r -> era

mkBasicTxAuxData :: TxAuxData era

metadataTxAuxDataL :: Lens' (TxAuxData era) (Map Word64 Metadatum)

-- | Every era, except Shelley, must be able to upgrade a `TxAuxData` from a previous
-- era.
--
Expand Down

0 comments on commit e202e39

Please sign in to comment.