区块链加密货币五年来的进展 - vitalik


2014年,我发表了一篇文章和一个演讲,其中列出了数学,计算机科学和经济学方面的难题,我认为这些难题对于加密货币领域(后来我称为它)的成熟至关重要。在过去的五年中,情况发生了很大变化。在这篇文章中,我将逐一介绍2014年以来的16个问题,并逐一介绍一下我们今天的情况。最后,我将介绍针对2019年难题的新选择。
这些问题可分为三类:(i)加密,因此,如果根本想解决,则可以用纯数学技术解决;(ii)共识理论,对工作证明和权益证明进行了重大改进, (iii)经济,因此与创建涉及给予不同参与者的激励措施的结构有关,并且通常涉及应用层而不是协议层。我们看到所有类别都取得了显着进步,尽管比其他领域有所进步。
可伸缩性
可伸缩性是我们在理论上已取得巨大进展的一个技术问题。五年前,几乎没有人考虑过分片。现在,分片设计已司空见惯。除了以太坊2.0,我们还有OmniLedgerLazyLedgerZilliqa以及似乎每月都会[url=https://medium.com/@giottodf/zilliqa-a-novel-approach-to-sharding-d79249347a1f]发表的[/url]研究论文。
从根本上讲,我们已经有了许多技术,可以使验证者组安全地就单个验证者无法处理的更多数据达成共识,并且这些技术还可以使客户间接验证区块的全部有效性和可用性,即使低于51%攻击条件。这些可能是最重要的技术:


话虽如此,分片区块链仍未在实时操作中出现。从理论上讲,主要存在关于剩余细节的争议,以及与分片网络的稳定性,开发人员的经验以及减轻集中化风险有关的挑战;基本的技术可能性似乎不再令人怀疑。

时间戳
创建分布式激励兼容系统,无论是在区块链顶部还是其自身的区块链上的覆盖图,都可以使当前时间保持较高的准确性。所有合法用户在某个“真实”时间周围均具有正态分布的时钟,标准偏差为20秒...两个节点之间的相距不超过20秒。
以太坊实际上只有13秒的阻塞时间,并且没有特别先进的时间戳技术。它使用一种简单的技术,即客户端不接受其声明时间戳早于客户端本地时间的块。也就是说,这尚未经过严重攻击的测试。
但是,总的来说,时间戳记并不是当前面临的研究挑战的前沿。也许一旦权益链(包括以太坊2.0以及其他)的证据作为真实的实时系统在线出现,这种情况就会改变,我们将看到问题所在。

任意计算证明
基本上是说,建立一个SNARK(或STARK或SHARK或...)。SNARK越来越得到人们的理解,甚至在当今的多个区块链中也已经使用了SNARK(包括以太坊上的tornado.cash)。SNARK作为隐私技术(请参阅Zcash和tornado.cash)和可伸缩性技术(请参阅ZK RollupSTARKDEXSTARKing擦除编码数据根)都非常有用。
效率方面仍然存在挑战;进行算术友好的哈希函数是一个很大的问题,而有效证明随机内存访问是另一回事。此外,还存在一个尚未解决的问题,即证明者时间中的O(n * log(n))爆炸是否是基本限制,或者是否有某种方法可以像防弹一样仅使用线性开销进行简洁的证明(不幸的是,花费线性时间)验证)。现有方案还存在存在漏洞的风险。通常,问题出在细节而不是基础上。

