SwiftCash Proposal - A Simple & Open-Source Web Wallet
So I've been messaging and talking to old friends from uni and work, to encourage them to get involved and help us grow. First interest has now been established for a simple and open source wallet with an old friend of mine from uni. I'm submitting the proposal on his behalf since he asked me to. Good thing is he's happy to already start working on it and deliver the work before his proposal gets paid - that is before the second superblock. Also, he's a noob to crypto and SwiftCash is going to be his first cryptocurrency to hold!
As you can see in my mockups above, this is going to be a very simple web app that is also going to be mobile friendly but above all, open-source and totally transparent with users having full access to their funds. The way it's going to work is users can login with an email and password but with no back-end code to check anything. So no login would ever fail, technically speaking. This would be technically a brain wallet in which the user's email and password are used to generate an address and private key.
I suggest we also add the option of logging in with a private key so users can spend their paper wallets with it without the need of downloading the whole blockchain. Once users login either way, the web app will fetch the balance and unspent transactions of the address from the explorer's api which I've been working on. Then it will build and sign the transaction locally so your private key never leaves your browser. Once the transaction is built and signed, it will then be sent to the explorer in order to be broadcasted. The web app will be 100% open source and will be uploaded to github so everyone can verify that private keys never leave the user's browser.
As it can be seen, this is going to be a very simple wallet. Nothing fancy and no transaction history either. I guess a link can be placed after users login that would land on the explorer so users can view their address history there. Maybe we can later work on making the wallet more advanced or add more features to it but for now it's going to be as simple as logging in with either an email plus password or a private key, and then seeing your balance, and also being able to spend without the hassles of installing and syncing the core wallet.
P.S. for security reasons and in order to make brute force attacks extremely difficult, I propose to enforce passwords to be "very strong" and then generate the address and private key after interating over a hash of email plus password for a number of times. Iterating over the hash and using the email and password as some kind of a salt each time for 100 x 1440 times takes less than 1 second on an average computer. I choose 100 x 1440 - which is the number of blocks we should produce in 100 days so it's a number easy for us to remember. I also propose to use keccak256 which is SHA-3 and so the most secure hashing algorithm so far.
Estimated Time: 200 hours
Requested Amount: 300K SWIFT
Good proposal and idea, I totally support it.