Questions on raw transaction format

I am digging into the raw transaction format.
I have a couple of questions:

  • Why is there a checksum in the transaction output? The checksum should be verified by the client (wallet) when the address is entered by the user to catch any typo, but I don’t see why we would need a checksum in the ouput itself.
  • Why is there a derivation path in the transaction ouput? You’re locking the funds in one specific address, why would you need more than just the public key (or hash of public key)? Also, it kind of ruins privacy?
  • What is the format of a pay-to-script output?

For starters you’re looking at wrong repository/legacy codebase (not in use for a couple of years now). The content has changed to be modular, and the updated CDDLs can be found at ledger-specs repo

1 Like

Thanks, that helps. I had a look at the Alonzo specification and I found that both the plutus_script and plutus_data are in the witness set (presumably provided by the consumer) and in the auxiliary data (provided by the producer).

I find this a bit redundant, is that so that they can both be provided either by the producer or the consumer depending on the scenario? What’s the rationale behind this approach?