Go语言+区块链入门教程以太坊源码分析hashimoto源码分析(一),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。
Hashimoto :I/O bound proof of work
Abstract: Using a cryptographic hash function not as a proofofwork by itself, but
rather as a generator of pointers to a shared data set, allows for an I/O bound
proof of work. This method of proof of work is difficult to optimize via ASIC
design, and difficult to outsource to nodes without the full data set. The name is
based on the three operations which comprise the algorithm: hash, shift, and
modulo.
摘要:使用密码散列函数本身并不作为工作的证明,
而是作为指向共享数据集的指针生成器,允许I / O绑定
工作证明。 这种工作证明方法很难通过ASIC设计来优化,并且在没有完整数据集的情况下很难外包给节点。 这个名字是基于构成算法的三个操作:散列,移位和
模。
The need for proofs which are difficult to outsource and optimize
工作量证明难以外包和优化的需求
A common challenge in cryptocurrency development is maintaining decentralization ofthe
network. The use ofproofofwork to achieve decentralized consensus has been most notably
demonstrated by Bitcoin, which uses partial collisions with zero ofsha256, similar to hashcash. As
Bitcoin’s popularity has grown, dedicated hardware (currently application specific integrated circuits, or
ASICs) has been produced to rapidly iterate the hashbased proofofwork function. Newer projects
similar to Bitcoin often use different algorithms for proofofwork, and often with the goal ofASIC
resistance. For algorithms such as Bitcoin’s, the improvement factor ofASICs means that commodity
computer hardware can no longer be effectively used, potentially limiting adoption.
加密货币发展的一项挑战就是如何维持去中心化的网络结构。 正如比特币采用sha256哈希谜题的工作量证明方式来达到去中心化的一致性。 随着比特币的流行,专用硬件(目前的专用集成电路,或者是ASICs)已经被用来快速的执行基于hash方式的工作量证明函数。类似比特币的新项目通常使用不同的工作量证明算法,而且通常都有抵抗ASICs的目标。对于诸如比特币之类的算法,ASIC的对于性能的提升意味着普通的商业计算机硬件不再有效使用,可能会被限制采用。
Proofofwork can also be “outsourced”, or performed by a dedicated machine (a “miner”)
without knowledge ofwhat is being verified. This is often the case in Bitcoin’s “mining pools”. It is also
beneficial for a proofofwork algorithm to be difficult to outsource, in order to promote decentralization
and encourage all nodes participating in the proofofwork process to also verify transactions. With these
goals in mind, we present Hashimoto, an I/O bound proofofwork algorithm we believe to be resistant to
both ASIC design and outsourcing.
工作量证明同样能够被外包出去,或者使用专用的机器(矿机)来执行工作量证明,而这些机器对于验证的内容并不清楚。比特币的“矿池”通常就是这种情况。如果工作量证明算法很难外包,以促进去中心化
并鼓励参与证明过程的所有节点也验证交易。为了达到这个目标,我们设计了hashimoti, 一个基于I/O 带宽的工作量证明算法,我们认为这个算法可以抵抗ASICs,同时也难以外包。
Initial attempts at "ASIC resistance" involved changing Bitcoin's sha256 algorithm for a different,
more memory intensive algorithm, Percival's "scrypt" password based key derivation function1. Many
implementations set the scrypt arguments to low memory requirements, defeating much ofthe purpose of
the key derivation algorithm. While changing to a new algorithm, coupled with the relative obscurity of the
various scryptbased cryptocurrencies allowed for a delay, scrypt optimized ASICs are now available.
Similar attempts at variations or multiple heterogeneous hash functions can at best only delay ASIC
implementations.
“ASIC抗性”的初始尝试包括改变比特币的sha256算法,用不同的,更多的内存密集型算法,Percival's "scrypt" password based key derivation function。许多实现都将脚本参数设置为低内存要求,这大大破坏了密钥派生算法的目的。在改用新算法的同时,再加上各种以scrypt为基础的加密货币的相对朦胧可能导致延迟,而且scrypt优化的ASIC现在已经上市。类似的变化尝试或多个异构散列函数最多只能延迟ASIC实现。
Leveraging shared data sets to create I/O bound proofs
利用共享数据集创建I / O限制证明
"A supercomputer is a device for turning compute-bound problems into I/O-bound problems."
-Ken Batcher