Skip to content

Commit

Permalink
Merge pull request #230 from input-output-hk/newhoggy/era-sensitive-t…
Browse files Browse the repository at this point in the history
…ransaction-run-commands

Era sensitive transaction run commands
  • Loading branch information
newhoggy authored Sep 4, 2023
2 parents d6e9d58 + d81ca24 commit 062fa54
Show file tree
Hide file tree
Showing 120 changed files with 11,744 additions and 678 deletions.
2 changes: 2 additions & 0 deletions cardano-cli/cardano-cli.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,15 @@ library
Cardano.CLI.EraBased.Commands.Governance.DRep
Cardano.CLI.EraBased.Commands.Governance.Query
Cardano.CLI.EraBased.Commands.Governance.Vote
Cardano.CLI.EraBased.Commands.Transaction
Cardano.CLI.EraBased.Options.Common
Cardano.CLI.EraBased.Options.Governance
Cardano.CLI.EraBased.Options.Governance.Actions
Cardano.CLI.EraBased.Options.Governance.Committee
Cardano.CLI.EraBased.Options.Governance.DRep
Cardano.CLI.EraBased.Options.Governance.Query
Cardano.CLI.EraBased.Options.Governance.Vote
Cardano.CLI.EraBased.Options.Transaction
Cardano.CLI.EraBased.Run
Cardano.CLI.EraBased.Run.Address
Cardano.CLI.EraBased.Run.Address.Info
Expand Down
9 changes: 8 additions & 1 deletion cardano-cli/src/Cardano/CLI/EraBased/Commands.hs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ module Cardano.CLI.EraBased.Commands
import Cardano.Api (CardanoEra (..), ShelleyBasedEra (..))

import Cardano.CLI.Environment
import Cardano.CLI.EraBased.Commands.Transaction
import Cardano.CLI.EraBased.Options.Common
import Cardano.CLI.EraBased.Options.Governance
import Cardano.CLI.EraBased.Options.Transaction

import Data.Foldable
import Data.Text (Text)
Expand All @@ -28,12 +30,14 @@ renderAnyEraCommand :: AnyEraCommand -> Text
renderAnyEraCommand = \case
AnyEraCommandOf _ cmd -> renderEraBasedCommand cmd

newtype EraBasedCommand era
data EraBasedCommand era
= EraBasedGovernanceCmds (EraBasedGovernanceCmds era)
| TransactionCmds (TransactionCmds era)

renderEraBasedCommand :: EraBasedCommand era -> Text
renderEraBasedCommand = \case
EraBasedGovernanceCmds cmd -> renderEraBasedGovernanceCmds cmd
TransactionCmds cmd -> renderTransactionCmds cmd

pAnyEraCommand :: EnvCli -> Parser AnyEraCommand
pAnyEraCommand envCli =
Expand Down Expand Up @@ -70,4 +74,7 @@ pEraBasedCommand envCli era =
[ subParser "governance"
$ Opt.info (EraBasedGovernanceCmds <$> pEraBasedGovernanceCmds envCli era)
$ Opt.progDesc "Era-based governance commands"
, subParser "transaction"
$ Opt.info (TransactionCmds <$> pTransactionCmds envCli era)
$ Opt.progDesc "Era-based governance commands"
]
149 changes: 149 additions & 0 deletions cardano-cli/src/Cardano/CLI/EraBased/Commands/Transaction.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE LambdaCase #-}

module Cardano.CLI.EraBased.Commands.Transaction
( TransactionCmds (..)
, renderTransactionCmds
) where

import Cardano.Api.Shelley

import Cardano.CLI.Types.Common
import Cardano.CLI.Types.Governance

import Data.Text (Text)

