Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update cardano-api-8.44, New required flag --reference-script-size for transaction calculate-min-fee #680

Merged
merged 1 commit into from
Apr 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ repository cardano-haskell-packages
-- you need to run if you change them
index-state:
, hackage.haskell.org 2024-03-24T23:16:24Z
, cardano-haskell-packages 2024-03-24T23:54:54Z
, cardano-haskell-packages 2024-04-04T15:00:00Z

packages:
cardano-cli
Expand Down
17 changes: 9 additions & 8 deletions cardano-cli/cardano-cli.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -196,17 +196,17 @@ library
, binary
, bytestring
, canonical-json
, cardano-api ^>= 8.42.0.0
, cardano-api ^>= 8.44.0.0
, cardano-binary
, cardano-crypto
, cardano-crypto-class ^>= 2.1.2
, cardano-crypto-wrapper ^>= 1.5.1
, cardano-data >= 1.1
, cardano-git-rev ^>= 0.2.2
, cardano-ledger-byron >= 1.0.0.2
, cardano-ledger-byron >= 1.0.1.0
, cardano-ping ^>= 0.2.0.13
, cardano-prelude
, cardano-slotting ^>= 0.1
, cardano-slotting ^>= 0.2.0.0
, cardano-strict-containers ^>= 0.1
, cborg >= 0.2.4 && < 0.3
, cborg-json
Expand All @@ -223,11 +223,12 @@ library
, microlens
, network
, optparse-applicative-fork
, ouroboros-consensus >= 0.16
, ouroboros-consensus-cardano >= 0.14.2
, ouroboros-consensus-protocol >= 0.7
, ouroboros-consensus >= 0.17
-- TODO: bump consensus back
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this comment needed?

, ouroboros-consensus-cardano >= 0.15
, ouroboros-consensus-protocol >= 0.8
, ouroboros-network-api
, ouroboros-network-protocols
, ouroboros-network-protocols ^>=0.8
, parsec
, prettyprinter
, prettyprinter-ansi-terminal
Expand Down Expand Up @@ -343,7 +344,7 @@ test-suite cardano-cli-golden
, cardano-crypto-wrapper
, cardano-data >= 1.1
, cardano-ledger-byron
, cardano-ledger-shelley >=1.7.0.0
, cardano-ledger-shelley >=1.10.0.0
, cardano-strict-containers ^>= 0.1
, cborg
, containers
Expand Down
2 changes: 2 additions & 0 deletions cardano-cli/src/Cardano/CLI/EraBased/Commands/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,8 @@ data TransactionCalculateMinFeeCmdArgs = TransactionCalculateMinFeeCmdArgs
, protocolParamsFile :: !ProtocolParamsFile
, txShelleyWitnessCount :: !TxShelleyWitnessCount
, txByronWitnessCount :: !TxByronWitnessCount
-- | The total size in bytes of the transaction reference scripts.
, referenceScriptSize :: !Int
} deriving Show

data TransactionCalculateMinValueCmdArgs era = TransactionCalculateMinValueCmdArgs
Expand Down
8 changes: 8 additions & 0 deletions cardano-cli/src/Cardano/CLI/EraBased/Options/Common.hs
Original file line number Diff line number Diff line change
Expand Up @@ -3308,6 +3308,14 @@ pNetworkIdForTestnetData envCli = asum $ mconcat
pure <$> maybeToList (envCliNetworkId envCli)
]

pReferenceScriptSize :: Parser Int
pReferenceScriptSize =
Opt.option auto $ mconcat
[ Opt.long "reference-script-size"
, Opt.metavar "INT"
, Opt.help "Total size in bytes of transaction reference scripts"
]

--------------------------------------------------------------------------------
-- Helpers
--------------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ pTransactionCalculateMinFee =
<*> pProtocolParamsFile
<*> pTxShelleyWitnessCount
<*> pTxByronWitnessCount
<*> pReferenceScriptSize
-- Deprecated options:
<* optional pNetworkIdDeprecated
<* optional pTxInCountDeprecated
Expand Down
18 changes: 9 additions & 9 deletions cardano-cli/src/Cardano/CLI/EraBased/Run/CreateTestnetData.hs
Original file line number Diff line number Diff line change
Expand Up @@ -556,16 +556,16 @@ buildPoolParams nw dir index specifiedRelays = do
. newExceptT $ readFileTextEnvelope (AsVerificationKey AsStakeKey) poolRewardVKF

