Skip to content

ssvlabs/blox-live

Repository files navigation



Build Status Dependency Status DevDependency Status Github Tag Discord FOSSA Status

Blox Staking - Desktop App

Blox is an open-source, fully non-custodial staking platform for Ethereum 2.0. The platform serves as an easy and accessible way to stake Ether and earn rewards on Eth2, while ensuring participants retain complete control over their private keys. Our goal at Blox is to simplify staking while ensuring Ethereum stays fair and decentralized.

The Blox Live Desktop App is the gateway to convenient non-custodial staking on Eth2. Admin actions are performed in Blox Live for validator set up and management. Blox Live is run locally, offering the highest level of security and is responsible for the following key features:

  • Key Management
  • KeyVault Remote Signer Management
  • Validator Monitoring Dashboard

Blox Live bundles together all of the functionality for securely managing backups, key imports, creating and managing validators, and more. Live maintains direct connectivity with Blox Infra and the user’s cloud service, on which KeyVault remote signer is installed.

Eth2 Staking Services

When considering an Eth2 staking service, it is important to understand how these services manage user private keys. Generally, the more centralized the service, the higher the security risks and penalties its users may face.

Custodial vs. Non-Custodial Staking

A major differentiator between staking services is level of custodianship; meaning, how a service stores user private keys. Most staking services are custodial or ‘centralized.’ Custodial staking services manage the entire ETH staking process on behalf of the user and have ‘custody’ over user private keys. This level of third party involvement raises major security breach concerns. Additionally, should the service inadvertently partake in a slashable event, its users face steep penalties given that slashing penalties grow exponentially the more validators are involved in an event. The larger the centralized service, the larger the potential penalties.

Our Non-Custodial Staking Solution

In order to be truly non-custodial we developed a solution that ensures that user keys cannot be compromised in any way, all the while, segregating user private keys from Blox The result ---> an open-source Desktop app, (AKA Blox Live), which grants a user management access to an individualized remote signing environment in which validator keys are securely stored and signing requests are properly managed.

Download

Download the app from https://www.bloxstaking.com/download

Compatibility

  • macOS
  • Windows
  • Ubuntu

Development

BloxStaking app development run smoothly with Yarn

Install

yarn

Build

yarn build

Run development version

yarn dev

Different dev modes

Zoom the app
zoom=-1 yarn dev

See Zoom Levels

Create packages

BloxStaking desktop app can run on MacOs and Windows. You can create a package from your development enviroment.

Pacakage for MacOS release

yarn package-mac

Pacakage for Windows release

yarn package-win

You can find the release files under release directory.

Logger

Logger has two appenders, file trace.log and console.log.

logger.trace - console.log only
logger.debug - console.log only

logger.info - console.log + trace.log file
logger.warn - console.log + trace.log file
logger.error - console.log + trace.log file

Development Flags

For development and testing purposes you can set range of flags in blox.json in order to change application behavior.

  1. Set KeyVault version to be able to run update/reinstall

"customKeyVaultVersion": "v0.3.0"

  1. Show test page in menu

"testPage": true

  1. If auth:expired:test is true it will emulate token expired scenario and will make request to refresh token only once, and will change auth:expired:test value back to false

"auth:expired:test": true

  1. For testing purposes add your country to list of restricted countries:

"compliance:restricted:test": "North Korea"

  1. Specifically set network for beaconcha API

"network": "prater"

  1. Specifically set network for validators import feature. By default, it is mainnet.

"feature:import:network": "prater"

Tech Stack

Docs (TBD)

See our docs and guides here

Maintainers

License

GPL © Blox Live