It requires only one thing: A function which correctly maps from any of 2^128 integers to 2^32 integers, and back again. This is a brilliant function which would not only have made IPv6 transition smoother (specifically, it would have made it completely unnecessary, since we would continue using IPv4 and just throw in this map) - but it allows infinite compression, you can take any arbitrary 16 byte value, map it to the 4 bytes value, and then the person at the far end just uses DJB's magic function to get back the original 16 bytes.
OK, now back in the real world where this function doesn't exist
In IP the peers address each other mutually. Peer A's ability to grok Peer B's address is useless if Peer B does not also grok Peer A's address. So an arbitrary IPv4 peer (of which there are already billions deployed) can only communicate with a hypothetical IPvDJB peer if its address is a standard IPv4 32-bit address. But we already have a protocol which limits us to 32-bit addresses, called IPv4, and that's what we were trying to fix with IPv6. It is no accident that DJB's example uses MX, which doesn't have peers but only a client-server relationship in which the server is oblivious to how the client addressed it.