firoorg/firo

GitHub: firoorg/firo

Firo 是基于 Lelantus Spark 协议的隐私加密货币,提供无需可信设置的高匿名性交易能力。

Stars: 781 | Forks: 368

# Firo [Firo](https://firo.org) 前身为 Zcoin,是一种注重隐私的加密货币,它利用 [Lelantus Spark 协议](https://eprint.iacr.org/2021/1173),在不需要可信设置且依赖标准密码学假设的情况下支持高匿名集。 Lelantus Spark 密码学库和实现已通过 [HashCloak](https://firo.org/about/research/papers/lelantus_spark_code_audit_report.pdf) 的审计。Lelantus Spark 密码学论文也经过了 [HashCloak](https://firo.org/about/research/papers/Lelantus_Spark_Audit_Report.pdf) 和 [Daniel (Linfeng) Zhao](https://firo.org/about/research/papers/LinfengSparkAudit.pdf) 的两次独立审计。 Firo 还利用 [Dandelion++](https://arxiv.org/abs/1805.11060) 来混淆交易的原始 IP,且无需依赖任何外部服务(如 Tor/i2P)。 Firo 采用混合 PoW 和 LLMQ Chainlocks 系统,结合了公平的供应分配、针对 51% 攻击的保护以及快速的区块和交易终局性。FiroPOW(ProgPOW 的一种变体)被用作其工作量证明 (Proof-of-Work) 算法,该算法针对 GPU 并具有抗 FPGA/ASIC 的特性。 # 使用 Docker 运行 如果您已经熟悉 Docker,那么使用 Docker 运行 Firo 可能是更简单的方法。要使用此方法运行 Firo,请先安装 [Docker](https://store.docker.com/search?type=edition&offering=community)。之后您可以 继续按照以下说明操作。 请注意,目前在使用 Docker 运行时我们不支持 GUI。因此,您只能使用 RPC(通过 HTTP 或 `firo-cli` 工具)通过此方法与 Firo 进行交互。 ## 本地 Dockerfile 本代码库包含一个您可以本地构建和运行的 Dockerfile。 要构建它,请从本代码库的根目录运行: ``` docker build . -t firo-local ``` 过程完成后,基于您构建的 `firo-local` 镜像运行一个容器: ``` docker run -d --name firod -v "${HOME}/.firo:/home/firod/.firo" firo-local ``` 这将启动一个分离的 docker 容器,您可以使用 `docker exec` 与其交互。有关可用于管理节点的有用命令列表,请参阅“与容器交互”部分。如果您构建了本地 Docker 镜像,请确保将 `firod` 更改为 `firo-local`。 ## DockerHub 上的 Docker 镜像 如果主目录中尚不存在 `.firo` 文件夹,请创建一个(这是在 [#1241](https://github.com/firoorg/firo/issues/1241) 解决之前的临时变通方案): ``` mkdir -p ${HOME}/.firo ``` 拉取我们的[最新官方 Docker 镜像](https://hub.docker.com/r/firoorg/firod): ``` docker pull firoorg/firod ``` 启动 Firo daemon: ``` docker run -d --name firod -v "${HOME}/.firo:/home/firod/.firo" firoorg/firod ``` ## 与容器交互 查看当前区块数量(这可能需要一些时间,因为 daemon 需要先查找其他节点并下载区块): ``` docker exec firod firo-cli getblockcount ``` 查看已连接的节点: ``` docker exec firod firo-cli getpeerinfo ``` 停止 daemon: ``` docker stop firod ``` 备份钱包: ``` docker cp firod:/home/firod/.firo/wallet.dat . ``` 再次启动 daemon: ``` docker start firod ``` # Linux 构建说明和备注 Firo 包含其依赖项的构建脚本,以确保所有组件版本兼容。有关其他选项 (如交叉编译),请阅读 [depends 说明](depends/README.md) 或者,您可以手动构建依赖项。请参阅完整的 [unix 构建说明](doc/build-unix.md)。 可引导构建可以[通过 Guix 实现。](contrib/guix/README.md) ## 开发依赖项(编译器和构建工具) - Debian/Ubuntu/Mint(最低 Ubuntu 18.04): ``` sudo apt-get update sudo apt-get install python git curl build-essential cmake pkg-config # 仅 GUI wallet 需要: sudo apt-get install qttools5-dev qttools5-dev-tools libxcb-xkb-dev bison ``` 如果您使用更高版本的 Ubuntu,可能需要将 `python` 替换为 `python3`。 - Redhat/Fedora: ``` sudo dnf update sudo dnf install bzip2 perl-lib perl-FindBin gcc-c++ make cmake patch which # 仅 GUI wallet 需要: sudo dnf install qt6-qttools-devel qt6-qtbase-devel xz bison sudo ln /usr/bin/bison /usr/bin/yacc ``` - Arch: ``` sudo pacman -Sy sudo pacman -S git base-devel python cmake ``` ## 构建 Firo ### 前置条件(特定于 macOS) 确保按照 [macOS 构建指南](https://github.com/firoorg/firo/blob/master/doc/build-macos.md) 安装 [Homebrew](https://brew.sh/)。 1. 下载源代码: ``` git clone https://github.com/firoorg/firo cd firo ``` 2. 构建依赖项: ``` cd depends make -j$(nproc) cd .. ``` 3. 配置并构建 Firo: 无头模式(仅命令行,适用于服务器等): ``` cd depends NO_QT=true make -j`nproc` cd .. cmake -B build -DCMAKE_TOOLCHAIN_FILE=$(pwd)/depends/$(depends/config.guess)/toolchain.cmake \ -DBUILD_GUI=OFF -DBUILD_CLI=ON cd build && make -j$(nproc) ``` 或者同时包含 GUI 钱包: ``` cmake -B build -DCMAKE_TOOLCHAIN_FILE=$(pwd)/depends/$(depends/config.guess)/toolchain.cmake \ -DBUILD_GUI=ON -DBUILD_CLI=ON cd build && make -j$(nproc) ``` 4. *(可选)* 建议构建并运行单元测试: ``` cmake -B build -DCMAKE_TOOLCHAIN_FILE=$(pwd)/depends/$(depends/config.guess)/toolchain.cmake \ -DBUILD_TESTS=ON -DBUILD_GUI=OFF -DBUILD_CLI=ON cd build && make -j$(nproc) make test ``` 如果构建成功,二进制文件将生成在 `build/bin/` 中:`firod`、`firo-cli`,以及如果启用了 GUI,还有 `firo-qt`。 #### 3. 运行 GUI 客户端 ``` ./bin/firo-qt ``` ### CMake 选项参考 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `BUILD_DAEMON` | 构建 `firod` 可执行文件 | `ON` | | `BUILD_GUI` | 构建 `firo-qt` GUI 客户端 | `ON` | | `BUILD_CLI` | 构建 `firo-tx` 和其他命令行工具 | `ON` | | `ENABLE_WALLET` | 启用钱包功能 | `ON` | | `BUILD_TESTS` | 构建测试套件 | `OFF` | | `BUILD_TX` | 构建 `firo-tx` 交易工具 | `BUILD_CLI` 的子集 | | `ENABLE_CRASH_HOOKS` | 启用崩溃报告/堆栈跟踪 | `OFF` | | `WITH_ZMQ` | 启用 ZeroMQ 通知 | `ON` | ### 支持的交叉编译目标 要为其他平台构建,请在构建依赖项时指定 `HOST` 变量: | 主机目标 | 平台 | |--------------------------|---------------------------| | `x86_64-pc-linux-gnu` | Linux 64 位 (默认) | | `x86_64-w64-mingw32` | Windows 64 位 | | `aarch64-apple-darwin` | macOS | | `arm-linux-gnueabihf` | Linux ARM 32 位 | | `aarch64-linux-gnu` | Linux ARM 64 位 | #### 使用示例: 1. 构建依赖项: ``` # Windows 64-bit 构建依赖项 cd depends make HOST=x86_64-w64-mingw32 -j$(nproc) cd .. ``` 2. 配置并构建 Firo: ``` cmake -B build -DCMAKE_TOOLCHAIN_FILE=$(pwd)/depends/x86_64-w64-mingw32/toolchain.cmake \ -DBUILD_TESTS=ON -DBUILD_CLI=ON -DBUILD_GUI=ON \ cd build && make -j$(nproc) ``` ### 备注 * `CMAKE_TOOLCHAIN_FILE` 中的工具链路径必须与您的目标架构匹配。 * 如果启用了 `BUILD_CLI=ON`,则 `BUILD_TX` 会自动启用。 ## macOS 构建说明和备注 有关在 macOS 上构建的说明,请参阅 [doc/build-macos.md](doc/build-macos.md)。 *注意:这些说明继承自 Bitcoin,可能无法按预期工作* ## Windows (64/32 位) 构建说明和备注 有关在 Windows 64/32 位上构建的说明,请参阅 [doc/build-windows.md](doc/build-windows.md)。 *注意:这些说明继承自 Bitcoin,可能无法按预期工作* # 运行 Firo 现在您已经有了自构建或预编译的二进制文件,是时候运行 Firo 了!根据您的技能水平和/或设置,您可能希望使用命令行工具或图形用户界面。如果您遇到问题或需要支持,请[联系社区](https://firo.org/community/social/)。 # 安装 Firo 使用 `CMake` 构建后,使用 `make package` 生成 `.sh` 文件。运行 `make package` 后,您的构建目录中应该有 `./FiroCore-VERSION_MAJOR.VERSION_MINOR.VERSION_REVISION-Linux.sh`。 例如,您可以使用以下命令将 `Firo` 安装到您的 `/usr/bin`: ``` ./FiroCore-0.14.14-Linux.sh --prefix=/usr/bin --exclude-subdir ``` ## 个人 ## 组织 用您的组织支持这个项目。您的徽标将显示在此处,并带有指向您网站的链接。[[贡献](https://opencollective.com/firo/contribute)]
标签:Bash脚本, Chainlocks, Dandelion++, Docker, FiroPOW, IP混淆, Layer 1, Lelantus Spark, Zcoin, 加密货币, 区块链, 匿名性, 去中心化, 安全防御评估, 密码学, 工作量证明, 手动系统调用, 抗ASIC, 数字资产, 网络安全, 网络安全, 请求拦截, 金融科技, 隐私保护, 隐私保护, 隐私币, 零知识证明