区块链1.0 比特币白皮书细读(下)

单纯的时间戳不能完全避免双花,因为支付者可以重新修改时间,同时修改比特币源码造成跳过时间检测机制或者恶意构造交易(图中的Tx)实现双花,这就需要一个机制来保证时间不会被修改。

  为了解决时间可能被修改的问题,中本聪采用了POW机制。简单来说就是增加一个区块创建的算力成本,如果坏人需要更改时间实现双花,那么你就要比其他正常的好人的算力总和都要大。这样你很难拥有这么大的算力,而是成本会大于你获得的价值。这真是一个看透人性而且浪费资源的好算法,我相信其他算法会陆续改推出。
              另外白皮书中“另一个问题是,硬件的运算速度在高速增长,且节点参与网络的程度会有所起伏”中本聪考虑到了计算能力的发展如“量子计算机”。那么设置固定的POW的复杂程度(消耗算力量)是不可取的,就要让区块的增长和计算难度相关(反正你算力会越来越快,那我需要的算力就越到后面越大,在人性引导下实现平衡),通过前一节的“碰撞SHA算法的0”来实现,越到后来你需要找到的连续0的数量就越多,根据SHA算法原理,你需要消耗的计算能力也是成指数增长的,这样就抵消了硬件计算成本的下滑,也就是说,你以前花1000块钱买1个机器可以干的事情,你现在还是需要化1000块钱买2个小型机才能干。

首先,“每一个节点都将收到的交易信息纳入一个区块中”,这些交易是加密的,节点是无法更改交易内容的。纳入的是一个自己生成的新区块,用户为了让自己的新生成的区块被别人认同“每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明”,这就用到了上一篇说的POW工作量证明。这样谁先找到并广播出去获得其他区块的认同,他说所产生的区块就成立万一有两个节点“同时”运气不错,都找到了呢,从时间原理上来说,是不可能存在“同时”的,总有先后顺序,哪怕是毫秒级的差距或者是网络广播造成的延时,这是个哲学问题”你不可能同时踏进两条相同的河流“,一旦有节点收到了这个区块的广播,那么节点就会进行验证“当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;”验证通过后,这个节点就不会再接受别的节点的同样区块了,需要注意的是,同时这个节点会终止自己正在进行的包含同样交易的区块计算,也就说不会在进行无用功了,这些节点就会在这个区块基础上启动新的交易区块计算,如此往复,形成链条。

那么问题又又来了,因为网络的复杂性,在同时总有一组节点互相收到交易区块,记录了同样的链条呢,其实原理很简单,这些同样的链条都会被保留下来(分叉),”该僵局(tie)的打破要等到下一个工作量证明被发现“,通过一段时间的运行,总有一条区块链条是时序上最长的(还记得前面说过的时序相关吗),那么到最后长的那条就是最终被认可的链条,比特币的区块链条就是在不停的分叉、抛弃、又分叉、又合并的过程中,最终最长的那条才是系统认可的区块链。多么象贪吃蛇游戏啊,看谁最后最长。

这就是为什么有人挖矿了,而且越来越难挖,前期一个区块会产生一个新的货币,后期就得到的是区块内的交易扣掉的交易

提问:算力过大的投入,导致计算难度越来越大,营造算力廉价的假象,交易费用激励小于节点参与生成者的投入会出现吗?

                 为了让区块尽量的减小大小,我想是以前的交易在其他区块中是有保存的,至于为什么要在交易被纳入足够多区块后才能丢弃之前的数据,我想是在传输最近交易时也会将以前的交易一起传输。

发布了46 篇原创文章 · 获赞 43 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/wangxiaai/article/details/86162558