Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
erikd committed Mar 16, 2023
1 parent 2bac8d2 commit d0103e6
Show file tree
Hide file tree
Showing 23 changed files with 79 additions and 16 deletions.
Expand Up @@ -251,6 +251,7 @@ withinEra = (>=) `on` numberEra
MaryEra -> 4
AlonzoEra -> 5
BabbageEra -> 6
ConwayEra -> 7

-- | Deserialise a transaction to construct a 'SealedTx'.
sealedTxFromBytes :: ByteString -> Either DecoderError SealedTx
Expand Down
Expand Up @@ -25,6 +25,7 @@ getCollateralInputs = EraFun
, maryFun = \_ -> K []
, alonzoFun = mkShelleyTxCollateralInputsIns
, babbageFun = mkShelleyTxCollateralInputsIns
, conwayFun = mkShelleyTxCollateralInputsIns
}

mkShelleyTxCollateralInputsIns
Expand Down
Expand Up @@ -44,6 +44,7 @@ extraSigs = EraFun
, maryFun = noExtraSigs
, alonzoFun = yesExtraSigs
, babbageFun = yesExtraSigs
, conwayFun = yesExtraSigs
}
where
noExtraSigs = const $ K []
Expand Down
Expand Up @@ -27,6 +27,7 @@ getFee = EraFun
, maryFun = mkShelleyTxFee
, alonzoFun = mkShelleyTxFee
, babbageFun = mkShelleyTxFee
, conwayFun = mkShelleyTxFee
}

mkShelleyTxFee :: (FeeType era ~ Coin)
Expand Down
Expand Up @@ -39,6 +39,7 @@ getInputs = EraFun
, maryFun = mkShelleyTxInputsIns
, alonzoFun = mkShelleyTxInputsIns
, babbageFun = mkShelleyTxInputsIns
, conwayFun = mkShelleyTxInputsIns
}

fromShelleyTxIns :: Foldable t => (t (SH.TxIn crypto)) -> K [W.TxIn] b
Expand Down
Expand Up @@ -44,6 +44,7 @@ integrity = EraFun
, maryFun = noIntegrity
, alonzoFun = yesIntegrity
, babbageFun = yesIntegrity
, conwayFun = yesIntegrity
}
where
noIntegrity = const $ K Nothing
Expand Down
Expand Up @@ -31,7 +31,7 @@ import Cardano.Wallet.Read.Eras
import Cardano.Wallet.Read.Tx.Metadata
( Metadata (..) )
import Ouroboros.Consensus.Shelley.Eras
( AlonzoEra, BabbageEra, StandardCrypto )
( AlonzoEra, BabbageEra, ConwayEra, StandardCrypto )

import qualified Cardano.Api.Shelley as Cardano
import qualified Cardano.Api.Shelley as CardanoAPI
Expand All @@ -48,6 +48,7 @@ getMetadata = EraFun
, maryFun = yesMetadata fromMaryMetadata
, alonzoFun = yesMetadata fromAlonzoMetadata
, babbageFun = yesMetadata fromBabbageMetadata
, conwayFun = yesMetadata fromConwayMetadata
}
where
noMetadatas _ = K Nothing
Expand Down Expand Up @@ -77,3 +78,7 @@ fromAlonzoMetadata (AL.AlonzoAuxiliaryData blob _scripts)
fromBabbageMetadata :: AuxiliaryData (BabbageEra StandardCrypto) -> W.TxMetadata
fromBabbageMetadata (AL.AlonzoAuxiliaryData blob _scripts)
= fromShelleyMetadata $ SL.Metadata blob

