闪电网络 - 配置 Eclair

  • ACINQ_
  • 发布于 2022-12-01 12:25
  • 阅读 13

本文档介绍了 Eclair 闪电网络节点的配置方法,包括配置文件的位置和修改、常用配置项的说明、如何自定义 features、如何自定义 feerate tolerance 以及一些配置示例,例如基本配置、regtest 模式、公有节点等。

配置 Eclair



配置文件

eclair 的配置文件名为 eclair.conf。它位于数据目录中,默认情况下为 ~/.eclair(在 Windows 上为 C:\Users\YOUR_NAME\.eclair)。请注意,eclair 本身不会创建配置文件:如果你想更改 eclair 的配置,你需要先实际创建配置文件。编码必须是 UTF-8。

## 这是默认的数据目录,它将在 eclair 首次启动时创建
mkdir ~/.eclair 
vi ~/.eclair/eclair.conf

选项设置为键值对,并遵循 HOCON 语法。 值不需要用引号括起来,除非它们包含特殊字符。

更改数据目录

你可以使用 eclair.datadir 参数更改数据目录:

eclair-node.sh -Declair.datadir="/path/to/custom/eclair/data/folder"

拆分配置

请注意,HOCON 允许文件包含其他文件。这允许你将配置文件拆分为几个逻辑文件,以便于管理。例如,你可以定义一个包含与路由配置相关的参数的 routing.conf 文件,并从 eclair.conf 中包含它。

选项参考

以下是一些最常见的选项:

名称 描述 默认值
eclair.chain 要使用哪个区块链:regtesttestnetsignetmainnet mainnet
eclair.server.port Lightning TCP 端口 9735
eclair.api.port API HTTP 端口 8080
eclair.api.enabled 启用 JSON API false
eclair.api.password 保护 API 的密码(BASIC 认证) 没有默认值
eclair.bitcoind.auth Bitcoin Core RPC 认证方法:passwordsafecookie password
eclair.bitcoind.rpcuser Bitcoin Core RPC 用户 foo
eclair.bitcoind.rpcpassword Bitcoin Core RPC 密码 bar
eclair.bitcoind.cookie Bitcoin Core RPC cookie 路径 ${user.home}"/.bitcoin/.cookie"
eclair.bitcoind.zmqblock Bitcoin Core ZMQ 区块地址 "tcp://127.0.0.1:29000"
eclair.bitcoind.zmqtx Bitcoin Core ZMQ 交易地址 "tcp://127.0.0.1:29000"
eclair.bitcoind.wallet Bitcoin Core 钱包名称 ""
eclair.server.public-ips 节点公共 IP 列表 没有默认值

→ 有关完整参考,请参见 reference.conf。还有更多选项!

自定义功能

Eclair 附带一组默认激活的功能,以及一些用户可以激活的实验性或可选功能。 支持的功能列表可以在参考配置中找到。

要启用非默认功能,你只需将以下内容添加到你的 eclair.conf 中:

eclair.features {
    official_feature_name = optional|mandatory
}

例如,要激活 option_static_remotekey

eclair.features {
    option_static_remotekey = optional
}

请注意,你还可以禁用一些默认功能:

eclair.features {
    option_support_large_channel = disabled
}

激活非默认功能或禁用默认功能通常是有风险的:在执行此操作之前,请确保你完全理解某个功能(以及发布说明中详细说明的当前实施状态)。

Eclair 支持按对等方配置功能。假设你已连接到 Alice 和 Bob,你可以使用与 Alice 不同的功能集。 在试验非默认功能时,我们建议使用此功能来限定要试验的对等方。

这可以通过 eclair.conf 中的 override-init-features 配置参数来完成:

eclair.features {
  var_onion_optin = mandatory
  payment_secret = mandatory
  option_support_large_channel = optional
  option_static_remotekey = optional
  option_channel_type = optional
}
eclair.override-init-features = [
    {
        nodeId = "<alice_node_id>"
        features {
            option_support_large_channel = disabled
            option_static_remotekey = mandatory
            option_anchors_zero_fee_htlc_tx = optional
        }
    },
    {
        nodeId = "<bob_node_id>"
        features {
            option_support_large_channel = mandatory
            option_static_remotekey = disabled
            option_channel_type = mandatory
        }
    },
]

在此示例中,将与 Alice 激活的功能是:

var_onion_optin = mandatory
payment_secret = mandatory
option_static_remotekey = mandatory
option_anchors_zero_fee_htlc_tx = optional
option_channel_type = optional

将与 Bob 激活的功能是:

var_onion_optin = mandatory
payment_secret = mandatory
option_support_large_channel = mandatory
option_channel_type = mandatory

自定义费率容差

为了保护你的通道资金免受攻击,你的 eclair 节点会保持对链上费率的最新估计(基于你的 Bitcoin 节点的估计)。 当该估计值与你的对等方估计值不同时,eclair 可能会自动关闭有风险的通道,以保证你的资金安全。

由于预测未来是困难且不完美的,因此 eclair 对偏差有一定的容差,该容差由以下参数控制:

on-chain-fees {
    feerate-tolerance {
      ratio-low = 0.5 // 将允许低至我们本地费率一半的远程费率
      ratio-high = 10.0 // 将允许高达我们本地费率 10 倍的远程费率
    }
}

