用 Ratum 网关在 Lazarus 挖矿

ratum-gateway 是 iohzrd 用 Rust 重写的 DATUM 网关:一个静态二进制文件,与 C 版网关用同一个 datum_gateway_config.json,并自带状态页。Lazarus 直接接受它,不需要补丁、特殊设置或审批。它和本站其他自建 DATUM 网关一样:0% 手续费。2026 年 9 月 27 日,连接 Lazarus 的网关中有 19 个在跑它,版本从 0.1.23 到 0.1.53。

每一条已发布的版本线,我们都先在测试链上对接自家 Prime 实测过,才说它能用。逐个版本的结果见文末表格。简短结论:用最新的正式版,也就是本指南安装的版本。

1. 你需要

  • 本链的 Bitcoin Knots 29.4.2,完全同步,开启 server=1。它负责构建你的区块模板;29.4.2 是第一个认识长 coinbase 成熟期规则(自区块 973,440 起为共识)的版本,更旧的节点会构建被全网拒绝的区块。见本链说明。
  • 一台常开的机器:Linux、macOS 或 Windows,64 位,x86 或 ARM。网关本身很小;节点裁剪后约需 20 GB。
  • 一个本链收款地址,来自只在本链使用的钱包。
  • 与网关在同一网络中的 BLAKE2b 矿机(任何 Siacoin 矿机)。

2. 安装 ratum-gateway

从 github.com/iohzrd/ratum/releases 下载适合你机器的版本并核对校验和。64 位 Linux:

V=0.1.53
curl -fsSLO https://github.com/iohzrd/ratum/releases/download/v$V/ratum-gateway-$V-x86_64-linux-musl.tar.gz
curl -fsSLO https://github.com/iohzrd/ratum/releases/download/v$V/ratum-gateway-$V-x86_64-linux-musl.tar.gz.sha256
sha256sum -c ratum-gateway-$V-x86_64-linux-musl.tar.gz.sha256
tar -xzf ratum-gateway-$V-x86_64-linux-musl.tar.gz
sudo install -m0755 ratum-gateway-$V-x86_64-linux-musl/ratum-gateway /usr/local/bin/
ratum-gateway --version

ARM Linux(例如树莓派 5)用 aarch64-linux-musl 文件,Mac 用 macos 文件,Windows 用 x86_64-windows.zip。也可以从源码编译:git clone https://github.com/iohzrd/ratum && cd ratum && git checkout v0.1.53 && cargo build --release --bin ratum-gateway。

3. 让网关及时知道新区块

在节点的 bitcoin.conf 里加上这一行并重启节点,这样出新块时网关几毫秒内就切换,而不是等下一次轮询:

blocknotify=curl -fsS -o /dev/null http://127.0.0.1:7152/NOTIFY

7152 是下面配置里网关的 api.listen_port。也可以用 kill -USR1 <pid>,效果相同。

把垃圾数据挡在你的区块之外。选交易的是你的节点,而原版 Knots 29.4.2 会打包近来占满区块的大型伪多签数据交易。在 bitcoin.conf 里加上这一行即可拒绝它们:

maxscriptsize=589

正常转账不受影响。这个设置也会拒绝非常大的多签花费(大约 5-of-7 及以上),其他节点仍会打包它们。节点是你的,由你决定。

4. 配置文件

保存为 datum_gateway_config.json。它就是 C 版网关的配置文件,所以已有的文件只要把 datum 段指向这里就能直接用。公钥是本矿池的,来自矿池实时数据。

