ElementsProject/lightning
GitHub: ElementsProject/lightning
Core Lightning 是一个用 C 语言编写的 Bitcoin Lightning Network 协议实现,提供高性能、符合规范的闪电网络节点运行与管理能力。
Stars: 3074 | Forks: 1000
# Core Lightning (CLN):一个符合规范的 C 语言 Lightning Network 实现
Core Lightning(原名 c-lightning)是一个轻量级、高度可定制且[符合标准][std]的 Lightning Network 协议实现。
* [入门指南](#getting-started)
* [安装](#installation)
* [启动 lightningd](#starting-lightningd)
* [使用 JSON-RPC 接口](#using-the-json-rpc-interface)
* [新 Lightning 节点的维护与管理](#care-and-feeding-of-your-new-lightning-node)
* [开启通道](#opening-a-channel)
* [发送和接收支付](#sending-and-receiving-payments)
* [配置文件](#configuration-file)
* [更多信息](#further-information)
* [常见问题解答](doc/FAQ.md)
* [修剪](#pruning)
* [HD 钱包加密](#hd-wallet-encryption)
* [开发者](#developers)
* [文档](https://docs.corelightning.org/docs)
## 项目状态
[][actions]
[][prs]
[][docs]
[][telegram]
[][discord]
[][IRC]
自 2018 年初随着 [Blockstream Store][blockstream-store-blog] 的上线,该实现已在 Bitcoin 主网上投入生产使用。
我们建议您先在 `testnet`(`testnet4` 或 `regtest`)上进行实验入门,但该实现已被认为是稳定的,可以安全地在主网上使用。
## 入门指南
Core Lightning 仅支持在 Linux 和 macOS 上运行,并且需要在本地(或远程)运行一个 `bitcoind`(版本 25.0 或以上),该节点必须与您所运行的网络完全同步,并转发交易(即设置 `blocksonly=0`)。
修剪(`bitcoin.conf` 中的 `prune=n` 选项)已得到部分支持,详见[此处](#pruning)。
### 安装
共有 3 种支持的安装方式:
- 从 GitHub 上的[发布页面][releases]安装预编译的二进制文件。
- 使用 Docker Hub 上[提供的 Docker 镜像][dockerhub]之一。
- 按照[安装文档](doc/getting-started/getting-started/installation.md)中的说明自行编译源代码。
### 启动 `lightningd`
#### Regtest(本地,快速启动)选项
如果您想体验 `lightningd`,有一个脚本可以用来设置
一个包含两个本地 lightning 节点的 `bitcoind` regtest 测试网络,
它提供了一个便捷的 `start_ln` 辅助工具。有关如何使用它的详细信息,
请参阅 `startup_regtest.sh` 文件顶部的说明。
```
. contrib/startup_regtest.sh
```
#### 主网选项
如果要使用真实的 Bitcoin 进行测试,您需要运行一个本地的 `bitcoind` 节点:
```
bitcoind -daemon
```
请等待 `bitcoind` 与网络完成同步。
请确保您的 `~/.bitcoin/bitcoin.conf` 中没有设置 `walletbroadcast=0`,否则您可能会遇到麻烦。
请注意,如果管理不当,在修剪过的节点上运行 `lightningd` 可能会导致一些问题,更多信息请参阅[下文](#pruning)。
您可以使用以下命令启动 `lightningd`:
```
lightningd --network=bitcoin --log-level=debug
```
这会在您的主目录中创建一个 `.lightning/` 子目录:有关更多运行时选项,请参阅 `man -l doc/lightningd.8`(或 https://docs.corelightning.org/docs)。
### 使用 JSON-RPC 接口
Core Lightning 通过 Unix Domain socket 公开 [JSON-RPC 2.0][jsonrpcspec] 接口;可以使用 `lightning-cli` 工具来访问它,此外还有一个 [python 客户端库](contrib/pyln-client)。
您可以使用 `lightning-cli help` 打印 RPC 方法列表;`lightning-cli help `
将提供关于该命令的具体信息。
常用命令:
* [newaddr](https://docs.corelightning.org/reference/newaddr):获取一个 Bitcoin 地址,以便将资金存入您的 lightning 节点。
* [listfunds](https://docs.corelightning.org/reference/listfunds):查看您的资金去向。
* [connect](https://docs.corelightning.org/reference/connect):连接到另一个 lightning 节点。
* [fundchannel](https://docs.corelightning.org/reference/fundchannel):向另一个已连接的节点创建通道。
* [invoice](https://docs.corelightning.org/reference/invoice):创建一个发票以供其他节点向您付款。
* [pay](https://docs.corelightning.org/reference/pay):支付他人的发票。
* [plugin](https://docs.corelightning.org/reference/plugin):用于控制扩展的命令。
### 新 Lightning 节点的维护与管理
首次启动后,有一个名为
`contrib/bootstrap-node.sh` 的脚本,它将把您连接到
lightning 网络上的其他节点。
此外,还有许多可用于 Core Lightning 的插件可以添加
额外功能:特别是这里有一个合集:https://github.com/lightningd/plugins
为了获得更安全的体验,您可以加密 HD 钱包种子:
请参阅 [HD 钱包加密](#hd-wallet-encryption)。
您还可以在 Discord [core-lightning][discord] 上与其他用户聊天;
我们始终乐于帮助您快速入门!
### 开启通道
首先,您需要向 `lightningd` 转入一些资金,以便它能够
开启通道:
```
# 返回一个地址
lightning-cli newaddr
```
一旦交易被确认,`lightningd` 就会记录这些资金。
或者,如果您的资金来源支持,您可以生成一个 taproot 地址:
```
# 返回一个 taproot address
lightning-cli newaddr p2tr
```
通过以下命令确认 `lightningd` 已收到资金:
```
# 返回一个 on-chain funds 数组。
lightning-cli listfunds
```
一旦 `lightningd` 有了资金,我们就可以连接到一个节点并开启通道。
假设**远程**节点在 ``(以及可选的 ``,如果不是 9735 的话)
接受连接,并且其节点 ID 为 ``:
```
lightning-cli connect []
lightning-cli fundchannel
```
这会开启一个连接,并在该连接之上开启一个通道。
资金交易需要 3 次确认才能使通道可用,需要 6 次确认才能对外发布供他人使用。
您可以使用 `lightning-cli listpeers` 检查通道的状态,在 3 次确认(testnet 上为 1 次)后,它应该显示 `state` 为 `CHANNELD_NORMAL`;在 6 次确认之后,您可以使用 `lightning-cli listchannels` 来验证 `public` 字段现在是否为 `true`。
### 发送和接收支付
Lightning 中的支付是基于发票的。
接收方创建一个发票,其中包含预期的 ``(单位为 millisatoshi,或者设为 `"any"` 表示捐赠),一个唯一的 `
标签:加密货币节点, 区块链, 客户端加密, 支付网络, 比特币, 请求拦截, 调试插件, 逆向工具, 闪电网络