18500080688
您的当前位置:主页 > 成长分享 > >

长文解惑区块链与比特币(四)

时间:2018-05-17

(书接上文)

长文解惑:区块链与比特币(四)
比特币系统规定,每成功增加一个区块,这台记账的电脑(实际上是某个账号)就能获得12.5个比特币的奖励(截止到本文写作时的奖金额),以及这个区块中所有交易的手续费,总额取决于交易频繁程度(平均约2比特币)。这样一来,相当于每找到一个奥数,可以获得14.5比特币奖励,按照本文写作时的比特币市场价,相当于12万美元。这么丰厚的奖励,自然就会吸引大量的电脑去抢夺记账权。
寻找奥数就是抢记账权,抢记账权也就是挖比特币。
因此,寻找奥数也被形象地称为“挖矿”。挖矿的电脑就叫“矿机”,一个装满矿机的房间当然就可以叫“矿场”了,矿场的主人就是“矿主”,他们是比特币江湖中的弄潮儿。
但是,我需要给你解释一下挖矿的难度,让你打消去挖矿的冲动。个人电脑的运算速度大约是每秒可以进行60万次SHA计算,也就意味着,一台个人电脑平均需要花一千万年才有可能凑出一个奥数。当然,这是一种概率计算,我不能从理论上排除某人的人品超新星爆发,只算一次奥数就中了4.7万亿亿分之一概率的奖。但我还是想劝你不要相信自己有那个命。
给你看看人家专业的矿场是怎样的:
一个大型比特币矿场。图片来源:谷歌图片搜索
大规模的矿场据说有几万甚至几十万台矿机同时运行。我在《看看新闻》2017年6月17日的一则新闻中看到,记者采访了一个位于中国四川的矿场,根据报道,这个矿场有5000多台矿机,属于小规模,平均每天耗电超过20万度,当地的电价是每度3毛,一天光是电费就6万多元,平均每天可以挖出大约50个比特币,一年左右回本,之后能做到20%左右的利润。
不过我觉得这个报道中的数据前后矛盾,便查了一下,当时比特币的市场价是大约每个2500美元,美元兑人民币的汇率大约是6.8,所以,每天的收入大约是85万人民币,一年的收入大约3.1亿元,一台矿机的成本均价在一到两万元,矿场的矿机总成本是5000万到1亿元,即使算上电费等,一年起码有两亿的利润。
在充分的市场竞争下,出现这种暴利的可能性很低。所以,不是记者搞错了,就是被采访对象吹牛不打草稿。由于比特币的价格和全网算力的波动很大,所以投资比特币矿场很难做长期预测,不确定因素太多。
根据我们前面掌握的比特币知识,50个比特币,相当于找到了4个奥数,抢到了4次记账权。目前,整个比特币网络的所有矿机,加起来的总算力能达到的水平,大约平均每10分钟可以找到一个奥数,也就意味着平均每10分钟生成一个新的区块。当然,这个10分钟是平均数,快一点的话三四分钟生成一个区块,慢一点的话15分钟左右。
正因为奥数太难找,每个区块平均要10分钟才能生成一个,所以就能基本解决本节开头提出的第一个问题“如何同步账本”,只要有个三四分钟的时间,足以让所有在线的电脑同步到这个区块了,那些不在线的电脑或者第一次运行客户端的电脑,上线以后必须先做一件事情,就是从相邻的节点上获取最新的账本。
请注意,我用了“基本解决”这个词,也就意味着,并没有完全解决“账本同步”的问题。这是因为总会有极小的概率两台矿机恰好同时(只要在网络上所有在线的节点没有完成区块链同步之前都可以算同时)找到奥数,也就意味着同时抢到了记账权。因为矿机实在太多了,这样的小概率事件时不时也会发生一次,同时抢到记账权的矿机都能将自己生成的新区块广播到比特币网络中。
遇到这种情况,比特币系统怎么处理呢?
在这种情况下,相当于网络上的其他节点收到了两个合法的新区块,因为网络节点的地域分布不同,所以,不同的节点收到这两个新区块的先后次序就会不同。此时,所有的节点会暂时保留两个新区块,并且把区块链做一个临时的分叉,如下图所示:
接下来,比特币网络中必然又会有其中一个节点(矿机)抢到了记账权,这时该节点就会将生成的最新区块接到其中的一个分支上,那到底是接到新区块1,还是新区块2上呢?系统规则是:这个节点先收到哪个区块,就接到哪个区块上,同时放弃另一个区块,然后全网广播,如下图所示:
比特币网络上的所有节点在收到最新的区块链后,只要发现其中一个分支比另外一个分支多两个区块了,就立即也放弃那个短的分支。总之,比特币网络永远只承认更长的那条分支。
你可能会想,那如果小概率事件再次发生,在区块链第一次分叉后,又是同时产生了两个新区块,而恰好两个新区块产生在两个不同的分支上,这时候,其他节点收到的区块链还是两个一样长的分支,那怎么办?很好办,还是同样的规则,只要分支一样长就暂时保留,直到出现两个分支不一样长时,就放弃短于两个区块的,保留长的。那个被放弃的分支中所有交易和比特币奖励都会被判定为无效。
因为有了这个临时分叉的规则,所以,比特币玩家在完成一笔交易后,不能立即认为这笔交易是成功的,有可能会被取消,必须等到一定数量的新区块生成后,如果交易依然没有被取消,这才能放心地认为交易成功了。那到底要等到多少个新区块产生才能放心呢?
按照概率来说的话,小额交易有三个新区块产生就够了,但是大额交易的话,为了更保险,一般认为等到六个新区块产生,就足以放心了。前面说过,每个区块产生的平均时间是10分钟,也就意味着,一笔大额交易需要一个小时左右才能确认交易成功。
但是小额交易确认的时间往往会更长,甚至长达好几天。听到这个你可能会有点儿糊涂,刚才不是还说小额交易一般只要三个新区块产生就够了吗?怎么确认时间反而会更长呢?比特币网络刚刚诞生的头几年,确实不会出现这样的怪事,但是这几年随着交易量的猛增,就会出现这种怪事了。为什么?先回忆一下每个区块的规则:
前一个区块的数字指纹
+
固定信息
+
收到的交易记录
+
奥数
你的交易记录要被写到区块链上,有一个前提:矿工将你的这笔交易记录打包到这个区块上。你可能想问:为什么会不打包?难道系统规则还允许不打包吗?打包成功了不是还要给矿工交税吗?矿工好不容易抢到一次记账权,怎么会有钱不赚呢?
是的,允许不打包。原因不是矿工不想赚钱,而是“不可抗力”,关键问题是每一个区块允许存储的数据量有限。中本聪当初设计比特币系统时,规定了每一个区块最大只能是1MB,一条交易记录大概是0.25KB,那么一个区块最多可以储存4000多条交易记录,如果在一个新区块产生的时段中,发生的交易请求超过4000条,那就肯定存不下了。
我们可以算算,这个量大概是一个怎样的交易频率,每个区块的平均产生时间是10分钟,也就意味着,平均每秒钟的交易量如果超过7条,那么就一定会出现排队等待打包的交易记录了。这个交易频率实在很低,要知道支付宝一秒钟大约要处理上万笔交易。这一秒钟七笔交易对于全球来说,实在是太不够用了。
一般来说,大额交易优先打包,小额交易中手续费越高的交易越优先打包,打包规则矿工有一定的自主权。比特币交易手续费的规则比较复杂,不同的矿工收的还不一样,不是三言两语能说清,但有一点可能会让你感到诧异,越是大额的交易反而收费越低,甚至免费。交易额越小反而费率越高。这是因为,交易手续费除了鼓励矿工挖矿,还有一个非常重要的功能,就是防止有人恶意发布大量的小额交易造成信息拥堵。
(本文原刊《读库1802》,书接上文,未完待续,敬请关注下期)

 

分享到:

Copyright © 2018-2020 www.fqcycpa.com 北京峰清诚永会计师事务所(普通合伙) 版权所有   京ICP备14007909号

分享按钮