Skip to content

Commit

Permalink
Introduce AllegraEraTxAuxData with timelockScriptsTxAuxDataL
Browse files Browse the repository at this point in the history
  • Loading branch information
lehins committed Apr 16, 2024
1 parent e202e39 commit a562f63
Show file tree
Hide file tree
Showing 11 changed files with 53 additions and 7 deletions.
2 changes: 2 additions & 0 deletions eras/allegra/impl/CHANGELOG.md
Expand Up @@ -4,6 +4,8 @@

* Add a `ToJSON` instance for `ValidityInterval`
* Add `metadataAllegraTxAuxDataL`
* Add `AllegraEraTxAuxData` with `timelockScriptsTxAuxDataL` and helper
`timelockScriptsAllegraTxAuxDataL`

## 1.4.0.0

Expand Down
2 changes: 2 additions & 0 deletions eras/allegra/impl/src/Cardano/Ledger/Allegra/Core.hs
@@ -1,11 +1,13 @@
module Cardano.Ledger.Allegra.Core (
AllegraEraTxBody (..),
ValidityInterval (..),
AllegraEraTxAuxData (..),
module Cardano.Ledger.Shelley.Core,
)
where

import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..))
import Cardano.Ledger.Allegra.Tx ()
import Cardano.Ledger.Allegra.TxAuxData (AllegraEraTxAuxData (..))
import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (..))
import Cardano.Ledger.Shelley.Core
14 changes: 14 additions & 0 deletions eras/allegra/impl/src/Cardano/Ledger/Allegra/TxAuxData.hs
Expand Up @@ -13,13 +13,16 @@
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Allegra.TxAuxData (
AllegraTxAuxData (AllegraTxAuxData),
AllegraTxAuxDataRaw,
metadataAllegraTxAuxDataL,
AllegraEraTxAuxData (..),
timelockScriptsAllegraTxAuxDataL,

-- * Deprecations
AuxiliaryData,
Expand Down Expand Up @@ -90,6 +93,9 @@ data AllegraTxAuxDataRaw era = AllegraTxAuxDataRaw
}
deriving (Generic, Eq)

class EraTxAuxData era => AllegraEraTxAuxData era where
timelockScriptsTxAuxDataL :: Lens' (TxAuxData era) (StrictSeq (Timelock era))

instance Crypto c => EraTxAuxData (AllegraEra c) where
type TxAuxData (AllegraEra c) = AllegraTxAuxData (AllegraEra c)

Expand All @@ -107,6 +113,14 @@ metadataAllegraTxAuxDataL :: Era era => Lens' (AllegraTxAuxData era) (Map Word64
metadataAllegraTxAuxDataL =
lensMemoRawType atadrMetadata $ \txAuxDataRaw md -> txAuxDataRaw {atadrMetadata = md}

instance Crypto c => AllegraEraTxAuxData (AllegraEra c) where
timelockScriptsTxAuxDataL = timelockScriptsAllegraTxAuxDataL

timelockScriptsAllegraTxAuxDataL ::
Era era => Lens' (AllegraTxAuxData era) (StrictSeq (Timelock era))
timelockScriptsAllegraTxAuxDataL =
lensMemoRawType atadrTimelock $ \txAuxDataRaw ts -> txAuxDataRaw {atadrTimelock = ts}

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

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

## 1.7.0.0

