区块链:查尔斯·霍斯金森的建议

284 阅读2分钟

查尔斯·霍斯金森(Charles Hoskinson)建议我们从比特币的 SHA256 转换为更新的 SHA3 (或者更准确地说,是 keccak256)。尽管有过一段时间争议,但通过与加文、安德鲁以及其他人进行讨论,我们还是确立了栈中的值的大小应该被限制在 32 Byte。而另一种替代方案——无限制整数——则仍在考虑当中,因为该方案存在一个问题,即我们很难计算出执行家加法、乘法以及其他操作到底需要多少燃料。

回到 2014 年 1 月,我们最初想到的挖矿算法是一个叫 匕首 (Dagger) 的东西。

匕首是根据有向无环图 (Directed Acyclic Graph, DAG) 命名的。DAG 是一种用在算法中的数学结构,其思想是每隔 N 个区块,就会有一个新的 DAG 由种子伪随机生成。并且,DAG 的底层将会是一个需要用几十亿字节来存储的节点的集合。然而,在 DAG 中,生成任意一个独立的值只需要计算计算几千个条目。一次匕首计算包含在这种底层的数据集中的任意位置获得一定数量的值,然后将这些值一起进行哈希运算。这意味着存在一种快速的方式可以进行匕首计算——已经将数据存储在内存中,然后以一种缓慢但不会导致内存紧张的方式——重新从 DAG 中生成你需要从头开始获取的每一个值。

这个算法的目的就是和当时流行的算法一样拥有相同的内存受限属性,就像 Scrypt 算法,但是仍然对轻客户端友好。矿工会使用快速的方法,所以他们的挖矿将受限于内存带宽 (理论上,消费者级别内存的优化程度已经足够高了,因此用 ASIC 对其进行进一步优化十分困难),但轻客户端可以使用内存宽松且缓慢的方式进行验证。快速方法可能只需几微秒,而慢速且内存宽松的方法可能需要几毫秒,所以这对轻客户端依然是可行的。