Ideally, one would combine the protocol with some sort of address exchange criteria. You hold an address with $100 worth of bitcoins. The coffee costs $2. The coffee shop holds an address with $98 worth of bitcoins. You initiate the transaction, effectively swapping the addresses and paying for the coffee. Of course, this presupposes a preset group of prepaid addresses. But what is to stop ys from generating hundreds of prepaid addresses (other than the required finances of course), each ranging from say $50 to $120, and promoting their their general circulation, for the purposes of easier exchange?