DATUM 入门

你的节点构建区块,你的 gateway 与矿池通信,你的矿机向你的 gateway 提交哈希。七个步骤,按顺序 — 每一步都以"怎么知道成功了"结尾。
哪个矿池?步骤相同;只有端口、密钥和付款规则不同。
第 1 步运行一个 BLAKE2b 节点第 2 步下载并编译 gateway第 3 步配置 — 指向我们的 Prime第 4 步运行第 5 步注册你的地址(CAROUSEL 和 CHIRP)第 6 步把矿机指向你的 gateway第 7 步确认你拿到了钱
不要跳步。 节点没准备好的 gateway 也会连上我们、停在零,从外面看完全正常。做完一步再开始下一步。
赶时间? 对 CAROUSEL 和 CHIRP,一条命令替你完成第 2 到第 5 步:找到你的节点、(如果你允许)安装编译工具、克隆并编译 gateway、写入配置、以服务方式启动并注册你的地址。步骤仍然值得读一遍:这就是脚本做的事,出问题时你会用到。
curl -fsSL https://b.pyblock.xyz:8443/gateway | sh -s -- chirp YOUR_BTC_ADDRESS
WAVICLES 还没有安装脚本:按步骤手动做,大约十分钟。

1运行一个 BLAKE2b 节点

DATUM 需要一个跟随 BLAKE2b 分叉的 Bitcoin Knots 节点(Knots ≥ 29.4),并已完全同步。普通的 Knots 或 Core 不行:它不认识 blake2b 规则,不会返回可用的工作。
bitcoin.conf 里与此相关的部分:
server=1 rpcuser=YOUR_RPC_USER rpcpassword=YOUR_RPC_PASSWORD rpcallowip=127.0.0.1 blockreservedweight=100000
怎么知道成功了: 这条命令返回模板而不是错误。如果显示 unknown rule blake2b,节点不在分叉上;如果是别的错误,先修好节点 — 没有它 gateway 永远跑不起来。
bitcoin-cli -rpcport=8342 getblocktemplate '{"rules":["segwit","blake2b"]}'

2下载并编译 gateway

gateway 是一个小 C 程序,位于你的节点和矿池之间:向节点要工作,交给你的矿机,并告诉我们是谁干的活,好让区块付钱给他们。没有二进制可下载 — 从源码编译,几分钟搞定。
用哪个源码。 CAROUSEL 和 CHIRP:gitlab.com/astrolexis-group1/datum-carousel,PyBLØCK 的分支 — 安装脚本编译的就是它,每天对这些 Prime 测试。WAVICLES:CONVOYMining/datum_gateway 提交 7491a509 或更新 — 更早的版本算错 BLAKE2b coinbase 字节数并截断付款列表,所以我们在握手时拒绝它们。
编译依赖(选你的发行版):
Debian / Ubuntusudo apt-get update && sudo apt-get install -y git cmake build-essential libcurl4-openssl-dev libjansson-dev libmicrohttpd-dev libsodium-dev pkg-config
Fedora / RHELsudo dnf install -y git cmake gcc gcc-c++ libcurl-devel jansson-devel libmicrohttpd-devel libsodium-devel pkgconf
Archsudo pacman -S --needed git cmake base-devel curl jansson libmicrohttpd libsodium
克隆并编译。二进制在 build/datum_gateway:
git clone --depth 1 https://github.com/CONVOYMining/datum_gateway.git ~/pyblock-gateway/src cd ~/pyblock-gateway/src cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j$(nproc) ls -l build/datum_gateway
怎么知道成功了: ./build/datum_gateway --help 打印用法。如果还提到 key_file,说明你的版本支持持久的 gateway 身份(很好 — 见第 3 步)。

3配置 — 指向我们的 Prime

