Skip to content

Commit 079de21

Browse files
committed
Implement prop_extractAllIndexedPlutusScriptWitnesses
1 parent bc6dba0 commit 079de21

File tree

4 files changed

+331
-8
lines changed

4 files changed

+331
-8
lines changed

cardano-api/gen/Test/Gen/Cardano/Api/Typed.hs

Lines changed: 129 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,12 @@ module Test.Gen.Cardano.Api.Typed
125125
, genLedgerValueForTxOut
126126
, genLedgerMultiAssetValue
127127
, genWitnesses
128+
, genScriptWitnessedTxIn
129+
, genScriptWitnessedTxMintValue
130+
, genScriptWitnessedTxCertificates
131+
, genScriptWitnessedTxProposals
132+
, genScriptWitnessedTxWithdrawals
133+
, genScriptWitnesssedTxVotingProcedures
128134
, genWitnessNetworkIdOrByronAddress
129135
, genRational
130136
, genGovernancePoll
@@ -742,6 +748,17 @@ genTxWithdrawals =
742748
]
743749
)
744750

751+
genScriptWitnessedTxWithdrawals :: Exp.Era era -> Gen (TxWithdrawals BuildTx era)
752+
genScriptWitnessedTxWithdrawals era = do
753+
num <- Gen.integral (Range.constant 0 3)
754+
sAddrs <- Gen.list (Range.singleton num) genStakeAddress
755+
coins <- Gen.list (Range.singleton num) genPositiveLovelace
756+
sWits <-
757+
Gen.list (Range.singleton num) $
758+
ScriptWitness ScriptWitnessForStakeAddr <$> genApiPlutusScriptWitness WitCtxStake era
759+
let withdrawals = zipWith3 (\addr c wit -> (addr, c, BuildTxWith wit)) sAddrs coins sWits
760+
return $ TxWithdrawals (convert era) withdrawals
761+
745762
genTxCertificates :: Typeable era => CardanoEra era -> Gen (TxCertificates BuildTx era)
746763
genTxCertificates =
747764
inEonForEra
@@ -755,6 +772,20 @@ genTxCertificates =
755772
]
756773
)
757774

775+
genScriptWitnessedTxCertificates :: Typeable era => Exp.Era era -> Gen (TxCertificates BuildTx era)
776+
genScriptWitnessedTxCertificates era = do
777+
let w = convert era
778+
num <- Gen.integral (Range.linear 0 3)
779+
certs <- Gen.list (Range.singleton num) $ genCertificate w
780+
plutusScriptWits <- Gen.list (Range.singleton num) $ genApiPlutusScriptWitness WitCtxStake era
781+
let certsAndWits =
782+
zipWith
783+
(\c p -> (c, Just p))
784+
certs
785+
plutusScriptWits
786+
787+
pure $ mkTxCertificates (convert era) certsAndWits
788+
758789
genCertificate :: forall era. Typeable era => ShelleyBasedEra era -> Gen (Certificate era)
759790
genCertificate sbe =
760791
Gen.choice $
@@ -1388,6 +1419,17 @@ genProposals w = conwayEraOnwardsConstraints w $ do
13881419
(proposal,) <$> Gen.maybe (genScriptWitnessForStake sbe)
13891420
pure $ mkTxProposalProcedures proposalsWithMaybeWitnesses
13901421

1422+
genScriptWitnessedTxProposals
1423+
:: Exp.Era era
1424+
-> Gen (TxProposalProcedures BuildTx era)
1425+
genScriptWitnessedTxProposals era = do
1426+
let w = convert era
1427+
num <- Gen.integral (Range.linear 0 3)
1428+
proposals <- Gen.list (Range.singleton num) (genProposal w)
1429+
sWits <- Gen.list (Range.singleton num) $ genApiPlutusScriptWitness WitCtxStake era
1430+
let proposalsWithMaybeWitnesses = zipWith (\p wit -> (p, Just wit)) proposals sWits
1431+
pure $ Exp.obtainCommonConstraints era $ mkTxProposalProcedures proposalsWithMaybeWitnesses
1432+
13911433
genProposal :: ConwayEraOnwards era -> Gen (L.ProposalProcedure (ShelleyLedgerEra era))
13921434
genProposal w =
13931435
conwayEraOnwardsTestConstraints w Q.arbitrary
@@ -1405,6 +1447,18 @@ genVotingProcedures w = conwayEraOnwardsConstraints w $ do
14051447
<$> Q.arbitrary
14061448
<*> pure (pure votersWithWitnesses)
14071449

