Skip to content

firoorg/firo-client

Repository files navigation

Firo Client

This is an (experimental) client for the Firo network. Currently, it requires connection to a fully trusted firod full node.

Currently you must use node version 15 due to a dependency on sass-loader.

Installing firod

For an unbundled install, it's required that you manually link binaries compiled from the client-api branch of the firo repository into the appropriate directory for your system.

Pulling and Building firod

Clone the firod repository

git clone --branch client-api https://github.com/firoorg/firo

Now you must build firod, instructions for which will be located in doc/build, in the README*.md and build*.md files relevant to your platform. In addition to the instructions included there, the additional flag --enable-clientapi must be passed to the ./configure script when it is invoked during the build process as described in the aforementioned files.

Once firod is built, it will be located at src/firod relative to the directory you cloned firo into. You must then copy it into assets/core/win32, assets/core/linux, or assets/core/darwin. e.g. if you followed the command above from firo-client's root directory and are building for Mac, cp firo/src/firod assets/core/darwin. In order to build Firo Client binaries on other platforms, you must include firod binaries built for that platform in the appropriate directory.

Updating firod

To update firod, simply run git pull in the firod directory, and run make.

Installing npm Packages

To install dependencies for the client itself, run

npm install
npm run rebuild-zeromq

Starting firo-client

To run the development version of firo-client, simply run

npm run dev

Debug Levels

By default, firo-client will log to userData/combined.log in the application data directory at debug level. This can be changed with the environment variable LOG.

REPL

If the client is started with the FIRO_CLIENT_REPL environment variable set to true, the client will not start and instead Chrome Dev Tools will be launched with the global variable Firod set to the Firod class from src/daemon/firod.ts. It can then be used to interact with the daemon as documented in that file. The daemon will NOT be stopped automatically on exit.

Forcing Reinitialization

If you want to reinitialize the client and don't want to use the resetclientconfig command in the debug console, you can set the enviornment variable IS_INITIALIZED to 0. If this is set, Firo Client will show the setup screen on startup regardless of whether it has already been initialized.

Setting Network from the Command Line

You can set NETWORK and BLOCKCHAIN_LOCATION environment variables to change the blockchain location temporarily. NETWORK can be main, regtest-ql, or test; BLOCKCHAIN_LOCATION should be the fully qualified path of the blockchain excluding the regtest-ql or testnet3 parts.

Connecting to an Existing Firod

If you want to allow the client to connect to an existing instance of firod, you can set the environment variable ALLOW_EXISTING_FIROD to 1. Note that the existing firod instance will be shut down when the client exits.

Firod Connection Timeout

By default, if firod fails to start within 30 seconds, Firo Client will timeout. This value can be changed with by setting the environment variable FIROD_CONNECTION_TIMEOUT to the number of seconds you want to change the timeout to.

Getting Assistance

If you need assistance with this project, you can join the official Firo Telegram group @firoproject