侵权投诉
订阅
纠错
加入自媒体

公有链发展未来还有哪些挑战?

2018-09-20 09:21
来源: 巴比特

预言者(Oracles)

在区块链空中,Oracles可以在智能合约和外部数据源之间传递信息,这就相当于一个数据载体。因此,保持信息隐私性的一种方法就是使用Oracles从外部数据源获取私有信息。

可信执行环境(Trusted Execution Environments)

可信环境(TEE)是主处理器的一个安全区域。它保证内部加载的代码和数据的机密性和完整性。这个受信任的环境与面向用户的操作系统并行运行,但其目的是要比面向用户的操作系统更加私有和安全。

早期的研究和开发正在进行中,以确定如何利用它们来实现区块链上的隐私。我个人非常高兴有如此多的人正在解决这些问题。当然,我们也希望更多专家能够参与进来。

3.缺乏正式合同验证(Lack of formal contract verification)

对智能合约的核查仍然是一个尚未解决的巨大问题。首先,在谈“正式验证”(formally verify)之前,让我们先来理解一下“正式证明”(formal proof)是什么。数学中的“正式证明”是指由计算机使用数学的基本公理和原始推理规则,来进行检验的数学证明。

更广泛地说,与软件程序有关的正式验证,是确定程序是否按照规范运行的方法。通常,这是用一种具体的规范语言来完成的,用于描述函数的输入和输出应该如何关联。换句话说,我们首先声明一个关于程序的不变量,然后我们必须证明这个陈述。

比如说Isabelle就是一个证明助手,允许用正式语言表达数学公式,并提供了在逻辑微积分中证明这些公式的工具。另一种规范语言是Coq,它是一种编写数学定义、可执行算法和定理的形式语言。

那么,为什么要对智能合约中的程序进行正式验证呢?

首先,智能合约是不可变的,这意味着一旦它们被放到以太坊主网,就不能再进行更新或修复。因此,我们需要事先确保所有程序运行正常。此外,智能合约和里面的存储内容是公开的,任何人都可以查看;任何人也可以调用智能合约的公共算法。虽然这提供了公开性和透明度,但它也使智能合同成为黑客的目标。

事实上,无论您采取了多少预防措施,都很难使智能合约完美无缺。以以太坊为例,由于使用到EVM指令,使得验证EVM代码极其困难。这使得为以太坊构建正式的验证解决方案变得更加困难。无论如何,正式验证是减少错误和攻击的有力方法。它确保了比传统方法(如测试、同行评审等)更高的更高的安全性。我们迫切需要更好的解决方案。

正式核查的解决方案

目前解决方案很少,我仅知道一个非常早期的例子,由以太坊基金会的正式验证工程师Yuichi Hirai完成的。他能够核实几个智能合约,包括一份小的“契约”,产生一些结果。虽然很小,但这是我再这种定理证明环境中的第一个“真实”契约。

正如 Yoichi自己说的…

“验证结果远非完美,我仍能发现很多问题。我之所以将其公之于众,是因为这个项目很好地说明了,使用机器辅助逻辑推理,来验证智能合约所需的工作量(和详细程度)。在这一点上,如果执行一份10万美元以上的智能合约,并且能控制时间表,我会考虑从事这种研发(另一种选择是先尝试价值较小的合同)。”

还有一些像Tezos这样的团队,它们完全放弃使用Solity语言,放弃使用EVM作为VM,而是构建自己的智能合约编程语言和VM,以便于正式验证。

无论是对EVM进行全面改革,使正式验证变得更容易,还是构建一种天生更容易验证的全新语言,我们都需要在这项工作中投入更多的工作。我们需要更多的研究人员参与。我们需要各种可能的编程语言的正式验证库和标准。

4.存储受限(Storage constraints)

建在公链上的大多数应用程序,都需要某种存储解决方案。(用户身份、财务信息等)。

但是,在公链数据库中存储信息,意味着数据是:

1)由网络中的每个全节点存储。 2)无限期存储,因为区块链数据库是只能增加、不可撤销的。

因此,数据存储给分布式网络带来了巨大的负荷,每个全节点都必须将越来越多的数据存储起来。因此,对于去中心化应用程序来说,存储仍然是一个很大的问题。

存储解决方案

有几个项目正在试图将数据进行分片,并以分布式方式在节点(即分布式存储)中存储。这里的基本前提是,不是每个节点存储所有东西,而是有一组节点在它们之间拆分或“分发”数据。一些项目的例子包括:

