高采矿:保护PoW区块链免受“ 51%攻击”的最新选择

图片

Litecoin Cash叉子的开发人员展示了技术文档“ 蜂巢:Litecoin Cash中基于代理的采矿预印本,他们在其中描述了他们的建议,即基于工作量证明算法来保护加密货币区块链免受“ 51%攻击”。 他们的解决方案结合了使用老化ASIC设备(SHA-256)的挖掘和使用“工作蜂”(HiveMine)的民主虚拟挖掘。 在正确实施区块链的情况下,LCC将解决现代区块链项目(从比特币到以太坊)最大的问题之一:当总网络功率的一半以上集中在攻击者的手中时,就会构成攻击的威胁。

51%攻击问题


监视加密货币市场的人可能不会注意到最近爆发相对较小的PoW项目(工作量证明-“工作完成量证明”) 遭受了51%的攻击 ,当时攻击者重写了交易并通过交易所尽快转移了资金。 在这种情况下,“相对”表示支持大型区块链(例如,比特币或以太坊)的加密安全性的设备中的一小部分将足以打破使用相同哈希算法(分别为比特币现金或比特币黄金)的小型区块链的共识。 。

对于采用SHA-256算法(LCC或BCH)作为加密基础的加密货币,世界上最大,最安全的加密货币使用相同算法-比特币(BTC)的事实加剧了风险。

在本文中,我们将重点关注针对51%攻击的保护数学模型,并简要地突出显示区块链加密中使用的主要相关术语和概念。

高采矿概论


在经典的PoW区块链安全方案中,矿工通过计算大量潜在的区块哈希来竞争,以找到满足网络共识所指定的复杂性条件的区块哈希。 如果复杂度为零,并且任何哈希被网络接受为有效,则工作量证明将不起作用,并且任何网络节点都可以轻松挖掘区块。

乍看之下,这还不错:就能源而言,采矿将变得民主和低成本。 但是实际上,每个人都会挖掘便宜的区块并将其推入网络,这意味着将有很多候选者来延续区块链。 由于矿工将不再了解在哪个区块上构建区块链的延续性,因此将出现许多孤链。 PoW-coins会使用一种不足的算法来调整挖掘的复杂性,从而观察到混乱。

如果复杂度为零,并且该区块的生产不会产生任何成本,那么没人会确定哪个候选链的价值更高,这意味着将没有优先权。 矿工也将能够在各种链条上工作而不会损失任何东西。

这个思想实验只是表明,工作量证明算法,权益证明或任何事物的证明的主要目的是为网络提供确定性的方法,以确定采矿,铸造或锻造区块的权利,其他参与者将对此表示同意。 。 此外,对于所有寻求区块链者来说,另一个重要条件是不要同时不受惩罚地在多个链上工作。 在权益证明系统中,这种方法受到部分或全部剥夺股份的惩罚。

当生产一块的权利由代表用户的代理人保障时, 高采是另一种形式的块状斗争。 这些代理商-“工蜂”-位于区块链本身。 它们是完全分散的,并在用户进行特殊交易以创建代理时创建。

创建后,工蜂开始充当采矿(钻机)的虚拟设备,它们的所有者成为“养蜂人”。 当工蜂成功获得保护区时,该保护区的报酬(包括保护区中的佣金)将支付给养蜂人。 工作的蜜蜂需要很少的能量,不需要专门的设备来生产块。 而且,它们的寿命是有限的,而养蜂是一种具有一定价格的投机行为。 这样可以防止尝试同时在多个链上工作。 单个蜜蜂的成功仅取决于生活在整个网络中的蜜蜂数量。 有些蜜蜂将永远找不到障碍,而另一些蜜蜂会格外幸运(类似于单独开采)。

图片

1:在蜜蜂的生命周期中,通过蜜蜂创造交易(BCT)和矿区将工作蜜蜂添加到区块链中

创建代理(工作中的蜜蜂)


要创建工作蜂,用户将交易发送到特殊的“死”地址,例如: CReateLitecoinCashWorkerBeeXYs19YQ 。 请注意,每个人都使用相同的地址来创建蜜蜂。 该地址被解析为现有地址和正确地址,但是没有人拥有私钥; vanitygen实用程序确定使用24 * 2 GHz内核搜索私钥将花费大约1.7 * 10 ^ 31年(成功的机会为50%)。

创建蜜蜂的交易必须至少具有两个输出。 第一个定义了创建蜜蜂的固定费用,该费用被发送到无法访问的地址。 尽管创建蜜蜂的价格将动态确定,但可以假设,这将是块奖励的百分比。 此计算包括最低成本,因此,在开采所有代币时,使用大量采矿来收取交易费用是有意义的。

第二个结论的成本为零,但指定了基址,该基址将来会获得蜜蜂发现的障碍物的任何奖励。 您可以将其称为“养蜂人的未来地址”。 如果需要,用户可以自己进行澄清; 默认情况下,每次在他的钱包中都会生成一个新地址。

一个例子:

 "vout": [ { // Bee creation fee "addr": "CReateLitecoinCashWorkerBeeXYs19YQ" "value": 1.0000000 }, { // Address to receive block rewards for any blocks this bee mines "addr": "CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR" "value": 0.0000000 }, { // Change address for change from creation fee "addr": "Cd6CRuWCu6p4NLR6XG7BKyC8hzvEoYuKbn" "value": 123.5274346 } ] 

从创建蜜蜂的那一刻起,在区块链上出现576个区块之后,蜜蜂就会成熟并能够生产区块。 这是在24小时内添加到Litecoin Cash区块链中的新块的预期数量。 蜜蜂成熟后,有4032块(约1周)并寻找块,然后它们死亡。

蜜蜂在QT钱包中创建。 像这样的东西:

图片

2:带有工作蜜蜂的LCC钱包的布局

蜜蜂在工作:块搜索


例如,假设区块链高度= 1000,并且网络应确定分配哪只蜜蜂来查找块1001。爱丽丝的养蜂人现在有4只蜜蜂(在576和4608之间创建)。

当出现块1000时,爱丽丝的钱包计算两个值。

第一个是确定性值,该值不可预测但易于验证。 通过在0到500000块之间的不同(硬编码)深度处添加块哈希可以轻松做到这一点,确保我们的随机值扎根于区块链:

 string deterministicRandString = blocks[blockHeight].hash + blocks[blockHeight-13].hash + blocks[blockHeight-173].hash + blocks[blockHeight-1363].hash + blocks[blockHeight-27363].hash + blocks[blockHeight-496393].hash; 

接下来,她的钱包计算出蜜蜂的目标哈希beeTargetHash 。 该值由具有很高动态范围的指数移动平均值确定,该指数设置beeTargetHash以便对于任何给定的蜜蜂种群,确定在采矿过程中获得的块的频率。 从好的方面来说,自上一个高矿井区块以来,已开采了更多PoW区块,即beeTargetHash较高(更简单)。 该算法定义如下: maxTargetemaWindowsSizeemaDesiredSpacing的值将在模拟过程中确定。

 beeHashTarget = previousBeeHashTarget (default to highest (easiest) target maxTarget) numPowBlocks = number of pow blocks since the previous hive mined block; emaInterval = emaWindowSize / emaDesiredSpacing; beeHashTarget *= (interval - 1) * emaDesiredSpacing + numPowBlocks + numPowBlocks; beeHashTarget /= (interval + 1) * emaDesiredSpacing; 

deterministicRandStringbeeHashTarget都可以由网络上的任何节点计算。

爱丽丝的钱包现在通过确定性随机链传递了她每只活着的蜜蜂,结合了蜜蜂的BCT交易并对其进行哈希处理以获得新的哈希值-单个蜜蜂的beeHash。 因此,每只蜜蜂每块产生一个哈希。 此哈希类似于PoW采矿设备在同一时间段内生成的最佳哈希。

 hash beeHash = sha256(deterministicRandString + bee.creationTransaction.ID); 

由于爱丽丝的钱包跟踪蜜蜂(每个蜜蜂都计算beeHash ,因此它会记录发现的最佳(最低)哈希值。 结果,如果爱丽丝的钱包发现的最佳哈希满足条件beeHash < beeTargetHash ,则爱丽丝有权添加一个块。

假设爱丽丝有一只活着的蜜蜂,其哈希值低于目标蜜蜂,并且成功的蜜蜂的BCT交易标识符如下:

 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841. 

网络知道爱丽丝的钱包有权在一个区块上签名,因此该网络产生了一个具有特殊交易的区块,并具有两个输出:

 "vout": [ { // Zero-value output identifies the bee and proves it's really minting for Alice "value": 0, "n": 0, "scriptPubKey": { "asm": "OP_RETURN OP_BEE 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841 IH3Emz49KJeRbw0q4R48pD6GWPQtvHCxLeQOxxH+yv14Tn5KzUFIXBe9Td8EHudejzebMYt/XpusENzNkGM/a4I=" } }, { // Block reward (subsidy + fees) - must pay to bee's correct coinbase address "value": 250.0001125, "n": 1, "scriptPubKey": { "addresses": [ "CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR" ] } } 

vout[0]是无法使用的零值输出。 它既可以用来识别遇到障碍的蜜蜂,也可以用来证明她是为爱丽丝得到的。

vout[1]是向Alice支付块奖励的输出。

阻止确认


鲍勃的钱包收到了爱丽丝的阻止,现在必须确保他满足共识。 首先,他确保事务包含两个输入,第一个输入为零,并且脚本以OP_RETURN OP_BEE 。 然后,他检索爱丽丝的蜜蜂交易ID:

 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841. 

离题:由于创建蜜蜂的交易被转移到了无法访问的地址,因此未使用交易(UTXO)的输出仍保留在其中。 因此,鲍勃的钱包不需要启用txindex命令行选项(由于延迟验证和增加的磁盘使用量,该选项就完全索引了所有交易)来轻松检查Alice的BCT输出。 由于使用UTXO,因此QT钱包不需要任何数据库或修改即可支持高挖掘。 蜜蜂选项卡还动态集成。


通过验证高矿区,Bob的钱包实现了RPC(远程过程调用)的等效功能:

 gettxout 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841 0 

这为他提供了第一个BTC输出vout [0] ,并确保1)交易深度在蜜蜂的寿命范围内; 2)为养蜂支付了佣金; 3)它已发送到正确的死角地址。

如果通过验证,Bob的钱包将产生:

 gettxout 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841 1 

因此,获得BCT的第二个输出vout [1] ,确认1)值为零; 2)该地址与该块中接收硬币转移的地址相同(在示例CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR )。

以下检查从vout [0]的最后部分验证消息签名。 该消息应包含当前的区块编号,并用接收硬币转账的地址签名,因此Bob的钱包会产生:

 verifymessage CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR "IH3Emz49KJeRbw0q4R48pD6GWPQtvHCxLeQOxxH+yv14Tn5KzUFIXBe9Td8EHudejzebMYt/XpusENzNkGM/a 4I=" "1001" 

最后,Bob为当前块计算deterministicRandStringbeeHashTarget ,然后计算Alice的beeHash并将其与beeHashTarget 。 如果所有检查均通过,则该块被视为有效并已验证。 块验证过程很快,并且不需要对历史块进行昂贵的验证。

配对Hi-Min和PoW挖掘


假定高挖掘不是确保网络安全的唯一方法。 Litecoin Cash开发人员不仅希望拯救采矿社区,而且也不想以任何方式进行干预。 高挖掘必须与一个区块链上的PoW挖掘配对。

当前,电路的操作计算如下:

图片

即,电路的操作根据电路的每个块中的复杂度而累积。 开发人员建议更改此定义,如下所示:

图片

因此,将根据先前的PoW块中完成的工作量来奖励每个蜂巢矿块,并通过实验确定常数k

结论:高采作为防御攻击的51%


根据莱特币现金(Litecoin Cash)首席开发商Jane'Tanner'Craig的说法,HiveMine的想法不仅是为抵御51%的攻击提供可靠的保护,而且还使采矿民主化和分散化。 与PoS区块链不同的是,当“富人变得更富裕”时,HiveMine积累了自己的份额,但它仍然需要创建可能无法回报的蜜蜂的成本。 基于代理的挖掘可满足团队的三个主要任务:使用SHA-256算法使51%的攻击大大复杂化,使挖掘民主化并为矿工提供自由,这确保了同一比特币网络的高度安全性。 为了成功进行攻击,攻击者将需要夺取网络51%的权力以及网络中51%的蜜蜂种群,而且在创建蜜蜂的过程中,这将立即变得显而易见。

根据Craig的说法,在Litecoin Cash网络中测试并实现了HiveMine模型之后,该模型没有提供与相同的Bitcoin Cash相同的SHA-256哈希率,但它将比Bitcoin Cash或Bitcoin网络更快,更可靠。 。

参考文献:
1.“ 蜂巢:Litecoin Cash中基于代理的挖掘 ”,Iain CRAIG,Sebastian CLARKE,MichałWYSZYŃSKI和Federico DEGONZÁLEZ-SOLER。 (2018)

Source: https://habr.com/ru/post/zh-CN415949/


All Articles