闪电网络路由费怎么算:基础费加百万分比费 图 1
闪电网络路由费怎么算:基础费加百万分比费 · 图 1

过路费是路由节点自己标价的

闪电网络没有统一的清算行抽成。一笔付款沿多跳通道前进,每一跳的节点都靠BOLT7规范定义的channel_update消息向全网广播自己的”过路价目表”:基础费fee_base_msat、百万分比费fee_proportional_millionths、时间锁增量cltv_expiry_delta,以及愿意转发的金额上下限。同一条通道有两个方向的价目表,由两端各自独立发布——你从这头转发收多少,与对面那头收多少,毫无关系。路径发现软件把这些公告拼成一张加权图,用类似最短路径的算法找总成本最低的路线。

公式只有一行,但每个字都重要

规范给出的单跳费用公式是:fee_base_msat 加上(amount_to_forward 乘 fee_proportional_millionths 除以 一百万)。拆开看:基础费是每转发一笔不管大小的固定收费,单位毫聪,1聪等于1000毫聪;比例费按转发金额抽 ppm(百万分之几)的成。以基础费1000毫聪、比例费1000ppm、转发500000聪为例,比例部分是500000乘1000除1000000等于500聪,加上1聪的基础费,这一跳共收501聪。要注意毫聪级别的乘积在实现中按整数处理,小数部分被截掉,所以”每聪再乘出零点几聪”并不存在。整笔付款的总路由费,就是路径上每一跳这套加法的总和。

为什么小额账单常常更贵

基础费是固定成本,这决定了费率与金额成反比的怪象:转5聪,1聪基础费就是百分之二十的费率;转500万聪,同样这1聪几乎可以忽略。很多”闪电提现几分钱手续费”的截图,金额往往在数十聪量级,百分比大得惊人却与大额转账的千分之一费率并存不悖。另一头的误解也存在:把ppm直接读成百分比,1000ppm其实只有0.1%。用户端钱包显示的”预计费用”,本质是钱包用它缓存的那份channel_update做同一条公式的预演,与真实扣款之间的差异通常来自路由节点刚改了价而全网公告还没跑完一圈——规范建议节点改价后继续按旧价受理一小段时间以消化传播延迟。

报价字段之外的隐形成本

评估一条路线时,钱不是全部。cltv_expiry_delta决定万一付款卡住时资金被锁多久,间接影响节点愿意接什么样的单;htlc_maximum_msat决定大额拆分时哪些通道根本装不下。金额相同时走哪条路更便宜,取决于基础费与比例费在你这个金额上的交叉:小额付款系统更偏爱零基础费的通道,哪怕比例费偏高;大额则相反,压低ppm比免基础费更值钱。看懂这两个参数,路由费就不再是钱包界面上一个神秘数字了。

自己动手验证一次费用

想亲手复核这个公式并不需要写代码。随便找一张公开的路由信息页(例如主流路由资源站的节点详情),挑一个节点,记下它某条通道的fee_base_msat与ppm两个数;再回想你最近一笔跨节点付款的实付金额与钱包显示的费用,用基础费加金额乘ppm除以一百万重算一遍,多数情况下分毫不差,误差主要出现在路径经过多个收费跳、而某跳改价公告尚未刷进钱包缓存的时候。反过来做也成立:如果你是自建节点想给通道定价,理解这两个参数的含义就理解了定价的全部杠杆——基础费劝退高频小额探测流量,ppm守住大额转发的成本回收;只调其一,要么吓跑小额客户,要么在大额单上亏本。闪电的费率没有任何全网指导价,公开数据里同一条路径两侧可能一边收零基础费、一边收千分之几,这些差异正是公式两端的参数在现实中自由组合的样子。