Vitalik在他最近博文里总结了加密货币领域的难题,主要涉及的领域包括密码学、计算机科学以及经济学方面的难题,内容可谓相当精彩。我对原文做了翻译,内容如下:
作者简介:
朱月俊,百度超级链核心开发者,翻译《启示录:如何打造用户喜爱的产品》第二版。
百度超级链:https://github.com/xuperchain/xuperunion
大家觉得不错的话,欢迎点star并提供pr。
我会持续翻译区块链前沿技术文章,与大家共享科技带来的快感!!欢迎大家关注我的新浪微博:朱月俊-区块链
区块链五年之后走向成熟的关键技术都有哪些?
特别感谢Justin Drake和Jingjing Wang的反馈
2014年,我曾发表过一篇文章并做过一次演讲,讲述针对加密货币领域,数学、计算机科学以及经济学方面的难题,我认为这些问题对加密货币领域至关重要,有助于加密货币走向成熟。过去5年,这些问题取得了很多进展。但是,关于那些当时我们认为重要的难题具体取得多少进展?我们在哪些方面取得了成功,在哪些方面一筹莫展,哪些问题其实并不重要?哪些问题其实更重要?在这篇文章中,我会逐一介绍在2014年列出的16个问题,并介绍一下现在我们对这些难题所取得的进展。最后,我会列出2019年我认为的新的难题。
这些问题分为三类:(1)密码学,如果密码学问题本质上能够得到解决,那么是否可以用纯数学技术去解决;(2)共识理论,工作量证明以及权益证明取得很大进展;(3)经济学,需要在应用层构建一个针对不同参与者的激励机制。三类问题都取得了重大进展,有些领域取得的进展比其他领域更多。
密码学问题
1.区块链的扩展性
当今加密货币领域面临的最大问题之一就是扩展性问题...大规模的区块链系统主要关注的问题就是信任:即如果只有几个实体能够运行全节点,这些实体很可能合谋篡改区块内容,而其他用户因为没有亲自验证区块内容,无法判断一个区块是否合法。
问题:创建一个安全强度与比特币持平的区块链,但是网络中全节点的数量与交易数量呈线性关系。
现状:理论方面取得重大进展,尚待工业环境检验。
扩展性问题是一个技术性问题,我们已经在理论上取得了很多进展。5年前,几乎没有人考虑分片技术;现在,分片技术已经司空见惯。包括以太坊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 另外可以参考coded Merkle trees提案。
还有其他一些小进展,例如通过收据进行跨分片通信以及“常数因子”增加功能(例如BLS签名聚合)。
换句话说,完全的分片技术还没有被应用到实际的区块链系统中(Zilliqa已经在使用局部分片技术了)。在理论方面,对于分片技术本身不再持有怀疑态度,不过仍然遗留一些有争议的细节问题以及分片网络带来的稳定性挑战问题、开发者体验问题等。但是,仅仅通过思考是无法解决那些仍然存在的问题的;还需要持续开发区块链系统, 看看以太坊2.0以及类似系统在真实环境中的运转情况。
2.时间戳
问题:创建一个分布式激励系统,使得无论是链上还是链外,都可以使当前时间保持较高的精度。所有正常用户的时钟围绕某个“真实”时间呈正态分布,标准差为20秒...两个节点之间的时间误差不能超过20秒。实际上,这可以通过权益证明或者非sybil令牌来强制执行。(请参阅#9)系统应该持续提供一个环境,比如在连续的120秒(或者更短的时间),诚实节点占比大于99%。外部系统可能最终依赖于此系统;因此,无论动机如何,都应保证安全,以防攻击者控制少于25%的节点。
现状:有一些进展。
以太坊的出块时间为13秒,没有采用特别先进的时间戳技术,不过跑得挺溜;它使用了一种简单的技术,即客户端不接受其声明时间戳早于客户端本地时间的块(即不接受来自过去的块)。也就是说,以太坊尚未经过严格的时间戳攻击测试。最近出来的网络调整时间戳提案尝试通过允许客户端在不知道本地时间戳的情况达成高精度的时间共识以便改变现状;不过还未经过测试。总的来说,时间戳问题并不是当前面临的最具挑战性的问题。也许更多的权益证明区块链(包括以太坊2.0以及其他区块链)真正上线后,问题会有所改变。
3.暴力计算证明
问题:创建一个程序POC_PROVE(P, I) -> (O, Q)并且POC_VERIFY(P, O, Q) -> {0, 1},从而保证POC_PROVE基于输入I运行程序P并返回O,Q;POC_VERIFY的入参是P, O, Q,输出为Q以及O是否由POC_PROVE算法使用P合法产生。
现状:理论和实践均有重大进展。
基本就是构建一个SNARK(或STARK或SHARK或...)。我们已经实现了这种功能。现在,SNARK越来越广为人知,甚至已经在多个区块链中得到应用(包括基于以太坊构建的 tornado.cash)SNARK作为隐私技术(请参阅Zcash和tornado.cash)和可扩展性技术(请参阅ZK Rollup,STARKDEX,STARKing erasure coded data roots)是非常有用的。 链接1:https://ethresear.ch/t/on-chain-scaling-to-potentially-500-tx-sec-through-mass-tx-validation/3477 链接2:https://www.starkdex.io/ 链接3:https://ethresear.ch/t/stark-proving-low-degree-ness-of-a-data-availability-root-some-analysis/6214
性能方面仍然存在挑战;产生一个算术友好型的哈希函数就是一个大问题,高效证明随机内存访问是另一个大难题。此外,还存在一个尚未解决的问题,即O(n * log(n))是否是上限,或者是否有某种方法可以仅使用线性开销来给出简洁的证明(很遗憾,这需要花费线性时间进行验证)。现有的方案还存在漏洞风险;通常,这些都是细节问题,而不是技术问题;
4.代码混淆
理想的情况是创建一个混淆系统O,给定任意一个程序P,混淆系统可以产生一个新的程序O(P)=Q,从而保证如果给定相同的输入,则程序P和Q能够返回相同的输出,并且重要的是,从程序Q无法导出有关程序P的任何信息。一个人可以在程序Q内隐藏一个密码,比如密钥,或者简单地使用程序P来隐藏算法本身的工作。
现状:进展缓慢。
问题:大白话就是说我们需要想一个方法对一个程序进行加密,在给定相同输入的情况下,加密后的程序和加密前的程序能够返回相同的输出,并且加密后的程序不会暴露程序的内部信息。举个例子,如果某个程序内部包含一个私钥,那么这个私钥除了对特定信息签名外,无法做任何操作,即私钥无法暴露出去。
代码混淆的解决方案对区块链协议会有很大意义。这个用例比较巧,因为用户必须考虑链上的混淆程序会被拷贝到链外的可能性,当然还有其他可能性。我个人感兴趣的一点就是混淆技术包含工作量证明,去除了中心化的操作。一个人想通过使用不同的输入来尝试判断原用户的行为,代价非常昂贵。
遗憾的是,这仍然是一个难题。目前通过持续的工作来攻坚这个难题,在理论方面,正在尝试基于数学对象(即密码学多线性对映射)推导我们的设想,在实践层面,正在尝试基于理想的数学对象做一些代码上的实现。然而,所有这些工作离创建可行和安全的工具还很遥远。更全面的概述,可以参考https://eprint.iacr.org/2019/463.pdf
5.基于哈希的密码学
问题:创建一个数字签名算法,不再依赖任何安全假设同时保持hash的随机性(仍然是160bits,能够抵抗经典计算机的攻击)并拥有其他属性。
现状:有一些进展。
自2014年以来,在此方面取得了两大进展。 SPHINCS是一种“无状态”的数字签名算法,在我将之列为难题之后不久就被发布出来了,它提供了几个基于hash的纯签名算法,大小约为41KB。此外,STARKs也被开发出来了,可以基于它们创建大小类似的签名。五年前,我认为数字签名技术和零知识证明技术是可能实现的,不过hash技术的实现超出了我的预期。就是说,大小仍然是一个问题,需要持续减少证明的大小,尽管看起来进步是渐进式的。
基于hash的密码学尚未解决的问题主要是聚合签名,类似于BLS聚合想要解决的问题。众所周知,我们可以对许多Lamport签名进行STARK,不过这种方式效率低下;需要一种更高效的算法;(如果你想问基于hash的公钥加密是否可行,答案是否定的,除了攻击付出的开销外,你做不了任何事情)
共识理论问题
6.抗ASIC的工作量证明
解决该问题的一种途径就是找到一种无法定制化的计算类型,然后基于此创建工作量证明算法。有关抗ASIC的硬件内容更深入的讨论,参https://blog.ethereum.org/2014/06/19/mining/
现状:已经尽最大努力解决了。
在将该问题列为难题之后,又经过了6个月,以太坊决定采用抗ASIC的工作量证明算法:Ethash.众所周知,Ethash是一种memory-hard的算法。从理论上讲,常规计算机中的随机存取存储器已经得到了很好的优化,因此很难针对特殊应用进行改进。Ethash旨在主要通过访问内存来获得工作量证明,从而实现抗ASIC。Ethash并不是第一个memory-hard的算法,但是它确实有所创新:它在两层DAG上使用伪随机查找,从而提供了两种评估函数的方式。首先,如果某人拥有整个DAG(大约2G),那么他可以进行快速计算;这就是memory-hard所谓的“快速路径”。其次,如果只有DAG的顶层,那么计算过程就会相当慢;用于区块验证。
Ethash在抗ASIC方面被证明非常成功。经过三年和数十亿美元的区块奖励后,ASIC确实仍然存在,不过它的性能比GPU最高高2-5倍。ProgPoW已经作为替代方案被提案,不过抗ASIC算法注定很快会消失,并且它存在缺点,比如它使得51%攻击成本更低。以太坊经典51%攻击:https://cointelegraph.com/news/ethereum-classic-51-attack-the-reality-of-proof-of-work
我相信可以创建提供中等级别的ASIC抵抗力的PoW算法,这种抵抗是有限的,并且ASIC和非ASIC PoW都有缺点。从长远来看,区块链共识更好的选择是权益证明。
7.有用的工作量证明
让工作量证明功能赋能其他事情;比如Folding @ home之类的东西,Folding @ home是一个现有程序,用户可以在其中将软件下载到计算机上以模拟蛋白质折叠,并为研究人员提供大量数据,以帮助他们治愈疾病。
现状:可能并不可行,当然也有例外情况。
有用的工作量证明所面临的挑战是,这类工作量证明算法需要许多属性:
- 难以计算
- 易于验证
- 不依赖大量外部数据
- 可以高效地进行分块计算
遗憾的是,在拥有上述属性之后,没有多少计算是有其他用处的,最多就是在很短的时间内“有用”,无法基于它们构建加密货币。
但是,有一个例外:零知识证明的生成。关于区块链有效性验证的零知识证明很难计算且易于验证。此外,它们很难计算。如果“高度结构化”计算的证明变得太容易了,则可以简单地切换到验证区块链的整个状态转变,由于需要对虚拟机和随机内存访问进行建模,因此这变得非常昂贵。
区块链有效性的零知识证明为区块链用户提供了巨大的价值,因为它们可以代替直接验证链的需求;Coda已经这么做了,albeit(拥有简化的区块链设计)也已经针对可证明性进行了优化。这些证明可以极大地帮助改善区块链的安全性和可扩展性。也就是说,实际需要的计算两仍然远远小于当前矿工需要的工作量,因此,充其量不过是权益证明区块链的附加项,不能作为单独的共识算法存在。
8.权益证明
解决挖矿集中化问题的另一种途径就是完全取消挖矿,并转为其他机制来计算每个节点的权重。迄今为止,讨论最多的替代方案是“权益证明”,也就是一币一票,取代之前的一个CPU单元一票。
现状:理论上取得重大进展,尚待实际生产环境验证。
在2014年底,权益证明社区觉得“弱中心化”是不可避免的。为了保证经济安全,节点在首次同步区块时需要获取最近的检查点,如果节点离线超过几个月则需要再次获取。这很难让人接受。许多PoW信徒仍然坚持使用PoW,因为在PoW链中,链的头信息唯一的可信涞源取决于区块链客户端本身。但是,PoS倡导者愿意接受这种问题,因为增加的信任要求并不大。从那以后,带有长期保证金的权益证明算法慢慢被人接受了。
当今最有趣的共识算法本质上都类似于PBFT,使用动态的验证者集合取代固定的验证者集合,任何人都可以通过向具有赎回锁定期的系统级合约转发token(有时,赎回锁定期可能长达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
这些仍然在持续改进。以太坊2.0会实现FFG,目前正在实现中并已取得巨大进展。此外,Tendermint在Cosmos已经跑了好几个月了。我认为,关于权益证明的其他论点都与优化经济激励机制以及规范51%攻击策略相关。
9.存储量证明
解决该问题的第三种方法是使用计算能力或货币以外的稀缺计算资源。在这方面,已提出的两个主要替代方案是存储和带宽。理论上,没有办法提供给定或使用带宽的事后加密证明,因此,准确来说,带宽证明应该属于社交证明的一个子集,我会在后面进行讨论,而存储量证明是当然可以通过计算完成。存储量证明的一个优点是它完全可以抵抗ASIC的攻击。硬盘驱动器中的存储类型已经接近最佳。
现状:尽管还有很多工作要做以及需要实际环境检验,理论上已经有了很多进展。
有很多区块链打算使用存储量证明协议,包括Chia以及Filecoin。也就是说,这些算法尚未经过大量测试。我自己的主要关注点是集中化:这些算法实际上是由使用备用存储容量的较小用户主导,还是由大型采矿场主导?
经济学
10.稳定币
比特币的主要问题之一是价格波动问题...问题:构建价格稳定的加密资产。
现状:有一些进展。
MakerDAO现在已经上线两年了,价值稳定。它的基本抵押资产(ETH)的价值下跌了93%,幸免于难,现在发行的DAI超过1亿美元。它已经成为以太坊生态系统的支柱,许多以太坊项目已经或正在与之集成。其他合成代币项目,例如UMA也在迅速获得发展。
尽管MakerDAO在2019年活下来(2019年的经济不景气),不过2019年绝对不是经济最不景气的一年。过去,比特币有在两天内下跌了75%;有可能,以太或任何其他抵押资产可能也会发生同样的情况。对区块链底层系统进行恶意攻击是现存的一个更大的风险,价格下跌会加剧这种风险。另一个主要的挑战(也被认为是最大的挑战)就是类似于MakerDAO系统的稳定性,这取决于底层预言机算法。确实存在针对预言机系统的不同尝试(参阅#16),不过是否能够成熟巨大的经济压力,尚无定论。到目前为止,由MakerDAO控制的抵押品已经低于MKR代币的价值;如果这种关系发生逆转,那么MKR持有者可能有集体动机试图“掠夺” MakerDAO系统。有多种方法可以防止此类攻击,但是尚未在现实环境中进行过测试。
11.去中心化的公共物品激励
通常“公共物品”问题是经济系统中的常见问题。例如,假设有一个科学研究项目将花费100万美元来完成,并且众所周知,如果这项研究完成,那么所产生的研究将为100万人节省5美元。总之,社会收益是明确的……[但是]从对每个人的贡献来看,这是没有意义的...到目前为止,大多数公共产品问题都涉及集中化附加假设和要求:存在一个完全可信赖的预言机,用于确定某个公共物品任务是否已完成(实际上这是错误的,但这是另一个问题的领域)。
现状:有一些进展。
通常,为公共物品提供资金的问题可以拆分成两个问题:资金问题(从哪里获得公共物品的资金)和偏好汇总问题(如何确定什么是真正的公共物品)。假设后者已解决,则此问题专门针对前者(请参阅有关此问题的工作,请参见下面的“去中心化贡献指标”部分)
总的来说,这里没有重大的新突破。解决方案有两大类。首先,我们可以尝试引起个人的贡献,从而为人们提供社会奖励。其次,我们可以从具有网络效应的应用程序中收集资金。在区块链领域内,有几种选择可以做到这一点:
- 发行货币
- 在协议级别收取一部分交易费用(例如,通过EIP 1559)
- 从某些2层应用中收取一部分交易费用(Uniswap或某些扩展解决方案,甚至在以太坊2.0的执行环境中声明租金)
- 收取其他种类的小费。
在区块链领域之外,这只是一个古老的问题:如果您是政府,则如何收税;如果您是企业或其他组织,则如何收费。
12.信誉系统
问题:设计一个正式的信誉系统,包括信誉值req(A,B) --> V,其中V是以A为视角B的信誉值,一种确定一方可以被另一方信任的概率的机制。以及提供特定公开或最终互动记录的信誉更新机制。
现状:进展缓慢。
自2014年以来,在信誉系统方面实际上并没有开展太多工作。也许最好的办法是使用token管理的注册表创建可信任的实体/对象的管理列表;Kleros ERC20 TCR就是一个例子,甚至Uniswap都有一个替代接口使用它作为后端来获取列表。尚未真正尝试过主观多样性的信誉系统,这可能是因为没有足够的关于人们彼此之间联系的“社会图”信息以某种形式存储在区块链上。如果此类信息由于其他原因开始存在,那么主观信誉系统可能会变得更加流行。
13.优秀证明
一种很有趣且基本未被研究的解决方案(用于解决token分配问题)就是做一些对社会有用的任务,但需要原始的人类驱动的创造力和才能。例如,假如有人想出一个“证明”货币来奖励那些提出特定数学理论证明的玩家。
现状:没有进展,问题基本被遗忘了。
token分配的主要替代方案就是空投;token的分配数量通常与现有的其他token持有量比例差不多,或者基于其他指标分配。还没有相关工作来直接验证人类的创造力,并且随着AI的最新进展,创建仅人类可以执行但计算机可以验证的任务的问题可能非常困难。
14.抗女巫系统
与信誉系统问题相关的另一个问题是创建“唯一的身份系统”,该系统可以生成令牌来证明一个身份是否属于某个女巫攻击...但是,我们希望有一个比“一美元一票”更好,更平等的制度。可以说,一人一票将是理想的选择。
现状:有一些进展。
已经进行了许多尝试来解决身份的问题。想到的尝试包括(不完整的列表!):
- HumanityDAO: https://www.humanitydao.org/
- Pseudonym parties: https://bford.info/pub/net/sybil.pdf
- Pseudonym parties: https://bford.info/pub/net/sybil.pdf
- BrightID: https://www.brightid.org/
随着对二次投票和二次资助等技术的兴趣日益浓厚,对某种基于人的抗女巫系统的需求也在不断增长。希望这些技术的不断发展和新技术可以满足它的需求。
15.去中心化的贡献指标
遗憾的是,激励公共产品的生产并不是中心化要解决的唯一问题。另一个问题是,首先要确定哪些公共物品值得生产,其次,具体需要多大努力完成公共物品的生产。
现状:有一些进展,主要集中在某些方面。
关于确定公共物品价值的最新工作并没有打算将确定任务和确定完成质量分开。原因是实际上很难将两者分开。特定团队所做的工作往往是不可替代并且是主观的,因此最合理的方法是将任务和质量的相关性视为一个整体,并使用相同的技术对其进行评估。
幸运的是,在这方面已经取得了很大的进步,尤其是在发行二次融资时。二次融资允许个人向该项目捐款,然后基于捐款的数量以及金额来计算每个人捐款多少(假设他们捐款时考虑到了彼此的利益,没有成为公地悲剧的牺牲品。)对于任何给定项目,将要捐赠的金额与实际捐赠的金额之间的差额会从某个中央资金池中获得补贴(关于中央资金池的来源,请参阅第11条)。请注意,此机制侧重于满足某些社区的价值,而不是满足某些给定的目标。由于价值观问题的复杂性,这种方法可能对新鲜问题更有价值。
在最近的gitcoin二次融资回合中,甚至已经在现实生活中尝试过二次融资,并取得了相当大的成功。在改善二次融资和类似机制方面也取得了一些进展;也有关于规范和实现的工作。抗贿赂投票技术,防止用户向其投票的第三方证明;这样可以防止各种合谋和贿赂攻击。
16.去中心化的成功指标
问题:想出并实施一种去中心化的方法来测量现实世界中的数字变量...该系统应该能够测量人类当前可以大致达成的任何共识(例如资产价格,温度,全球二氧化碳浓度)
现状:有一些进展。
现在通常将其称为“ 预言机问题”。已知最大的正在运行的去中心化的预言机实例就是Augur,已经处理了数百万美元下注的结果。token管理的注册表,例如Kleros TCR的token是另一个例子。然而,由于存在较大的争议或者是尝试51%的攻击,这些系统仍然还未经过实际环境测试。还有一些以对等预测文献的形式研究了链外发生的预言机问题。有关此领域的最新进展,请参见此处(https://arxiv.org/abs/1911.00272)。
另一个迫在眉睫的挑战是,人们希望依靠这些系统来指导资产数量大于系统本机代币经济价值的资产转移。在这种情况下,代币持有者理论上有动机合谋提供错误答案以窃取资金。在这种情况下,系统将分叉,原始系统token可能会变得毫无价值,不过原始系统token持有者仍然会从他们不正确的资产转移行为中获得回报。稳定币是一个特别糟糕的例子。解决此问题的一种方法是,系统假设确实存在利他的诚实数据提供者,并创建一种机制来识别这些诚实数据提供者,并且仅允许它们缓慢运转,以便恶意数据提供者在依赖预言机的用户系统中获得投票时,第一时间让它们出局。无论如何,预言机的进一步发展是非常重要的问题。
新问题
如果让我再次列出难题清单的话,上面的一些问题仍然会被列入清单,不过重点会有重大改变,同时还会列出一些新的关键问题。以下是一些精选:
- 加密混淆:与#4相同;
- 正在进行的有关后量子密码的工作:即基于hash,又基于后量子安全的“结构化”数学对象,例如,椭圆曲线等值线,点阵...
- 反合谋基础设施正在进行的工作和改善工作: https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413,包括增加一些隐私机制以防操作员作弊,做到最大程度的多方计算等等。
- 预言机:与#16相同,但不再强调“成功指标”,而侧重于一般的“获取实际数据”问题。
- 唯一身份识别(或者更实际地说,是半身份识别):与#15描述的问题是相同的,不过并不强调“绝对”地解决方案:获得两个身份应该比获得一个身份要难很多,即使能做到,获得多个身份不仅不可能,而且可能存在风险。
- 同态加密和多方计算:实用性仍需要不断改进。
- 去中心化的治理机制:DAO很酷,但是当前的DAO仍然很原始。我们可以做得更好。
- 全面规范对PoS 51%攻击的响应:正在进行的工作和完善工作:https://ethresear.ch/t/responding-to-51-attacks-in-casper-ffg/6363
- 更多的公共物品资金来源:理想的做法是对具有网络效应的系统中的拥塞资源收费(例如交易费),但在去中心化系统中这样做需要公众合法性;因此,这是一个社会问题,也是寻找可能来源的技术问题。
- 信誉系统:与#12是一样的;
总的来说,底层问题正在慢慢减少,而应用层问题正在逐渐增加。