1450+
genScriptWitnesssedTxVotingProcedures
1451+
:: Exp.Era era
1452+
-> Gen (Api.TxVotingProcedures BuildTx era)
1453+
genScriptWitnesssedTxVotingProcedures era = do
1454+
num <- Gen.integral (Range.linear 0 3)
1455+
voters <- Gen.list (Range.singleton num) Q.arbitrary
1456+
plutusScriptWits <- Gen.list (Range.singleton num) $ genApiPlutusScriptWitness WitCtxStake era
1457+
let votersWithWitnesses = fromList $ zip voters plutusScriptWits
1458+
Api.TxVotingProcedures
1459+
<$> Exp.obtainCommonConstraints era Q.arbitrary
1460+
<*> pure (pure votersWithWitnesses)
1461+
14081462
genCurrentTreasuryValue :: ConwayEraOnwards era -> Gen L.Coin
14091463
genCurrentTreasuryValue _era = Q.arbitrary
14101464

@@ -1447,8 +1501,38 @@ genPlutusScriptWitness = do
14471501
genPlutusScriptDatum :: Gen (Exp.PlutusScriptDatum lang purpose)
14481502
genPlutusScriptDatum = return Exp.NoScriptDatum
14491503

1504+
genScriptWitnessedTxIn
1505+
:: Exp.Era era -> Gen [(TxIn, BuildTxWith BuildTx (Witness WitCtxTxIn era))]
1506+
genScriptWitnessedTxIn era = do
1507+
num <- Gen.integral (Range.linear 0 3)
1508+
sWits <-
1509+
map (ScriptWitness ScriptWitnessForSpending)
1510+
<$> Gen.list (Range.singleton num) (genApiPlutusScriptWitness WitCtxTxIn era)
1511+
txIns <- Gen.list (Range.singleton num) genTxIn
1512+
pure $ zip txIns (BuildTxWith <$> sWits)
1513+
1514+
genScriptWitnessedTxMintValue
1515+
:: Exp.Era era -> Gen (TxMintValue BuildTx era)
1516+
genScriptWitnessedTxMintValue era = do
1517+
let w = convert era
1518+
num <- Gen.integral (Range.linear 0 3)
1519+
sWits <-
1520+
Gen.list (Range.singleton num) (genApiPlutusScriptWitness WitCtxMint era)
1521+
1522+
policies <- Gen.list (Range.singleton num) genPolicyId
1523+
mintValues <- Gen.list (Range.singleton num) genPolicyAssets
1524+
let assets =
1525+
[ (p, mintValue, BuildTxWith s)
1526+
| p <- policies
1527+
, s <- sWits
1528+
, mintValue <- mintValues
1529+
]
1530+
1531+
pure $ mkTxMintValue w assets
1532+
14501533
-- | This generator does not generate a valid witness - just a random one.
1451-
genScriptWitnessForStake :: ShelleyBasedEra era -> Gen (Api.ScriptWitness WitCtxStake era)
1534+
genScriptWitnessForStake
1535+
:: ShelleyBasedEra era -> Gen (Api.ScriptWitness WitCtxStake era)
14521536
genScriptWitnessForStake sbe = do
14531537
ScriptInEra scriptLangInEra script' <- genScriptInEra sbe
14541538
case script' of
@@ -1474,6 +1558,50 @@ genScriptWitnessForStake sbe = do
14741558
scriptRedeemer
14751559
<$> genExecutionUnits
14761560

