Iron Fish is a Layer 1 blockchain that provides the strongest privacy guarantees on every single transaction. Leveraging zero-knowledge proofs (zk-SNARKs), and the highest industry standards for encryption.
The following steps should only be used to install if you are planning on contributing to the Iron Fish codebase. Otherwise, we strongly recommend using the installation methods here: https://ironfish.network/use/get-started/installation
Install Node.js 20 LTS (or greater).
Install Rust.
Install Yarn.
Windows:
If the above steps didn't work for you, please visit Microsoft's Node.js Guidelines for Windows for additional tips.
Run yarn install
from the root directory to install packages.
If yarn install
fails with an error that includes "Failed to build cmake", you may need to first install cmake. For example, on macOS:
brew install cmake
, you'll need cmake version 3.15 or higher.If yarn install
fails with an error that includes "Could NOT find OpenSSL", you may need to first install OpenSSL and add an environment variable. For example, on macOS:
brew install openssl
export OPENSSL_ROOT_DIR=`brew --prefix openssl`
yarn install
again.If yarn install
fails with an error that includes "Error: not found: make", "make: cc: Command not found", or "make: g++: Command not found", you may need to install a C/C++ compiler toolchain.
apt install build-essential
sudo yum groupinstall "Development Tools"
If yarn install
fails with an error that includes "Error: Could not find any Python installation to use", you may need to install Python3 (required by node-gyp). on macOS:
brew install python
Once your environment is set up - you can run the CLI by following these directions.
Note: Running tests requires Node.js 20 or greater.
yarn test
at the root of the repositoryyarn test:slow
in ./ironfish/ to run slow testsyarn test:coverage
at the root of the repository for tests and coverageyarn test
at the root of the projectyarn test:watch
in ./ironfish or ./ironfish-cli if you want the tests to run on changeyarn test:coverage:html
if you want to export the coverage in an easy-to-use format (open the index.html file in the coverage folder of the project)cargo benchmark
is a cargo alias, defined in ./.cargo/config.toml
cargo benchmark
to run all benchmark testscargo benchmark -- simple
to run only benchmarks containing the text 'simple' in the namecd ironfish
yarn test:perf
ironfish-rust
as a native NodeJS addon.If you want to contribute code, you must first read our contributing guidelines or risk having your pull request closed.
The Iron Fish core protocol implementation in this repo went through a security audit by Inversed Tech, finalized on June 1, 2023. The full audit, including a summary of findings, outline of resources, and a detailed breakdown, can be found here. See our blog post on it for more details.
This code base and any contributions will be under the MPL-2.0 Software License.