Skip to content

Commit

Permalink
Initial propagation of reference scripts to cardano-cli. No
Browse files Browse the repository at this point in the history
functionality is implemented, only placeholders.
  • Loading branch information
Jimbo4350 committed Apr 8, 2022
1 parent ade1ce8 commit bb00280
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 7 deletions.
4 changes: 3 additions & 1 deletion cardano-cli/src/Cardano/CLI/Byron/Parsers.hs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ import Cardano.Api hiding (GenesisParameters, UpdateProposal)
import Cardano.Api.Byron (Address (..), ByronProtocolParametersUpdate (..),
toByronLovelace)

import Cardano.Api.Shelley (ReferenceScript (ReferenceScriptNone))
import Cardano.CLI.Byron.Commands
import Cardano.CLI.Byron.Genesis
import Cardano.CLI.Byron.Key
Expand Down Expand Up @@ -289,7 +290,8 @@ parseTxOut =
option
( (\(addr, lovelace) -> TxOut (pAddressInEra addr)
(pLovelaceTxOut lovelace)
TxOutDatumNone)
TxOutDatumNone
ReferenceScriptNone)
<$> auto
)
$ long "txout"
Expand Down
3 changes: 2 additions & 1 deletion cardano-cli/src/Cardano/CLI/Run/Friendly.hs
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,9 @@ friendlyWithdrawals (TxWithdrawals _ withdrawals) =
| (addr@(StakeAddress net cred), amount, _) <- withdrawals
]

-- TODO: Babbage era
friendlyTxOut :: TxOut CtxTx era -> Aeson.Value
friendlyTxOut (TxOut addr amount mdatum) =
friendlyTxOut (TxOut addr amount mdatum _) =
case addr of
AddressInEra ByronAddressInAnyEra byronAdr ->
object [ "address era" .= String "Byron"
Expand Down
8 changes: 4 additions & 4 deletions cardano-cli/src/Cardano/CLI/Shelley/Run/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -950,7 +950,7 @@ printUtxo
printUtxo shelleyBasedEra' txInOutTuple =
case shelleyBasedEra' of
ShelleyBasedEraShelley ->
let (TxIn (TxId txhash) (TxIx index), TxOut _ value _) = txInOutTuple
let (TxIn (TxId txhash) (TxIx index), TxOut _ value _ _) = txInOutTuple
in Text.putStrLn $
mconcat
[ Text.decodeLatin1 (hashToBytesAsHex txhash)
Expand All @@ -959,23 +959,23 @@ printUtxo shelleyBasedEra' txInOutTuple =
]

ShelleyBasedEraAllegra ->
let (TxIn (TxId txhash) (TxIx index), TxOut _ value _) = txInOutTuple
let (TxIn (TxId txhash) (TxIx index), TxOut _ value _ _) = txInOutTuple
in Text.putStrLn $
mconcat
[ Text.decodeLatin1 (hashToBytesAsHex txhash)
, textShowN 6 index
, " " <> printableValue value
]
ShelleyBasedEraMary ->
let (TxIn (TxId txhash) (TxIx index), TxOut _ value _) = txInOutTuple
let (TxIn (TxId txhash) (TxIx index), TxOut _ value _ _) = txInOutTuple
in Text.putStrLn $
mconcat
[ Text.decodeLatin1 (hashToBytesAsHex txhash)
, textShowN 6 index
, " " <> printableValue value
]
ShelleyBasedEraAlonzo ->
let (TxIn (TxId txhash) (TxIx index), TxOut _ value mDatum) = txInOutTuple
let (TxIn (TxId txhash) (TxIx index), TxOut _ value mDatum _) = txInOutTuple
in Text.putStrLn $
mconcat
[ Text.decodeLatin1 (hashToBytesAsHex txhash)
Expand Down
7 changes: 6 additions & 1 deletion cardano-cli/src/Cardano/CLI/Shelley/Run/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,7 @@ runTxBuild (AnyCardanoEra era) (AnyConsensusModeParams cModeParams) networkId mS
notScriptLockedTxIns :: Monad m => UTxO era -> ExceptT ShelleyTxCmdError m ()
notScriptLockedTxIns (UTxO utxo) = do
let scriptLockedTxIns =
filter (\(_, TxOut aInEra _ _) -> not $ isKeyAddress aInEra ) $ Map.assocs utxo
filter (\(_, TxOut aInEra _ _ _) -> not $ isKeyAddress aInEra ) $ Map.assocs utxo
if null scriptLockedTxIns
then return ()
else left . ShelleyTxCmdExpectedKeyLockedTxIn $ map fst scriptLockedTxIns
Expand Down Expand Up @@ -660,6 +660,7 @@ toTxOutValueInAnyEra era val =
Nothing -> txFeatureMismatch era TxFeatureMultiAssetOutputs
Right multiAssetInEra -> return (TxOutValue multiAssetInEra val)

-- TODO: Babbage era
toTxOutInAnyEra :: CardanoEra era
-> TxOutAnyEra
-> ExceptT ShelleyTxCmdError IO (TxOut CtxTx era)
Expand All @@ -669,23 +670,27 @@ toTxOutInAnyEra era (TxOutAnyEra addr val mDatumHash) =
TxOut <$> toAddressInAnyEra era addr
<*> toTxOutValueInAnyEra era val
<*> pure TxOutDatumNone
<*> pure ReferenceScriptNone

(Just supported, TxOutDatumByHashOnly dh) ->
TxOut <$> toAddressInAnyEra era addr
<*> toTxOutValueInAnyEra era val
<*> pure (TxOutDatumHash supported dh)
<*> pure ReferenceScriptNone

(Just supported, TxOutDatumByHashOf fileOrSdata) -> do
sData <- readScriptDataOrFile fileOrSdata
TxOut <$> toAddressInAnyEra era addr
<*> toTxOutValueInAnyEra era val
<*> pure (TxOutDatumHash supported $ hashScriptData sData)
<*> pure ReferenceScriptNone

(Just supported, TxOutDatumByValue fileOrSdata) -> do
sData <- readScriptDataOrFile fileOrSdata
TxOut <$> toAddressInAnyEra era addr
<*> toTxOutValueInAnyEra era val
<*> pure (TxOutDatumInTx supported sData)
<*> pure ReferenceScriptNone

(Nothing, _) ->
txFeatureMismatch era TxFeatureTxOutDatum
Expand Down

0 comments on commit bb00280

Please sign in to comment.