2 个版本

0.1.1 2024年5月7日
0.1.0 2024年3月29日

#4 in #sv2

MIT/Apache

660KB
13K SLoC

mining-proxy

运行

proxy-config.toml 文件

当代理启动时,它将在当前工作目录(Linux)中寻找一个 proxy-config.config 文件,如果该文件不存在,代理将崩溃。我们可以使用 -c 选项指定不同的配置文件路径。

配置文件必须是一个有效的 toml 文件,包含以下值

  1. upstreams: 上游列表(可能是矿池)。上游由以下组成
  2. channel_kind: 可以是 GroupExtendedExtendedWithDeclarator。* Group: 代理不与上游打开扩展通道,而是仅将请求从下游代理到上游,代理作为非 HOM 的通道被分组。* Extended: 代理与上游打开扩展通道。当下游请求打开标准通道时,它只是使用与上游的打开扩展通道来为自己打开标准通道。* ExtendedWithDeclarator: 类似于 Extended,但不依赖于池创建新作业。它只是连接到一个 TP 并与池通信,表示它想要工作的作业。
  3. adress: 上游的 IP 地址
  4. port: 上游的端口
  5. pub_key: 上游将使用它来签署上游证书的公钥,这是用于噪声握手的必需项。
  6. jd_values: 可选值,仅在 channel_kindExtendedWithDeclarator 时需要,由以下组成
    1. address: 我们希望与该上游一起使用的 JD 的 IP 地址
    2. port: 我们希望与该上游一起使用的 JD 的端口
    3. pub_key: 我们希望与该上游一起使用的 JD 的公钥
  7. tp_address: 只有当至少有一个 upstreamupstreams 中具有类型 ExtendedWithDeclarator 时才需要此可选值。地址是否为 TP 的形式 [ip:port]
  8. listen_address: mining-proxy 接受下游连接的地址。
  9. listen_mining_port: mining-proxy 接受下游连接的端口。
  10. max_supported_version: mining-proxy 不会连接到使用 Sv2 版本高于此处指定的上游(默认为 2)。
  11. min_supported_version: mining-proxy 不会连接到使用 Sv2 版本低于此处指定的上游(默认为 2)。
  12. downstream_share_per_minute: 每分钟下游应产生的份额数。 mining-proxy 将使用此值和预期的下游哈希率(通过 penStandardMiningChannel 通信)来计算正确的下游目标。

测试矿工 <-> 代理 <-> 池栈

终端 1

% cd examples/sv2-proxy
% cargo run --bin pool

终端 2:运行挖掘代理

% # For help run `cargo run -- --help`
% cd roles/v2/mining-proxy
% cargo run

终端 3

% cd examples/sv2-proxy
% cargo run --bin mining-device

依赖项

~15–23MB
~276K SLoC