Created
January 20, 2015 18:28
-
-
Save kumavis/d6a1e0ce435478e27383 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Ethereum Browser - MIST Analogue | |
============== WHAT ============ | |
### Goals: | |
(1) Identity Management | |
(2) Wallet App | |
(3) Contract Browser | |
(4) Dapp runtime environment | |
### Target Platform: | |
* Browser SPA | |
* Browser widget | |
* Native via Node-Webkit (nw.js) / Atom-Shell | |
============ HOW ============ | |
### Blockchain interaction | |
* Browser: configurable to be via a local or trusted service over xhr/ws | |
* Native: node-ethereum | |
### Security | |
* hyperboot - permanently cached web apps. puts version control into the hands of the user. | |
* identity management via file drop | |
* [ needs more research ] | |
+--------------------------------------------------------------------+ | |
| Browser | | |
| | | |
| +-----------------------------------------------+ | | |
| |WebApp +---------------------+| | | |
| | | Dapp || | | |
| | | in iframe || | | |
| | | || | | |
| | +-------------+ | || | | |
| | |Ethereum.js | | || | | |
| | | | | || | | |
| | +-------+-----+ | || | | |
| | | | || | | |
| | | | || | | |
| | | | || | | |
| | | | +-----------+ || | | |
| +-------+ | +-------------------+Ethereum.js| || | | |
| |local | | | | | | || | | |
| |storage| | | | +-----------+ || | | |
| | | | +--------+--------+ | || | | |
| | | <------+ Local Intercept | | || | | |
| | | | +--------+--------+ | || | | |
| +-------+ | | +---------------------+| | | |
| +-----------------------------------------------+ | | |
| | | | |
| | | | |
+--------------------------------------------------------------------+ | |
| | |
v | |
+--------------------+-----+ | |
| Ethereum client service | | |
| (local or trusted) | | |
+--------------------------+ | |
=========== IMPROVEMENTS =========== | |
### RPC Spec | |
* paradigm shift: closely connected state-presentation pair -> multi-agent service | |
* currently stateful (defaultBlock) | |
* submitting signed vs unsigned transactions | |
* subscribing to events while being protocol agnostic (e.g. xhr: long polling?) | |
* how to model deeply confirmed state vs shallowly confirmed state -* (request diffs?) | |
* standardization - create a generic test suite | |
### Javascript API | |
* expose streams (easy, non-breaking change) | |
* consistent obj / function api (easy, breaking change) | |
* callback / promise hybrid (easy, non-breaking after above change) | |
* use primatives exposed by ethereumjs-lib (significant change) | |
============== TASKS ============= | |
### Engineering | |
(1) RPC 3.0 spec | |
(2) RPC test suite | |
(3) Ethereum.js adjustments | |
(4) Identity Management | |
(5) Basic Wallet App | |
(6) Contract Browser | |
(7) Dapp runtime environment | |
(8) App container (browser or native or both) | |
(9) Hosted service (browser.ethereum.org -> rpc.ethereum.org) | |
### Additional Effort: | |
* Experience Design | |
* Visual Design | |
* App view build out | |
* Security Audit |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment