根据比特币白皮书,Blockchain技术最初由Satoshi Nakamoto开发,是一种基于Proof-of-Work算法的分散式解决方案。系统用户可以在不受信任的环境中进行安全支付,而无需审查第三方的交易。
然而,在该技术中使用相当简单的挖掘算法通常会导致制造特殊设备。因此,一些矿工比没有ASIC的矿工获得了多重优势。此外,在这种情况下,矿工将他们的计算能力整合到采矿池中。这些池的管理员使用STRATUM协议发送任务,并获得添加到区块链的块的奖励。
因此,缺乏对创建大型采矿池的保护导致基本上集中采矿以及由一小群人审查交易的可能性。
久安交易所为了解决这些问题,使用以下反池算法PoW,这也可以增加采矿的ASIC阻力。基本思想是每次挖掘迭代都使用COINBASE事务的私钥进行签名。需要考虑的问题只有P2PK或P2PKH输出。
块头的结构包含7个字段:
1)block_version(4个字节)
2)previous_block_header_hash(32字节)
3)block_timestamp(8字节)
4)transaction_count(4个字节)
5)merkle_root(32字节)
6)block_difficulty(8字节)
7)block_nonce(8字节)
进一步写入签名block_header_hash_sign(64字节)。
COINBASE事务和其他事务在块中进一步跟随。
挖掘周期包括4个阶段:
1)在块头中改变数字block_nonce(8字节)。
2)优选地通过ASIC抗性或CPU-ONLY算法对块头进行散列。
实际上,散列的难度并不重要,因为第一阶段和第二阶段可能会执行一次,而采矿周期将只包括第三和第四阶段。
3)使用非对称密码ECDSA secp256k1,使用COINBASE事务的私钥(K)对块头(32字节)的结果散列进行签名。
引用
sign_nonce = mod(random256bit(),N)
码:
R = X的mulPoint(sign_nonce,G)
S = mod(反转(sign_nonce,N)*(block_header_hash +(K * R)),N)
4)通过计数来检查块头散列RS(64字节)的签名,例如,最后的零比特的数量(数字S的LSB)。如果此数字小于目标难度,则再次更改数字block_nonce(8字节)并重复挖掘周期。
如果挖掘周期成功,则矿工改变块中的签名RS block_header_hash_sign(64字节)并尽快将该挖掘的块广播到网络。
在这种方案中,矿工将巩固他们的计算能力,但仅限于服务器室或一小组可信参与者的边界内,否则来自COINBASE交易地址的硬币可能被不信任的矿工立即窃取。
如果矿工通过网络向矿池发送哈希,这将是巨大的流量,导致采矿效率大幅下降。但是,矿工将能够更改数字sign_nonce(32字节)并使用非对称密码ECDSA secp256k1迭代满足要求的签名RS,而不是使用ASIC抗性算法对块头进行散列。
久安交易所久安生态提供的反池算法PoW能够显着减少挖掘的集中化。缺乏大型采矿池会降低第三方审查交易的能力,并且还会增加拥有完整节点的系统的普通用户获得采矿奖励的机会。
领取专属 10元无门槛券
私享最新 技术干货