一台 15 美元的 RISC-V 设备如何构建自己的闪电网络钱包——并学会向互联网支付
摘要
本教程介绍如何在仅 15 美元的 RISC-V 设备(LicheeRV Nano)上构建一个自主 AI 智能体,该智能体能够管理自己的闪电网络(Lightning Network)钱包,并通过 Nostr 进行自主比特币支付。
暂无内容
查看缓存全文
缓存时间: 2026/05/09 18:13
# 一台 15 美元的 RISC-V 设备如何自建闪电网络钱包——并学会向互联网付款
来源:https://www.eddieoz.com/how-a-15-risc-v-device-built-its-own-lightning-wallet-and-learned-to-pay-the-internet/
互联网正进入其第三个经济时代。第一个时代是免费信息时代——静态页面、横幅广告,将注意力转化为商品的广告模式。第二个时代是订阅和付费墙时代——SaaS、流媒体,这种经常性收入模式将营收困在信用卡和金融中介之中。第三个时代是原生的机器对机器(machine-to-machine)支付:自主 AI 代理不仅消费信息,还能即时、无需人工干预地使用互联网原生协议为信息付费。
HTTP 状态码 402——“需要付款”(Payment Required)——由蒂姆·伯纳斯-李(Tim Berners-Lee)于 1997 年预留,但从未实现。它一直沉睡在那里,如同一个等待基础设施到来的预言。三十年后,基础设施终于到位:比特币、闪电网络(Lightning Network),以及一种名为 Nostr Wallet Connect (NIP-47) 的协议,该协议允许任何闪电网络钱包通过 Nostr 中继与应用进行通信。加上具备自主执行能力的 AI 代理,我们就拥有了彻底重塑互联网价值交换方式的配方。
接下来我要讲的并非理论。这是一个故事:一台运行在 RISC-V 上的 Linux 设备——LicheeRV Nano(被命名为 Mecha Gerard)——如何构建自己的闪电网络钱包,在直播期间接收第一笔比特币支付,随后学会完全自主地为互联网上的 API 付费。全程纯 Python 实现。没有 Node.js,没有原生依赖,没有借口。
我最近获得了一块 LicheeRV Nano 开发板(RISC-V 架构),用于测试本地模型和一个 AI 代理——Picoclaw,它是 Openclaw 的一个“克隆版”(由制造商提供,基于开源 Go 代码交叉编译),仅需 10 MB 内存即可运行。我还获得了一个兼容摄像头(GC4653),用于配合本地图像分析模型,因为该板载有一颗算力为 1 TOPS 的 NPU。
拥有这样一台在市场上售价约 15 美元的小型设备,能在 Linux 上运行本地模型和代理,这一想法极具吸引力,因为它打破了围绕购买 Mac mini“以运行基于 API 的模型”的所有炒作。考虑到体验的价值,成本绝对是值得的。
💡 如果你喜欢这类内容,我稍后将在爱沙尼亚详细记录使用鸟类图像训练本地模型的过程,以便在乌鸦出现偷吃我们喂鸟器中的食物时进行检测和通知——这将在第 2 和/或第 3 部分中介绍,使用 LicheeRV Nano。
---
在探索了为 RISC-V 编译 Linux(Buildroot)、在 C++ 中访问硬件(包括摄像头)、启用原生编码器以启动流媒体服务、训练并上传模型到 NPU 以实时检测人员、物体(以及鸟类),并在设备上尝试原生 AI 代理之后,我决定给它加上外壳和充电宝,使其具备完全自主性。
向你介绍:Mecha Gerard:
20260508_220424.gif
我为代理创建了几项技能——拍照、启用流媒体、上传模型以识别姿势、人员、物体和鸟类。在完全自主连接至代理式 AI 的设备上工作的经历,让我对可探索的可能性感到更加好奇。
这时,在 Morning Crypto #950 的聊天中,有人抱怨无法发送 sat(聪),我发现我的闪电网络节点(我正在使用自托管的 Alby Hub)宕机了。直播结束后,我登录服务器查看情况,发现 Alby Hub 有更新,其中添加了一项 AI 代理技能,使其能够通过互联网原生协议(状态码 402)进行比特币支付。该协议由加密货币生态系统中的多个倡议正在开发中:
* **L402**:通过闪电网络进行原生比特币支付
* **x402**:由 Coinbase 推广和开发,支持多种加密货币和稳定币(链无关)
* **MPP**:由 Stripe 及其 Tempo 区块链开发
我去年已经就这一主题写过一篇文章 (https://www.eddieoz.com/x402-o-protocolo-que-vai-matar-o-cartao-de-credito-e-tornar-a-internet-realmente-nativa-para-pagamentos/)。由于我一直关注这些协议的开发进展,当我看到在我节点上运行该技能的说明时,我想应该测试一下,因为我坚信通过 L402 和 x402 等协议使用状态码 402,结合 AI 代理的自动支付,是数字支付的未来。
在让闪电网络节点恢复在线后,我设想**如果 Mecha Gerard 拥有自己的闪电网络钱包,并在互联网上自主付款,该会有多有趣**。于是我在节点上创建了一个独立的钱包,并开始了尝试在 Gerard 内部运行 Alby Hub 提供的技能的 saga(漫长历程)。
该设备没有 Node.js(广泛用于 Openclaw 代理)。它也没有包管理器。而且每个应用程序都需要为 RISC-V 编译——这不幸是一个限制。如果我们在 Raspberry Pi (RPi) 上因 AARCH64 (ARM64) 架构而难以运行某些应用程序,那么想象一下,这种几乎仅用于嵌入式设备的处理器资源有多么稀缺。
此外,Node.js 仍然需要我在设备上无法提供的存储和内存。但既然我已经在该设备上运行了 Python,我决定寻找一个通过 Nostr Wallet Connect 协议(与 Alby Hub 和其他钱包集成简单且容易)与闪电网络通信的应用程序。
这时我遇到了另一个问题:我发现的所有 Python 应用程序在安装时都会在设备上编译整个密码学层。原因很简单:二进制代码的性能远优于解释型代码。然而,作为一个具有严重内存和存储限制的嵌入式设备,没有可用的工具链来完成应用程序的本地安装。
于是,我决定使用 Mecha Gerard 内部的代理本身来构建其自己的闪电网络钱包(受 Alby Hub 发布的技能启发)——但完全使用 Python,不依赖任何密码学方面的外部依赖(从头重建所有必要的加密算法),已经考虑到嵌入式 RISC-V 设备的受限环境。
随后,我收集了从头构建所有内容所需的所有参考资料:比特币密码学原语的工作原理(我之前曾从头重建过 RSA (https://github.com/eddieoz/RSA-primes-resolution?ref=eddieoz.com),还构建了一个使用比特币私钥及其密码学原语加密内容的概念验证 (https://github.com/eddieoz/bitencrypt?ref=eddieoz.com) 等项目),以及所有需要的规范。
手头有了规范——NIP-47 (Nostr Wallet Connect) (https://nips.nostr.com/47?ref=eddieoz.com)、BIP-340 (Schnorr 签名) (https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki?ref=eddieoz.com)、RFC 6979 (确定性随机数) (https://datatracker.ietf.org/doc/html/rfc6979?ref=eddieoz.com)、GetAlby 支付技能 (https://github.com/getalby/payments-skill?ref=eddieoz.com) 以及 Python NWC SDK (https://github.com/supertestnet/python_nwc?ref=eddieoz.com)——我可以在 Picoclaw(Mecha Gerard 内部的代理)上准备项目并开始执行。
在 Morning Crypto 期间观看 Gerard 构建自己的钱包的过程非常迷人。经过多次尝试和错误,直到所有端到端测试通过。就这样,它用纯 Python 完成了自己的钱包构建,没有任何外部依赖,可以在很短时间内完成审计。
然后我要求 Gerard 生成一个 1000 satoshi 的闪电网络发票,DevWalker 自愿支付了这笔费用(谢谢!)。就这样,Gerard 在直播期间收到了它的第一笔比特币支付——汇入它刚刚在设备内部构建完成的钱包。我们做了一些更多的发送和接收测试,结果大获成功!
随后我们有了另一个想法:如果 Gerard 可以浏览互联网并自主付费——进行购买、访问付费内容等怎么办?我承诺在直播后思考如何实现这一功能。
直播结束后,我从 Gerard 内部下载了代码以进行代码审查(因为在那之前我们不知道该技能实际上是如何工作的)。我可以说,虽然它工作了,但代码是一场灾难。代码审查和安全评估对于任何 AI 驱动的开发至关重要——除了显而易见的持续监控和监督需求之外——正如我在最近这篇文章中写到的风险 (https://www.eddieoz.com/deepseek-v4-pro-hermes-unauthorized-modification-of-security-controls/)。
因此,我深入研究了 L402 (https://docs.lightning.engineering/the-lightning-network/l402?ref=eddieoz.com) 和 x402 (https://www.x402.org/?ref=eddieoz.com) 协议的规范,并在 Alby Hub 的 Node.js 支付技能中再次查找参考资料。凭借这些,我在工具中实现了支付方法,使得 AI 代理在导航到链接并检测到需要付费时,可以进行支付,然后自动获得对内容或产品的访问权限。
所以现在你只需要要求代理访问一个链接,它就会利用其自身配置的比特币钱包资源,自主执行整个过程。你可以在 Morning Crypto 第 950 集 (https://youtube.com/live/o-Cc3mjQyXc?feature=share&ref=eddieoz.com) 和第 951 集 (https://youtube.com/live/pOpcCT1D7tg?feature=share&ref=eddieoz.com) 中观看全部内容。
---
## NWC Agent:技术技能
在直播后的代码审查之后——其中 Gerard 的代码虽然能工作但结构上是一团糟——结果是:**nwc-agent** (https://github.com/eddieoz/nwc-agent?ref=eddieoz.com):一个专为自主 AI 代理设计的闪电网络钱包。零原生密码学依赖。纯 Python。可在 RISC-V、ARM、x86_64 上运行。可与任何兼容 NIP-47 的钱包配合使用(Alby Hub, CoinOS, Rizful, LNCURL)。
### 为什么要在 Python 中重建所有密码学?
每个人都会问的问题:为什么不使用现成的库?除了明显的依赖不兼容性外,答案还在于*软件供应链*。在 2024 年至 2026 年间,开源软件生态系统经历了前所未有的供应链攻击升级。`xz` 中的后门(CVE-2024-3094)差点危及所有 Linux 发行版中的 SSH——之所以被发现,是因为一名微软工程师注意到 SSH 登录时有 500 毫秒的延迟。2025 年 3 月,被超过 23,000 个存储库使用的 GitHub Action `tj-actions/changed-files` 被入侵,并以明文形式泄露了 CI/CD 密钥。Sonatype 仅在 2025 年就识别出超过 454,600 个新的恶意包。而在 2026 年 3 月,一波协调行动在 12 天内破坏了五个开源包——包括 LiteLLM,这是 AI 代理用于调用 OpenAI、Anthropic 和其他提供商的 LLM API 网关。
**每个依赖项都是攻击面。**当自主代理拥有支出能力时,被入侵的依赖项不会泄露数据——它会耗尽资金。
`nwc-agent` 通过一种激进的理念解决了这个问题:
* **3 个依赖项**。仅此而已。`pyaes`(纯 Python 实现的 AES)、`websocket-client`、`pyyaml`。它们都不编译原生代码。它们都没有 C 扩展。
* **约 1,400 行可审计的密码学代码**。整个密码学栈——secp256k1 椭圆曲线算术、带有 RFC 6979 确定性随机数的 BIP-340 Schnorr 签名、用于 NIP-44 的 ChaCha20-Poly1305 加密、HKDF 派生、EC 密钥的 DER 编码——都在一个文件中以可读的 Python 编写(`nwc_wallet.py`)。你可以一口气读完并验证其中没有对未知主机的网络调用、没有混淆的数据块、没有自动更新的依赖树。
将其与替代方案进行比较:
| 解决方案 | 依赖项 | 原生代码 | 攻击面 |
|---|---|---|---|
| **nwc-agent** | 3(纯 Python) | 0 行 | 极小 |
| @getalby/sdk (Node.js) | 200+ 传递依赖 | 原生 secp256k1 | 高 |
| python_nwc (参考实现) | secp256k1 + pycryptodome | C 扩展 | 中 |
| LND (gRPC) | 完整 Go 工具链 | 整个 LND 栈 | 极高 |
### 支付协议:L402、X402 和 MPP
该技能支持三种基于 HTTP 402 的协议。`fetch` 命令执行自动检测——你传入 URL,它会自动判断使用哪种协议:
```python
python3 scripts/nwc_wallet.py fetch https://api.example.com/v1/generate
```
**L402(闪电服务认证令牌):**最常见的协议。服务器响应 `402 Payment Required` + 头 `WWW-Authenticate: L402 token=, invoice=`。客户端提取 Bolt11 发票,通过 NWC 支付,然后使用 `Authorization: L402:` 重试请求。马卡龙(macaroon)+ 原像(preimage)可重复使用——支付一次后,对同一代理的所有后续请求均可使用带有授权头部的 `curl`。
**X402:**由 Coinbase 推广的替代方案。挑战信息以包含 base64 编码 JSON 的 `PAYMENT-REQUIRED` 头形式出现。支持多种支付方式——客户端找到 `lightning` 条目,支付发票,并响应 `payment-signature`。包括值验证:如果发票与挑战中声明的不匹配,支付将中止。
**MPP(多方支付):**基于 `draft-lightning-charge-00` 规范,使用 JCS(JSON 规范化方案)凭证。挑战信息是 base64url 编码的。检测在调度器(`nwc_fetch.py`)中是完全自动的:首先检查 `WWW-Authenticate` 中是否有 "L402",然后是 `PAYMENT-REQUIRED` (X402),然后是 `WWW-Authenticate` 中的 "Payment" + "lightning" (MPP)。如果服务器返回 402 但没有任何识别出的协议(例如,使用 USDC 或 ETH 支付),命令将报告“无受支持的支付协议”——仅支持比特币/闪电网络。
### 命令和接口
整个接口是为 LLM 函数调用设计的,而不是为交互式人类使用设计的。每个命令都向 stdout 返回结构化 JSON。每个错误都发送到 stderr。
**钱包操作:**
| 命令 | 参数 | 返回 |
|---|---|---|
| `balance` | — | 以聪为单位的余额 |
| `pay_invoice` | | `{"paid": true, "preimage": "..."}` |
| `pay_invoice_async` | | 发后即忘(稍后检查) |
| `make_invoice` | `[desc]` | Bolt11 发票 |
| `lookup_invoice` | | 状态和详细信息 |
| `check_payment` | | `{"paid": true/false}` |
| `list_transactions` | `[type] [limit] [offset]` | 交易 JSON 数组 |
| `get_info` | — | 钱包别名、支持的方法 |
**HTTP 402 支付:**
```python
python3 scripts/nwc_wallet.py fetch https://example.com/resource
python3 scripts/nwc_wallet.py fetch --method POST --body '{"key":"val"}'
python3 scripts/nwc_wallet.py fetch --max-amount 1000
```
第一次成功的 `fetch` 后,**保存马卡龙和原像**并直接使用 `curl`——不要对同一代理调用两次 `fetch`;每次调用都会触发新的支付:
```bash
curl -s "https://proxy.example.com/resource" \
-H "Authorization: L402 ${MACAROON}:${PREIMAGE}"
```
**服务发现:**
```python
python3 scripts/nwc_wallet.py discover -q "image generation"
python3 scripts/nwc_wallet.py discover -p x402
```
`discover` 命令查询 402index.io (https://402index.io/?ref=eddieoz.com) 并仅返回接受通过比特币/闪电网络支付的服务。
**法币/聪转换**(通过 CoinGecko API,无需钱包):
```python
python3 scripts/nwc_wallet.py fiat_to_sats 10 USD # 10 美元 → 聪
python3 scripts/nwc_wallet.py sats_to_fiat 1000 EUR # 1000 聪 → 欧元
```
### 安全
安全模型建立在单一原则之上:NWC URL 包含钱包的私...
相似文章
@DivyanshT91162: 每个人都被云端的AI代理分心……与此同时,一些人悄悄地把他们的笔记本电脑变成了自主AI…
描述如何将笔记本电脑变成一台24/7全天候自主AI研究机器,使用 Qwen3-35B-A3B、llama.cpp 和 Unsloth 的4位量化,无需云或GPU服务器。
@svpino:本周最炸裂演示:我的 agent 自己掏钱买数据,无需 API key、账户、信用卡……
一段自主 agent 演示显示,它通过 Coinbase 实验性的 x402 加密支付协议,自行支付数据费用,全程无需用户 API key 或信用卡。
Show HN:我构建了一个主权操作系统、L1区块链、AI代理和编程语言
一位开发者展示了IONA,这是一个完全用Rust从零开始耗时10年构建的主权数字生态系统,包括操作系统、L1区块链、编程语言和本地AI代理。该项目已在GitHub上发布,欢迎技术反馈。
@0xCristal: https://x.com/0xCristal/status/2068280221954961731
本文介绍了一台运行六个AI代理(24/7不间断)的配置,设备是Minisforum MS-S1 Max迷你工作站,搭载AMD Ryzen AI Max+ 395芯片,每月电费仅11美元。文章强调从云端API成本转向本地推理,实现始终在线的代理,用于邮件分类、研究监控和文档处理等任务。
我如何构建自己的零成本AI助手
作者描述如何利用免费云服务积分和多个语言模型的回退链构建一个零成本的AI个人助手,包括Hermes Agent、Gemma 4、Qwen3等,部署在AWS和Oracle Cloud实例上。该助手集成了Telegram和Discord,并管理Spotify和电子邮件。