Docs for this language are not available yet; showing Chinese content.

Daemon 手册

通道 B:从 GitHub 安装 sharpside-daemon(Release / 源码 / 前台试跑)

6 min read2026-08-08
daemonchannel-bself-hostedinstall

公开仓库:laoshalab/sharpside-daemon(Apache-2.0)。本文安装流程与该仓 README 对齐。

角色

sharpside-daemon 在用户本机运行:用平台颁发的 DAEMON_API_KEY 从 copier 拉取指令 → 本地风控 → 本地 EOA 签名 → 回传成交。平台永不持有该用户 Venue 私钥。

来源说明
公开仓https://github.com/laoshalab/sharpside-daemon
monorepo apps/daemon / opensource/sharpside-daemon与平台同仓开发;公开树同步到 GitHub

选型见 双通道选型。凭证页:Daemon Key

安装前准备

场景要求
二进制安装(推荐)Linux x86_64 或 aarch64、systemd、curl、root
源码构建Rust 1.91+、网络(crates.io)
平台侧Sharpside 账号;在 Daemon Key 颁发 API key;知道 COPIER_URL

COPIER_URL:经平台 gateway 时须为 https://<你的网关主机>/api/copier(请求路径是 {COPIER_URL}/me/...)。本机直连可用 http://127.0.0.1:8083。不要只填 gateway 根域名。

选 A 还是 B?

