Skip to content

Commit 3511d23

Browse files
committed
WIP
1 parent ddd9821 commit 3511d23

File tree

10 files changed

+110
-35
lines changed

10 files changed

+110
-35
lines changed

cabal.project

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ if impl (ghc >= 9.12)
6464
source-repository-package
6565
type: git
6666
location: https://github.com/IntersectMBO/ouroboros-consensus
67-
tag: 35d19494ef18d78b4d3aa58cb7f86191acf33dfb
68-
--sha256: sha256-0QAPCaywwJXIWUTXyU9KJ0Ddnumaj1vOjD++FjQ8SPc=
67+
tag: 15fc8c4fee64473350e1904347bfd5852f9cdbfa
68+
--sha256: sha256-Tvw0dLGZkBAflpvcEwl7Acnrux9H5UaniW5YwMvIeIs=
6969
subdir:
7070
ouroboros-consensus
7171
ouroboros-consensus-cardano

cardano-api/cardano-api.cabal

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ library gen
296296
Test.Gen.Cardano.Api.Era
297297
Test.Gen.Cardano.Api.Hardcoded
298298
Test.Gen.Cardano.Api.Metadata
299+
Test.Gen.Cardano.Api.Orphans
299300
Test.Gen.Cardano.Api.ProtocolParameters
300301
Test.Gen.Cardano.Api.Typed
301302
Test.Gen.Cardano.Crypto.Seed
@@ -316,9 +317,11 @@ library gen
316317
cardano-ledger-byron-test >=1.5,
317318
cardano-ledger-conway:testlib,
318319
cardano-ledger-core:{cardano-ledger-core, testlib} >=1.14,
320+
cardano-ledger-dijkstra >=0.1,
319321
cardano-ledger-shelley >=1.13,
320322
containers,
321323
filepath,
324+
generic-random,
322325
hedgehog >=1.1,
323326
hedgehog-extras,
324327
hedgehog-quickcheck,

cardano-api/src/Cardano/Api/Experimental/Plutus/Internal/ScriptWitness.hs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ getPlutusScriptWitnessLanguage (PlutusScriptWitness l _ _ _ _) =
7474
L.SPlutusV1 -> L.plutusLanguage l
7575
L.SPlutusV2 -> L.plutusLanguage l
7676
L.SPlutusV3 -> L.plutusLanguage l
77+
L.SPlutusV4 -> L.plutusLanguage l
7778

