Git Product home page Git Product logo

grid's Introduction

DEPRECATED

This project is not supported anymore.

CircleCI

Ethereum Grid

Grid is a desktop application that allows you to securely download, configure and use various clients and tools in the Ethereum ecosystem. Download the latest version.

See this introductory post to learn more about the motivations behind the project. Release announcements and tutorials are released on the project Medium publication.

Development

This repo is the hosting application for Grid UI.

Quick Start

Install and run Grid UI:

git clone https://github.com/ethereum/grid-ui.git
cd grid-ui
yarn && yarn start

Install and run Grid:

git clone https://github.com/ethereum/grid.git
cd grid
yarn && yarn start:dev

Dev Mode

yarn start:dev

The developer mode will try to load grid UI from a locally running web server on port 3080.

Debugging

Enable debug logging to console with DEBUG=geth-js yarn start:dev.

More namespaces will be added over time and listed here. We would appreciate contributions in adding more throughout our modules.

Production Mode

yarn start:prod

In production mode, a bundled app can be loaded from either fs or a remote location such as Grid UI's GitHub releases.

Release Process

See the developer guide here.

Landing page development guide

See instructions at /docs.

Contributing

There are many ways to get involved with this project. Get started here.

grid's People

Contributors

alexvansande avatar dependabot[bot] avatar evertonfraga avatar holgerd77 avatar jpitts avatar philipplgh avatar renovate-bot avatar renovate[bot] avatar robogrid avatar ryanio avatar shazow avatar wolovim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grid's Issues

Restrict / harden the release process

The release process should be as simple as possible but also not sacrifice security for convenience.
We should probably have a constraint that new releases that trigger auto-update require a 2nd reviewer to avoid accidentally released versions or attacks.

Implement basic Electron lifecycle functionality with security best practices

related to #1

  1. Only Load Secure Content: use https/wss instead of http/ws
  2. Disable Node.js Integration for Remote Content
  3. Enable Context Isolation for Remote Content
  4. Handle Session Permission Requests From Remote Content
  5. Do Not Disable WebSecurity
  6. Define a Content Security Policy
  7. Do Not Set allowRunningInsecureContent to true
  8. Do Not Enable Experimental Features
  9. Do Not Use enableBlinkFeatures
  10. Do Not Use allowpopups
  11. Verify WebView Options Before Creation
  12. Disable or limit navigation
  13. Disable or limit creation of new windows

see: https://electronjs.org/docs/tutorial/security

Especially make sure that:

  • nodeIntegration is turned off for ALL renderers
  • preload scripts are not leaking ANY NodeJs API: no window.process, window.require, window.fs, window.ipc
  • IPC is restricted in the preload script: no wildcard IPC - everything is put behind facade object and "whitelisted"
  • webview support is enabled through the webviewTag flag
  • Electron logic is encapsulated in its own separate file outside of main

Deactivate background scripts

The app that is downloaded with the electron-app-updater can currently & intentionally execute code on the main thread.
Because this is a sec. issue if the downloaded app is unknown(not the case for mist) or npm modules in the app are potentially malicious(this is the case for every app) the main process should instead configure a renderer / browser window following https://electronjs.org/docs/tutorial/security and should not allow any other code to run on the privileged main process until we find a better solution

Include geth update and start logic into shell

This is a rewrite of the geth binary download, start, stop and configuration logic.

Related to

Requirements analysis based on Mist issues:

  • attach to an already running geth node: ethereum/mist#3859
    -> many users just chose this way because they cannot make fine-grained configurations about e.g. the datadir in the UI. If we allow a better config through Mist it will resolve many of the problems that happen because people try to bypass the default config.

  • support user IPC configuration: ethereum/mist#3809

  • let users explicitly choose their node from all available (local & remote) geth binaries: ethereum/mist#3855

  • remove flag-pass-through: don't forward electron args to sub-processes unless really needed: ethereum/mist#4145, ethereum/mist#4076
    -> defer geth start so that this can be done through UI instead of CLI args

  • provide useful debug info if geth binaries cannot be found or are otherwise 'unavailable': ethereum/mist#4157, ethereum/mist#3978

  • provide info for a recommended geth version but don't block if it is not used: sanity check should be warning not error: ethereum/mist#4064

  • provide better guidance on when to use/not to use http IPC but don't crash: ethereum/mist#3995

  • detect datadir & binary path changes and issue warnings

  • allow backup and migration of different --datadir locations:
    ethereum/mist#4161
    ethereum/mist#4164

Notes

We should try to minimize the dependency footprint here as everything runs on main/privileged: no unnecessary 3rd party modules.

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

File: renovate.json
Error type: The renovate configuration file contains some invalid settings
Message: Invalid configuration option: packageRules[0].enable``

Towards a more deterministic mist-shell build

yarn.lock serves to determine the exact modules' versions at a certain commit time. We should implement a similar mechanism to handle the mist-ui, to make this use case possible:

git checkout v2.0.0
yarn release

git checkout v1.0.0
yarn release

ideally, each of those commands would download mist-ui packages specified in their HEAD and pack a reproducible release.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.