bitget消息:近年来,数字货币被炒得热火朝天,很多人都开始密切关注数字货币,身边也总能听到有人谈起关于数字货币的林林总总。
既然有人在参与,那么,自然也有人在观望,也有人在避而远之,毕竟像这种无实物交易,交易安全还是最重要的。
如果说数字货币交易安全问题中可能存在bug,那这些bug中最让人在意的当是“双花问题”了,这也是交易安全中需要特别注意的问题。
到底什么是“双花问题”呢?
双花问题,又称双重支付问题,即利用货币的数字特性两次或多次使用“同一笔钱”完成支付。
比如在比特币系统中,每十分钟出一个区块,也就意味着,你在这十分钟内,转出去的比特币是没有被区块链确认的,那么在理论上,你就可以把这个比特币同时转给很多人。
“双花问题”要如何解决呢?
现实中,信用问题的根源也在于,我到底该怎么确认你跟我交换的价值没有同时跟别人交换呢?
如果张三有一栋房子,你应该如何确认这栋房子只和你交易,而不是张三同时也在跟王五用这栋房子进行交易呢?
如果王五最终获得房子的产权,而你跟张三也作了交易,却不能得到补偿,这样对你就是不可弥补的损失。
为了解决这一问题,中本聪曾在《比特币白皮书》中写到:
1.新的交易向全网进行广播;
2.每一个节点都将受到的交易信息纳入一个区块中;
3.每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;
4.当一个节点找到了工作量证明,它就向全网进行广播;
5.当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其它节点才认同该区块的有效性;
6.其它节点表示接受,而接受的方法则是跟随在该区块的末尾,制造新的区块以延长该链条。
也就是说,在交易发生的那一刻,比特币的交易数据被盖上了时间戳,而当这笔交易数据被打包到区块中,就完成了一次确认,连续进行确认6次后,这笔交易就不可逆转了。
在这种情况下,如果一个人想针对同一笔资金进行两次交易,由于确认时间较长,两笔交易同时确认几乎是不可能的。
而一旦前一笔交易确认后,后一笔交易就无法得到确认。双花问题就得到了解决。从本质上,每一份价值只能进行一次价值转移。
不过也有例外,那就是51%攻击。
所谓51%攻击,简单理解就是攻击者利用超过全网 51% 的强大算力优势实施对区块链共识的攻击,以实现双重支付或阻止特定交易。最终结果会使区块链的共识崩塌,失去区块链存在的意义。
攻击者是如何发动51%攻击的呢?
发动攻击首选要具有两个条件(这里以比特币为例),那就是必须掌握全网51%算力,即使不到也可以发起攻击,但是一旦到达数值,发起的攻击几乎肯定会成功;还有就是手里要持有大量比特币。
具备以上两个条件,攻击者发动攻击:
1、把比特币转到交易所或某个机构或个人,卖出所有比特币,并且收到钱、把钱提现到银行帐号(提现目的是为确保收益,也可不用提现)。这个时间越短越好,能大大节省攻击时间。
2、用51%算力从还没向交易所转币的区块开始重新生成区块。比如:向交易所转币的区块为第30万个区块,攻击者就在第29万9999个区块开始重新生成区块。
3、因为攻击者有51%算力,而且假设他能在攻击过程中保证一直51%算力,所以他的攻击一定成功,也就是说他生成的攻击块链一定能追上原块链。
4、当攻击块链的长度超过原块链2个区块,所有的客户端将丢弃原块链,接受攻击块链。至此,51%攻击成功。
51%算力攻击可以避免吗?
如果说有的话,作为交易接收方,那就是等到交易被确认,一般认为进行6次确认后,被攻击的可能性就越小。
但是如果发动51%攻击的人是为了利益,要击溃像比特币那样算力极大的系统,需要掌握全网的51%算力,而用这些算力来挖矿的收益要远高于攻击带来的收益。
因此可以认为,其实有理性的人,为了获得更大收益而攻击的人,实际上是不会发动这样的攻击的。