钱包
NeuroChain 钱包就是一个 24 词恢复短语。其余一切——签名密钥和 .human 地址——都在你的浏览器中由它计算得出,并且永远不会离开浏览器。
使用钱包的方式
以下方式都使用相同的密钥和相同的 .human 地址;区别在于密钥存放在哪里以及由谁签名。
| 方式 | 密钥存放位置 | 签名者 | 适用场景 | 页面 |
|---|---|---|---|---|
| Web 钱包 | 你的浏览器,用你的密码加密 | 你,在应用中 | 日常使用:发送、质押、投票、注册名称、管理代理 | 本页 |
| 签名弹窗 | 你的浏览器(Web 钱包) | 你,在弹窗中批准 | 在其他网站上使用 dApp,而无需把短语交给它 | Signer SDK |
| JavaScript SDK | 你自己的页面或脚本 | 你的代码,使用你提供给它的短语 | 构建自带钱包的 dApp 或自动化程序 | JavaScript SDK |
| 会话密钥(AI 代理) | 代理所在的机器——一个独立的、受限的密钥 | 代理,在你设定的范围、支出上限和有效期内 | 让 AI 助手通过 MCP 代你操作 | AI 代理(MCP) |
付费名称(.node、.vault、.agent……) | 没有自己的密钥 | 拥有它们的 .human 钱包 | 验证者、共享金库、代理账户 | 地址 |
.vault 由多个成员共同控制:一笔支出需要达到阈值数量的成员签名。
创建或导入
| 会发生什么 | |
|---|---|
| 创建 | 浏览器从 256 位随机熵生成 24 个单词(带校验和的 BIP-39 词表)。请把它们抄写下来;它们只显示一次。 |
| 导入 | 输入已有的 24 词短语。在做任何其他事情之前会先验证校验和。 |
浏览器根据这些单词派生出 ML-DSA-65 密钥对和地址,过程如地址中所述。同一个短语在任何设备上都会得到同一个地址。
密钥存放在哪里
| 项目 | 位置 | 保护 |
|---|---|---|
| 恢复短语 | 浏览器 localStorage,键 nc_ks_<address> | 用你的密码加密:PBKDF2-SHA256(100 000 次迭代,随机 16 字节盐)→ AES-256-GCM |
| 签名密钥 | 仅存在于已打开标签页的内存中 | 解锁后从短语重新派生 |
| 密码 | 不存放在任何地方 | 仅用于加密和解密短语 |
同一个浏览器中可以并存多个钱包;你可以在应用中切换。
保管好短语,而不是密码
密码只能解锁存放在此浏览器中的副本。如果你丢失了短语和浏览器数据,钱包就没了——谁也无法恢复。如果短语泄露,任何人都能以你的身份签名;请通过身份轮换到新密钥。
发送 NRO
- 应用读取你的下一个 nonce 和当前基础费用。
- 将 gas 价格设为 1.5 × 基础费用(向上取整),这样即使基础费用在交易被打包前上涨,交易仍然有效。
- 浏览器在本地(WASM)检查余额、nonce 和手续费,并在发送前显示任何错误。
- 用你的密钥签名
nc-tx-v2|from|to|value|nonce,并把交易连同你的公钥一起发送。 - 节点验证签名,以及你的公钥能派生出你的地址,然后将交易排入队列。
转给自己的转账只收手续费;应用也会这样显示。
交易状态
| 状态 | 含义 |
|---|---|
pending | 已被节点接受,在 mempool 中等待。若 60 秒内未被打包则丢弃。 |
confirmed | 已进入最终确定的区块并已执行。 |
failed | 已进入最终确定的区块,但合约调用触发 trap 或耗尽 fuel。转账金额和存储变更被回滚;手续费和 nonce 被消耗。 |
held | 已接受,但被 Sentinel 策略层 默认关闭 延迟:金额会在一段延迟后自动放行,或等待你的确认。 |
cancelled | 你取消的暂扣交易;金额已退回。 |
refunded | 金额已退还给你——未经确认而过期的暂扣交易,或超时的跨分片转账。 |
已签名操作
质押、注册名称、投票等操作不是转账,但签名方式相同。钱包签名 nc-tx-v2|<you>|<system target>|<value>|<nonce>,其中目标指明操作(neuro:system.stake、neuro:system.node、neuro:system.name、neuro:system.governance……)。
对于这类操作,nonce 是一个毫秒级时间戳,节点只接受比它从你的地址见过的最后一个 nonce 更大的值——截获的请求无法被重放。
水龙头 仅限测试网络
在以 CHAIN_ENV=testnet 启动的节点上,POST /api/v1/faucet 会发放测试 NRO。在 CHAIN_ENV=mainnet(默认)下,该功能被禁用。
| 设置 | 默认值 | 变量 |
|---|---|---|
| 每次请求金额 | 50 NRO | 请求字段 amount |
| 每次请求上限 | 100 NRO | NEUROCHAIN_FAUCET_MAX_NRO |
| 每个地址的冷却时间 | 24 小时 | NEUROCHAIN_FAUCET_COOLDOWN_SECS(0 表示关闭) |
curl -s -X POST "$NODE_RPC/api/v1/faucet" \
-H 'Content-Type: application/json' \
-d '{"address":"neuro:<你的地址>.human","public_key":"<你的 ML-DSA-65 公钥,hex>"}'水龙头在首次为某地址注资时,会把你发送的公钥绑定到该地址。
命令行钱包
节点仓库中仍保留一个旧的命令行钱包 neurowallet。它早于当前的地址方案(NC_KDF_v3),也不使用 ML-DSA-65 签名,因此当前网络不接受它的地址和交易。请使用 Web 钱包或 JavaScript SDK。