data TransactionCmds era
= TxBuildRaw
(CardanoEra era)
(Maybe ScriptValidity)
-- ^ Mark script as expected to pass or fail validation
[(TxIn, Maybe (ScriptWitnessFiles WitCtxTxIn))]
-- ^ Transaction inputs with optional spending scripts
[TxIn]
-- ^ Read only reference inputs
[TxIn]
-- ^ Transaction inputs for collateral, only key witnesses, no scripts.
(Maybe TxOutAnyEra)
-- ^ Return collateral
(Maybe Lovelace)
-- ^ Total collateral
[RequiredSigner]
-- ^ Required signers
[TxOutAnyEra]
(Maybe (Value, [ScriptWitnessFiles WitCtxMint]))
-- ^ Multi-Asset value with script witness
(Maybe SlotNo)
-- ^ Transaction lower bound
(Maybe SlotNo)
-- ^ Transaction upper bound
(Maybe Lovelace)
-- ^ Tx fee
[(CertificateFile, Maybe (ScriptWitnessFiles WitCtxStake))]
-- ^ Certificates with potential script witness
[(StakeAddress, Lovelace, Maybe (ScriptWitnessFiles WitCtxStake))]
TxMetadataJsonSchema
[ScriptFile]
-- ^ Auxiliary scripts
[MetadataFile]
(Maybe ProtocolParamsFile)
(Maybe UpdateProposalFile)
(TxBodyFile Out)

-- | Like 'TxBuildRaw' but without the fee, and with a change output.
| TxBuild
(CardanoEra era)
SocketPath
AnyConsensusModeParams
NetworkId
(Maybe ScriptValidity) -- ^ Mark script as expected to pass or fail validation
(Maybe Word)
-- ^ Override the required number of tx witnesses
[(TxIn, Maybe (ScriptWitnessFiles WitCtxTxIn))]
-- ^ Transaction inputs with optional spending scripts
[TxIn]
-- ^ Read only reference inputs
[RequiredSigner]
-- ^ Required signers
[TxIn]
-- ^ Transaction inputs for collateral, only key witnesses, no scripts.
(Maybe TxOutAnyEra)
-- ^ Return collateral
(Maybe Lovelace)
-- ^ Total collateral
[TxOutAnyEra]
-- ^ Normal outputs
TxOutChangeAddress
-- ^ A change output
(Maybe (Value, [ScriptWitnessFiles WitCtxMint]))
-- ^ Multi-Asset value with script witness
(Maybe SlotNo)
-- ^ Transaction lower bound
(Maybe SlotNo)
-- ^ Transaction upper bound
[(CertificateFile, Maybe (ScriptWitnessFiles WitCtxStake))]
-- ^ Certificates with potential script witness
[(StakeAddress, Lovelace, Maybe (ScriptWitnessFiles WitCtxStake))]
-- ^ Withdrawals with potential script witness
TxMetadataJsonSchema
[ScriptFile]
-- ^ Auxiliary scripts
[MetadataFile]
(Maybe UpdateProposalFile)
[VoteFile In]
[ProposalFile In]
TxBuildOutputOptions
| TxSign
InputTxBodyOrTxFile
[WitnessSigningData]
(Maybe NetworkId)
(TxFile Out)
| TxCreateWitness
(TxBodyFile In)
WitnessSigningData
(Maybe NetworkId)
(File () Out)
| TxAssembleTxBodyWitness
(TxBodyFile In)
[WitnessFile]
(File () Out)
| TxSubmit
SocketPath
AnyConsensusModeParams
NetworkId
FilePath
| TxMintedPolicyId
ScriptFile
| TxCalculateMinFee
(TxBodyFile In)
NetworkId
ProtocolParamsFile
TxInCount
TxOutCount
TxShelleyWitnessCount
TxByronWitnessCount
| TxCalculateMinRequiredUTxO
(CardanoEra era)
ProtocolParamsFile
TxOutAnyEra
| TxHashScriptData
ScriptDataOrFile
| TxGetTxId
InputTxBodyOrTxFile
| TxView
InputTxBodyOrTxFile

renderTransactionCmds :: TransactionCmds era -> Text
renderTransactionCmds = \case
TxBuild {} -> "transaction build"
TxBuildRaw {} -> "transaction build-raw"
TxSign {} -> "transaction sign"
TxCreateWitness {} -> "transaction witness"
TxAssembleTxBodyWitness {} -> "transaction sign-witness"
TxSubmit {} -> "transaction submit"
TxMintedPolicyId {} -> "transaction policyid"
TxCalculateMinFee {} -> "transaction calculate-min-fee"
TxCalculateMinRequiredUTxO {} -> "transaction calculate-min-value"
TxHashScriptData {} -> "transaction hash-script-data"
TxGetTxId {} -> "transaction txid"
TxView {} -> "transaction view"
Loading

0 comments on commit 062fa54

Please sign in to comment.