Several years ago, we (IIRC in particular @Arachnid) tried to convince centalized exchanges to use the calldata. And make contracts, essentially (pseudocode):
function deposit(uid) payable{
assert( checksum_ok(uid))
emit Paid( uid, msg.value)
}
So exchanges would put up a contract, which they could fetch money from whenever they saw fit. They were concerned that users would bungle the data, but since the data can be verified in the contract, I seems like that would be pretty solvable.
But essentially, their stance was “If a user can do it wrong, they will. And the user deposit may thus revert, and the user won’t succeed in making the deposit. We prefer to create N thousand EOA accounts for deposits, rather than adding any extra complexity to the deposit UX”.
So that’s why things are like they are. Based on that, which is tragic and IMO very wrong, I don’t see how they (CEX:es) would be amenable to the memo
approach, since the memo approach is more or less the same idea, however:
- If the memo data is bungled, there is no way to revert the transaction. Instead, people would have to contact the CEX and say “Hey I sent over XX ether, but got the memo wrong, help?”. And they’d have a huge problem sorting it all out.