用 FlyTheElephant 网关在 Lazarus 挖矿

FlyTheElephant1/datum_gateway 是这条链上的一个 DATUM 网关:基于 CONVOY 的 BLAKE2b 代码,加上 FlyTheElephant 自己的改进。它的 master 让每台矿机都拿到矿池完整的分账(16 KB coinbase),并按区块的 weight 和 sigop 上限裁剪这个 coinbase,所以完整分账永远不会让你的区块无效。无需任何补丁即可连接 Lazarus。FlyTheElephant 也在我们 Discord 的 #support 频道帮矿工配置,谢谢他。

1. 节点。Bitcoin Knots 29.4.3(旧版本不认从区块 979,919 开始的 180 天 coinbase 成熟期规则,可能出网络拒绝的块),在这条链上完全同步。bitcoin.conf 中:

server=1
blake2b_headline=8-30 NYPost Deride And Conquer
blockmaxweight=736000
maxscriptsize=589
blocknotify=killall -USR1 datum_gateway

blockmaxweight 为分账 coinbase 留出空间。maxscriptsize=589 把大型伪多签数据交易挡在你的区块之外;原版 Knots 默认会打包它们。节点是你的,由你决定:这个设置也会拒绝非常大的多签花费(大约 5-of-7 及以上),其他节点仍会打包它们。Knots 默认的 DNS 种子指向 SHA-256 分叉链的节点,所以请从这条链的最新列表加几行 addnode=(bitcoinxor.org/node,或 CONVOY 的指南);几周前复制的列表会失效。maxtipage 只在分叉后同步缓慢的那几周有用,同步完成后可以不设。

2. 编译网关。Debian 或 Ubuntu 下(其他系统见仓库 README):

sudo apt install cmake pkgconf libcurl4-openssl-dev libjansson-dev libsodium-dev libmicrohttpd-dev psmisc
git clone https://github.com/FlyTheElephant1/datum_gateway
cd datum_gateway
cmake . && make
./datum_gateway --test
./datum_gateway -c datum_gateway_config.json

仓库里也有 Dockerfile;用 Docker 时把 notify_fallback 设为 false,并用 blocknotify=wget -q -O /dev/null http://datum-gateway:7152/NOTIFY。

3. 配置。下面是连接 Lazarus 的完整 datum_gateway_config.json。pool_pubkey 从下方 DATUM 标签页复制;pool_address 填你自己的地址(只有非矿池工作才会付到这里);rpccookiefile 或 rpcuser/rpcpassword 指向你的节点。

{
  "bitcoind": {
    "rpccookiefile": "/home/you/.bitcoin/.cookie",
    "rpcurl": "http://127.0.0.1:8332",
    "notify_fallback": true
  },
  "stratum": { "listen_port": 23334, "vardiff_min": 4096 },
  "mining": {
    "pool_address": "bc1q…your address",
    "coinbase_tag_primary": "Lazarus",
    "coinbase_tag_secondary": "your name or rig"
  },
  "api": { "listen_port": 7152, "admin_password": "choose one" },
  "logger": { "log_level_console": 2 },
  "datum": {
    "pool_host": "datum.lazarus-xbt.xyz",
    "pool_port": 28915,
    "pool_pubkey": "the pubkey from the DATUM tab below",
    "pool_pass_workers": true,
    "pool_pass_full_users": true,
    "pooled_mining_only": true
  }
}

vardiff_min 保持 4096:不设的话原版 DATUM 每个会话从 16384 起步,Prime 无法调低。

4. 矿机指向你的网关,而不是我们:stratum+tcp://<网关的局域网 IP>:23334,用户名 你的地址.worker,密码 x。第一个 . 之前的部分就是收款地址。

5. 确认运行。一分钟内你的网关会出现在 Gateways,显示为 v0.4.1-beta/<commit>、费用路径 DATUM;第一个份额之后你的地址会出现在 Miners。网关自己的面板在 7152 端口。日志里应出现 DATUM Server MOTD 和我们的箴言;找到的区块会连同分账显示在这里。

连不上时。日志出现 DATUM not connected and configured for pooled mining only! Rejecting connection,表示网关没有矿池会话,于是拒绝矿机(矿机固件会切到备用矿池):检查 pool_host、pool_port,以及 pool_pubkey 是否是本页的完整公钥;公钥错误过不了握手。区块高度卡在 961,639 说明 Knots 版本过旧或连到了 SHA-256 分叉链的节点。日志中出现带升级提示的 Refused,说明你的节点出过被链拒绝的区块;升级 Knots 后重连,会自动放行。

我们的实测。我们在 regtest 上用自己的 Prime 和 Knots 29.4.2 测试了这个网关,最近一次是 2026 年 10 月 9 日测试 master 280cf54,蚂蚁 A3 和通用矿机找到的区块都付给了窗口里的全部 60 位矿工:握手与公钥校验、每个找到的区块都付给窗口里的所有矿工、地址.worker 与纯地址用户名、0% 的 DATUM 费用路径、断线重连、Prime 的模板检查与拒绝,全部通过。有一项没通过,而且目前所有 C 语言 DATUM 网关(包括 iohzrd 和 CONVOY)都有:每个新区块之后的片刻,以及矿池分账迟到的整个期间,网关可能下发一个只付给矿池的 coinbase 任务。一个小补丁可以修复:分账到达之前只发只含区块补贴的空任务,或者不发任务。它还没有进入 master(对 280cf54 仍可直接打上),所以请自己打上:datum-gateway-fte-late-coinbaser.patch(在 cmake 之前 patch -p1 <)。

网关

Prime 上的每一座网关。

此刻连上的每一座 DATUM 网关,包括我们自己的,以及曾经找到过区块、即便现已离线的。区块计数为累计。