fromConwayMetadata :: AuxiliaryData (ConwayEra StandardCrypto) -> W.TxMetadata
fromConwayMetadata (AL.AlonzoAuxiliaryData blob _scripts)
= fromShelleyMetadata $ SL.Metadata blob
Expand Up @@ -37,6 +37,7 @@ import Ouroboros.Consensus.Shelley.Eras
( StandardAllegra
, StandardAlonzo
, StandardBabbage
, StandardConway
, StandardMary
, StandardShelley
)
Expand Down Expand Up @@ -66,7 +67,8 @@ getOutputs = EraFun
, allegraFun = \(Outputs os) -> K . fmap fromAllegraTxOut $ toList os
, maryFun = \(Outputs os) -> K . fmap fromMaryTxOut $ toList os
, alonzoFun = \(Outputs os) -> K . fmap fromAlonzoTxOut $ toList os
, babbageFun = \(Outputs os) -> K . fmap (fst . fromBabbageTxOut) $ toList os
, babbageFun = \(Outputs os) -> K . fmap fromBabbageTxOut $ toList os
, conwayFun = \(Outputs os) -> K . fmap fromConwayTxOut $ toList os
}

fromShelleyAddress :: SL.Addr crypto -> W.Address
Expand Down Expand Up @@ -105,6 +107,13 @@ fromBabbageTxOut (Babbage.TxOut addr value _datum refScript) =
SNothing -> Nothing
)

fromConwayTxOut
:: Babbage.BabbageTxOut StandardConway
-> W.TxOut
fromConwayTxOut (Babbage.BabbageTxOut addr value _datum _refScript) =
W.TxOut (fromShelleyAddress addr) $
fromCardanoValue $ Cardano.fromMaryValue value

-- Lovelace to coin. Quantities from ledger should always fit in Word64.
fromCardanoLovelace :: HasCallStack => Cardano.Lovelace -> W.Coin
fromCardanoLovelace =
Expand Down
Expand Up @@ -32,6 +32,7 @@ getScriptValidity = EraFun
, maryFun = noScriptValidity
, alonzoFun = yesScriptValidity
, babbageFun = yesScriptValidity
, conwayFun = yesScriptValidity
}
where
noScriptValidity _ = K Nothing
Expand Down
5 changes: 4 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/Certificates.hs
Expand Up @@ -21,7 +21,7 @@ module Cardano.Wallet.Read.Tx.Certificates
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Ledger.Core
( bodyTxL )
import Cardano.Ledger.Crypto
Expand All @@ -46,6 +46,7 @@ type family CertificatesType era where
CertificatesType MaryEra = StrictSeq (DCert StandardCrypto)
CertificatesType AlonzoEra = StrictSeq (DCert StandardCrypto)
CertificatesType BabbageEra = StrictSeq (DCert StandardCrypto)
CertificatesType ConwayEra = StrictSeq (DCert StandardCrypto)

newtype Certificates era = Certificates (CertificatesType era)

Expand All @@ -66,4 +67,6 @@ getEraCertificates = EraFun
onTx $ \tx -> Certificates $ tx ^. bodyTxL . certsTxBodyL
, babbageFun =
onTx $ \tx -> Certificates $ tx ^. bodyTxL . certsTxBodyL
, conwayFun =
onTx $ \tx -> Certificates $ tx ^. bodyTxL . certsTxBodyL
}
12 changes: 11 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/CollateralInputs.hs
Expand Up @@ -21,7 +21,7 @@ module Cardano.Wallet.Read.Tx.CollateralInputs
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Ledger.Babbage.TxBody
( collateralInputsTxBodyL )
import Cardano.Ledger.Core
Expand All @@ -42,6 +42,7 @@ import Data.Set
import qualified Cardano.Ledger.Alonzo as AL
import qualified Cardano.Ledger.Alonzo.Tx as AL
import qualified Cardano.Ledger.Babbage as Bab
import qualified Cardano.Ledger.Conway as Conway
import qualified Cardano.Ledger.Shelley.API as SH

type family CollateralInputsType era where
Expand All @@ -51,6 +52,7 @@ type family CollateralInputsType era where
CollateralInputsType MaryEra = ()
CollateralInputsType AlonzoEra = Set (SH.TxIn StandardCrypto)
CollateralInputsType BabbageEra = Set (SH.TxIn StandardCrypto)
CollateralInputsType ConwayEra = Set (SH.TxIn StandardCrypto)