7879
-- | Every Plutus script has a purpose that indicates
7980
-- what that script is witnessing.
@@ -100,21 +101,27 @@ type family PlutusScriptDatumF (lang :: L.Language) (purpose :: PlutusScriptPurp
100101
PlutusScriptDatumF L.PlutusV1 SpendingScript = HashableScriptData
101102
PlutusScriptDatumF L.PlutusV2 SpendingScript = HashableScriptData
102103
PlutusScriptDatumF L.PlutusV3 SpendingScript = Maybe HashableScriptData -- CIP-69
104+
PlutusScriptDatumF L.PlutusV4 SpendingScript = Maybe HashableScriptData -- CIP-69
103105
PlutusScriptDatumF L.PlutusV1 MintingScript = NoScriptDatum
104106
PlutusScriptDatumF L.PlutusV2 MintingScript = NoScriptDatum
105107
PlutusScriptDatumF L.PlutusV3 MintingScript = NoScriptDatum
108+
PlutusScriptDatumF L.PlutusV4 MintingScript = NoScriptDatum
106109
PlutusScriptDatumF L.PlutusV1 WithdrawingScript = NoScriptDatum
107110
PlutusScriptDatumF L.PlutusV2 WithdrawingScript = NoScriptDatum
108111
PlutusScriptDatumF L.PlutusV3 WithdrawingScript = NoScriptDatum
112+
PlutusScriptDatumF L.PlutusV4 WithdrawingScript = NoScriptDatum
109113
PlutusScriptDatumF L.PlutusV1 CertifyingScript = NoScriptDatum
110114
PlutusScriptDatumF L.PlutusV2 CertifyingScript = NoScriptDatum
111115
PlutusScriptDatumF L.PlutusV3 CertifyingScript = NoScriptDatum
116+
PlutusScriptDatumF L.PlutusV4 CertifyingScript = NoScriptDatum
112117
PlutusScriptDatumF L.PlutusV1 ProposingScript = NoScriptDatum
113118
PlutusScriptDatumF L.PlutusV2 ProposingScript = NoScriptDatum
114119
PlutusScriptDatumF L.PlutusV3 ProposingScript = NoScriptDatum
120+
PlutusScriptDatumF L.PlutusV4 ProposingScript = NoScriptDatum
115121
PlutusScriptDatumF L.PlutusV1 VotingScript = NoScriptDatum
116122
PlutusScriptDatumF L.PlutusV2 VotingScript = NoScriptDatum
117123
PlutusScriptDatumF L.PlutusV3 VotingScript = NoScriptDatum
124+
PlutusScriptDatumF L.PlutusV4 VotingScript = NoScriptDatum
118125

119126
data PlutusScriptDatum (lang :: L.Language) (purpose :: PlutusScriptPurpose) where
120127
SpendingScriptDatum

cardano-api/src/Cardano/Api/Experimental/Plutus/Internal/Shim/LegacyScripts.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,13 @@ toPlutusScriptDatum
119119
-> Old.ScriptDatum Old.WitCtxTxIn
120120
-> PlutusScriptDatum (Old.ToLedgerPlutusLanguage lang) (ToPlutusScriptPurpose TxInItem)
121121
-- ^ Encapsulates CIP-69: V3 spending script datums are optional
122+
toPlutusScriptDatum WitTxIn{} Old.PlutusScriptV4 (Old.ScriptDatumForTxIn r) = SpendingScriptDatum r
122123
toPlutusScriptDatum WitTxIn{} Old.PlutusScriptV3 (Old.ScriptDatumForTxIn r) = SpendingScriptDatum r
123124
-- \^ V2 and V1 spending script datums are required
124125
toPlutusScriptDatum WitTxIn{} Old.PlutusScriptV2 (Old.ScriptDatumForTxIn (Just r)) = SpendingScriptDatum r
125126
toPlutusScriptDatum WitTxIn{} Old.PlutusScriptV1 (Old.ScriptDatumForTxIn (Just r)) = SpendingScriptDatum r
126127
-- \^ V2 and V3 scripts can have inline datums
128+
toPlutusScriptDatum WitTxIn{} Old.PlutusScriptV4 Old.InlineScriptDatum = InlineDatum
127129
toPlutusScriptDatum WitTxIn{} Old.PlutusScriptV3 Old.InlineScriptDatum = InlineDatum
128130
toPlutusScriptDatum WitTxIn{} Old.PlutusScriptV2 Old.InlineScriptDatum = InlineDatum
129131
-- \^ Everything else is not allowed. The old api does not prevent these invalid combinations.
@@ -206,10 +208,12 @@ obtainConstraints v =
206208
Old.PlutusScriptV1 -> id
207209
Old.PlutusScriptV2 -> id
208210
Old.PlutusScriptV3 -> id
211+
Old.PlutusScriptV4 -> id
209212

210213
toPlutusSLanguage
211214
:: Old.PlutusScriptVersion lang -> L.SLanguage (Old.ToLedgerPlutusLanguage lang)
212215
toPlutusSLanguage = \case
213216
Old.PlutusScriptV1 -> L.SPlutusV1
214217
Old.PlutusScriptV2 -> L.SPlutusV2
215218
Old.PlutusScriptV3 -> L.SPlutusV3
219+
Old.PlutusScriptV4 -> L.SPlutusV4

cardano-api/src/Cardano/Api/Experimental/Tx/Internal/AnyWitness.hs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import Cardano.Ledger.Alonzo.Scripts qualified as L
2929
import Cardano.Ledger.Babbage.Scripts qualified as L
3030
import Cardano.Ledger.Conway.Scripts qualified as L
3131
import Cardano.Ledger.Core qualified as L
32+
import Cardano.Ledger.Dijkstra.Scripts qualified as Dijkstra
3233
import Cardano.Ledger.Plutus.Data qualified as L
3334
import Cardano.Ledger.Plutus.Language qualified as L
3435

@@ -101,12 +102,14 @@ getAnyWitnessScript era ss@(AnySimpleScriptWitness{}) =
101102
ShelleyBasedEraAlonzo -> L.TimelockScript <$> getAnyWitnessSimpleScript ss
102103
ShelleyBasedEraBabbage -> L.TimelockScript <$> getAnyWitnessSimpleScript ss
103104
ShelleyBasedEraConway -> L.TimelockScript <$> getAnyWitnessSimpleScript ss
105+
ShelleyBasedEraDijkstra -> L.TimelockScript <$> getAnyWitnessSimpleScript ss
104106
getAnyWitnessScript era ps@(AnyPlutusScriptWitness{}) =
105107
forShelleyBasedEraInEon era Nothing $ \aEon ->
106108
case aEon of
107109
AlonzoEraOnwardsAlonzo -> L.PlutusScript <$> getAnyWitnessPlutusScript aEon ps
108110
AlonzoEraOnwardsBabbage -> L.PlutusScript <$> getAnyWitnessPlutusScript aEon ps
109111
AlonzoEraOnwardsConway -> L.PlutusScript <$> getAnyWitnessPlutusScript aEon ps
112+
AlonzoEraOnwardsDijkstra -> L.PlutusScript <$> getAnyWitnessPlutusScript aEon ps
110113

111114
-- It should be noted that 'PlutusRunnable' is constructed via deserialization. The deserialization
112115
-- instance lives in ledger and will fail for an invalid script language/era pairing. Therefore
@@ -127,6 +130,9 @@ fromPlutusRunnable L.SPlutusV1 eon runnable =
127130
AlonzoEraOnwardsConway ->
128131
let plutusScript = L.plutusFromRunnable runnable
129132
in Just $ L.ConwayPlutusV1 plutusScript
133+
AlonzoEraOnwardsDijkstra ->
134+
let plutusScript = L.plutusFromRunnable runnable
135+
in Just $ Dijkstra.MkDijkstraPlutusScript $ L.ConwayPlutusV1 plutusScript
130136
fromPlutusRunnable L.SPlutusV2 eon runnable =
131137
case eon of
132138
AlonzoEraOnwardsAlonzo -> Nothing
@@ -136,13 +142,29 @@ fromPlutusRunnable L.SPlutusV2 eon runnable =
136142
AlonzoEraOnwardsConway ->
137143
let plutusScript = L.plutusFromRunnable runnable
138144
in Just $ L.ConwayPlutusV2 plutusScript
145+
AlonzoEraOnwardsDijkstra ->
146+
let plutusScript = L.plutusFromRunnable runnable
147+
in Just $ Dijkstra.MkDijkstraPlutusScript $ L.ConwayPlutusV2 plutusScript
139148
fromPlutusRunnable L.SPlutusV3 eon runnable =
140149
case eon of
141150
AlonzoEraOnwardsAlonzo -> Nothing
142151
AlonzoEraOnwardsBabbage -> Nothing
143152
AlonzoEraOnwardsConway ->
144153
let plutusScript = L.plutusFromRunnable runnable
145154
in Just $ L.ConwayPlutusV3 plutusScript
155+
AlonzoEraOnwardsDijkstra ->
156+
let plutusScript = L.plutusFromRunnable runnable
157+
in Just $ Dijkstra.MkDijkstraPlutusScript $ L.ConwayPlutusV3 plutusScript
158+
fromPlutusRunnable L.SPlutusV4 eon runnable =
159+
case eon of
160+
AlonzoEraOnwardsAlonzo -> Nothing
161+
AlonzoEraOnwardsBabbage -> Nothing
162+
AlonzoEraOnwardsConway ->
163+
let plutusScript = L.plutusFromRunnable runnable
164+
in Just $ (error "ConwayPlutusV4") plutusScript
165+
AlonzoEraOnwardsDijkstra ->
166+
let plutusScript = L.plutusFromRunnable runnable
167+
in Just $ Dijkstra.MkDijkstraPlutusScript $ (error "DijkstraPlutusV4") plutusScript
146168

147169
toAlonzoDatum
148170
:: AlonzoEraOnwards era
@@ -160,5 +182,6 @@ getPlutusDatum
160182
getPlutusDatum L.SPlutusV1 (SpendingScriptDatum d) = Just d
161183
getPlutusDatum L.SPlutusV2 (SpendingScriptDatum d) = Just d
162184
getPlutusDatum L.SPlutusV3 (SpendingScriptDatum d) = d
185+
getPlutusDatum L.SPlutusV4 (SpendingScriptDatum _d) = error "dijkstra"
163186
getPlutusDatum _ InlineDatum = Nothing
164187
getPlutusDatum _ NoScriptDatum = Nothing

cardano-api/src/Cardano/Api/Experimental/Tx/Internal/Certificate.hs

Lines changed: 64 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ where
1515

1616
import Cardano.Api.Address qualified as Api
1717
import Cardano.Api.Certificate.Internal qualified as Api
18+
import Cardano.Api.Era.Internal.Core (DijkstraEra)
1819
import Cardano.Api.Era.Internal.Eon.Convert
19-
import Cardano.Api.Era.Internal.Eon.ConwayEraOnwards
2020
import Cardano.Api.Era.Internal.Eon.ShelleyToBabbageEra qualified as Api
2121
import Cardano.Api.Experimental.Era
2222
import Cardano.Api.Experimental.Plutus.Internal.Script qualified as Exp
@@ -45,13 +45,18 @@ deriving instance Eq (Certificate era)
4545
deriving instance Ord (Certificate era)
4646

4747
convertToOldApiCertificate :: Era era -> Certificate (LedgerEra era) -> Api.Certificate era
48-
convertToOldApiCertificate ConwayEra (Certificate cert) =
49-
Api.ConwayCertificate ConwayEraOnwardsConway cert
48+
convertToOldApiCertificate e (Certificate cert) =
49+
obtainCommonConstraints e $ Api.ConwayCertificate (convert e) cert
5050

5151
convertToNewCertificate :: Era era -> Api.Certificate era -> Certificate (LedgerEra era)
52-
convertToNewCertificate ConwayEra (Api.ConwayCertificate _ cert) = Certificate cert
53-
convertToNewCertificate ConwayEra (Api.ShelleyRelatedCertificate sToBab _) =
54-
case sToBab :: Api.ShelleyToBabbageEra ConwayEra of {}
52+
convertToNewCertificate era (Api.ConwayCertificate _ cert) =
53+
case era of
54+
ConwayEra -> Certificate cert
55+
DijkstraEra -> Certificate cert
56+
convertToNewCertificate era (Api.ShelleyRelatedCertificate sToBab _) =
57+
case era of
58+
ConwayEra -> case sToBab :: Api.ShelleyToBabbageEra ConwayEra of {}
59+
DijkstraEra -> case sToBab :: Api.ShelleyToBabbageEra DijkstraEra of {}
5560

5661
mkTxCertificates
5762
:: forall era
@@ -61,29 +66,29 @@ mkTxCertificates
6166
mkTxCertificates [] = TxCertificatesNone
6267
mkTxCertificates certs =
6368
TxCertificates (convert useEra) $ fromList $ map (getStakeCred useEra) certs
64-
where
65-
getStakeCred
66-
:: Era era
67-
-> (Certificate (LedgerEra era), AnyWitness (LedgerEra era))
68-
-> ( Api.Certificate era
69-
, Api.BuildTxWith
70-
Api.BuildTx
71-
(Maybe (Api.StakeCredential, Api.Witness Api.WitCtxStake era))
72-
)
73-
getStakeCred era (Certificate cert, witness) =
74-
case era of
75-
ConwayEra -> do
76-
let oldApiCert = Api.ConwayCertificate (convert era) cert
77-
mStakeCred = Api.selectStakeCredentialWitness oldApiCert
78-
wit =
79-
case witness of
80-
AnyKeyWitnessPlaceholder -> Api.KeyWitness Api.KeyWitnessForStakeAddr
81-
AnySimpleScriptWitness ss ->
82-
Api.ScriptWitness Api.ScriptWitnessForStakeAddr $ newToOldSimpleScriptWitness era ss
83-
AnyPlutusScriptWitness psw ->
84-
Api.ScriptWitness Api.ScriptWitnessForStakeAddr $
85-
newToOldPlutusCertificateScriptWitness ConwayEra psw
86-
(oldApiCert, pure $ (,wit) <$> mStakeCred)
69+
70+
getStakeCred
71+
:: Era era
72+
-> (Certificate (LedgerEra era), AnyWitness (LedgerEra era))
73+
-> ( Api.Certificate era
74+
, Api.BuildTxWith
75+
Api.BuildTx
76+
(Maybe (Api.StakeCredential, Api.Witness Api.WitCtxStake era))
77+
)
78+
getStakeCred e (Certificate cert, witness) = do
79+
let oldApiCert = obtainCommonConstraints e $ Api.ConwayCertificate (convert e) cert
80+
mStakeCred = Api.selectStakeCredentialWitness oldApiCert
81+
wit =
82+
case witness of
83+
AnyKeyWitnessPlaceholder -> Api.KeyWitness Api.KeyWitnessForStakeAddr
84+
AnySimpleScriptWitness ss ->
85+
Api.ScriptWitness Api.ScriptWitnessForStakeAddr $
86+
obtainCommonConstraints e $
87+
newToOldSimpleScriptWitness e ss
88+
AnyPlutusScriptWitness psw ->
89+
Api.ScriptWitness Api.ScriptWitnessForStakeAddr $
90+
newToOldPlutusCertificateScriptWitness e psw
91+
(oldApiCert, pure $ (,wit) <$> mStakeCred)
8792

8893
newToOldSimpleScriptWitness
8994
:: L.AllegraEraScript (LedgerEra era)
@@ -127,12 +132,40 @@ newToOldPlutusCertificateScriptWitness ConwayEra (Exp.PlutusScriptWitness Plutus
127132
Api.NoScriptDatumForStake
128133
redeemer
129134
execUnits
135+
newToOldPlutusCertificateScriptWitness ConwayEra (Exp.PlutusScriptWitness Plutus.SPlutusV4 _scriptOrRef _ _redeemer _execUnits) =
136+
error "dijkstra"
137+
newToOldPlutusCertificateScriptWitness DijkstraEra (Exp.PlutusScriptWitness Plutus.SPlutusV1 scriptOrRef _ redeemer execUnits) =
138+
Api.PlutusScriptWitness
139+
Api.PlutusScriptV1InDijkstra
140+
Api.PlutusScriptV1
141+
(newToOldPlutusScriptOrReferenceInput DijkstraEra scriptOrRef)
142+
Api.NoScriptDatumForStake
143+
redeemer
144+
execUnits
145+
newToOldPlutusCertificateScriptWitness DijkstraEra (Exp.PlutusScriptWitness Plutus.SPlutusV2 scriptOrRef _ redeemer execUnits) =
146+
Api.PlutusScriptWitness
147+
Api.PlutusScriptV2InDijkstra
148+
Api.PlutusScriptV2
149+
(newToOldPlutusScriptOrReferenceInput DijkstraEra scriptOrRef)
150+
Api.NoScriptDatumForStake
151+
redeemer
152+
execUnits
153+
newToOldPlutusCertificateScriptWitness DijkstraEra (Exp.PlutusScriptWitness Plutus.SPlutusV3 scriptOrRef _ redeemer execUnits) =
154+
Api.PlutusScriptWitness
155+
Api.PlutusScriptV3InDijkstra
156+
Api.PlutusScriptV3
157+
(newToOldPlutusScriptOrReferenceInput DijkstraEra scriptOrRef)
158+
Api.NoScriptDatumForStake
159+
redeemer
160+
execUnits
161+
newToOldPlutusCertificateScriptWitness DijkstraEra (Exp.PlutusScriptWitness Plutus.SPlutusV4 _scriptOrRef _ _redeemer _execUnits) =
162+
error "dijkstra"
130163

131164
newToOldPlutusScriptOrReferenceInput
132165
:: Era era
133166
-> Exp.PlutusScriptOrReferenceInput lang (LedgerEra era)
134167
-> Api.PlutusScriptOrReferenceInput oldlang
135-
newToOldPlutusScriptOrReferenceInput ConwayEra (Exp.PReferenceScript txin) = Api.PReferenceScript txin
136-
newToOldPlutusScriptOrReferenceInput ConwayEra (Exp.PScript (Exp.PlutusScriptInEra plutusRunnable)) =
168+
newToOldPlutusScriptOrReferenceInput _ (Exp.PReferenceScript txin) = Api.PReferenceScript txin
169+
newToOldPlutusScriptOrReferenceInput _ (Exp.PScript (Exp.PlutusScriptInEra plutusRunnable)) =
137170
let oldScript = L.unPlutusBinary . L.plutusBinary $ L.plutusFromRunnable plutusRunnable
138171
in Api.PScript $ Api.PlutusScriptSerialised oldScript

cardano-api/src/Cardano/Api/LedgerState/Internal/LedgerEvent.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import Cardano.Api.Key.Internal (Hash (..), StakePoolKey)
2020

2121
import Cardano.Ledger.Coin qualified as L
2222
import Cardano.Ledger.Coin qualified as Ledger
23+
import Cardano.Ledger.Compactible qualified as Ledger
2324
import Cardano.Ledger.Conway.Governance qualified as Ledger
2425
import Cardano.Ledger.Core qualified as Ledger.Core
2526
import Cardano.Ledger.Credential qualified as Ledger
@@ -110,8 +111,9 @@ data PoolReapDetails = PoolReapDetails
110111
convertRetiredPoolsMap
111112
:: Map
112113
Ledger.StakeCredential
113-
(Map (Ledger.KeyHash Ledger.StakePool) Ledger.Coin)
114+
(Map (Ledger.KeyHash Ledger.StakePool) (Ledger.CompactForm Ledger.Coin))
114115
-> Map StakeCredential (Map (Hash StakePoolKey) L.Coin)
115116
convertRetiredPoolsMap =
116117
Map.mapKeys fromShelleyStakeCredential
117118
. fmap (Map.mapKeys StakePoolKeyHash)
119+
. (fmap . fmap) Ledger.fromCompact

cardano-api/src/Cardano/Api/Network/IPC/Internal.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ import Data.ByteString.Lazy qualified as LBS
132132
import Data.Void (Void)
133133
import GHC.Exts (IsList (..))
134134
import Network.Mux qualified as Net
135+
import Network.Mux.Trace (nullTracers)
135136

136137
-- ----------------------------------------------------------------------------
137138
-- The types for the client side of the node-to-client IPC protocols
@@ -211,7 +212,7 @@ connectToLocalNodeWithVersion
211212
Net.connectTo
212213
(Net.localSnocket iomgr)
213214
Net.NetworkConnectTracers
214-
{ Net.nctMuxTracer = nullTracer
215+
{ Net.nctMuxTracers = nullTracers
215216
, Net.nctHandshakeTracer = nullTracer
216217
}
217218
versionedProtocls

cardano-api/src/Cardano/Api/Plutus.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module Cardano.Api.Plutus
44
, PlutusScriptV1
55
, PlutusScriptV2
66
, PlutusScriptV3
7+
, PlutusScriptV4
78
, ScriptLanguage (..)
89
, PlutusScriptVersion (..)
910
, AnyScriptLanguage (..)

cardano-api/test/cardano-api-test/Test/Cardano/Api/CBOR.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ prop_txbody_backwards_compatibility = H.property $ do
7777
ShelleyBasedEraAlonzo -> "Tx AlonzoEra"
7878
ShelleyBasedEraBabbage -> "Tx BabbageEra"
7979
ShelleyBasedEraConway -> "Tx ConwayEra"
80+
ShelleyBasedEraDijkstra -> "Tx DijkstraEra"
8081

8182
prop_text_envelope_roundtrip_txbody_CBOR :: Property
8283
prop_text_envelope_roundtrip_txbody_CBOR = H.property $ do

0 commit comments

Comments
 (0)