I'm also curious how they decide to expire messages out of the database. Presumably each device doesn't carry around every message ever sent since the beginning of time; that doesn't seem like it would scale well.
Step two... here's how you can hamstring the protocol, so you can use it in real life.
Hey - are we losing any of the benefits of the ideal protocol when we hamstring it?
SHHHHHHH!