区块链新闻资讯
数字货币投资分析

比特币白皮书图解–如何转账

比特币白皮书图解--如何转账
  编者按:本文由Peter 王广忠的技术分享,转载请注明来自Peter 王广忠,并联系作者获得授权。Peter 王广忠,程序员,专业区块链讲解员

本节来介绍一下比特币如何进行转账,过程中会涉及比特币地址,私钥以及如何用数字签名签署交易这些问题。

比特币地址和余额

当我们最开始去持有比特币的时候,系统会先给我们生成两串数,一个是比特币地址,另一个是让我们能够转出这个地址中的币的私钥。

我们用地址去接收他人的转账。如果我跟 Alice 买了一个比特币,那么只需要给她我的地址,她就可以构建一个交易,把币转给我了。这里涉及到一个交易输出的概念,注意交易输出是一个术语,后面咱们会频繁用到。简单来说,在 Alice 构建的交易中,交易输出指的就是交易金额加上我的比特币地址。很容易想到的是交易还应该有输入,这个我们一会儿再说。

地址中并不直接存放比特币。需要明确的是,比特币大账本上并没有直接记录一个地址下到底有多少余额,大账本上记录的只有交易,而且是历史上的所有人的所有交易。一个地址中的到底有多少余额是软件帮我算出来的:软件会去找所有跟我地址相关的交易输出,减去已经花费掉的交易输出。每一个没有被花费过的输出就是一个”未花费交易输出“,英文叫 Unspent Transaction Output ,简称 UTXO ,有人说比特币就是 UTXO ,也是很有道理的。

那么什么叫做花费一个交易输出呢?还是回到 Alice 给我转账的情景。Alice 构建的交易中肯定还是要有输入的。而输入就是 Alice 自己以前的交易输出,同时这些交易输出必须是没有花费过的,也就是 UTXO 。比如之前有两次交易输出指向 Alice 的地址,其中一个是0.3个币,另一个是0.8个币,那么 Alice 构造交易的时候,就要把这两个 UTXO 都拿出来作为交易的输入,因为这样才能凑够要给我的1个比特币,当然,交易生成的时候,系统会自动找零的。白皮书中第九部分《价值的组合和分割》就是讨论这个过程的。

这样,我们就理解了地址和余额都是怎么回事了。

数字签名

接下来要考虑的是交易发起人身份认证的问题,因为要保证每一条交易都是对应的比特币持有者发出的。这个要涉及数字签名这个概念。理解数字签名首先也要理解哈希的概念,这个咱们就不展开了,大家搜我之前的文章中有过专门的介绍。

我们需要一种不可以被拷贝的签名。生活中如果要签署一张支票,那就直接签名即可。但是签名这种形式在电子世界中使用就要考虑如何防止一个签名被拷贝并重复使用的问题。公钥密码学的数字签名恰好就是一种不能被拷贝并重复使用的签名。如果我用私钥对一个信息进行签名,那实际上就是先运算这个信息的哈希,然后用私钥对这个哈希进行加密,那么最终得到的密文就叫做数字签名。签名是跟信息绑定在一起的,如果信息被改动了哪怕一个字,那么数字签名就会马上失效。所以,攻击者不能拷贝我的数字签名去签署他伪造的一条交易信息,去花我的钱。

别人怎么知道签名是我发出的。我在构造交易的时候也会把我的公钥公布给全网的,你可能会说咱们手里没有公钥啊,实际上这个不成问题,有私钥随时都能运算出公钥。签名是私钥加密的产物,私钥加密的东西是可以去用公钥解密的,这个是公钥密码学的基本原理。大家看到交易信息,数字签名和我的公钥之后,就可以去证明两点:第一,如果公钥解密签名成功,就可以证明交易的确是由私钥的持有者,也就是我,发出的;第二,如果解密后得到哈希和再次运算交易信息的哈希得到的结果相同,那么就证明了交易信息是没有被篡改过的。

数字签名是公钥密码学的基础知识,在比特币出现之前很早就被广泛使用了,所以白皮书上没有展开介绍,直接就在摘要部分提到

Digital signatures provide part of the solution

数字签名可以解决部分问题。意思是说,数字签名可以用来确认签署人身份,但是不能防止双花问题。双花问题我们下一节再解释。

数字签名链

白皮书的第二部分《交易》就是本节讨论的主体内容,不过白皮书上写的比较精简,我在这里补充了一些知识进来。这里有这么一句话

We define an electronic coin as a chain of digital signatures. 我们把一个电子硬币定义为一个数字签名链。

这句话不太好理解,这里我们展开一下。首先说什么是一个电子硬币呢?UTXO 在被花费的时候,是不能掰开来用的,这一点跟一个硬币很像。第一个用户想要把自己的这个硬币转给第二个用户,只需要把这个硬币相关的交易和第二个用户的地址组成一条信息,然后用私钥去对这条信息的哈希进行加密获得数字签名即可。第二个用户想要继续把这个币转给第三个用户,也是完全一样的过程,在新交易中再次做数字签名即可。所以这个币会出现在一连串的交易中,跟一连串的数字签名相关,所以说一个币就是一个数字签名链。

不过白皮中画的跟我们刚刚描述的还是有点差异。白皮书这里没有涉及地址,而是把币转给公钥了。地址是公钥的哈希,所以把币跟地址和公钥绑定都同样能体现币到底是输入哪个私钥持有者的。实际中地址更简短,而且有一些自我查错功能,所以用起来更方便一些而已,原理上跟白皮书中描述的是完全一致的。

到这里,交易的基本组成和数字签名链的概念我们就清晰了。

总结

本节介绍了持有比特币是怎么回事,以及网络如何通过数字签名来确认签署人的身份。这样就能保证别人不能去花我的币。但是伴随而来的问题是,系统如何防止一个人去多次花费自己的同一个币,也就是防止双花问题,这个问题我们后续小节中再解释。

赞(0) 打赏
未经允许不得转载:三链财经 » 比特币白皮书图解–如何转账

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