rchain / bounties

RChain Bounty Program
MIT License
90 stars 62 forks source link

Web Browser extension for signing RChain transactions #956

Open dckc opened 5 years ago

dckc commented 5 years ago

Benefit to RChain

Web browsers are the ubuquitous user interface platform. Much like MetaMask brings Ethereum to your browser, let's develop a browser extension to sign RChain transactions.

Budget and Objective

Estimated Budget of Task: $0 (unless / until other collaborators join in; @JoshOrndorff and I are both compensated outside the bounty system) Estimated Timeline Required to Complete the Task: 6 weeks for the first and second goals below How will we measure completion?

I see a few goals:

The first is done: https://github.com/dckc/Rchain-Status/tree/sig-ext ee0aab2 demonstrated by @JoshOrndorff at RCon3. (See also #561 for related work on RChain-API).

I'm interested to get it to the level where it's usable by motivated enthusiasts.

I expect others are better positioned to get it widely available and supported. That's likely to involve things like legal defense for users that lose money and think the providers of this gizmo are responsible.

Legal

Task Submitter shall not submit Tasks that will involve RHOC being transacted in any manner that (i) jeopardizes RHOC’s status as a software access token or other relevant and applicable description of the RHOC as an “asset”—not a security— or (2) violates, in any manner, applicable U.S. Securities laws.

Ojimadu commented 5 years ago

What browser would likely be included for a start? It would be great to see Chrome, safari and Firefox extensions.

David405 commented 5 years ago

@Ojimadu, the chrome extension is already built, I can walk you through setting it up

allancto commented 5 years ago

This is an awesome issue. @dckc, @JoshOrndorff, the fact that you both are on SoW's is interesting but a budget of 0 gives no information to potential contributors about what you are prepared to champion for for them in terms of rewards. Equally, you may want to share some thoughts about what you may expect contributors in terms of skills, experience, commitment, time, or any other expectations you may have.

dckc commented 5 years ago

... It would be great to see Chrome, safari and Firefox extensions.

dckc commented 5 years ago

... you may want to share some thoughts about what you may expect [of] contributors ...

Norms in the open source community are pretty well established. p.s. Joshy, feel free to elaborate on expectations if you're inclined to.

Actually, that reminds me: IOU a CONTRIBUTING.md to document coding style etc. In the mad sprint to get the prototype out for RCon3, I took a few notes but didn't commit them.

... a budget of 0 gives no information to potential contributors about what you are prepared to champion ...

Let's cross that bridge when we come to it.

JoshOrndorff commented 5 years ago

I second the idea of supporting chrom(e/ium) and firefox. That's exactly what metamask does and covers roughly 2/3 users (source: https://en.wikipedia.org/wiki/Usage_share_of_web_browsers).

Contributors should be familiar with asynchronous programming in javascript and have at least a cursory understanding of protobufs. A good self-screening test would be to read this README and if it doesn't make any sense, you may not have the skills necessary.

dckc commented 5 years ago

By way of budgeting thoughts, I reviewed the commit log and pruned the ones that don't look like story points (the budgeting unit for development work, per #273); what remains are either user-visible functionality, bug fixes, or significant design / tooling / refactoring work. In newest-first order:

  1. 2018-09-05 15:13 bdf7524 RhoTypes: regenerate with --keep-case (bug fix)
  2. 2018-09-05 11:38 57e947b factored out messageBus idioms
  3. 2018-09-05 09:47 b58f6db startRelay: listen cb takes data, not event (bug fix)
  4. 2018-09-05 01:28 3dd9a69 static type annotation tooling
  5. 2018-09-03 23:50 962c6bf sigui: signature makes it all the way back to the page
  6. 2018-09-03 17:02 f162a95 sigui: refactor options to not depend on protobuf
  7. 2018-09-03 16:40 d66469a sigui: sign Par.toByteArray()
  8. 2018-09-03 13:53 37296bf sigui: move key management to options
  9. 2018-09-03 13:07 d0c4b66 sigui: signing works!
  10. 2018-09-03 11:51 73148d0 sigui: generate key pair, save encrypted
  11. 2018-09-03 09:32 c86f5e0 sigui: use explicit authority for popup
  12. 2018-09-03 09:21 08738d1 sigui: local storage integration (Chrome only?)
  13. 2018-09-03 07:59 ec5f1ef toward signature extension: hello world

Many of them are more than one story point; let's suppose an average of 2. That's 26 story points * $150/story point = $3900 that I would have budgeted for the work I did.

p.s. I was only able to develop this so rapidly because I had (a) built a Chrome extension back in 2015 (b) built a gRPC client in python a few months ago, and (c) built RChain-API in recent weeks that includes RChain digital signatures, based on the July 11 demo and reading most every change to the core code is it becomes available to track detailed changes to the data structures.

allancto commented 5 years ago

This issue has sponsorship from the dApp development community, communicated by @kdvalentine. For reference projects see MetaMask and also MyCrypto.

dckc commented 5 years ago

There's now a 1000 RHOC gitcoin bounty on firefox support: https://github.com/dckc/RSign/issues/1#issuecomment-420666297