newtype CollateralInputs era = CollateralInputs (CollateralInputsType era)

Expand All @@ -71,6 +73,8 @@ getEraCollateralInputs = EraFun
onTx $ \(AL.AlonzoTx b _ _ _) -> getAlonzoCollateralInputs b
, babbageFun =
onTx $ \(AL.AlonzoTx b _ _ _) -> getBabbageCollateralInputs b
, conwayFun =
onTx $ \(AL.AlonzoTx b _ _ _) -> getConwayCollateralInputs b
}

getAlonzoCollateralInputs
Expand All @@ -84,3 +88,9 @@ getBabbageCollateralInputs
-> CollateralInputs BabbageEra
getBabbageCollateralInputs txBody =
CollateralInputs (txBody ^. collateralInputsTxBodyL)

getConwayCollateralInputs
:: TxBody (Conway.ConwayEra StandardCrypto)
-> CollateralInputs ConwayEra
getConwayCollateralInputs txBody =
CollateralInputs (txBody ^. collateralInputsTxBodyL)
5 changes: 4 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/ExtraSigs.hs
Expand Up @@ -16,7 +16,7 @@ module Cardano.Wallet.Read.Tx.ExtraSigs where
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Ledger.Alonzo.TxBody
( reqSignerHashesTxBodyL )
import Cardano.Ledger.Core
Expand All @@ -43,6 +43,7 @@ type family ExtraSigsType era where
ExtraSigsType MaryEra = ()
ExtraSigsType AlonzoEra = Set (KeyHash 'Witness StandardCrypto)
ExtraSigsType BabbageEra = Set (KeyHash 'Witness StandardCrypto)
ExtraSigsType ConwayEra = Set (KeyHash 'Witness StandardCrypto)

newtype ExtraSigs era = ExtraSigs (ExtraSigsType era)

Expand All @@ -60,4 +61,6 @@ getEraExtraSigs
$ tx ^. bodyTxL . reqSignerHashesTxBodyL
, babbageFun = onTx $ \tx -> ExtraSigs
$ tx ^. bodyTxL . reqSignerHashesTxBodyL
, conwayFun = onTx $ \tx -> ExtraSigs
$ tx ^. bodyTxL . reqSignerHashesTxBodyL
}
4 changes: 3 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/Fee.hs
Expand Up @@ -21,7 +21,7 @@ module Cardano.Wallet.Read.Tx.Fee
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Ledger.Coin
( Coin )
import Cardano.Ledger.Core
Expand All @@ -42,6 +42,7 @@ type family FeeType era where
FeeType MaryEra = Coin
FeeType AlonzoEra = Coin
FeeType BabbageEra = Coin
FeeType ConwayEra = Coin

newtype Fee era = Fee (FeeType era)

Expand All @@ -57,4 +58,5 @@ getEraFee
, maryFun = onTx $ \tx -> Fee $ tx ^. bodyTxL . feeTxBodyL
, alonzoFun = onTx $ \tx -> Fee $ tx ^. bodyTxL . feeTxBodyL
, babbageFun = onTx $ \tx -> Fee $ tx ^. bodyTxL . feeTxBodyL
, conwayFun = onTx $ \tx -> Fee $ tx ^. bodyTxL . feeTxBodyL
}
1 change: 1 addition & 0 deletions lib/wallet/src/Cardano/Wallet/Read/Tx/Hash.hs
Expand Up @@ -55,6 +55,7 @@ getEraTxHash = EraFun
, maryFun = onTx $ \tx -> K . fromShelleyTxId $ txid (tx ^. bodyTxL)
, alonzoFun = onTx $ \tx -> K . fromShelleyTxId $ txid (tx ^. bodyTxL)
, babbageFun = onTx $ \tx -> K . fromShelleyTxId $ txid (tx ^. bodyTxL)
, conwayFun = onTx $ \tx -> K . fromShelleyTxId $ txid (tx ^. bodyTxL)
}

