主页 > imtoken钱包下载注册教程 > 区块链核心技术演进之路:算法演进

区块链核心技术演进之路:算法演进

imtoken钱包下载注册教程 2023-02-15 06:14:32

区块链

比特币

以太坊

看法

报告

回顾2008年,次贷危机引发的金融危机波及全球。 11 月,发表了一篇名为《比特币:一种点对点电子现金系统》的论文。 讨论,大概很少有人知道论文的意思。 时间的年轮很快转入新的一年,第一版比特币代码发布,1月4日挖出创世块,5天后生成第二个区块,比特币网络正式启动。 自称为“中本聪”的人,已经在互联网应用的汪洋大海中悄然吹起涟漪。 如今,这涟漪已形成滔天巨浪。

比特币 地址 生成_比特币地址生成算法详解_比特币算法作用

当年能看懂大神论文的人,绝大部分都惊叹于这个系统的简单和完善,甚至有人断言,一出世必开天辟地。 将近8年过去了,当年看似近乎完美的系统理念得到了全方位的探索和发展。 接下来我会写系列文章回顾区块链核心技术的演进。 包括算法演化、挖矿演化、共识机制演化、代币演化、隐私演化、容量和速率演化等,题目比较大,希望读者指正补充。

算法演化

对于“算法”一词,目前国内用户使用含糊,有时指的是共识机制,如POW算法、POS算法; 有时指具体的Hash算法,如SHA256、SCRYPT。 应该说,这是早期外文资料翻译的概念模糊造成的错误,后人纷纷效仿。 共识机制(过去一般称为Proof,现在多用Consensus)和算法(Algorithm)在英文资料中语义明确,不能混为一谈。 两者都是区块链技术体系中的重要支柱。

因此比特币地址生成算法详解,当我们说“X币使用Y算法”时,实际上是指使用了哪种Hash算法,隐含的前提是该币使用了POW证明方式。 只有讨论在 POW 下选择哪种算法才有意义,算法的各种复杂设计才能体现其有用性。 为什么,中本聪在设计比特币的时候其实很多地方都用到了Hash函数,比如计算区块ID,计算交易ID,构造代币地址等。 我们所说的算法具体指的是使用哪种Hash函数来计算区块ID。 所谓算法创新,就是在这个地方下功夫。 另外,其他任何使用Hash函数的地方,对计算难度没有要求,应该使用可以快速计算的算法,尤其是在计算交易ID的时候,否则会影响区块链的同步速度。 因此,如果选择POS方式,区块ID的计算也应该使用易于计算的算法。

哈希函数

上面说了,我们常说的POW算法,本质上就是一个Hash函数。 Hash函数是一个很神奇的东西。 毫不夸张地说,他为中本聪奠定了半壁江山。 学习比特币应该从学习哈希函数开始。 了解Hash函数后,你就会学到比特币事半功倍的原理。 否则,你会觉得无处不在。 混乱,难以理解。 中本聪也充分利用了哈希函数的所有特点:

比特币地址生成算法详解_比特币算法作用_比特币 地址 生成

许多哈希函数被设计出来并被广泛使用。 然而,哈希函数通常具有较短的生命周期。 被认为安全的算法往往在被长期使用之前就被攻击成功了。 新的更安全的算法相继设计出来。 一个被公认为安全可靠的算法,都有非常严格的审核流程。 在币圈,我们常说某种币种发明了某种算法。 事实上,它主要使用那些经过认证的安全算法,或者单独使用或者组合使用。

SHA256

SHA(Secure Hash Algorithm,译为安全哈希算法)是由美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码哈希函数。 经历了SHA-0、SHA-1、SHA-2、SHA-3系列的发展。 2007年,NSA正式宣布在全球范围内征集新一代(SHA-3)算法设计。 2012年,评选结果揭晓。 Keccak 算法最终获胜,成为唯一的官方标准 SHA-3 算法,但同时进入的还有其他四种算法。 第三轮选拔是:BLAKE、GrøSTL、JH和SKEIN。 这些算法其实是非常安全的,而且要经过审核,被各种山寨币频繁使用。

