
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较高(更简单)。 该算法定义如下:
maxTarget
,
emaWindowsSize
和
emaDesiredSpacing
的值将在模拟过程中确定。
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;
deterministicRandString
和
beeHashTarget
都可以由网络上的任何节点计算。
爱丽丝的钱包现在通过确定性随机链传递了她每只活着的蜜蜂,结合了蜜蜂的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为当前块计算
deterministicRandString
和
beeHashTarget
,然后计算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)