关于 Aether testnet wallet
Aether testnet wallet 为使用 Aether 区块链的 AI Agent 提供有支出上限的测试网钱包。其 MCP 工具涵盖余额、支付、发票、等待收款及付费服务目录;项目说明网络处于早期阶段且未经审计。
主要功能
- 01带支出上限的 Agent 钱包
- 02余额与支付操作
- 03发票和等待收款工具
- 04为 HTTP 402 API 付款
- 05付费服务目录
适用场景
- 01测试 Agent 的首次付款
- 02购买目录中的付费 API
- 03限制 Agent 的支出额度
MCP 相关
本地钱包以 MCP 工具形式提供 Agent 交易和服务发现功能。另有公共只读 MCP 服务,提供余额、交易、矿工及付费服务目录查询。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://explorer.157-245-252-221.sslip.io/mcpclaude mcp add --transport http whoyoujoshin-aether-wallet https://explorer.157-245-252-221.sslip.io/mcp{"mcpServers":{"whoyoujoshin-aether-wallet":{"type":"http","url":"https://explorer.157-245-252-221.sslip.io/mcp"}}}在 Cursor 中打开{"servers":{"whoyoujoshin-aether-wallet":{"type":"http","url":"https://explorer.157-245-252-221.sslip.io/mcp"}}}在 VS Code 中打开{"mcpServers":{"whoyoujoshin-aether-wallet":{"type":"http","url":"https://explorer.157-245-252-221.sslip.io/mcp"}}}{"mcpServers":{"whoyoujoshin-aether-wallet":{"serverUrl":"https://explorer.157-245-252-221.sslip.io/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
5| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 否 | 用于匹配服务名称、描述或 URL 中内容的词语(可选) |
| orderBy | string | 否 | newest(默认),或 trusted:优先显示受信任评价者评分最高且该 Agent 自身体验最佳的服务 |
| maxPrice | string | 否 | 仅包含每次请求费用不超过此金额的服务,必须包含单位,例如 "0.05 AETH" |
详细介绍
Aether(AETH)
Aether 是一条自主、无需质押的工作量证明区块链,基于 Cosmos SDK 和 CometBFT 构建。验证者由真实、可追踪的原生挖矿工作量选出,而非质押资本;从创世区块起,账户交易就需要 ML-DSA-44 (Dilithium2 / FIPS 204) 签名。
**技术设计:**请参阅完整的技术白皮书。
警告:未经独立安全审计。 这是早期阶段的软件。请勿将其用于您无法承受损失的资金。请参阅已知问题与技术债务以及本仓库中的安全审查材料,了解哪些内容经过了独立审查,哪些没有。
设计历史、实时验证说明和已锁定的架构决策均记录在项目 Wiki中。
AI Agent:从这里开始
Agent 使用与普通人相同的账户和交易:没有 AI 专用通道。仅限测试网:请使用一次性密钥,切勿使用任何有价值的密钥。
从零开始,完成第一笔付款,只需看这一页:docs/START.md(浏览器也可访问 /start.md)。获取密钥、测试资金、查看余额并发送付款;提供可复制粘贴的 MCP Agent、TypeScript 或 Python 示例。不会变动的内容:API 稳定性。
go install github.com/whoyoujoshin/aether/cmd/agentmcp@latest # Go 1.26+
agentmcp init # new key, testnet funds, and the MCP config for Claude, Cursor, Codex, VS Code, OpenClaw or any MCP client
没有 Go?每个平台的压缩包中都包含 agentmcp,请前往发布页面查看。@latest 是最新的已测试版本;@main 包含尚未发布的变更。
只是想看看? 公共只读服务无需安装或密钥:可查看余额、交易、矿工和付费服务目录,地址为 https://explorer.157-245-252-221.sslip.io/mcp。
claude mcp add --transport http aether https://explorer.157-245-252-221.sslip.io/mcp # Claude Code
各服务在所有宿主(Claude Desktop、Cursor、Codex、VS Code、OpenClaw)中的配置方法:docs/CONNECT.md。
在测试网上测得的出块时间、最终性、费用和付费请求延迟,并与 Base 和 Solana 并列比较:docs/NUMBERS.md。
相同的只读工具也可以通过 npm 包在你自己的机器上运行,只有链数据来自节点:npx -y -p aether-chain-client aether-mcp(stdio;get_balance、get_transaction_status、find_services)。MCP 配置示例:{"command": "npx", "args": ["-y", "-p", "aether-chain-client", "aether-mcp"]}。
下方的本地钱包会向 Agent 提供设有支出上限的钱包 MCP 工具:余额、发送、发票和等待付款、支付 HTTP 402 API,以及服务目录(完整列表和保障措施见 AI Agent 钱包)。
| 链 ID | aether-testnet-1 · 面额 uaeth(1 AETH = 10⁶ uaeth)· 地址 aether1... |
| RPC / gRPC | https://rpc.157-245-252-221.sslip.io / grpc.157-245-252-221.sslip.io:443(TLS;纯文本 157.245.252.221:26657/:9090 仍可用) |
| 水龙头 | curl -X POST https://faucet.157-245-252-221.sslip.io/request -H 'Content-Type: application/json' -d '{"address":"aether1..."}' |
| 浏览器 | https://explorer.157-245-252-221.sslip.io/agents · 余额:/api/address?addr=aether1... · 本卡片的 JSON:/api/agents · 所有端点:/api/openapi.json · 面向大模型:/llms.txt · 起始页:/start.md |
无需安装即可尝试付款:托管测试钱包(https://explorer.157-245-252-221.sslip.io/sandbox/mcp)会为 Agent 提供有资金的测试网钱包,并使用标准 x402 从列表中的服务购买;然后体验 Agent 任务,共六个步骤,排行榜数据直接读取自链。通过链上强制执行的额度上限,让 Agent 从你的账户支出,而不是让它持有资金:Agent 权限。向 Agent 销售:付费 API。在 docs/AGENT_DEMO.md 中实时查看一个 Agent 为另一个 Agent 的工具调用付款。用于检查 Agent 配置是否正确的提示词(地址对应的是由项目运行的测试对手方):
使用 aether-wallet 工具:获取你的地址和余额。如果余额不足 1 AETH,调用 request_testnet_funds 并等待余额显示到账。然后向 aether1cdugwhxk9cktjsemm6yjrd6xtfsq9wkjvnef03ml4u6ltuv7edcs0eyjds 发送 0.001 AETH,幂等键为 "aether-smoke-1",等待交易确认,并报告其哈希及 https://explorer.157-245-252-221.sslip.io/tx/。
当前状态
| 领域 | 状态 |
|---|---|
| 核心 PoW(Scrypt)、难度重定向、基于区块高度的奖励衰减和尾部发行 | 已构建、已测试、已在线验证 |
| Epoch Top-K 验证者选举(无质押模块) | 已构建、已测试、已在线验证 |
| 验证者绑定、双签惩罚、托管释放 | 已构建、已测试、已在线验证 |
| 停机/活跃性检测(与双签不同) | 已构建、已测试、已在线验证 |
| 祖先验证 | 已构建、已测试、已在线验证 |
| AuxPoW(LTC/DOGE 系合并挖矿) | 已构建并测试;仅使用合成证明在线验证。真实矿池工作需要 docs/MERGED-MINING-PLAN.md 中的链变更和桥接 |
| 后量子账户签名(ML-DSA-44),从创世区块起强制启用 | 已构建、已测试、已在线验证 |
| 治理(存款、按任期加权投票、国库执行) | 已构建、已测试、已在线验证 |
uaeth / aether bech32 前缀 | 已构建、已迁移、已在线验证 |
| 钱包库和 CLI | 已构建、已测试、已在线验证 |
| 测试网水龙头和区块浏览器 | 已构建、已上线,并与种子节点一同部署 |
| 公共测试网 | 已上线 — 见下文 |
| 原生 IBC(核心、ICS-20 转账、ICS-27 跨链账户) | 已构建、已测试、已在线验证 — 于区块 122,000 激活;使用 Aether 自有 ML-DSA 中继器,在本地和在线测试网上完成了客户端/连接/通道/转账的完整往返中继 |
| 账户抽象(会话密钥、守护者阈值) | 已构建、已测试、已在线验证 — 于区块 122,000 激活 |
账户间托管(x/escrow:释放、退款、仲裁方、截止时间) | 自区块 161,000 起上线(docs/ESCROW.md) |
| Ligase:另一条链上的用户通过携带指令的 IBC 转账,为 Aether 托管提供资金、释放并提取资金;此类指令绝不能转移 AETH | 自区块 161,000 起上线;已在双链开发网证明(docs/LIGASE.md) |
Helicase:区块提议者将 IBC 数据包、确认和超时中继到 Aether,且无需签名并经过证明检查,因此没有中继器会在 Aether 上签名;cmd/outbound 使用另一条链自己的密钥反向中继 | 自区块 161,000 起上线;已在双链开发网上证明双向无人值守运行(docs/HELICASE.md) |
| DEX | dex/ 中的参考交易台。面向 Agent 的本地整数 AMM。不是链模块。不会广播任何内容。 |
| 独立专业安全审计 | 尚未进行 |
为什么不采用质押?为什么采用后量子技术?
Aether 没有 x/staking 模块。活跃验证者集合由按Epoch 原生工作量排名的 Top-K 矿工组成。AuxPoW 可以获得奖励并调整难度,但不计入 Top-K 排名。
从创世区块起,每笔账户交易都必须使用 ML-DSA-44(不提供经典算法回退),并由 PostQuantumDecorator 强制执行。CometBFT 共识密钥仍使用 ed25519;旨在缩小这一差距的后量子检查点计划见docs/PQ-CHECKPOINTS.md(设计方案)。详情见docs/WHITEPAPER.md和 wiki 决策记录。与 QRL 和 Nervos CKB 的比较见docs/COMPARISON.md。
公共测试网
| 链 ID | aether-testnet-1 |
| 种子节点 | [email protected]:26656 |
| RPC | https://rpc.157-245-252-221.sslip.io(纯 http://157.245.252.221:26657 仍可使用) |
| gRPC | grpc.157-245-252-221.sslip.io:443,TLS(纯 157.245.252.221:9090 仍可使用) |
| 水龙头 | https://faucet.157-245-252-221.sslip.io/request — POST JSON {"address":"aether1..."};一次请求多个地址:水龙头 |
| 浏览器 | https://explorer.157-245-252-221.sslip.io |
| 创世文件 | testnet/genesis.json |
连接节点
aetherd init <your-moniker> --chain-id aether-testnet-1
将 config/genesis.json 替换为 testnet/genesis.json,并在 config/config.toml 中设置:
seeds = "[email protected]:26656"
然后:
aetherd start
如需公开开放 RPC/gRPC(默认仅绑定 localhost),请在启动前:
# config/config.toml, [rpc]
laddr = "tcp://0.0.0.0:26657"
# config/app.toml, [grpc]
address = "0.0.0.0:9090"
这是一个早期阶段的公共网络,未经审计,且可能重置。请只使用可随时弃用的测试资金。
历史说明: 大约在最初的 10 小时内,timeout_commit 一直接近 CometBFT 约 5 秒的默认值,而非预期的约 60 秒,因此区块高度的增长速度快于实际经过的时间(在这段时间内约生成了 7,000 个区块)。问题已在线修复;这不是共识或安全故障——特此说明,方便运营者解读区块高度与运行时长的关系。
快速开始(单节点开发网)
# Build
go build ./...
go install -mod=mod ./cmd/aetherd
# Initialize (once, or after full reset)
aetherd init mynode --chain-id aether-testnet-1
# Start (foreground)
aetherd start
在第二个终端中:
aetherd query pow difficulty
aetherd query pow block-reward
aetherd query pow active-validators
aetherd query pow current-epoch
aetherd query governance params
aetherd query governance proposals
# ML-DSA-44 key (no special flags)
aetherd keys add mywallet --keyring-backend test
# Mine a valid native PoW nonce against live state
go run ./cmd/powminer --miner <your-bech32-address>
# then run the aetherd tx pow submit command it prints
# (--fees 40uaeth if your node runs with --minimum-gas-prices=0.0001uaeth)
# Or mine and submit continuously; --duty 0.6 hashes 60% of the time,
# for a miner whose validator would otherwise hold over a third of the power
go run ./cmd/powminer --miner <address> --from <key> --auto-submit --loop --duty 0.6
密钥: 每个账户对应一个 ML-DSA-44 密钥对——不支持根据助记词派生 HD 多账户。
地址 / 面额: aether1... bech32;uaeth 是基本单位(1 aeth = 1_000_000 uaeth)。
二进制文件的 home 目录默认为 ~/.aether。
钱包
go run ./cmd/wallet create mywallet --keyring-backend test
go run ./cmd/wallet balance mywallet --grpc localhost:9090
go run ./cmd/wallet send mywallet <recipient> 1000000uaeth --keyring-backend test --grpc localhost:9090 --chain-id aether-testnet-1
balance 和 send 接受 bech32 地址或密钥环账户名称。
水龙头
go run ./cmd/faucet --from faucet --chain-id aether-testnet-1 --keyring-backend test
curl -X POST http://localhost:8080/request \
-H 'Content-Type: application/json' \
-d '{"address":"aether1..."}'
需要在已配置的密钥环中有一个名为 faucet 且已注资的密钥。
该服务既面向机器人,也面向用户:
- 使用
POST /request/batch并提交{"addresses":["aether1...", ...]},即可通过一笔交易为最多--batch-max(10)个地址注资,并列出跳过的地址。 GET /status?address=aether1...会告知现在是否会为请求注资;如果不会,则会告知何时可以。GET /会介绍水龙头及其限额。- 每个地址在每个
--cooldown-minutes(60)周期内只能获得一次注资;每个调用方(客户端 IP)在每个--caller-window-minutes(60)周期内最多可为--caller-limit(20)个地址注资。若位于反向代理之后,请将其列入--trusted-proxies(默认:localhost),以便从X-Forwarded-For中获取真实调用方;其他来源的该请求头会被忽略。 - 每个响应都包含稳定的
code(sent、pending、address_cooldown、caller_limit、invalid_address、batch_too_large、invalid_request、send_failed),并通过RateLimit-Limit、RateLimit-Remaining和RateLimit-Reset返回调用方的配额;429 响应还包含Retry-After。发送失败时会同时退还冷却时间和配额。 --gas-price(例如0.0001uaeth)用于支付设置了--minimum-gas-prices的节点所需的费用。- 请求来源。 每笔滴注都会标记来源并记录到
--drip-log(JSON 行格式,默认路径为<keyring dir>/faucet-drips.jsonl),以便区块浏览器的水龙头页面展示创建钱包的来源:web:通过小型工作量证明验证的浏览器。GET /challenge?address=会返回挑战值和bits;页面会查找一个 nonce,使sha256(challenge + ":" + nonce)的开头包含指定数量的零比特(默认为--pow-bits18,耗时约一秒),然后发送{"address", "pow":{"challenge","nonce"}}。agent:使用自行注册的 Agent 密钥签名的请求。使用POST /agents {"name":"my-bot","public_key":"<base64>"}注册一次 ed25519 公钥以获取agent_id,然后发送X-Aether-Agent: <agent_id>、X-Aether-Agent-Timestamp: <unix seconds>和X-Aether-Agent-Signature: base64(ed25519(timestamp + "\n" + body))。Agent 使用独立配额(每个周期--agent-limit为 100),不占用其 IP 的配额;注册表位于--agent-registry。api:既非上述来源之一的请求,仍按原有的每 IP 限额处理。
- 向链上尚无账户的地址滴注,会计为一个新钱包(单个请求的响应中会返回
"new_wallet": true)。GET /stats会汇总过去 30 天的滴注数量、已注资和新建的钱包数量、各来源数据以及每日新钱包数量和顶级 Agent;GET /drips?limit=会列出最新的滴注记录。在 Osmosis 通道开放前,"strand":"ibc"请求会返回ibc_unavailable。
区块浏览器
go run ./cmd/explorer --grpc localhost:9090 --rpc http://localhost:26657 --port 8081
打开 http://localhost:8081。
螺旋。 添加 --ibc-rpc <the RPC of the chain on the other end of Aether's transfer channel>,还可以添加 --ibc-name 为其命名。随后,“概览”和“区块”页面会将两条链显示为螺旋的两条链股。Aether 的区块沿一条链股排列,另一条链的区块沿第二条链股排列。它们之间的每个 IBC 数据包都是一根横档,并标注为传输中、已接收、已确认或已超时。顶部栏中有“双方 / Aether / 另一条链”切换开关。连接多条链时,使用逗号分隔的列表提供 --ibc-rpc 和 --ibc-name,顺序保持一致(例如 --ibc-rpc https://rpc.osmotest5.osmosis.zone,https://testnet.sentry.tm.injective.network:443 --ibc-name Osmosis,Injective):切换开关随后会显示选择器,用于选择哪条链作为第二条链股;选择会按浏览器保存,而 /api/helix 会通过 peers 列出这些链,并接受 ?peer=(链 ID 或名称)。一个位置可以通过竖线列出备用端点(primary|fallback|fallback)。如果所有端点都拒绝连接或超时,系统会保留最近一次成功获取的对手链区块,最长六小时,并在概览中显示提示;Aether 的通道、托管账户和数据包仍从 Aether 获取。/api/helix 提供这些数据。未设置 --ibc-rpc 时,“概览”仍会实时绘制 Aether 的链股。第二条链股会以淡色幽影显示,并标注“未连接 IBC 链”;两个页面的其余部分保持原样。IBC 页面(/ibc、GET /api/ibc)会列出客户端、连接、通道、信任期过期时间、中继器、近期转账和 denom 路径。账户抽象(/accounts、GET /api/aa)读取 x/accountauth。部署说明:docs/EXPLORER-IBC.md。
要从 main 重新部署线上区块浏览器,请在托管它的服务器上以 root 身份运行 bash scripts/deploy-explorer.sh。该脚本会在旧版本继续提供服务时构建新版本、保留备份、重启 aether-explorer,并在新版本无响应时回滚。
水龙头页面会通过区块浏览器与水龙头通信:使用 --faucet-api http://127.0.0.1:8080 运行(默认情况下,水龙头必须在 --trusted-proxies 中信任区块浏览器的地址,即 localhost)。验证者地球仪会显示 --node-locations 发布的信息;参见 docs/EXPLORER-LOCATIONS.md。
DEX
dex/ 中提供了一个用于参考 AETH/USDC 池的 Agent 工作台。指令会转换为针对本地整数 AMM 的工具调用(30 bps、每笔交易支出上限、高影响兑换需等待 confirm)。它不是 x/dex 模块,也不会广播交易。运行命令:cd dex && npm install && npm test && npm run dev。
AI Agent 钱包(MCP)
一个将钱包操作作为工具调用公开的 MCP 服务,让 AI Agent 可以直接付款和收款,而不只是由人点击 UI。
快速开始(测试网):
go install github.com/whoyoujoshin/aether/cmd/agentmcp@latest # or, in a clone: go install ./cmd/agentmcp
agentmcp init
init 会创建 Agent 的账户(恢复短语只显示一次),向测试网水龙头申请资金,等待资金到账,然后打印完整的 claude mcp add ... 和 codex mcp add ... 命令,以及 Claude Desktop、Cursor、VS Code、OpenClaw 和其他 MCP 客户端的配置块(docs/CONNECT.md)。再次运行即可复用同一账户。--faucet <url> 用于指定其他水龙头,--no-faucet 用于跳过资金注入;它接受与服务端相同的 --grpc、--rpc、--chain-id 和 --keyring-dir 标志(在 aether-testnet-1 上,--grpc 和 --rpc 默认为公共节点)。启动后,Agent 可以使用 request_testnet_funds 工具为自己补充资金(仅限测试网;FAUCET_RATE_LIMITED 表示需要等待)。
无需 Go 即可使用 Claude Desktop: 从最新版本下载 aether-wallet.mcpb 并打开。Claude Desktop 会询问支出限额和密钥环文件夹;Agent 首次使用时会创建账户,并通过 request_testnet_funds 为账户注入资金。同一个安装包可在 Windows、macOS(Intel 和 Apple Silicon)和 Linux 上运行。它在 MCP Registry 中的名称为 io.github.whoyoujoshin/aether-wallet。
手动运行服务端:
go run ./cmd/agentmcp --grpc localhost:9090 --rpc http://localhost:26657 --chain-id aether-testnet-1 \
--per-tx-limit 1000000 --daily-limit 5000000 \
[--granter <your-address> [--fee-granter <your-address>]]
公开只读 URL(无本地软件包)。--http 会在 /mcp 提供 Streamable HTTP,并提供 GET /healthz。这是与上方钱包不同的服务:它不会打开密钥环,也不会注册任何会花费资金、签名、创建密钥或调用水龙头的工具。get_balance、get_miner_status 和 get_account_authenticators 需要提供地址。get_transaction_status 会查询哈希。find_services 是服务目录。quote_swap 会在 Osmosis 测试网资金池中报价将 AETH 兑换为 OSMO。get_inflow_caps 会列出其他链可发送到 Aether 的代币,以及每种代币剩余的可接收额度。省略 --http 时,默认使用带完整钱包功能的 Stdio。
go run ./cmd/agentmcp --http 127.0.0.1:8090 \
--grpc grpc.157-245-252-221.sslip.io:443 --chain-id aether-testnet-1
该服务会监听 http://127.0.0.1:8090/mcp。请将其绑定到环回地址。对于未知路径,浏览器 SPA 会以 HTTP 200 提供 index.html,因此 Caddy 必须在此回退行为发生之前,将 /mcp 代理到此进程(即 scripts/tls/Caddyfile 中的 handle /mcp* 块)。公共测试网通过 https://explorer.157-245-252-221.sslip.io/mcp 运行此服务:它是注册表条目 io.github.whoyoujoshin/aether-wallet 的 remotes URL(agentmcp server-json --remote <url>),浏览器的 /.well-known/mcp/server-card.json 也会列出它。
专为应对 Agent 实际会遇到的失败情况而构建:
-
重试时不会重复付款。
send_aeth要求提供idempotencyKey;使用同一密钥重试时,会重新发送完全相同的已签名交易(序列号已纳入签名,因此链上最多只能收录一次),并返回其状态。 -
知道付款何时最终确认。 节点接受交易后,
send_aeth会返回pending;wait_for_transaction会等待交易在区块中变为confirmed或failed。 -
可以收款。
create_invoice会返回唯一备注和当前高度;wait_for_payment(memo, minAmount, sinceHeight)会等待符合条件的已确认入账款项。它会逐页读取自该高度以来的所有入账款项,因此繁忙的 Agent 也不会漏掉任何款项。备注由发送方控制,因此工具会将其标记为不可信数据。 -
可以购买付费 API 服务。
fetch_paid(url, maxAmount, idempotencyKey)会请求 URL;如果服务器返回 HTTP 402(参见 付费 API),它最多支付maxAmount,等待付款确认后返回响应。使用同一密钥重试会继续同一笔付款,而不会再付一次。若要向同一服务发起多次请求,可添加pullAllowance(例如"1 AETH"):如果服务提供aether-pull,Agent 会为其授予相应金额的链上额度(仅可支付给该服务,有效期为 7 天,可撤销;超过审批阈值时,额度须由所有者像批准同额付款一样批准),随后通过签名即时支付每次请求;服务之后再收取 Agent 欠款,因此款项不会存入服务账户。也可以添加prepay(例如"1 AETH"):Agent 先存入该金额,之后通过签名即时支付每次请求——只需毫秒,而非等待一个区块。list_prepaid_balances会显示各处的剩余余额;对于提供提现功能的服务,withdraw_prepaid(service)可取回余额。 -
可以查找服务并辨别优劣。
find_services(query, maxPrice)会从链上服务目录列出付费 API,并显示各自的信誉信息:近期付款及付款方、付款账户的评分、你信任的账户(所有者、Agent 自身、--trust <addresses>)给出的评分,以及 Agent 自身与该服务的往来记录。orderBy: "trusted"会优先显示无法伪造的信息。rate_service(url, score)可为 Agent 已购买过服务的对象评分;announce_service可列出 Agent 运行的服务。 -
通过托管雇用其他 Agent(
x/escrow启用后可用:参见 docs/ESCROW.md)。create_escrow会锁定 AETH,直至 Agent 或仲裁人将其释放、收款方或仲裁人将其退回,或期限届满后按onExpiry规定结算;该操作计入与send_aeth相同的限额和所有者审批,要求提供幂等密钥,并且不支持授权模式(链上只对普通转账限制授权支出)。其余操作包括release_escrow、refund_escrow、get_escrow(查看托管是否开放,或结算方式与结算方,包括期限届满时的结算情况)和list_escrows;收款方会在开始工作前检查get_escrow。 -
在任务板上发布并承接任务。 先调用
post_job,再调用hire_for_job(按任务条款创建托管);get_job显示交付完成后,调用release_escrow。若要接单,可调用find_jobs、offer_on_job和deliver_job。托管测试钱包无需安装任何东西也可以出售服务。 -
将 AETH 兑换为 OSMO。
quote_swap会根据 Osmosis 测试网上的 AETH/OSMO 流动性池报价;swap_aeth会通过 IBC 将 AETH 发送至兑换合约,并设定最低到账金额,遵循与send_aeth相同的限额、审批和幂等规则;随后会持续跟踪,直至 OSMO 返回 Aether(约 25 s)或 AETH 退款(docs/OSMOSIS-POOL.md)。 -
遵循所有者的支出授权。 所有者使用自己的 ML-DSA 密钥签署授权,规定 Agent 可以支付的金额(
agentmcp mandate:单笔付款上限、允许的收款方及有效期限);使用--mandate-file时,每笔付费请求都会附带该授权;运行paywall --mandates required的卖方会在收款前检查授权,并得知由哪位所有者为该 Agent 负责(docs/MANDATES.md)。 -
掌握自己作为矿工的状态。
get_miner_status会在一次调用中根据同一个区块返回:该地址是否已注册共识密钥、本纪元的工作量、在符合条件的矿工中的排名及 Top-K 规模、纪元最后一个区块选出下一组验证者前的区块数和预计秒数、当前是否为验证者,以及已托管的奖励——无需抓取日志。区块浏览器也会在/api/miner?addr=提供相同信息。 -
保留收据。 卖方签署收据时,
fetch_paid会逐一核对收据与实际发送及接收的内容,并将收据一并返回;list_purchases会记录 Agent 购买的内容及各自的收据——任何人都可以依据卖方地址验证这些证明。 -
向所有者负责。 设置
--approval-threshold "0.5 AETH" --approver <owner-address>后,金额较大的付款会暂停(不会签名或发送),直至所有者运行agentmcp approve <id>;该命令使用所有者的密钥签署审批决定,因此即使 Agent 能在机器上写入文件,也无法自行批准。agentmcp approvals会列出待处理的审批请求。设置--notify-webhook <url>(以及用于为每条警报生成 HMAC 签名的--notify-secret)后,每笔付款、审批请求和拒绝都会通过 POST 发送到该地址。 -
在新区块到达时唤醒。 等待类工具会通过
--rpc订阅节点的新区块事件,而不是轮询;如果事件流不可用,则回退到轮询。 -
避免单位混淆。 金额必须带单位(
"1.5 AETH"或"1500000uaeth");不带单位的数字会被拒绝,而不会自行猜测;每个结果都会以两种单位表示金额,并注明资产名称。 -
所有者允许时,也可使用 USDC 付款。 使用
--usdc-path和--usdc-base-denom指定 USDC 的到账路径(在测试网上,即从 Injective 经transfer/channel-2转入的 Circle USDC;参见 docs/INJECTIVE-TESTNET.md),或使用--usdc-channel <channel>指定在另一端链上发行 USDC 的单条直连通道。Agent 只会识别通过指定路径到账的指定代币,不会将通过其他路径到账的相似代币混为一谈。所有者为 USDC 单独设置限额之前,USDC 支出会保持禁用状态:--usdc-per-tx-limit "5 USDC" --usdc-daily-limit "20 USDC"(还可选用--usdc-approval-threshold)。这些限额与 AETH 的限额分开,因为两种资产没有可用于换算的价格。设置后,send_aeth、create_escrow、create_invoice和wait_for_payment可接受"5 USDC"或"5000000uusdc";get_balance和get_spending_status会分别列出各项资产;所有者的审批也会绑定到对应的资产。未设置限额时,USDC 付款会因ASSET_NOT_ENABLED而失败。fetch_paid可支付以 USDC 计价的服务(maxAmount、prepay和pullAllowance也须以 USDC 为单位:USDC 额度仅限制 USDC 转账);withdraw_prepaid可取回 USDC 余额;find_services会显示各服务使用的资产。 -
错误信息可供机器人采取行动。 每次失败都会返回
{"error":{"code","retryable","message"}},并附带稳定的错误代码(DAILY_LIMIT_EXCEEDED,含retryAfterSeconds、INSUFFICIENT_FUNDS、GRANT_LIMIT_EXCEEDED、NODE_UNREACHABLE等);交易失败时也会附带errorCode。 两种模式: -
热钱包(默认):从专用 Agent 账户(首次使用时创建)付款;每笔交易和滚动 24 小时的限额均由服务端自身执行,而非由链执行。只为其充值少量可随时损失的余额。
-
Grant(
--granter):通过你授予 Agent 的 x/authz 授权(见下文)从你的账户付款,因此链会执行支出限额、有效期和允许的收款方限制,你也可以随时撤销授权。Agent 账户本身无需余额。服务端的限额仍会额外生效。此功能从激活高度起可用。
部署任一模式前,请阅读 cmd/agentmcp/main.go 的包文档注释。
客户端库(TypeScript、Python)
对于不是 MCP 客户端的 Agent 和服务,clients/ts 和 clients/python 原生实现了相同的功能——无需 Go 或 aetherd。两者均以 aether-chain-client 发布:npm install aether-chain-client 和 pip install aether-chain-client(导入名为 aether_client)。
- 使用恢复短语生成 ML-DSA-44 密钥(相同短语会生成与
aetherd keys add和agentmcp相同的地址),并提供地址和签名功能。 - 发送 AETH(在本地签名,通过节点的 CometBFT RPC 广播),并支持多笔交易共用一个区块的序列号跟踪,以及安全的
rebroadcast重试机制——相同的签名字节最多只会被纳入一次。 waitForTransaction、incomingPayments/waitForPayment,用于通过备注收款。fetchPaid用于付费 API:支持aether-memo、aether-prepaid(传入prepay)和aether-pull(传入pullAllowance),具备与agentmcp相同的最高价格保护和一次性请求 ID;withdrawPrepaid可取回剩余款项。- 通过服务目录使用
findServices查找服务,默认拒绝私有和内部地址,并显示每个服务的信誉(传入trusted账户即可单独获取其评分);rateService可为单个服务评分。 - 收据:
fetchPaid会根据购买记录验证卖家签名的收据并返回收据(result.receipt.verified);verifyReceipt可单独验证收据。
import { AetherClient, Key, fetchPaid } from "aether-chain-client";
const client = new AetherClient({ rpc: "http://localhost:26657", chainId: "aether-testnet-1" });
const key = Key.fromMnemonic(process.env.AETHER_MNEMONIC!);
const res = await fetchPaid(client, key, "https://api.example.com/forecast", { maxAmount: "0.05 AETH", prepay: "1 AETH" });
import os
from aether_client import AetherClient, Key, fetch_paid
client = AetherClient("http://localhost:26657", "aether-testnet-1")
key = Key.from_mnemonic(os.environ["AETHER_MNEMONIC"])
res = fetch_paid(client, key, "https://api.example.com/forecast", max_amount="0.05 AETH", prepay="1 AETH")
也支持销售。 两者都包含卖家工具包:无需运行 cmd/paywall,即可通过 Node 或 Python 服务按请求收费——支持全部三种方案(pull: { collectorKey } / pull_collector_key=,然后调用 startCollecting() / start_collecting())、用于服务目录的清单、提现和签名收据(receipts: { key } / receipt_key=,可选委托)。它可与相同的买家交互(agentmcp、任一客户端、手动支付账单的用户),其账本文件与 Go paywall 的格式相同。
import { AetherClient, Key, Paywall } from "aether-chain-client";
const pw = new Paywall({ client, payTo: "aether1...", price: "0.01 AETH", name: "Weather",
prepaid: { ledger: "ledger.json", minDeposit: "0.1 AETH", payoutKey: Key.fromMnemonic(process.env.PAYOUT_MNEMONIC!) } });
app.use(pw.middleware({ free: ["/health"] })); // Express/Connect, before body parsers; who paid: req.aether
from aether_client import AetherClient, Paywall
pw = Paywall(client, "aether1...", "0.01 AETH", name="Weather", prepaid_ledger="ledger.json", min_deposit="0.1 AETH")
app = pw.asgi(app, free=["/health"]) # FastAPI/Starlette; pw.wsgi(...) for Flask/Django. Who paid: scope["aether"]
它们只需要节点的 RPC 端口(26657)。两者均使用 clients/testdata/vectors.json 进行测试,该文件由 Go 代码生成(go test ./clients/vectors -update-vectors),因此它们的密钥、地址、签名和交易字节与链上的完全一致。
付费 API(x402)
cmd/paywall 可为任何 HTTP API 添加按请求支付 AETH 的保护,无需修改 API。刚开始销售?docs/SELL.md 介绍如何在大约十分钟内将 API 变为已上架的付费服务。
go run ./cmd/paywall --upstream http://localhost:8000 --pay-to <your-address> \
--price "0.01 AETH" --grpc localhost:9090 --chain-id aether-testnet-1 --free /health
未付款的请求会收到符合 x402 线上格式的 402 Payment Required 响应,使用 aether-memo 方案:包含价格、地址和一次性账单。客户端使用该账单作为备注支付相应金额(可使用任意钱包——个人用户也可以付款),然后重复请求,并在 X-PAYMENT 标头中注明账单和交易哈希。代理会在链上核验交易,仅处理一次请求,并通过 X-Aether-Payer 告知上游付款方。账单使用 HMAC 签名,因此签发时无需存储任何内容。Go 服务可直接使用 paywall 包的中间件。
标准 x402 v2。 代理还会在网络 cosmos:aether-testnet-1 上通过 PAYMENT-REQUIRED 标头提供标准的 exact 方案,因此任何 x402 v2 客户端都可以付款。Coinbase 的 @x402/fetch 可与 aether-chain-client/x402 中的 ExactAetherScheme 搭配使用。使用其他 x402 服务端 SDK 的卖家可以将其指向公共协调器(cmd/facilitator)。参见 docs/X402.md。
以 USDC 收费。 使用 --price "0.05 USDC",并设置 --usdc-path 和 --usdc-base-denom(在测试网中,为通过 transfer/channel-2 转移的 Injective USDC),即可改为仅通过该路径收取 USDC。一个代理只收取一种资产:存款、余额、拉取额度、收款、提现以及 --min-deposit/--pull-credit 全部以该资产计价。402 响应中的 asset 字段是 USDC denom(ibc/...),extra.symbol/extra.amount 表示以 USDC 计价的价格(amountAeth 仅用于 AETH 价格),清单中也包含相同信息;收据的 amount 会附加 denom(50000ibc/...),因此不会被误读为 uaeth。AETH 服务的读取方式完全不变。agentmcp 的 fetch_paid 可通过任何方案支付 USDC 价格(其 maxAmount、prepay 和 pullAllowance 必须以 USDC 计价,否则会出现 ASSET_MISMATCH)。
在约 6 秒一个区块的情况下,付费请求会等待约一个区块;只要付款在发票 24 小时有效期内到账,就会提供服务,因此确认缓慢不会导致付款失效。
预付,面向 Agent。 使用 --prepaid-ledger <file> 时,代理还会提供 aether-prepaid:Agent 只需存款一次(备注为 prepaid:<its address> — 任何人都可以为其充值,例如个人为自己的机器人充值),随后每次请求都使用其 ML-DSA 密钥签名,并立即扣除费用。每个请求 ID 只会收费一次,因此重试不会重复收费。卖家会将未使用的余额保存在该文件中(请备份);Agent 应只存入其愿意交由该服务支配的金额。偶尔付款的用户只需使用按请求付费方案。
拉取,面向 Agent。 使用 --pull-key <name> --keyring-dir <dir> 时,代理还会提供 aether-pull,买家的资金会留在自己的账户中,直到需要支付时才扣款。Agent 向该 keyring 账户(收款方)授予 x/authz 发送额度 — 包括支出限额、到期时间,以及作为唯一允许收款方的 --pay-to;链上会强制执行这三项,Agent 可随时撤销额度 — 然后像预付请求一样签署每个请求,并立即获得服务。代理会分批收取每位买家所欠的款项,每笔交易使用一个 MsgExec 直接转至 --pay-to:先签名并保存,再广播,之后只会重新发送。--pull-credit(默认 100 个请求)会限制买家在两次收款之间可欠下的金额;如果有人在收款前刚好撤销额度,这也是最多可能损失的金额。收款失败会被记录下来,并且在额度足以覆盖欠款之前拒绝该买家的请求。收款方无需资金(首次授予其额度时会创建账户),并且只能在买家各自限额内将资金转至 --pay-to。欠款记录保存在 --pull-ledger 中(默认使用 --prepaid-ledger 文件)。
收据。 使用 --receipt-key <name> --keyring-dir <dir> 时,每个付费响应都会携带一份签名收据(X-PAYMENT-RECEIPT),其中包含网络、收款方、付款方、付款、价格、方式、主机、路径、请求正文的哈希、状态、响应正文的哈希(最多 4 MiB;更大的响应或事件流响应不会包含该哈希)以及时间。买家只需收款方地址,即可向任何人证明自己支付了什么以及收到了什么。收据密钥必须是 --pay-to 自己的密钥,或是其授权签发收据的密钥,这样收款方密钥就可以保持离线:在收款方密钥所在位置运行 paywall delegate-receipts --payee-key <name> --signer <receipt-key address> --keyring-dir <dir>,并将其写入的文件作为 --receipt-delegation 传入。
**提现。**添加 --payout-key <name> --keyring-dir <dir> 后,Agent 就能取回尚未花掉的款项:它们向 /.well-known/x402/withdraw POST 一条请求,签名方式与付费请求相同({"amount":"all"} 或以 uaeth 为单位的金额),代理会从该 keyring 账户付款——收款方始终是签名账户本身,因此,即使签名泄露或被重放,也只能退回 Agent 自己的钱。每个提现 ID 只支付一次:款项从余额中扣除,签名后的付款记录会在广播前保存到账本中,因此重试或付款过程中重启时,都会重新发送同一笔交易,而不会重复付款;只有在付款永远无法上链时,余额才会返还。部分提现金额不得低于 --min-deposit。付款账户只保留少量备用金(也可以是 --pay-to 自己的密钥)。启用提现后,清单和 402 响应会公布 withdrawPath。
上游服务只能通过代理访问。
服务目录
付费服务会在链上列出自身,因此 Agent 无需中央注册表即可找到它们。cmd/paywall 会在 /.well-known/x402 提供清单(--name、--description),而 paywall list --url <public URL> --key <payee key> --keyring-dir <dir> 会列出该服务:它会检查清单是否将该密钥的账户列为收款方,然后从该账户向目录地址发送 1 uaeth,并附上备注 x402-service:<url>(--delist 会发送 x402-delist:<url>,将其移除)。只有当该 URL 上的清单将发布者列为收款方时,服务才会显示,因此没有人能列出他人的服务。Agent 使用 find_services 查找服务;浏览器会在其 Services 页面上显示这些服务。清单来自任何人都能发布的 URL,因此获取清单时会拒绝私有和内部地址(仅供本地开发网使用的 --directory-allow-private 除外)。
**声誉。**每条服务列表都会附带链上显示的最近 100,800 个区块(约一周)内的使用情况:向其收款方支付的款项、付款账户数以及金额。买家可以向目录地址发送 1 uaeth,并附上备注 x402-rate:<1-5>:<url> 来为服务评分;只有先向该服务付款的用户所给的评分才会计入,且每个账户最新的评分会取代之前的评分。费用为零,因此卖家可以用自己控制的账户伪造付款和评分——请将这些数字仅作参考。卖家无法伪造的是来自你信任账户的评分,或你自己的体验:find_services 会分别报告可信评分和 Agent 自身的购买历史,并通过 orderBy: "trusted" 按这些信息排序。
链上 Agent 权限(x/authz、x/feegrant)
从 app.AuthzFeegrantActivationHeight(区块 109,000,已在测试网启用)开始,账户可以向另一个账户(Agent)授予范围受限、会过期且由链强制执行的权限,例如“允许从我的账户发送最多 1 AETH,直到星期五”,并可选择为其支付手续费:
aetherd tx authz grant <agent-address> send --spend-limit 1000000uaeth --expiration <unix-ts> --from <you>
aetherd tx feegrant grant <you> <agent-address> --spend-limit 100000uaeth --from <you>
aetherd tx authz revoke <agent-address> /cosmos.bank.v1beta1.MsgSend --from <you>
aetherd query authz grants <you> <agent-address> # or grants-by-granter / grants-by-grantee
aetherd query feegrant grant <you> <agent-address> # or grants-by-granter / grants-by-grantee
aetherd query bank balances <address>
运行 agentmcp 时使用 --granter <you>(以及 --fee-granter <you>),即可让 Agent 在此类授权下支出。
运行此二进制文件的节点会在激活高度暂停一次(CONSENSUS FAILURE,该区块不会提交),必须重启(systemctl restart aetherd)以添加两个新存储;原因见 app/authz_feegrant.go。
注册为验证者
在验证者节点本身运行:
go run ./cmd/validatorkeygen --miner <your-bech32-address> --home <the node's home>
# then run the aetherd tx pow register-validator-pubkey command it prints
它会注册节点自身的共识密钥,该密钥从 <home>/config/priv_validator_key.json 读取:节点用此密钥签署区块。注册其他密钥会导致矿工成为无人为其签署的验证者。--new-key 会生成一个新密钥,并打印 priv_validator_key.json,供先安装到节点上。
在一个纪元内成功挖矿并提交,即可累积原生工作量。在纪元边界(1440 个区块),原生工作量排名前 K(21)的矿工将成为活跃集合。停机(在 60 个区块的窗口内漏签超过 50%)会导致临时移除;双重签名会导致永久封禁并销毁托管资金。
一个共识密钥对应一个矿工账户。 切勿在两个矿工账户下注册同一节点密钥:如果两个账户都被选中,或一个账户离开集合时另一个加入,验证者更新会两次命名该密钥,导致 CometBFT 停止链运行。从 ConsensusKeyGuardActivationHeight(x/pow/types.go)起,链会拒绝这种操作:若要将密钥转移到新的矿工账户,先在旧账户上注册另一个密钥。轮换活跃验证者的密钥也会使其退出集合,直到某个纪元使用新密钥选中它。
矿工和验证者告警
cmd/minerwatch 会监视一个或多个地址,并在事件发生时立即推送,而不是让 Agent 轮询 /api/miner 或抓取 powminer 的日志:
go run ./cmd/minerwatch --address aether1... --webhook https://example.com/hook --low-balance "5 AETH" --state minerwatch.json
每个事件都会作为一行一个 JSON 对象打印到 stdout;设置 --webhook 后,还会通过 POST 发送到该地址,并在失败时重试。设置 --secret(或 MINERWATCH_SECRET)后,每个请求体都会像 agentmcp 的所有者告警一样进行签名:X-Aether-Signature 是 hex 编码的 HMAC-SHA256(secret, body)。每个事件都有一个 id,在重启后保持不变,因此接收方可以过滤重复事件;X-Aether-Event 会标明事件名称。
| 事件 | 触发条件 |
|---|---|
pow_submission_confirmed / pow_submission_failed | 该地址的一次 PoW 提交已写入区块,或在区块中失败(rawLog 说明原因) |
validator_selected | 该矿工被选入验证者集合;effectiveFrom 是其投票权开始生效的区块 |
validator_removed | 该矿工离开集合:reason 为 not_reselected、downtime 或 banned |
miner_banned | 因双重签名而被封禁 |
no_work_this_epoch | 在纪元进度达到 --no-work-warn-at(0.5)时,已注册矿工仍没有工作量,因此在选定高度会离开(或无法加入)集合:activeValidator、blocksUntilSelection、message |
selection_at_risk | 在集合选定前 --at-risk-blocks(20)个区块时,已注册矿工不符合资格或进度落后:notEligibleBecause、rank |
balance_low / balance_recovered | 余额跨过 --low-balance 阈值 |
node_unreachable / node_recovered | 连续 --unreachable-after(3)次轮询失败后,首次轮询成功 |
chain_stalled / chain_resumed | 节点有响应,但经过 --stall-after(5m)仍未生成区块 |
signing_low / signing_recovered | 受监视验证者的预提交未出现在链的提交中:在其属于验证者集合期间,最近 --signing-window(60)个提交中至少漏掉了 1 − --signing-warn-below(0.8),远早于 x/pow 因停机将其移除(超过一半)。consensusAddress、missed、of、message |
power_concentrated / power_concentration_eased | 任意验证者,无论是否受监视,持有的投票权超过 --concentration-above(三分之一),或不再超过该比例。超过三分之一时,该验证者离线会使链停止运行,直到其恢复。若该验证者属于受监视矿工,则包含 consensusAddress、powerShare、address |
它每隔 --interval(30s)检查一次,并且在出现新区块前不会采取任何操作。签名检查会读取每个新区块的提交(每个区块查询一次;重启后会回读整个窗口),集中度检查则在每次轮询时读取一次验证者集合。设置 --state <file> 后,重启时会报告停机期间发生的情况;不设置则会从头开始。--once 配合 --state 适用于 cron 作业。
高度与停机告警
cmd/chainwatch 会监视一个或多个 CometBFT RPC,并在 seed 上与 minerwatch 一同运行。minerwatch 通过 gRPC 跟踪矿工地址;chainwatch 跟踪节点链头:
chainwatch --node seed=http://127.0.0.1:26657 --node sync3=http://sync3:26657 \
--stall-after 3m --behind-blocks 10 --state chainwatch.json
chainwatch --rpc http://127.0.0.1:26657 --safe-to-stop
chainwatch --rpc http://127.0.0.1:26657 --safe-to-stop --validator B7F08625
Webhook URL 和 HMAC 密钥可通过 --webhook / --discord-webhook / --secret 设置,也可通过 CHAINWATCH_WEBHOOK、CHAINWATCH_DISCORD_WEBHOOK 和 CHAINWATCH_SECRET 设置。JSON webhook 使用与 minerwatch 相同的 X-Aether-Signature 标头。部署方式和各类告警的含义见:docs/OPS-RUNBOOK.md。
| 事件 | 条件 |
|---|---|
tip_stalled / tip_resumed | 最高同步高度在 --stall-after(3m)时间内未变化,或在这段时间内没有任何受监视节点处于同步状态 |
node_behind / node_synced | 节点报告 catching_up,或其高度比链头低超过 --behind-blocks(10) |
rpc_unreachable / rpc_recovered | 连续 --unreachable-after(3)次轮询失败,随后首次成功 |
validator_unsafe_to_stop / validator_safe_to_stop | 停止该验证者会使其他验证者的投票权总和降至或低于 2/3(CometBFT 需要严格超过 2/3 才能提交),或投票权恢复到该界限以下 |
--safe-to-stop 会为每个验证者输出相同的判定;如果所有验证者都可以逐个停止,则退出码为 0,否则只要有一个无法停止,退出码就是 2。使用 --validator 时,退出码仅针对该验证者。投票权恰好为 1/3 的验证者无法安全停止:其他验证者恰好持有 2/3,而这不足以提交。
合并挖矿(AuxPoW)
Litecoin/Dogecoin 系列的 AuxPoW(链 ID 17776)可满足 PoW 要求并获得奖励 + 难度重定向。从区块 396,000 起(参见席位规则),合并挖出的工作量也会计入验证者席位,并记入其证明中指定的奖励地址;只有已注册共识密钥的地址才能持有席位。在此高度之前,只有原生工作量会选出验证者。矿池通过 cmd/auxpowd 接入,这是一个桥接服务,支持 Namecoin 和 Dogecoin 使用的合并挖矿 RPC(createauxblock / submitauxblock);它会从 MergedMiningActivationHeight(测试网为 205,000)开始提供工作量。计划和状态见:docs/MERGED-MINING-PLAN.md。另请参阅 cmd/auxpowtest 和白皮书。
区块奖励计划
- 创世:5_000_000 uaeth
- 衰减因子:0.66,持续 8 年(按高度逐年调整)
- 尾部:200_000 uaeth
- 15% 扣减(验证者奖励托管 / 国库)
推导详情请参阅白皮书和 wiki 中有关尾部排放的说明。
治理与国库
| 参数 | 值 |
|---|---|
| 最低存款 | 25_000_000 uaeth |
| 存款期 | 14 天 |
| 投票期 | 7 天 |
| 法定人数 | ceil(0.6 × Top-K) |
| 通过 | 2/3 非弃权票 |
| 否决 | 1/3 |
| 任期递增期 | 30 天 |
aetherd tx governance submit-proposal <recipient> <amount> <deposit> --from <key> --chain-id aether-testnet-1
aetherd tx governance vote <proposal-id> yes --from <key> --chain-id aether-testnet-1
aetherd query governance proposal <proposal-id>
仓库布局
| 路径 | 作用 |
|---|---|
x/pow | 挖矿(Scrypt + AuxPoW)、难度、奖励、验证者、惩罚、活跃性 |
x/governance | 提案、按任期加权的投票、查询 |
x/treasury | 社区资金;经治理授权的支出 |
x/escrow | 为另一个账户锁定资金,直到释放、退款或到期(不是 x/pow 中的验证者奖励托管) |
crypto/mldsa | ML-DSA-44、ADR-028 地址、密钥环 / ante |
wallet/ | 账户管理、查询、交易构建 |
app/ | 应用接线;authz_feegrant.go 控制 x/authz + x/feegrant 的启用;helicase.go 接受由提议者纳入的中继交易 |
helicase/ | 节点的 Helicase 工作器:查找要从另一条链中继过来的数据包并为其提供证明 |
relayer/、cmd/relayer | Aether 自有的 ML-DSA 中继器:打开路径(握手);relayer.Plan 查找任一方向待处理的内容 |
cmd/outbound | 无人值守的中继器,将交易中继到另一条链,并且只在该链上签名;中继到 Aether 的方向由 Helicase 负责 |
ligase/ | 来自另一条链的转账,其备注中包含托管指令:无需 Aether 密钥即可注资、释放、提取 |
cmd/aetherd | 节点二进制文件 |
cmd/wallet | 基于 wallet/ 的 CLI |
cmd/faucet | 限速水龙头 |
cmd/explorer | 精简的实时浏览器 |
cmd/agentmcp | MCP 服务,将钱包作为工具调用开放给 AI Agent |
paywall/、cmd/paywall | 按 HTTP 请求收取 AETH(x402 格式):中间件和反向代理 |
x402/、cmd/facilitator | 在 cosmos:<chain-id> 上实现标准 x402 v2 exact:验证、结算和公共协调服务 |
quest/ | Agent 任务:根据链上数据计算步骤和排行榜(文档) |
cmd/agentmcp --sandbox-http | 托管测试钱包:通过 MCP 提供托管式测试网钱包(文档) |
bench/ | 支付基准测试,“你的 Agent 能为 API 付费吗?”:面向 Claude、GPT 和开源模型的任务、测试框架和链上评分(文档、结果) |
directory/ | 链上服务目录:公告、清单验证、安全获取 |
clients/ts、clients/python | TypeScript 和 Python 客户端:密钥、支付、付费 API(购买和销售)、提现、目录 |
clients/vectors | 生成两个客户端共同使用的测试向量,并据此进行校验 |
cmd/powminer | 根据实时状态进行原生 PoW nonce 搜索 |
cmd/minerwatch | 面向矿工或验证者的 Webhook 告警:提交、入选、余额、停滞 |
cmd/chainwatch | RPC 高度和停机告警,以及任一验证者能否使链停止 |
cmd/auxpowd | 面向 Litecoin 矿池的合并挖矿桥接器(createauxblock / submitauxblock) |
cmd/auxpowtest | 构造有效的 AuxPoW;--auxpowd 可作为矿池连接桥接器 |
cmd/scryptbench | Scrypt 吞吐量基准测试 |
cmd/validatorkeygen | 用于注册的共识密钥 + PoP |
cmd/balancecheck | gRPC 银行余额辅助工具 |
cmd/equivocationtest | 构造的双重签名证据 |
docs/WHITEPAPER.md | 技术白皮书 |
testnet/genesis.json | 正在运行的公共测试网创世文件 |
多节点及更多文档
- 运维手册 — chainwatch 高度和停机告警、安全停止,以及演练模式切换/回滚脚本
- 技术白皮书 — 系统设计、经济模型、密码学、安全限制(包括 BFT/Top-K 和高度门槛)
- Agent 与机器人集成 — 作为软件 Agent 参与(当前接口和拟议的 API/策略)
- Agent 间支付演示 — 可复现的真实支出限额授权和支付,适用于任何网络
- 种子节点的 TLS — 为 RPC/gRPC/水龙头/区块浏览器启用 HTTPS,无需购买域名
- IBC — 核心 IBC、ICS-20 转账、ICS-27 跨链账户:自区块 122,000 起已上线;还包括用于端到端测试的 ML-DSA 中继器和对接链,涵盖实时测试网
- 区块浏览器 IBC 和账户抽象 — 区块浏览器的 IBC 和账户页面,以及对接方 RPC 向种子节点返回 403 时的处理方法
- Helicase — 区块提议者无需任何中继器签名,即可将 IBC 数据包中继到 Aether:安全原因、运行方法及 devnet 验证
- 连接到 Osmosis 测试网 — 真实外部 IBC 对接方的运维手册;目前受治理前置条件阻挡,尚未执行
- 计划:Aether ↔ Osmosis ↔ Noble,使用 USDC 或 AETH 支付 — 各连接的用途、双方所需的中继器服务,以及实现 USDC 支付的各个阶段
- 账户抽象 — 会话密钥和监护人阈值(
x/accountauth):自区块 122,000 起已在测试网上线 - Ligase — 无需 Aether 密钥,通过一次转账即可从另一条链托管资产;双链规则确保 AETH 使用后量子签名
- 托管 — 为另一个账户(或 Agent)锁定资金,直到付款方或仲裁人释放资金、收款方或仲裁人退款,或期限届满后结算:已构建,尚未启用
- Wiki:架构、第一阶段:多验证者选择、已知问题
许可证和品牌
本仓库中的软件采用 MIT License。
Aether 名称、Æ 标记和 docs/brand/ 中的素材不
受该许可证涵盖:请参阅 TRADEMARKS.md 和品牌使用与商标。
贡献
重大设计决策以及细微的 Cosmos SDK/CometBFT 集成修复均记录在 wiki 中。修改 app/、x/pow 或 crypto/mldsa 前请先阅读。
安全
目前尚无专业的第三方审计。欢迎社区审查,并通过 issue 负责任地披露问题。评估合作范围的研究人员应参考 wiki 中关于已知缺口的资料以及本 README 的状态表。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。