From d467ccbc44ffc8325ef73acec2003fb413c588ba Mon Sep 17 00:00:00 2001 From: ErC Date: Sat, 3 Jun 2023 14:15:53 +0200 Subject: [PATCH] README: make format conistent and add more info (#1252) --- README.md | 153 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 91 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index af72bb59fc..60eabda205 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -Firo -=============== +# Firo [![Financial Contributors on Open Collective](https://opencollective.com/firo/all/badge.svg?label=financial+contributors)](https://opencollective.com/firo) [![latest-release](https://img.shields.io/github/release/firoorg/firo)](https://github.com/firoorg/firo/releases) [![GitHub last-release](https://img.shields.io/github/release-date/firoorg/firo)](https://github.com/firoorg/firo/releases) @@ -10,9 +9,6 @@ Firo [![Total alerts](https://img.shields.io/lgtm/alerts/g/firoorg/firo.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/firoorg/firo/alerts/) [![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/firoorg/firo.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/firoorg/firo/context:cpp) -What is Firo? --------------- - [Firo](https://firo.org) formerly known as Zcoin, is a privacy focused cryptocurrency that utilizes zero-knowledge proofs which allows users to destroy coins and then redeem them later for brand new ones with no transaction history. Our research created the [Lelantus privacy protocol](https://eprint.iacr.org/2019/373) which supports high anonymity sets without requiring trusted setup and relying only on standard cryptographic assumptions. The Lelantus cryptographic library was audited by [Trail of Bits](https://github.com/trailofbits/publications/blob/master/reviews/zcoin-lelantus-summary.pdf) and funded by Firo's CCS. Lelantus' cryptography was also audited by [ABDK Consulting](https://www.abdk.consulting/). @@ -21,19 +17,38 @@ Firo also utilises [Dandelion++](https://arxiv.org/abs/1805.11060) to obscure th Firo uses FiroPoW (a ProgPoW variant) as its Proof-of-Work GPU focused algorithm which is FPGA/ASIC resistant. -How Firo’s Privacy Technology Compares to the Competition --------------- +# How Firo’s Privacy Technology Compares to the Competition + ![A comparison chart of Firo’s solutions with other leading privacy technologies can be found below](https://firo.org/guide/assets/privacy-technology-comparison/comparison-table-firo-updated.png) read more https://firo.org/guide/privacy-technology-comparison.html -Running with Docker -=================== +# Running with Docker If you are already familiar with Docker, then running Firo with Docker might be the the easier method for you. To run Firo using this method, first install [Docker](https://store.docker.com/search?type=edition&offering=community). After this you may continue with the following instructions. Please note that we currently don't support the GUI when running with Docker. Therefore, you can only use RPC (via HTTP or the `firo-cli` utility) to interact with Firo via this method. +## Local Dockerfile + +This repository contains a Dockerfile that you can build and run locally. + +To build it, run from the root of this repository: + +```sh +docker build . -t firo-local +``` + +After the process is completed, run a container based on the `firo-local` image you built: + +```sh +docker run -d --name firod -v "${HOME}/.firo:/home/firod/.firo" firo-local +``` + +This will start a detached docker container, which you can interact with using `docker exec`. See the section "Interact with the container" for a list of useful commands you can use to manage your node. Make sure to change `firod` with `firo-local`, if you have built the local Docker image. + +## Docker image on DokerHub + Pull our latest official Docker image: ```sh @@ -46,6 +61,8 @@ Start Firo daemon: docker run -d --name firod -v "${HOME}/.firo:/home/firod/.firo" firoorg/firod ``` +## Interact with the container + View current block count (this might take a while since the daemon needs to find other nodes and download blocks first): ```sh @@ -76,8 +93,7 @@ Start daemon again: docker start firod ``` -Linux Build Instructions and Notes -================================== +# Linux Build Instructions and Notes Firo contains build scripts for its dependencies to ensure all component versions are compatible. For additional options such as cross compilation, read the [depends instructions](depends/README.md) @@ -86,94 +102,107 @@ Alternatively, you can build dependencies manually. See the full [unix build ins Bootstrappable builds can [be achieved with Guix.](contrib/guix/README.md) -Development Dependencies (compiler and build tools) ----------------------- +## Development Dependencies (compiler and build tools) - Debian/Ubuntu/Mint (minimum Ubuntu 18.04): - ``` - sudo apt-get update - sudo apt-get install git curl python build-essential libtool automake pkg-config cmake - # Also needed for GUI wallet only: - sudo apt-get install qttools5-dev qttools5-dev-tools libxcb-xkb-dev bison - ``` +```sh +sudo apt-get update +sudo apt-get install git curl python build-essential libtool automake pkg-config cmake +# Also needed for GUI wallet only: +sudo apt-get install qttools5-dev qttools5-dev-tools libxcb-xkb-dev bison +``` - Redhat/Fedora: - ``` - sudo dnf update - sudo dnf install bzip2 perl-lib perl-FindBin gcc-c++ libtool make autoconf automake cmake patch which - # Also needed for GUI wallet only: - sudo dnf install qt5-qttools-devel qt5-qtbase-devel xz bison - sudo ln /usr/bin/bison /usr/bin/yacc - ``` +```sh +sudo dnf update +sudo dnf install bzip2 perl-lib perl-FindBin gcc-c++ libtool make autoconf automake cmake patch which +# Also needed for GUI wallet only: +sudo dnf install qt5-qttools-devel qt5-qtbase-devel xz bison +sudo ln /usr/bin/bison /usr/bin/yacc +``` - Arch: - ``` - sudo pacman -Sy - sudo pacman -S git base-devel python cmake - ``` +```sh +sudo pacman -Sy +sudo pacman -S git base-devel python cmake +``` -Build Firo ----------------------- +## Build Firo 1. Download the source: - git clone https://github.com/firoorg/firo - cd firo +```sh +git clone https://github.com/firoorg/firo +cd firo +``` 2. Build dependencies and firo: - Headless (command-line only for servers etc.): +Headless (command-line only for servers etc.): - cd depends - NO_QT=true make -j`nproc` - cd .. - ./autogen.sh - ./configure --prefix=`pwd`/depends/`depends/config.guess` --without-gui - make -j`nproc` +```sh +cd depends +NO_QT=true make -j`nproc` +cd .. +./autogen.sh +./configure --prefix=`pwd`/depends/`depends/config.guess` --without-gui +make -j`nproc` +``` - Or with GUI wallet as well: +Or with GUI wallet as well: - cd depends - make -j`nproc` - cd .. - ./autogen.sh - ./configure --prefix=`pwd`/depends/`depends/config.guess` - make -j`nproc` +```sh +cd depends +make -j`nproc` +cd .. +./autogen.sh +./configure --prefix=`pwd`/depends/`depends/config.guess` +make -j`nproc` +``` 3. *(optional)* It is recommended to build and run the unit tests: - ./configure --prefix=`pwd`/depends/`depends/config.guess` --enable-tests - make check +```sh +./configure --prefix=`pwd`/depends/`depends/config.guess` --enable-tests +make check +``` + +If the build succeeded, two binaries will be generated in `/src`: `firod` and `firo-cli`. If you chose to build the GUI, `firo-qt` will be also generated in the `qt` folder. + +## macOS Build Instructions and Notes + +See [doc/build-macos.md](doc/build-macos.md) for instructions on building on macOS. + +*Note: these instructions are inherited from Bitcoin and might not work as expected* +## Windows (64/32 bit) Build Instructions and Notes -macOS Build Instructions and Notes -===================================== -See (doc/build-macos.md) for instructions on building on macOS. +See [doc/build-windows.md](doc/build-windows.md) for instructions on building on Windows 64/32 bit. +*Note: these instructions are inherited from Bitcoin and might not work as expected* +# Run Firo -Windows (64/32 bit) Build Instructions and Notes -===================================== -See (doc/build-windows.md) for instructions on building on Windows 64/32 bit. +Now that you have your self-built or precompiled binaries, it's time to run Firo! Depending by your skill level and/or setup, you might want to use the command line tool or the graphic user interface. If you have problems or need support, [contact the community](https://firo.org/community/social/). -## Contributors +# Contributors -### Code Contributors +## Code Contributors -This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)]. +This project exists thanks to all the people who contribute. Would you like to help Firo and contribute? See the [[CONTRIBUTING](CONTRIBUTING.md)] file. -### Financial Contributors +## Financial Contributors Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/firo/contribute)] -#### Individuals +## Individuals -#### Organizations +## Organizations Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/firo/contribute)]