
公私钥与椭圆曲线
数字签名建立在公钥密码学之上:私钥用于签名,公钥用于验证。验证者无需取得私钥,就能检查签名与被签数据是否匹配。它证明的是相应密钥的控制权,不能单独证明签署者的现实身份。
椭圆曲线提供生成密钥和构造签名的数学基础。ECDSA是椭圆曲线数字签名算法,secp256k1是具体曲线参数。理解时应区分密钥、算法与曲线:它们分别承担秘密凭证、运算规则和数学环境的角色。
哈希、地址与签名范围
哈希把数据映射为固定长度的摘要,参与地址生成和签名处理。地址、公钥与签名用途不同:地址用于标识接收目标,公钥支持验证,签名则与特定数据关联。
签名对修改的约束取决于哪些数据被纳入签名计算。被覆盖的内容发生变化,原签名通常就无法通过验证。因此,讨论交易防篡改时,需要明确签名范围,不能笼统认为所有字段都受同一种保护。
比特币:签名如何嵌入花费条件
在比特币传统P2PKH结构中,输入引用先前的未花费交易输出,即UTXO,并提供公钥和签名。脚本先检查公钥哈希是否匹配输出条件,再验证签名。这说明签名验证是花费授权的一部分;其他输出类型的验证结构不能直接套用这一形式。
以太坊:账户授权与防重放
以太坊外部账户以私钥签署交易,账户nonce参与防止同一交易被重复执行。合约账户由代码逻辑控制,没有对应的账户私钥。验证者使用的BLS密钥支持签名聚合,服务于共识场景,应与普通账户交易签名区分。
常见问题与适用边界
签名是否会隐藏交易内容?不会。数字签名主要提供授权真实性与被签内容完整性的验证,保密需要另外的机制。
签名有效是否代表交易一定成立?不代表。节点还需检查相关输出或账户状态,以及其他协议条件。签名回答谁授权了哪些内容,状态验证回答该操作当前是否允许执行。
钱包与账户是否相同?钱包是管理密钥、发起签名及与链交互的工具或界面,账户则属于链上的记账与执行体系。区分两者,有助于理解私钥管理和链上验证各自承担的职责。