CIP: Make Datum Optional

Here’s a simple CIP idea: make datums optional when sending an output to a Plutus script. When datum is not present, Plutus script must use the default value:

()Unit in Haskell.

This would enable better user experience when sending funds to smart contracts. Especially those which do have () as their datum argument.

This can probably be done starting with Plutus V3 (or higher), because, even though this mostly happens by mistake, existing script behavior must be preserved.

On the other hand, for scripts where the datum argument is supposed to be (), why not unlock these outputs sent by mistake?

Unless I’ve misunderstood your idea, there has been a CIP for this which has been generally rejected after being considered repeatedly. The reasons why are explained here, also with a suggestion in the last month that an official Cardano Problem Statement (CPS) will be written about the issue:


Awesome. Thanks @COSDpool! I’m glad I posted here instead of trying to write it up.