2017 9.24
8.10区块链的选择与组装
第一种是连接到主链上的,第二种是从主链上产生分支的(备用链),最后一种是在已知链中没有找到已知父区块的。在验证过程中,一旦发现有不符合标准的地方,验证就会失败,这样区块会被节点拒绝,所以也不会加到到任何一条链中。
区块链的分支的出现
A区块建立之后,一个节点便开始预建立一个新的区块B于此同时另一个节点也预建立了一个区块C,B和C都会链接到A上,此时这两条链都存在。如果后续的区块连接到B上,B就是主链,C就是备用链。(链越长,难度目标越大的链就是主链)
8.11.1随机值升位方案
获得符合要求的hash来挖出一个块。难度增长后,矿工经常在尝试了40亿个值后仍然没有出块。然后,这很容易通过读取块的时间戳并计算经过的时间来解决。因为时间戳是区块头的一部分,它的变化可以让矿工用不同的随机值再次遍历。但随着计算能力的提升,在几秒之后就可以把所有的随机数过一遍。为了找到有效的块,需要更多的空间来储存nonce值。可以把时间戳延后一点,但如果时间戳过后,区块很可能无效。现在解决方案是使用coinbase交易作为额外的随机值来源,因为coinbase脚本可以储存2-100字节的数据,矿工们开始使用这个空间作为额外随机值的来源,允许他们去探索一个大得多的区块头值范围来找到有效的块。这个coinbase交易包含在merkle树中。所以他的随机数很大,即使以后计算能力加强,可以通过改变coinbase来扩大空间。
8.11.2矿池
由于现在的难度目标的增大,单独一个人几乎不可能算出一个新的区块,所以就会加入矿池,一个合作获得份额奖励。通过矿池合作挖矿,减少了不确定性。
矿池分为两种,一种是托管矿池,有专门的公司来管理矿池服务器,但他是一种中心化矿池,矿池负责人有可能窃取矿池收益。
还有一种是P2P,去中心化。在P2P中,单独的矿工创建新的候选区块,聚合交易,类似于solo矿⼯,但是他们在份额链上合作采矿。
8.12共识攻击
比特币的共识机制指的是,被矿工(或矿池)试图使用自己算力实行欺骗
共识攻击能够造成的唯一影响是影响最近的区块(最多10个)并且通过拒绝服务来影响未来区块的行成。
双重交易或拒绝某个地址的交易。
双重交易——把原本发给A的比特币,发给了B.
一个人的算力不需达到51%就可以发动共识攻击,有专家计算超过30%就可以了,但随着难度目标的增加,个人算力连1%都打不到。目前危险大的是委托矿池,因为里面有认为因素的存在,人是自私的,就有可能为了自己的私利而去做有些不道德的事。