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.
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.
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. (If this flag is not passed correctly during the buld process, the client will timeout on bootup with an unhelpful
error message.)
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.
To update firod
, simply run git pull
in the firod
directory, and run make
.
To install dependencies for the client itself, run
npm install
npm run rebuild-zeromq
To run the development version of firo-client, simply run
npm run dev
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
.
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.
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.
You can set NETWORK
and BLOCKCHAIN_LOCATION
environment variables to change the blockchain location temporarily.
NETWORK
can be main
, regtest
, or test
; BLOCKCHAIN_LOCATION
should be the fully qualified path of the
blockchain excluding the regtest
or testnet3
parts.
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.
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.
If you need assistance with this project, you can join the official Firo Telegram group @firoproject