我们都知道在日常生活中一笔钱不能花两次,就比如你去一家便利店买东西,给了店员小姐姐5元现金买一瓶饮料,买完又觉得饿,想买个面包吃,如果用刚才付给店员小姐姐的5元再去买一个面包,这样可以吗?肯定是不行的,除非店员小姐姐对你有意思。
如果同一笔钱支付了两次或多次,那就是 双花,也叫 双重支付。这在现实生活中是行不通的,但在数字货币系统中,由于数据的 可复制性,使得系统可能存在 同一笔数字资产因不当操作被 重复使用的情况。
看到这里很多人就想了,我们平时在淘宝上用支付宝买东西,还有微信扫码支付、发红包等支付方式,也不用现金,怎么自己身上没有出现过双花这么爽的事情。那是因为支付宝微信上面的钱并不存在于数字世界,依然是在现实世界的银行当中。我们在淘宝下单付款给卖家时,实际上是先把钱付给支付宝,支付宝将钱存在他们的银行账户中,当我们确认收货后,支付宝再将钱从银行账户中取出,支付给卖家。
至于没有出现双花问题的原因也就在这里,如果同时发出两笔支出,是记录两笔支出的钱,因为转账或付款 实时的,并且是由银行、支付宝、微信这些 中心机构来记账。在日常生活中转账或付款时,先从我们的账户里扣款,再由银行去确认交易,所以不会出现一笔钱被重复交易。我们经常会从银行账户把钱充值到微信支付宝零钱里,这时候,先由银行扣款、确认交易,再由微信支付宝对我们的数据进行管理,实时修改账户余额,包括之后去用这些零钱支付,都是经过这些第三方的中心机构来对我们的数据进行管理、确认,来防止双花的出现。
而我们所说的数字世界,是虚拟的数字货币,这种抛开中间第三方机构的去中心化的数字资产。在区块链系统中,双花问题会在以下情况下出现:
一、由于共识机制导致区块确认时间长,用一个数字货币去进行一次交易,可以在这笔交易还未被确认完成前,进行第二笔交易。
二、控制算力来实现双花,第一次交易被验证通过并被记录入区块后,在该网络中有更高的算力验证出新的更长链条,在该链条中这笔钱被第二次花费,由于第二次花费的区块链条更长使第一次交易区块所在链条为无效链条,这样一来,第一次交易所在的区块链被区块链网络放弃,第一次花费的钱就又回到自己账户了,就导致了双花问题。
还有许多情况,比如利用控制矿工费来实现双花,或者一些人为了节省时间而接受0确认,这就很容易被攻击者利用。
2018年5月份,一名恶意矿工获得了比特币黄金(BTG)网络至少 51%算力,临时控制了比特币黄金(BTG)区块链,在控制算力的期间,他把一定数量的BTG发给自己在交易所的钱包,这条分支我们命名为分支A。同时,他又把这些BTG发给另一个自己控制的钱包,这条分支我们命名为分支B。
这么看来对于攻击者来说,双花确实爽,可是项目方该哭了。其实双花问题也不是无解的,比特币的创始人中本聪早就想到这个问题,通过UTXO和时间戳以及规定每笔交易必须进行六次确认等方法,致使比特币不会出现双花问题。
UTXO
UTXO是比特币交易的基本单位,是指 未花费的交易输出。通俗理解就是:看有多少笔交易给了我多少钱并且我没花掉,我就有多少钱。当一个用户接收比特币时,金额被当作UTXO记录到区块链里。 比特币系统当中记录着每一笔未花费的交易输出。当某一笔比特币交易被创建并广播到区块链网络之后,接收到此交易信息的节点会对交易进行验证,需要去UTXO数据库里查,检查其是否存在于UTXO中。如果交易输出已不存在于UTXO中,则验证失败。
时间戳
当一个用户同时将1个比特币同时转账给两人时,两笔交易仅会有一笔成功,因为矿工会选择 记录优先接收到的,或者交付手续费更高的那笔交易。当交易被矿工们先后记录后,根据 时间戳数据来证明, 最先被记录的交易才能被成功验证。
六次确认
是指在这当前区块之后又有5个区块被计算出来连接到区块链上,每一个都相当于对前面一个区块进行确认,区块链上每增加一个区块就增大了前面区块被篡改的难度,6个之后就认为基本上没法被篡改,所以认为这笔交易就算完成了。
分叉
在这里要提一个概念-- 分叉:同一时间段内全网 不止一个节点能计算出随机数,也就是同时挖到了矿,这些节点都会把自己挖到的矿,链到自己本地的区块链上,这就出现了区块链分叉,他们都会在网络广播他们各自打包好的区块,以便于其他节点同步完最新数据后,在最新的区块链上继续挖矿。由于距离远近,不同矿工看到的这些区块是 有先后顺序的,矿工会把先看到的区块复制过来,然后在该区块上继续开始新的挖矿工作。最终其中的一条链被证实为较长的一条,那么其他分支链条上工作的节点将转换阵营,开始在较长的链条上工作,这条链就成了主链,其他分叉出来的链将会被网络抛弃、消失。这也是避免双花问题的一大利器。
广告视频合并软件免费版!视频加字幕,视频配音视频滤镜,视频转场,视频特效,一键添加^^支持分针剪辑视频,轻松上手,剪辑视频就...
总结一下比特币解决双花问题的措施:
1.首先每笔交易都要先确认对应比特币之前的情况,要检查它是否存在于用户的UTXO中。如果不在,那么该交易会被系统拒绝。
2.如果用户用同一笔UTXO付给两个人,系统中的节点只确认先接收到的那一笔。
3.当两笔时间上很接近的交易被不同节点确认,区块链将发生分叉。剩余节点选择在他们认为的最长链上构建新的区块。
4.当其中一笔交易被6个节点确认后,它将成为系统最长链,可以认为这笔交易获得了最终的确认。
比特币虽然至今没有出现过双花问题,但也不是绝对不会出现,比如51%算力攻击。但为什么没有人这么做,首先是由于 成本太高,没有人能轻易掌握51%的节点。即便一个人已经掌握了51%的节点,那么他就已经是比特币网络当中的 最大受益者,如果发动51%攻击,可以短期获利,但是比特币的价值将会遭受毁灭性打击,届时他就会成为最大受害者。
之前出现的那些双花问题都出在一些山寨币、小项目当中,因为攻击的成本比较低,所以安全问题必须重视,希望越来越多的项目能保证用户们的资产安全,使得区块链以及数字货币能够有更多的应用。以上就是对于双花问题的介绍,如果对你有所帮助不胜荣幸。
相关知识
通俗易懂区块链系列——双重支付/双花支付
科普——什么是双花问题 我们都知道区块链有四大核心技术,分别是分布式账本、共识机制、密码学以及智能合约,他们共同决定了区块链的整个基础框架。但是...
“双花”问题及解决之道
区块链是什么,互联网区块链项目是什么?
《区块链金融》考试复习题库(含答案).docx
区块链安全—详谈共识攻击(一)
探索花火币区块链:下载与使用指南
区块链各种安全攻击概念解释
以区块链技术提升食品安全追溯系统可靠性
Flowerplus花加:区块链推动电商行业的发展
网址: 区块链技术是如何解决双花(双重支付)问题的? https://m.huajiangbk.com/newsview2186821.html
上一篇: 解难题 先得不畏难(一 |
下一篇: CheggMate AI 学习助 |