I can send simple transactions to yoroi without any errors. However when I submit a transaction with NFT policy cardano-cli returns an error.

node version 1.30.1 (relay node)

system: ubuntu 20.4


    "epoch": 296,
    "hash": "32a29af3a31fa24e6d731e9adfeb35eb065eb8f688a611da9b479f2770870a01",
    "slot": 42857090,
    "block": 6380067,
    "era": "Alonzo",
    "syncProgress": "100.00"

nft meta :

  "721": {
    "policyid": {
      "name": {
        "name": "name",
        "artist": "artist",
        "description": "",
        "image": "ipfs://"

create policy

cardano-cli address key-gen \
--verification-key-file policy/policy.vkey \
--signing-key-file policy/policy.skey


cardano-cli address key-hash --payment-verification-key-file policy/policy.vkey

policy script:

    "type": "all",
    "scripts": [
            "type": "before",
            "slot": 42862090
            "keyHash": "keyhash",
            "type": "sig"


hash     0        5000000 lovelace + TxOutDatumHashNone

calculate fee:

cardano-cli transaction calculate-min-fee --tx-body-file keys/nfttx.raw --tx-in-count 1 --tx-out-count 2 --witness-count 2 --mainnet --protocol-params-file keys/protocol.json --byron-witness-count 0 


cardano-cli transaction build-raw --fee 198721 --tx-in hash#0 --tx-out $(cat keys/payment.addr)+2000000 --tx-out $(cat keys/payment.addr)+2801279+"1 $(cat policy/nft/policy.id).head00" --mint="1 $(cat policy/nft/policy.id).head00" --minting-script-file policy/nft/nft_policy.script --metadata-json-file policy/nft/nft_meta.json --invalid-hereafter=42862090 --out-file keys/nfttx.raw --invalid-before 42857090

sign transaction

cardano-cli transaction sign  --tx-body-file keys/nfttx.raw  --signing-key-file keys/payment.skey --mainnet  --out-file keys/tx.signed


Command failed: transaction submit  Error: Error while submitting tx: ShelleyTxValidationError ShelleyBasedEraAlonzo (ApplyTxError [UtxowFailure (WrappedShelleyEraFailure (ScriptWitnessNotValidatingUTXOW (fromList [ScriptHash "keyhash"])))])

EDIT: I get the same error even when submitting a transaction without the invalidation of the policy script part.

  • Please add add the commands that your are executing
    – raghu
    Oct 18 '21 at 6:04
  • @raghu I think I forgot signing the transaction with my policy.skey. If you update your answer I'll accept it.
    – Bahamas
    Oct 18 '21 at 8:10
  • I'm having the same problem. Did you find a solution?
    – cardadodev
    Oct 27 '21 at 3:36
  • @cardadodev The transaction needs to be signed with the policy.skey and the payment.skey together.
    – Bahamas
    Nov 16 '21 at 0:09

Would you mind changing the

`"keyHash": "keyhash",

in the policy script with you key hash. You can generate key hash using

cardano-cli address key-hash --payment-verification-key-file policy.vkey

exact command will depend on the location of your key files.

After including this Key Hash in the policy script, the minting transaction must be signed by the corresponding signing ket(policy.skey). The transaction also has to be signed by the wallet which is paying the fee. Unless these two signing keys are proper the transaction will not get submitted.

  • 1
    I just changed it for the question. I put the correct keyhash in the script.
    – Bahamas
    Oct 17 '21 at 19:44
  • 2
    @Bahamas so why did you accept this answer if it didn't help you?
    – Petr
    Dec 30 '21 at 19:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.