写在前面:本文为以太坊联合创始人Vitalik Buterin发布的硬核长文。文章中列出了他五年前认为加密货币应该解决的问题,并且给出了五年后的进展。这些问题主要被分为了密码学问题、共识理论和经济学这三个方面。最后,Vitalik还补充了一些我们今天需要关注的新问题,并且指出,基础层的问题肯定会越来越少,而应用层的问题才刚刚开始。
以下为全文:
2014 年,我发表了一篇文章和一次演讲,列举了数学、计算机科学和经济学领域的难题,我认为这些问题对于加密货币领域的成熟是很重要的。在过去的五年里,情况发生了很大的变化。但我们当时认为重要的事情究竟取得了多大进展呢?我们在哪些方面成功了?在哪些方面失败了?我们对于重要性的改观在哪些方面有了变化?在这篇文章中,我将逐一讨论 2014 年列出的 16 个问题,看看我们今天在每个问题上的进展如何。最后,我将列出我对 2019 年难题的新定义。
这些问题可分为三类:(i)密码学问题,因此如果可以解决的话,预计将纯粹通过数学技术来解决;(ii)共识理论,主要是PoW和PoS的改进;(iii)经济,面向不同的参与者创建涉及激励机制的结构,而且通常涉及的应用层问题多过协议层。我们看到,在上述所有领域都取得了重大进展,尽管具体的成效参差不齐。
密码学问题
1. 区块链可扩展性
现状:较大的理论进展,需要更多现实世界评估。
可扩展性是一个技术问题,在理论上已经取得了巨大进展。五年前,几乎没有人考虑分片(sharding);现在,分片设计很常见。除了以太坊2. 0 之外,还有OmniLedger、LazyLedger、Zilliqa(等项目都在用分片),几乎每个月都会公布相关的研究论文。在我看来,这方面的进展是渐进式的。从根本上说,我们已经有了一些技术,与单个验证者的环境相比,这些技术允许验证者群体安全地在处理更多数据的同时达成共识,甚至允许客户端在51%攻击的条件下间接地验证区块的有效性和可用性。
这些可能是最重要的技术:
随机抽样,允许一个随机选择的委员会代替全验证者集:https://github.com/ethereum/wiki/wiki/Sharding-FAQ#how-can-we-solve-the-single-shard-takeover-attack-in-an-uncoordinated-majority-model
欺诈证明,允许个人节点得知错误后,将其存在的信息广播给其他人:https://bitcoin.stackexchange.com/questions/49647/what-is-a-fraud-proof
托管证明,允许验证者概率性地证明他们单独下载并验证了一些数据:https://ethresear.ch/t/1-bit-aggregation-friendly-custody-bonds/2236
数据可用性证明,当区块头不可用,允许客户端检测他们的区块内容:https://arxiv.org/abs/1809.09044,参见更新的编码Merkle树提案。
还有其他更小的进展,如通过收款进行跨分片(Cross-shard)通信,以及“常数因子”增强,如BLS签名聚合。
尽管如此,完全分片的区块链仍然没有在实际操作中出现(部分分片的Zilliqa最近已经开始运行)。在理论方面,剩下的主要是关于细节的争论,以及与分片网络稳定性、开发者经验和降低中心化风险相关的挑战;对基本的技术可能性似乎不再有疑问。但是仍然存在的挑战是不能仅仅通过思考就能解决的挑战;只有开发出一个系统和见证以太坊2. 0 或一些类似的能够运行的链才能证明这项技术真的可行。
2. 时间戳
现状:有一些进展。
实际上,以太坊的出块时间只有 13 秒,而且运作顺利,没有特别先进的时间戳技术;它使用了一种简单的技术,在这种技术中,客户端不接受时间戳早于客户端本地时间的区块。也就是说,这还没有经过严重攻击的考验。最近的网络调整时间戳提案试图改善现状,允许客户端在不知道当前时间的情况下,在时间上达成一致;这还没有经过测试。但总的来说,时间戳目前还不是研究挑战的前沿;也许当PoS链(包括以太坊2. 0 以及其他链)真正上线之后,我们才能看到问题所在,这一点也将再次改变。
3. 任意计算证明
现状:较大的理论和实际进展。
这基本上是说搭建一个SNARK(或STARK,或SHARK,或…)的过程。我们已经做到了!SNARKs现在已经被越来越多的人理解,甚至已经被用于多个区块链(包括以太坊上的tornado.cash)。作为一种隐私技术(参见Zcash和tornado.cash)和扩容技术(参见ZK Rollup、STARKDEX和STARKing擦除编码数据根),SNARKs非常有用。
在效率方面仍然存在挑战;创造算法友好的哈希函数是一个重要挑战,而有效地证明随机内存访问是另一个。此外,还有一个未解决的问题,即在证明时间内O(n * log(n))的放大是否是一个基本的限制,或者是否有某种方法可以只使用线性开销来做一个简洁的证明,就像bulletproofs那样(不幸的是,这需要用线性时间来验证)。此外,现有方案存在缺陷的风险也一直存在。总的来说,问题在于细节,而不是基本原理。
4. 代码模糊化
现状:进展缓慢。
简单地说,我们想要一种“加密”程序的方法,以便加密后的程序仍然为相同的输入提供相同的输出,但是程序的“内部构件”将被隐藏。模糊化的一个典型用例是一个包含私钥的程序,该程序只允许私钥对某些消息进行签名。
代码模糊化的解决方案对区块链协议非常有用。其应用是微妙的,因为必须处理这样一种可能性,即一个链上模糊化的程序将在与这条链本身不同的环境中复制和运行,但是有许多可能性。对于我来说,我感兴趣的是能够在抗碰撞工具移除中心化操作符,用模糊化程序取而代之,其中包含了一些PoW,在尝试确定各个参与者的行为时,使用不同的输入进行多次运行的成本非常大。
不幸的是,这仍然是一个难题。解决这个问题的工作还在继续进行中,一方面是进行结构方面的工作,试图减少在实际情况中我们不知道的但却存在的数学对象的假设数量(如一般密码学多线性映射),另一方试图对所需的数学对象进行实际部署。然而,所有这些途径仍然离创造出一些可行的和安全的东西还很遥远。请参见https://eprint.iacr.org/2019/463.pdf以获得对该问题的更全面的描述。
5. 哈希密码学
现状:一些进展。
自 2014 年以来,在这方面有两个进展。SPHINCS是一种“无状态”(意味着多次使用它不需要像随机数那样记住信息)签名方案,它是在这个“难题”列表发布后不久发布的,并提供了一个大小约为41 kB的纯哈希签名方案。另外,STARKs已经被开发出来,人们可以基于其创建类似大小的签名。事实上,不仅签名,通用的零知识证明都可以用哈希来实现,这是我在五年前绝对没有想到的;我很高兴见到这样的情况。尽管如此,容量仍然是个问题,持续的进展(最近的DEEP FRI)正在继续减少proof的大小。
基于哈希的密码学主要尚未解决的问题是聚合签名,类似于BLS聚合所实现的功能。众所周知,我们可以对许多Lamport签名进行STARK,但这样做效率很低;一个更有效的方案将会受到欢迎。(如果你想知道基于哈希的公钥加密是否可行,那么答案是否定的,超过二次攻击成本,你什么都做不了)
共识理论问题
6. 抗ASIC PoW
现状:已经尽力解决。
在这个“难题”列表发布的大约 6 个月后,以太坊确定了其抗ASIC的PoW算法:Ethash。Ethash是一种memory-hard(硬内存)算法。其原理是,普通计算机中的随机访问内存已经得到了很好的优化,因此很难针对专用的应用进行改进。Ethash的目标是让内存访问成为运行PoW计算的主要部分来实现抗ASIC。Ethash并不是第一个memory-hard算法,但它确实增加了一项创新:它在两级DAG上使用伪随机查找,允许两种方法来评估函数。首先,如果你有整个(约2 GB)DAG,你可以很快地计算它;这就是memory-hard的“快车道”。第二,如果只有DAG的最高级别,则可以更慢地计算它(仍然可以快速地检查单个提供的解决方案);这用于区块验证。
Ethash已被证明在抗ASIC方面非常成功;经过 3 年时间和数十亿美元的区块奖励,ASIC确实存在,但它的功耗和成本效率最多是GPU的2- 5 倍。ProgPoW已经被提出作为一个替代方案,但是越来越多的人认为抗ASIC的算法将不可避免地有一个有限的寿命,并且抗ASIC存在缺陷,因为它让51%攻击更便宜。
我认为可以创建提供中等水平的抗ASIC PoW算法,但这种抵抗力是有限的,ASIC和非ASIC的PoW都有缺点;从长期来看,对区块链共识来说,更好的选择是PoS。
7. 有用的PoW
现状:可能不可行,但有一个例外。
有用的PoW的挑战在于PoW算法需要很多属性:
很难计算
很容易验证
不依赖大量的外部数据
可以有效地小部分数据块进行计算
不幸的是,没有多少有用的计算能保留所有这些属性,而大多数具有所有这些属性且“有用”的计算只能在太短的时间内“有用”,无法基于此构建加密货币。
然而,有一个可能的例外:零知识证明生成。经过零知识证明的区块链有效性各方面很难计算,而且容易验证。此外,这种难以计算的特点可以持久;如果“高度结构化”计算的证明变得过于简单,可以简单地切换到验证区块链的整个状态转换,由于需要对虚拟机和随机内存访问建模,这将变得非常昂贵。
经过零知识证明的区块链有效性为区块链的用户提供了巨大的价值,因为他们可以代替直接验证链的需要;Coda已经在这么做了,尽管它使用了简化的区块链设计,并为可验证性进行了大量优化。这样的证明可以显著地改进区块链的安全性和可扩展性。也就是说,实际需要完成的总计算量仍然比PoW矿工当前完成的计算量少得多,所以这充其量只是一个附加的PoS区块链,而不是一个全面的共识算法。
8. PoS
现状:较大的理论进步,等待更多的现实评估。
2014 年底,PoS社区清楚地意识到,某种形式的“弱主体性”是不可避免的。为了维护经济安全,节点在第一次同步时需要获得最新的检查点额外协议,如果离线时间超过几个月,则需要再次获得。这是一颗难以下咽的药丸;许多PoW的支持者仍然坚持使用PoW,因为在PoW链中,可以通过来自可信源的唯一数据(即区块链客户端本身)发现这条链的“头”。然而,由于附加的信任要求并不高,PoS的倡导者们愿意吞下这颗药丸。从那里开始,通过长期安全存款来通往PoS的道路变得清晰起来。
今天大多数有趣的一致算法基本上与PBFT相似,但是将固定的验证者集合换成了一个动态列表,任何人都可以通过将代币发送到系统级的智能合约用时间锁取款(在某些情况下,提款可能需要 4 个月才能完成)来加入该列表。在许多情况下(包括以太坊2.0),这些算法通过惩罚违反协议的验证者来实现“经济终结性”。
今天,我们有:
Casper FFG: https://arxiv.org/abs/1710.09437
Tendermint: https://tendermint.com/docs/spec/consensus/consensus.html
HotStuff: https://arxiv.org/abs/1803.05069
Casper CBC: https://vitalik.ca/general/2018/12/05/cbc_casper.html
有继续进行的细化(例如这里和这里)。将部署FFG的Eth2 阶段 0 目前正在实施中,已经取得了巨大进展。此外,Tendermint已经以Cosmos链的形式运行了几个月。在我看来,关于PoS的剩余争论与优化经济激励和进一步形成应对51%攻击的战略有关。此外,Casper CBC规范仍然可以使用具体的效率改进。
9. 存储证明
现状:有很多理论上的进步,尽管还有很多要做,还有更多的现实评估。
有一些区块链计划使用存储证明协议,包括Chia和Filecoin。也就是说,这些算法还没有在现实环境中测试过。我自己主要担心的是中心化:这些算法实际上是由使用备用存储容量的小用户主导,还是由大型矿场主导?
经济学
10. 稳定价值加密资产
现状:一些进展。
MakerDAO上线了,并且已经稳定了近两年。其基础担保资产(ETH)的价值下降了93%,但它依然活了下来,现在发行的DAI超过 1 亿美元。它已经成为以太坊生态系统的支柱,许多以太坊项目已经或正在部署这一项目。其他的合成代币项目,如UMA,也在迅速发展。
然而,尽管MakerDAO体系在 2019 年经受住了严峻的经济形势,但这些情况绝不是最严峻的。过去,比特币曾在两天内下跌了75%;同样的情况也可能发生在以太坊或其他任何抵押资产上。对底层区块链的攻击是一种更大的未经测试的风险,尤其是在价格同时下跌的情况下。另一个主要的、可以说是更大的挑战是,MakerDAO这样的系统的稳定性依赖于一些底层的预言机方案。针对预言机系统的不同尝试确实存在(见第 16 条),但是在经济压力巨大的情况下,它们能坚持多久,目前还没有定论。到目前为止,MakerDAO控制的抵押品一直低于MKR代币的价值;如果这种关系逆转,MKR持有者可能会有动机去“掠夺”MakerDAO系统。有很多方法可以防止这种攻击,但是在现实生活中还没有经过测试。
11. 去中心化公共产品激励
现状:一些进展。
为公共产品提供资金一般可以理解为分成两个问题:资金问题(从哪里获得资金)和偏好加总问题(如何确定什么是真正的公共利益,而不是个人的项目)。这个问题特别关注于前者,假设后者已经解决。
总的来说,这里没有重大的新突破。有两大类解决方案。首先,我们可以尝试激发个人的贡献,给予人们相应的社会回报。我自己提出的通过边际价格歧视进行慈善的建议就是一个例子;另一个是Peepeth上的抗疟疾捐赠徽章。其次,我们可以从具有网络效应的应用中筹集资金。在区块链领域有几种选择:
发行币
收取协议级别的部分交易费用(如EIP 1559)
从某些第二层应用收取部分交易费用(如Uniswap,或者一些扩展方案,甚至在以太坊2. 0 的执行环境中使用状态租赁)
收取其他费用的一部分(如域名注册)
在区块链领域之外,这只是一个古老的问题:涉及到如果你是政府,如何收税?如果你是企业或其他组织,如何收费?
12. 名誉系统
现状:进展缓慢。
自 2014 年以来,关于名誉系统的研究并不多。也许最好的方法是使用token管理的注册中心来创建可信任实体或对象的管理列表;Kleros ERC20 TCR就是一个例子,甚至还有一个Uniswap的替代接口,它使用前者作为后端来获取token、股票代码和logo的列表。主观类型的名誉系统还没有真正被尝试过,也许是因为没有足够关于人与人之间的联系的“社交图谱”,这些信息已经以某种形式被发表了。如果这些信息因为其他原因而开始存在,那么主观名誉系统可能会变得更受欢迎。
13. 优秀证明
现状:没有进展,这个问题被遗忘了。
代币分发的主要替代方法是空投;通常,一种代币在启动时就会按比例分配给其他代币的现有持有量,或者基于其他指标。直接验证人类的创造力还没有真正尝试过,而且随着人工智能最近的进展,创造一个只有人类可以做但计算机可以验证的任务的问题可能太困难了。
14. 去中心化贡献指标
现状:有些进步,有些改变。
最近关于确定公共产品贡献价值的研究没有试图将确定任务和确定完成质量分开;原因是在实践中这两者很难分开。特定团队所做的工作往往是不可替代的,并且是非常主观的,因此最合理的方法是将任务的相关性和性能的质量打包来看待,并使用相同的技术来评估两者。
幸运的是,在这方面已经取得了很大的进展,特别是二次融资的发现。二次融资是一种机制,在这种机制下,个人可以向项目捐款,然后根据捐款的人数和捐款的数额,用一个公式计算出,如果他们互相配合得很好,他们本应该捐多少钱(考虑到彼此的利益,没有成为公地悲剧的牺牲品)。我们捐赠的金额与实际捐赠的金额之间的差额将作为某个中央资金池的补贴提供给该项目(中央资金池的资金来源见第 11 条)。请注意,这种机制侧重于满足某个社区的价值,而不是满足某个既定的目标,不管是否有人关心它。由于价值问题的复杂性,这种方法可能对未知的未知更健全。
二次融资在现实生活中也有过尝试,在最近的gitcoin二次融资中取得了相当大的成功。在改善二次融资和类似机制方面也取得了一些进展;特别是,成对有界二次融资,以防止勾结行为。也有规范和实施抗贿赂投票技术的工作,防止用户向第三方证明他们投了谁的票;这可以防止各种勾结和贿赂攻击。
15. 反女巫攻击系统
现状:一些进展。
人们曾多次尝试解决这个唯一人类问题。想到的尝试包括(不完整的列表!):
HumanityDAO: https://www.humanitydao.org/
Pseudonym parties: https://bford.info/pub/net/sybil.pdf
POAP ("proof of attendance protocol"): https://www.poap.xyz/
BrightID: https://www.brightid.org/
随着人们对二次投票和二次融资等技术越来越感兴趣,对反女巫攻击系统的需求也在不断增长。希望这些技术和新技术的不断发展能够满足这一要求。
16. 去中心化成功指标
现状:一些进展。
这现在通常被称为“预言机问题”。已知的最大的去中心化预言机运行实例是Augur,它已经处理了数百万美元的下注结果。Token管理的注册中心(例如Kleros TCR)是另一个例子。然而,由于高度争议性的问题或者由于51%攻击尝试,这些系统仍然没有开始实际测试。也有以“对等点预测”文献的形式研究发生在区块链领域之外的预言机问题;在这里可以看到该领域的最新进展。
另一个迫在眉睫的挑战是,人们希望依靠这些系统来引导资产数量的转移,而这些资产的转移规模要大于系统的本地token的经济价值。在这种情况下,代币持有者在理论上有串通一气给出错误答案以窃取资金的动机。在这种情况下,系统将分叉,原始的系统token可能变得毫无价值,但是原始的系统token持有者仍然可以从他们错误引导的任何资产转移中获得回报。稳定币(见第 10 条)就是一个特别的例子。有一种解决方法这将是这样一个系统——假定无私的诚实数据提供者确实存在,并创建一个机制来识别它们,如果有人开始恶意投票,依赖于预言机的用户可以先完成有序退出。无论如何,预言机技术的进一步发展是一个非常重要的问题。
新问题
如果要我在 2019 年再写一遍难题清单,有些会是上述问题的延续,但关键点会有重大变化,也会有重大的新问题。以下是一些选择:
密码模糊化:见第 4 点
正在进行的后量子密码学的工作:基于哈希和基于后量子安全的“结构化”数学对象,例如椭圆曲线同源、控制曲线……
反勾结基础设施:正在进行的工作和细化的内容在这里,包括增加对运作者的隐私,以最实用的方式增加多方计算等等
预言机:和上面的第 16 点一样,但是去掉了对“成功指标”的强调,而把重点放在“获取真实世界的数据”这个问题上
唯一身份:见 15 个点,但重点是一个“绝对”的解决方案:更难得到两个身份,但同时获得多重身份既是不可能的也是有害的
同态加密和多方计算:为了实用性,还需要不断改进
去中心化的治理机制:DAO很酷,但是当前的DAO仍然非常原始;我们可以做得更好
对PoS 51%攻击的正式回应:正在进行的工作和细化的内容在这里
更多的公共产品资金来源:理想的做法是对具有网络效应的系统内部的拥挤资源收费(例如交易手续费),但在去中心化的系统中,这样做需要公共合理性;因此,这是一个社会问题,同时也是寻找可能来源的技术问题
名誉系统:见第 12 条
总之,基础层问题虽然缓慢但肯定会减少,但应用层问题才刚刚开始。