Expand Down
11 changes: 10 additions & 1 deletion eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxAuxData.hs
Expand Up @@ -38,6 +38,7 @@ module Cardano.Ledger.Alonzo.TxAuxData (
getAlonzoTxAuxDataScripts,
translateAlonzoTxAuxData,
metadataAlonzoTxAuxDataL,
timelockScriptsAlonzoTxAuxDataL,

-- * Deprecated
AuxiliaryData,
Expand All @@ -46,7 +47,7 @@ where

import Cardano.Crypto.Hash.Class (HashAlgorithm)
import Cardano.Ledger.Allegra.Scripts (Timelock, translateTimelock)
import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..))
import Cardano.Ledger.Allegra.TxAuxData (AllegraEraTxAuxData (..), AllegraTxAuxData (..))
import Cardano.Ledger.Alonzo.Era
import Cardano.Ledger.Alonzo.Scripts (
AlonzoEraScript (..),
Expand Down Expand Up @@ -292,6 +293,14 @@ validateAlonzoTxAuxData pv auxData@AlonzoTxAuxData {atadMetadata = metadata} =
all validMetadatum metadata
&& all (validScript pv) (getAlonzoTxAuxDataScripts auxData)

instance Crypto c => AllegraEraTxAuxData (AlonzoEra c) where
timelockScriptsTxAuxDataL = timelockScriptsAlonzoTxAuxDataL

timelockScriptsAlonzoTxAuxDataL ::
Era era => Lens' (AlonzoTxAuxData era) (StrictSeq (Timelock era))
timelockScriptsAlonzoTxAuxDataL =
lensMemoRawType atadrTimelock $ \txAuxDataRaw ts -> txAuxDataRaw {atadrTimelock = ts}

instance EraCrypto era ~ c => HashAnnotated (AuxiliaryData era) EraIndependentTxAuxData c where
hashAnnotated = getMemoSafeHash

Expand Down
6 changes: 5 additions & 1 deletion eras/babbage/impl/src/Cardano/Ledger/Babbage/TxAuxData.hs
Expand Up @@ -3,16 +3,17 @@

module Cardano.Ledger.Babbage.TxAuxData () where

import Cardano.Ledger.Alonzo.Core
import Cardano.Ledger.Alonzo.TxAuxData (
AlonzoTxAuxData (..),
hashAlonzoTxAuxData,
metadataAlonzoTxAuxDataL,
timelockScriptsAlonzoTxAuxDataL,
translateAlonzoTxAuxData,
validateAlonzoTxAuxData,
)
import Cardano.Ledger.Babbage.Era
import Cardano.Ledger.Babbage.Scripts ()
import Cardano.Ledger.Core
import Cardano.Ledger.Crypto

instance Crypto c => EraTxAuxData (BabbageEra c) where
Expand All @@ -27,3 +28,6 @@ instance Crypto c => EraTxAuxData (BabbageEra c) where
hashTxAuxData = hashAlonzoTxAuxData

validateTxAuxData = validateAlonzoTxAuxData

instance Crypto c => AllegraEraTxAuxData (BabbageEra c) where
timelockScriptsTxAuxDataL = timelockScriptsAlonzoTxAuxDataL
6 changes: 5 additions & 1 deletion eras/conway/impl/src/Cardano/Ledger/Conway/TxAuxData.hs
Expand Up @@ -3,16 +3,17 @@

module Cardano.Ledger.Conway.TxAuxData () where

import Cardano.Ledger.Alonzo.Core
import Cardano.Ledger.Alonzo.TxAuxData (
AlonzoTxAuxData (..),
hashAlonzoTxAuxData,
metadataAlonzoTxAuxDataL,
timelockScriptsAlonzoTxAuxDataL,
translateAlonzoTxAuxData,
validateAlonzoTxAuxData,
)
import Cardano.Ledger.Conway.Era
import Cardano.Ledger.Conway.Scripts ()
import Cardano.Ledger.Core
import Cardano.Ledger.Crypto

instance Crypto c => EraTxAuxData (ConwayEra c) where
Expand All @@ -27,3 +28,6 @@ instance Crypto c => EraTxAuxData (ConwayEra c) where
hashTxAuxData = hashAlonzoTxAuxData

validateTxAuxData = validateAlonzoTxAuxData

instance Crypto c => AllegraEraTxAuxData (ConwayEra c) where
timelockScriptsTxAuxDataL = timelockScriptsAlonzoTxAuxDataL
10 changes: 9 additions & 1 deletion eras/mary/impl/src/Cardano/Ledger/Mary/TxAuxData.hs
Expand Up @@ -12,7 +12,12 @@ module Cardano.Ledger.Mary.TxAuxData (
)
where

import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..), metadataAllegraTxAuxDataL)
import Cardano.Ledger.Allegra.TxAuxData (
AllegraEraTxAuxData (..),
AllegraTxAuxData (..),
metadataAllegraTxAuxDataL,
timelockScriptsAllegraTxAuxDataL,
)
import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..))
import Cardano.Ledger.Core (EraTxAuxData (..), upgradeScript)
import Cardano.Ledger.Crypto (Crypto)
Expand All @@ -36,3 +41,6 @@ instance Crypto c => EraTxAuxData (MaryEra c) where
validateTxAuxData _ (AllegraTxAuxData md as) = as `deepseq` all validMetadatum md

hashTxAuxData aux = AuxiliaryDataHash (hashAnnotated aux)

instance Crypto c => AllegraEraTxAuxData (MaryEra c) where
timelockScriptsTxAuxDataL = timelockScriptsAllegraTxAuxDataL
1 change: 1 addition & 0 deletions libs/cardano-ledger-api/CHANGELOG.md
Expand Up @@ -4,6 +4,7 @@

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

## 1.9.0.0

Expand Down
2 changes: 1 addition & 1 deletion libs/cardano-ledger-api/cardano-ledger-api.cabal
Expand Up @@ -54,7 +54,7 @@ library
base >=4.14 && <5,
aeson >=2.2,
bytestring,
cardano-ledger-allegra ^>=1.4,
cardano-ledger-allegra ^>=1.4.1,
cardano-ledger-alonzo ^>=1.8,
cardano-ledger-babbage ^>=1.8,
cardano-ledger-binary ^>=1.3,
Expand Down
4 changes: 3 additions & 1 deletion libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/AuxData.hs
Expand Up @@ -11,6 +11,8 @@ module Cardano.Ledger.Api.Tx.AuxData (
Metadatum (..),

-- * Allegra
AllegraEraTxAuxData,
timelockScriptsTxAuxDataL,
AllegraTxAuxData (..),

-- * Alonzo
Expand All @@ -20,7 +22,7 @@ module Cardano.Ledger.Api.Tx.AuxData (
)
where

import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..))
import Cardano.Ledger.Allegra.TxAuxData (AllegraEraTxAuxData (..), AllegraTxAuxData (..))
import Cardano.Ledger.Alonzo.TxAuxData (
AlonzoTxAuxData (..),
getAlonzoTxAuxDataScripts,
Expand Down

0 comments on commit a562f63

Please sign in to comment.