31 Mar 02016

Design for a blockchain based authentication system

1. User initiates login request to server
2. Server responds with an amount, a random number and a wallet
  address
3. If the user agrees to the amount, she transfers from her own wallet
  to the given wallet address, including the random number as a
  message attached to the transaction
4. The server monitors transactions to its wallet address and when
  the transaction is complete then the user is considered
  authenticated

Currency requirements

1. Transactions must be immediate. Bitcoin would take an hour to
  perform a login, which is not acceptable for most use-cases. :)
2. Transactions must be able to include messages or other customizable
  metadata. This could be worked around by using the amount as the
  random number (with very small amounts).
3. Transactions should be very cheap. A login is a very small and
  frequent operation.

Caveats

1. There may be anonymity issues with this. Since the blockchain is
  public record, everyone will be able to see your pattern of logins.
  This could be mitigated by using new wallets, but I haven't thought
  out exactly how yet.
2. Design of the underlying cryptocurrency is critical. Many of the
  available parameters (block size, transaction fees) will have
  major impacts on the success of the system.

Open questions

1. Is proof-of-stake a viable option for this?
2. Are there any cryptocurrencies today that meet this system's needs?
3. Has this been attempted before by anyone else?