代码混淆
对于给定的任何程序P,混淆器都可以生成第二个程序O(P)= Q,从而如果给定相同的输入,则P和Q返回相同的输出,并且重要的是,Q表示没有关于P内部的任何信息。一个人可以在Q内隐藏一个密码,一个秘密加密密钥,或者一个人可以简单地使用Q来隐藏算法本身的专有工作。
用简单的英语来说,问题是我们想提出一种“加密”程序的方法,以便加密的程序仍将为相同的输入提供相同的输出,但是该程序的“内部”将被隐藏。 。混淆的示例用例是一个包含私钥的程序,其中该程序仅允许私钥对某些消息进行签名。
代码混淆的解决方案对于区块链协议将非常有用。
不幸的是,这仍然是一个难题。在解决该问题方面,正在进行持续的工作,一方面进行构造(例如this),以减少对我们实际上不知道的数学对象(例如,一般的密码多线性映射)的假设,另一方面,尝试减少实际实现所需的数学对象。但是,所有这些路径都离创建可行和已知的安全性还很遥远。请参阅https://eprint.iacr.org/2019/463.pdf了解该问题的更一般概述。

基于哈希的密码学
创建一个签名算法,该算法不依赖于任何安全性假设,而是基于哈希的随机oracle属性,以最佳大小和其他属性来维持针对经典计算机的160位安全性。
自2014年以来,在这方面取得了两大进展。SPHINCS是一种“无状态”(意味着多次使用它不需要像随机数一样记住信息)签名方案,在此“难题”列表发布后不久就发布了,并提供大小约为41 kB的纯基于哈希的签名方案。
另外,已经开发了STARK,并且可以基于它们创建相似大小的签名。我仅仅五年前都没有想到过,不仅可以使用签名,而且可以使用通用的零知识证明。
基于哈希的加密技术尚未解决的主要问题是聚合签名,类似于BLS聚合使之成为可能。众所周知,我们可以对许多Lamport签名进行STARK,但这效率低下。一个更有效的方案将是受欢迎的。

耐ASIC的工作证明
解决该问题的一种方法是基于一种很难专门化的计算类型来创建工作量证明算法。
在“困难问题”列表发布大约六个月之后,以太坊决定采用其抗ASIC的工作证明算法:Ethash。Ethash被称为难存储算法。
Ethash旨在通过使内存访问成为运行PoW计算的主要部分来实现ASIC抵抗。Ethash并不是第一个难于记忆的算法,但它确实增加了一项创新:它在两层DAG上使用伪随机查找,从而提供了两种评估函数的方式。首先,如果一个人拥有整个(〜2 GB)DAG,则可以快速计算出它;这是难以记忆的“快速路径”。其次,如果只有DAG的顶层,则可以更慢地计算它(仍然足够快以快速检查提供的单个解决方案)。这用于块验证。
Ethash在抵抗ASIC方面被证明非常成功。经过三年和数十亿美元的区块奖励后,ASIC确实存在,但其功能和成本充其量最多比GPU 高2-5倍。已经提出了ProgPoW作为替代方案,但是越来越多的共识认为,耐ASIC的算法将不可避免地具有有限的寿命,并且ASIC 具有缺点,因为它使51%的攻击便宜。
我相信可以创建提供中等级别ASIC抵抗力的PoW算法,但是这种抵抗力是有限的,并且ASIC和非ASIC PoW都有缺点。从长远来看,区块链共识的更好选择是股权证明。

有用的工作证明
有用的工作量证明所面临的挑战是,工作量证明算法需要许多属性:

  • 难以计算
  • 易于验证
  • 不依赖大量外部数据
  • 可以有效地以小的“一口大小”的块进行计算

不幸的是,保留所有这些属性的有用计算并不多,并且大多数确实具有所有这些属性并且“有用”的计算仅“有用”了很短的时间,无法在它们周围构建加密货币。
但是,有一个可能的例外:零知识证明生成。区块链有效性方面的零知识证明(例如,一个简单示例的数据可用性根源)难以计算且易于验证。此外,它们很难计算。如果“高度结构化”计算的证明变得太容易了,则可以简单地切换到验证区块链的整个状态转换,由于需要对虚拟机和随机内存访问进行建模,因此这变得非常昂贵。
区块链有效性的零知识证明为区块链用户提供了巨大的价值,因为他们可以替代直接验证链的需求;尽管有了简化的区块链设计,并针对可验证性进行了优化,但Coda已经在这样做。这些证明可以极大地帮助改善区块链的安全性和可扩展性。也就是说,实际需要完成的计算总量仍然远远少于工作量证明矿工当前完成的计算量,因此,充其量充其量不过是权益证明区块链证明的附加项,而不是完整的关于共识算法。