byronTxHash :: ATxAux a -> Crypto.ByteString
Expand Down
4 changes: 3 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/Inputs.hs
Expand Up @@ -21,7 +21,7 @@ module Cardano.Wallet.Read.Tx.Inputs
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Ledger.Core
( bodyTxL, inputsTxBodyL )
import Cardano.Ledger.Crypto
Expand Down Expand Up @@ -49,6 +49,7 @@ type family InputsType era where
InputsType MaryEra = Set (SH.TxIn StandardCrypto)
InputsType AlonzoEra = Set (SH.TxIn StandardCrypto)
InputsType BabbageEra = Set (SH.TxIn StandardCrypto)
InputsType ConwayEra = Set (SH.TxIn StandardCrypto)

newtype Inputs era = Inputs (InputsType era)

Expand All @@ -64,4 +65,5 @@ getEraInputs
, maryFun = onTx $ \tx -> Inputs (tx ^. bodyTxL . inputsTxBodyL)
, alonzoFun = onTx $ \tx -> Inputs (tx ^. bodyTxL . inputsTxBodyL)
, babbageFun = onTx $ \tx -> Inputs (tx ^. bodyTxL . inputsTxBodyL)
, conwayFun = onTx $ \tx -> Inputs (tx ^. bodyTxL . inputsTxBodyL)
}
5 changes: 4 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/Integrity.hs
Expand Up @@ -18,7 +18,7 @@ module Cardano.Wallet.Read.Tx.Integrity
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Ledger.Alonzo.Tx
( ScriptIntegrityHash )
import Cardano.Ledger.Alonzo.TxBody
Expand All @@ -45,6 +45,7 @@ type family IntegrityType era where
IntegrityType MaryEra = ()
IntegrityType AlonzoEra = StrictMaybe (ScriptIntegrityHash StandardCrypto)
IntegrityType BabbageEra = StrictMaybe (ScriptIntegrityHash StandardCrypto)
IntegrityType ConwayEra = StrictMaybe (ScriptIntegrityHash StandardCrypto)

newtype Integrity era = Integrity (IntegrityType era)

Expand All @@ -62,4 +63,6 @@ getEraIntegrity
$ tx ^. bodyTxL . scriptIntegrityHashTxBodyL
, babbageFun = onTx $ \tx -> Integrity
$ tx ^. bodyTxL . scriptIntegrityHashTxBodyL
, conwayFun = onTx $ \tx -> Integrity
$ tx ^. bodyTxL . scriptIntegrityHashTxBodyL
}
5 changes: 4 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/Metadata.hs
Expand Up @@ -20,7 +20,7 @@ module Cardano.Wallet.Read.Tx.Metadata
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Wallet.Read.Eras
( EraFun (..) )
import Control.Lens
Expand All @@ -38,6 +38,7 @@ import Ouroboros.Consensus.Shelley.Eras
( StandardAllegra
, StandardAlonzo
, StandardBabbage
, StandardConway
, StandardMary
, StandardShelley
)
Expand All @@ -49,6 +50,7 @@ type family MetadataType era where
MetadataType MaryEra = StrictMaybe (AuxiliaryData StandardMary)
MetadataType AlonzoEra = StrictMaybe (AuxiliaryData StandardAlonzo)
MetadataType BabbageEra = StrictMaybe (AuxiliaryData StandardBabbage)
MetadataType ConwayEra = StrictMaybe (AuxiliaryData StandardConway)

newtype Metadata era = Metadata (MetadataType era)

Expand All @@ -63,6 +65,7 @@ getEraMetadata = EraFun
, maryFun = onTx $ \tx -> Metadata (tx ^. auxDataTxL)
, alonzoFun = onTx $ \tx -> Metadata (tx ^. auxDataTxL)
, babbageFun = onTx $ \tx -> Metadata (tx ^. auxDataTxL)
, conwayFun = onTx $ \tx -> Metadata (tx ^. auxDataTxL)
}


