深度| 公链的挑战
毫无疑问,区块链技术具有巨大的潜力。
去中心化的交易所、预测市场和资产管理平台等都只是区块链开发人员正在探索的几个令人兴奋的应用而已。然而,区块链有几个主要的技术障碍,使得它如今仍不适合被广泛应用。
区块链中的一些技术障碍包括:
1、有限的可扩增性;
2、有限的隐私;
3、缺乏合约的形式化验证;
4、储存限制;
5、不可持续的共识机制;
6、缺乏治理和标准;
7、开发工具不足;
8、量子计算机威胁;
9、… 还有很多。
在这篇文章中,我将逐一阐述这些技术障碍,并分享对应的解决方案。
作为开发者和投资者,我们需要面对的现实情况是,去信任的系统要被大规模广泛应用,还需要很长一段时间。此外,我们需要把注意力从吸引人眼球的ICO新项目,转移到阻碍我们前进的真正的技术挑战上。
1、有限的可扩增性
目前,所有的公共区块链共识协议(public blockchain consensus protocols)都有一个限制:网络中每个完全参与的节点都必须处理所有交易。
由于区块链本质上是“去中心化的”,因此没有中央方负责保护和维护系统。相反,网络上的每个节点都负责通过处理所有交易和维护整个状态(State)的副本来保护系统。
虽然去中心化的共识机制为我们提供了我们都关心的核心优势--安全保障、政治中立、审查规避,等等。但它是以牺牲可扩增性为代价的,因为按照定义,去中心化限制了区块链在网络中单个完全参与的节点的极限下可处理的交易数量。
这里有两个实际影响:
第一、低吞吐量:区块链能处理的交易数量有限。
第二、延长交易时间:处理一个区块的交易速度很慢。例如,比特币区块要花10分钟,而以太坊区块大约要14秒。高峰时可能要更久。而使用Square或Visa等服务进行交易时几乎是即时完成,读者不妨将二者比较一下。
因此,公共区块链被迫在低吞吐量和高度中心化之间进行权衡。
换句话说,随着区块链容量变大,对网络中完全参与的节点所需的存储、带宽和计算能力的需求也随之增加。在某种程度上,它变得很难处理,以至于只有少数几个节点能够提供资源来处理区块,从而导致了集中化的风险。
关于可扩增性的解决方案
我们需要一种机制,来限制验证每笔交易的节点数量,同时又要确保每笔真实有效。这听起来可能很简单,但在技术上要做到却非常困难。
可扩增性是未来平台发展的一个巨大障碍。目前,生态系统中的各个开发团队正在研究一些拟议的解决方案。我对目前的一些解决办法做了简要的总结,如下所示
链下支付渠道(Off-chain payment channels)
小额支付渠道网络背后的理念是让大多数交易在链下进行。它本质上是一种机制,通过这种机制,通常会发生在链上的交互作用会在链下进行。区块链纯粹被用于结算层面,这有助于减轻底层区块链的负担。
这解决了我们前面讨论的吞吐量问题,因为现在区块链可以处理更多的交易量了。此外,支付渠道一旦开始进行处理,不用等到区块被确认,交易就会发生,微支付渠道解决了交易速度问题,消除了典型的延迟现象。
分片(Sharding)
分片背后的思路是,区块链的总体状态(State)被分成不同的“片”(Shard),状态的每个部分由网络中不同的节点存储和处理。每个片只平行处理状态的一小部分。区块链分片类似于传统数据库的分片,但它需要在去中心化的节点集合之间维护安全性和真实性,这是很有挑战性的。
链下计算(Off-chain computations)
这与状态通道(state channels)类似,但应用范围更广。其想法是以一种安全和可验证的方式进行链下计算(而不仅仅是代币转账),否则链上计算的成本会相当高昂。将计算和验证过程从链下转移到单独的协议中,可以获得较高的交易吞吐量。这方面的一个例子是TrueBit。
有向无环图(DAGs)
DAG是有向无环图(Directed Acyclic Graph)的简称,是一种具有顶点和边的图形数据结构。(顶点是图上的一个点,边是从一个顶点到另一个顶点的路径。) DAG保证了从一个顶点开始,沿着有序的边,最终无法循环再次回到该顶点(即没有循环)。这样我们就可以按拓扑排序得到一系列节点(或顶点)。
例如,基于DAG的协议(例如 IOTA’s Tangle)的前提是完全抛弃整体线性区块链,而使用DAG数据结构来维护系统的状态。为了保护网络安全,这些协议依赖于它们自己的新方法,不用每个节点都以线性的方式来处理所有交易。
再举个例子,另一种基于DAG的方法,SPECTRE protocol,使用区块的有向无环图,并行地挖掘DAG区块,以允许更多的吞吐量和更多的交易次数。
目前这些协议还处于起步阶段,还没有得到大规模的实施和使用。坦率地说,它们有一些根本的尚未被解决的局限/弱点,因此也无法成为可行的可扩增性解决方案。
2.有限的隐私
考虑到区块链上的交易并不直接关联到我们的身份,它们似乎更加私密。世界上的任何人都可以匿名创建一个新钱包,并使用它进行交易。
然而,一切并没有那么简单。
一方面,这一技术的巨大前景无疑是假名(pseudonymity):交易记录并存储在一个公开的分布式账本中,但它们与一个仅由数字和字母组成的帐户地址相连。由于这个地址不关联任何真实身份,交易的发起人似乎无从查起。
然而,这种完全安全的表象是有误导性的。诚然,只要假名不与个人关联,我们就可以保护自己的隐私,但一旦有人进行关联,秘密就会揭晓。类似的一个例子是,执法机构承认他们能够在调查期间识别特定的比特币用户,从而对他们进行反匿名,打破了区块链交易完全不可见的假设。
这是如何完成的?
商家网站上的web trackers和cookies使得交易信息很容易在网上泄露,任何人,包括政府、执法机构和恶意用户都可以很容易地利用这些信息。
此外,用户在以太坊这样的区块链平台上与智能合约进行交互,这些合约处理的不仅仅是简单的价值转移。在以太坊区块链平台上,所有这些智能合约的细节都是公开的,包括发送方和接收方、交易数据本身、执行的代码和存储在合约中的状态。
许多公司都不会将重要的商业数据上传到区块链中,因为黑客、竞争对手或其他未经授权的各方可以查看这些信息(电子医疗记录、身份识别数据、凭据管理、 财务文件等)。对于关心隐私和个人主权的个人、组织和行业来说,隐私仍然是一个根本障碍。
隐私解决方案
以下是几个不同开发团队一直在努力实现的解决方案。
Elliptic Curve Diffie-Hellman-Merkle (ECDHM)地址
通过Diffie-Hellman密钥交换,一个可以用于在公共网络中私下交换消息的双方共享的秘密得以建立,发送方和接收方可以公开共享ECDHM地址,然后利用该秘密导出匿名比特币地址。这些比特币地址只被那些拥有这个秘密的人知道。唯一公开可见的是可重复使用的ECDHM地址。因此,用户不必担心交易会被追踪。
概念图,它通过使用颜色来说明密钥交换的一般概念
(来源: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
混合器(Mixer)
混合器背后的想法是,一群人可以将他们的支付混到一个池中,在私人分布式账本中记录债务情况。然后,随着池中的资金被花掉,每一笔支付的来源会变得模糊。任何观察区块链的人都可以看到支付的金额以及收款人,但理论上,具体授权支付的人是无法追踪的。混合器服务的一个例子是CoinJoin。
资料来源:https:/en.wikipara.org/wiki/CoinJoin
不幸的是,混合器已被证实不是一个可靠的解决方案。例如,研究人员能够很容易地识别CoinJoin交易,并证明只要花费32,000美元,攻击者识别交易匿名性的成功率就能达到90%。此外,研究人员还证明,混合器在应对应对女巫攻击(Sybil attacks)和拒绝服务攻击(Denial-of-Service attacks)上,能力有限。
更令人不安的是,混合器所谓的私人分布式账本需要由某个中央实体管理,这意味着它需要一个可信的第三方来“混合”交易。
门罗币(Menoro)
另一种保护隐私的方法是创建默认私有的加密货币,比如门罗币不是比特币的分叉,它基于一种不同的协议--CryptoNote。门罗币提供的主要功能是另一种环签名(ring signature)方案。
环签名是一种群签名,群里的每个签名者都有一对私公钥对。传统的密码签名是用来证明交易是由单个签名者使用私钥“批准”的,而群签名则在不公开任何人身份的情况下,证明交易是群里某个签名者批准的。
零知识证明(Zero-knowledge proofs)
零知识证明是指,在不直接透露相关知识的情况下,证明者向验证者证实他们知道一些秘密知识。换句话说,证明者通过秘密输入,无需对验证者透漏任何信息。零知识证明提供了可以用来建立隐私保护机制的基本的原语。包括:质询/响应比赛(Challenge / response games)、zkSNARKs、zkSNARKs + Zcash、zkSNARKs+Ethereum、zkSTARKs
等。
Oracles
在区块链空间中,oracle负责在智能合约和外部数据源之间传递信息。它本质上充当链上智能合约和链下外部数据源之间的数据载体。因此,保持信息隐私的一种方法就是使用oracles从外部数据源中获取私密信息。
可信执行环境(Trusted Execution Environments)
可信执行环境(TEE)是主处理器的一个安全区域。它保证加载的代码和数据在保密和完整性方面能受到保护。TEE可与面向用户的操作系统并行运行,但其比后者更加私密和安全。
资料来源:https://www.slideshare.net/JavierGonzlez49/operating-system-support-for-runtime-security-with-a-trusted-execution-environment-phd-thesis
对TEE初期的的研究和开发仍在进行中,从而确定如何使用这些技术来保护区块链上的隐私。我个人非常高兴有更多的安全专家来解决这些问题。我们确实需要更多的专家来研究这个问题。
3.缺乏合约的形式化验证
对智能合约的形式化验证(formally verify)仍然是一个尚未解决的大问题。数学中的形式化证明(formal proof)是指由计算机使用基本数学公理和原始推理规则进行检验的数学证明。
与软件程序有关的形式化验证是一种能判断程序是否按照规范运行的方法。我们首先在程序中声明一个不变量,然后我们需要对此声明予以证明。
那么,为什么对智能合约中编码的程序进行形式化验证很重要呢?
首先,智能合约是不可变的,这意味着一旦将它们部署到主网络上,我们就无法对它们进行修改或升级,我们在现实世界的应用中部署和使用这些合约前,需要保证TEE是可用的。此外,智能合约是开放的,任何人都可以查看存储在智能合约中的东西;任何人也可以调用智能合约的公开方法。虽然这很开放,也很透明,但它也吸引了黑客的攻击。
事实是,不管你采取了多少预防措施,编写没有bug的可靠的智能合约是很困难的。此外,例如,由于EVM指令的设计方式,在以太坊平台上验证EVM代码是非常困难的。这使得为以太坊构建形式化验证解决方案变得更加困难。无论如何,形式化验证是一种减少bug和攻击的有力方法。相比传统方法(例如测试、同行审查等),它在正确性方面更有保证,我们迫切需要一些更好的解决方案。
形式化验证解决方案
我希望我有更多公开可用的解决方案,能在这一节中炫耀,但不幸的是,方法不多。以太坊基金会的形式化验证工程师YuichiHirai完成了一些非常早期的方案,在验证几个智能合约上他得出了一些初期的成果,其中包括一份小的“契约”合同。虽然很小,但这是我见过的,在定理证明环境中分析过的第一份“真实”的合约。
还有一些像Tezos这样的团队,它们完全放弃使用Solidity作为语言,也不将EVM用作VM,而是构建自己的智能合约编程语言和VM,以便于形式化验证。
无论是对EVM进行全面改造,使形式验证变得更容易,还是构建一种天生更容易验证的全新语言,我们都需要投入更多的努力。我们需要更多的研究人员和开发人员来研究形式化验证。我们可能需要各种编程语言的形式化验证库和标准。
4.存储限制
公共区块链上的大多数应用都需要解决存储问题。(用户身份、财务信息等)。
但是,在公共区块链数据库中存储信息意味着数据是:
1、由网络中的每个完整节点存储着。
2、被无限期存储,因为区块链数据库是只能增加,并不可改变的。
因此,数据存储给去中心化的网络带来了巨大的代价,每个节点都必须储存越来越多的数据。因此,对于任何构建在区块链上的实际应用来说,存储仍然是一个巨大的障碍。
存储解决方案
有几个早期项目正在使用不同策略将数据分割成分片,并以去中心化的方式将数据储存在参与的节点中(即分布式存储)。基本前提是,并非由每个节点存储所有东西,而是由一组节点集合拆分或“分布" 数据。其中一些项目包括:Swarm、Storj、IPFs、Decent等。
5.不可持续的共识机制
区块链是“去信任的”。用户不必在交易中信任任何人。这能用户拥有一些吸引人的特性,比如自治、抗审查、真实性和无权限的创新。这种用来保证去信任区块链不易被攻击者破坏的机制被称为“共识协议”。
工作量证明(proof-of-work)共识
工作量证明可以用来解决一些难以解决但易于验证的难题。矿工使用自己的算力进行成本高昂的计算,而比特币系统则向给出答案的矿工奖励新比特币和交易费用。矿工拥有的计算能力越多,他们在决定共识上的“贡献”就越大。
工作量证明的共识使得比特币成为第一种真正被广泛采用的去中心化的数字货币。它无需可信的第三方就能解决“双重支出问题”。然而,工作量证明并不完美,要建立一个更可行的共识机制,仍需进行大量的研究和开发。
工作量证明有什么问题?
1.专用硬件才有优势
工作量证明的一个缺点是使用专门硬件。2013年,一种名为“应用专用集成电路”(ASICs)的设备专门被设计来挖比特币,它将效率提高了10至50倍。从那以后,使用普通计算机CPU和GPU进行挖矿已经变得完全无利可图,而挖矿的唯一方法就是使用自己制造的ASIC或从ASIC制造商那里购入。每个人都应该有机会为网络的安全做出贡献,而ASIC的出现则违背了去中心化的本意。
为了缓解这一问题,以太坊选择使其PoW算法(Ethhash)在顺序上更难以记忆。这削弱了中心化的风险,并为正在进行验证的节点创造了更公平的竞争环境。当然,这并不是说将来不会有专门为以太坊设计的ASIC。对于PoW算法来说,专用硬件仍是一个巨大的风险。
2.矿池集中化
用户单独进行挖矿时,获得区块奖励的机会是很小的,取而代之,他们为矿池挖矿,相应地,矿池给按比例给矿工回报。矿池的问题是,由于它们在网络中有更多的“权重”,所以大矿池回报的方差比单个用户的要低。随着时间的推移,一些矿池开始控制大部分网络,中心化的矿池随着时间推移继续获得更多的算力。例如,目前排名前五的矿池拥有近70%的全网算力。这是很可怕的。
3.能源浪费
矿工们花费大量的计算能力来运行PoW的计算,但不幸的是,所有这些计算对社会没有价值。根据 Digiconomist’s Bitcoin Energy Consumption Index ,目前比特币采矿现在用的(浪费的)电力比159个国家用的还多。
随着使用PoW共识的如比特币等公共区块链不断扩大,越来越多的能源将被浪费。
共识解决方案
有用的PoW
解决能源浪费的一种方法是用PoW函数来解决一些有用的问题。例如,让矿工们用自己的算力来解决困难的人工智能算法,而不是解决PoW所要求的随机的SHA256问题。
权益证明(Proof-of-stake,PoS)
解决挖矿中心化的一种方法是完全取消挖矿,转而采用其他机制来计算共识中每个节点的贡献。这就是PoS的目的所在。
矿工们不再投入算力,而是投入“权益”。正如Vitalik所指出的那样,它不再是“一单位算力一票”,而是“一 枚币一票”。
PoS消除了对硬件的需求,因此不受上述硬件中心化问题的影响。此外,由于矿工不需要花费大量的能源来计算PoW问题,因此,PoS本质上是更节能的。
然而,就像任何技术一样,天下没有免费的午餐。PoS有其自身的基本挑战。更具体而言,这些挑战包括:无权益关系问题、远程攻击、 卡特尔的形成等。
为了用一种新的可行的共识机制如PoS来代替PoW,我们需要一种算法来解决无权益关系问题和远程攻击问题,而不引入新的共谋风险。
像Tendermint和以太坊这样的团队在解决这个问题上取得了很大的进步。然而,Tendermint有它自己的缺点。类似地,以太坊在实现PoS方面也取得了很大的进步,但现实情况是,在今天的实时网络上,没有任何东西在运行。
与PoW不同的是,PoS未经检验,也很难了解。要了解不同设计做出的不同权衡,仍需进一步的研究和实验。因此,在这些早期工作的基础上,我们非常需要协作创建一个更高效、快速和安全的共识体系。
6.缺乏治理和标准
不言而喻,一个公共的、去中心化的区块链中,并不存在一个中央权威机构或组织来做决策。一方面,这给了一个我们梦寐以求的完全去信任的、开放的和无权限的系统 ;另一方面,协议实际上没有安全的升级路径,也没有人负责制定和维护标准。
例如,以太坊当前的特定标准或特性通常是由一两个开发人员主导的。虽然这个模式目前是可行的,但是它也存在缺陷。首先,它并不高效。如果领导这项工作的开发人员忙碌起来,或者有几天或几周忘了响应,标准的推进就会停滞不前,无论这个标准对参与构建公共区块链上的人来说有多重要 。在没有明确领导的情况下制定标准,将会制造混乱,这会使人们很难及时对问题上达成共识,特别是在社区变得更大的时候,这种情况会更严重。
另一种方法是让区块链完全开放和去中心化。然而,这种做法缺乏效率,将带来长久的危害。
Tezos旨在利用链上治理从协议内部创建升级协议的能力,尽管它仍然是一个并未存在或被证明的想法。我们需要找到更好的方法。
总之,区块链治理是一个非常棘手的问题,在中心化和分布式控制之间找到平衡,将是保持正确方向的关键所在。
7.开发工具不足
如果开发人员想要高效地完成他们的工作,充足的工具对于他们来说至关重要。使用糟糕的工具后果不堪设想。
目前用于区块链生态系统的开发工具显然无法让人满意。即使是当下最有经验的开发人员,在区块链上开发一份功能协议或一个去中心化的应用程序也仍是一项艰巨的任务。
作为一名Solidity和区块链的开发人员,我个人发现生态系统中缺乏的工具包括:能够检查代码错误,且集合了开发智能合约和区块链分析所需插件的IDE、有完整文档且易于使用的构建工具和编译程序、一个还过得去的的部署工具、持续更新的各种API和框架技术文档、测试框架、调试工具、 日志工具、 安全审计工具、 区块浏览器和分析工具。
8.量子计算威胁
量子计算机是加密货币和密码学面临的威胁之一。
虽然如今量子计算机能解决的问题类型仍然有限,但这种情况不会一直这样持续下去。可怕的是,目前最流行的公钥算法能被足够大的量子计算机有效破解。
当我们设计和构建区块链和及其底层的加密算法时,我们需要考虑如何使这些特性能抵抗量子计算机的攻击,这相当重要。
抗量子解决方案
虽然我并不是这方面的专家,但在我有限的理解范围内,后量子密码学的研究目前集中在六种不同的方法上: Lattice-based cryptography, Multivariate cryptography, Hash-based cryptography, Code-based cryptography, Supersingular elliptic curve isogeny cryptography, 和 Symmetric key quantum resistance systems(如 AES 和 SNOW 3G)。
不管最终的解决方案是什么,探寻一种抗量子的密码解决方案都应该是重中之重。
其它各种挑战
· 我们需要更强大的解决方案,允许跨链通信,使得我们能在多个链(如比特币、以太币、莱特币等)之间进行无缝通信和交易。
· 为了顶层的应用程序,我们需要在区块链工具中内置更好的密钥管理系统。
· 我们需要更有效的签名方案和其他密码系统,使低运算资源的设备可以在不牺牲安全性的情况下处理这些系统。
· …还有更多。
@hashaki, 我好欣赏你滴~~~
Coins mentioned in post:
Hi ~ I'm a robot of yihdashu05630.I just upvoted your post!
Please come visit me here: https://steemit.com/@yihdashu05630
Thanks so much~!!