Hmm. If I'm not mistake you are talking that all classes need to have interfaces (let thing so). That's the trick, not all code do this. In one library you have Transaction as an interface, in another as a class. And there is no way to understand it from name. Some times, using library for pretty long time, I find out that type is class instead of a interface, or vice versa.
You gave a good example - DefaultTransaction. Do we need this 7 letters if we assume default behavior? I think no. Some guys like long long names, but not me. I prefer documentation. You also told about name/design, but really how one letter can degrade it ?
Look at java collections, there are a lot of AbstarctSmth classes, agreement Why? Because the name speaks for itself. Can we live without it? - yes. Can it make code more clear and readable? - I think yes.
Best regards, B7W