Value Proposition: Never allow your keys off your machine
We were working on a toy example for @Ned's Bounty System when we realized -- there was no way to access the most important Steem functions (including commenting, voting, paying/transferring money or escrow) from the browser!
There was no way to avoid transmitting your password or keys!
We contacted several of the other developers working on Steem-related projects but some expected users to trust transmission to their server while others were insisting on developing proprietary single-purpose plug-ins. No one had a verifiable multi-purpose solution that didn't transmit your critical information across the internet.
Thus Steem-Browserify was born!
@Fabien has created the excellent steem.js project (https://github.com/adcpm/steem) and released a subset for the browser (https://www.npmjs.com/package/steem) but didn't include any of the functions that required the cryptographic functions (i.e. your keys). We asked him about including the rest of the functions but, while he eventually has plans to include them, they are not a priority and he had absolutely no interest in our offer to do it for his project. Therefore, we forked the project.
Starting with firstname.lastname@example.org (because the newest version fails with errors), we
- merged steem and steemauth
- merged steem.api and steem.broadcast to create on uniform steem api
- replaced crypto with crypto-browserify
- cleaned up a number of browser-specific errors
- repackaged it all nicely as email@example.com
It has the standard open source MIT license -- and we ask/hope that steemit.com will consider auditing and hosting it.
Developer contributions (pull requests) are more than welcome.
One of the first improvements we intend to make is to prune unneeded code paths in an effort to make steem.min.js smaller.
With Steem-Browserify, it's trivial to create systems like SafePay.
Stay tuned as our next post will show how to use it to add a simple bounty to a post using A Totally Different Approach to Ned’s Bounty System.