Skip to content

Commit

Permalink
ImprovedBlockInMode
Browse files Browse the repository at this point in the history
  • Loading branch information
andreabedini authored and raduom committed May 21, 2022
1 parent 97eca22 commit 58aac35
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 1 deletion.
1 change: 1 addition & 0 deletions plutus-ledger/plutus-ledger.cabal
Expand Up @@ -42,6 +42,7 @@ library
hs-source-dirs: src
default-language: Haskell2010
exposed-modules:
Cardano.Api.Improved
Data.Time.Units.Extra
Ledger
Ledger.Address
Expand Down
15 changes: 15 additions & 0 deletions plutus-ledger/src/Cardano/Api/Improved.hs
@@ -0,0 +1,15 @@
{-# LANGUAGE GADTs #-}

module Cardano.Api.Improved where

import Cardano.Api

data ImprovedBlockInMode mode where
ImprovedBlockInMode :: IsCardanoEra era => Block era -> EraInMode era mode -> ImprovedBlockInMode mode

improveBlockInMode :: BlockInMode CardanoMode -> ImprovedBlockInMode CardanoMode
improveBlockInMode (BlockInMode bl eim@ByronEraInCardanoMode) = ImprovedBlockInMode bl eim
improveBlockInMode (BlockInMode bl eim@ShelleyEraInCardanoMode) = ImprovedBlockInMode bl eim
improveBlockInMode (BlockInMode bl eim@AllegraEraInCardanoMode) = ImprovedBlockInMode bl eim
improveBlockInMode (BlockInMode bl eim@MaryEraInCardanoMode) = ImprovedBlockInMode bl eim
improveBlockInMode (BlockInMode bl eim@AlonzoEraInCardanoMode) = ImprovedBlockInMode bl eim
10 changes: 9 additions & 1 deletion plutus-ledger/src/Ledger/Tx/CardanoAPI.hs
Expand Up @@ -18,6 +18,7 @@ module Ledger.Tx.CardanoAPI(
SomeCardanoApiTx(..)
, txOutRefs
, unspentOutputsTx
, fromCardanoBlockInMode
, fromCardanoTxId
, fromCardanoTxIn
, fromCardanoTxInsCollateral
Expand Down Expand Up @@ -61,6 +62,7 @@ module Ledger.Tx.CardanoAPI(

import Cardano.Api qualified as C
import Cardano.Api.Byron qualified as C
import Cardano.Api.Improved
import Cardano.Api.Shelley qualified as C
import Cardano.BM.Data.Tracer (ToObject)
import Cardano.Chain.Common (addrToBase58)
Expand All @@ -72,7 +74,7 @@ import Codec.Serialise qualified as Codec
import Codec.Serialise.Decoding (Decoder, decodeBytes, decodeSimple)
import Codec.Serialise.Encoding (Encoding (Encoding), Tokens (TkBytes, TkSimple))
import Control.Applicative ((<|>))
import Control.Lens ((&), (.~), (?~))
import Control.Lens (Fold, folding, (&), (.~), (?~))
import Control.Monad (when)
import Data.Aeson (FromJSON (parseJSON), ToJSON (toJSON), object, (.:), (.=))
import Data.Aeson qualified as Aeson
Expand Down Expand Up @@ -115,6 +117,12 @@ instance (Typeable era) => OpenApi.ToSchema (C.Tx era) where
declareNamedSchema _ = do
return $ NamedSchema (Just "Tx") byteSchema

fromCardanoBlockInMode :: C.BlockInMode C.CardanoMode -> [SomeCardanoApiTx]
fromCardanoBlockInMode (improveBlockInMode -> ImprovedBlockInMode (C.Block _ txs) eim) = map (flip SomeTx eim) txs

_txs :: Fold (C.BlockInMode C.CardanoMode) SomeCardanoApiTx
_txs = folding fromCardanoBlockInMode

-- | Cardano tx from any era.
data SomeCardanoApiTx where
SomeTx :: C.IsCardanoEra era => C.Tx era -> C.EraInMode era C.CardanoMode -> SomeCardanoApiTx
Expand Down

0 comments on commit 58aac35

Please sign in to comment.