
误区一:用了密码算法,数据就会保密
哈希、数字签名与加密不能混为一谈。哈希用于生成摘要,签名用于验证特定数据的授权关系;它们本身不意味着交易内容被隐藏。判断保密性,需要看系统是否另有保护内容的机制,而不能仅看是否使用了密码算法。
误区二:地址就是公钥,也能证明身份
比特币开发者指南中的传统P2PKH示例,将公钥哈希编码为地址;花费对应输出时,需要提供公钥和签名,并满足脚本条件。地址、公钥与私钥因此具有不同作用,不能互相替代。
地址格式正确并不等于接收方身份可信。校验和主要帮助发现输入错误,不能证明地址属于某个现实主体;签名验证也不自动建立真实姓名与密钥之间的联系。
误区三:签名通过,交易就一定有效
上述P2PKH示例说明,签名验证只是交易检查的一部分。输入还要引用相应输出,并满足其花费条件。因此,“签名有效”与“交易可被网络接受”是不同层面的判断。
签名保护的是按规则纳入签名的数据,不能笼统理解为所有相关信息都不可修改。讨论防篡改效果时,应明确交易类型、签名规则及其覆盖范围,不能把一种交易示例推广到所有区块链。
误区四:有签名,就不需要防重放
以太坊账户文档介绍,外部账户的交易nonce用于区分交易,防止同一序号的交易被重复执行。签名负责证明授权,nonce参与约束授权能否再次使用,两者解决的问题不同。
这种保护有适用范围:账户交易的nonce机制不能直接视为所有应用消息或跨网络场景的防重放保证。分析具体系统时,还需确认授权绑定了什么执行环境,以及重复使用如何被识别。
误区五:所有账户都对应一把私钥
以太坊账户文档区分外部账户与合约账户:前者由私钥控制,后者依照合约代码运行;钱包则是与账户交互的应用或界面。因此,账户、私钥和钱包不是同一个概念。
常见问题是“算法可靠,系统是否就可靠”。答案不能只从算法得出:密钥是否泄露、签名内容是否符合意图、合约授权逻辑是否正确,都需要分别判断。密码算法提供必要的验证能力,但不会自动保证业务规则正确。