1.Swarm:Swarm是一种点对点文件共享协议,它允许用户将代码和数据存储在Swarm节点中,这些节点连接到以太坊上。之后可以在区块链上对此数据进行交换。

2.Storj: 其中的文件和数据被分割、加密,分发到多个节点,这样每个节点只存储一小部分数据:因此,形成“分布式存储”。然后,Storj Coin(SCJX)用于支付存储费用,并对存储用户部分文件 / 数据的节点进行激励。

3.IPFS: 另一种P2P超媒体协议,它提供高吞吐量、内容地址块存储模型和内容地址超链接。本质上,它允许文件的分布式存储,同时提供文件历史信息,并可以删除重复文件。

4.Decent:Decent是一个去中心化的内容共享平台,允许用户上传、分享他们的视频、音乐、电子书等,去除对第三方的依赖。用户可以跳过这些第三方,来以一种更实惠的方式访问内容,相应地,承载这些内容的节点则会获得奖励。

5.不可持续的共识机制

区块链是“无需信任的”。用户不必在交易中信任任何人,不需要任何第三方提供信任背书。

共识机制(consensus protocol)可以协调节点共同工作,使系统免受攻击。共识机制不是比特币和区块链首创的。在1992年,Dwork和Naor创建了“工作证明机制”(POW)。在这种系统中,用户可以在不需要信任的情况下,生成算力证明,并获得资源。这个系统本来是用来对付垃圾邮件的。AdamBack后来在1997年创建了一个类似的系统,名为Hashcash。然后在2003年,Vishnumurthy等人第一次使用POW来确保货币的安全,但这时,token不是作为一种通用货币,而是用来维护文件交易系统。

五年后,中本聪(Nakamoto)拿工作证明机制来确保比特币安全。这一共识机制使比特币成为第一个全球通用的去中心化分类账。

工作证明机制

工作证明机制中,节点需要去解决一些计算困难、验证简单的问题。矿工要进行算力竞争来获得奖励,但是这种计算的成本很高。矿工拥有的算力越多,他们在机制中的“权重”就越大,获得的奖励也就越多。

工作证明使比特币成为第一种真正被广泛接受的去中心化数字货币。再不需要任何信任第三方的情况下,它解决了“双重支出问题”(double-spend problem)。然而,工作证明并不完美,要建立一个更可行的共识机制,仍然需要大量的研究和开发。

工作证明存在哪些问题?

1.硬件越专业,越有优势

工作证明的一个缺点是需要专业的挖矿硬件。2013年,被称为“专用集成电路”(ASIC)的设备被设计成专门用于比特币的矿机,因为它可以提高10至50倍算力。从那以后,使用普通计算机的CPU和GPU进行挖矿已经没有优势了。挖矿的唯一方法就是自己制造ASIC,或从ASIC制造商那里购买。这与区块链“去中心化”的本意背道而驰,因为每个人挖矿的成功几率变得不平等。

为了缓解这一问题,以太坊选择了将其PoW算法(Ethhash)顺序记忆困难。这意味着该算法是经过设计的,因此计算当前值需要大量的内存和带宽。大内存需求和高带宽要求,使得即使是超级快的计算机也很难同时发现多个非连续变量。这降低了集中化的风险,并为节点创造了更公平的竞争环境。

当然,这并不是说在未来不会有一个以太坊的ASIC。对于PoW算法来说,专用硬件仍然是一个巨大的风险。

2.矿池集中化

矿池背后的概念是,不再是单个矿工挖掘单个区块,而是挖掘一个池。然后,这个池就会给他们一个相称的、一致的奖励。矿池的问题是,由于它们在网络中有更多的“权重”,所以大矿池的回报比单个用户的差异要小。随着时间的推移,一些池开始控制大部分网络,集中的一组池也将继续获得更多的权重。例如,目前排名前五的矿池拥有近70%的总哈希算力。这是很可怕的。

3.能源浪费

矿工们花费大量的算力,但算力本身没有实际价值。根据Digiconomist的比特币能源消耗指数,比特币目前的年用电量大约为29.05TWh,占全球总用电量的0.13%。也就是说,比特币挖矿需要的电力,比159个国家使用的电力还要多。

随着使用工作证明的比特币等公链不断增加,越来越多的能源将被浪费。如果目标是让公链扩大到数百万用户和交易,那么能源浪费和计算成本将会是很大的阻碍。

共识机制解决方案

有用的工作证明

