1212{-# LANGUAGE StandaloneDeriving #-}
1313{-# LANGUAGE TypeApplications #-}
1414{-# LANGUAGE TypeFamilies #-}
15- {-# LANGUAGE TypeOperators #-}
1615{-# LANGUAGE UndecidableInstances #-}
1716{-# LANGUAGE UndecidableSuperClasses #-}
1817{-# LANGUAGE ViewPatterns #-}
@@ -82,11 +81,10 @@ import Data.Aeson (ToJSON (..), object, (.=))
8281import qualified Data.Aeson as Aeson (Value (Null , String ))
8382import Data.Bits
8483import Data.Maybe (fromMaybe )
85- import Data.Typeable (Proxy (.. ), (:~:) ( Refl ) )
84+ import Data.Typeable (Proxy (.. ))
8685import Data.Word
8786import GHC.Generics (Generic )
8887import GHC.Stack (HasCallStack )
89- import GHC.TypeLits
9088import Lens.Micro
9189import NoThunks.Class (InspectHeapNamed (.. ), NoThunks )
9290
@@ -116,7 +114,6 @@ decodeAddress28 ::
116114 Addr28Extra ->
117115 Maybe Addr
118116decodeAddress28 stakeRef (Addr28Extra a b c d) = do
119- Refl <- sameNat (Proxy @ (SizeHash ADDRHASH )) (Proxy @ 28 )
120117 let network = if d `testBit` 1 then Mainnet else Testnet
121118 paymentCred =
122119 if d `testBit` 0
@@ -163,7 +160,6 @@ decodeDataHash32 ::
163160 DataHash32 ->
164161 Maybe DataHash
165162decodeDataHash32 (DataHash32 a b c d) = do
166- Refl <- sameNat (Proxy @ (SizeHash HASH )) (Proxy @ 32 )
167163 Just $! unsafeMakeSafeHash $ hashFromPackedBytes $ PackedBytes32 a b c d
168164
169165viewCompactTxOut ::
@@ -213,7 +209,7 @@ deriving via InspectHeapNamed "AlonzoTxOut" (AlonzoTxOut era) instance NoThunks
213209encodeAddress28 ::
214210 Network ->
215211 PaymentCredential ->
216- Maybe ( SizeHash ADDRHASH :~: 28 , Addr28Extra )
212+ Addr28Extra
217213encodeAddress28 network paymentCred = do
218214 let networkBit, payCredTypeBit :: Word64
219215 networkBit =
@@ -226,26 +222,28 @@ encodeAddress28 network paymentCred = do
226222 ScriptHashObj {} -> 0
227223 encodeAddr ::
228224 Hash ADDRHASH a ->
229- Maybe ( SizeHash ADDRHASH :~: 28 , Addr28Extra )
225+ Addr28Extra
230226 encodeAddr h = do
231- refl@ Refl <- sameNat (Proxy @ (SizeHash ADDRHASH )) (Proxy @ 28 )
232227 case hashToPackedBytes h of
233228 PackedBytes28 a b c d ->
234229 let d' = (fromIntegral d `shiftL` 32 ) .|. networkBit .|. payCredTypeBit
235- in Just (refl, Addr28Extra a b c d')
236- _ -> Nothing
230+ in Addr28Extra a b c d'
231+ _ ->
232+ -- This case should never match, but if it does, we output garbage
233+ Addr28Extra 0 0 0 0
237234 case paymentCred of
238235 KeyHashObj (KeyHash addrHash) -> encodeAddr addrHash
239236 ScriptHashObj (ScriptHash addrHash) -> encodeAddr addrHash
240237
241238encodeDataHash32 ::
242239 DataHash ->
243- Maybe ( SizeHash HASH :~: 32 , DataHash32 )
240+ DataHash32
244241encodeDataHash32 dataHash = do
245- refl@ Refl <- sameNat (Proxy @ (SizeHash HASH )) (Proxy @ 32 )
246242 case hashToPackedBytes (extractHash dataHash) of
247- PackedBytes32 a b c d -> Just (refl, DataHash32 a b c d)
248- _ -> Nothing
243+ PackedBytes32 a b c d -> DataHash32 a b c d
244+ _ ->
245+ -- This case should never match, but if it does, we output garbage
246+ DataHash32 0 0 0 0
249247
250248getAdaOnly ::
251249 forall era .
@@ -269,15 +267,16 @@ pattern AlonzoTxOut addr vl dh <-
269267 where
270268 AlonzoTxOut (Addr network paymentCred stakeRef) vl SNothing
271269 | StakeRefBase stakeCred <- stakeRef
272- , Just adaCompact <- getAdaOnly (Proxy @ era ) vl
273- , Just ( Refl , addr28Extra) <- encodeAddress28 network paymentCred =
274- TxOut_AddrHash28_AdaOnly stakeCred addr28Extra adaCompact
270+ , Just adaCompact <- getAdaOnly (Proxy @ era ) vl =
271+ let addr28Extra = encodeAddress28 network paymentCred
272+ in TxOut_AddrHash28_AdaOnly stakeCred addr28Extra adaCompact
275273 AlonzoTxOut (Addr network paymentCred stakeRef) vl (SJust dh)
276274 | StakeRefBase stakeCred <- stakeRef
277- , Just adaCompact <- getAdaOnly (Proxy @ era ) vl
278- , Just (Refl , addr28Extra) <- encodeAddress28 network paymentCred
279- , Just (Refl , dataHash32) <- encodeDataHash32 dh =
280- TxOut_AddrHash28_AdaOnly_DataHash32 stakeCred addr28Extra adaCompact dataHash32
275+ , Just adaCompact <- getAdaOnly (Proxy @ era ) vl =
276+ let
277+ addr28Extra = encodeAddress28 network paymentCred
278+ dataHash32 = encodeDataHash32 dh
279+ in TxOut_AddrHash28_AdaOnly_DataHash32 stakeCred addr28Extra adaCompact dataHash32
281280 AlonzoTxOut addr vl mdh =
282281 let v = fromMaybe (error $ " Illegal value in TxOut: " ++ show vl) $ toCompact vl
283282 a = compactAddr addr
0 commit comments