比特币交易的签名和验证

  其它节点后交易发送至,对其进行验证其它节点会,易才会被继续传播只有验证通过的交。的项目很多交易验证,于签名的验证这里只讲关。

  下每一步的意义下面我们来分析,意义其实很明显步骤1~6的,)进行双哈希(HASH160)用B提供的公钥(PubK(B),PubKHash(B))作对比然后与锁定脚本中的公钥哈希(,返回成功相同则。))就是A在创建交易时根据B的地址生成的我们知道公钥哈希(PubKHash(B,过双哈希运算得来的它就是B的公钥经,提供了B的公钥所以这一步只要,是成功的验证肯定。以所,1 BTC发给了B的邮箱步骤1~6 就相当于A把,打开了邮箱B拿把钥匙,有这1 BTC证明了B确实拥。易001的序号为0的UTXO的确是发给B的也就是证明了上文中提到的验证目的1:证明交。

  说一句这里多,可能会发现细心的读者,输入1已经包含了输入2的信息其实,输入1查的到或者可以根据,单独列出呢为什么还要。明确的可信服的解释目前我也没有找到,还有其它深意不知道是否。们的指教期待大神。

  可以证明从数学上,== r若v ,确为持有密钥对(d即可证明信息M的,名者所签署Q)的签,修改过且未被。

  C 1BTCB 打算转给,他的那个UTXO他先找到A转给,中n=0的那个UTXO即交易001的out,易002中的in把相关参数写入交。输入比特币数量然后在out中,O序号UTX,脚本锁定。命令都是固定的锁定脚本中的,C))可通过C的钱包地址解码获得C的公钥哈希(PubKHash(。

  的是第7步比较麻烦,里都只是泛泛而谈很多文章说到这,笔带过或是一,时候真是如堕雾中我学习到这里的,茫然啊四顾。章中的表述是非常不准确的现在回过头再去看一些文。ECKSIG操作这一步简单的CH,的密码学和数学原理实际上蕴含了复杂,是所有权的问题证明的其实不,创建了交易002而是证明了B的确,据未被修改过且交易内的数,到的验证目的2也就是上文中提。

  与曲线交点相对X轴的对称点A+A时我们取A点的切线。A+A有了,便的定义出乘法我们就能很方。乘法有了,一个基点G我们选择,算出 K=kG能够很方便地计,而然,K和G给定,今没有有效的算法)却很难计算k(至,线离散对数问题这就是椭圆曲。tography)的安全性正是建立于椭圆曲线离散对数问题的困难性之上而椭圆曲线密码学(ECC Elliptic Curves Cryp。于此基,们定义k为私钥在ECC中我,公钥K为。

  先首,圆曲线的形状我们看一下椭,图红线如上。两点的直线与椭圆曲线的交点相对于X轴的对称点我们可以把这个曲线上的点定义一种加法:连接,点之和即为两。A+B=C如图中的 。

  行基于堆栈模型比特币脚本的执,左到右遵循从,出的原则后入先。栈的介绍关于堆,有比较清晰的图示文末的参考文章中,者可以参考不清楚的读。释各步骤的意义本文为方便阐,方式描述采用文字。作如下各步操:

  证是如何进行的下面我们来看验,很简单其实,应UTXO的锁定脚本就是用解锁脚本解锁对,线所连接的两个脚本对应上图就是橙色:

  样这,数据都已经准备好了交易002相关的,的签名了就差最后。于开支票时的签名这个签名就类似,把这笔钱给你证明我同意。比签个字复杂很多但是具体的实现要,一切都是可以复制的原因就在于互联网中,拥有这笔钱如何证明你,创建的且没有被修改过如何证明这个交易是你,学理论和算法来保证这背后都有严密的数。

  图所示如上,化结构(忽略了一些参数这是一个比特币交易的简,id)简化了。

  的结构之后了解了交易,一个交易的示例现在我们通过,证是如何进行的来看看签名和验。

  了好,易中签名和验证的全部理解和思考以上就是笔者目前关于比特币交,有限水平,谬误和纰漏不免存在,神批评指正欢迎各位大!

  本次交易具体到,创建了交易002就是证明B的确,据未被修改过且交易内的数。

  图所示如上,中的参数是一一对应的可以看出这两个过程,参数按照示例做相应的操作我们把交易002中相关的,验证的具体过程了就不难理解签名和。理上的保证由于数学原,验证成功若签名,创建了交易002即可证明B的确,据未被修改过且交易内的数,到的验证目的2也就是上文中提。

  Y 比较位于栈顶的两个元素是否相同6。 OP_EQUALVERIF,除这两个元素若相同则移,执行继续。不同若,断执行则中,失败返回。

  了好,看交易的结构现在我们来。(input)和输出(output)比特币的交易主要由两部分构成:输入。

  题是但问,话我都看懂了他说的每一句,这张图到底在说什么可我还是看不明白。聪的脑海里就是这个样子也许比特币的交易在中本,是潜伏在地球的外星人所以我一直怀疑他是不,球人不一样脑回路跟地,TXO的概念包括那个U,类正常的思维实在有悖于人。以所,图转换成地球人容易理解的形式这篇文章的任务就是尽量将这张。

  和ECDSA签名算法介绍第一部分:原[4]比特币系统采用的公钥密码学方案理

  上面这张图我们来看,转给B 1BTCA通过交易001,转给C 1BTCB通过交易002,起见简化,费的问题忽略交易。

  易结构之前在介绍交,币的UTXO概念先简单说一下比特,的读者阅读方便零基础。币系统中在比特,额的概念没有余,ansaction Output)只有UTXO(Unspent Tr,的交易输出即未花费。的钱都是别人给我的钱翻译成大白话就是我花,候必须花完而且花的时。(比特币) 的UTXO比如我有一个2 BTC,1 BTC我想给你,TC的UTXO 花掉我就必须把这个 2B,个UTXO然后生成两, 的UTXO给你一个 1BTC,小于1 BTC一个UTXO(,费)给我自己差值为交易。额怎么办想看余,里有多少UTXO就查一下这个地址,加起来就是余额把里面的BTC。

  我打算生成几个UTXOOutput是要说明,给谁分别,面有多少BTC每个UTXO里。

  两张动图引自参考文章ECDSA 部分的,ullivan表示感谢对原作者Nick S,章的作者表示感谢同时对所有参考文!

  只取椭圆曲线上的那些整数点可以将椭圆曲线域简单理解为,了一步模运算但是由于多,滑曲线是有差别的(如下图)因此展示出的形状与之前的平,法乘法规则是不变的但是之前定义的加。

  么那, Elliptic Curve Digital Signature Algorithm )CHECKSIG的验证是如何实现的呢?这里运用了椭圆曲线数字签名算法(ECDSA:The,数字签名和验证的算法一种利用椭圆曲线进行。来进行比特币交易的签名和验证的下面将简单介绍这种算法是如何用。识不作深入介绍涉及到的数学知,末的文章链接深入了解感兴趣的读者可参照文。

分享: