区块链 | 比特币交易中如何解决伪造、篡改、双重支付

前言

接上一篇区块链和比特币的基本介绍,我们知道比特币的所有记录都是公开而且匿名的。这样比特币会面临几个问题:如何去解决伪造记录、篡改记录以及双重支付的问题。

身份认证

在传统认证方式中,通常会使用人脸认证、签名认证、指纹认证等方式,但是在电子支付系统上都不能实现,因为上述方式可以被拷贝之后伪造。

电子签名

电子签名技术采用了目前广泛使用的非对称加密方式 电子签名技术

如何解决伪造记录

流程图:
防止伪造记录
解决伪造记录的关键在于使用非对称加密方式

A给B10个比特币这一事件,通过hash运算得到摘要之后,用私钥对摘要进行加密得到密码。由于私钥的唯一性,摘要具有唯一性。通过广播的方式,A传递出去的消息有:A给B10个比特币,A的公钥,A的密码。
我们可以假设,A给B10个比特币的消息是假的,并根据此hash运算得到了摘要1。而利用A的公钥解密密码得到了摘要2,此时摘要1和摘要2不同,显然"A给B10个比特币"是伪造的消息。

双重支付问题

余额检查(追溯法)

每个人在使用区块链比特币的时候,都会下载从第一个区块到目前为止的所有信息。
比如A广播了数据"A支付给B10个比特币",其他人就会进行余额检查,检查A是否有这个支付能力,如果没有这个支付能力,那么其他人就不会去确认A广播的这条信息。当"A支付给B10个比特币"这个信息被打包到一个新的块里面,此时这条信息被确认。
消息确认

双重支付

当双重支付发生时,比如A只有10个比特币,但同时广播了消息"A给B10个比特币"(记为消息b)和"A给C10个比特币"(记为消息c),群体D先接收到消息b,则不会去确认消息c。同理,群体E先接收到消息c,则不会去确认消息b。这时候就要看群体D和E中谁先能计算出那道数学题,先挖出矿的可以把自己确认的消息写到新块中,而另一条消息则失效。
如何防止双重支付

防止篡改问题

最长链原则

当区块链出现分支的情况下,即有不止一个人在近乎相同时间内挖出了下一个块,链的走向出现了分支,一般而言使用最长链原则进行选择。假设用户群体A选择上链继续挖矿,用户群体B选择下链继续挖矿。如果群体A先挖出下一个矿,上链新块,则群体B转到新块后继续挖矿。通常情况下,下链被废弃。
最长链原则

如何防止篡改

由最长链原则我们可以知道,如果有人想篡改区块链上某一区块的信息,他就要在该区块处引出一条分支,并且打造一条新链使得新链超过原链长度。即他一人控制的矿机算力要超过全世界剩余的矿机算力,显然很难实现。
篡改信息

扫描二维码关注公众号,回复: 10745090 查看本文章
发布了115 篇原创文章 · 获赞 81 · 访问量 9844

猜你喜欢

转载自blog.csdn.net/weixin_43092232/article/details/105474107