I'm looking to implement a secure mobile messaging service and looking for a payment system that will allow users to buy message credits and have them be allocated to a specific account however I want to keep user data to a minimum (currently I'm planning for no more than a public key, user name (five random characters), account balance and optionally an e-mail address (in case the user loses their phone).

My questron is can I send the five character username with bitcoin transactions?


I'm not sure how you would make vanity addresses work for this. You don't want to store an address for each user, and if you did you wouldn't need vanity addresses. If you force the user to create a vanity address, I don't see what they would do with it that would help you. It seems kind of bizarre to force them to transfer the coins to their own vanity address and then transfer them to you, so you can see the vanity address as the source.

One possibility is to publish a simple algorithm to convert their user name to a Bitcoin address (that nobody could claim). Then have them use the sendmany API call to send the payment to you and a satoshi to their user name's corresponding Bitcoin address. You would receive the funds and then know what user to credit them to by decoding the address that had received a satoshi. This would waste one satoshi for each transfer.

There are really only two issues with this. First, it's a bit of a pain for your users. They can't use the GUI to send the funds since it doesn't support sendmany. Second, the users have to be careful not to send the actual funds to the Bitcoin address corresponding to their user name. If they did, those coins would be lost forever. They need to understand that they should only send a tiny fraction of a Bitcoin to that address so as to 'mark' the transaction.

All in all, I think all the possible solutions are ugly and you should rethink the decisions that led you to these unusual requirements.

  • There's another issue: Some miners refuse to relay/mine "dust" outputs. – Nick ODell Apr 23 '13 at 2:13

you can create custom Bitcoin addresses containing the 5 characters if that helps, with the vanity address generator: https://bitcointalk.org/index.php?topic=25804.0


Although I agree with David Schwartz that you should re-think your design, there's a much simpler way than sending a Satoshi to a black hole address. You could simply have the users use the least significant digits of their payment to denote their username. So, for example, use the last five digits of the user's phone number as their default username and have a user with phone number ending in 12345 send 1.00012345 bitcoins to deposit 1 btc. That way they could use the normal client GUI and any other source that allows sending of full-decimal-place bitcoins. And 100 deposits would still only cost them at most 9 bitcents.

I don't recommend this because, like with David's suggestion, the payments could identify which user is making the deposit to a well-resourced third party.

Your Answer

