毫无疑问,区块链技术具有很大的潜力和影响力。2017年,比特币市场出现了巨大的反弹,市场前景一片乐观。
但是,blockchains目前还存在一些重要的技术壁垒,使得他们在今天并没有得到大范围的普及使用。
当然,我深信 blockchains 会迅速成长起来,所以,我们需要众多的开发者和投资商一起,推动区块链技术向前发展。
下面列举一下目前存在的技术壁垒:
1、扩展性问题
2、隐私问题
3、缺乏正式的合同确认
4、存储约束
5、节点间的一致性问题
6、缺乏管理和标准
7、工具不够完善
8、量子计算的威胁
9、等等
下面,我将通过举例的方式来论述上面提到的技术壁垒。
node:对于上述的问题,我可能没办法一一论述他们,并给出合理的解决方案,如果我的论述存在问题,欢迎大家批评指正,我将万分感激,
1、扩展性问题(Limited scalability):
目前,所有区块链共识协议有一个具有挑战性的问题:就是每一个区块链网络中的节点必须处理事务。为什么呢?OK,回想一下,区块链从根本上来说是一个“去中心化”的系统,这就意味着他不像传统的一致性协议一样,有一个主节点来监控从节点的状态。相反,网络中的每一个节点都通过处理每个事物和维护整个状态的副本来确保系统的安全。
虽然,去中心化的这种共识机制为我们提供了我们所关心的区块链的优势——安全保证、政治中立、审查抵制等,但这是以可扩展性为代价的,根据区块链的定义,我们能够清晰的得出,为了保证每一个全节点在全网中的处理能力,所以它通过限制区块链的交易数量来达到目的。
主要有如下两点:
1、低吞吐量:blockchains只能处理有限的交易数量。
2、交易时间较慢:处理一块交易所需要的时间是缓慢的。比如:比特币每10分钟生成一个块,以太坊大约每14秒生成一个块,在高峰时刻,这个时间可能更长.
所以,区块链技术被迫在二者之间做出权衡。另外,随着时间的增长,bitcoinchains被挖出来的数量增多,其对存储、网络带宽、算力的要求也会不断增长。在某些情况下,只有少数满足要求的节点才能继续挖矿,这一样会导致集中化的风险。因为我们需要的是一个每秒处理数千笔交易,并且分散化相同的加密货币,所以真正到了那个时候,我们就需要选择去相信几个较大公司的中央系统,来继续挖矿。
解决方案:
理想情况下,我们希望区块链设计具有比特币和以太币类似或更好的安全属性,同时,我们没必要让每一个节点去验证所有的交易,我们按照一定的百分比来验证。换句话说,我们需要一种机制来限制需要验证每个事务的节点的数量,而不会丢失网络对每个事务有效和真实的信任。这可能听起来很简单,但在技术上是非常困难的。
可扩展性是blockchains能否推广的一个技术挑战,目前,区块链生态系统中的研发人员正在努力提出可行性的解决方案,有关当前的一些解决方案的简要总结,请参阅下面的内容:
离块链交易(Off-chain payment channels):
顾名思义,离块链交易,就是不在区块链上直接完成交易,其区别与块链交易,这样做的好处是区块链就是纯粹用作结算层来处理最终的交易以及一系列的交互,真正的交易,我在链外进行,这样有助于减轻底层区块链的负担。
这种方式可以解决我们上面讨论的吞吐量的问题,因为,现在的区块链可以处理规模更大的交易量。此外,由于支付通道一经处理就发生事物处理,而不是当一个块被得到确认之后,所以离块链交易也可以解决事物的速度问题,消除典型的延迟。
目前。区块链生态中,关于离块链交易的一些例子:比如Raiden Network和 Lightning Network(闪电网络)。
分区 (Sharding):
分区的概念就是将区块链的整体状态切分成不同的碎片,并且状态的每个部分都被网络中的不同节点存储和处理,每一个分片只并行处理其中的一小部分状态,区块链分区与传统数据库领域的分区类似,当然在分散的节点之间保持安全性和真实性依旧是一个难题。
离链计算(Off-chain computations)
这个类似与有状态的通道(channel),但范围较大,这个想法是在块链外执行计算(不仅仅是令牌的传输),因为直接在区块链上进行计算代价太大。某种程度上,这是种安全的、可验证的方式。通俗来说,就是将计算和验证的过程从区块链转移到单独的协议中,来提高事务的吞吐量。以太坊的一个例子是 TrueBit 。
有向无环图(DAGs)
“DAG”是具有顶点和边的图数据结构。顶点是图上的一个点,边是从一个顶点到另一个顶点的路径)DAG保证没有办法从任何顶点开始,并沿着一系列的边,最终循环返回到顶点即没有循环)。这使得我们可以按照拓扑顺序获得一系列节点(或顶点)。
以DAG为基础的协议(例如IOTA的Tangle)的前提是将全局的线性区块链排在一起,而使用DAG数据结构来维持系统的状态,为了保护网络,这些协议依赖于他们自己的新方法,并不要求每个节点都按照线性的方式来处理每一个事务。
另一种基于DAG的方法,例如SPECTER协议,使用块的直接非循环图(DAG)和并行的DAG块,以实现更高的吞吐量和更高的事务处理时间。
我希望能在以后的文章中多写一些关于基于DAG的方法。现实情况是,这些协议还处于很早的阶段,尚未得到大规模的实施和使用。坦率地说,他们有一些根本性的局限/弱点,尚未解决被认为是可行的可扩展解决方案。
隐私问题(Limited privacy)
因为区块链交易并不直接与您的身份挂钩,它们可能显得更私密。世界上任何人都可以匿名创建一个新的钱包,并使用它进行交易。
事实上,并没有这么简单。
一方面,区块链技术的巨大潜力是假名:这种交易是记录和存储在公共账本中的,但它们与一个仅由数字和字母组成的账户地址相关联。由于这个地址没有真实世界的身份,交易的创始人是无法跟踪到的。
但是,这种总体安全的表象是误导性的。只要化名不与个人联系在一起,一个人就可以保护自己的隐私,但只要有人联系起来,秘密就显露出来。当执法机构承认他们能够在调查过程中识别特定的比特币用户时,就会发现这种情况的一个例子,从而“去密钥化”他们,并破坏了区块链总交易隐形的总体前提。
这是如何实现的呢?
商家网站上的网络跟踪器和cookies使得将交易信息泄漏到网络上非常容易,任何人(包括政府,执法机构和恶意用户)都可以随时使用这些信息。
此外,像以太坊这样的区块链平台,用户正在与智能合约进行交互,而不仅仅是简单的价值转移。关于这些智能合约的所有细节在以太坊区块链上都是公开的,包括发件人和收件人,交易数据本身,执行的代码以及合约中存储的状态。
将关键业务数据上传到黑客,竞争对手或其他未授权方可以查看信息的区块链中,这对大多数公司来说不是一种选择。考虑:
电子病案:这是非常私人和敏感的信息。在公共区块链上公开显示这些信息是不可接受的,从而危及病人的机密性。
身份验证数据:如社会安全号码不能公开存储在公共智能合同中。
凭证管理:如密码和密钥在开放的,最终不安全的智能合约中没有地位。
财务文件:如电子表格或员工工资不得公开地与易于追溯的地址相关联。
还有很多例子。。。数不胜数。
对于隐私和个人主权的个人,组织和行业来说,隐私仍然是一个根本的障碍。我们中许多痴迷于区块链和密码货币的公司都有兴趣建立一个不受信任和审查制度,为个人提供财务支持。矛盾的是,我们正在使用一个公开的,易于追踪的分类账来做到这一点(珍爱生命,远离杠头)。
隐私问题解决方案(Privacy solutions)
以下是不同开发团队一直在努力解决的几个例子。
椭圆曲线Diffie-Hellman-Merkle(ECDHM)地址:
要了解ECDHM地址,您需要了解Diffie-Hellman密钥交换。 Diffie-Hellman密钥交换背后的想法是它建立了双方之间的共享秘密。这可以用来在公共网络上私下交换信息。
然后呢?
发件人和收件人可以公开共享 ECDHM 地址,然后使用他们的共享公钥来获取匿名比特币地址。这些比特币地址只能由拥有这个私钥的人揭露。唯一公开可见的是可重用的ECDHM地址。因此,用户不必担心被跟踪的交易。
通过使用颜色而不是非常大的数字来说明密钥交换的总体思路的概念图
ECDHM地址方案的一些示例包括Peter Todd的Stealth Addresses,Justus Ranvier的BIP47可重复使用支付代码,Justin Newton的BIP75带外地址交换等等。但是,这些方案的工作实施和实际使用是很少的。
Mixers
Mixers 背后的想法是,一群人可以将他们的付款合并成一个池,跟踪私人账本上的债务。然后,当从池中获得资金时,每笔付款的来源都会被掩盖。任何观察区块链的人都可以看到所支付的金额以及收款人,但理论上来说,专门授权付款的人不能被追踪。Mixers 服务的一个例子是CoinJoin。
不幸的是,Mixers 已被证明是不可靠的解决方案。例如,研究人员能够轻松识别CoinJoin交易,并证明只需支付32,000美元,攻击者就能够以90%的概率成功匿名交易。此外,研究人员还证明,Mixers 对 Sybil 攻击和拒绝服务攻击提供的保护很少。
更令人不安的是,一台 Mixers 的私人账本需要由一些中央机构进行管理,这意味着它需要一个值得信赖的第三方来“混合”交易。
由于CoinJoin是用户选择使用的解决方案,而不是默认的方法,因此历史上很少有人参与这些类型的 Mixers 池,使得匿名设置太小。因此,很容易确定一个特定的输出是否来自少数几个人之一。
Monero
解决隐私问题的另一种方法是创建默认情况下私密的加密货币,如Monero。与许多altcoin不同,Monero不是比特币的分支。相反,Monero基于另一种协议CryptoNote。
Monero提供的主要功能是另一种“环形签名”方案。
环签名是一种组签名,组中的每个签名者都有一个秘密和公钥。与传统的加密签名不同,它证明了一个交易是由一个签名者使用一个所述私钥“批准”的,一个签名组证明了一个固定组的签名者批准了一个交易,而不会泄露谁。
零知识证明(Zero-knowledge proofs)
零知识证明是证明者证明验证者拥有一些秘密知识,而不直接揭示知识。换句话说,一个程序可以有秘密的输入,证明者没有向验证者揭示什么。零知识证明提供了可用于构建隐私保护机制的基本原语。例子包括:
1、challenge-response游戏:
在计算机安全中,challenge-response 认证是一个协议族,其中一方提出问题(“质疑”),另一方必须提供有效的答案(“答复”)以进行认证。这个“游戏”可以在区块链上用来验证交易。如果一个特定的事务是无效的,另一个节点可以选择“唤醒注意力”来证明无效。这就要求提供可证实的证据,证明交易是无效的。如果不这样做,就会产生一个“挑战”,要求交易的发起者产生一个证明交易有效的“回应”。
让我们来看一个例子:说“鲍伯”有唯一访问的一些资源(例如他的车)。爱丽丝现在也想访问它。鲍勃发出了一个挑战,也许是“52w72y”。爱丽丝必须用符合鲍勃发出的挑战的一串字符来回应。通过使用只有Bob和Alice知道的算法来找到答案的唯一方法。而且,鲍勃每次都会发出不同的挑战。因此,了解以前的正确答案并不会给Alice带来任何好处。
challenge-response游戏已经在像以太坊这样的区块链中使用。但是,我们需要库和工具来使这些类型的认证方案更加容易使用。
2、zkSNARKs
什么是zkSNARKs?我们来分解这个定义:
1)zk =零知识。不需要知道信息来证明信息存在。
2)SNARK:简洁的知识、非交互式自适应参数。“简洁”是指可以快速验证的简洁证明;“非交互”意味着不要求验证者与证明者进行交互。相反,证明者可以提前发布证明,验证者可以确认它是正确的。“适应性的知识论”意味着一些计算知识的证明。
3)zkSNARKs是资源密集型的。
4)SNARKs允许用户证明他们可以访问一个秘密,但是用户有责任维护秘密并在需要时使用它。
5)SNARKs有一个设置阶段,在这个阶段,你想要证明的电路或计算是固定的。这个阶段需要事先在私人信任的人群中进行。这不仅要求您相信准备设置的人员,还意味着SNARK不适合运行任意计算,因为总是需要准备阶段。
zkSNARKs + Zcash
Zcash是基于zk-SNARKs的隐私保护加密货币, Zcash拥有所谓的“屏蔽交易”,即所有使用的硬币都有一个匿名集合。屏蔽交易使用“屏蔽地址”,要求发送者或接收者生成一个零知识证据,允许其他人验证交易的加密数据,而不会被泄露。
Zcash绝对是一个值得关注的有趣的项目。
zkSNARKs + Ethereum:
在以太坊的下一个协议升级中,Metropolis,开发者将有能力有效验证链上的zk-SNARKs。
我们能用SNARKs启用的以太坊做什么?某些合同变量可以被有效地私有化。而不是存储在链上的秘密信息,它可以存储与用户,谁证明他们遵守合同规则使用SNARKs。这些用户中的每一个都需要自己的可信任设置,这会增加一些准备工作。但是,一旦存在电路,就可以根据需要使用尽可能多的事务。
然而,以太坊上的SNARKs无法实现的是独立于用户的自治性隐私。由于以太坊上的SNARKs依靠用户维护秘密的外链,如果没有用户,无法追踪秘密。
zkSTARKs:
ZK-SNARKs拥有一个更新、更闪亮的表亲:ZK-STARK,“T”代表“透明”。ZK-STARK解决了Zk-SNARKs的主要弱点之一:依赖于可信赖的设置。它们也更简单,因为它们纯粹依赖散列和信息理论,并且更安全,因为它们不使用椭圆曲线或指数假设。
总的来说,尽管我们在隐私方面取得了令人惊叹的进展,但是仍然有很多工作要做。零知识证明库需要进行大量的研究,战斗测试和成熟。 zkSNARKs和zkSTARKs需要在各种公共链上进行实验。 Zcash需要在现实世界的场景中大规模地证明用例。我们仍然是一个远离这一切的方法。
缺乏正式的合同确认(Lack of formal contract verification):
智能合同的正式验证仍然是一个巨大的问题。首先,让我们理解什么是“正式验证”一个合同的意义,即理解什么是“正式证明”。数学中的“形式证明”意味着一个数学证明,这个证明已经被计算机用数学的基本公理和原始推理规则来检验。
更广泛地说,与软件程序相关的形式验证是确定程序是否按照规范行事的方法。一般来说,这是用一个具体的规范语言来完成的,这个语言用来描述函数的输入和输出应该如何相关。换句话说,我们首先声明一个关于该程序的不变性,然后我们有义务证明这个说法。
规范语言的一个例子是Isabelle,它是一个通用的证明工具,允许数学公式以正式语言表达,并提供在逻辑演算中证明这些公式的工具。另一种规范语言是Coq,它是编写数学定义,可执行算法和定理的正式语言。
那么,为什么对智能合约中编码的程序进行正式验证非常重要?
首先,智能合约是不可改变的,这意味着一旦将它们部署到以太网主要网络后,就不能更新或修复它们。所以这意味着在我们能够在真实世界的应用程序中部署和使用这些合同之前,我们需要把事情做好。而且,智能合约是可以公开访问的,任何存储在智能合约中的东西都是开放的,任何人都可以调用智能合约的公共方法。虽然这提供了开放性和透明度,但它也使得智能合约成为黑客极具吸引力的目标。
事实上,无论您采取多少预防措施,编写无缺陷的智能合约都很困难。而且,以太坊为例,由于EVM指令的设计方式,验证EVM代码非常困难。这使得为以太坊建立正式的验证解决方案变得更加困难。无论如何,正式验证是减少漏洞和攻击风险的有效方法。它们比传统方法(例如测试,同行评审等)提供了更高的正确性保证,我们迫切需要更好的解决方案。
解决方案
我希望我有更多公开的解决方案在本节炫耀,但不幸的是并不多。我发现的一个非常早期的例子是由以太坊基金会的正式验证工程师Yoichi Hirai完成的。他能够早日获得验证几个智能合同的结果,包括一个小的“契约”合同。虽然很小,但这是我在定理证明环境中分析的第一个“真实”合约。
正如Yoichi Hirai所说:
验证结果还不够完善。在验证设置方面,我仍然发现比验证合同更多的问题。 EVM(以太坊虚拟机)实施不针对其他人进行测试!我已经公开这个项目了,因为这个项目是使用机器辅助逻辑推理验证智能合约所需的工作量(和细节水平)的一个很好的例子。在这个时候,如果我要实现一个价值超过10万美元的智能合约,并且我负责这个计划,我会考虑这种发展(另一个选择是先尝试较小值的合同)
还有其他一些团队,如Tezos完全放弃使用Solidity作为语言,EVM作为VM,而是建立自己的智能合约编程语言和虚拟机,以促进形式验证。
无论是正确的方法,无论是彻底改革EVM使其更容易正式验证或建立一个本身更容易验证的全新语言,我们需要做更多的工作。我们需要更多的正式验证的研究人员和开发人员。我们需要在每种可能的编程语言中使用正式的验证库和标准。
存储问题(Storage constraints)
构建在公共区块链上的大多数应用程序都需要某种存储解决方案。 (用户身份,财务信息等)。
但是,将信息存储在公共区块链数据库中意味着数据是:
1)网络中的每个完整节点的存储。
2)由于区块链数据库仅附加和不可变,所以无限期地存储。
因此,数据存储在分布式网络中要花费巨大的成本,每个完整的节点必须将越来越多的数据存储到无限远处。因此,对于构建在区块链上的任何现实应用,存储都是一个巨大的障碍。
解决方案:
有几个早期的项目正在使用各种策略将数据拆分成碎片,并以分布的方式将其存储在参与节点(即分布式存储)中。这里的基本前提是,不是每个节点都存储一切,而是有一组节点将数据相互分离或“分配”。几个项目的例子包括:
1)Swarm:Swarm是以太坊的点对点文件共享协议,可让您将应用程序代码和数据存储在连接到以太坊区块链的群集节点的主区块链中。您稍后可以在区块链上交换这些数据。
2)Storj:一种解决方案,首先对文件和数据进行分片,加密,然后分发到多个节点,从而使每个节点只存储一小部分数据:“分布式存储”。然后,Storj钱币(SCJX)用于支付存储并充当存储用户文件或数据的一部分的节点的激励。
3)IPFS:一种替代的p2p超媒体协议,提供高吞吐量,内容寻址的块存储模型,具有内容寻址超链接。从本质上讲,它允许文件以永久和分散的方式存储,同时提供历史版本的文件和删除重复。
4)Decent:Decent是一个分散的内容共享平台,允许用户上传和货币化/分享他们的工作(视频,音乐,电子书等),而不依赖于集中的第三方。用户可以通过跳过这些媒介,以更经济的方式访问内容,而承载内容的节点将获得奖励。
节点间的一致性问题(Unsustainable consensus mechanisms)
区块链是“不可靠的”。用户不必信任任何其他人的交易。不需要信任任何其他人为用户提供有吸引力的属性,例如自主性,审查阻力,真实性和无许可的创新。
随着时间的推移,一个不容易被攻击者破坏的无信任区块链被称为“共识协议”。共识协议对于比特币和其他区块链来说并不陌生。例如,1992年,Dwork和Naor创建了第一个“工作证明”系统之一,在这个系统中,人们可以生成计算支出的密码证明来获取资源,而不必依靠信任。这个系统被用来对付垃圾邮件。后来Adam Back在1997年创建了一个名为Hashcash的类似系统。然后在2003年,Vishnumurthy等人第一次使用工作证明来保证货币的安全,除非在这种情况下,令牌不是作为一种通用货币,而是用来维护点对点的文件交易系统。
五年后,Nakamoto拿出了工作证明作为一种保证价值代币比特币的机制。这个潜在的共识机制让比特币成为第一个被广泛采用的全球分散式交易分类账。
工作量证明(Proof-of-work consensus)
工作量证明是一个由解决难以解决但易于验证的问题组成的方案。矿工们利用他们的计算能力进行计算量大的计算,而比特币系统奖励那些提供新的比特币和交易费用的解决方案的矿工。矿工的计算能力越强,他们在决定共识时就越有“重量”。
工作量证明的共识允许比特币成为第一个真正广泛采用的分散数字货币形式。它解决了“双花”问题,不需要任何信任的第三方。然而,工作量证明并不完善,建立一个更可行的共识机制仍然需要大量的研究和发展。
什么是工作证明的问题?
1)专门的硬件有一个优势:
工作证明的一个缺点是使用专用硬件。 2013年,被称为“专用集成电路”(ASIC)的设备专门用于挖掘比特币,效率提高了10-50倍。从此以后,采用普通计算机的CPU和GPU进行挖掘已经变得完全无利可图,而唯一可以挖掘的方法就是您自己制造的ASIC或从ASIC制造商处购买的ASIC。这与区块链的“分散化”本质相去甚远,每个人都有机会为网络的安全做出贡献。
为了缓解这个问题,以太坊已经选择了使其PoW算法(Ethhash)顺序记忆难。这意味着算法的设计使得计算nonce需要大量的内存和带宽。大内存要求和高带宽要求使得即使是超高速计算机也难以同时发现多个随机数。这降低了集中化的风险,并为正在进行验证的节点创造了更加公平的竞争环境。
当然,这并不是说以后不会有以太坊的专用集成电路。专门的硬件仍然是PoW算法的巨大风险。
2)采矿池集中:
采矿池背不是每个用户自己挖掘,并有一个很小的机会获得块奖励,池然后发送给他们一个比例,一致的支出。采矿池的问题在于,由于网络具有更多的“权重”,大型采矿池的回报差异比单个用户的差异小。随着时间的推移,一些池开始控制网络的大部分,随着时间的推移,集中的池集继续获得更多的权力。例如,现在,前五个采矿池拥有近70%的hashrate。这是很可怕的。
3)能源浪费
矿工们花费大量的计算能力来运行解决工作证明算法的计算,但不幸的是,所有这些计算工作对社会都没有任何价值。根据Digiconomist的比特币能源消耗指数,比特币当前估计的年用电量为29.05TWh,占全球总电量的0.13%。为了给你一个真实的背景,比特币挖掘现在使用(浪费)比159个国家更多的电力。
随着像比特币这样的使用工作证明共识的公共区块链不断扩大,越来越多的能源将被浪费。如果公众区块链的目标是扩大到数百万用户和交易,那么不可持续的浪费精力和计算工作成本就不利于这一结果。
解决方案(Consensus Solutions)
1)使用proof-of-work
解决能源浪费问题的一种方法是使工作证明功能同时解决有用的问题。例如,想象一下,矿工们正在花费其计算能力来解决困难的AI算法,而不是解决工作证明所需的随机SHA256问题。
2)Proof-of-stake
解决采矿中心化问题的一种方法是完全取消采矿,并转向其他机制来统计每个节点的重量。这就是利益证明的目的所在。
而不是矿工投入计算能力,他们投入“股份”(即金钱)。正如Vitalik所指出的那样,“一个CPU单位,一个单位”代替“一个货币单位,一票”。
Proof-of-stake 不需要硬件,因此不受上面讨论的硬件集中化问题的影响。而且,由于矿工不需要花费大量的能源来计算工作证明算法的解决方案,因此证明利害关系本质上是更节能的。
但是,和其他技术一样,没有免费的午餐。证明算法有其自身的基本挑战。更具体地说,这些包括:
1)Nothing-at-Stake 问题:
通过证明Nothing-at-Stake,当链中存在分叉时,分叉是偶然的还是恶意的,任何验证交易的节点的最佳策略是在每个链上“挖掘”。他们可以做到这一点,因为他们没有花费物理计算的努力,只有他们的美元投票。这意味着无论赢得哪个连锁企业,矿工获得奖励都将获得奖励(即“没有任何危险”,以防止他们在每个连锁店进行采矿)。
2)远程攻击
当工作链上出现分叉时,一名矿工将在主链当前头后面开一个分叉。矿工进一步进入链条,越赶上主链越困难,因为它需要超过一半网络的计算能力才能做到这一点。但是,借助证明,矿工可以开始分成数千或数百万块,因为唯一需要的就是股份或金钱。这意味着矿工可以很容易地阻止数百万个区块进入一个新的链条,使用户很难知道哪个区块链是“正确的”区块链。
3)Cartel formation:
在一个受经济激励制约的分权制度下,一个非常现实的风险是形成协调一致的努力和寡头垄断。正如以太坊研究员Vlad Zamfir所说,“Cryptocurrency非常集中。矿业权力也是如此。巨头垄断竞争是许多“现实生活”市场的常态。少数相对富裕的验证人之间的协调比大量相对较差的验证人之间的协调容易得多。在我们的情况下,Cartel formation是完全可以预料的。
为了用一种新的共识机制如股权证明来有效地替代工作量证明,我们需要一种算法来解决“无所事事”的问题和远程攻击问题,而不会引入新的共谋风险。
像Tendermint和Ethereum这样的团队已经在解决这个问题方面取得了很大的进展。 Tendermint是第一个通过为区块链构建可行的股权证明共识引擎,将传统的BFT研究调整为区块链的人之一。但是,Tendermint有其自身的缺陷(另一篇文章的话题)。同样的,以太坊在实施证券化方面也取得了很大的进展,但实际情况是,今天在现网上没有任何东西在运行。
与工作证明不同的是,证据的证明是未经证实的,而且不太了解。了解各种设计的不同权衡需要进一步的研究和实验。因此,强烈需要在这些早期工作的基础上合作创建一个更高效,快速和安全的共识系统。
缺乏管理和标准(Lack of governance and standards)
毋庸置疑,公共的,分散的区块链没有中央权威或组织的决策。一方面,这给我们提供了我们所有人都梦寐以求的梦想 - 一个完全不信任,开放,无许可的系统 - 另一方面,协议没有安全的升级路径,没有人负责设置和维护标准。
虽然我们肯定希望尽量保持区块链技术的发展,但我们仍然需要开发者和生态系统中的其他组织共同商定新的标准,功能和升级。目前还不清楚如何在不导致至少一些集中化的情况下实现这一目标(例如“以太坊基金会”)。
例如,以太坊目前的现状是,通常有一两个开发者正在领导着特定的标准或功能。虽然现在这个工作,这个模型有缺陷。首先,效率不高 - 如果开发人员忙于工作,或忘记响应几天或几周,标准的进展就会停滞不前,无论标准对每个人都有多重要公共区块链。在没有明确领导的情况下制定标准是一个混乱的现象,并且不可能及时就问题达成共识,特别是在社区变得更大的时候。
另一种方法是让它完全开放和分散。但是,这已经被证明是无效的,导致了多年的崩溃。
需要有一个更好的方法。
Tezos是公共区块链的一个例子,其目的在于通过使用链上管理来创建协议内部升级的能力,尽管它仍然是一个非常有创意的概念,而且还没有实现或被证实。
总体而言,区块链治理是一个难以置信的棘手问题,在集中控制和分布式控制之间寻求平衡将是保持发展正确的关键。
工具不够完善(Inadequate tooling)
充足的工具对于开发人员的工作是必不可少的,特别是如果开发人员希望有效地开展工作。
毫无疑问,当前可用于区块链生态系统的开发人员工具是不可接受的。即使对于当今最经验丰富的开发人员来说,在区块链上开发功能协议或分散式应用也是一项艰巨的任务。
以下是我个人从工具生态系统中找不到的东西:
1)一个IDE,有良好的linters和所有必要的插件,用于有效的智能合约开发和区块链分析。
2)一个构建工具和编译器,有很好的文档记录和易于使用。
3)部署工具。
4)各种API和框架以及一些技术文档。
5)测试框架。以太坊像松露这样的一些工具是可以借鉴的,但是围绕测试框架的选择和实验是非常需要的。我已经看到太多的智能合约在移动数百万美元的时候完全没有经过测试。在任何情况下缺乏测试是不可接受的,但特别是在涉及如此巨大的资金时。例如,BAT代币销售智能合约没有测试套件,但这些合同被用来在24秒内收回3600万美元。任何有理性的人都知道,如果一个合同能把这么多钱转移,就会受到攻击。
6)调试工具。好家伙。调试固态代码就像在黑暗的隧道中用蒙上眼睛寻找金子。在我之前的工作中,我是在web开发中,并且能够使用调试器逐行执行代码,这确实是一个救命稻草。没有这样一个工具,甚至是远距离的工具,在使用Solidity进行开发的时候,都是令人难以置信的,并且是无用的。我们迫切需要使工具更容易分离和诊断问题。
7)日志工具。同上。
量子计算的威胁(Quantum computing threat)
量子计算机的问题是加密货币和密码学面临的迫在眉睫的威胁之一。
尽管今天的量子计算机在解决什么类型的问题方面仍然有限,但并不总是如此。可怕的事实是,大多数流行的公钥算法可以被一个足够大的量子计算机有效地分解。
当我们设计和构建区块链和密码系统时,我们需要思考如何使这些属性具有量子保护能力,这一点很重要。
Quantum-proof solutions
虽然我绝不是这方面的专家,但是我非常有限的理解是后量子密码学研究目前主要集中在六种不同的方法:基于格的密码术,多变量密码学,基于散列的密码学,基于代码的密码学,超驰椭圆曲线同源密码学,以及AES和SNOW 3G等对称密钥量子电阻系统。
无论最终的解决方案是什么,构建量子证明的密码解决方案都应该是最重要的。
总结
不幸的是,围绕区块链的大量思想和资金正被推向ICO。与此同时,一些研究人员和开发人员急于解决这些问题,但缺乏足够的资源。
不幸的是,许多人在财务上被激励来忽视这些问题 - 包括一些最有影响力的开发者和领导者。
未来一年的目标是继续:
1)提高对这些问题的认识。
2)倾注尽可能多的时间来为这些解决方案作出贡献。
3)帮助其他研究人员和开发人员也这样做。
无论现在的投资环境是否成为泡沫,我都坚信区块链会留在这里。作为开发者,我们只需要投入一些精力来消除阻碍主流使用的障碍。我们需要投资者寻求和资助这些努力。
本文由 Copernicus团队 冉小龙 翻译,转载无需授权