比特币使用的是SHA256算法,属于SHA-2系列,在中本聪发明比特币时(2008年)被公认为最安全、最先进的算法之一。 除了在生成地址的链接中使用 REPID-160 算法外,比特币系统中任何需要哈希运算的地方都使用 SHA256。 随着比特币被更多人了解,大家开始疑惑中本聪为什么选择SHA256,同时也对SHA256的安全性发表了各种看法。 SHA256 已被适当质疑。 到目前为止,还没有公开证据表明SHA256存在漏洞,SHA256仍然是在坚决抵制维护比特币安全的旗帜。 当然,大家都明白,没有永远安全的算法,SHA256被取代是迟早的事。 中本聪亲自解释了算法升级的必要性和过程。

密码

后来随着显卡挖矿和矿池的出现,社区开始担心矿池会导致算力集中,违背中本聪最初“一个CPU,一票”的设计理念。 那段时间,中央集权的焦虑非常严重,讨论也很激烈。 比特币一次又一次被“杀死”。 直到现在,关于矿池是否违反去中心化原则的争论仍在继续。

不管怎样,有人将矛头指向了SHA256,认为该算法过于简单导致出现了矿机和矿池,并试图寻找更难的算法。

恰逢其时,采用SCRYPT算法的莱特币(Litecoin)诞生了。 据说SCRYPT是由一位知名黑客开发的。 由于没有像SHA系列那样经过严格的安全审查和全面的论证,所以没有得到广泛的应用。 与SHA256算法相比,SCRYPT占用内存更多,计算时间更长。 并行计算难度极大,对硬件要求高。 显然,SCRYPT算法对矿机的抵抗力更强。 莱特币还将区块时间更改为 2.5 分钟。 在山寨币还不多的时代,莱特币依靠这两项创新取得了巨大的成功,并长期坐拥山寨币。 第一宝座位置。

后来有人在SCRYPT的基础上稍作修改,形成了Scrypt-N算法。 改进的思路是一样的,都是追求更大的内存消耗和计算时间,从而有效防止ASIC矿机。

很快,莱特币的成功催生了各种算法创新。 从2012年到2014年,算法创新一直是社区讨论的热点。 每一种使用创新算法的货币都会引起波澜。

拼接算法

重新排列组合是人类最常用的创新发明方法。 很快,有些人不满足于使用单一的 Hash 函数。 2013年7月,Quark发布,率先采用多轮Hash算法。 看似高大上,其实很简单,就是对输入数据进行9次hash函数计算。 ,上一轮计算的结果作为下一轮计算的输入。 这9轮Hash一共使用了6种加密算法,分别是BLAKE、BMW、GROESTL、JH、KECCAK、SKEIN。 这些都是公认的安全Hash算法,并且已经有现成的实现代码。

这种多轮哈希的出现给人以安全感和强大感的直观感受,吸引了无数粉丝。 达世币(DASH比特币地址生成算法详解,原名暗黑币,Darkcoin),今天价格依然坚挺,更进一步,率先使用了11种加密算法(BLAKE, BMW, GROESTL, JH, KECCAK, SKEIN, LUFFA, CUBEHASH, SHAVITE ,SIMD,ECHO),美其名曰X11,随后X13,X15系列相继开发。

S系列算法其实就是一系列的思想。 只要其中一个算法被破解,整个算法就会被破解。 它就像一条环环相扣的链条。 一旦其中一个环节断裂,整个链条就会一分为二。

并行算法

有人串联,有人并联,Heavycoin(HVC)率先尝试。 HVC现在在中国还不知名,但当时还是很有名的。 首次实现游戏上链。 作者是俄罗斯人。 不幸的是,他英年早逝,在币圈引起了很大的遗憾。

HVC算法细节:

首先对输入数据运行HEFTY1(一种Hash算法)运算得到结果d1

以d1为输入,依次进行SHA256、KECCAK512、GROESTL512、BLAKE512运算,分别得到输出d2、d3、d4、d5

分别提取d2-d5的前64位,经过混淆后形成最终的256位Hash结果,作为区块ID。

比特币算法作用_比特币地址生成算法详解_比特币 地址 生成

