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, 数字资产, 网络安全, 网络安全, 请求拦截, 金融科技, 隐私保护, 隐私保护, 隐私币, 零知识证明