1561+
genAnyPlutusScriptVersion :: Gen AnyPlutusScriptVersion
1562+
genAnyPlutusScriptVersion = do
1563+
Gen.element [minBound .. maxBound]
1564+
1565+
plutusScriptLangaugeInEra
1566+
:: Exp.Era era -> PlutusScriptVersion lang -> ScriptLanguageInEra lang era
1567+
plutusScriptLangaugeInEra Exp.ConwayEra l =
1568+
case l of
1569+
PlutusScriptV1 -> PlutusScriptV1InConway
1570+
PlutusScriptV2 -> PlutusScriptV2InConway
1571+
PlutusScriptV3 -> PlutusScriptV3InConway
1572+
1573+
genApiPlutusScriptWitness
1574+
:: WitCtx witctx -> Exp.Era era -> Gen (Api.ScriptWitness witctx era)
1575+
genApiPlutusScriptWitness witCtx era = do
1576+
dat <- case witCtx of
1577+
WitCtxTxIn -> do
1578+
datum <- Gen.maybe genHashableScriptData
1579+
1580+
Gen.element [ScriptDatumForTxIn datum, InlineScriptDatum]
1581+
WitCtxMint -> do
1582+
pure NoScriptDatumForMint
1583+
WitCtxStake -> do
1584+
pure NoScriptDatumForStake
1585+
1586+
AnyPlutusScriptVersion lang <- genAnyPlutusScriptVersion
1587+
PlutusScript plutusScriptVersion' plutusScript <-
1588+
PlutusScript lang <$> genValidPlutusScript lang
1589+
1590+
plutusScriptOrReferenceInput <-
1591+
Gen.choice
1592+
[ pure $ PScript plutusScript
1593+
, PReferenceScript <$> genTxIn
1594+
]
1595+
1596+
scriptRedeemer <- genHashableScriptData
1597+
PlutusScriptWitness
1598+
(plutusScriptLangaugeInEra era lang)
1599+
plutusScriptVersion'
1600+
plutusScriptOrReferenceInput
1601+
dat
1602+
scriptRedeemer
1603+
<$> genExecutionUnits
1604+
14771605
genScriptWitnessForMint :: ShelleyBasedEra era -> Gen (Api.ScriptWitness WitCtxMint era)
14781606
genScriptWitnessForMint sbe = do
14791607
ScriptInEra scriptLangInEra script' <- genScriptInEra sbe

cardano-api/src/Cardano/Api/Era/Internal/Eon/ConwayEraOnwards.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ where
2222
import Cardano.Api.Consensus.Internal.Mode
2323
import Cardano.Api.Era.Internal.Core
2424
import Cardano.Api.Era.Internal.Eon.AllegraEraOnwards (AllegraEraOnwards (..))
25+
import Cardano.Api.Era.Internal.Eon.AlonzoEraOnwards
2526
import Cardano.Api.Era.Internal.Eon.BabbageEraOnwards
2627
import Cardano.Api.Era.Internal.Eon.Convert
2728
import Cardano.Api.Era.Internal.Eon.ShelleyBasedEra
@@ -83,6 +84,9 @@ instance Convert ConwayEraOnwards AllegraEraOnwards where
8384
convert = \case
8485
ConwayEraOnwardsConway -> AllegraEraOnwardsConway
8586

87+
instance Convert ConwayEraOnwards AlonzoEraOnwards where
88+
convert ConwayEraOnwardsConway = AlonzoEraOnwardsConway
89+
8690
instance Convert ConwayEraOnwards BabbageEraOnwards where
8791
convert = \case
8892
ConwayEraOnwardsConway -> BabbageEraOnwardsConway

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ where
1010
import Cardano.Api.Address
1111
import Cardano.Api.Certificate.Internal
1212
import Cardano.Api.Era.Internal.Eon.Convert
13-
import Cardano.Api.Era.Internal.Eon.ShelleyBasedEra
1413
import Cardano.Api.Experimental.Era
1514
import Cardano.Api.Ledger.Internal.Reexport qualified as L
1615
import Cardano.Api.Plutus
@@ -68,12 +67,8 @@ estimateBalancedTxBody
6867
Fee.estimateBalancedTxBody
6968
(convert w)
7069
txbodycontent
71-
(ledgerPParamsShim w pparams)
70+
pparams
7271
poolids
7372
stakeDelegDeposits
7473
drepDelegDeposits
7574
(Map.mapKeys (toScriptIndex (convert w)) exUnitsMap)
76-
77-
ledgerPParamsShim
78-
:: Era era -> L.PParams (LedgerEra era) -> L.PParams (ShelleyLedgerEra era)
79-
ledgerPParamsShim ConwayEra pp = pp

0 commit comments

Comments
 (0)