Beet - The BitShares companion
A little while back, I decided to do some research on a standalone key-management/signing app for BitShares as it was obvious that it was something sorely missing from the BitShares ecosystem. Any interaction with the blockchain required the user to use one of the trading/DEX frontends which can be overly complicated and due to this, integration with standalone BitShares-based applications was clunky and slow at best.
My initial thought was to develop something like MetaMask for BitShares. However, the sheer number of possible operation types on BitShares, the multiple keys and permission schemes as well as the difficulty in cross-browser compatibility and potential security issues off a browser add-on made it look almost impossible to get right.
It was around this time I learned that Scatter (https://get-scatter.com/) dev nsjames was considering the same issues while working on it and was moving to a standalone desktop app called Scatter desktop.
I looked at the code in GitHub to see how he went about it and for inspiration and it all clicked. It is such a simple, elegant and portable solution that immediately seemed ideal.
Armed with some new knowledge I started working on a rough proof-of-concept to go along with a worker-status widget that @sschiessl had developed and we had been discussing adding voting capability to.
I meant to only use the concept/architecture from Scatter Desktop and rewrite it blind but the truth is that it is so well-written, I ended up lifting a few chunks of code verbatim.
I've also been in contact with nsjames regarding various issues that we both were looking for solutions to and those conversations helped us both.
The result was the ALPHA proof-of-concept version of Beet showcased along with the voting widget as you can see below: (right-click and open in new tab to view full-size)
Since then, I've open sourced the proof-of-concept code, given it a name (Beet), MIT-licensed it and transferred it over to the BitShares organisation github here: https://github.com/bitshares/beet
You can check it out there and use with the voting showcase at http://www.bitsharesvotes.com/
I will continue working on this as there are still many things to be done and added.
The current rough roadmap (in no particular order) is as follows:
- Refactor some less than ideal code parts
- Introduce Vuex state-management and make use of vuex-bitshares(https://github.com/TrustyFund/vuex-bitshares)
- Introduce origin verification and authorisation persistence to avoid multiple access requests by the same client app
- Introduce more specific API methods such as transfer() instead of raw operation signing
- Multiple accounts per wallet support (as per reference UI)
- Reference wallet importing.
- Extra information & features on dashboard as needed
- Port to mobile
- Fork for graphene multi-chain support
If you like this, please consider casting your votes for Committee Member and/or Witness "clockwork" on BitShares.