Skip to content
广告 · 本站推荐广告

Nostr - 去中心化社交协议接入

Nostr(Notes and Other Stuff Transmitted by Relays)是一个极简的去中心化社交协议。与传统平台不同,Nostr 没有中心化服务器,所有消息通过 Relay(中继服务器)网络传播。OpenClaw 通过 Nostr 协议实现去中心化的 AI 交互。

前置要求

  • 一个 Nostr 密钥对(nsec 私钥 / npub 公钥)
  • 至少一个可用的 Relay 地址
  • OpenClaw Gateway(网关)已安装并运行

安装插件

bash
openclaw plugins install @openclaw/nostr

Nostr 基础概念

概念说明
nsecPrivate Key(私钥),用于签名消息,绝不可泄露
npubPublic Key(公钥),用于标识身份,可公开分享
Relay中继服务器,负责转发和存储 Event(事件)
EventNostr 上的基本数据单元,包含消息、签名等
NIPNostr Implementation Possibilities(协议扩展提案)

生成密钥对

如果还没有密钥对,可以通过以下工具生成:

bash
# 安装 nak CLI 工具
go install github.com/fiatjaf/nak@latest

# 生成密钥对
nak key generate
bash
# 安装 noscl
go install github.com/fiatjaf/noscl@latest

# 生成密钥对
noscl keygen

私钥安全

nsec 私钥是你在 Nostr 上的唯一身份凭证,丢失无法找回,泄露则身份被盗。请使用安全的方式存储,切勿硬编码在代码仓库中。

配置 OpenClaw

json5
{
  channels: {
    nostr: {
      enabled: true,
      privateKey: "nsec1xxxxx",                 // Bot 的 nsec 私钥
      relays: [                                  // Relay 列表
        "wss://relay.damus.io",
        "wss://nos.lol",
        "wss://relay.nostr.band"
      ],
      dmPolicy: "pairing"                       // DM Policy(私信策略)
    }
  }
}

也可以通过 Environment Variable(环境变量)设置:

bash
export NOSTR_PRIVATE_KEY="nsec1xxxxx"

启动与验证

bash
openclaw gateway restart

使用 Nostr 客户端(如 Damus、Amethyst、Snort)向 Bot 的 npub 发送 DM(加密私信),获取 Pairing Code(配对码)后批准:

bash
openclaw pairing approve nostr <pairing-code>

Relay 配置

选择合适的 Relay 对消息传递至关重要:

json5
{
  channels: {
    nostr: {
      relays: [
        "wss://relay.damus.io",          // 全球最大的公共 Relay
        "wss://nos.lol",                  // 稳定的公共 Relay
        "wss://relay.nostr.band",         // 搜索优化 Relay
        "wss://your-private-relay.com"    // 自建私有 Relay
      ],
      relayOptions: {
        reconnectInterval: 5000,          // 断线重连间隔(毫秒)
        writeRelays: ["wss://nos.lol"],   // 指定写入 Relay
        readRelays: ["wss://relay.damus.io"]  // 指定读取 Relay
      }
    }
  }
}

Relay 选择建议

建议配置 3-5 个 Relay 以确保消息冗余。混合使用大型公共 Relay 和小型社区 Relay 可获得最佳效果。

NIP 支持

OpenClaw 支持以下 Nostr NIP(协议扩展提案):

NIP名称说明
NIP-01Basic Protocol基础事件协议
NIP-04Encrypted DM加密私信(旧版)
NIP-17Private DM私信(新版,推荐)
NIP-09Event Deletion事件删除
NIP-25Reactions消息表情回应
json5
{
  channels: {
    nostr: {
      nips: {
        useDMNip: 17,          // 使用 NIP-17 新版私信(默认)
        allowReactions: true    // 允许处理 Reaction 事件
      }
    }
  }
}

DM Policy(私信策略)

策略说明
pairing用户需先获取 Pairing Code(配对码)验证
allowlist仅允许指定 npub 私聊
open所有人均可私聊(谨慎使用)
json5
{
  channels: {
    nostr: {
      dmPolicy: "allowlist",
      allowFrom: ["npub1xxx", "npub1yyy"]
    }
  }
}

常见问题

消息无法送达

  1. 确认 Relay 连接正常:openclaw channels status --probe
  2. 确认对方客户端使用了至少一个与 Bot 相同的 Relay
  3. 检查 Gateway 日志中是否有 Relay 拒绝消息

私信解密失败

  1. 确认使用的 NIP 版本与对方客户端兼容
  2. NIP-04 已逐步被弃用,建议切换到 NIP-17

Relay 频繁断线

  1. 增加 reconnectInterval
  2. 检查 Relay 是否有连接频率限制
  3. 考虑自建 Relay 以获得更稳定的连接

🇨🇳 中国用户须知

Nostr 在中国技术社区中有一定的使用基础,尤其在 Web3 和加密货币圈子中较为活跃。

网络访问:大部分公共 Relay 使用 WebSocket 协议(wss://),中国大陆可访问部分 Relay,但部分国际 Relay 可能不稳定。

推荐 Relay:优先选择亚太地区的 Relay 以获得更低延迟,或考虑自建 Relay 部署在国内服务器上。

客户端:Damus(iOS)、Amethyst(Android)等客户端在国内可能需要代理下载,但使用时连接自建 Relay 则无需代理。

适用场景:Web3 社区运营、去中心化应用交互、技术极客社群。

基于MIT协议开源 | 内容翻译自 官方文档,同步更新