4 changes: 3 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/Mint.hs
Expand Up @@ -20,7 +20,7 @@ module Cardano.Wallet.Read.Tx.Mint
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Ledger.Alonzo.TxBody
( mintTxBodyL )
import Cardano.Ledger.Core
Expand All @@ -46,6 +46,7 @@ type family MintType era where
MintType MaryEra = Mary.MaryValue StandardCrypto
MintType AlonzoEra = Mary.MaryValue StandardCrypto
MintType BabbageEra = Mary.MaryValue StandardCrypto
MintType ConwayEra = Mary.MaryValue StandardCrypto

newtype Mint era = Mint (MintType era)

Expand All @@ -60,4 +61,5 @@ getEraMint = EraFun
, maryFun = onTx $ \tx -> Mint $ tx ^. bodyTxL . mintTxBodyL
, alonzoFun = onTx $ \tx -> Mint $ tx ^. bodyTxL . mintTxBodyL
, babbageFun = onTx $ \tx -> Mint $ tx ^. bodyTxL . mintTxBodyL
, conwayFun = onTx $ \tx -> Mint $ tx ^. bodyTxL . mintTxBodyL
}
7 changes: 6 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/Outputs.hs
Expand Up @@ -21,7 +21,7 @@ module Cardano.Wallet.Read.Tx.Outputs
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Ledger.Core
( bodyTxL, outputsTxBodyL )
import Cardano.Ledger.Crypto
Expand All @@ -42,6 +42,7 @@ import Data.Sequence.Strict
import qualified Cardano.Chain.UTxO as BY
import qualified Cardano.Ledger.Alonzo as AL
import qualified Cardano.Ledger.Babbage as BA
import qualified Cardano.Ledger.Conway as Conway
import qualified Cardano.Ledger.Shelley as SH
import qualified Cardano.Ledger.ShelleyMA as SMA

Expand All @@ -62,6 +63,9 @@ type family OutputsType era where
OutputsType BabbageEra
= StrictSeq
(BA.BabbageTxOut (BA.BabbageEra StandardCrypto))
OutputsType ConwayEra
= StrictSeq
(BA.BabbageTxOut (Conway.ConwayEra StandardCrypto))

newtype Outputs era = Outputs (OutputsType era)

Expand All @@ -77,4 +81,5 @@ getEraOutputs
, maryFun = onTx $ \tx -> Outputs (tx ^. bodyTxL . outputsTxBodyL)
, alonzoFun = onTx $ \tx -> Outputs (tx ^. bodyTxL . outputsTxBodyL)
, babbageFun = onTx $ \tx -> Outputs (tx ^. bodyTxL . outputsTxBodyL)
, conwayFun = onTx $ \tx -> Outputs (tx ^. bodyTxL . outputsTxBodyL)
}
4 changes: 3 additions & 1 deletion lib/wallet/src/Cardano/Wallet/Read/Tx/ScriptValidity.hs
Expand Up @@ -20,7 +20,7 @@ module Cardano.Wallet.Read.Tx.ScriptValidity
import Prelude

import Cardano.Api
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, MaryEra, ShelleyEra )
( AllegraEra, AlonzoEra, BabbageEra, ByronEra, ConwayEra, MaryEra, ShelleyEra )
import Cardano.Ledger.Alonzo.Tx
( IsValid, isValidTxL )
import Cardano.Wallet.Read.Eras
Expand All @@ -39,6 +39,7 @@ type family ScriptValidityType era where
ScriptValidityType MaryEra = ()
ScriptValidityType AlonzoEra = IsValid
ScriptValidityType BabbageEra = IsValid
ScriptValidityType ConwayEra = IsValid

newtype ScriptValidity era = ScriptValidity (ScriptValidityType era)

Expand All @@ -53,4 +54,5 @@ getEraScriptValidity = EraFun
, maryFun = \_ -> ScriptValidity ()
, alonzoFun = onTx $ \tx -> ScriptValidity (tx ^. isValidTxL)
, babbageFun = onTx $ \tx -> ScriptValidity (tx ^. isValidTxL)
, conwayFun = onTx $ \tx -> ScriptValidity (tx ^. isValidTxL)
}

0 comments on commit d0103e6

Please sign in to comment.