一个 JSON 文件。下面的内容就是安装脚本写的;只有大写的部分由你填写。点击复制,保存为二进制旁边的 carousel.json,并 chmod 600 — 里面有你节点的 RPC 密码。一个 JSON 文件。下面的内容就是安装脚本写的;只有大写的部分由你填写。点击复制,保存为二进制旁边的 chirp.json,并 chmod 600 — 里面有你节点的 RPC 密码。一个 JSON 文件。下面的内容就是安装脚本写的;只有大写的部分由你填写。点击复制,保存为二进制旁边的 wavicles.json,并 chmod 600 — 里面有你节点的 RPC 密码。
{ "bitcoind": { "rpcuser": "YOUR_RPC_USER", "rpcpassword": "YOUR_RPC_PASSWORD", "rpcurl": "127.0.0.1:8342", "work_update_seconds": 40, "notify_fallback": true }, "stratum": { "listen_port": 23334, "max_clients_per_thread": 1024, "max_threads": 4, "max_clients": 4096, "vardiff_min": 1024, "vardiff_target_shares_min": 8, "share_stale_seconds": 120, "fingerprint_miners": true }, "mining": { "pool_address": "YOUR_BLAKE2B_ADDRESS", "coinbase_tag_primary": "PyBLOCK-CHIRP", "coinbase_tag_secondary": "YOUR_NAME", "coinbase_unique_id": 4242, "pow_algorithm": "blake2b" }, "api": { "listen_addr": "127.0.0.1", "listen_port": 7152, "admin_password": "CHOOSE_A_PASSWORD" }, "logger": { "log_to_console": true, "log_to_file": true, "log_file": "chirp.log", "log_rotate_daily": true, "log_level_file": 2 }, "datum": { "pool_host": "b.pyblock.xyz", "pool_port": 28917, "pool_pubkey": "cf995bb5b975ef4b90932f0608c98a033679092e976982621243cd1226803c6417442870dff8372b11363d8f80665b1f298cc23132bf2dab23958a4bcc7d4f72", "key_file": "gateway.key", "pool_pass_workers": true, "pool_pass_full_users": true, "always_pay_self": true, "pooled_mining_only": false, "protocol_global_timeout": 60 } }
{ "bitcoind": { "rpcuser": "YOUR_RPC_USER", "rpcpassword": "YOUR_RPC_PASSWORD", "rpcurl": "127.0.0.1:8342", "work_update_seconds": 40, "notify_fallback": true }, "stratum": { "listen_port": 23334, "max_clients_per_thread": 1024, "max_threads": 4, "max_clients": 4096, "vardiff_min": 1, "vardiff_target_shares_min": 8, "share_stale_seconds": 120, "fingerprint_miners": true }, "mining": { "pool_address": "YOUR_BLAKE2B_ADDRESS", "coinbase_tag_primary": "PyBLOCK-WAVICLES-BLAKE2b", "coinbase_tag_secondary": "YOUR_NAME", "coinbase_unique_id": 4242, "pow_algorithm": "blake2b" }, "api": { "listen_addr": "127.0.0.1", "listen_port": 7152, "admin_password": "CHOOSE_A_PASSWORD" }, "logger": { "log_to_console": true, "log_to_file": true, "log_file": "wavicles.log", "log_rotate_daily": true, "log_level_file": 2 }, "datum": { "pool_host": "b.pyblock.xyz", "pool_port": 28915, "pool_pubkey": "b5e0b0326b964a92f3046c73a76b9e98173e0c3ea0e0ca771f4e6a3dd92e2935b2caad2a088fdd7bf0a48fc0c41776a9abb13c7d4c6964b53a9ceee4c775e036", "key_file": "gateway.key", "pool_pass_workers": true, "pool_pass_full_users": true, "always_pay_self": true, "pooled_mining_only": true, "protocol_global_timeout": 60 } }
怎么知道成功了: python3 -m json.tool carousel.json 能原样打印文件而不报错 — 少一个逗号是 gateway 拒绝启动最常见的原因。python3 -m json.tool chirp.json 能原样打印文件而不报错 — 少一个逗号是 gateway 拒绝启动最常见的原因。python3 -m json.tool wavicles.json 能原样打印文件而不报错 — 少一个逗号是 gateway 拒绝启动最常见的原因。

4运行

