Skip to content

Commit

Permalink
[wip] Try to submit abort tx
Browse files Browse the repository at this point in the history
  • Loading branch information
abailly-iohk committed Oct 26, 2021
1 parent aacd5a1 commit cdf054a
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 11 deletions.
8 changes: 7 additions & 1 deletion cabal.project
Expand Up @@ -182,6 +182,13 @@ source-repository-package
plugins/backend-monitoring
plugins/backend-trace-forwarder

source-repository-package
type: git
location: file:///home/curry/raduom
tag: fb902575867eba7ec58f8cea483b41555f305818
subdir:
alonzo/impl

source-repository-package
type: git
location: https://github.com/raduom/cardano-ledger-specs
Expand All @@ -203,7 +210,6 @@ source-repository-package
shelley-ma/shelley-ma-test
cardano-ledger-core
cardano-protocol-tpraos
alonzo/impl
alonzo/test
cardano-ledger-test

Expand Down
16 changes: 9 additions & 7 deletions local-cluster/src/CardanoClient.hs
Expand Up @@ -165,7 +165,7 @@ build ::
NetworkId ->
FilePath ->
Address ShelleyAddr ->
[(TxIn, Maybe (PlutusScript PlutusScriptV1, ScriptDatum WitCtxTxIn, ScriptRedeemer))] ->
[(TxIn, Maybe (Script PlutusScriptV1, ScriptData, ScriptRedeemer))] ->
[TxIn] ->
[TxOut AlonzoEra] ->
IO (TxBody AlonzoEra)
Expand All @@ -183,11 +183,11 @@ build networkId socket changeAddress txIns collateral txOuts = do
pparams
stakePools
utxo
txBodyContent
(txBodyContent pparams)
(AddressInEra (ShelleyAddressInEra ShelleyBasedEraAlonzo) changeAddress)
noOverrideWitness
where
txBodyContent =
txBodyContent pparams =
TxBodyContent
(map mkWitness txIns)
(TxInsCollateral CollateralInAlonzoEra collateral)
Expand All @@ -198,29 +198,31 @@ build networkId socket changeAddress txIns collateral txOuts = do
(TxAuxScripts AuxScriptsInAlonzoEra [])
(BuildTxWith TxExtraScriptDataNone)
(TxExtraKeyWitnesses ExtraKeyWitnessesInAlonzoEra [])
(BuildTxWith noProtocolParameters)
(BuildTxWith $ Just pparams)
(TxWithdrawals WithdrawalsInAlonzoEra [])
(TxCertificates CertificatesInAlonzoEra [] (BuildTxWith noStakeCredentialWitnesses))
TxUpdateProposalNone
(TxMintValue MultiAssetInAlonzoEra noMintedValue (BuildTxWith noPolicyIdToWitnessMap))
TxScriptValidityNone
noProtocolParameters = Nothing
noMintedValue = mempty
noPolicyIdToWitnessMap = mempty
noMetadataMap = mempty
noStakeCredentialWitnesses = mempty
noOverrideWitness = Nothing
dummyFee = TxFeeExplicit TxFeesExplicitInAlonzoEra $ Lovelace 0

mkWitness ::
(TxIn, Maybe (Script PlutusScriptV1, ScriptData, ScriptRedeemer)) ->
(TxIn, BuildTxWith BuildTx (Witness WitCtxTxIn AlonzoEra))
mkWitness (txIn, Nothing) = (txIn, BuildTxWith $ KeyWitness KeyWitnessForSpending)
mkWitness (txIn, Just (script, datum, redeemer)) = (txIn, BuildTxWith $ ScriptWitness ScriptWitnessForSpending sWit)
mkWitness (txIn, Just (PlutusScript PlutusScriptV1 script, datum, redeemer)) = (txIn, BuildTxWith $ ScriptWitness ScriptWitnessForSpending sWit)
where
sWit =
PlutusScriptWitness
PlutusScriptV1InAlonzo
PlutusScriptV1
script
datum
(ScriptDatumForTxIn datum)
redeemer
(ExecutionUnits 0 0)

Expand Down
35 changes: 32 additions & 3 deletions local-cluster/test/Test/LocalClusterSpec.hs
Expand Up @@ -10,10 +10,13 @@ import Cardano.Api (
NetworkId,
ScriptDataSupportedInEra (ScriptDataInAlonzoEra),
ShelleyAddr,
TxIn (TxIn),
TxIx (TxIx),
TxOut (TxOut),
TxOutDatumHash (TxOutDatumHash, TxOutDatumHashNone),
TxOutValue (TxOutValue),
UTxO (..),
getTxId,
hashScriptData,
lovelaceToValue,
shelleyAddressInEra,
Expand Down Expand Up @@ -103,7 +106,8 @@ assertCanCallInitAndAbort = \case
cluster@(RunningCluster ClusterConfig{networkId} (RunningNode _ socket : _)) -> do
(vk, sk) <- keysFor "alice" cluster
let addr = buildAddress vk networkId
headAddress = buildScriptAddress (toCardanoApiScript $ Head.validatorScript policyId) networkId
headScript = toCardanoApiScript $ Head.validatorScript policyId
headAddress = buildScriptAddress headScript networkId
headDatum = fromPlutusData $ toData $ Head.Initial 1_000_000_000_000 []
UTxO utxo <- queryUtxo networkId socket [addr]
let (txIn, _) = case Map.toList utxo of
Expand All @@ -123,8 +127,33 @@ assertCanCallInitAndAbort = \case
(TxOutDatumHash ScriptDataInAlonzoEra (hashScriptData headDatum))
]

let signedHeadTx = sign sk balancedHeadTx
submit networkId socket signedHeadTx
let headTxIn = TxIn (getTxId balancedHeadTx) (TxIx 1)
submit networkId socket $ sign sk balancedHeadTx
waitForPayment networkId socket 2_000 headAddress

-- get change utxo
UTxO utxo' <- queryUtxo networkId socket [addr]
let (txIn', _) = case Map.toList utxo' of
[] -> error "No Utxo found for fees"
(tx : _) -> tx

let abortDatum = fromPlutusData $ toData Head.Final
abortRedeemer = fromPlutusData $ toData Head.Abort
balancedAbortTx <-
build
networkId
socket
addr
[ (txIn', Nothing)
, (headTxIn, Just (headScript, headDatum, abortRedeemer))
]
[txIn']
[ TxOut
(shelleyAddressInEra headAddress)
(TxOutValue MultiAssetInAlonzoEra (lovelaceToValue minValue))
(TxOutDatumHash ScriptDataInAlonzoEra (hashScriptData abortDatum))
]
submit networkId socket $ sign sk balancedAbortTx
waitForPayment networkId socket 2_000 headAddress
_ -> failure "Empty cluster"

Expand Down

0 comments on commit cdf054a

Please sign in to comment.