{
  "bitcoind": {
    "rpcurl": "http://127.0.0.1:8332",
    "rpccookiefile": "/home/YOU/.bitcoin/.cookie",
    "work_update_seconds": 40,
    "notify_fallback": true
  },
  "stratum": {
    "listen_addr": "0.0.0.0",
    "listen_port": 23334,
    "vardiff_min": 4096,
    "require_address_username": true
  },
  "mining": {
    "pool_address": "YOUR_XBT_ADDRESS",
    "coinbase_tag_primary": "Lazarus",
    "coinbase_tag_secondary": "YOUR_GATEWAY_NAME"
  },
  "api": {
    "listen_addr": "127.0.0.1",
    "listen_port": 7152,
    "admin_password": "CHANGE_ME",
    "miner_listen_addr": "127.0.0.1",
    "miner_listen_port": 8000
  },
  "datum": {
    "pool_host": "datum.lazarus-xbt.xyz",
    "pool_port": 28915,
    "pool_pubkey": "29120606bbbfdeb0dcb259d13ed1fba9e6ff198ff6a0152cffb7608dc1c266bd17532393738aee7edf9aa0c9ec93b835256971f186da878f77fb3ed273dff30a",
    "pool_url": "https://pool.lazarus-xbt.xyz",
    "pool_pass_workers": true,
    "pool_pass_full_users": true,
    "pooled_mining_only": true
  }
}
  • datum:我们的主机、端口和矿池公钥。公钥锁定这条连接:填错公钥的网关拿不到会话,也不下发任何工作——我们实测过。pool_url 只是在网关状态页上放一个指向本站的链接。
  • mining.pool_address:填你自己的地址。网关与矿池连接期间,它构建的每个 coinbase 都支付我们的分配和矿池输出,与这里填什么无关,所以不影响你的收入。只有在网关与矿池失联期间挖出的工作才会付到这里,见第 7 步。
  • coinbase_tag_secondary:你的网关名称,也就是本站网关表显示的名字。coinbase_tag_primary 只在连不上矿池时使用;连接期间网关写入的是我们的标签。
  • pool_pass_full_users: true:网关后面的每台矿机按它自己用户名里的地址收款,多人可以共用一个网关。
  • require_address_username: true:用户名不以地址开头的矿工会被网关拒绝,而不是替一个谁也收不到钱的名字挖矿。
  • vardiff_min: 4096:新会话的起始难度,更快的机器会从这里往上调。
  • admin_password 保护 7152 端口上的状态页和设置页。它们用的是普通 HTTP Basic 认证,所以请把 listen_addr 保持在 127.0.0.1 或内网。

5. 启动网关,把矿机指向它

ratum-gateway -c datum_gateway_config.json。一两秒内日志会出现 DATUM pool configuration: … tag "Lazarus",接着是 Stratum job … ready (full): … coinbaser outputs, pooled。要让它常驻,可以用 systemd:

[Unit]
Description=ratum-gateway (DATUM gateway for Lazarus Pool)
After=network-online.target bitcoind.service

[Service]
User=YOU
ExecStart=/usr/local/bin/ratum-gateway -c /home/YOU/ratum/datum_gateway_config.json
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

每台矿机:矿池地址 stratum+tcp://网关局域网IP:23334(运行网关的那台机器,不是我们的主机),用户名 bc1…你的地址.矿工名,密码 x。我们的 DATUM 端口 28915 只和网关通信,矿机指向那里什么也拿不到。

6. 确认我们看到了它

  • 一分钟内,本站网关表会以 Ratum 网关 列出它,带版本号和提交号,名称是你的 secondary 标签。第一个份额被接受后,状态变为「在算」。
  • 工作进入窗口后,你的地址会出现在矿工和下次付款里。可以在 pool.lazarus-xbt.xyz/#bc1… 查询。
  • /api/gateways 里有同一行数据,带 software: {"name": "ratum-gateway", …};Lazarus MCP 的 gateway_status 工具可以按名称回答「我的网关连上了吗」。
  • 网关自己的页面 http://127.0.0.1:7152/ 显示矿池连接、它手里的分配,以及每台已连接的矿机。

7. 连不上矿池时

我们测试过的每个 Ratum 版本,在与矿池失联时(无论是 Prime 重启还是网络中断)行为都一样:最初 12 到 26 秒里,它继续让你的矿机算它自己构建的工作,coinbase 只付给 mining.pool_address。之后才断开矿机,矿池恢复后矿机会自动重连。在这段空档里找到的区块不是矿池区块:我们看不到它,窗口里的任何人都不会从中得到付款。所以 pool_address 应该填你自己的地址:这样的区块付给你,这很公平,因为那是你的工作。如果填我们的地址,它会落进矿池钱包,却记不到任何人名下。我们很少重启 Prime,而且只在出块之后立刻重启;这个空档也已报告给 Ratum 的作者。