解决能源浪费问题,有一种方法是使算力变得有用。例如,矿工们正在花费他们的算力来解决困难的人工智能算法,而不是解决工作证明所要求的随机SHA 256问题。

权益证明机制(Proof-of-stake)

解决挖矿中心化问题,另一种方法是完全取消挖矿,转而采用其他机制来计算共识机制中每个节点的权重。这就是权益证明机制的目的所在。

他们没有投入计算能力,而是投入了金钱。正如Vitalik所指出的那样,现在起到关键作用的,不再是CPU功率而是一张“选票”。

权益证明机制去除了对硬件的需求,因此不受上面提到的硬件中心化问题的影响。此外,由于矿工不需要花费大量算力,因此,权益证明本质上是更节能的。

然而,世上没有免费的午餐。权益证明有其自身的挑战。更具体而言,这些挑战包括:

1)Nothing-at-Stake problem:权益证明机制中,当公链出现分叉,无论分叉是偶然的还是恶意的,节点最好的选择是在每条链上同时挖矿。因为节点挖矿无需花费算力,只需要投票就行了。这也就意味着,最终无论哪条链赢了,矿工都可以获得回报。(即:“没什么风险”问题要防止矿工在分叉链上挖矿。)

2)远程攻击(Long-range attacks):当POW公链出现分叉时,矿工会在分叉链区块头之后生成一些区块。矿工在分叉链上生成的区块的越多,就越难赶上主链。因为它需要集合网络一半以上的算力,才能对主链构成威胁。然而,在权益证明中,参与者可以尝试获取过去参与者的密钥,然后在一个新的链上生成数百万个块,这使得用户很难知道哪个区块链是“正确的”。

3)Cartel formation:在一个由经济激励的去中心化系统中,真正的风险是寡头垄断。正如弗拉德·赞菲尔(Vlad Zamfir)所指出的,“加密货币非常中心化。挖矿业也是如此。寡头垄断竞争是许多“现实生活”市场的常态。少数相对富裕的节点之间的协作,要比大量相对贫穷的节点之间的协作容易得多。在这种背景下,Cartel formation完全在意料之中。

用权益证明机制来代替工作证明机制,我们需要解决Nothing-at-Stake problem和远程攻击问题,并且不引入新的风险。

在这些问题方面,像Tendermint和以太坊这样的团队已经取得了很大的进步。Tendermint是第一批将传统BFT研究应用于区块链的公司之一,它为区块链建立了一个可行的权益证明机制引擎。然而,Tendermint有它自己的缺点(另一个帖子的话题)。类似地,以太坊在实现权益证明方面也取得了很大的进步,但现实情况是,这对现实使用场景用处不大。

与工作证明不同的是,权益证明是未经证实的,理解的人也更少。要了解不同设计背后理念,则需要进一步的研究和实验。因此,很有必要在这些早期工作的基础上,创建一个更高效、快速、安全的共识机制。

6.缺乏治理和参考标准

不言而喻,一个公共的、去中心化的区块链是没有权利中心的。一方面,这为我们提供了一个完全无需信任的、开放的和无权限的系统;另一方面,协议没有安全的升级途径,也没有制定和维护标准。

虽然我们在进行区块链技术研发时,会尽可能实现去中心化,但我们仍然需要一些开发人员和其他相关人士的参与,来商定新的标准、特性,并对系统进行升级。目前还不清楚具体如何实施,特别是要保证不会出现任何程度的集中化问题。

例如,以太坊目前的现状是,通常有一两个开发人员在特定标准或特性方面起主导作用。虽然目前来看,这是有用的,但这种模式也有缺陷。首先,效率低:如果领导这项工作的开发人员忙碌起来,或者忘记在几天或几周内做出反应,那么进展就会停滞。在没有权威中心的环境中制定标准很困难,而且人们也无法迅速达成共识,特别是随着社区的发展,这种难度会越来越大。

另一种方法是让它完全开放和去中心化。然而,这已经证明是无效的。

需要有更好的方法。

Tezos是一个公链的例子,它的目标是利用链上治理,从协议内部创建升级协议的能力。这只是一个想法,并没有被实践或被证明。

总之,区块链治理是一个非常棘手的问题。在中心与去中心之间找到平衡,将是以后开发需要思考的关键问题。

7.工具不足

工具能使开发人员的工作更加高效,所以非常重要。

目前用于区块链开发的工具是很不够的。在区块链上开发功能协议或分布式应用程序是一项艰巨的任务(即使对最有经验的开发人员来说,也是如此)。

作为一个区块链的开发人员,下面是我个人觉得很重要的工具:

