You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.near-credentials密钥对中的公钥为何看似无关紧要?

NEAR本地公钥修改后仍能转账的原因解析

ED25519密钥对的本质特性

ED25519加密体系中,合法私钥本身包含了对应公钥的完整信息——只要私钥有效,就能直接推导出与之匹配的真实公钥,完全不需要依赖本地存储的公钥字符串。

NEAR CLI的实际签名流程

当你执行near send foo.near foo.near 1命令时,CLI的工作流程是:

  • 读取本地.near-credentials/mainnet/foo.near.json中的私钥ed25519:secrettt
  • 自动从该私钥推导得出对应的真实公钥ed25519:publiccc
  • 使用私钥对交易进行签名,签名数据中会附带这个推导出来的真实公钥
  • 将签名完成的交易广播到NEAR主网节点

链上验证的核心逻辑

NEAR主网节点验证交易时,只关注两个核心点:

  1. 交易签名是否由对应公钥的私钥生成(签名有效性校验)
  2. 该公钥是否在目标账户foo.near的权限列表中,且具备执行转账的全权限
  • 由于你使用的私钥是合法的全权限密钥,推导出来的公钥确实存在于链上账户的权限列表里,所以交易能顺利通过验证并执行。

本地公钥无效的原因

你把本地凭证里的公钥改成ed25519:giggle这类无意义字符串时,CLI并不会使用这个假公钥——它会直接忽略本地存储的公钥,从私钥中自动推导真实公钥,因此本地的假公钥完全不参与签名和验证流程,自然不会影响交易结果。

补充:修改私钥失败的合理性

当你修改私钥为无效值时,CLI无法从其推导合法公钥,也无法生成有效的交易签名,链上节点会直接判定签名无效,转账自然失败,这符合预期逻辑。

内容的提问来源于stack exchange,提问作者Erik Trautman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:00:17