diff --git a/cabal.project b/cabal.project index 12ae24805f..602cdb6c53 100644 --- a/cabal.project +++ b/cabal.project @@ -14,7 +14,7 @@ repository cardano-haskell-packages -- you need to run if you change them index-state: , hackage.haskell.org 2024-06-23T23:01:13Z - , cardano-haskell-packages 2024-07-02T19:42:00Z + , cardano-haskell-packages 2024-07-19T12:00:49Z packages: cardano-cli diff --git a/cardano-cli/cardano-cli.cabal b/cardano-cli/cardano-cli.cabal index ced06793cf..023f6bea04 100644 --- a/cardano-cli/cardano-cli.cabal +++ b/cardano-cli/cardano-cli.cabal @@ -212,7 +212,7 @@ library binary, bytestring, canonical-json, - cardano-api ^>=9.0, + cardano-api ^>=9.1, cardano-binary, cardano-crypto, cardano-crypto-class ^>=2.1.2, diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Run/CreateTestnetData.hs b/cardano-cli/src/Cardano/CLI/EraBased/Run/CreateTestnetData.hs index 99c033a561..d9cb37f5ae 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Run/CreateTestnetData.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Run/CreateTestnetData.hs @@ -210,7 +210,7 @@ runGenesisCreateTestNetDataCmd } = do liftIO $ createDirectoryIfMissing False outputDir shelleyGenesisInit <- maybeReadAndDecodeGenesisFileSpec specShelley shelleyGenesisDefaults - alonzoGenesis <- maybeReadAndDecodeGenesisFileSpec specAlonzo alonzoGenesisDefaults + alonzoGenesis <- maybeReadAndDecodeGenesisFileSpec specAlonzo (alonzoGenesisDefaults BabbageEra) -- FIXED in https://github.com/IntersectMBO/cardano-cli/pull/812 conwayGenesis <- maybeReadAndDecodeGenesisFileSpec specConway conwayGenesisDefaults -- Read NetworkId either from file or from the flag. Flag overrides template file. diff --git a/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/DRep.hs b/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/DRep.hs index 543e10b1c0..bb43df259a 100644 --- a/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/DRep.hs +++ b/cardano-cli/src/Cardano/CLI/EraBased/Run/Governance/DRep.hs @@ -169,10 +169,7 @@ runGovernanceDRepMetadataHashCmd , mOutFile } = do metadataBytes <- firstExceptT ReadFileError $ newExceptT (readByteStringFile metadataFile) - (_metadata, metadataHash) <- - firstExceptT GovernanceCmdDRepMetadataValidationError - . hoistEither - $ validateAndHashDRepMetadata metadataBytes + let (_metadata, metadataHash) = hashDRepMetadata metadataBytes firstExceptT WriteFileError . newExceptT . writeByteStringOutput mOutFile diff --git a/cardano-cli/src/Cardano/CLI/Read.hs b/cardano-cli/src/Cardano/CLI/Read.hs index 7a3939faeb..a7e120a2f6 100644 --- a/cardano-cli/src/Cardano/CLI/Read.hs +++ b/cardano-cli/src/Cardano/CLI/Read.hs @@ -451,7 +451,7 @@ readScriptDatumOrFile :: ScriptDatumOrFile witctx -> ExceptT ScriptDataError IO (ScriptDatum witctx) readScriptDatumOrFile (ScriptDatumOrFileForTxIn df) = - ScriptDatumForTxIn + ScriptDatumForTxIn . Just <$> readScriptDataOrFile df readScriptDatumOrFile InlineDatumPresentAtTxIn = pure InlineScriptDatum readScriptDatumOrFile NoScriptDatumOrFileForMint = pure NoScriptDatumForMint diff --git a/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceCmdError.hs b/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceCmdError.hs index e75d54da4d..1b0d2da4bc 100644 --- a/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceCmdError.hs +++ b/cardano-cli/src/Cardano/CLI/Types/Errors/GovernanceCmdError.hs @@ -50,7 +50,6 @@ data GovernanceCmdError | GovernanceCmdDecoderError !DecoderError | GovernanceCmdVerifyPollError !GovernancePollError | GovernanceCmdWriteFileError !(FileError ()) - | GovernanceCmdDRepMetadataValidationError !DRepMetadataValidationError | -- Legacy - remove me after cardano-cli transitions to new era based structure GovernanceCmdMIRCertNotSupportedInConway | GovernanceCmdGenesisDelegationNotSupportedInConway @@ -111,8 +110,6 @@ instance Error GovernanceCmdError where pretty $ renderGovernancePollError pollError GovernanceCmdWriteFileError fileError -> "Cannot write file: " <> prettyError fileError - GovernanceCmdDRepMetadataValidationError e -> - "DRep metadata validation error: " <> prettyError e GovernanceCmdMIRCertNotSupportedInConway -> "MIR certificates are not supported in Conway era onwards." GovernanceCmdGenesisDelegationNotSupportedInConway -> diff --git a/cardano-cli/test/cardano-cli-golden/Test/Golden/Governance/DRep.hs b/cardano-cli/test/cardano-cli-golden/Test/Golden/Governance/DRep.hs index 8b15714d5d..8c82b65365 100644 --- a/cardano-cli/test/cardano-cli-golden/Test/Golden/Governance/DRep.hs +++ b/cardano-cli/test/cardano-cli-golden/Test/Golden/Governance/DRep.hs @@ -185,6 +185,25 @@ hprop_golden_governance_drep_metadata_hash = propertyOnce . H.moduleWorkspace "t H.diffFileVsGoldenFile outputDRepMetadataHash goldenDRepMetadataHash +-- Execute me with: +-- @cabal test cardano-cli-golden --test-options '-p "/golden governance drep metadata hash cip119/"'@ +hprop_golden_governance_drep_metadata_hash_cip119 :: Property +hprop_golden_governance_drep_metadata_hash_cip119 = propertyOnce . H.moduleWorkspace "tmp" $ \tempDir -> do + goldenDRepMetadataHashCip119 <- H.note "test/cardano-cli-golden/files/golden/governance/drep/drep_metadata_hash_cip119" + + --Use jsonld file from test vector of CIP119 https://github.com/cardano-foundation/CIPs/blob/master/CIP-0119/test-vector.md + drepMetadataFile <- noteInputFile "test/cardano-cli-golden/files/input/governance/drep/drep.jsonld" + + outputDRepMetadataHashCip119 <- H.noteTempFile tempDir "drep-metadata-hash-cip119.txt" + + void $ execCardanoCLI + [ "conway", "governance", "drep", "metadata-hash" + , "--drep-metadata-file", drepMetadataFile + , "--out-file", outputDRepMetadataHashCip119 + ] + + H.diffFileVsGoldenFile outputDRepMetadataHashCip119 goldenDRepMetadataHashCip119 + hprop_golden_governance_drep_registration_certificate_vkey_file :: Property hprop_golden_governance_drep_registration_certificate_vkey_file = propertyOnce . H.moduleWorkspace "tmp" $ \tempDir -> do drepVKeyFile <- noteInputFile "test/cardano-cli-golden/files/input/drep.vkey" diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/governance/drep/drep_metadata_hash_cip119 b/cardano-cli/test/cardano-cli-golden/files/golden/governance/drep/drep_metadata_hash_cip119 new file mode 100644 index 0000000000..d0ac298521 --- /dev/null +++ b/cardano-cli/test/cardano-cli-golden/files/golden/governance/drep/drep_metadata_hash_cip119 @@ -0,0 +1 @@ +a14a5ad4f36bddc00f92ddb39fd9ac633c0fd43f8bfa57758f9163d10ef916de \ No newline at end of file diff --git a/cardano-cli/test/cardano-cli-golden/files/input/governance/drep/drep.jsonld b/cardano-cli/test/cardano-cli-golden/files/input/governance/drep/drep.jsonld new file mode 100644 index 0000000000..e17ce0ceed --- /dev/null +++ b/cardano-cli/test/cardano-cli-golden/files/input/governance/drep/drep.jsonld @@ -0,0 +1,58 @@ +{ + "@context": { + "CIP100": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0100/README.md#", + "CIP119": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0119/README.md#", + "hashAlgorithm": "CIP100:hashAlgorithm", + "body": { + "@id": "CIP119:body", + "@context": { + "references": { + "@id": "CIP119:references", + "@container": "@set", + "@context": { + "GovernanceMetadata": "CIP100:GovernanceMetadataReference", + "Other": "CIP100:OtherReference", + "label": "CIP100:reference-label", + "uri": "CIP100:reference-uri" + } + }, + "paymentAddress": "CIP119:paymentAddress", + "givenName": "CIP119:givenName", + "image": { + "@id": "CIP119:image", + "@context": { + "ImageObject": "https://schema.org/ImageObject" + } + }, + "objectives": "CIP119:objectives", + "motivations": "CIP119:motivations", + "qualifications": "CIP119:qualifications" + } + } + }, + "hahsAlgorithm": "blake2b-256", + "body": { + "paymentAddress": "addr1q86dnpkva4mm859c8ur7tjxn57zgsu6vg8pdetkdve3fsacnq7twy06u2ev5759vutpjgzfryx0ud8hzedhzerava35qwh3x34", + "givenName": "Ryan Williams", + "image": { + "@type": "ImageObject", + "contentUrl": "https://avatars.githubusercontent.com/u/44342099?v=4", + "sha256": "2a21e4f7b20c8c72f573707b068fb8fc6d8c64d5035c4e18ecae287947fe2b2e" + }, + "objectives": "Buy myself an island.", + "motivations": "I really would like to own an island.", + "qualifications": "I have my 100m swimming badge, so I would be qualified to be able to swim around island.", + "references": [ + { + "@type": "Other", + "label": "A cool island for Ryan", + "uri": "https://www.google.com/maps/place/World's+only+5th+order+recursive+island/@62.6511465,-97.7946829,15.75z/data=!4m14!1m7!3m6!1s0x5216a167810cee39:0x11431abdfe4c7421!2sWorld's+only+5th+order+recursive+island!8m2!3d62.651114!4d-97.7872244!16s%2Fg%2F11spwk2b6n!3m5!1s0x5216a167810cee39:0x11431abdfe4c7421!8m2!3d62.651114!4d-97.7872244!16s%2Fg%2F11spwk2b6n?authuser=0&entry=ttu" + }, + { + "@type": "Link", + "label": "Ryan's Twitter", + "uri": "https://twitter.com/Ryun1_" + } + ] + } +} diff --git a/flake.lock b/flake.lock index 66736dc8ce..ef97b48bc8 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1719950081, - "narHash": "sha256-RBuStLEj6JBd1ouBRa8W0vb/X32TD49DmTvBtTIjy1c=", + "lastModified": 1721391352, + "narHash": "sha256-scqGnAT3tofRQUb9av5+lhGnpK03HzSKMmKk80wDb2A=", "owner": "intersectmbo", "repo": "cardano-haskell-packages", - "rev": "c5fb42c338a64c2eda832ecea7a5b354c971a5e5", + "rev": "ef6499225aab60d39690732fac110377ff8b8324", "type": "github" }, "original": {