Skip to content

Commit c4d1cd9

Browse files
authored
Merge pull request #6082 from IntersectMBO/mgalazyn/test/two-script-certs-in-single-tx
cardano-testnet | Create transaction with two script certificates test
2 parents 08e3294 + 16a3b63 commit c4d1cd9

File tree

9 files changed

+160
-33
lines changed

9 files changed

+160
-33
lines changed

cardano-testnet/src/Testnet/Defaults.hs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ module Testnet.Defaults
3636
, defaultUtxoKeys
3737
, plutusV3Script
3838
, plutusV3SupplementalDatumScript
39+
, plutusV2StakeScript
3940
) where
4041

4142
import Cardano.Api (AnyShelleyBasedEra (..), CardanoEra (..), File (..),
@@ -501,7 +502,7 @@ defaultSpoKeysDir n = "pools-keys" </> defaultSpoName n
501502
-- | The relative path to SPO keys in directories created by cardano-testnet
502503
defaultSpoColdKeyPair
503504
:: Int
504-
-> KeyPair SpoColdKey
505+
-> KeyPair StakePoolKey
505506
defaultSpoColdKeyPair n =
506507
KeyPair
507508
{ verificationKey = File $ defaultSpoKeysDir n </> "cold.vkey"
@@ -526,7 +527,7 @@ defaultSpoKeys n =
526527
}
527528

528529
-- | The relative path to stake delegator key pairs in directories created by cardano-testnet
529-
defaultDelegatorStakeKeyPair :: Int -> KeyPair StakingKey
530+
defaultDelegatorStakeKeyPair :: Int -> KeyPair StakeKey
530531
defaultDelegatorStakeKeyPair n =
531532
KeyPair
532533
{ verificationKey = File $ "stake-delegators" </> ("delegator" <> show n) </> "staking.vkey"
@@ -552,3 +553,7 @@ plutusV3SupplementalDatumScript =
552553
"{ \"type\": \"PlutusScriptV3\", \"description\": \"\", \"cborHex\": \"590e72590e6f01000032323322332233223232323232323232323232323225335533535353232325335333573466e1d200000201301213232323232333222123330010040030023232325335333573466e1d200000201b01a1323232323232323232323232323232323333333333332333233233222222222222222212333333333333333300101101000f00e00d00c00b00a00900800700600500400300230013574202860026ae8404cc0948c8c8c94cd4ccd5cd19b87480000080c40c04cc8848cc00400c008c074d5d080098029aba135744002260589201035054310035573c0046aae74004dd5000998128009aba101123232325335333573466e1d200000203002f13232333322221233330010050040030023232325335333573466e1d2000002035034133221233001003002302e357420026605e4646464a66a666ae68cdc3a4000004072070264244600400660646ae8400454cd4ccd5cd19b87480080080e40e04c8ccc888488ccc00401401000cdd69aba1002375a6ae84004dd69aba1357440026ae880044c0d12401035054310035573c0046aae74004dd50009aba135744002260609201035054310035573c0046aae74004dd51aba1003300735742004646464a66a666ae68cdc3a400000406a068224440062a66a666ae68cdc3a400400406a068264244460020086eb8d5d08008a99a999ab9a3370e900200101a81a099091118010021aba1001130304901035054310035573c0046aae74004dd51aba10013302c75c6ae84d5d10009aba200135744002260569201035054310035573c0046aae74004dd50009bad3574201e60026ae84038c008c009d69981180a9aba100c33302702475a6ae8402cc8c8c94cd4ccd5cd19b87480000080b80b44cc8848cc00400c008c8c8c94cd4ccd5cd19b87480000080c40c04cc8848cc00400c008cc09dd69aba10013026357426ae880044c0b1241035054310035573c0046aae74004dd51aba10013232325335333573466e1d20000020310301332212330010030023302775a6ae84004c098d5d09aba20011302c491035054310035573c0046aae74004dd51aba13574400226052921035054310035573c0046aae74004dd51aba100a3302375c6ae84024ccc09c8c8c8c94cd4ccd5cd19b87480000080bc0b84c84888888c01401cdd71aba100115335333573466e1d200200202f02e13212222223002007301b357420022a66a666ae68cdc3a400800405e05c2642444444600600e60506ae8400454cd4ccd5cd19b87480180080bc0b84cc884888888cc01802001cdd69aba10013019357426ae8800454cd4ccd5cd19b87480200080bc0b84c84888888c00401cc068d5d08008a99a999ab9a3370e9005001017817099910911111198020040039bad3574200260306ae84d5d1000898152481035054310035573c0046aae74004dd500080f9aba10083300201f3574200e6eb8d5d080319981380b198138111191919299a999ab9a3370e9000001017817089110010a99a999ab9a3370e9001001017817089110008a99a999ab9a3370e900200101781708911001898152481035054310035573c0046aae74004dd50009aba1005330230143574200860026ae8400cc004d5d09aba2003302475a604aeb8d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba200113016491035054310035573c0046aae74004dd51aba10063574200a646464a66a666ae68cdc3a40000040360342642444444600a00e6eb8d5d08008a99a999ab9a3370e900100100d80d0999109111111980100400398039aba10013301500f357426ae8800454cd4ccd5cd19b874801000806c0684c84888888c00c01cc050d5d08008a99a999ab9a3370e900300100d80d099910911111198030040039bad35742002600a6ae84d5d10008a99a999ab9a3370e900400100d80d0990911111180080398031aba100115335333573466e1d200a00201b01a13322122222233004008007375a6ae84004c010d5d09aba2001130164901035054310035573c0046aae74004dd51aba13574400a4646464a66a666ae68cdc3a4000004036034264666444246660020080060046eb4d5d0801180a9aba10013232325335333573466e1d200000201f01e1323332221222222233300300a0090083301a017357420046ae84004cc069d71aba1357440026ae8800454cd4ccd5cd19b874800800807c0784cc8848888888cc01c024020cc064058d5d0800991919299a999ab9a3370e90000010110108999109198008018011bad357420026eb4d5d09aba20011301d491035054310035573c0046aae74004dd51aba1357440022a66a666ae68cdc3a400800403e03c266442444444466004012010666036030eb4d5d08009980cbae357426ae8800454cd4ccd5cd19b874801800807c0784c848888888c010020cc064058d5d08008a99a999ab9a3370e900400100f80f09919199991110911111119998008058050048041980d80c1aba10033301901a3574200466603a034eb4d5d08009a991919299a999ab9a3370e90000010120118998149bad357420026eb4d5d09aba20011301f4901035054310035573c0046aae74004dd51aba135744002446602a0040026ae88004d5d10008a99a999ab9a3370e900500100f80f0999109111111198028048041980c80b1aba10013232325335333573466e1d200000202202113301c75c6ae840044c075241035054310035573c0046aae74004dd51aba1357440022a66a666ae68cdc3a401800403e03c22444444400c26034921035054310035573c0046aae74004dd51aba1357440026ae880044c059241035054310035573c0046aae74004dd50009191919299a999ab9a3370e900000100d00c899910911111111111980280680618099aba10013301475a6ae84d5d10008a99a999ab9a3370e900100100d00c899910911111111111980100680618099aba10013301475a6ae84d5d10008a9919a999ab9a3370e900200180d80d0999109111111111119805006806180a1aba10023001357426ae8800854cd4ccd5cd19b874801800c06c0684c8ccc888488888888888ccc018038034030c054d5d080198011aba1001375a6ae84d5d10009aba200215335333573466e1d200800301b01a133221222222222223300700d00c3014357420046eb4d5d09aba200215335333573466e1d200a00301b01a132122222222222300100c3014357420042a66a666ae68cdc3a4018006036034266442444444444446600601a01860286ae84008dd69aba1357440042a66a666ae68cdc3a401c006036034266442444444444446601201a0186eb8d5d08011bae357426ae8800854cd4ccd5cd19b874804000c06c0684cc88488888888888cc020034030dd71aba1002375a6ae84d5d10010a99a999ab9a3370e900900180d80d0999109111111111119805806806180a1aba10023014357426ae8800854cd4ccd5cd19b874805000c06c0684c8488888888888c010030c050d5d08010980b2481035054310023232325335333573466e1d200000201e01d13212223003004375c6ae8400454c8cd4ccd5cd19b874800800c07c0784c84888c004010c004d5d08010a99a999ab9a3370e900200180f80f099910911198010028021bae3574200460026ae84d5d10010980d2481035054310023232325335333573466e1d200000202202113212223003004301b357420022a66a666ae68cdc3a4004004044042224440042a66a666ae68cdc3a4008004044042224440022603a921035054310035573c0046aae74004dd50009aab9e00235573a0026ea8004d55cf0011aab9d00137540024646464a66a666ae68cdc3a40000040320302642444600600860246ae8400454cd4ccd5cd19b87480080080640604c84888c008010c048d5d08008a99a999ab9a3370e900200100c80c099091118008021bae3574200226028921035054310035573c0046aae74004dd50009191919299a999ab9a3370e900000100c00b8999109198008018011bae357420026eb4d5d09aba200113013491035054310035573c0046aae74004dd50009aba20011300e491035054310035573c0046aae74004dd50009110019111111111111111180f0031080888078a4c26016921035054350030142225335333573466e1d20000010110101300c491035054330015335333573466e20005200001101013300333702900000119b81480000044c8cc8848cc00400c008cdc200180099b840020013300400200130132225335333573466e1d200000101000f10021330030013370c00400240024646464a66a666ae68cdc3a400000401e01c201c2a66a666ae68cdc3a400400401e01c201e260149201035054310035573c0046aae74004dd500091191919299a999ab9a3370e9000001007807089110010a99a999ab9a3370e90010010078070990911180180218029aba100115335333573466e1d200400200f00e112220011300a4901035054310035573c0046aae74004dd50009191919299a999ab9a3370e90000010068060999109198008018011bae357420026eb4d5d09aba200113008491035054310035573c0046aae74004dd5000919118011bac001300f2233335573e002401c466a01a60086ae84008c00cd5d10010041191919299a999ab9a3370e900000100580509909118010019bae357420022a66a666ae68cdc3a400400401601426424460020066eb8d5d0800898032481035054310035573c0046aae74004dd500091191919299a999ab9a3370e90010010058050a8070a99a999ab9a3370e90000010058050980798029aba1001130064901035054310035573c0046aae74004dd5000919319ab9c00100322322300237560026018446666aae7c004802c8c8cd402ccc03cc018d55ce80098029aab9e0013004357440066ae8400801448004c020894cd40045401c884d4008894cd4ccd5cd19b8f488120ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25000020080071300c001130060031220021220011220021221223300100400321223002003112200122123300100300223230010012300223300200200101\" }"
553554

554555

556+
plutusV2StakeScript :: Text
557+
plutusV2StakeScript =
558+
"{ \"type\": \"PlutusScriptV2\", \"description\": \"\", \"cborHex\": \"5907655907620100003232323232323232323232323232332232323232322232325335320193333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4050054d5d0a80619a80a00a9aba1500b33501401635742a014666aa030eb9405cd5d0a804999aa80c3ae501735742a01066a02803e6ae85401cccd54060081d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40a9d69aba15002302b357426ae8940088c98c80b4cd5ce01701681589aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8153ad35742a00460566ae84d5d1280111931901699ab9c02e02d02b135573ca00226ea8004d5d09aba2500223263202933573805405204e26aae7940044dd50009aba1500533501475c6ae854010ccd540600708004d5d0a801999aa80c3ae200135742a004603c6ae84d5d1280111931901299ab9c026025023135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a004601c6ae84d5d1280111931900b99ab9c018017015101613263201633573892010350543500016135573ca00226ea800448c88c008dd6000990009aa80a911999aab9f0012500a233500930043574200460066ae880080508c8c8cccd5cd19b8735573aa004900011991091980080180118061aba150023005357426ae8940088c98c8050cd5ce00a80a00909aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180a9aba1500233500f014357426ae8940088c98c8064cd5ce00d00c80b89aab9e5001137540026ae854010ccd54021d728039aba150033232323333573466e1d4005200423212223002004357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403666ae7007006c06406005c4d55cea80089baa00135742a00466a016eb8d5d09aba2500223263201533573802c02a02626ae8940044d5d1280089aab9e500113754002266aa002eb9d6889119118011bab00132001355012223233335573e0044a010466a00e66442466002006004600c6aae754008c014d55cf280118021aba200301213574200222440042442446600200800624464646666ae68cdc3a800a40004642446004006600a6ae84d55cf280191999ab9a3370ea0049001109100091931900819ab9c01101000e00d135573aa00226ea80048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01101000e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00d00c00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00580500409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00a00980880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae700340300280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801401200e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7002c02802001c0184d55cea80089baa0012323333573466e1d40052002200723333573466e1d40092000212200123263200633573800e00c00800626aae74dd5000a4c2400292010350543100122002112323001001223300330020020011\" }"
559+

cardano-testnet/src/Testnet/Process/Cli/DRep.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ delegateToDRep
264264
-> FilePath -- ^ Base directory path where generated files will be stored.
265265
-> String -- ^ Name for the subfolder that will be created under 'work' folder.
266266
-> PaymentKeyInfo -- ^ Wallet that will pay for the transaction.
267-
-> KeyPair StakingKey -- ^ Staking key pair used for delegation.
267+
-> KeyPair StakeKey -- ^ Staking key pair used for delegation.
268268
-> KeyPair PaymentKey -- ^ Delegate Representative (DRep) key pair ('PaymentKeyPair') to which delegate.
269269
-> m ()
270270
delegateToDRep execConfig epochStateView sbe work prefix

cardano-testnet/src/Testnet/Process/Cli/Keys.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ module Testnet.Process.Cli.Keys
1818
, cliByronSigningKeyAddress
1919
) where
2020

21-
import Cardano.Api (ByronAddr, ByronKeyLegacy, File (..), FileDirection (..), StakeKey)
22-
import Cardano.Api.Shelley (KesKey, StakePoolKey)
21+
import Cardano.Api (ByronAddr, ByronKeyLegacy, File (..), FileDirection (..))
2322

2423
import Control.Monad.Catch (MonadCatch)
2524
import Control.Monad.IO.Class (MonadIO)

cardano-testnet/src/Testnet/Process/Cli/SPO.hs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
module Testnet.Process.Cli.SPO
88
( checkStakeKeyRegistered
99
, createScriptStakeRegistrationCertificate
10+
, createScriptStakeDelegationCertificate
1011
, createStakeDelegationCertificate
1112
, createStakeKeyRegistrationCertificate
1213
, createStakeKeyDeregistrationCertificate
@@ -214,6 +215,25 @@ createScriptStakeRegistrationCertificate tempAbsP (AnyCardanoEra cEra) scriptFil
214215
]
215216
<> extraArgs
216217

218+
createScriptStakeDelegationCertificate
219+
:: (MonadTest m, MonadCatch m, MonadIO m, HasCallStack)
220+
=> TmpAbsolutePath
221+
-> AnyCardanoEra
222+
-> FilePath -- ^ Script file
223+
-> File (VKey StakePoolKey) In -- ^ Cold stake pool key
224+
-> FilePath -- ^ Output file path
225+
-> m ()
226+
createScriptStakeDelegationCertificate tempAbsP (AnyCardanoEra cEra) scriptFile (File coldvkey) outputFp =
227+
GHC.withFrozenCallStack $ do
228+
let tempAbsPath' = unTmpAbsPath tempAbsP
229+
execCli_
230+
[ eraToString cEra
231+
, "stake-address", "stake-delegation-certificate"
232+
, "--stake-script-file", scriptFile
233+
, "--cold-verification-key-file", coldvkey
234+
, "--out-file", tempAbsPath' </> outputFp
235+
]
236+
217237
createStakeKeyDeregistrationCertificate
218238
:: (MonadTest m, MonadCatch m, MonadIO m, HasCallStack)
219239
=> TmpAbsolutePath

cardano-testnet/src/Testnet/Types.hs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@ module Testnet.Types
3030
, VKey
3131
, SKey
3232
, VrfKey
33-
, StakingKey
33+
, StakePoolKey
34+
, StakeKey
3435
, PaymentKey
36+
, KesKey
3537
, DRepKey
36-
, SpoColdKey
3738
, readNodeLoggingFormat
3839
, ShelleyGenesis(..)
3940
, shelleyGenesis
@@ -44,7 +45,7 @@ module Testnet.Types
4445

4546
import Cardano.Api
4647
import Cardano.Api.Experimental (Some (..))
47-
import Cardano.Api.Shelley (VrfKey)
48+
import Cardano.Api.Shelley (KesKey, StakePoolKey, VrfKey)
4849

4950
import qualified Cardano.Chain.Genesis as G
5051
import Cardano.Crypto.ProtocolMagic (RequiresNetworkMagic (..))
@@ -91,10 +92,10 @@ instance MonoFunctor (KeyPair k) where
9192
deriving instance Show (KeyPair k)
9293
deriving instance Eq (KeyPair k)
9394

94-
instance {-# OVERLAPPING #-} Show (Some KeyPair) where
95+
instance Show (Some KeyPair) where
9596
show (Some kp) = show kp
9697

97-
instance {-# OVERLAPPING #-} Eq (Some KeyPair) where
98+
instance Eq (Some KeyPair) where
9899
(Some KeyPair{verificationKey=File vk1, signingKey=File sk1})
99100
== (Some KeyPair{verificationKey=File vk2, signingKey=File sk2}) =
100101
vk1 == vk2 && sk1 == sk2
@@ -147,13 +148,10 @@ isTestnetNodeSpo = isJust . poolKeys
147148
nodeSocketPath :: TestnetNode -> SocketPath
148149
nodeSocketPath = File . H.sprocketSystemName . nodeSprocket
149150

150-
data StakingKey
151-
data SpoColdKey
152-
153151
data SpoNodeKeys = SpoNodeKeys
154-
{ poolNodeKeysCold :: KeyPair SpoColdKey
152+
{ poolNodeKeysCold :: KeyPair StakePoolKey
155153
, poolNodeKeysVrf :: KeyPair VrfKey
156-
, poolNodeKeysStaking :: KeyPair StakingKey
154+
, poolNodeKeysStaking :: KeyPair StakeKey
157155
} deriving (Eq, Show)
158156

159157
type instance Element SpoNodeKeys = FilePath
@@ -167,7 +165,7 @@ data PaymentKeyInfo = PaymentKeyInfo
167165

168166
data Delegator = Delegator
169167
{ paymentKeyPair :: KeyPair PaymentKey
170-
, stakingKeyPair :: KeyPair StakingKey
168+
, stakingKeyPair :: KeyPair StakeKey
171169
} deriving (Eq, Show)
172170

173171
data LeadershipSlot = LeadershipSlot

0 commit comments

Comments
 (0)