>> (p.1)
    Author Topic: Build a better bitcoin web service?  (Read 2535 times)
    Newton (OP)
    Newbie
    *
    Offline Offline

    Activity: 56
    Merit: 0


    View Profile
    August 02, 2011, 11:29:46 PM
    Last edit: August 02, 2011, 11:43:36 PM by Newton
     #1

    I find it ironic that Bitcoin (by itself) elegantly solves so many problems people are currently having with their new online money:

    - How to safely, irreversibly, and quickly move funds around (as opposed to Dwolla clawbacks, multi day bank delays all around)
    - How to avoid the need to trust a 3rd party (mybitcoin, bitomat, etc)
    - How to stay safe even if a 3rd party is hacked (Mt Gox exposing everyone's passwords)

    However, I think it is safe to say that 3rd party web services are going to be required if this economy is going to grow.  My mother, for example, would need a simple, easy to use online payment system.

    My proposal:

    An open source ajax web service which performs key actions in browser, and stores data only in encrypted chunks from browser calls.

    From the client view:

     (a)  Client logs into site with username/password
     (b)  Client is presented with personal addressbook, transaction history, account balance, etc.
     (c)  Client can send to funds directly, and peer to peer (transactions within the same web db) can be instantly satisfied (so merchants can adopt)

    From the server view:

    (i)   Login is sent to server, encrypted (stage 1).  Server receives encrypted password, matches against database.  If successful, data blocks can be retrieved to send to client- but these blocks were stored encrypted.  The server never has the key to decrypt and is blind to what the data contains.
    (ii)   Javascript on client browser uses the password to decode the data blocks (stage 2) in order to present seamlessly to the user.
    (iii)   New data to be stored in the account is encrypted by javascript, and sent to the server via ajax requests.


    Private/Public keys:

    The private key is only available encrypted on the server, and only the javascript client side ever "sees" the decrypted key.  This key is used by the browser to sign any new transaction requests, which are then submitted to the network by the server side (to work around browser security).

    The server does maintain a decrypted copy of the public key.  This is used to also maintain a total bitcoin count for that address (since this is public knowledge anyway, no privacy lost).  If one or more requests exceed the total in the blockchain, that request can be instantly denied until verified by the network.

    Although it is still possible for an evil site operator to steal your coins, it is much less likely.  The combination of in browser operation and open source peer review can provide a lot more confidence to the user, and this should be enough trust for day to day spending balances.

    Between the existing js bitcoin and server side bitcoind projects, I think this is feasible.  Not sure if I would have that many hours though, so hopefully somebody else wants to run with this...

    Thoughts?

Page 1
Viewing Page: 1