title_body: What prevents a bad user to provide a wrong signature to a transaction? What prevents a bad user to provide a wrong PubKeyHash and sign it with a different signature in the Signed.hs example from the Plutus Pioneer Program NFT lecture?
  Policy:
  Policy:mkPolicy :: PubKeyHash -&gt; ScriptContext -&gt; Bool
  mkPolicy pkh ctx = txSignedBy (scriptContextTxInfo ctx) pkh
  
  Wallet-Code:
  pkh &lt;- pubKeyHash &lt;$&gt; Contract.ownPubKey
  ...
  lookups = Constraints.monetaryPolicy $ policy pkh
  
  Couldn't he just use a different pkh and change the transaction signature to mint the token?
  What prevents that?
  Update:
  My question seems to lead people in the wrong directions, so to clarify:
  I'm wondering how a transaction is actually signed and why that can't be manipulated.
upvoted_answer: I don't know the specifics, but I believe under the hood the corresponding private key is used to sign the transaction and the public key is used for verification. So you cannot use any other public key, since you do not know the corresponding private key.