@xkcd The code is very much written, and you can pull the project here and build it yourself :
https://github.com/dashevo/dashwallet-ios
The branch that you need is dashpay and is here :
https://github.com/dashevo/dashwallet-ios/tree/dashpay
It currently does not connect to Evonet though but instead connects to our own internal mobile team devnet. Currently evonet and mobile team devnet are on a different release of platform, we are upgrading our internal library to the latest release of platform this week, at which point we can also connect to evonet.
The library it is based on is here:
https://github.com/dashevo/dashsync-iOS/tree/develop
In terms of paying to open an account, yes we also thought of that. Computation complexity doesn't work well when many of our users have old phones. Instead we devised an invitation system instead, where people invite their friends or contacts and attach an open account that the friend can then claim. This makes it so you aren't sending Dash that an attacker can steal. This might not be a perfect solution but it should be good enough for our initial release and then we can move on from there.
@qwizzie, The contract has been ready for a while (it's been registered for months on internal devnets), the issue was that I wanted to provide a document explaining rationale and how to use it. I've been swamped though, but I'll try though to register it this week and provide a draft of said document.
As for fees, we have the idea of a multiplier system controlled by the Masternode network so that network wide fees would retarget (most likely monthly) based on the Dash price. However I am not sure this will make the MVP cut.