8. 故障排查

  • connecting to DATUM pool datum-beta1.mine.ocean.xyz
    datum 段缺失或拼错,Ratum 退回了内置默认值(OCEAN)。按上面的配置填好 pool_host、pool_port 与 pool_pubkey。
  • 刚连上就 DATUM connection ended,本站也看不到你的网关
    pool_pubkey 不对。握手是用我们的公钥加密的,别家矿池的公钥(或旧的副本)在任何工作开始之前就会被拒绝。请从“接入”一节重新复制公钥。
  • no work is served until it connects / disconnecting stratum clients
    开着 pooled_mining_only(请保持开启),而网关连不上 datum.lazarus-xbt.xyz:28915。检查出站 TCP 28915 和 DNS。恢复后矿机会自动重连。
  • 矿机能连上,但一直收不到任务
    节点还在同步,或者不是 BLAKE2b 版 Knots:节点模板里没有 !blake2b 规则之前,Ratum 不下发任何工作。请为本链运行 Bitcoin Knots 29.4.2 并等它同步完成。
  • 启动时 Address already in use
    有别的程序占了端口。Ratum 还会开一个矿工查询端口 api.miner_listen_port(默认 8000);改掉它或 API 端口即可。
  • 某个矿工的授权被拒
    这是 require_address_username 在起作用:第一个 . 之前的部分不是地址。请用 bc1…你的地址.矿工名。不开这个检查的话,份额会被接受,但记在一个谁也收不到钱的名字上。
  • 本站网关表上有少量 bad-coinbase-outputs 或过期拒绝
    Prime 刚重启或链上出了新块之后属正常:之前的任务带的是旧的分配。几秒内消失,不会损失任何记账。
  • 链拒绝你的区块,或网关因 #419 被拒
    你的节点早于 Knots 29.4.2,不认识长 coinbase 成熟期规则。升级节点后重连,拒绝会自动解除。

9. 换用 Ratum,或换到 Lazarus

从 C 版网关(CONVOY、iohzrd、FlyTheElephant 或 StartOS):停掉 datum_gateway,用同一个文件启动 ratum-gateway -c;如果 8000 端口已被占用,再加上 api.miner_listen_port。收益跟着地址走,不跟着网关走,所以已在窗口里的工作仍然是你的。新网关有新的密钥,会在本站网关表上显示为新的一行,旧的那行变为离线。

从别家矿池的 Ratum 配置(Omega、B2Pool、P2Block、AlphaPool):只改 datum 段,换成上面的主机、端口和公钥;如果设置了 pool_url 也一并改掉。指向别家公共网关的 secondary 标签在这里没有意义,留着或删掉都行。P2Block 的分支有 solo 模式:把 mining.solo 设为 false,否则网关根本不连矿池。AlphaPool 的 28916 端口和它的公钥在这里无效,我们的是 28915。

换回去就是反过来改。没有任何锁定:你在这里做的工作,只要还在窗口里,就由我们找到的区块支付。

我们实测了什么

ratum-gateway 对接 Lazarus Prime:regtest 实测(2026 年 9 月 27 日,XBT-082)与线上 Prime 的计数
版本区块、收款人只付矿池的完整工作失联时
iohzrd 0.1.285 / 5 记为 split,13–14 个收款人4 毫秒 / 222 秒
线上 0.020%
不经矿池 18 秒
iohzrd 0.1.3910 / 10 记为 split,13–15 个收款人0 毫秒 / 230 秒
线上 0.030%
不经矿池 26 秒
iohzrd 0.1.53(最新正式版)7 / 7 记为 split,13–15 个收款人3 毫秒 / 229 秒
线上 0.084% (份额尚少)
不经矿池 17 秒
iohzrd master 0.1.549 / 9 记为 split,13–15 个收款人6 毫秒 / 227 秒
线上 —
不经矿池 19 秒
B2Pool 分支(ocminer)0.1.259 / 9 记为 split,13–15 个收款人9 毫秒 / 227 秒
线上 0.000% (份额尚少)
不经矿池 19 秒
P2Block 分支 0.1.297 / 7 记为 split,13–15 个收款人6 毫秒 / 232 秒
线上 —
不经矿池 20 秒

方法:一条启用 BLAKE2b 与长 coinbase 成熟期规则的 Bitcoin Knots 29.4.2 regtest 链、一份我们的 Prime(与矿池运行的版本相同)、每个网关版本,以及两台 CPU 矿机;每个版本约八分钟,每个模板都带交易,另有对手每 15 秒出一个块。检查项:公钥锁定连接;每个记为 split 的区块在链上的支付与记录完全一致;DATUM 费率路径;地址.矿工名 与 地址~标签.矿工名 用户名;Prime 重启;以及没有任何拒绝。「线上」是在只付给矿池的完整任务上被接受的份额所占比例,取自我们 Prime 对该版本所有已连接网关的计数。iohzrd C 版网关按同一口径为 0.018%。每个 Ratum 新版本我们都会重跑同一套测试并更新此表。