pure L.PoolParams
{ L.ppId = L.hashKey poolColdVK
, L.ppVrf = L.hashVerKeyVRF poolVrfVK
, L.ppPledge = L.Coin 0
, L.ppCost = L.Coin 0
, L.ppMargin = minBound
, L.ppRewardAcnt =
{ L.ppId = L.hashKey poolColdVK
, L.ppVrf = L.hashVerKeyVRF poolVrfVK
, L.ppPledge = L.Coin 0
, L.ppCost = L.Coin 0
, L.ppMargin = minBound
, L.ppRewardAccount =
toShelleyStakeAddr $ makeStakeAddress nw $ StakeCredentialByKey (verificationKeyHash rewardsSVK)
, L.ppOwners = mempty
, L.ppRelays = lookupPoolRelay specifiedRelays
, L.ppMetadata = L.SNothing
, L.ppOwners = mempty
, L.ppRelays = lookupPoolRelay specifiedRelays
, L.ppMetadata = L.SNothing
}
where
lookupPoolRelay :: Map Word [L.StakePoolRelay] -> Seq.StrictSeq L.StakePoolRelay
Expand Down
18 changes: 9 additions & 9 deletions cardano-cli/src/Cardano/CLI/EraBased/Run/Genesis.hs
Original file line number Diff line number Diff line change
Expand Up @@ -819,16 +819,16 @@ buildPoolParams nw dir index specifiedRelays = do
. newExceptT $ readFileTextEnvelope (AsVerificationKey AsStakeKey) poolRewardVKF

pure L.PoolParams
{ L.ppId = L.hashKey poolColdVK
, L.ppVrf = L.hashVerKeyVRF poolVrfVK
, L.ppPledge = L.Coin 0
, L.ppCost = L.Coin 0
, L.ppMargin = minBound
, L.ppRewardAcnt =
{ L.ppId = L.hashKey poolColdVK
, L.ppVrf = L.hashVerKeyVRF poolVrfVK
, L.ppPledge = L.Coin 0
, L.ppCost = L.Coin 0
, L.ppMargin = minBound
, L.ppRewardAccount =
toShelleyStakeAddr $ makeStakeAddress nw $ StakeCredentialByKey (verificationKeyHash rewardsSVK)
, L.ppOwners = mempty
, L.ppRelays = lookupPoolRelay specifiedRelays
, L.ppMetadata = L.SNothing
, L.ppOwners = mempty
, L.ppRelays = lookupPoolRelay specifiedRelays
, L.ppMetadata = L.SNothing
}
where
lookupPoolRelay
Expand Down
2 changes: 1 addition & 1 deletion cardano-cli/src/Cardano/CLI/EraBased/Run/Query.hs
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ runQueryConstitutionHashCmd
where
writeConstitutionHash
:: Maybe (File () Out)
-> Maybe (L.SafeHash L.StandardCrypto L.AnchorData)
-> L.SafeHash L.StandardCrypto L.AnchorData
-> ExceptT QueryCmdError IO ()
writeConstitutionHash mOutFile' cHash =
firstExceptT QueryCmdWriteFileError . newExceptT
Expand Down
3 changes: 2 additions & 1 deletion cardano-cli/src/Cardano/CLI/EraBased/Run/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1018,6 +1018,7 @@ runTransactionCalculateMinFeeCmd
, protocolParamsFile = protocolParamsFile
, txShelleyWitnessCount = TxShelleyWitnessCount nShelleyKeyWitnesses
, txByronWitnessCount = TxByronWitnessCount nByronKeyWitnesses
, referenceScriptSize
} = do

txbodyFile <- liftIO $ fileOrPipe txbodyFilePath
Expand All @@ -1039,7 +1040,7 @@ runTransactionCalculateMinFeeCmd

lpparams <- getLedgerPParams sbe pparams

let shelleyfee = evaluateTransactionFee sbe lpparams txbody nShelleyKeyWitW32 0
let shelleyfee = evaluateTransactionFee sbe lpparams txbody nShelleyKeyWitW32 0 referenceScriptSize

let byronfee = calculateByronWitnessFees (protocolParamTxFeePerByte pparams) nByronKeyWitnesses

Expand Down
2 changes: 2 additions & 0 deletions cardano-cli/src/Cardano/CLI/Legacy/Commands/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ data LegacyTransactionCmds
ProtocolParamsFile
TxShelleyWitnessCount
TxByronWitnessCount
Int
-- ^ The total size in bytes of the transaction reference scripts.
| TransactionCalculateMinValueCmd
(EraInEon ShelleyBasedEra)
ProtocolParamsFile
Expand Down
1 change: 1 addition & 0 deletions cardano-cli/src/Cardano/CLI/Legacy/Options.hs
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,7 @@ pTransaction envCli =
<*> pProtocolParamsFile
<*> pTxShelleyWitnessCount
<*> pTxByronWitnessCount
<*> pReferenceScriptSize
-- Deprecated options:
<* optional pNetworkIdDeprecated
<* optional pTxInCountDeprecated
Expand Down
9 changes: 6 additions & 3 deletions cardano-cli/src/Cardano/CLI/Legacy/Run/Transaction.hs
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ runLegacyTransactionCmds = \case
runLegacyTransactionSignCmd txinfile skfiles network txoutfile
TransactionSubmitCmd mNodeSocketPath consensusModeParams network txFp ->
runLegacyTransactionSubmitCmd mNodeSocketPath consensusModeParams network txFp
TransactionCalculateMinFeeCmd txbody pParamsFile nShelleyKeyWitnesses nByronKeyWitnesses ->
runLegacyTransactionCalculateMinFeeCmd txbody pParamsFile nShelleyKeyWitnesses nByronKeyWitnesses
TransactionCalculateMinFeeCmd txbody pParamsFile nShelleyKeyWitnesses nByronKeyWitnesses referenceScriptSize ->
runLegacyTransactionCalculateMinFeeCmd txbody pParamsFile nShelleyKeyWitnesses nByronKeyWitnesses referenceScriptSize
TransactionCalculateMinValueCmd (EraInEon sbe) pParamsFile txOuts' ->
runLegacyTransactionCalculateMinValueCmd (AnyShelleyBasedEra sbe) pParamsFile txOuts'
TransactionHashScriptDataCmd scriptDataOrFile ->
Expand Down Expand Up @@ -225,18 +225,21 @@ runLegacyTransactionCalculateMinFeeCmd :: ()
-> ProtocolParamsFile
-> TxShelleyWitnessCount
-> TxByronWitnessCount
-> Int
-> ExceptT TxCmdError IO ()
runLegacyTransactionCalculateMinFeeCmd
txbodyFile
pParamsFile
txShelleyWitnessCount
txByronWitnessCount =
txByronWitnessCount
referenceScriptSize =
runTransactionCalculateMinFeeCmd
( Cmd.TransactionCalculateMinFeeCmdArgs
txbodyFile
pParamsFile
txShelleyWitnessCount
txByronWitnessCount
referenceScriptSize
)

runLegacyTransactionCalculateMinValueCmd :: ()
Expand Down
30 changes: 4 additions & 26 deletions cardano-cli/src/Cardano/CLI/Types/Errors/TxValidationError.hs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ import Data.Map.Strict (Map)
import qualified Data.Map.Strict as Map
import Data.Maybe
import qualified Data.OSet.Strict as OSet
import qualified Data.Set as Set
import Prettyprinter (viaShow)

data ScriptLanguageValidationError
Expand Down Expand Up @@ -326,10 +325,10 @@ votingScriptWitnessSingleton votingProcedures (Just scriptWitness) =
in Map.singleton voter scriptWitness

newtype TxGovDuplicateVotes era =
TxGovDuplicateVotes [L.GovActionId (L.EraCrypto (ShelleyLedgerEra era))]
TxGovDuplicateVotes (VotesMergingConflict era)

instance Error (TxGovDuplicateVotes era) where
prettyError (TxGovDuplicateVotes actionIds) =
prettyError (TxGovDuplicateVotes (VotesMergingConflict (_voter, actionIds))) =
"Trying to merge votes with similar action identifiers: " <> viaShow actionIds <>
". This would cause ignoring some of the votes, so not proceeding."

Expand All @@ -338,36 +337,15 @@ convertToTxVotingProcedures
:: [(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
-> Either (TxGovDuplicateVotes era) (TxVotingProcedures BuildTx era)
convertToTxVotingProcedures votingProcedures = do
VotingProcedures procedure <- foldM f emptyVotingProcedures votingProcedures
VotingProcedures procedure <- first TxGovDuplicateVotes $
foldM f emptyVotingProcedures votingProcedures
Jimbo4350 marked this conversation as resolved.
Show resolved Hide resolved
pure $ TxVotingProcedures procedure (BuildTxWith votingScriptWitnessMap)
where
votingScriptWitnessMap = foldl (\acc next -> acc `Map.union` uncurry votingScriptWitnessSingleton next)
Map.empty
votingProcedures
f acc (procedure, _witness) = mergeVotingProcedures acc procedure

mergeVotingProcedures :: ()
=> VotingProcedures era
-> VotingProcedures era
-> Either (TxGovDuplicateVotes era) (VotingProcedures era) -- ^ Either an error message, or the merged voting procedures
mergeVotingProcedures vpsa vpsb =
VotingProcedures . L.VotingProcedures <$> foldM mergeVotesOfOneVoter Map.empty allVoters
where
mapa = L.unVotingProcedures (unVotingProcedures vpsa)
mapb = L.unVotingProcedures (unVotingProcedures vpsb)
allVoters = Set.union (Map.keysSet mapa) (Map.keysSet mapb)
mergeVotesOfOneVoter acc voter =
Map.union acc <$> case (Map.lookup voter mapa, Map.lookup voter mapb) of
(Just v, Nothing) -> Right $ Map.singleton voter v -- Take only available value
(Nothing, Just v) -> Right $ Map.singleton voter v -- Take only available value
(Nothing, Nothing) -> Right Map.empty -- No value
(Just va, Just vb) -> -- Here's the case where we're unioning different votes for the same voter
if null intersection -- No conflict: sets of keys from left and right is disjoint
then Right $ Map.singleton voter (Map.union va vb)
else Left $ TxGovDuplicateVotes intersection -- Ooops conflict! Let's report it!
where
intersection = Map.keys $ Map.intersection va vb

proposingScriptWitnessSingleton
:: Proposal era
-> Maybe (ScriptWitness WitCtxStake era)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{-# LANGUAGE OverloadedStrings #-}

module Test.Golden.Babbage.Transaction.CalculateMinFee
module Test.Golden.Babbage.Transaction.CalculateMinFee
( hprop_golden_babbage_transaction_calculate_min_fee
) where

Expand All @@ -20,6 +20,7 @@ hprop_golden_babbage_transaction_calculate_min_fee = propertyOnce $ do
[ "transaction","calculate-min-fee"
, "--witness-count", "1"
, "--protocol-params-file", protocolParamsJsonFile
, "--reference-script-size", "0"
, "--tx-body-file", txBodyFile
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@ hprop_golden_conway_governance_action_create_protocol_parameters_update :: Prope
hprop_golden_conway_governance_action_create_protocol_parameters_update =
propertyOnce . H.moduleWorkspace "tmp" $ \tempDir -> do
stakeAddressVKeyFile <- H.note "test/cardano-cli-golden/files/input/governance/stake-address.vkey"
-- different versions of https://github.com/IntersectMBO/plutus/blob/master/plutus-core/cost-model/data/builtinCostModel.json
-- transformed and compiled together
costModelsFile <- H.note "test/cardano-cli-golden/files/input/governance/costmodels.json"

actionFile <- noteTempFile tempDir "action"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ hprop_golden_shelley_transaction_calculate_min_fee = propertyOnce $ do
, "--byron-witness-count", "10"
, "--witness-count", "5"
, "--protocol-params-file", protocolParamsJsonFile
, "--reference-script-size", "0"
, "--tx-body-file", txBodyFile
]

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "Governance proposal",
"description": "",
"cborHex": "84193039581de18f4a3466a404c11eb410313015b88e447d81b60089e25f611600e6058400f6a3031904d212a3009f1a000302590001011a00060bc719026d00011a000249f01903e800011a000249f018201a0025cea81971f70419744d186419744d186419744d186419744d186419744d186419744d18641864186419744d18641a000249f018201a000249f018201a000249f018201a000249f01903e800011a000249f018201a000249f01903e800081a000242201a00067e2318760001011a000249f01903e800081a000249f01a0001b79818f7011a000249f0192710011a0002155e19052e011903e81a000249f01903e8011a000249f018201a000249f018201a000249f0182001011a000249f0011a000249f0041a000194af18f8011a000194af18f8011a0002377c190556011a0002bdea1901f1011a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000242201a00067e23187600010119f04c192bd200011a000249f018201a000242201a00067e2318760001011a000242201a00067e2318760001011a0025cea81971f707001a000141bb041a000249f019138800011a000249f018201a000302590001011a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a00330da70101ff019f1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0223accc0a1a009063b91903fd0a1a02515e841980b30aff029f01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101ff181e1a075bc371f6826b6578616d706c652e636f6d5820c7ddb5b493faa4d3d2d679847740bdce0c5d358d56f9b1470ca67f5652a02745"
"cborHex": "84193039581de18f4a3466a404c11eb410313015b88e447d81b60089e25f611600e6058400f6a3031904d212a3009f1a000302590001011a00060bc719026d00011a000249f01903e800011a000249f018201a0025cea81971f70419744d186419744d186419744d186419744d186419744d186419744d18641864186419744d18641a000249f018201a000249f018201a000249f018201a000249f01903e800011a000249f018201a000249f01903e800081a000242201a00067e2318760001011a000249f01903e800081a000249f01a0001b79818f7011a000249f0192710011a0002155e19052e011903e81a000249f01903e8011a000249f018201a000249f018201a000249f0182001011a000249f0011a000249f0041a000194af18f8011a000194af18f8011a0002377c190556011a0002bdea1901f1011a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000242201a00067e23187600010119f04c192bd200011a000249f018201a000242201a00067e2318760001011a000242201a00067e2318760001011a0025cea81971f707001a000141bb041a000249f019138800011a000249f018201a000302590001011a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a00330da70101ff019f1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0223accc0a1a009063b91903fd0a1a02515e841980b30aff029f0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101ff181e1a075bc371f6826b6578616d706c652e636f6d5820c7ddb5b493faa4d3d2d679847740bdce0c5d358d56f9b1470ca67f5652a02745"
}
Loading
Loading