打字猴:1.703876045e+09
1703876045 无效块会影响区块链安全吗?答案是肯定的。我们知道网络安全由网络中矿工的全部算力衡量。当算力增长时,难度值也要增加,以确保区块不是在平均时间之前生成的。所以更高的难度值意味着更安全的区块链——节点想篡改区块链将需要更多算力,使篡改区块链更困难,因此区块链被认为是更安全的。当几乎同时挖出两个区块时,我们将把网络分成两部分,在两个不同的区块链上工作,但是其中一个将成为最终区块链。所以在无效块上工作的网络是在无效块上挖下一个区块,结果是网络算力损失,因为算力用在了没有用的事情上。网络的两个部分很可能用比平均时间更长的时间去挖下一个区块,因为它们损失了算力。所以,在挖出下一个区块之后,难度值将降低,原因是用于挖区块的时间比平均时间更长。难度值降低会影响整体区块链安全。如果无效块率太高,将在很大程度上影响区块链安全。
1703876046
1703876047 以太坊用ghost协议解决无效块带来的安全问题。以太坊使用这个真实ghost协议的一个修正版本。ghost协议仅仅把无效块添加到母链上,掩盖了安全问题,由此增加了区块链的整体难度值,因为区块链的整体难度值还包括无效块的难度值之和。但是如何才能在不产生交易冲突的情况下把无效块添加到母链中呢?事实上,任何区块链都可以接纳零个或者多个无效块。为了激励矿工接纳无效块,矿工接纳无效块将得到回报。此外,发现无效块的矿工也将得到回报。无效块中的交易不用于计算确认,无效块矿工也不向无效块接纳的交易收取交易费。注意,在以太坊中,无效块称为“叔块(uncle block)”。
1703876048
1703876049 矿工接纳无效块得到的回报计算公式如下。其余回报归侄块(nephew block),即包含孤块(orphan block)的区块:
1703876050
1703876051
1703876052
1703876053
1703876054 你肯定在奇怪为什么要给无效块矿工回报。即便不给它们任何回报,也不会影响安全。这是因为无效块经常出现在网络中会导致另一个问题,而这个问题可以通过给无效块矿工回报解决。矿工应当得到一定比例的回报,大致相当于它为网络贡献的算力比例。如果两个不同的矿工几乎同时挖出一个区块,则算力比较大的矿工挖出的区块更有可能被添加到最终区块链中,因为该矿工挖下一个区块的效率会比较高,所以小矿工将失去回报。如果无效块比例低,就不是大问题,因为大矿工增加回报的概率不大。但是,如果无效块比例高,就会产生大问题,也就是说,大矿工在网络中最终将得到比它应得的更多的回报。ghost协议通过回报无效块矿工找到平衡。由于大矿工不拿走全部回报,但是仍比它们应得的多,我们不能对无效块矿工和侄块给予同等回报,而是给得少一点。前面的公式很好地解决了问题。
1703876055
1703876056 ghost协议会限制一个侄块可以指向的无效块总数,这样矿工不会只挖无效块并使区块链生成速度变慢。
1703876057
1703876058 所以一旦无效块出现在网络中,它会或多或少地影响网络。无效块出现得越频繁,网络受到的影响越大。
1703876059
1703876060
1703876061
1703876062
1703876063 区块链项目开发指南 [:1703875275]
1703876064 区块链项目开发指南 2.8 分叉
1703876065
1703876066 在节点验证区块链发生冲突时,会发生分叉(forking),也就是说,在网络中有多于一个区块链,且每个区块链由一些矿工验证。分叉共有三种:普通分叉、软分叉和硬分叉。
1703876067
1703876068 普通分叉是由于两个或者多个矿工几乎同时发现了一个区块引起的暂时冲突。如果一个难度值高于另一个,冲突就解决了。
1703876069
1703876070 更改源代码可能引起冲突。根据冲突类型,可能要求有50%以上算力的矿工升级,也可能要求所有矿工升级,以解决冲突。要求有50%以上算力的矿工升级以解决冲突,叫作软分叉;而要求所有矿工升级以解决冲突,叫作硬分叉。软分叉的一个例子是,如果更新源代码使旧区块/交易的一部分失效,则有50%以上算力的矿工升级后可以解决,这样新的区块链将有更大难度值,最后被整个网络接受。硬分叉的一个例子是,如果更新源代码是为了更改对矿工的回报,则全部矿工需要升级以解决冲突。
1703876071
1703876072 以太坊自发布以来经历了多次硬分叉和软分叉。
1703876073
1703876074
1703876075
1703876076
1703876077 区块链项目开发指南 [:1703875276]
1703876078 区块链项目开发指南 2.9 创世区块
1703876079
1703876080 创世区块(genesis block)是区块链中的第一个区块,其区块序号是0。它是区块链中唯一一个不指向前一个区块的区块,因为没有前一个区块。它也不包含交易,因为还没产生任何以太币。
1703876081
1703876082 只有网络中的两个节点有相同的创世区块,它们才会彼此配对,也就是说,如果两个对等节点有相同的创世区块才会进行同步区块,否则它们将彼此拒绝。不同的创世区块有较高难度值也不能替代难度值较低的。每一个节点生成自己的创世区块。对于不同的网络,创世区块被硬编码到客户端里。
1703876083
1703876084
1703876085
1703876086
1703876087 区块链项目开发指南 [:1703875277]
1703876088 区块链项目开发指南 2.10 以太币面值
1703876089
1703876090 和其他货币一样,以太币也有多种面值。其面值如下:
1703876091
1703876092 ·1以太币=1000000000000000000 wei。
1703876093
1703876094 ·1以太币=1000000000000000 Kwei。
[ 上一页 ]  [ :1.703876045e+09 ]  [ 下一页 ]