CoinGeek科技Script中的ECDSA签名验证

这篇文章首次被发布在Medium上。

我们在Script中实现了ECDSA签名验证算法。它可以验证任意信息是否由与给定的公钥对应的私钥进行签名,而OP_CHECKSIG只能在信息是当前支出交易¹时验证签名。令人惊讶的是,这是在没有引入诸如BCH上的OP_DATASIGVERIFY(又名OP_CHECKDATASIG)的任何新操作码的情况下完成的。

椭圆曲线数字签名算法(ECDSA)

ECDSA是比特币系统中用于签名生成与验证的算法。它的验证算法如下所示。

[caption id="attachment_475154" align="alignnone" width="700"] ECDSA签名验证[/caption]

算法的运行过程

我们已经使用之前发布的椭圆曲线库来实现了如下所示的算法。

首先,我们需要从以DER格式编码的签名中提取rs这两部分。由于它们是大端序,我们必须将其转换为小端序,这是在Script/sCrypt中编码数据的方式。

[caption id="attachment_475158" align="alignnone" width="700"] DER[/caption]

在检索到rs后,我们只需运行标准的ECDSA验证算法。


ECDSA合约

***

注释:

[1]更准确地说,它对于sighash来验证签名。

您是比特币新手吗?请查看CoinGeek的比特币新手入门栏目,这是了解更多关于(中本聪最初设想的)比特币与区块链的终极资源指南。

更多科技新闻

科技十月 04, 2022
为什么将聊天置于链上?

为什么将聊天置于链上?

随着Bitchat的重新推出,人们自然会问为什么要将聊天信息储存在区块链上。特别是如果聊天信息是纯文本的,并且在账本上是公开的,这种方法对“常人”来说就显得毫无意义。

科技九月 21, 2022
Bitchat继续存在

Bitchat继续存在

Bitchat是对于2019年初_unwriter推出的一款应用程序的复兴。这一次,Bitchat依赖于更加强劲的基础设施与协议,例如即将推出的JungleBus API和比特币Schema协议。