首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

比特币如何阻止读书人乱花钱

我们今天来讲讲双花的问题。

“温两碗酒,要一碟茴香豆”,孔乙己排出九文大钱。

“呵呵,两碗酒九文,茴香豆也要九文,孔乙己你这怕不是在逗我“,掌柜冷笑道。

“读书人的钱,一文当作两文花又何妨!酒与茴香豆,我全都要!”

读书人是厉害,但是读书人的钱,掌柜也不会允许一文当作两文花。孔乙己想要把这九文钱花两次,买两样东西,这是一个简单的“双花”例子。掌柜作为一个“中心“,能够很直观地判断出双花。那么在比特币这个”去中心化“的世界中,没有了掌柜,谁来阻止可怕的读书人乱花钱呢。

比特币为了解决双花问题引入了工作量证明。

我们来讲讲读书人小明的故事。

有天,心怀不轨的小明拿着代号为124724787的1个比特币到一个无人看守小卖部里下了两笔单子,交易A是买价值1比特币的可乐,交易B是买价值1比特币的芬达。

在一般情况下,第二笔订单会立刻被比特币钱包拒绝,只有先发起的那笔交易会被承认,o文明k。

然而小明同学不是一般人,他是有一定代码水平的读书人。小明不用标准的比特币钱包,而是自打代码编出了自己的钱包,把这两笔交易都广播出去了。

这时全世界的矿工有些先收到了买可乐的交易请求,有些先收到了买芬达的交易请求。所有的矿工们在收到交易请求后都会立即开始“工作量证明”。

那么,什么是工作量证明?

工作量证明,就是证明你做了多少工作。你要证明自己认真工作了,就要解出一道数学题。这道数学题没有能直接做出答案的公式,也没有什么巧妙的解法,解题全靠瞎掰。简单来说,矿工们需要在一串给定数据之后,加上自己猜的几个乱码,经过一个叫SHA-256的算法之后算出另一串乱码,学名哈希值。算出来的这串哈希值如果以特定数量的为开头,就算解题成功,拔得头筹的矿工就会获得某笔交易的记账权,并得到比特币的奖励。

与此同时,小明同学正在店里焦急地等待矿工们的计算结果。

他能买走可乐和芬达吗?

我们来看看挖矿的过程吧。

如果有个网名为“电锯狂魔”的矿工,先算出了可乐那笔交易的正确哈希值,他就会昭告天下,宣布他拿下了这笔交易的记账权,并把交易加入到他电脑上的区块链文件中。其他矿工,包括那些在算芬达交易的,只能停工把“电锯狂魔”算出来的可乐交易加入到他们电脑上的区块链文件中。区块链被更新后,买可乐这条交易就被承认了,买芬达的交易则会被否决。

那如果小明用了某种骚操作,让两个矿工同时搞定了可乐和芬达的工作量证明呢?

如果在“电锯狂魔”成功验证可乐交易的同时,他的死对头“美国队长”同时成功验证了芬达交易,这时两笔交易成功的消息就会被同时广播给世界上其他的矿工。有的矿工先收到了“电锯狂魔”的消息,把可乐的交易加入到他们电脑上的区块链版本中;有的矿工则先收到了“美国队长”的消息,承认了芬达的交易。

这时,全网的区块链就会分成两个版本,电锯1.0和美队1.0,两边谁也不服谁,一场决战在所难免。

于是,持有电锯1.0和美队1.0的矿工们将会继续努力工作,计算其他交易的哈希值,拿下记账权,并把新的交易加到他们自己的区块链后面,生成电锯1.1,美队1.1,电锯1.2,美队1.2等等等等。前面提到,在一名矿工先验证出了某个交易之后,其他矿工会立即停下手中工作并承认这笔交易。又由于区块链总是承认最长的链的机制,很快电锯1.x会打败美队1.x,或者美队1.x打败电锯1.x,成为被承认的链。这时,买了可乐还是买了芬达的问题就解决了。

而小明,如果想让自己的1比特币同时买到可乐和芬达,就要让小强1.x和小刚1.x一直打成平手。他不仅需要让两条平行链的计算力一直保持平衡,还要考虑到两条链上矿工瞎猜时的运气成分,很显然这是不可能的。

但是作为一个读书人,小明从不轻易放弃,于是他放出了更骚的一招。

假如电锯1.5升级成为电锯1.6,击败了美队1.5,那么全网的矿工就会舍弃美队版本,全部投靠电锯狂魔麾下,小明也成功拿到了可乐。

这时,小明反其道而行之,自开矿场疯狂挖矿,连续拿下两次记账权,并把他拿下的交易全都记录到美队1.5的后面,升级成为美队1.7,强行让美队弯道超车击败电锯1.6,成为最长链。我们之前提过,这个美队1.7上记录了一笔小明买芬达的交易。于是,小明在拿到可乐的几天后,又成功拿到了芬达。

当然,这是不太可能的。这里涉及到一个算力的问题。算力,即进行工作量证明时的计算能力,算力越大,拿到记账权的几率就越大。小明想要连续拿到两次记账权,需要很大的算力。

目前比特币的全网算力有多大呢?根据bitcoin.com的实时更新,现在大概是25 EHash/s,即每秒钟算出25后面跟上18个0个哈希值 。

目前比较强的蚂蚁矿机S9,算力是 13500GHash/s, 价格一台1万1 人民币。 要达到25Ehash 的算力,大概需要185万台蚂蚁S9,合203亿人民币。

花了这203个亿之后,小明刚好能和其他矿工打成平手。想要拿到自己心爱的芬达,他还需要继续投个几个亿,让自己的算力形成优势。

小明选择洗洗睡了。

读书人小明,最后还是败在了另一个读书人中本聪的手下。

都看到这了,还不点个赞点个关注?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180329G144DH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券