FinalisCore/finalis-core
GitHub: FinalisCore/finalis-core
一个基于 BFT 共识的确定性终态区块链核心协议栈,提供从全节点到钱包的完整组件,以无分叉选择的严格终态模型消除链重组风险。
Stars: 2 | Forks: 0
# Finalis Core
`finalis-core` 是一个终态 BFT 区块链,其中验证者生命周期、原生操作员委员会组建、自适应检查点推导以及未来委员会资格,均确定性地从已终结的历史状态中推导得出。
当前主网身份:
- `network_name = mainnet`
- `network_id = fe561911730912cced1e83bc273fab13`
- `genesis_hash = eaae655a1eec3c876bd2e66d899fc8da93d205a5df36a2665f736387aa3cb78a`
- `magic = 0x499602D2`
在当前的代码库中,它包含:
- 一个 UTXO 账本
- 通过 `Tx`、`TxV2` 和 `AnyTx` 处理版本化交易
- 通过 `UtxoSetV2` 实现版本化 UTXO 状态
- 一个验证者委员会
- 法定人数终态
- 确定性的基于 epoch 边界的检查点推导
- 终态读取接口
实时运行时仅处理:
`height = finalized_height + 1`
节点运行时中没有实时的最长链分叉选择路径。
在经过刻意的创世重置之后,旧的链数据库、旧的端点假设以及废弃链的产物都不能作为此当前网络的合法输入。
## 仓库组件
- `finalis-node`
- 全节点
- 验证
- 终态执行
- 委员会 / 终态运行时
- `finalis-lightserver`
- 终态 JSON-RPC 服务
- `finalis-explorer`
- 构建于 lightserver 之上的 HTTP UI 和 REST 层
- 本地优先的缓存主页 / tx / 转换视图,带有新鲜度和来源标记
- `finalis-wallet`
- Qt 桌面钱包
- 本地优先的缓存运行时/视图状态
- 用于支持机密子集的机密账户、接收请求和导入代币 UX
本仓库还包含:
- [formal/](formal/) 下的正式 TLA+ 检查点 / 可用性模型
- [scripts/protocol_attack_sim.py](scripts/protocol_attack_sim.py) 下的对抗性模拟
- [tests/fixtures/](tests/fixtures) 下的 C++ 固定导出和 Python 一致性测试
## 协议事实
- 区块通过 `floor(2N/3) + 1` 个有效签名终结
- 投票和法定人数证书绑定至 `(height, round, block_id)`
- 某一高度的委员会来自于该高度所在 epoch 的已终结检查点
- 验证者生命周期变更仅来自已终结历史
- 未来的检查点资格由已终结的预期可用性进行门控
- 检查点目标委员会大小、检查点最低合格阈值以及检查点最低质押,均确定性地从已终结的合格操作员深度中推导得出
- Ticket PoW 在委员会选择中是有界的且处于次要地位
## 读取接口
`finalis-lightserver` 暴露了终态 RPC 方法,例如:
- `get_status`
- `get_tx_status`
- `get_tx`
- `validate_address`
- `get_utxos`
- `get_history_page`
- `broadcast_tx`
`finalis-explorer` 暴露了轻量级终态 HTTP 路由,例如:
- `/api/status`
- `/api/committee`
- `/api/tx/
`
- `/api/transition/`
- `/api/address/`
`broadcast_tx` 是一个中继提交接口。最终的可见性依然来自于终态查找。
当前代码库还通过 `TxV2` 支持有界的机密交易子集:
- 透明 -> 机密
- 机密 -> 透明
公开读取接口保持仅限终态,并且不会像透明字段那样暴露机密输出的金额或接收者。
## 地址和密钥
当前的密钥 / 地址模型为:
- Ed25519 私钥
- Ed25519 32字节公钥
- P2PKH 地址
- `HASH160(pubkey)` 地址载荷
- `sc` / `tsc` 基于 HRP 的地址编码
请参阅 [docs/ADDRESSES.md](docs/ADDRESSES.md)。
## 经济学
当前代码实现了:
- 确定性奖励结算
- `src/common/network.cpp` 中基于高度门控的经济学计划
- 自适应检查点目标 / 最低合格 / 最低质押推导
- `7,000,000 FLS` 的精确硬顶
- 确定性的 `12` 年排放计划,每年 `20%` 衰减
- 排放期间 `10%` 的储备累积
- 达到硬顶后零新增发行
- 硬顶后 epoch 费用池,并带有确定性的储备补贴支持
## 运行节点
## 快速开始(非开发者)
### Windows
1. 从发布页面下载最新的 Windows 安装程序。
2. 安装并启动 `finalis-node`(如果您需要钱包/浏览器访问权限,还需启动 `finalis-lightserver`)。
3. 使用以下命令验证身份:
curl -s http://127.0.0.1:19444/rpc -d '{"jsonrpc":"2.0","id":1,"method":"get_status","params":{}}'
确认 `network_id`、`magic` 和 `genesis_hash` 与上述数值一致。
### Linux
如果有可用的 Linux 二进制发布版本,请下载并运行。否则,请使用
下面的构建步骤(需要 C++ 工具链)。
对于 Windows 构建/发布,请使用:
- [finalis-core 发布版](https://github.com/FinalisCore/finalis-core/releases)
```
apt install -y build-essential cmake ninja-build pkg-config libssl-dev \
qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \
libsodium-dev librocksdb-dev curl jq
```
```
git clone https://github.com/FinalisCore/finalis-core.git
```
```
cd finalis-core
```
构建:
```
cmake -S . -B build -G Ninja && cmake --build build -j
```
依赖说明:
- 如果缺少 `third_party/secp256k1-zkp`,CMake 将自动获取它(需要网络)。
- 要强制进行离线构建,请禁用自动获取并提供供应商树:
`cmake -S . -B build -G Ninja -DFINALIS_AUTO_FETCH_DEPS=OFF`
`git submodule update --init --recursive`
## 运行
在主网上首次启动之前:
- 清除旧的链数据库
- 确保您的本地验证者密钥确实存在于目标创世验证者集合中
- 确保您的二进制文件嵌入了与启动时使用的相同的规范 `genesis.bin`
```
./scripts/start.sh
```
## 快速同步命令:
```
SYNC_TURBO_MODE=extreme ./scripts/start.sh
```
当前主网配置的默认端口:
- P2P: `19440`
- lightserver: `19444`
在依赖公共基础设施之前,请务必使用 `get_status` 验证实时端点身份。
## 寻求社区帮助
如果您能制作清晰、分步的安装和启动视频(Linux 和/或 Windows),
请公开发布并分享链接。我可以赞助最佳教程并提供足够的 FLS,
以涵盖验证者注册的要求。
## 测试
```
ctest --test-dir build --output-on-failure
```
## 文档
- 通用文档:[docs/](docs/)
- 代码库地图:[docs/CODEBASE_MAP.md](docs/CODEBASE_MAP.md)
- 架构指南:[docs/ARCHITECTURE_ORIENTATION.md](docs/ARCHITECTURE_ORIENTATION.md)
- 物理设计指南:[docs/PHYSICAL_DESIGN_GUIDELINES.md](docs/PHYSICAL_DESIGN_GUIDELINES.md)
- 许可证政策:[docs/LICENSE_POLICY.md](docs/LICENSE_POLICY.md)
- 贡献指南:[CONTRIBUTING.md](CONTRIBUTING.md)
- 交易所集成:[docs/EXCHANGE_INTEGRATION.md](docs/EXCHANGE_INTEGRATION.md)
- 实时协议:[docs/LIVE_PROTOCOL.md](docs/LIVE_PROTOCOL.md)
- 共识概览:[docs/CONSENSUS.md](docs/CONSENSUS.md)
- 机密 UTXO 规范:[docs/spec/CONFIDENTIAL_UTXO_SPEC.md](docs/spec/CONFIDENTIAL_UTXO_SPEC.md)
- 检查点推导规范:[docs/spec/CHECKPOINT_DERIVATION_SPEC.md](docs/spec/CHECKPOINT_DERIVATION_SPEC.md)
- 可用性完整性规范:[docs/spec/AVAILABILITY_STATE_COMPLETENESS.md](docs/spec/AVAILABILITY_STATE_COMPLETENESS.md)
## 许可证
[LICENSE](LICENSE)标签:Bash脚本, BFT共识, C++, JSON-RPC, Python, Qt桌面钱包, REST API, TLA+, UTXO模型, Web3, 主网, 交易处理, 便携式工具, 全节点, 分布式账本, 加密货币, 加密钱包, 区块浏览器, 区块链, 区块链核心栈, 安全测试工具, 形式化验证, 拜占庭容错, 数据擦除, 无后门, 最终确定性, 本地优先, 状态检查点, 确定性状态, 节点软件, 轻节点服务, 逆向工具, 零知识证明, 验证器委员会