除非你真的知道自己在做什么,否则我们不建议更改这些值。 但是,如果你与某些特定的对等方存在信任关系,并且你知道他们永远不会试图欺骗你,则可以专门为这些对等方增加容差。 另一方面,如果你与你怀疑可能试图攻击你的对等方存在通道,则可以专门为这些对等方降低容差。

on-chain-fees {
    override-feerate-tolerance = [
        {
            nodeid = "<nodeId of a trusted peer>"
            feerate-tolerance {
                ratio-low = 0.1 // 将允许低至我们本地费率 10% 的远程费率
                ratio-high = 15.0 // 将允许高达我们本地费率 15 倍的远程费率
            }
        },
        {
            nodeid = "<nodeId of a peer we don't trust at all>"
            feerate-tolerance {
                // 将只允许我们本地费率的 75% 到 200% 之间的远程费率
                ratio-low = 0.75
                ratio-high = 2.0
            }
        }
    ]
}

示例

基本配置

这是一个常见的配置文件,它覆盖了默认服务器端口、节点标签和节点颜色,并启用了 API(需要使用 eclair-cli 与你的节点交互):

## 服务器端口
eclair.server.port=9737

## 节点标签
eclair.node-alias="我的节点"
## rgb 节点颜色
eclair.node-color=49daaa

eclair.api.enabled=true
## 你应该在这里设置一个真实的密码。
eclair.api.password=foobar
## 确保无法从互联网访问此端口!
eclair.api.port=8080

Regtest 模式

要使用 Bitcoin 的 regtest 模式运行,你需要设置 chain 引用:

eclair.chain = "regtest"

你通常还需要禁用费率不匹配

公共节点

要使你的节点公开,请添加一个公共 IP:

eclair.server.public-ips=[x.x.x.x]

你还需要确保可以从外部访问该节点(端口转发、防火墙等)。

Bitcoin Core cookie 身份验证

如果你在同一台计算机上运行 Eclair 和 Bitcoin,则可以使用另一种方法来处理 Bitcoin Core RPC 身份验证。 是使用 safecookie。要使用 safecookie 身份验证,你需要从你的 bitcoin.conf 中删除 rpcpassword=***rpcuser=***,并将以下内容添加到 eclair.conf 中:

eclair.bitcoind.auth = "safecookie"
eclair.bitcoind.cookie = "COOKIE 文件的路径"

如果 Bitcoin 在主网上运行并使用默认数据目录,则可能不需要设置 eclair.bitcoind.cookie

Eclair 将需要对 Bitcoin Core 的 cookie 文件具有读取权限。 你可以使用同一用户运行 Eclair 和 Bitcoin Core,也可以授予 Eclair 用户读取权限。

用于路径查找的 AB 测试

以下配置通过定义一组 experiments 并为每个实验分配一定百分比的流量来启用 AB 测试。control 实验不覆盖任何参数,它使用默认值。

请注意,所有实验的百分比总和为 100%。

eclair {
  router {
    path-finding {
      experiments {
        control = ${eclair.router.path-finding.default} {
          percentage = 50
        }

        // 替代路由启发式(替换比率)
        test-failure-cost = ${eclair.router.path-finding.default} {
          use-ratios = false

          locked-funds-risk = 1e-8 // 每个区块锁定的每个 msat 的 msat。它应该是你预期的每区块利率乘以资金保持锁定状态的可能性。
          // 1e-8 对应于每年约 5% 的利率(每区块 1e-6)以及通道将失败并且我们的资金将被锁定的 1% 的概率。

          // 失败支付的虚拟费用
          // 对应于你愿意支付多少费用以减少一次失败的支付尝试
          failure-cost {
            fee-base-msat = 2000
            fee-proportional-millionths = 500
          }
          percentage = 10
        }

        // 仅优化费用:
        test-fees-only = ${eclair.router.path-finding.default} {
          ratios {
            base = 1
            cltv = 0
            channel-age = 0
            channel-capacity = 0
          }
          hop-cost {
            fee-base-msat = 0
            fee-proportional-millionths = 0
          }
          percentage = 10
        }

        // 优化更短路径:
        test-short-paths = ${eclair.router.path-finding.default} {
          ratios {
            base = 1
            cltv = 0
            channel-age = 0
            channel-capacity = 0
          }
          hop-cost {
            // 高跳成本会强烈惩罚更长的路径
            fee-base-msat = 10000
            fee-proportional-millionths = 10000
          }
          percentage = 10
        }

        // 优化成功支付:
        test-pay-safe = ${eclair.router.path-finding.default} {
          ratios {
            base = 0
            cltv = 0
            channel-age = 0.5 // 旧通道的失败风险应该更小
            channel-capacity = 0.5 // 高容量通道更有可能具有足够的流动性来中继我们的支付
          }
          hop-cost {
            // 更少的跳数意味着更少的失败机会
            fee-base-msat = 1000
            fee-proportional-millionths = 1000
          }
          percentage = 10
        }

        // 优化快速支付:
        test-pay-fast = ${eclair.router.path-finding.default} {
          ratios {
            base = 0.2
            cltv = 0.5 // 如果失败,我们希望我们的资金尽快返回
            channel-age = 0.3 // 较旧的通道更可能顺利运行
            channel-capacity = 0
          }
          hop-cost {
            // 更短的路径应该更快
            fee-base-msat = 10000
            fee-proportional-millionths = 10000
          }
          percentage = 10
        }
      }
    }
  }
}
  • 原文链接: github.com/ACINQ/eclair/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ACINQ_
ACINQ_
江湖只有他的大名,没有他的介绍。