权益证明
解决挖掘集中化问题的另一种方法是完全取消挖掘,并转向其他机制来计算共识中每个节点的权重。迄今为止,讨论中最流行的替代方法是“股权证明”-也就是说,与其将共识模型视为“一个CPU功能单位,一票”,它变成了“一个货币单位,一票”。
现状:理论上取得重大进展,尚待进行更多实际评估。
当今最有趣的共识算法从根本上类似于PBFT,但是用一个动态列表替换了固定的验证器集,
截止到今天,我们(在许多其他算法中):

储存证明
第三种方法是使用计算能力或货币以外的稀缺计算资源。在这方面,已提出的两个主要替代方案是存储和带宽。原则上没有办法提供给定或使用带宽的事后加密证明,因此,带宽证明应最准确地视为社会证明的一个子集,在后面的问题中进行讨论,但是存储证明是当然可以通过计算完成。存储证明的一个优点是它完全可以抵抗ASIC的攻击。硬盘驱动器中的存储类型已经接近最佳。
现状:尽管在理论上还有很多工作要做,但还有很多实际的进展,以及更多的实际评估。
有许多计划使用存储协议证明的[url=https://filecoin.io/filecoin.pdf]区块[/url],包括ChiaFilecoin。也就是说,这些算法尚未经过野外测试。我自己的主要关注点是集中化:这些算法实际上是由使用备用存储容量的较小用户主导,还是由大型采矿场主导?

稳定值加密资产
比特币的主要问题之一是价格波动问题。问题:以稳定的价格构造加密资产。
现状:有些进展。
MakerDAO现在已经投入使用,并且已经稳定了将近两年。它的基本抵押资产(ETH)的价值下跌了93%,幸免于难,现在发行的DAI超过1亿美元。它已经成为以太坊生态系统的支柱,许多以太坊项目已经或正在与之集成。其他合成令牌项目(例如UMA)也在迅速获得发展。
但是,尽管MakerDAO系统在2019年艰难的经济环境中幸免于难,但这种情况绝不是可能发生的最艰难的情况。
另一个可能是更大挑战的主要挑战是,类似于MakerDAO的系统的稳定性取决于某些基本的oracle方案。确实存在针对Oracle系统的不同尝试,但对于在大量经济压力下它们能否承受得住的问题,尚无定论。

去中心化公共物品激励
通常,经济体系中的挑战之一是“公共物品”问题。例如,假设有一个科学研究项目将花费100万美元来完成,并且众所周知,如果这项研究完成,则所产生的研究将为100万人节省5美元。总体而言,社会收益是明确的……[但是]从每个人的贡献的角度来看都是没有道理的……到目前为止,大多数公共产品问题都涉及集中化。附加假设和要求:完全可信赖存在用于确定某个公益任务是否已经完成的oracle(实际上这是错误的,但这是另一个问题的领域)
现状:有些进展。
一般认为,为公共物品提供资金的问题分为两个问题:资金问题(从何处获得公共物品的资金)和偏好汇总问题(如何确定什么是真正的公共物品,而不是某些个人的物品)宠物项目)。假设后者已解决,则此问题专门针对前者(有关该问题的工作,请参见下面的“分散式贡献指标”部分)。
总的来说,这里没有重大的新突破。解决方案有两大类。首先,我们可以尝试引起个人的贡献,从而为人们提供社会奖励。我自己关于通过边际价格歧视进行慈善的提议就是一个例子。另一个是Peepeth的抗疟疾捐赠徽章。其次,我们可以从具有网络效应的应用程序中收集资金。在区块链领域内,有几种选择可以做到这一点:

  • 发行硬币
  • 在协议级别收取一部分交易费用(例如,通过EIP 1559
  • 从某些第2层应用程序中收取一部分交易费用(例如Uniswap或某些伸缩解决方案,甚至在以太坊2.0的执行环境中收取国家租金)
  • 收取其他部分费用(例如ENS注册)

在区块链领域之外,这只是一个古老的问题:如果您是政府,则如何收税;如果您是企业或其他组织,则如何收费。

信誉系统
自2014年以来,声誉系统实际上并没有开展太多工作。也许最好的办法是使用令牌管理的注册表来创建可信任实体/对象的管理列表。

卓越证明
一个人可以拿出“证明”货币来奖励玩家拿出某些定理的数学证明。
现状:没有进展,问题在很大程度上被遗忘了。
代币分配的主要替代方法是空投 ; 通常,令牌在启动时会与其他令牌的现有持有量成比例分配,或者基于其他指标(例如,在握手空投中)分配。尚未真正尝试直接验证人类的创造力,并且随着AI的最新进展,创建仅人类可以执行但计算机可以验证的任务的问题可能非常困难。

反Sybil系统
与信誉系统问题有些相关的一个问题是创建“唯一身份系统”的挑战,该系统是一种生成令牌的系统,该令牌证明身份不是Sybil攻击的一部分...但是,我们希望具有比“一美元一票”更好,更平等的特征的系统;可以说,一人一票将是理想的选择。
现状:有些进展。
已经进行了许多尝试来解决人类独特的问题。想到的尝试包括(不完整的列表!):


随着对二次投票二次资助等技术的兴趣日益浓厚,对某种基于人的反sybil系统的需求也在不断增长。希望这些技术的不断发展和新技术能够适应它。

分散分发指标
关于确定公益物价值的最新工作并未试图将确定任务和确定完成质量分开;原因是实际上很难将两者分开。特定团队所做的工作往往是不可替代和主观的,因此最合理的方法是将任务和绩效质量的相关性视为一个整体,并使用相同的技术对其进行评估。
二次筹资是个人可以向项目捐款的一种机制,然后根据捐赠的人数和捐赠的数量,使用公式来计算如果彼此完美协调,他们将捐赠多少(即考虑到了彼此的利益,没有成为公地悲剧的牺牲品。对于任何给定项目,将要捐赠的金额与实际捐赠的金额之间的差额将从某个中央资金池中作为补贴提供给该项目(有关中央资金池的来源,请参阅第11条)。请注意,此机制侧重于满足某些社区的价值,而不是满足某些给定的目标,而不管是否有人在乎它。由于价值观复杂性 问题,这种方法对于未知的未知数可能会更加健壮。
最近的gitcoin二次融资回合中,甚至已经在现实生活中尝试了二次融资,并取得了相当大的成功。在改善二次供资和类似机制方面也取得了一些进展;特别是成对有界的二次融资以减轻串通。还进行了有关反贿赂投票技术的规范和实施的工作,以防止用户向其投票的第三方证明;这样可以防止多种串通和贿赂攻击。

分散式成功指标
问题:想出并实施一种去中心化的方法来测量现实世界中的数字变量...该系统应该能够测量人类当前可以大致达成的任何共识(例如资产价格,温度,全球二氧化碳浓度) )
现状:有些进展。
现在通常将其称为“ oracle问题”。分散式预言机运行的最大已知实例是Augur,它已经处理了数百万美元的下注结果。令牌管理的注册中心(例如Kleros TCR令牌)是另一个示例。但是,由于存在争议性很强的问题或尝试了51%的攻击,这些系统仍未对分叉机制进行实际测试(在此处搜索“主观权” )。还以“ 对等预测 ”文献的形式研究了在区块链空间之外发生的oracle问题。有关领域的最新进展,请参见此处
另一个迫在眉睫的挑战是,人们希望依靠这些系统来指导资产数量的转移,该资产的数量要大于系统本机代币的经济价值。

点击标题见原文