1.一个指针良好、具有所有必要插件的IDE,用于智能合约开发和区块链分析。

2.一种编译工具和编译器。

3.一个优质的配置工具。

4.技术文档:实际存在的,或对现在各种API和框架仍适用的。

5.精致的测试框架。迫切需要更多的测试的选项和实验。我见过太多的智能合约在未经检验的情况下,就投入使用。不管怎么样,必要的检测是不能少的,特别是在涉及大量资金的情况下。

6.调试工具。对代码进行调试,就像蒙着眼睛在漆黑的隧道里找金子。我之前是做web开发的,能用调试工具逐行浏览代码,大大减少了我的工作量。如果没有这种调试工具(或者类似的工具),调试那么大的工作量确实让人沮丧。我们迫切需要工具,来简化隔离和诊断问题。

7.测井工具(Logging tools)。和上面一样。

8.安全审计。这是个大问题。我听说过以太坊有一个著名的安全审计服务,Open Zepplin。尽管他们确实在这方面做了很多工作,但区块链是一个可以通过智能合约筹集数十亿美元资金的行业,其需要的不止是一个单独的初创公司。公司和工程师需要创建更先进的工具和服务,需要更多的安全专家来加入。之前,大家没有怎么关注智能合约的安全问题,只有当两个Parity攻击或者说DAO攻击之后,人们才关注了一些。之后,大家吧原因归结到智能合约开发者身上,甚至有的人直接怪罪以太坊核心团队。我觉得这是不公平的。开发人员没有责任去对其代码进行安全审核。这就像叫斯蒂芬·库里(Stephen Curry)去做自己的会计一样。不该是这个逻辑。我们需要安全工程师和研究人员的专业知识。我们需要投资者把注意力放到他们的资金上,并使他们的投资能够促进智能合约和区块链的安全性能的发展。

9.区块探索者和分析者。对于以太坊,有一个Etherscan。对于比特币,我们有像Blockchain.info、BlockExplorer或BlockcyPHER这样的探索者。这些都是社区的巨大努力。事实上,我也经常使用Etherscan。但是深究起来,这些远远不够。有各种各样有趣的数据显示,我们可以、也应该对公链进行更多分析。

8.量子计算威胁(Quantum computing threat)

数字货币和密码学面临的威胁之一是量子计算机的问题。

虽然今天的量子计算机仍然有些局限,但并不总是这样。可怕的事实是,最流行的公钥算法可以被足够大的量子计算机攻击。

重要的是,当我们设计和构建区块链以及它背后的密码学时,我们需要考虑如何使这些属性成为量子证明(quantum-proof)。

量子证明解决方案

我并不是这方面的专家,我知道的是,目前,后量子密码学的研究集中在六种方法上:基于格的密码学(Lattice-based)、多元密码学(Multivariate cryptography)、基于哈希的密码学(Hash-based cryptography)、基于密码的密码学(Code-based cryptography)、超椭圆曲线等密码学(Supersingular elliptic curve isogeny cryptography)和对称密钥量子电阻系统(Symmetric key quantum resistance systems)(如AES和斯诺3G)。

不管最后的解决方案是什么,构建量子验证的密码解决方案都是最重要的。

需要牢记的各种挑战

1.我们需要更强大的解决方案,来实现多个链(如比特币、以太坊、莱特币等)之间的通讯及交易。

2.我们需要在区块链内建立更好的密钥管理系统,来支持顶层的应用程序。

3.我们需要更有效的签名方案和其他密码系统,使得低配设备可以安全高效的实现这些操作。

4.其他。

总结

目前的情况让我很担忧,大家的注意力和资金都投入到了ICO。而研发技术的科研人员们,却经常面临资金短缺的问题。

不幸的是,许多人在利益驱使下,会有意忽视当前的研发困境 —— 这其中不乏一些有影响力的科研人员和行业意见领袖。

我未来一年的目标是继续:

1)提高对这些问题的认识。 2)花大量心力寻找解决方案。 3)激励其他开发者和研发人员加入我的行列。

不管当前的投资环境是否是泡沫,我都坚信区块链的未来会很光明。我们帮助研发人员度过难关,就相当于帮助区块链走出眼前的困境。我们希望投资者寻求并资助这些真正有实力的科研项目,帮助这些技术团队走出困境。

<上一页  1  2  3  
声明: 本文系OFweek根据授权转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

物联网 猎头职位 更多
扫码关注公众号
OFweek物联网
获取更多精彩内容
文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号