Skip to content

Instantly share code, notes, and snippets.

@kumavis
Created January 20, 2015 18:28
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kumavis/d6a1e0ce435478e27383 to your computer and use it in GitHub Desktop.
Save kumavis/d6a1e0ce435478e27383 to your computer and use it in GitHub Desktop.
# 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