Zano

作者:扎克-赫斯, Zack Hess https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/zano.md

Zano扎诺 评论

以下是Zano的白皮书:https://zano.org/downloads/zano_wp.pdf

Zano的白皮书是非常高质量的文件。可能是我看过的所有区块链项目中最好的白皮书。图表很好,解释也很清楚。准确地传达你的工作对于其他人能够审查它并给出有用的建议至关重要。这是Zano的闪光之处。

这里有一个关于PoW/PoS混合协议不可行的一般证明:Pow_pos_hybrid.md

隐私和贿赂 #

一般来说,股权证明类型的机制很容易受到贿赂的影响 proof_of_stake 在Zano中做到这一点的最佳方法是付钱给验证者,让他们把所有的钱转移到一个不同的地址,并向你出售他们现在空的私钥的副本,而这个私钥在几个小时前还是有效的。

在Zano中,验证者被隐藏在一个加密协议后面,所以我们无法知道谁是验证者。因此,该机制不能删除任何存款,以惩罚出售其旧私钥的验证者。

如果攻击者买下了顶部区块和最近一个检查点之间历史上某一点的大部分股权证明私钥,那么我们就可以进入攻击的第二阶段了。

分叉选择规则 #


扎诺的分叉选择规则并不是一个着眼于单一历史的累积权重函数。它是一个比较2个备选历史,并选择一个的函数。它是一个有4个输入的函数。

weight(P1, P2, H1, H2) = (P1 + H1) * P1*H1/(P2*H2)

把它全部乘出来。

weight(P1, P2, H1, H2) = (P1*P1*H1 + P1*H1*H1) /(P2*H2)

在实践中,我们总是在比较一方与另一方的重量。

weight2 = (P2*P2*H2 + P2*H2*H2)/(P1*H1)

如果第1方赢了,那就意味着->

(p1 + h1) * p1 * h1 / (p2 * h2) > (p2 + h2) * p2 * h2 / (p1 * h1)

简化为->

(p1 + h1) * (p1 * h1)^2 > (p2 + h2) * (p2 * h2)^2

简化为->

weight(P, H) = (P + H) * (P * H)^2

这不是扎诺的确切的分叉选择规则。这是一个简化,让你对他们使用的分叉选择规则有一个大致的概念。

因此,让我们假设攻击者有2/3的股权控制权,并计算出他们需要多少算力来控制。分叉2是攻击者的一方。

P2 = 2*P1

为了简单起见,非攻击者一方的分叉有正常的参与量和hashrate。P1 = 1, H1 = 1

(1 + 1) * (1 * 1)^2 = (2+h2) * (2 * h2)^2
-> 2 = 8 * h2^2 + 4 * h2^3
-> 1 = 2 * h2^2(2 + h2

由于H2是正数,所以只有一个解决方案。H2=0.451(我用wolfram alpha来计算)这意味着一个控制了2倍于主链的股权的攻击者只需要控制45%的hashrate就可以控制区块链。

45% < 51%,所以攻击这个协议与标准PoW相比更便宜。

接下来让我们看看一个拥有90%股权控制权的攻击者需要多少算力。

P2 = 9 P1 = 1 H2 = ?H1 = 1

(p1 + h1) * (p1 * h1)^2 = (p2 + h2) * (p2 * h2)^2

2 * 1 = (9 + h2) * 81 * h2 * h2

H2 = 0.052

因此,如果一个攻击者控制了90%的股权,他只需要控制5.2%的算力就可以控制区块链了。

这里的实际结果应该是20%,而不是5%。问题在于,我使用的是估计值,而不是实际的分叉选择规则。

鉴于区块链攻击的现状,得出更现实的结论 #


尽管从严格的博弈论意义上讲,扎诺的PoW+PoS比PoW要弱,但目前看来,它仍可能是一个更好的解决方案。

因为如果有人开始做这些PoW/PoS混合贿赂攻击,有很多其他区块链比Zano更容易被攻击,所以我们会有足够的警告,在那个时间点切换到PoW。Zano优秀的分叉选择规则意味着你仍然需要大量的PoW 算力,即使你已经贿赂了几乎所有的PoS参与者。

而在那之前,Zano的PoS方面给予了很好的保护,使其免受hashrate租赁攻击。