情况
GitHub 已有 Release(当前最新 v0.1.1方式 A(推荐,x86_64)
尚无 Release / A 下载失败 / 要改代码 / aarch64方式 B
先试拉单与 dry-run方式 C

A 与 B 装完后布局相同(/usr/local/bin/sharpside-daemon/etc/sharpside/daemon.env、unit sharpside-daemon)。双轨契约见仓库 docs/DAEMON_DUAL_TRACK_INSTALL.md

方式 A 架构范围

v0.1.1 Release 目前提供 x86_64 musl 资产;aarch64 交叉构建尚未通过,ARM 机器请用方式 B。

端到端顺序:

  1. Web 颁发 Daemon Key,记下 用户 UUIDAPI key
  2. 本机安装并配置 daemon(先建议 DAEMON_DRY_RUN=1
  3. 创建跟随时通道选 Daemon,在 我的跟随 恢复

方式 A:Release 二进制 + systemd(推荐)

若 GitHub 尚无 Release,install.sh 会失败并提示改用方式 B——请直接跳转,不要空转重试。

# 可选:指定仓库(默认已是 laoshalab/sharpside-daemon)
export SHARPSIDE_DAEMON_REPO=laoshalab/sharpside-daemon

curl -fsSL https://raw.githubusercontent.com/laoshalab/sharpside-daemon/main/assets/install.sh | sudo bash
# 固定版本:curl -fsSL …/install.sh | sudo bash -s -- 0.1.1

脚本会:检测架构(x86_64 / aarch64 linux-musl)→ 下载 Release tarball(可选 SHA256)→ 安装到 /usr/local/bin/sharpside-daemon → 创建用户 sharpside/var/lib/sharpside → 写入模板 /etc/sharpside/daemon.env(若不存在)→ systemctl enable --now

然后填配置并重启:

sudo nano /etc/sharpside/daemon.env
sudo systemctl restart sharpside-daemon
sudo systemctl status sharpside-daemon
journalctl -u sharpside-daemon -f

方式 B:源码构建 + systemd

git clone https://github.com/laoshalab/sharpside-daemon.git
cd sharpside-daemon

./scripts/check-public-tree.sh   # 不得出现 kms / sqlx / 平台 db
cargo build -p sharpside-daemon --release

sudo install -m 0755 target/release/sharpside-daemon /usr/local/bin/
sudo install -d /etc/sharpside /var/lib/sharpside /var/log/sharpside
sudo install -m 0644 assets/sharpside-daemon.service /etc/systemd/system/

sudo tee /etc/sharpside/daemon.env >/dev/null <<'EOF'
DAEMON_USER_ID=
DAEMON_API_KEY=
POLYMARKET_PRIVATE_KEY=
COPIER_URL=https://your-gateway-host/api/copier
DAEMON_DRY_RUN=1
DAEMON_HEADLESS=1
RUST_LOG=info
EOF
sudo chmod 0600 /etc/sharpside/daemon.env

sudo useradd --system --home /var/lib/sharpside --shell /usr/sbin/nologin sharpside 2>/dev/null || true
sudo chown -R sharpside:sharpside /var/lib/sharpside /var/log/sharpside

sudo systemctl daemon-reload
sudo systemctl enable --now sharpside-daemon

方式 C:本机前台试跑(TUI / 调试)

适合先验证拉单与 dry-run,不必上 systemd。

git clone https://github.com/laoshalab/sharpside-daemon.git
cd sharpside-daemon
cargo build -p sharpside-daemon

export DAEMON_USER_ID='你的用户 UUID'
export DAEMON_API_KEY='web 颁发的 key'
export COPIER_URL='https://your-gateway-host/api/copier'   # 或 http://127.0.0.1:8083
export DAEMON_DRY_RUN=1
export RUST_LOG=info
# 真签单时:
# export DAEMON_DRY_RUN=0
# export POLYMARKET_CLOB_POST=1
# export POLYMARKET_PRIVATE_KEY='0x...'

./target/debug/sharpside-daemon

有 TTY 时进入 TUI;无 TTY 或 DAEMON_HEADLESS=1 时走日志模式。

TUI: p/r 暂停/恢复 · f 过滤 · l ledger · Enter 详情 · k 密钥提示 · ? 帮助 · q 退出


必填配置

优先级:默认 ← ~/.config/sharpside/daemon.toml ← dotenv ← 环境变量(最高)。systemd 主要改 /etc/sharpside/daemon.env

变量必填说明
DAEMON_USER_ID平台用户 UUID
DAEMON_API_KEYWeb「Daemon Key」明文
COPIER_URLgateway:…/api/copier;直连:http://127.0.0.1:8083
POLYMARKET_PRIVATE_KEY真交易时0x… EOA;或 keys.enc / keyring
DAEMON_DRY_RUN建议先 11=合成成交;0=真实签名
POLYMARKET_CLOB_POST可选1=真实 POST /order
DAEMON_POLL_SECS短轮询,默认 10
DAEMON_LONG_POLL1 长轮询;失败自动降级
DAEMON_HEARTBEAT_SECS默认 30在线状态只看 heartbeat
DAEMON_METRICS / DAEMON_METRICS_BIND默认 127.0.0.1:9090/metrics

签名私钥来源:SHARPSIDE_KEYRING=1~/.config/sharpside/keys.encPOLYMARKET_PRIVATE_KEY

热加载(重载私钥文件):

sudo kill -USR1 "$(pidof sharpside-daemon)"

验收

systemctl is-active sharpside-daemon
curl -s http://127.0.0.1:9090/metrics | head
journalctl -u sharpside-daemon -n 100 --no-pager

期望:心跳 / 轮询成功;dry_run=1 有合成成交回传;错 key 时停轮询且日志含 401/403。

升级 / 卸载

# 升级:重跑 install.sh 或替换二进制后
sudo systemctl restart sharpside-daemon

sudo systemctl disable --now sharpside-daemon
sudo rm -f /usr/local/bin/sharpside-daemon /etc/systemd/system/sharpside-daemon.service
# 可选:sudo rm -rf /etc/sharpside /var/lib/sharpside

故障排查

现象处理
401 / 403Web 重新颁发 key,更新 env 后 SIGUSR1 或 restart
Release 下载失败用方式 B;或设 SHARPSIDE_DAEMON_REPO=laoshalab/sharpside-daemon
长轮询失败自动降级短轮询;或 DAEMON_LONG_POLL=0
一直 dry-runDAEMON_DRY_RUN=0 并配置私钥
协议不兼容升级公开仓 daemon,或等待平台协议升级

完整文档

公开仓 README 为安装权威入口。平台仓库另有 docs/RUNBOOK_DAEMON.mddocs/DAEMON_PROTOCOL.md