之所以先进行一轮HEFTY1哈希,是因为HEFTY1计算难度极高,其对抗矿机的性能远优于SCRYPT。 但是和SCRYPT一样,其安全性还没有得到官方机构的论证,所以认可了以下四种安全算法来增强安全性。

与串并联的方法相比,Quark、X11、X13等虽然使用了多种HASH函数,但这些算法只是简单地将多种HASH函数串联起来。 仔细一想,其实整体的防撞性能并没有提升。 由于木桶效应,安全性由其中最弱的算法支持。 任何哈希函数遇到碰撞攻击都会危及货币系统的安全。

HVC 从上述每个算法中提取 64 位,并将它们融合到最终结果中。 实际上,四种算法是并联的。 如果其中一种算法被破解,只有64位会受到威胁,如果四种算法同时被破解,就会受到威胁。 货币体系的安全。

比特币地址生成算法详解_比特币算法作用_比特币 地址 生成

比特币只使用一种哈希算法。 如果未来证明SHA256不再安全,虽然可以改变算法,但考虑到目前“硬分叉比老虎还猛”的情况,到时难免会引起动荡,但如果采用并行算法,则可能争取一个安静的硬分叉过渡时间。

素数币

正当一部分人在算法探索的道路上如火如荼的时候,另一部分人的声音也很刺耳,那就是指责POW浪费能源(POS机制当时已经实现)。 POW党虽然极力维护,但也承认了消耗能量的事实。 这一指控开启了另一条探索之路,即如果能找到一种算法,能够维护区块链的安全性,并且这些Hash运算能够以其他方式产生价值,那就更完美了。

在这条探索之路上,最激动人心的成就来自Sunny King(曾开发过Peercoin)发明的素数币(Primecoin)。 素数币算法的核心思想是在进行哈希运算的同时寻找大素数。 素数现在广泛应用于各个领域,但人类对他的了解还是有限的。 质数不仅在数轴上很少见(与偶数相比),而且分布不规则。 在数轴上寻找质数只能盲目地搜索和检测,这正是 POW 的特点。

POW 的另一个要求是易于验证。 在这方面,人类经过数百年的探索,已经取得了一些成果。 素数币采用两种方法进行测试,首先进行费马测试(Fermat Test),然后通过欧拉-拉格朗日-利夫希茨测试(Euler-Lagrange-Lifchitz Test),通过测试即为质数。 需要指出的是,该方法不保证通过测试的百分百是质数,但这并不影响系统的运行,即使测试结果错误,只要各节点认为是是质数。

素数币其实就是在寻找素数链——大炮链。 Cannon主链具体分为三种:第一类Cannon链、第二类Cannon链和双Cannon链。

为了说明第一类,规则是:质数链中的每个数都是前一个数的两倍减一,例如:

1531, 3061, 6121, 12241, 24481

序列中的下一个数48961(24481*2-1)不是素数,所以Cannon链的长度为5。素数币的目标是探索更长的Cannon链(以上三种类型是可以接受的)。

那么现在最重要的问题来了,如何使用堪萨斯链来验证一个区块是否合格? 素数币实施细节如下:

计算中本聪区块头Hash,hashBlockHeader = SHA256(BlockHeader)

通过变换得到Cannon链的第一个数字:originNum = hashBlockHeader * Multiplier

得到originNum后,可以测试计算质数链长度的整数部分,小数部分的计算与Cannon链中最后一个非质数的跨度有关。

每个区块的乘数不同,计算过程与hashBlockHeader有关。 素数币为此修改了区块头,添加了一个字段(bnPrimeChainMultiplier)来存储这个乘数。 但是上面第一步计算hashBlockHeader的输入数据中并没有这个乘法因子,这也是为什么要特别指出中本聪区块头的原因。

由于素数在数轴上的分布不均匀,而且根据目前的知识,数越大,素数越稀少,找到它的难度并不会线性增加,耗时也不可预知,但是区块链需要稳定的区块。 正因如此,素数币算法一直没有普及,但这种探索并非没有意义。 使用 POW 工作负载的“幻想”并未停止,探索仍在继续。

