diff --git a/cardano-testnet/src/Testnet/Defaults.hs b/cardano-testnet/src/Testnet/Defaults.hs index c662394457a..047e5766bab 100644 --- a/cardano-testnet/src/Testnet/Defaults.hs +++ b/cardano-testnet/src/Testnet/Defaults.hs @@ -36,6 +36,7 @@ module Testnet.Defaults , defaultUtxoKeys , plutusV3Script , plutusV3SupplementalDatumScript + , plutusV2StakeScript ) where import Cardano.Api (AnyShelleyBasedEra (..), CardanoEra (..), File (..), @@ -553,3 +554,7 @@ plutusV3SupplementalDatumScript = "{ \"type\": \"PlutusScriptV3\", \"description\": \"\", \"cborHex\": \"590e72590e6f01000032323322332233223232323232323232323232323225335533535353232325335333573466e1d200000201301213232323232333222123330010040030023232325335333573466e1d200000201b01a1323232323232323232323232323232323333333333332333233233222222222222222212333333333333333300101101000f00e00d00c00b00a00900800700600500400300230013574202860026ae8404cc0948c8c8c94cd4ccd5cd19b87480000080c40c04cc8848cc00400c008c074d5d080098029aba135744002260589201035054310035573c0046aae74004dd5000998128009aba101123232325335333573466e1d200000203002f13232333322221233330010050040030023232325335333573466e1d2000002035034133221233001003002302e357420026605e4646464a66a666ae68cdc3a4000004072070264244600400660646ae8400454cd4ccd5cd19b87480080080e40e04c8ccc888488ccc00401401000cdd69aba1002375a6ae84004dd69aba1357440026ae880044c0d12401035054310035573c0046aae74004dd50009aba135744002260609201035054310035573c0046aae74004dd51aba1003300735742004646464a66a666ae68cdc3a400000406a068224440062a66a666ae68cdc3a400400406a068264244460020086eb8d5d08008a99a999ab9a3370e900200101a81a099091118010021aba1001130304901035054310035573c0046aae74004dd51aba10013302c75c6ae84d5d10009aba200135744002260569201035054310035573c0046aae74004dd50009bad3574201e60026ae84038c008c009d69981180a9aba100c33302702475a6ae8402cc8c8c94cd4ccd5cd19b87480000080b80b44cc8848cc00400c008c8c8c94cd4ccd5cd19b87480000080c40c04cc8848cc00400c008cc09dd69aba10013026357426ae880044c0b1241035054310035573c0046aae74004dd51aba10013232325335333573466e1d20000020310301332212330010030023302775a6ae84004c098d5d09aba20011302c491035054310035573c0046aae74004dd51aba13574400226052921035054310035573c0046aae74004dd51aba100a3302375c6ae84024ccc09c8c8c8c94cd4ccd5cd19b87480000080bc0b84c84888888c01401cdd71aba100115335333573466e1d200200202f02e13212222223002007301b357420022a66a666ae68cdc3a400800405e05c2642444444600600e60506ae8400454cd4ccd5cd19b87480180080bc0b84cc884888888cc01802001cdd69aba10013019357426ae8800454cd4ccd5cd19b87480200080bc0b84c84888888c00401cc068d5d08008a99a999ab9a3370e9005001017817099910911111198020040039bad3574200260306ae84d5d1000898152481035054310035573c0046aae74004dd500080f9aba10083300201f3574200e6eb8d5d080319981380b198138111191919299a999ab9a3370e9000001017817089110010a99a999ab9a3370e9001001017817089110008a99a999ab9a3370e900200101781708911001898152481035054310035573c0046aae74004dd50009aba1005330230143574200860026ae8400cc004d5d09aba2003302475a604aeb8d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba200113016491035054310035573c0046aae74004dd51aba10063574200a646464a66a666ae68cdc3a40000040360342642444444600a00e6eb8d5d08008a99a999ab9a3370e900100100d80d0999109111111980100400398039aba10013301500f357426ae8800454cd4ccd5cd19b874801000806c0684c84888888c00c01cc050d5d08008a99a999ab9a3370e900300100d80d099910911111198030040039bad35742002600a6ae84d5d10008a99a999ab9a3370e900400100d80d0990911111180080398031aba100115335333573466e1d200a00201b01a13322122222233004008007375a6ae84004c010d5d09aba2001130164901035054310035573c0046aae74004dd51aba13574400a4646464a66a666ae68cdc3a4000004036034264666444246660020080060046eb4d5d0801180a9aba10013232325335333573466e1d200000201f01e1323332221222222233300300a0090083301a017357420046ae84004cc069d71aba1357440026ae8800454cd4ccd5cd19b874800800807c0784cc8848888888cc01c024020cc064058d5d0800991919299a999ab9a3370e90000010110108999109198008018011bad357420026eb4d5d09aba20011301d491035054310035573c0046aae74004dd51aba1357440022a66a666ae68cdc3a400800403e03c266442444444466004012010666036030eb4d5d08009980cbae357426ae8800454cd4ccd5cd19b874801800807c0784c848888888c010020cc064058d5d08008a99a999ab9a3370e900400100f80f09919199991110911111119998008058050048041980d80c1aba10033301901a3574200466603a034eb4d5d08009a991919299a999ab9a3370e90000010120118998149bad357420026eb4d5d09aba20011301f4901035054310035573c0046aae74004dd51aba135744002446602a0040026ae88004d5d10008a99a999ab9a3370e900500100f80f0999109111111198028048041980c80b1aba10013232325335333573466e1d200000202202113301c75c6ae840044c075241035054310035573c0046aae74004dd51aba1357440022a66a666ae68cdc3a401800403e03c22444444400c26034921035054310035573c0046aae74004dd51aba1357440026ae880044c059241035054310035573c0046aae74004dd50009191919299a999ab9a3370e900000100d00c899910911111111111980280680618099aba10013301475a6ae84d5d10008a99a999ab9a3370e900100100d00c899910911111111111980100680618099aba10013301475a6ae84d5d10008a9919a999ab9a3370e900200180d80d0999109111111111119805006806180a1aba10023001357426ae8800854cd4ccd5cd19b874801800c06c0684c8ccc888488888888888ccc018038034030c054d5d080198011aba1001375a6ae84d5d10009aba200215335333573466e1d200800301b01a133221222222222223300700d00c3014357420046eb4d5d09aba200215335333573466e1d200a00301b01a132122222222222300100c3014357420042a66a666ae68cdc3a4018006036034266442444444444446600601a01860286ae84008dd69aba1357440042a66a666ae68cdc3a401c006036034266442444444444446601201a0186eb8d5d08011bae357426ae8800854cd4ccd5cd19b874804000c06c0684cc88488888888888cc020034030dd71aba1002375a6ae84d5d10010a99a999ab9a3370e900900180d80d0999109111111111119805806806180a1aba10023014357426ae8800854cd4ccd5cd19b874805000c06c0684c8488888888888c010030c050d5d08010980b2481035054310023232325335333573466e1d200000201e01d13212223003004375c6ae8400454c8cd4ccd5cd19b874800800c07c0784c84888c004010c004d5d08010a99a999ab9a3370e900200180f80f099910911198010028021bae3574200460026ae84d5d10010980d2481035054310023232325335333573466e1d200000202202113212223003004301b357420022a66a666ae68cdc3a4004004044042224440042a66a666ae68cdc3a4008004044042224440022603a921035054310035573c0046aae74004dd50009aab9e00235573a0026ea8004d55cf0011aab9d00137540024646464a66a666ae68cdc3a40000040320302642444600600860246ae8400454cd4ccd5cd19b87480080080640604c84888c008010c048d5d08008a99a999ab9a3370e900200100c80c099091118008021bae3574200226028921035054310035573c0046aae74004dd50009191919299a999ab9a3370e900000100c00b8999109198008018011bae357420026eb4d5d09aba200113013491035054310035573c0046aae74004dd50009aba20011300e491035054310035573c0046aae74004dd50009110019111111111111111180f0031080888078a4c26016921035054350030142225335333573466e1d20000010110101300c491035054330015335333573466e20005200001101013300333702900000119b81480000044c8cc8848cc00400c008cdc200180099b840020013300400200130132225335333573466e1d200000101000f10021330030013370c00400240024646464a66a666ae68cdc3a400000401e01c201c2a66a666ae68cdc3a400400401e01c201e260149201035054310035573c0046aae74004dd500091191919299a999ab9a3370e9000001007807089110010a99a999ab9a3370e90010010078070990911180180218029aba100115335333573466e1d200400200f00e112220011300a4901035054310035573c0046aae74004dd50009191919299a999ab9a3370e90000010068060999109198008018011bae357420026eb4d5d09aba200113008491035054310035573c0046aae74004dd5000919118011bac001300f2233335573e002401c466a01a60086ae84008c00cd5d10010041191919299a999ab9a3370e900000100580509909118010019bae357420022a66a666ae68cdc3a400400401601426424460020066eb8d5d0800898032481035054310035573c0046aae74004dd500091191919299a999ab9a3370e90010010058050a8070a99a999ab9a3370e90000010058050980798029aba1001130064901035054310035573c0046aae74004dd5000919319ab9c00100322322300237560026018446666aae7c004802c8c8cd402ccc03cc018d55ce80098029aab9e0013004357440066ae8400801448004c020894cd40045401c884d4008894cd4ccd5cd19b8f488120ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25000020080071300c001130060031220021220011220021221223300100400321223002003112200122123300100300223230010012300223300200200101\" }" +plutusV2StakeScript :: Text +plutusV2StakeScript = + "{ \"type\": \"PlutusScriptV2\", \"description\": \"\", \"cborHex\": \"5907655907620100003232323232323232323232323232332232323232322232325335320193333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4050054d5d0a80619a80a00a9aba1500b33501401635742a014666aa030eb9405cd5d0a804999aa80c3ae501735742a01066a02803e6ae85401cccd54060081d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40a9d69aba15002302b357426ae8940088c98c80b4cd5ce01701681589aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8153ad35742a00460566ae84d5d1280111931901699ab9c02e02d02b135573ca00226ea8004d5d09aba2500223263202933573805405204e26aae7940044dd50009aba1500533501475c6ae854010ccd540600708004d5d0a801999aa80c3ae200135742a004603c6ae84d5d1280111931901299ab9c026025023135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a004601c6ae84d5d1280111931900b99ab9c018017015101613263201633573892010350543500016135573ca00226ea800448c88c008dd6000990009aa80a911999aab9f0012500a233500930043574200460066ae880080508c8c8cccd5cd19b8735573aa004900011991091980080180118061aba150023005357426ae8940088c98c8050cd5ce00a80a00909aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180a9aba1500233500f014357426ae8940088c98c8064cd5ce00d00c80b89aab9e5001137540026ae854010ccd54021d728039aba150033232323333573466e1d4005200423212223002004357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403666ae7007006c06406005c4d55cea80089baa00135742a00466a016eb8d5d09aba2500223263201533573802c02a02626ae8940044d5d1280089aab9e500113754002266aa002eb9d6889119118011bab00132001355012223233335573e0044a010466a00e66442466002006004600c6aae754008c014d55cf280118021aba200301213574200222440042442446600200800624464646666ae68cdc3a800a40004642446004006600a6ae84d55cf280191999ab9a3370ea0049001109100091931900819ab9c01101000e00d135573aa00226ea80048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01101000e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00d00c00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00580500409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00a00980880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae700340300280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801401200e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7002c02802001c0184d55cea80089baa0012323333573466e1d40052002200723333573466e1d40092000212200123263200633573800e00c00800626aae74dd5000a4c2400292010350543100122002112323001001223300330020020011\" }" + diff --git a/cardano-testnet/src/Testnet/Process/Cli/SPO.hs b/cardano-testnet/src/Testnet/Process/Cli/SPO.hs index aa916d3f30a..1a6854c78cd 100644 --- a/cardano-testnet/src/Testnet/Process/Cli/SPO.hs +++ b/cardano-testnet/src/Testnet/Process/Cli/SPO.hs @@ -8,6 +8,7 @@ module Testnet.Process.Cli.SPO ( checkStakeKeyRegistered , createScriptStakeRegistrationCertificate + , createScriptStakeDelegationCertificate , createStakeDelegationCertificate , createStakeKeyRegistrationCertificate , createStakeKeyDeregistrationCertificate @@ -216,6 +217,25 @@ createScriptStakeRegistrationCertificate tempAbsP (AnyCardanoEra cEra) scriptFil ] <> extraArgs +createScriptStakeDelegationCertificate + :: (MonadTest m, MonadCatch m, MonadIO m, HasCallStack) + => TmpAbsolutePath + -> AnyCardanoEra + -> FilePath -- ^ Script file + -> File (VKey StakePoolKey) In -- ^ Cold stake pool key + -> FilePath -- ^ Output file path + -> m () +createScriptStakeDelegationCertificate tempAbsP (AnyCardanoEra cEra) scriptFile (File coldvkey) outputFp = + GHC.withFrozenCallStack $ do + let tempAbsPath' = unTmpAbsPath tempAbsP + execCli_ + [ eraToString cEra + , "stake-address", "stake-delegation-certificate" + , "--stake-script-file", scriptFile + , "--cold-verification-key-file", coldvkey + , "--out-file", tempAbsPath' outputFp + ] + createStakeKeyDeregistrationCertificate :: (MonadTest m, MonadCatch m, MonadIO m, HasCallStack) => TmpAbsolutePath diff --git a/cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Conway/Plutus.hs b/cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Conway/Plutus.hs index b29a33deb71..bc727747d3d 100644 --- a/cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Conway/Plutus.hs +++ b/cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Conway/Plutus.hs @@ -8,6 +8,7 @@ module Cardano.Testnet.Test.Cli.Conway.Plutus ( hprop_plutus_v3 + , hprop_tx_two_script_certs_v2 ) where import Cardano.Api @@ -19,15 +20,14 @@ import Prelude import Control.Monad (void) import Data.Default.Class -import qualified Data.Text as Text +import qualified Data.Text as T import System.FilePath (()) -import qualified System.Info as SYS import Testnet.Components.Configuration import Testnet.Components.Query import Testnet.Defaults import Testnet.Process.Cli.SPO -import Testnet.Process.Run (execCli', mkExecConfig) +import Testnet.Process.Run (execCli', execCliAny, mkExecConfig) import Testnet.Property.Util (integrationWorkspace) import Testnet.Types @@ -47,7 +47,6 @@ import qualified Hedgehog.Extras as H -- @DISABLE_RETRIES=1 cabal test cardano-testnet-test --test-options '-p "/PlutusV3/"'@ hprop_plutus_v3 :: Property hprop_plutus_v3 = integrationWorkspace "all-plutus-script-purposes" $ \tempAbsBasePath' -> H.runWithDefaultWatchdog_ $ do - H.note_ SYS.os conf@Conf { tempAbsPath } <- mkConf tempAbsBasePath' let tempAbsPath' = unTmpAbsPath tempAbsPath work <- H.createDirectoryIfMissing $ tempAbsPath' "work" @@ -71,7 +70,7 @@ hprop_plutus_v3 = integrationWorkspace "all-plutus-script-purposes" $ \tempAbsBa poolSprocket1 <- H.noteShow $ nodeSprocket node execConfig <- mkExecConfig tempBaseAbsPath poolSprocket1 testnetMagic H.noteShow_ wallet0 - let utxoAddr = Text.unpack $ paymentKeyInfoAddr wallet0 + let utxoAddr = T.unpack $ paymentKeyInfoAddr wallet0 utxoSKeyFile = signingKeyFp $ paymentKeyInfoPair wallet0 utxoSKeyFile2 = signingKeyFp $ paymentKeyInfoPair wallet1 socketPath = nodeSocketPath node @@ -80,7 +79,7 @@ hprop_plutus_v3 = integrationWorkspace "all-plutus-script-purposes" $ \tempAbsBa txin1 <- findLargestUtxoForPaymentKey epochStateView sbe wallet0 plutusScript <- H.note $ work "always-succeeds-script.plutusV3" - H.writeFile plutusScript $ Text.unpack plutusV3SupplementalDatumScript + H.writeFile plutusScript $ T.unpack plutusV3SupplementalDatumScript let sendAdaToScriptAddressTxBody = work "send-ada-to-script-address-tx-body" @@ -125,8 +124,8 @@ hprop_plutus_v3 = integrationWorkspace "all-plutus-script-purposes" $ \tempAbsBa -- Register script stake address void $ execCli' execConfig [ anyEraToString anyEra, "transaction", "build" - , "--change-address", Text.unpack $ paymentKeyInfoAddr wallet0 - , "--tx-in", Text.unpack $ renderTxIn txin1 + , "--change-address", T.unpack $ paymentKeyInfoAddr wallet0 + , "--tx-in", T.unpack $ renderTxIn txin1 , "--tx-out", plutusSpendingScriptAddr <> "+" <> show @Int 5_000_000 , "--tx-out-datum-hash", scriptdatumhash , "--out-file", sendAdaToScriptAddressTxBody @@ -148,7 +147,7 @@ hprop_plutus_v3 = integrationWorkspace "all-plutus-script-purposes" $ \tempAbsBa -- 2. Successfully spend conway spending script txinCollateral <- findLargestUtxoForPaymentKey epochStateView sbe wallet1 plutusScriptTxIn <- fmap fst . retryUntilJustM epochStateView (WaitForBlocks 3) $ - findLargestUtxoWithAddress epochStateView sbe $ Text.pack plutusSpendingScriptAddr + findLargestUtxoWithAddress epochStateView sbe $ T.pack plutusSpendingScriptAddr let spendScriptUTxOTxBody = work "spend-script-utxo-tx-body" spendScriptUTxOTx = work "spend-script-utxo-tx" @@ -160,9 +159,9 @@ hprop_plutus_v3 = integrationWorkspace "all-plutus-script-purposes" $ \tempAbsBa void $ execCli' execConfig [ anyEraToString anyEra, "transaction", "build" - , "--change-address", Text.unpack $ paymentKeyInfoAddr wallet1 - , "--tx-in-collateral", Text.unpack $ renderTxIn txinCollateral - , "--tx-in", Text.unpack $ renderTxIn plutusScriptTxIn + , "--change-address", T.unpack $ paymentKeyInfoAddr wallet1 + , "--tx-in-collateral", T.unpack $ renderTxIn txinCollateral + , "--tx-in", T.unpack $ renderTxIn plutusScriptTxIn , "--tx-in-script-file", plutusScript , "--tx-in-datum-value", "0" , "--tx-in-redeemer-value", "0" @@ -173,7 +172,7 @@ hprop_plutus_v3 = integrationWorkspace "all-plutus-script-purposes" $ \tempAbsBa , "--certificate-script-file", plutusScript , "--certificate-redeemer-value", "0" , "--tx-out", txout - , "--tx-out", txoutWithSupplementalDatum + , "--tx-out", txoutWithSupplementalDatum , "--tx-out-datum-embed-file", supplementalDatumJsonFile , "--out-file", spendScriptUTxOTxBody ] @@ -192,3 +191,108 @@ hprop_plutus_v3 = integrationWorkspace "all-plutus-script-purposes" $ \tempAbsBa H.success + +-- | +-- Execute me with: +-- @DISABLE_RETRIES=1 cabal test cardano-testnet-test --test-options '-p "/PlutusV2 Create transaction with two script certs/"'@ +hprop_tx_two_script_certs_v2 :: Property +hprop_tx_two_script_certs_v2 = integrationWorkspace "create-transaction-two-script-certs" $ \tempAbsBasePath' -> H.runWithDefaultWatchdog_ $ do + conf@Conf { tempAbsPath } <- mkConf tempAbsBasePath' + let tempAbsPath' = unTmpAbsPath tempAbsPath + work <- H.createDirectoryIfMissing $ tempAbsPath' "work" + + let + tempBaseAbsPath = makeTmpBaseAbsPath $ TmpAbsolutePath tempAbsPath' + ceo = ConwayEraOnwardsConway + sbe = convert ceo + era = toCardanoEra sbe + anyEra = AnyCardanoEra era + options = def { cardanoNodeEra = AnyShelleyBasedEra sbe } + + TestnetRuntime + { configurationFile + , testnetMagic + , testnetNodes + , wallets=wallet0:_ + } <- cardanoTestnetDefault options def conf + + node <- H.headM testnetNodes + SpoNodeKeys{poolNodeKeysCold=KeyPair{verificationKey=spoKeyCold}} <- H.nothingFail $ poolKeys node + poolSprocket1 <- H.noteShow $ nodeSprocket node + execConfig <- mkExecConfig tempBaseAbsPath poolSprocket1 testnetMagic + H.noteShow_ wallet0 + let utxoAddr = T.unpack $ paymentKeyInfoAddr wallet0 + utxoSKeyFile = signingKeyFp $ paymentKeyInfoPair wallet0 + socketPath = nodeSocketPath node + + epochStateView <- getEpochStateView configurationFile socketPath + txin <- T.unpack . renderTxIn <$> findLargestUtxoForPaymentKey epochStateView sbe wallet0 + + plutusScript <- H.note $ work "always-succeeds-script.plutusV2" + H.writeFile plutusScript $ T.unpack plutusV2StakeScript + + scriptStakeRegistrationCertificate + <- H.note $ work "script-stake-registration-certificate" + + keyDeposit <- fromIntegral . L.unCoin <$> getKeyDeposit epochStateView ceo + + -- Create script stake registration and certificates + createScriptStakeRegistrationCertificate + tempAbsPath + anyEra + plutusScript + keyDeposit + scriptStakeRegistrationCertificate + + scriptStakeDelegationCertificate + <- H.note $ work "script-stake-delegation-certificate" + + createScriptStakeDelegationCertificate + tempAbsPath + anyEra + plutusScript + spoKeyCold + scriptStakeDelegationCertificate + + let txbody = work "two-certs-tx-body" + tx = work "two-certs-tx" + txout = mconcat [ utxoAddr, "+", show @Int 2_000_000 ] + + let txBuildArgs = + [ anyEraToString anyEra, "transaction", "build" + , "--change-address", T.unpack $ paymentKeyInfoAddr wallet0 + , "--tx-in-collateral", txin + , "--tx-in", txin + , "--certificate-file", scriptStakeRegistrationCertificate + , "--certificate-script-file", plutusScript + , "--certificate-redeemer-value", "{\"int\":42}" + , "--certificate-file", scriptStakeDelegationCertificate + , "--certificate-script-file", plutusScript + , "--certificate-redeemer-value", "{\"int\":42}" + , "--tx-out", txout + , "--witness-override", "1" + ] + + (_,_, stderr1') <- execCliAny execConfig $ + txBuildArgs <> [ "--calculate-plutus-script-cost", "/dev/stderr" ] + H.note_ stderr1' + + (_,_, stderr2') <- execCliAny execConfig $ + txBuildArgs <> [ "--out-file", txbody ] + H.note_ stderr2' + -- _ <- H.failure + + void $ execCli' execConfig + [ "latest", "transaction", "sign" + , "--tx-body-file", txbody + , "--signing-key-file", utxoSKeyFile + , "--out-file", tx + ] + + void $ execCli' execConfig + [ "latest", "transaction", "submit" + , "--tx-file", tx + ] + + H.success + diff --git a/cardano-testnet/test/cardano-testnet-test/cardano-testnet-test.hs b/cardano-testnet/test/cardano-testnet-test/cardano-testnet-test.hs index 0afabc4625c..e4cae508762 100644 --- a/cardano-testnet/test/cardano-testnet-test/cardano-testnet-test.hs +++ b/cardano-testnet/test/cardano-testnet-test/cardano-testnet-test.hs @@ -72,7 +72,9 @@ tests = do , ignoreOnWindows "Transaction Build Wrong Hash" WrongHash.hprop_transaction_build_wrong_hash ] , T.testGroup "Plutus" - [ ignoreOnWindows "PlutusV3" Cardano.Testnet.Test.Cli.Conway.Plutus.hprop_plutus_v3] + [ ignoreOnWindows "PlutusV3" Cardano.Testnet.Test.Cli.Conway.Plutus.hprop_plutus_v3 + , ignoreOnWindows "PlutusV2 transaction with two script certs" Cardano.Testnet.Test.Cli.Conway.Plutus.hprop_tx_two_script_certs_v2 + ] ] , T.testGroup "CLI" [ ignoreOnWindows "Shutdown" Cardano.Testnet.Test.Node.Shutdown.hprop_shutdown