签名前缀值(v)和公钥恢复
如交易的结构所述,交易消息不包含任何“from”字段。这是因为发起者的公钥可以直接从ECDSA签名中计算出来。一旦你有公钥,你可以很容易地计算出地址。恢复签名者公钥的过程称为_公钥恢复_。
给定 ECDSA数学 中计算的值 r 和 s,我们可以计算两个可能的公钥。
首先,我们根据签名中的x坐标 r 值计算两个椭圆曲线点R和R’。有个两点,因为椭圆曲线在x轴上是对称的,所以对于任何值+x+,在x轴的两侧有两个可能的值适合曲线。
从 r 开始,我们也计算r-1这是 r 的倒数。
最后我们计算 z,它是消息散列的最低位,其中n是椭圆曲线的阶数。
然后两个可能的公钥是:
K1 = r-1 (sR - zG)
和
K2 = r-1 (sR’ - zG)
其中:
K1 和 K2 是签名者公钥的两种可能性
r-1是签名的+r+值的倒数
s是签名的+s+值
R和R’是临时公钥_Q_的两种可能性
z是消息散列的最低位
G是椭圆曲线生成点
为了使事情更有效率,交易签名包括一个前缀值 v,它告诉我们两个可能的R值中哪一个是临时的公钥。如果 v 是偶数,那么R是正确的值。如果 v 是奇数,那么选择R’。这样,我们只需要计算R的一个值。
当前内容版权归 inoutcode 译 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 inoutcode 译 .