以太坊

以太坊(Ethereum)一开始就计划使用POS方式,但由于POS设计存在一些问题,开发团队在以太坊1.0阶段决定使用POW方式,并有望在Serenity中转为POS方式阶段。

以太坊 POW 算法称为 Ethash。 虽然只是过渡算法,但开发团队一点都不含糊。 一如既往地发扬了“简单问题变复杂,繁琐细节显智商”的设计风格。 Ethash是Dagger-Hashimoto改进算法的最新版本,是桥本算法结合Dagger算法的新变种。 Ethash 的设计有两个明确的目标:

为了抵抗矿机性能(ASIC-resistance),团队希望CPU也能参与挖矿获得收益。

轻客户端可验证性。

基于以上两个目标,开发团队最终释放出来的Ethash挖矿与CPU性能无关,与内存大小和内存带宽正相关。 不过在实现上,还是借鉴了SHA3的设计思路,只是使用的“SHA3_256”和“SHA3_512”与标准实现有很大区别。

Ethash的基本流程如下:对于每一个区块,首先计算一个种子(seed),它只与当前区块的信息相关; 然后根据seed生成一个32M的随机数据集(Cache); 然后生成一个大小为1GB的A数据集合(DAG)。 DAG可以理解为一个完备的搜索空间。 挖矿过程是从DAG中随机选择元素(类似于比特币挖矿中寻找合适的Nonce),然后进行哈希运算。 可以从Cache中快速计算出DAG指定位置的元素,然后进行哈希验证。 另外,Cache和DAG需要定期更新,每1000个block更新一次,并且规定DAG的大小随时间线性增长,从1G开始,每年增长7G左右。

等值哈希

Zcash最近在中国发展最快。 这种货币最大的特点是采用零知识证明实现隐私交易。 距离发布还有几天时间,但从社区讨论来看,各方矿工已经在磨刀霍霍了。 Zcash 在算法的选择上非常谨慎。 在考虑了SHA256D、SCRYPT、CUCKOO HASH和LYRA2算法后,最终选择了Equihash。

Equihash 算法由 Alex Biryukov 和 Dmitry Khovratovich 共同发明,其理论基础是著名的计算科学和密码学问题——广义生日悖论问题。 Equihash 是一种内存 (ARM) 依赖算法。 机器的计算能力主要取决于它有多少内存。 根据两位发明人的论文描述,该算法至少需要700M内存才能执行,需要1.8GHz的CPU才能在30秒内完成计算。 经过Zcash项目的优化 最后,目前每个挖矿线程需要1G内存,因此Zcash官方认为算法很难在短时间内生产出矿机(ASIC)。 此外,Zcash官方也认为该算法相对公平。 他们认为,个人或组织很难秘密优化算法,因为广义生日悖论是一个已经被广泛研究的问题。 此外,Equihash 算法非常容易验证,这对于未来在受限设备上实现 Zcash 轻客户端非常重要。

Zcash官方团队选择Equihash完全是出于抗衡矿机性能的需要。 他们也在官方博客中承认,他们不确定Equihash一定是安全的,并表示如果发现Equihash有问题或者找到更好的算法,Zcash会更改POW算法。

总结

随着比特币、莱特币矿机的相继出现,大家已经意识到,没有一种算法是开发不了矿机的,也不可能通过改进算法来完全杜绝矿机和矿池的出现。 另外,从近几年的发展来看,矿池并没有之前想象的那么可怕,甚至有人论证过矿池并没有破坏去中心化。 但除了安全性,POW 往往还伴随着分发代币的功能。 从这个角度来说,CPU算法更公平,用户门槛更低。 这也是算法创新的驱动力。 从Ethash和Equihash的设计来看,目前的算法创新还是主要基于对高内存消耗的追求。 同时,社区在共识机制的探索上也取得了很多成果。 纵观当前区块链核心技术的整体发展,算法创新的热潮已经消退,但并未停止。 在比特币、区块链、算法探索方面,他们还在路上。

作者:周叶飞,币创科技副总裁,DACA区块链协会讲师,区块链技术专家