{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Cardano.Rpc.Server.Internal.UtxoRpc.Type.Tx
( txToUtxoRpcTx
, anyEraTxConstraints
, txInToUtxoRpcTxInput
, metadatumToUtxoRpcMetadatum
, txAuxDataScripts
)
where
import Cardano.Api.Address
import Cardano.Api.Block
import Cardano.Api.Era
import Cardano.Api.Experimental
( PlutusScriptPurpose (..)
, toPlutusScriptPurposeIndex
)
import Cardano.Api.Ledger qualified as L
import Cardano.Api.Plutus
import Cardano.Api.Serialise.Raw
import Cardano.Api.Tx
import Cardano.Api.Value
import Cardano.Rpc.Proto.Api.UtxoRpc.Query qualified as U5c
import Cardano.Rpc.Proto.Api.UtxoRpc.Query qualified as UtxoRpc
import Cardano.Rpc.Server.Internal.Orphans ()
import Cardano.Rpc.Server.Internal.UtxoRpc.Type.Certificate (txCertToUtxoRpcCertificate)
import Cardano.Rpc.Server.Internal.UtxoRpc.Type.Governance (proposalProcedureToUtxoRpcProposal)
import Cardano.Rpc.Server.Internal.UtxoRpc.Type.PlutusData (scriptDataToUtxoRpcPlutusData)
import Cardano.Rpc.Server.Internal.UtxoRpc.Type.Script (ledgerScriptToUtxoRpcScript)
import Cardano.Rpc.Server.Internal.UtxoRpc.Type.TxEval (mkProtoRedeemer)
import Cardano.Rpc.Server.Internal.UtxoRpc.Type.TxOutput
( policyAssetsToUtxoRpcMultiassets
, txOutToUtxoRpcTxOutput
)
import Cardano.Crypto.DSIGN.Class qualified as DSIGN
import Cardano.Ledger.Api qualified as L
import Cardano.Ledger.BaseTypes qualified as L
import Cardano.Ledger.Conway.Core qualified as L
import Cardano.Ledger.Keys.Bootstrap qualified as L
import RIO hiding (toList)
import Data.Map.Strict qualified as M
import Data.ProtoLens (defMessage)
import GHC.IsList
import Network.GRPC.Spec
txToUtxoRpcTx
:: forall era
. IsShelleyBasedEra era
=> L.Tx L.TopTx (ShelleyLedgerEra era)
-> Proto UtxoRpc.Tx
txToUtxoRpcTx :: forall era.
IsShelleyBasedEra era =>
Tx TopTx (ShelleyLedgerEra era) -> Proto Tx
txToUtxoRpcTx Tx TopTx (ShelleyLedgerEra era)
ledgerTx = ShelleyBasedEra era
-> ((IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) =>
Proto Tx)
-> Proto Tx
forall era a.
ShelleyBasedEra era
-> ((IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a)
-> a
anyEraTxConstraints ShelleyBasedEra era
sbe (((IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) =>
Proto Tx)
-> Proto Tx)
-> ((IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) =>
Proto Tx)
-> Proto Tx
forall a b. (a -> b) -> a -> b
$ do
let convertTxOut :: TxOut (ShelleyLedgerEra era) -> Proto TxOutput
convertTxOut = ShelleyBasedEra era -> TxOut CtxUTxO era -> Proto TxOutput
forall era.
ShelleyBasedEra era -> TxOut CtxUTxO era -> Proto TxOutput
txOutToUtxoRpcTxOutput ShelleyBasedEra era
sbe (TxOut CtxUTxO era -> Proto TxOutput)
-> (TxOut (ShelleyLedgerEra era) -> TxOut CtxUTxO era)
-> TxOut (ShelleyLedgerEra era)
-> Proto TxOutput
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyBasedEra era
-> TxOut (ShelleyLedgerEra era) -> TxOut CtxUTxO era
forall era ctx.
ShelleyBasedEra era
-> TxOut (ShelleyLedgerEra era) -> TxOut ctx era
fromShelleyTxOut ShelleyBasedEra era
sbe
body :: TxBody TopTx (ShelleyLedgerEra era)
body = Tx TopTx (ShelleyLedgerEra era)
ledgerTx Tx TopTx (ShelleyLedgerEra era)
-> Getting
(TxBody TopTx (ShelleyLedgerEra era))
(Tx TopTx (ShelleyLedgerEra era))
(TxBody TopTx (ShelleyLedgerEra era))
-> TxBody TopTx (ShelleyLedgerEra era)
forall s a. s -> Getting a s a -> a
^. Getting
(TxBody TopTx (ShelleyLedgerEra era))
(Tx TopTx (ShelleyLedgerEra era))
(TxBody TopTx (ShelleyLedgerEra era))
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel).
Lens'
(Tx l (ShelleyLedgerEra era)) (TxBody l (ShelleyLedgerEra era))
L.bodyTxL
wits :: TxWits (ShelleyLedgerEra era)
wits = Tx TopTx (ShelleyLedgerEra era)
ledgerTx Tx TopTx (ShelleyLedgerEra era)
-> Getting
(TxWits (ShelleyLedgerEra era))
(Tx TopTx (ShelleyLedgerEra era))
(TxWits (ShelleyLedgerEra era))
-> TxWits (ShelleyLedgerEra era)
forall s a. s -> Getting a s a -> a
^. Getting
(TxWits (ShelleyLedgerEra era))
(Tx TopTx (ShelleyLedgerEra era))
(TxWits (ShelleyLedgerEra era))
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel).
Lens' (Tx l (ShelleyLedgerEra era)) (TxWits (ShelleyLedgerEra era))
L.witsTxL
referenceInputs :: [TxIn]
referenceInputs = [TxIn] -> (Set TxIn -> [TxIn]) -> Maybe (Set TxIn) -> [TxIn]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] Set TxIn -> [Item (Set TxIn)]
Set TxIn -> [TxIn]
forall l. IsList l => l -> [Item l]
toList (Maybe (Set TxIn) -> [TxIn]) -> Maybe (Set TxIn) -> [TxIn]
forall a b. (a -> b) -> a -> b
$ TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
(Maybe (Set TxIn))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (Set TxIn))
-> Maybe (Set TxIn)
forall s a. s -> Getting a s a -> a
^. Getting
(Maybe (Set TxIn))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (Set TxIn))
forall era (l :: TxLevel).
AnyEraTxBody era =>
SimpleGetter (TxBody l era) (Maybe (Set TxIn))
forall (l :: TxLevel).
SimpleGetter (TxBody l (ShelleyLedgerEra era)) (Maybe (Set TxIn))
L.referenceInputsTxBodyG
validity :: Proto TxValidity
validity = do
let L.ValidityInterval StrictMaybe SlotNo
lowerBound StrictMaybe SlotNo
upperBound = TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
ValidityInterval
(TxBody TopTx (ShelleyLedgerEra era))
ValidityInterval
-> ValidityInterval
forall s a. s -> Getting a s a -> a
^. Getting
ValidityInterval
(TxBody TopTx (ShelleyLedgerEra era))
ValidityInterval
forall era.
AnyEraTxBody era =>
SimpleGetter (TxBody TopTx era) ValidityInterval
SimpleGetter (TxBody TopTx (ShelleyLedgerEra era)) ValidityInterval
L.vldtTxBodyG
Proto TxValidity
forall msg. Message msg => msg
defMessage
Proto TxValidity
-> (Proto TxValidity -> Proto TxValidity) -> Proto TxValidity
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto TxValidity) Word64
forall (f :: * -> *) s a.
(Functor f, HasField s "start" a) =>
LensLike' f s a
U5c.start LensLike' Identity (Proto TxValidity) Word64
-> Word64 -> Proto TxValidity -> Proto TxValidity
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word64 -> (SlotNo -> Word64) -> StrictMaybe SlotNo -> Word64
forall a b. a -> (b -> a) -> StrictMaybe b -> a
L.strictMaybe Word64
0 SlotNo -> Word64
unSlotNo StrictMaybe SlotNo
lowerBound
Proto TxValidity
-> (Proto TxValidity -> Proto TxValidity) -> Proto TxValidity
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto TxValidity) Word64
forall (f :: * -> *) s a.
(Functor f, HasField s "ttl" a) =>
LensLike' f s a
U5c.ttl LensLike' Identity (Proto TxValidity) Word64
-> Word64 -> Proto TxValidity -> Proto TxValidity
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word64 -> (SlotNo -> Word64) -> StrictMaybe SlotNo -> Word64
forall a b. a -> (b -> a) -> StrictMaybe b -> a
L.strictMaybe Word64
0 SlotNo -> Word64
unSlotNo StrictMaybe SlotNo
upperBound
mint :: Map PolicyId PolicyAssets
mint = Map PolicyId PolicyAssets
-> (MultiAsset -> Map PolicyId PolicyAssets)
-> Maybe MultiAsset
-> Map PolicyId PolicyAssets
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Map PolicyId PolicyAssets
forall a. Monoid a => a
mempty MultiAsset -> Map PolicyId PolicyAssets
multiAssetToPolicyAssets (Maybe MultiAsset -> Map PolicyId PolicyAssets)
-> Maybe MultiAsset -> Map PolicyId PolicyAssets
forall a b. (a -> b) -> a -> b
$ TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
(Maybe MultiAsset)
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe MultiAsset)
-> Maybe MultiAsset
forall s a. s -> Getting a s a -> a
^. Getting
(Maybe MultiAsset)
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe MultiAsset)
forall era (l :: TxLevel).
AnyEraTxBody era =>
SimpleGetter (TxBody l era) (Maybe MultiAsset)
forall (l :: TxLevel).
SimpleGetter (TxBody l (ShelleyLedgerEra era)) (Maybe MultiAsset)
L.mintTxBodyG
inputs :: [Proto UtxoRpc.TxInput]
inputs :: [Proto TxInput]
inputs =
[Word32] -> [TxIn] -> [(Word32, TxIn)]
forall a b. [a] -> [b] -> [(a, b)]
zip [Word32
0 ..] (Set TxIn -> [Item (Set TxIn)]
forall l. IsList l => l -> [Item l]
toList (TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
(Set TxIn) (TxBody TopTx (ShelleyLedgerEra era)) (Set TxIn)
-> Set TxIn
forall s a. s -> Getting a s a -> a
^. Getting (Set TxIn) (TxBody TopTx (ShelleyLedgerEra era)) (Set TxIn)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel).
Lens' (TxBody l (ShelleyLedgerEra era)) (Set TxIn)
L.inputsTxBodyL)) [(Word32, TxIn)]
-> ((Word32, TxIn) -> Proto TxInput) -> [Proto TxInput]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \(Word32
ix, TxIn
txIn) ->
TxIn -> Proto TxInput
txInToUtxoRpcTxInput (TxIn -> TxIn
fromShelleyTxIn TxIn
txIn)
Proto TxInput -> (Proto TxInput -> Proto TxInput) -> Proto TxInput
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto TxInput) (Maybe (Proto Redeemer))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'redeemer" a) =>
LensLike' f s a
U5c.maybe'redeemer LensLike' Identity (Proto TxInput) (Maybe (Proto Redeemer))
-> Maybe (Proto Redeemer) -> Proto TxInput -> Proto TxInput
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (PlutusScriptPurpose, Word32)
-> Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
-> Maybe (Proto Redeemer)
forall k a. Ord k => k -> Map k a -> Maybe a
M.lookup (PlutusScriptPurpose
SpendingScript, Word32
ix) Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
redeemersByIndex
withdrawals :: [Proto UtxoRpc.Withdrawal]
withdrawals :: [Proto Withdrawal]
withdrawals =
[Word32]
-> [(AccountAddress, Coin)] -> [(Word32, (AccountAddress, Coin))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Word32
0 ..] (Map AccountAddress Coin -> [(AccountAddress, Coin)]
forall k a. Map k a -> [(k, a)]
M.toList (Withdrawals -> Map AccountAddress Coin
L.unWithdrawals (TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
Withdrawals (TxBody TopTx (ShelleyLedgerEra era)) Withdrawals
-> Withdrawals
forall s a. s -> Getting a s a -> a
^. Getting
Withdrawals (TxBody TopTx (ShelleyLedgerEra era)) Withdrawals
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) Withdrawals
forall (l :: TxLevel).
Lens' (TxBody l (ShelleyLedgerEra era)) Withdrawals
L.withdrawalsTxBodyL)))
[(Word32, (AccountAddress, Coin))]
-> ((Word32, (AccountAddress, Coin)) -> Proto Withdrawal)
-> [Proto Withdrawal]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \(Word32
ix, (AccountAddress
rewardAccount, Coin
coin)) ->
Proto Withdrawal
forall msg. Message msg => msg
defMessage
Proto Withdrawal
-> (Proto Withdrawal -> Proto Withdrawal) -> Proto Withdrawal
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Withdrawal) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "rewardAccount" a) =>
LensLike' f s a
U5c.rewardAccount LensLike' Identity (Proto Withdrawal) ByteString
-> ByteString -> Proto Withdrawal -> Proto Withdrawal
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StakeAddress -> ByteString
forall a. SerialiseAsRawBytes a => a -> ByteString
serialiseToRawBytes (AccountAddress -> StakeAddress
fromShelleyStakeAddr AccountAddress
rewardAccount)
Proto Withdrawal
-> (Proto Withdrawal -> Proto Withdrawal) -> Proto Withdrawal
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Withdrawal) (Proto BigInt)
forall (f :: * -> *) s a.
(Functor f, HasField s "coin" a) =>
LensLike' f s a
U5c.coin LensLike' Identity (Proto Withdrawal) (Proto BigInt)
-> Proto BigInt -> Proto Withdrawal -> Proto Withdrawal
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin -> Proto BigInt
forall t s. Inject t s => t -> s
inject Coin
coin
Proto Withdrawal
-> (Proto Withdrawal -> Proto Withdrawal) -> Proto Withdrawal
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Withdrawal) (Maybe (Proto Redeemer))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'redeemer" a) =>
LensLike' f s a
U5c.maybe'redeemer
LensLike' Identity (Proto Withdrawal) (Maybe (Proto Redeemer))
-> Maybe (Proto Redeemer) -> Proto Withdrawal -> Proto Withdrawal
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (PlutusScriptPurpose, Word32)
-> Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
-> Maybe (Proto Redeemer)
forall k a. Ord k => k -> Map k a -> Maybe a
M.lookup (PlutusScriptPurpose
WithdrawingScript, Word32
ix) Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
redeemersByIndex
collateralInputs :: [TxIn]
collateralInputs = [TxIn] -> (Set TxIn -> [TxIn]) -> Maybe (Set TxIn) -> [TxIn]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] Set TxIn -> [Item (Set TxIn)]
Set TxIn -> [TxIn]
forall l. IsList l => l -> [Item l]
toList (Maybe (Set TxIn) -> [TxIn]) -> Maybe (Set TxIn) -> [TxIn]
forall a b. (a -> b) -> a -> b
$ TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
(Maybe (Set TxIn))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (Set TxIn))
-> Maybe (Set TxIn)
forall s a. s -> Getting a s a -> a
^. Getting
(Maybe (Set TxIn))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (Set TxIn))
forall era.
AnyEraTxBody era =>
SimpleGetter (TxBody TopTx era) (Maybe (Set TxIn))
SimpleGetter
(TxBody TopTx (ShelleyLedgerEra era)) (Maybe (Set TxIn))
L.collateralInputsTxBodyG
collateralReturn :: Maybe (L.TxOut (ShelleyLedgerEra era))
collateralReturn :: Maybe (TxOut (ShelleyLedgerEra era))
collateralReturn = Maybe (Maybe (TxOut (ShelleyLedgerEra era)))
-> Maybe (TxOut (ShelleyLedgerEra era))
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (Maybe (Maybe (TxOut (ShelleyLedgerEra era)))
-> Maybe (TxOut (ShelleyLedgerEra era)))
-> Maybe (Maybe (TxOut (ShelleyLedgerEra era)))
-> Maybe (TxOut (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$ TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
(Maybe (Maybe (TxOut (ShelleyLedgerEra era))))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (Maybe (TxOut (ShelleyLedgerEra era))))
-> Maybe (Maybe (TxOut (ShelleyLedgerEra era)))
forall s a. s -> Getting a s a -> a
^. Getting
(Maybe (Maybe (TxOut (ShelleyLedgerEra era))))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (Maybe (TxOut (ShelleyLedgerEra era))))
forall era.
AnyEraTxBody era =>
SimpleGetter (TxBody TopTx era) (Maybe (Maybe (TxOut era)))
SimpleGetter
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (Maybe (TxOut (ShelleyLedgerEra era))))
L.collateralReturnTxBodyG
totalCollateral :: Maybe L.Coin
totalCollateral :: Maybe Coin
totalCollateral = Maybe (Maybe Coin) -> Maybe Coin
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (Maybe (Maybe Coin) -> Maybe Coin)
-> Maybe (Maybe Coin) -> Maybe Coin
forall a b. (a -> b) -> a -> b
$ TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
(Maybe (Maybe Coin))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (Maybe Coin))
-> Maybe (Maybe Coin)
forall s a. s -> Getting a s a -> a
^. Getting
(Maybe (Maybe Coin))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (Maybe Coin))
forall era.
AnyEraTxBody era =>
SimpleGetter (TxBody TopTx era) (Maybe (Maybe Coin))
SimpleGetter
(TxBody TopTx (ShelleyLedgerEra era)) (Maybe (Maybe Coin))
L.totalCollateralTxBodyG
collateral :: Maybe (Proto Collateral)
collateral
| [TxIn] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [TxIn]
collateralInputs
, Maybe (TxOut (ShelleyLedgerEra era))
Nothing <- Maybe (TxOut (ShelleyLedgerEra era))
collateralReturn
, Maybe Coin
Nothing <- Maybe Coin
totalCollateral =
Maybe (Proto Collateral)
forall a. Maybe a
Nothing
| Bool
otherwise =
Proto Collateral -> Maybe (Proto Collateral)
forall a. a -> Maybe a
Just (Proto Collateral -> Maybe (Proto Collateral))
-> Proto Collateral -> Maybe (Proto Collateral)
forall a b. (a -> b) -> a -> b
$
Proto Collateral
forall msg. Message msg => msg
defMessage
Proto Collateral
-> (Proto Collateral -> Proto Collateral) -> Proto Collateral
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Collateral) [Proto TxInput]
forall (f :: * -> *) s a.
(Functor f, HasField s "collateral" a) =>
LensLike' f s a
U5c.collateral LensLike' Identity (Proto Collateral) [Proto TxInput]
-> [Proto TxInput] -> Proto Collateral -> Proto Collateral
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (TxIn -> Proto TxInput) -> [TxIn] -> [Proto TxInput]
forall a b. (a -> b) -> [a] -> [b]
map (TxIn -> Proto TxInput
txInToUtxoRpcTxInput (TxIn -> Proto TxInput) -> (TxIn -> TxIn) -> TxIn -> Proto TxInput
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxIn -> TxIn
fromShelleyTxIn) [TxIn]
collateralInputs
Proto Collateral
-> (Proto Collateral -> Proto Collateral) -> Proto Collateral
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Collateral) (Maybe (Proto TxOutput))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'collateralReturn" a) =>
LensLike' f s a
U5c.maybe'collateralReturn LensLike' Identity (Proto Collateral) (Maybe (Proto TxOutput))
-> Maybe (Proto TxOutput) -> Proto Collateral -> Proto Collateral
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (TxOut (ShelleyLedgerEra era) -> Proto TxOutput)
-> Maybe (TxOut (ShelleyLedgerEra era)) -> Maybe (Proto TxOutput)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap TxOut (ShelleyLedgerEra era) -> Proto TxOutput
convertTxOut Maybe (TxOut (ShelleyLedgerEra era))
collateralReturn
Proto Collateral
-> (Proto Collateral -> Proto Collateral) -> Proto Collateral
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Collateral) (Maybe (Proto BigInt))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'totalCollateral" a) =>
LensLike' f s a
U5c.maybe'totalCollateral LensLike' Identity (Proto Collateral) (Maybe (Proto BigInt))
-> Maybe (Proto BigInt) -> Proto Collateral -> Proto Collateral
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (Coin -> Proto BigInt) -> Maybe Coin -> Maybe (Proto BigInt)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Coin -> Proto BigInt
forall t s. Inject t s => t -> s
inject Maybe Coin
totalCollateral
L.IsValid Bool
isValid = IsValid -> Maybe IsValid -> IsValid
forall a. a -> Maybe a -> a
fromMaybe (Bool -> IsValid
L.IsValid Bool
True) (Maybe IsValid -> IsValid) -> Maybe IsValid -> IsValid
forall a b. (a -> b) -> a -> b
$ Tx TopTx (ShelleyLedgerEra era)
ledgerTx Tx TopTx (ShelleyLedgerEra era)
-> Getting
(Maybe IsValid) (Tx TopTx (ShelleyLedgerEra era)) (Maybe IsValid)
-> Maybe IsValid
forall s a. s -> Getting a s a -> a
^. Getting
(Maybe IsValid) (Tx TopTx (ShelleyLedgerEra era)) (Maybe IsValid)
forall era.
AnyEraTx era =>
SimpleGetter (Tx TopTx era) (Maybe IsValid)
SimpleGetter (Tx TopTx (ShelleyLedgerEra era)) (Maybe IsValid)
L.isValidTxG
vkeyWitnesses :: [Proto UtxoRpc.VKeyWitness]
vkeyWitnesses :: [Proto VKeyWitness]
vkeyWitnesses =
Set (WitVKey Witness) -> [Item (Set (WitVKey Witness))]
forall l. IsList l => l -> [Item l]
toList (TxWits (ShelleyLedgerEra era)
wits TxWits (ShelleyLedgerEra era)
-> Getting
(Set (WitVKey Witness))
(TxWits (ShelleyLedgerEra era))
(Set (WitVKey Witness))
-> Set (WitVKey Witness)
forall s a. s -> Getting a s a -> a
^. Getting
(Set (WitVKey Witness))
(TxWits (ShelleyLedgerEra era))
(Set (WitVKey Witness))
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey Witness))
Lens' (TxWits (ShelleyLedgerEra era)) (Set (WitVKey Witness))
L.addrTxWitsL) [WitVKey Witness]
-> (WitVKey Witness -> Proto VKeyWitness) -> [Proto VKeyWitness]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \(L.WitVKey (L.VKey VerKeyDSIGN DSIGN
vkey) (DSIGN.SignedDSIGN SigDSIGN DSIGN
signature)) ->
Proto VKeyWitness
forall msg. Message msg => msg
defMessage
Proto VKeyWitness
-> (Proto VKeyWitness -> Proto VKeyWitness) -> Proto VKeyWitness
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto VKeyWitness) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "vkey" a) =>
LensLike' f s a
U5c.vkey LensLike' Identity (Proto VKeyWitness) ByteString
-> ByteString -> Proto VKeyWitness -> Proto VKeyWitness
forall s t a b. ASetter s t a b -> b -> s -> t
.~ VerKeyDSIGN DSIGN -> ByteString
forall v. DSIGNAlgorithm v => VerKeyDSIGN v -> ByteString
DSIGN.rawSerialiseVerKeyDSIGN VerKeyDSIGN DSIGN
vkey
Proto VKeyWitness
-> (Proto VKeyWitness -> Proto VKeyWitness) -> Proto VKeyWitness
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto VKeyWitness) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "signature" a) =>
LensLike' f s a
U5c.signature LensLike' Identity (Proto VKeyWitness) ByteString
-> ByteString -> Proto VKeyWitness -> Proto VKeyWitness
forall s t a b. ASetter s t a b -> b -> s -> t
.~ SigDSIGN DSIGN -> ByteString
forall v. DSIGNAlgorithm v => SigDSIGN v -> ByteString
DSIGN.rawSerialiseSigDSIGN SigDSIGN DSIGN
signature
bootstrapWitnesses :: [Proto UtxoRpc.BootstrapWitness]
bootstrapWitnesses :: [Proto BootstrapWitness]
bootstrapWitnesses =
Set BootstrapWitness -> [Item (Set BootstrapWitness)]
forall l. IsList l => l -> [Item l]
toList (TxWits (ShelleyLedgerEra era)
wits TxWits (ShelleyLedgerEra era)
-> Getting
(Set BootstrapWitness)
(TxWits (ShelleyLedgerEra era))
(Set BootstrapWitness)
-> Set BootstrapWitness
forall s a. s -> Getting a s a -> a
^. Getting
(Set BootstrapWitness)
(TxWits (ShelleyLedgerEra era))
(Set BootstrapWitness)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set BootstrapWitness)
Lens' (TxWits (ShelleyLedgerEra era)) (Set BootstrapWitness)
L.bootAddrTxWitsL) [BootstrapWitness]
-> (BootstrapWitness -> Proto BootstrapWitness)
-> [Proto BootstrapWitness]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \BootstrapWitness
bootstrapWitness -> do
let L.VKey VerKeyDSIGN DSIGN
bootstrapKey = BootstrapWitness -> VKey Witness
L.bwKey BootstrapWitness
bootstrapWitness
DSIGN.SignedDSIGN SigDSIGN DSIGN
bootstrapSignature = BootstrapWitness
-> SignedDSIGN DSIGN (Hash HASH EraIndependentTxBody)
L.bwSignature BootstrapWitness
bootstrapWitness
Proto BootstrapWitness
forall msg. Message msg => msg
defMessage
Proto BootstrapWitness
-> (Proto BootstrapWitness -> Proto BootstrapWitness)
-> Proto BootstrapWitness
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto BootstrapWitness) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "vkey" a) =>
LensLike' f s a
U5c.vkey LensLike' Identity (Proto BootstrapWitness) ByteString
-> ByteString -> Proto BootstrapWitness -> Proto BootstrapWitness
forall s t a b. ASetter s t a b -> b -> s -> t
.~ VerKeyDSIGN DSIGN -> ByteString
forall v. DSIGNAlgorithm v => VerKeyDSIGN v -> ByteString
DSIGN.rawSerialiseVerKeyDSIGN VerKeyDSIGN DSIGN
bootstrapKey
Proto BootstrapWitness
-> (Proto BootstrapWitness -> Proto BootstrapWitness)
-> Proto BootstrapWitness
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto BootstrapWitness) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "signature" a) =>
LensLike' f s a
U5c.signature LensLike' Identity (Proto BootstrapWitness) ByteString
-> ByteString -> Proto BootstrapWitness -> Proto BootstrapWitness
forall s t a b. ASetter s t a b -> b -> s -> t
.~ SigDSIGN DSIGN -> ByteString
forall v. DSIGNAlgorithm v => SigDSIGN v -> ByteString
DSIGN.rawSerialiseSigDSIGN SigDSIGN DSIGN
bootstrapSignature
Proto BootstrapWitness
-> (Proto BootstrapWitness -> Proto BootstrapWitness)
-> Proto BootstrapWitness
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto BootstrapWitness) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "chainCode" a) =>
LensLike' f s a
U5c.chainCode LensLike' Identity (Proto BootstrapWitness) ByteString
-> ByteString -> Proto BootstrapWitness -> Proto BootstrapWitness
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ChainCode -> ByteString
L.unChainCode (BootstrapWitness -> ChainCode
L.bwChainCode BootstrapWitness
bootstrapWitness)
Proto BootstrapWitness
-> (Proto BootstrapWitness -> Proto BootstrapWitness)
-> Proto BootstrapWitness
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto BootstrapWitness) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "attributes" a) =>
LensLike' f s a
U5c.attributes LensLike' Identity (Proto BootstrapWitness) ByteString
-> ByteString -> Proto BootstrapWitness -> Proto BootstrapWitness
forall s t a b. ASetter s t a b -> b -> s -> t
.~ BootstrapWitness -> ByteString
L.bwAttributes BootstrapWitness
bootstrapWitness
scriptWitnesses :: [Proto UtxoRpc.Script]
scriptWitnesses :: [Proto Script]
scriptWitnesses =
Map ScriptHash (Script (ShelleyLedgerEra era))
-> [Script (ShelleyLedgerEra era)]
forall k a. Map k a -> [a]
M.elems (TxWits (ShelleyLedgerEra era)
wits TxWits (ShelleyLedgerEra era)
-> Getting
(Map ScriptHash (Script (ShelleyLedgerEra era)))
(TxWits (ShelleyLedgerEra era))
(Map ScriptHash (Script (ShelleyLedgerEra era)))
-> Map ScriptHash (Script (ShelleyLedgerEra era))
forall s a. s -> Getting a s a -> a
^. Getting
(Map ScriptHash (Script (ShelleyLedgerEra era)))
(TxWits (ShelleyLedgerEra era))
(Map ScriptHash (Script (ShelleyLedgerEra era)))
forall era.
EraTxWits era =>
Lens' (TxWits era) (Map ScriptHash (Script era))
Lens'
(TxWits (ShelleyLedgerEra era))
(Map ScriptHash (Script (ShelleyLedgerEra era)))
L.scriptTxWitsL) [Script (ShelleyLedgerEra era)]
-> (Script (ShelleyLedgerEra era) -> Proto Script)
-> [Proto Script]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> ShelleyBasedEra era
-> Script (ShelleyLedgerEra era) -> Proto Script
forall era.
ShelleyBasedEra era
-> Script (ShelleyLedgerEra era) -> Proto Script
ledgerScriptToUtxoRpcScript ShelleyBasedEra era
sbe
plutusDatums :: [Proto UtxoRpc.PlutusData]
plutusDatums :: [Proto PlutusData]
plutusDatums =
[Data (ShelleyLedgerEra era)]
-> (TxDats (ShelleyLedgerEra era) -> [Data (ShelleyLedgerEra era)])
-> Maybe (TxDats (ShelleyLedgerEra era))
-> [Data (ShelleyLedgerEra era)]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] (Map DataHash (Data (ShelleyLedgerEra era))
-> [Data (ShelleyLedgerEra era)]
forall k a. Map k a -> [a]
M.elems (Map DataHash (Data (ShelleyLedgerEra era))
-> [Data (ShelleyLedgerEra era)])
-> (TxDats (ShelleyLedgerEra era)
-> Map DataHash (Data (ShelleyLedgerEra era)))
-> TxDats (ShelleyLedgerEra era)
-> [Data (ShelleyLedgerEra era)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxDats (ShelleyLedgerEra era)
-> Map DataHash (Data (ShelleyLedgerEra era))
forall era. TxDats era -> Map DataHash (Data era)
L.unTxDats) (TxWits (ShelleyLedgerEra era)
wits TxWits (ShelleyLedgerEra era)
-> Getting
(Maybe (TxDats (ShelleyLedgerEra era)))
(TxWits (ShelleyLedgerEra era))
(Maybe (TxDats (ShelleyLedgerEra era)))
-> Maybe (TxDats (ShelleyLedgerEra era))
forall s a. s -> Getting a s a -> a
^. Getting
(Maybe (TxDats (ShelleyLedgerEra era)))
(TxWits (ShelleyLedgerEra era))
(Maybe (TxDats (ShelleyLedgerEra era)))
forall era.
AnyEraTxWits era =>
SimpleGetter (TxWits era) (Maybe (TxDats era))
SimpleGetter
(TxWits (ShelleyLedgerEra era))
(Maybe (TxDats (ShelleyLedgerEra era)))
L.datsTxWitsG) [Data (ShelleyLedgerEra era)]
-> (Data (ShelleyLedgerEra era) -> Proto PlutusData)
-> [Proto PlutusData]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \Data (ShelleyLedgerEra era)
datum ->
ScriptData -> Proto PlutusData
scriptDataToUtxoRpcPlutusData (ScriptData -> Proto PlutusData)
-> (HashableScriptData -> ScriptData)
-> HashableScriptData
-> Proto PlutusData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HashableScriptData -> ScriptData
getScriptData (HashableScriptData -> Proto PlutusData)
-> HashableScriptData -> Proto PlutusData
forall a b. (a -> b) -> a -> b
$ Data (ShelleyLedgerEra era) -> HashableScriptData
forall ledgerera. Data ledgerera -> HashableScriptData
fromAlonzoData Data (ShelleyLedgerEra era)
datum
redeemersByIndex :: Map (PlutusScriptPurpose, Word32) (Proto UtxoRpc.Redeemer)
redeemersByIndex :: Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
redeemersByIndex =
[Item (Map (PlutusScriptPurpose, Word32) (Proto Redeemer))]
-> Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
forall l. IsList l => [Item l] -> l
fromList
[ ( (PlutusScriptPurpose, Word32)
scriptPurposeIndex
, (PlutusScriptPurpose, Word32)
-> ExecutionUnits
-> Maybe (ScriptData, ByteString)
-> Proto Redeemer
mkProtoRedeemer
(PlutusScriptPurpose, Word32)
scriptPurposeIndex
(ExUnits -> ExecutionUnits
fromAlonzoExUnits ExUnits
exUnits)
((ScriptData, ByteString) -> Maybe (ScriptData, ByteString)
forall a. a -> Maybe a
Just (HashableScriptData -> ScriptData
getScriptData (Data (ShelleyLedgerEra era) -> HashableScriptData
forall ledgerera. Data ledgerera -> HashableScriptData
fromAlonzoData Data (ShelleyLedgerEra era)
datum), Data (ShelleyLedgerEra era) -> ByteString
forall t. SafeToHash t => t -> ByteString
L.originalBytes Data (ShelleyLedgerEra era)
datum))
)
| (PlutusPurpose AsIx (ShelleyLedgerEra era)
purpose, (Data (ShelleyLedgerEra era)
datum, ExUnits
exUnits)) <-
[(PlutusPurpose AsIx (ShelleyLedgerEra era),
(Data (ShelleyLedgerEra era), ExUnits))]
-> (Redeemers (ShelleyLedgerEra era)
-> [(PlutusPurpose AsIx (ShelleyLedgerEra era),
(Data (ShelleyLedgerEra era), ExUnits))])
-> Maybe (Redeemers (ShelleyLedgerEra era))
-> [(PlutusPurpose AsIx (ShelleyLedgerEra era),
(Data (ShelleyLedgerEra era), ExUnits))]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] (Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits)
-> [(PlutusPurpose AsIx (ShelleyLedgerEra era),
(Data (ShelleyLedgerEra era), ExUnits))]
forall k a. Map k a -> [(k, a)]
M.toList (Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits)
-> [(PlutusPurpose AsIx (ShelleyLedgerEra era),
(Data (ShelleyLedgerEra era), ExUnits))])
-> (Redeemers (ShelleyLedgerEra era)
-> Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits))
-> Redeemers (ShelleyLedgerEra era)
-> [(PlutusPurpose AsIx (ShelleyLedgerEra era),
(Data (ShelleyLedgerEra era), ExUnits))]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Redeemers (ShelleyLedgerEra era)
-> Map
(PlutusPurpose AsIx (ShelleyLedgerEra era))
(Data (ShelleyLedgerEra era), ExUnits)
forall era.
Redeemers era -> Map (PlutusPurpose AsIx era) (Data era, ExUnits)
L.unRedeemers) (Maybe (Redeemers (ShelleyLedgerEra era))
-> [(PlutusPurpose AsIx (ShelleyLedgerEra era),
(Data (ShelleyLedgerEra era), ExUnits))])
-> Maybe (Redeemers (ShelleyLedgerEra era))
-> [(PlutusPurpose AsIx (ShelleyLedgerEra era),
(Data (ShelleyLedgerEra era), ExUnits))]
forall a b. (a -> b) -> a -> b
$ TxWits (ShelleyLedgerEra era)
wits TxWits (ShelleyLedgerEra era)
-> Getting
(Maybe (Redeemers (ShelleyLedgerEra era)))
(TxWits (ShelleyLedgerEra era))
(Maybe (Redeemers (ShelleyLedgerEra era)))
-> Maybe (Redeemers (ShelleyLedgerEra era))
forall s a. s -> Getting a s a -> a
^. Getting
(Maybe (Redeemers (ShelleyLedgerEra era)))
(TxWits (ShelleyLedgerEra era))
(Maybe (Redeemers (ShelleyLedgerEra era)))
forall era.
AnyEraTxWits era =>
SimpleGetter (TxWits era) (Maybe (Redeemers era))
SimpleGetter
(TxWits (ShelleyLedgerEra era))
(Maybe (Redeemers (ShelleyLedgerEra era)))
L.rdmrsTxWitsG
, let scriptPurposeIndex :: (PlutusScriptPurpose, Word32)
scriptPurposeIndex = ShelleyBasedEra era
-> PlutusPurpose AsIx (ShelleyLedgerEra era)
-> (PlutusScriptPurpose, Word32)
forall era.
ShelleyBasedEra era
-> PlutusPurpose AsIx (ShelleyLedgerEra era)
-> (PlutusScriptPurpose, Word32)
toPlutusScriptPurposeIndex ShelleyBasedEra era
sbe PlutusPurpose AsIx (ShelleyLedgerEra era)
purpose
]
witnessSet :: Proto UtxoRpc.WitnessSet
witnessSet :: Proto WitnessSet
witnessSet =
Proto WitnessSet
forall msg. Message msg => msg
defMessage
Proto WitnessSet
-> (Proto WitnessSet -> Proto WitnessSet) -> Proto WitnessSet
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto WitnessSet) [Proto VKeyWitness]
forall (f :: * -> *) s a.
(Functor f, HasField s "vkeywitness" a) =>
LensLike' f s a
U5c.vkeywitness LensLike' Identity (Proto WitnessSet) [Proto VKeyWitness]
-> [Proto VKeyWitness] -> Proto WitnessSet -> Proto WitnessSet
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Proto VKeyWitness]
vkeyWitnesses
Proto WitnessSet
-> (Proto WitnessSet -> Proto WitnessSet) -> Proto WitnessSet
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto WitnessSet) [Proto Script]
forall (f :: * -> *) s a.
(Functor f, HasField s "script" a) =>
LensLike' f s a
U5c.script LensLike' Identity (Proto WitnessSet) [Proto Script]
-> [Proto Script] -> Proto WitnessSet -> Proto WitnessSet
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Proto Script]
scriptWitnesses
Proto WitnessSet
-> (Proto WitnessSet -> Proto WitnessSet) -> Proto WitnessSet
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto WitnessSet) [Proto PlutusData]
forall (f :: * -> *) s a.
(Functor f, HasField s "plutusDatums" a) =>
LensLike' f s a
U5c.plutusDatums LensLike' Identity (Proto WitnessSet) [Proto PlutusData]
-> [Proto PlutusData] -> Proto WitnessSet -> Proto WitnessSet
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Proto PlutusData]
plutusDatums
Proto WitnessSet
-> (Proto WitnessSet -> Proto WitnessSet) -> Proto WitnessSet
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto WitnessSet) [Proto Redeemer]
forall (f :: * -> *) s a.
(Functor f, HasField s "redeemers" a) =>
LensLike' f s a
U5c.redeemers LensLike' Identity (Proto WitnessSet) [Proto Redeemer]
-> [Proto Redeemer] -> Proto WitnessSet -> Proto WitnessSet
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
-> [Proto Redeemer]
forall k a. Map k a -> [a]
M.elems Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
redeemersByIndex
Proto WitnessSet
-> (Proto WitnessSet -> Proto WitnessSet) -> Proto WitnessSet
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto WitnessSet) [Proto BootstrapWitness]
forall (f :: * -> *) s a.
(Functor f, HasField s "bootstrapWitnesses" a) =>
LensLike' f s a
U5c.bootstrapWitnesses LensLike' Identity (Proto WitnessSet) [Proto BootstrapWitness]
-> [Proto BootstrapWitness] -> Proto WitnessSet -> Proto WitnessSet
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Proto BootstrapWitness]
bootstrapWitnesses
certificates :: [Proto UtxoRpc.Certificate]
certificates :: [Proto Certificate]
certificates =
[Word32]
-> [Item (StrictSeq (TxCert (ShelleyLedgerEra era)))]
-> [(Word32, Item (StrictSeq (TxCert (ShelleyLedgerEra era))))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Word32
0 ..] (StrictSeq (TxCert (ShelleyLedgerEra era))
-> [Item (StrictSeq (TxCert (ShelleyLedgerEra era)))]
forall l. IsList l => l -> [Item l]
toList (TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
(StrictSeq (TxCert (ShelleyLedgerEra era)))
(TxBody TopTx (ShelleyLedgerEra era))
(StrictSeq (TxCert (ShelleyLedgerEra era)))
-> StrictSeq (TxCert (ShelleyLedgerEra era))
forall s a. s -> Getting a s a -> a
^. Getting
(StrictSeq (TxCert (ShelleyLedgerEra era)))
(TxBody TopTx (ShelleyLedgerEra era))
(StrictSeq (TxCert (ShelleyLedgerEra era)))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens'
(TxBody l (ShelleyLedgerEra era))
(StrictSeq (TxCert (ShelleyLedgerEra era)))
L.certsTxBodyL)) [(Word32, Item (StrictSeq (TxCert (ShelleyLedgerEra era))))]
-> ((Word32, Item (StrictSeq (TxCert (ShelleyLedgerEra era))))
-> Proto Certificate)
-> [Proto Certificate]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \(Word32
ix, Item (StrictSeq (TxCert (ShelleyLedgerEra era)))
cert) ->
ShelleyBasedEra era
-> TxCert (ShelleyLedgerEra era) -> Proto Certificate
forall era.
ShelleyBasedEra era
-> TxCert (ShelleyLedgerEra era) -> Proto Certificate
txCertToUtxoRpcCertificate ShelleyBasedEra era
sbe Item (StrictSeq (TxCert (ShelleyLedgerEra era)))
TxCert (ShelleyLedgerEra era)
cert
Proto Certificate
-> (Proto Certificate -> Proto Certificate) -> Proto Certificate
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Certificate) (Maybe (Proto Redeemer))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'redeemer" a) =>
LensLike' f s a
U5c.maybe'redeemer
LensLike' Identity (Proto Certificate) (Maybe (Proto Redeemer))
-> Maybe (Proto Redeemer) -> Proto Certificate -> Proto Certificate
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (PlutusScriptPurpose, Word32)
-> Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
-> Maybe (Proto Redeemer)
forall k a. Ord k => k -> Map k a -> Maybe a
M.lookup (PlutusScriptPurpose
CertifyingScript, Word32
ix) Map (PlutusScriptPurpose, Word32) (Proto Redeemer)
redeemersByIndex
auxiliary :: Maybe (Proto UtxoRpc.AuxData)
auxiliary :: Maybe (Proto AuxData)
auxiliary =
StrictMaybe (TxAuxData (ShelleyLedgerEra era))
-> Maybe (TxAuxData (ShelleyLedgerEra era))
forall a. StrictMaybe a -> Maybe a
L.strictMaybeToMaybe (Tx TopTx (ShelleyLedgerEra era)
ledgerTx Tx TopTx (ShelleyLedgerEra era)
-> Getting
(StrictMaybe (TxAuxData (ShelleyLedgerEra era)))
(Tx TopTx (ShelleyLedgerEra era))
(StrictMaybe (TxAuxData (ShelleyLedgerEra era)))
-> StrictMaybe (TxAuxData (ShelleyLedgerEra era))
forall s a. s -> Getting a s a -> a
^. Getting
(StrictMaybe (TxAuxData (ShelleyLedgerEra era)))
(Tx TopTx (ShelleyLedgerEra era))
(StrictMaybe (TxAuxData (ShelleyLedgerEra era)))
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (StrictMaybe (TxAuxData era))
forall (l :: TxLevel).
Lens'
(Tx l (ShelleyLedgerEra era))
(StrictMaybe (TxAuxData (ShelleyLedgerEra era)))
L.auxDataTxL) Maybe (TxAuxData (ShelleyLedgerEra era))
-> (TxAuxData (ShelleyLedgerEra era) -> Proto AuxData)
-> Maybe (Proto AuxData)
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \TxAuxData (ShelleyLedgerEra era)
auxData ->
Proto AuxData
forall msg. Message msg => msg
defMessage
Proto AuxData -> (Proto AuxData -> Proto AuxData) -> Proto AuxData
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto AuxData) [Proto Metadata]
forall (f :: * -> *) s a.
(Functor f, HasField s "metadata" a) =>
LensLike' f s a
U5c.metadata
LensLike' Identity (Proto AuxData) [Proto Metadata]
-> [Proto Metadata] -> Proto AuxData -> Proto AuxData
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( Map Word64 Metadatum -> [(Word64, Metadatum)]
forall k a. Map k a -> [(k, a)]
M.toList (TxAuxData (ShelleyLedgerEra era)
auxData TxAuxData (ShelleyLedgerEra era)
-> Getting
(Map Word64 Metadatum)
(TxAuxData (ShelleyLedgerEra era))
(Map Word64 Metadatum)
-> Map Word64 Metadatum
forall s a. s -> Getting a s a -> a
^. Getting
(Map Word64 Metadatum)
(TxAuxData (ShelleyLedgerEra era))
(Map Word64 Metadatum)
forall era.
EraTxAuxData era =>
Lens' (TxAuxData era) (Map Word64 Metadatum)
Lens' (TxAuxData (ShelleyLedgerEra era)) (Map Word64 Metadatum)
L.metadataTxAuxDataL) [(Word64, Metadatum)]
-> ((Word64, Metadatum) -> Proto Metadata) -> [Proto Metadata]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \(Word64
metadataLabel, Metadatum
metadatum) ->
Proto Metadata
forall msg. Message msg => msg
defMessage
Proto Metadata
-> (Proto Metadata -> Proto Metadata) -> Proto Metadata
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Metadata) Word64
forall (f :: * -> *) s a.
(Functor f, HasField s "label" a) =>
LensLike' f s a
U5c.label LensLike' Identity (Proto Metadata) Word64
-> Word64 -> Proto Metadata -> Proto Metadata
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word64
metadataLabel
Proto Metadata
-> (Proto Metadata -> Proto Metadata) -> Proto Metadata
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Metadata) (Proto Metadatum)
forall (f :: * -> *) s a.
(Functor f, HasField s "value" a) =>
LensLike' f s a
U5c.value LensLike' Identity (Proto Metadata) (Proto Metadatum)
-> Proto Metadatum -> Proto Metadata -> Proto Metadata
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Metadatum -> Proto Metadatum
metadatumToUtxoRpcMetadatum Metadatum
metadatum
)
Proto AuxData -> (Proto AuxData -> Proto AuxData) -> Proto AuxData
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto AuxData) [Proto Script]
forall (f :: * -> *) s a.
(Functor f, HasField s "scripts" a) =>
LensLike' f s a
U5c.scripts
LensLike' Identity (Proto AuxData) [Proto Script]
-> [Proto Script] -> Proto AuxData -> Proto AuxData
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (ShelleyBasedEra era
-> TxAuxData (ShelleyLedgerEra era)
-> [Script (ShelleyLedgerEra era)]
forall era.
ShelleyBasedEra era
-> TxAuxData (ShelleyLedgerEra era)
-> [Script (ShelleyLedgerEra era)]
txAuxDataScripts ShelleyBasedEra era
sbe TxAuxData (ShelleyLedgerEra era)
auxData [Script (ShelleyLedgerEra era)]
-> (Script (ShelleyLedgerEra era) -> Proto Script)
-> [Proto Script]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> ShelleyBasedEra era
-> Script (ShelleyLedgerEra era) -> Proto Script
forall era.
ShelleyBasedEra era
-> Script (ShelleyLedgerEra era) -> Proto Script
ledgerScriptToUtxoRpcScript ShelleyBasedEra era
sbe)
proposals :: [Proto UtxoRpc.GovernanceActionProposal]
proposals :: [Proto GovernanceActionProposal]
proposals = case ShelleyBasedEra era
sbe of
ShelleyBasedEra era
ShelleyBasedEraShelley -> []
ShelleyBasedEra era
ShelleyBasedEraAllegra -> []
ShelleyBasedEra era
ShelleyBasedEraMary -> []
ShelleyBasedEra era
ShelleyBasedEraAlonzo -> []
ShelleyBasedEra era
ShelleyBasedEraBabbage -> []
ShelleyBasedEra era
ShelleyBasedEraConway -> [Proto GovernanceActionProposal]
ConwayEraPParams (ShelleyLedgerEra era) =>
[Proto GovernanceActionProposal]
conwayOnwardsProposals
ShelleyBasedEra era
ShelleyBasedEraDijkstra -> [Proto GovernanceActionProposal]
ConwayEraPParams (ShelleyLedgerEra era) =>
[Proto GovernanceActionProposal]
conwayOnwardsProposals
where
conwayOnwardsProposals
:: L.ConwayEraPParams (ShelleyLedgerEra era)
=> [Proto UtxoRpc.GovernanceActionProposal]
conwayOnwardsProposals :: ConwayEraPParams (ShelleyLedgerEra era) =>
[Proto GovernanceActionProposal]
conwayOnwardsProposals =
[Proto GovernanceActionProposal]
-> (OSet (ProposalProcedure (ShelleyLedgerEra era))
-> [Proto GovernanceActionProposal])
-> Maybe (OSet (ProposalProcedure (ShelleyLedgerEra era)))
-> [Proto GovernanceActionProposal]
forall b a. b -> (a -> b) -> Maybe a -> b
maybe [] ((ProposalProcedure (ShelleyLedgerEra era)
-> Proto GovernanceActionProposal)
-> [ProposalProcedure (ShelleyLedgerEra era)]
-> [Proto GovernanceActionProposal]
forall a b. (a -> b) -> [a] -> [b]
map ProposalProcedure (ShelleyLedgerEra era)
-> Proto GovernanceActionProposal
forall era.
ConwayEraPParams era =>
ProposalProcedure era -> Proto GovernanceActionProposal
proposalProcedureToUtxoRpcProposal ([ProposalProcedure (ShelleyLedgerEra era)]
-> [Proto GovernanceActionProposal])
-> (OSet (ProposalProcedure (ShelleyLedgerEra era))
-> [ProposalProcedure (ShelleyLedgerEra era)])
-> OSet (ProposalProcedure (ShelleyLedgerEra era))
-> [Proto GovernanceActionProposal]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OSet (ProposalProcedure (ShelleyLedgerEra era))
-> [Item (OSet (ProposalProcedure (ShelleyLedgerEra era)))]
OSet (ProposalProcedure (ShelleyLedgerEra era))
-> [ProposalProcedure (ShelleyLedgerEra era)]
forall l. IsList l => l -> [Item l]
toList) (Maybe (OSet (ProposalProcedure (ShelleyLedgerEra era)))
-> [Proto GovernanceActionProposal])
-> Maybe (OSet (ProposalProcedure (ShelleyLedgerEra era)))
-> [Proto GovernanceActionProposal]
forall a b. (a -> b) -> a -> b
$
TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
(Maybe (OSet (ProposalProcedure (ShelleyLedgerEra era))))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (OSet (ProposalProcedure (ShelleyLedgerEra era))))
-> Maybe (OSet (ProposalProcedure (ShelleyLedgerEra era)))
forall s a. s -> Getting a s a -> a
^. Getting
(Maybe (OSet (ProposalProcedure (ShelleyLedgerEra era))))
(TxBody TopTx (ShelleyLedgerEra era))
(Maybe (OSet (ProposalProcedure (ShelleyLedgerEra era))))
forall era (l :: TxLevel).
AnyEraTxBody era =>
SimpleGetter (TxBody l era) (Maybe (OSet (ProposalProcedure era)))
forall (l :: TxLevel).
SimpleGetter
(TxBody l (ShelleyLedgerEra era))
(Maybe (OSet (ProposalProcedure (ShelleyLedgerEra era))))
L.proposalProceduresTxBodyG
Proto Tx
forall msg. Message msg => msg
defMessage
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "hash" a) =>
LensLike' f s a
U5c.hash LensLike' Identity (Proto Tx) ByteString
-> ByteString -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxId -> ByteString
forall a. SerialiseAsRawBytes a => a -> ByteString
serialiseToRawBytes (TxId -> TxId
fromShelleyTxId (Tx TopTx (ShelleyLedgerEra era) -> TxId
forall era (l :: TxLevel). EraTx era => Tx l era -> TxId
L.txIdTx Tx TopTx (ShelleyLedgerEra era)
ledgerTx))
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) [Proto TxInput]
forall (f :: * -> *) s a.
(Functor f, HasField s "inputs" a) =>
LensLike' f s a
U5c.inputs LensLike' Identity (Proto Tx) [Proto TxInput]
-> [Proto TxInput] -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Proto TxInput]
inputs
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) [Proto TxOutput]
forall (f :: * -> *) s a.
(Functor f, HasField s "outputs" a) =>
LensLike' f s a
U5c.outputs LensLike' Identity (Proto Tx) [Proto TxOutput]
-> [Proto TxOutput] -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (TxOut (ShelleyLedgerEra era) -> Proto TxOutput)
-> [TxOut (ShelleyLedgerEra era)] -> [Proto TxOutput]
forall a b. (a -> b) -> [a] -> [b]
map TxOut (ShelleyLedgerEra era) -> Proto TxOutput
convertTxOut (StrictSeq (TxOut (ShelleyLedgerEra era))
-> [Item (StrictSeq (TxOut (ShelleyLedgerEra era)))]
forall l. IsList l => l -> [Item l]
toList (TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting
(StrictSeq (TxOut (ShelleyLedgerEra era)))
(TxBody TopTx (ShelleyLedgerEra era))
(StrictSeq (TxOut (ShelleyLedgerEra era)))
-> StrictSeq (TxOut (ShelleyLedgerEra era))
forall s a. s -> Getting a s a -> a
^. Getting
(StrictSeq (TxOut (ShelleyLedgerEra era)))
(TxBody TopTx (ShelleyLedgerEra era))
(StrictSeq (TxOut (ShelleyLedgerEra era)))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel).
Lens'
(TxBody l (ShelleyLedgerEra era))
(StrictSeq (TxOut (ShelleyLedgerEra era)))
L.outputsTxBodyL))
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) [Proto TxInput]
forall (f :: * -> *) s a.
(Functor f, HasField s "referenceInputs" a) =>
LensLike' f s a
U5c.referenceInputs LensLike' Identity (Proto Tx) [Proto TxInput]
-> [Proto TxInput] -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (TxIn -> Proto TxInput) -> [TxIn] -> [Proto TxInput]
forall a b. (a -> b) -> [a] -> [b]
map (TxIn -> Proto TxInput
txInToUtxoRpcTxInput (TxIn -> Proto TxInput) -> (TxIn -> TxIn) -> TxIn -> Proto TxInput
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxIn -> TxIn
fromShelleyTxIn) [TxIn]
referenceInputs
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) [Proto Certificate]
forall (f :: * -> *) s a.
(Functor f, HasField s "certificates" a) =>
LensLike' f s a
U5c.certificates LensLike' Identity (Proto Tx) [Proto Certificate]
-> [Proto Certificate] -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Proto Certificate]
certificates
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) (Proto TxValidity)
forall (f :: * -> *) s a.
(Functor f, HasField s "validity" a) =>
LensLike' f s a
U5c.validity LensLike' Identity (Proto Tx) (Proto TxValidity)
-> Proto TxValidity -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Proto TxValidity
validity
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) [Proto Multiasset]
forall (f :: * -> *) s a.
(Functor f, HasField s "mint" a) =>
LensLike' f s a
U5c.mint LensLike' Identity (Proto Tx) [Proto Multiasset]
-> [Proto Multiasset] -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Map PolicyId PolicyAssets -> [Proto Multiasset]
policyAssetsToUtxoRpcMultiassets Map PolicyId PolicyAssets
mint
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) [Proto Withdrawal]
forall (f :: * -> *) s a.
(Functor f, HasField s "withdrawals" a) =>
LensLike' f s a
U5c.withdrawals LensLike' Identity (Proto Tx) [Proto Withdrawal]
-> [Proto Withdrawal] -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Proto Withdrawal]
withdrawals
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) (Maybe (Proto Collateral))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'collateral" a) =>
LensLike' f s a
U5c.maybe'collateral LensLike' Identity (Proto Tx) (Maybe (Proto Collateral))
-> Maybe (Proto Collateral) -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe (Proto Collateral)
collateral
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) (Proto WitnessSet)
forall (f :: * -> *) s a.
(Functor f, HasField s "witnesses" a) =>
LensLike' f s a
U5c.witnesses LensLike' Identity (Proto Tx) (Proto WitnessSet)
-> Proto WitnessSet -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Proto WitnessSet
witnessSet
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) (Proto BigInt)
forall (f :: * -> *) s a.
(Functor f, HasField s "fee" a) =>
LensLike' f s a
U5c.fee LensLike' Identity (Proto Tx) (Proto BigInt)
-> Proto BigInt -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin -> Proto BigInt
forall t s. Inject t s => t -> s
inject (TxBody TopTx (ShelleyLedgerEra era)
body TxBody TopTx (ShelleyLedgerEra era)
-> Getting Coin (TxBody TopTx (ShelleyLedgerEra era)) Coin -> Coin
forall s a. s -> Getting a s a -> a
^. Getting Coin (TxBody TopTx (ShelleyLedgerEra era)) Coin
forall era. EraTxBody era => Lens' (TxBody TopTx era) Coin
Lens' (TxBody TopTx (ShelleyLedgerEra era)) Coin
L.feeTxBodyL)
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) Bool
forall (f :: * -> *) s a.
(Functor f, HasField s "successful" a) =>
LensLike' f s a
U5c.successful LensLike' Identity (Proto Tx) Bool -> Bool -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Bool
isValid
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) (Maybe (Proto AuxData))
forall (f :: * -> *) s a.
(Functor f, HasField s "maybe'auxiliary" a) =>
LensLike' f s a
U5c.maybe'auxiliary LensLike' Identity (Proto Tx) (Maybe (Proto AuxData))
-> Maybe (Proto AuxData) -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe (Proto AuxData)
auxiliary
Proto Tx -> (Proto Tx -> Proto Tx) -> Proto Tx
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Tx) [Proto GovernanceActionProposal]
forall (f :: * -> *) s a.
(Functor f, HasField s "proposals" a) =>
LensLike' f s a
U5c.proposals LensLike' Identity (Proto Tx) [Proto GovernanceActionProposal]
-> [Proto GovernanceActionProposal] -> Proto Tx -> Proto Tx
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Proto GovernanceActionProposal]
proposals
where
sbe :: ShelleyBasedEra era
sbe = forall era. IsShelleyBasedEra era => ShelleyBasedEra era
shelleyBasedEra @era
anyEraTxConstraints
:: ShelleyBasedEra era
-> ((IsShelleyBasedEra era, L.AnyEraTx (ShelleyLedgerEra era)) => a)
-> a
anyEraTxConstraints :: forall era a.
ShelleyBasedEra era
-> ((IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a)
-> a
anyEraTxConstraints ShelleyBasedEra era
sbe (IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a
k = case ShelleyBasedEra era
sbe of
ShelleyBasedEra era
ShelleyBasedEraShelley -> a
(IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a
k
ShelleyBasedEra era
ShelleyBasedEraAllegra -> a
(IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a
k
ShelleyBasedEra era
ShelleyBasedEraMary -> a
(IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a
k
ShelleyBasedEra era
ShelleyBasedEraAlonzo -> a
(IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a
k
ShelleyBasedEra era
ShelleyBasedEraBabbage -> a
(IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a
k
ShelleyBasedEra era
ShelleyBasedEraConway -> a
(IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a
k
ShelleyBasedEra era
ShelleyBasedEraDijkstra -> a
(IsShelleyBasedEra era, AnyEraTx (ShelleyLedgerEra era)) => a
k
txInToUtxoRpcTxInput :: TxIn -> Proto UtxoRpc.TxInput
txInToUtxoRpcTxInput :: TxIn -> Proto TxInput
txInToUtxoRpcTxInput (TxIn TxId
txId' (TxIx Word
txIx)) =
Proto TxInput
forall msg. Message msg => msg
defMessage
Proto TxInput -> (Proto TxInput -> Proto TxInput) -> Proto TxInput
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto TxInput) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "txHash" a) =>
LensLike' f s a
U5c.txHash LensLike' Identity (Proto TxInput) ByteString
-> ByteString -> Proto TxInput -> Proto TxInput
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxId -> ByteString
forall a. SerialiseAsRawBytes a => a -> ByteString
serialiseToRawBytes TxId
txId'
Proto TxInput -> (Proto TxInput -> Proto TxInput) -> Proto TxInput
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto TxInput) Word32
forall (f :: * -> *) s a.
(Functor f, HasField s "outputIndex" a) =>
LensLike' f s a
U5c.outputIndex LensLike' Identity (Proto TxInput) Word32
-> Word32 -> Proto TxInput -> Proto TxInput
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word
txIx
metadatumToUtxoRpcMetadatum :: L.Metadatum -> Proto UtxoRpc.Metadatum
metadatumToUtxoRpcMetadatum :: Metadatum -> Proto Metadatum
metadatumToUtxoRpcMetadatum = \case
L.I Integer
int -> do
let clamped :: Int64
clamped =
Integer -> Int64
forall a. Num a => Integer -> a
fromInteger (Integer -> Int64) -> (Integer -> Integer) -> Integer -> Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Integer -> Integer -> Integer
forall a. Ord a => a -> a -> a
max (Int64 -> Integer
forall a. Integral a => a -> Integer
toInteger (forall a. Bounded a => a
minBound @Int64)) (Integer -> Int64) -> Integer -> Int64
forall a b. (a -> b) -> a -> b
$
Integer -> Integer -> Integer
forall a. Ord a => a -> a -> a
min (Int64 -> Integer
forall a. Integral a => a -> Integer
toInteger (forall a. Bounded a => a
maxBound @Int64)) Integer
int
Proto Metadatum
forall msg. Message msg => msg
defMessage Proto Metadatum
-> (Proto Metadatum -> Proto Metadatum) -> Proto Metadatum
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Metadatum) Int64
forall (f :: * -> *) s a.
(Functor f, HasField s "int" a) =>
LensLike' f s a
U5c.int LensLike' Identity (Proto Metadatum) Int64
-> Int64 -> Proto Metadatum -> Proto Metadatum
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Int64
clamped
L.B ByteString
bytes -> Proto Metadatum
forall msg. Message msg => msg
defMessage Proto Metadatum
-> (Proto Metadatum -> Proto Metadatum) -> Proto Metadatum
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Metadatum) ByteString
forall (f :: * -> *) s a.
(Functor f, HasField s "bytes" a) =>
LensLike' f s a
U5c.bytes LensLike' Identity (Proto Metadatum) ByteString
-> ByteString -> Proto Metadatum -> Proto Metadatum
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ByteString
bytes
L.S Text
text -> Proto Metadatum
forall msg. Message msg => msg
defMessage Proto Metadatum
-> (Proto Metadatum -> Proto Metadatum) -> Proto Metadatum
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Metadatum) Text
forall (f :: * -> *) s a.
(Functor f, HasField s "text" a) =>
LensLike' f s a
U5c.text LensLike' Identity (Proto Metadatum) Text
-> Text -> Proto Metadatum -> Proto Metadatum
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Text
text
L.List [Metadatum]
elements ->
Proto Metadatum
forall msg. Message msg => msg
defMessage Proto Metadatum
-> (Proto Metadatum -> Proto Metadatum) -> Proto Metadatum
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Metadatum) (Proto MetadatumArray)
forall (f :: * -> *) s a.
(Functor f, HasField s "array" a) =>
LensLike' f s a
U5c.array LensLike' Identity (Proto Metadatum) (Proto MetadatumArray)
-> (([Proto Metadatum] -> Identity [Proto Metadatum])
-> Proto MetadatumArray -> Identity (Proto MetadatumArray))
-> ([Proto Metadatum] -> Identity [Proto Metadatum])
-> Proto Metadatum
-> Identity (Proto Metadatum)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Proto Metadatum] -> Identity [Proto Metadatum])
-> Proto MetadatumArray -> Identity (Proto MetadatumArray)
forall (f :: * -> *) s a.
(Functor f, HasField s "items" a) =>
LensLike' f s a
U5c.items (([Proto Metadatum] -> Identity [Proto Metadatum])
-> Proto Metadatum -> Identity (Proto Metadatum))
-> [Proto Metadatum] -> Proto Metadatum -> Proto Metadatum
forall s t a b. ASetter s t a b -> b -> s -> t
.~ (Metadatum -> Proto Metadatum) -> [Metadatum] -> [Proto Metadatum]
forall a b. (a -> b) -> [a] -> [b]
map Metadatum -> Proto Metadatum
metadatumToUtxoRpcMetadatum [Metadatum]
elements
L.Map [(Metadatum, Metadatum)]
keyValuePairs ->
Proto Metadatum
forall msg. Message msg => msg
defMessage
Proto Metadatum
-> (Proto Metadatum -> Proto Metadatum) -> Proto Metadatum
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto Metadatum) (Proto MetadatumMap)
forall (f :: * -> *) s a.
(Functor f, HasField s "map" a) =>
LensLike' f s a
U5c.map LensLike' Identity (Proto Metadatum) (Proto MetadatumMap)
-> (([Proto MetadatumPair] -> Identity [Proto MetadatumPair])
-> Proto MetadatumMap -> Identity (Proto MetadatumMap))
-> ([Proto MetadatumPair] -> Identity [Proto MetadatumPair])
-> Proto Metadatum
-> Identity (Proto Metadatum)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Proto MetadatumPair] -> Identity [Proto MetadatumPair])
-> Proto MetadatumMap -> Identity (Proto MetadatumMap)
forall (f :: * -> *) s a.
(Functor f, HasField s "pairs" a) =>
LensLike' f s a
U5c.pairs
(([Proto MetadatumPair] -> Identity [Proto MetadatumPair])
-> Proto Metadatum -> Identity (Proto Metadatum))
-> [Proto MetadatumPair] -> Proto Metadatum -> Proto Metadatum
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ( [(Metadatum, Metadatum)]
keyValuePairs [(Metadatum, Metadatum)]
-> ((Metadatum, Metadatum) -> Proto MetadatumPair)
-> [Proto MetadatumPair]
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \(Metadatum
key, Metadatum
value) ->
Proto MetadatumPair
forall msg. Message msg => msg
defMessage
Proto MetadatumPair
-> (Proto MetadatumPair -> Proto MetadatumPair)
-> Proto MetadatumPair
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto MetadatumPair) (Proto Metadatum)
forall (f :: * -> *) s a.
(Functor f, HasField s "key" a) =>
LensLike' f s a
U5c.key LensLike' Identity (Proto MetadatumPair) (Proto Metadatum)
-> Proto Metadatum -> Proto MetadatumPair -> Proto MetadatumPair
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Metadatum -> Proto Metadatum
metadatumToUtxoRpcMetadatum Metadatum
key
Proto MetadatumPair
-> (Proto MetadatumPair -> Proto MetadatumPair)
-> Proto MetadatumPair
forall a b. a -> (a -> b) -> b
& LensLike' Identity (Proto MetadatumPair) (Proto Metadatum)
forall (f :: * -> *) s a.
(Functor f, HasField s "value" a) =>
LensLike' f s a
U5c.value LensLike' Identity (Proto MetadatumPair) (Proto Metadatum)
-> Proto Metadatum -> Proto MetadatumPair -> Proto MetadatumPair
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Metadatum -> Proto Metadatum
metadatumToUtxoRpcMetadatum Metadatum
value
)
txAuxDataScripts
:: ShelleyBasedEra era
-> L.TxAuxData (ShelleyLedgerEra era)
-> [L.Script (ShelleyLedgerEra era)]
txAuxDataScripts :: forall era.
ShelleyBasedEra era
-> TxAuxData (ShelleyLedgerEra era)
-> [Script (ShelleyLedgerEra era)]
txAuxDataScripts ShelleyBasedEra era
sbe TxAuxData (ShelleyLedgerEra era)
auxData =
case ShelleyBasedEra era
sbe of
ShelleyBasedEra era
ShelleyBasedEraShelley -> []
ShelleyBasedEra era
ShelleyBasedEraAllegra -> StrictSeq (NativeScript AllegraEra)
-> [Item (StrictSeq (NativeScript AllegraEra))]
forall l. IsList l => l -> [Item l]
toList (StrictSeq (NativeScript AllegraEra)
-> [Item (StrictSeq (NativeScript AllegraEra))])
-> StrictSeq (NativeScript AllegraEra)
-> [Item (StrictSeq (NativeScript AllegraEra))]
forall a b. (a -> b) -> a -> b
$ AllegraTxAuxData AllegraEra
TxAuxData (ShelleyLedgerEra era)
auxData AllegraTxAuxData AllegraEra
-> Getting
(StrictSeq (NativeScript AllegraEra))
(AllegraTxAuxData AllegraEra)
(StrictSeq (NativeScript AllegraEra))
-> StrictSeq (NativeScript AllegraEra)
forall s a. s -> Getting a s a -> a
^. Getting
(StrictSeq (NativeScript AllegraEra))
(AllegraTxAuxData AllegraEra)
(StrictSeq (NativeScript AllegraEra))
(StrictSeq (NativeScript AllegraEra)
-> Const
(StrictSeq (NativeScript AllegraEra))
(StrictSeq (NativeScript AllegraEra)))
-> TxAuxData AllegraEra
-> Const
(StrictSeq (NativeScript AllegraEra)) (TxAuxData AllegraEra)
forall era.
AllegraEraTxAuxData era =>
Lens' (TxAuxData era) (StrictSeq (NativeScript era))
Lens' (TxAuxData AllegraEra) (StrictSeq (NativeScript AllegraEra))
L.nativeScriptsTxAuxDataL
ShelleyBasedEra era
ShelleyBasedEraMary -> StrictSeq (NativeScript MaryEra)
-> [Item (StrictSeq (NativeScript MaryEra))]
forall l. IsList l => l -> [Item l]
toList (StrictSeq (NativeScript MaryEra)
-> [Item (StrictSeq (NativeScript MaryEra))])
-> StrictSeq (NativeScript MaryEra)
-> [Item (StrictSeq (NativeScript MaryEra))]
forall a b. (a -> b) -> a -> b
$ AllegraTxAuxData MaryEra
TxAuxData (ShelleyLedgerEra era)
auxData AllegraTxAuxData MaryEra
-> Getting
(StrictSeq (NativeScript MaryEra))
(AllegraTxAuxData MaryEra)
(StrictSeq (NativeScript MaryEra))
-> StrictSeq (NativeScript MaryEra)
forall s a. s -> Getting a s a -> a
^. Getting
(StrictSeq (NativeScript MaryEra))
(AllegraTxAuxData MaryEra)
(StrictSeq (NativeScript MaryEra))
(StrictSeq (NativeScript MaryEra)
-> Const
(StrictSeq (NativeScript MaryEra))
(StrictSeq (NativeScript MaryEra)))
-> TxAuxData MaryEra
-> Const (StrictSeq (NativeScript MaryEra)) (TxAuxData MaryEra)
forall era.
AllegraEraTxAuxData era =>
Lens' (TxAuxData era) (StrictSeq (NativeScript era))
Lens' (TxAuxData MaryEra) (StrictSeq (NativeScript MaryEra))
L.nativeScriptsTxAuxDataL
ShelleyBasedEra era
ShelleyBasedEraAlonzo -> StrictSeq (AlonzoScript AlonzoEra)
-> [Item (StrictSeq (AlonzoScript AlonzoEra))]
forall l. IsList l => l -> [Item l]
toList (StrictSeq (AlonzoScript AlonzoEra)
-> [Item (StrictSeq (AlonzoScript AlonzoEra))])
-> StrictSeq (AlonzoScript AlonzoEra)
-> [Item (StrictSeq (AlonzoScript AlonzoEra))]
forall a b. (a -> b) -> a -> b
$ AlonzoTxAuxData AlonzoEra -> StrictSeq (AlonzoScript AlonzoEra)
forall era.
AlonzoEraScript era =>
AlonzoTxAuxData era -> StrictSeq (AlonzoScript era)
L.getAlonzoTxAuxDataScripts TxAuxData (ShelleyLedgerEra era)
AlonzoTxAuxData AlonzoEra
auxData
ShelleyBasedEra era
ShelleyBasedEraBabbage -> StrictSeq (AlonzoScript BabbageEra)
-> [Item (StrictSeq (AlonzoScript BabbageEra))]
forall l. IsList l => l -> [Item l]
toList (StrictSeq (AlonzoScript BabbageEra)
-> [Item (StrictSeq (AlonzoScript BabbageEra))])
-> StrictSeq (AlonzoScript BabbageEra)
-> [Item (StrictSeq (AlonzoScript BabbageEra))]
forall a b. (a -> b) -> a -> b
$ AlonzoTxAuxData BabbageEra -> StrictSeq (AlonzoScript BabbageEra)
forall era.
AlonzoEraScript era =>
AlonzoTxAuxData era -> StrictSeq (AlonzoScript era)
L.getAlonzoTxAuxDataScripts TxAuxData (ShelleyLedgerEra era)
AlonzoTxAuxData BabbageEra
auxData
ShelleyBasedEra era
ShelleyBasedEraConway -> StrictSeq (AlonzoScript ConwayEra)
-> [Item (StrictSeq (AlonzoScript ConwayEra))]
forall l. IsList l => l -> [Item l]
toList (StrictSeq (AlonzoScript ConwayEra)
-> [Item (StrictSeq (AlonzoScript ConwayEra))])
-> StrictSeq (AlonzoScript ConwayEra)
-> [Item (StrictSeq (AlonzoScript ConwayEra))]
forall a b. (a -> b) -> a -> b
$ AlonzoTxAuxData ConwayEra -> StrictSeq (AlonzoScript ConwayEra)
forall era.
AlonzoEraScript era =>
AlonzoTxAuxData era -> StrictSeq (AlonzoScript era)
L.getAlonzoTxAuxDataScripts TxAuxData (ShelleyLedgerEra era)
AlonzoTxAuxData ConwayEra
auxData
ShelleyBasedEra era
ShelleyBasedEraDijkstra -> StrictSeq (AlonzoScript DijkstraEra)
-> [Item (StrictSeq (AlonzoScript DijkstraEra))]
forall l. IsList l => l -> [Item l]
toList (StrictSeq (AlonzoScript DijkstraEra)
-> [Item (StrictSeq (AlonzoScript DijkstraEra))])
-> StrictSeq (AlonzoScript DijkstraEra)
-> [Item (StrictSeq (AlonzoScript DijkstraEra))]
forall a b. (a -> b) -> a -> b
$ AlonzoTxAuxData DijkstraEra -> StrictSeq (AlonzoScript DijkstraEra)
forall era.
AlonzoEraScript era =>
AlonzoTxAuxData era -> StrictSeq (AlonzoScript era)
L.getAlonzoTxAuxDataScripts TxAuxData (ShelleyLedgerEra era)
AlonzoTxAuxData DijkstraEra
auxData