编者注:这么说可能更顺一点。在设计上,(除了第一个区块)每个区块都必须指定自己要承接的上一个区块;结合着这上一个区块的内容,我们可以用密码学哈希函数设计出一种计算难题:要求通过改变输入来使得哈希函数的结果符合一定的形式要求(比如小于某个值)。因为哈希函数的结果是随机的,而且在计算上是单向的(不可能通过 y 反推出 x),因此,找出符合要求的解的唯一方法就是暴力运算。找出了这样的一个解之后,找到解的节点就可以广播相应的区块、要求其它节点接受了。
而上面这个 “10 分钟”,即是比特币的 “区块间隔”(或者说 “出块时间”)。不同的区块链往往有不同的出块时间。
关于密码学哈希函数,可看:《Emoji 表情带你秒懂哈希函数》
这时,可能会有善于提问题的同学举起小手手问:要是碰到两个节点同时解决了问题,并把他们的块都发送到网络,这时可怎么办?
在这种情况下,两个区块都广播到网络中了,其他节点就在自己先收到的区块上开始继续加块。但是,比特币协议要求每一个节点都在其可见的最长链上加块,因此,若不清楚哪一个是最新区块(两个块同时被挖出),一旦某一个区块后面的区块得以挖出,根据最长链规则,该问题即可解决。
-图 7. 链顶端的模糊性解决逻辑-
由于同时挖出区块的可能性很低,也几乎不可能在每一个高度都有多个区块同时挖出。所以,整个区块链就会在一条每个节点都同意的链上迅速稳定下来。
但 “哪个区块是区块链的顶端” 的分歧又给了诈骗者可乘之机。如果交易恰好在非最长链中(如图 7 的区块 B),一旦(最长链)挖出了下一区块,在该区块中的这单交易和其他交易将复归为 “未确定的交易(状态)”。
数学竞赛保护着在比特币区块链的系统中的交易,简言之,每个攻击者无疑都在单挑整个网络。
让我们来看看这个例子,玛丽是怎么利用链条顶端的模糊性进行 “双花攻击” 的。玛丽转一些钱给约翰,约翰知道后就发货给玛丽。因为节点总采用最长链规则来确认交易,所以,如果玛丽能够挖出一条更长的链,同时撤回上述交易,那么约翰就会钱货两空。
-图 8. 玛丽的 “双花攻击” -
那系统怎么预防这种诈骗的呢?每个区块会引用前一区块的区块 ID(详见六6)。前一区块的 ID 也是密码学谜题的一个元素,节点(“矿工”)要解决这个难题才能将后续区块上链。因为解一个难题并把新区块放上链需要大量随机的猜测,所以预先计算一连串区块是极其困难的。在这个数学竞赛中,以一敌众的玛丽暂时抢先放置了下一个区块,不过,离她的如意算盘还早着了――她几乎不可能连续地解决第二个、第三个、第四个......毕竟她的对手是整个网络呀!
如果玛丽用跑得超级快的电脑和整个网络杠呢?答案还是一样滴。由于网络上有千千万万个对手,不管玛丽用的是多么多么快的电脑,玛丽在进行双花攻击时,需要接二连三地解决数学题,这还真滴不太可能(可不要怪我打击人哦)。
玛丽需要控制全网络 50% 的计算能力,才有 50% 可能性赶在其他节点之前解开一个区块。即使在这种情况下,她也仅有 25% 可能性可以连续出两个区块。简单地说,她需要连续出的区块越多,她成功的可能性就越小。再敲一下小黑板――在比特币区块链系统中的交易受这种数学竞赛 “护体” ,攻击者无疑是以卵击石。
因此,随着时间推移,交易也会更为安全。举个例子,那些一小时前确认并保存在区块中的交易比十分钟前确认的交易更加的安全。由于区块平均每十分钟会增加一个,那么在一小时前保存在区块当中的交易早已确认,变得不可逆了。
-图 9. 区块链的交易安全性-
比特币挖矿
要发送比特币的时候,你需要引用一笔接收者为你的钱包的资金。这适用于网络中的每一交易。
编者注:这就是所谓的 “UTXO”,即在比特币系统中,钱不像我们的银行账户那样是以数字的形式存在的,而是以一张票据(note)的形式存在的。当你要转账时,你等于是要把票据拆成(或补成)一笔特定数额的票据,然后用只有提供接收者私钥才能解锁的方式给这笔资金上锁。接收方日后要花这笔钱的时候也是如此:用自己的私钥解锁。
此文由 比特币官网 编辑,未经允许不得转载!:首页 > 比特币行情 » 科普 | 区块链的运作方式(注释版)