先在前台运行,看日志。几秒内应该打印矿池的 DATUM Pool MOTD — 这就是握手完成:你的 gateway 证明了它的密钥,Prime 接受了。
cd ~/pyblock-gateway && chmod 600 chirp.json ./src/build/datum_gateway -c chirp.json
cd ~/pyblock-gateway && chmod 600 wavicles.json ./src/build/datum_gateway -c wavicles.json
然后做成服务,重启也能活。安装脚本写的就是这个 unit;改一下路径和用户:
/etc/systemd/system/pyblock-gateway-chirp.service[Unit] Description=PyBLOCK chirp DATUM gateway (your node, your block) After=network-online.target [Service] User=YOUR_USER ExecStart=/home/YOUR_USER/pyblock-gateway/src/build/datum_gateway -c /home/YOUR_USER/pyblock-gateway/chirp.json Restart=always RestartSec=5 LimitNOFILE=65536 [Install] WantedBy=multi-user.target
/etc/systemd/system/pyblock-gateway-wavicles.service[Unit] Description=PyBLOCK wavicles DATUM gateway (your node, your block) After=network-online.target [Service] User=YOUR_USER ExecStart=/home/YOUR_USER/pyblock-gateway/src/build/datum_gateway -c /home/YOUR_USER/pyblock-gateway/wavicles.json Restart=always RestartSec=5 LimitNOFILE=65536 [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload && sudo systemctl enable --now pyblock-gateway-chirp journalctl -u pyblock-gateway-chirp -f
sudo systemctl daemon-reload && sudo systemctl enable --now pyblock-gateway-wavicles journalctl -u pyblock-gateway-wavicles -f
日志:journalctl -u pyblock-gateway-carousel -f(或配置里的 log_file)。gateway 还在 http://127.0.0.1:7152/ 提供一个小面板 — Clients 标签列出所有向它提交哈希的矿机。日志:journalctl -u pyblock-gateway-chirp -f(或配置里的 log_file)。gateway 还在 http://127.0.0.1:7152/ 提供一个小面板 — Clients 标签列出所有向它提交哈希的矿机。日志:journalctl -u pyblock-gateway-wavicles -f(或配置里的 log_file)。gateway 还在 http://127.0.0.1:7152/ 提供一个小面板 — Clients 标签列出所有向它提交哈希的矿机。
怎么知道成功了: 一分钟内你的 gateway 出现在矿池的已连接 node runner 里。此时"已连接但 0 share"是正常的:还没有矿机向它挖。一分钟内你的 gateway 出现在矿池的已连接 node runner 里。此时"已连接但 0 share"是正常的:还没有矿机向它挖。一分钟内你的 gateway 出现在矿池的已连接 node runner 里。此时"已连接但 0 share"是正常的:还没有矿机向它挖。
日志里有别的?排错表把每一行对应到原因。

5注册你的地址(CAROUSEL 和 CHIRP)

WAVICLES 不需要注册:你在工作窗口里的身份就是 pool_address。

6把矿机指向你的 gateway

每台矿机都连到你自己的 gateway 的 stratum 端口 — 任何 BLAKE2b 矿机都行:GPU、CPU 或 Sia 级 ASIC。gateway 的地址是你机器的地址(局域网或公网),不是我们的。
URL stratum+tcp://YOUR_GATEWAY_IP:23334 Username YOUR_BLAKE2B_ADDRESS.rig-01 Password x
永远不要把矿机指向矿池。 b.pyblock.xyz:28916 是你的 gateway 与我们通信的地方。矿机连到那里挖不了。b.pyblock.xyz:28917 是你的 gateway 与我们通信的地方。矿机连到那里挖不了。b.pyblock.xyz:28915 是你的 gateway 与我们通信的地方。矿机连到那里挖不了。
怎么知道成功了: gateway 的 Clients 标签列出了矿机,你在已连接 node runner 里的那一行几分钟内开始计 share。

7确认你拿到了钱

从这里开始是矿池的事。一切都在链上,在区块自身的 coinbase 里:不托管,无需提现。
怎么知道成功了: 你的地址出现在它自己的页面上 — 算力、worker 和收到的每一个 coinbase 输出。
整个设置就是这些。 矿池从不持有一聪:爆块者直接在区块里付给你。备份好 gateway.key 和你的配置 — 它们是你 gateway 的身份。
还没有节点?今天照样可以开始
在你搭建节点的同时,先通过 PyBLØCK 的节点挖。同样的产品、同样的付款规则 — 只是区块由我们的节点和网关构建,而不是你的。所有端口和三个字段都在开始页。
在 WAVICLES 和 CHIRP,那条路同样是 0% 手续费(CAROUSEL 保持原有分配)。自带节点仍然更好:区块由你构建,更多独立模板让链保持去中心化。