“毫无疑问区块链技术有巨大的潜力。在这篇文章里,我会一一阐述公有链存在的本质挑战,分享一些可行的解决方案。”
在 2017 年里,人们高昂的热情为 ICO 募集了数百亿资金,大大提升了加密货币市场的规模。
然而,另一面却没有得到足够重视:区块链存在一些技术壁垒(technical barriers),这导致难以有效地将它应用到主流人群里。这些技术壁垒包括:
1、可扩展性的限制
2、隐私保护的限制
3、缺乏合约的形式化验证
4、存储限制
5、难以证明的共识机制
6、缺乏治理和标准
7、缺乏开发工具
8、量子计算机的威胁
…
“
一、 可扩展性的限制
”
当前公有链的共识协议都存在这样的限制:网络中的全节点参与者需要处理全部交易。
为什么会这样?因为区块链本质上是「去中心化」——这意味着不存在一个中心团体来保护和维持系统。取而代之,网络的每个节点都会处理每笔交易并维持全状态副本,通过这种方式来保护系统。
去中心化共识机制的关键优势是安全保证、政治中立和抵抗审查等。然而,这是以扩展性为代价换来的,因为去中心化限制了区块链里全节点可处理交易的数量。
实质上这带来了两个影响。
低吞吐量:区块链可处理交易的数量十分有限
缓慢的交易速度:处理一个区块的时间很长。比如比特币的区块时间是 10 分钟,以太坊的区块时间大约是 14 秒。在高峰期里花费的时间甚至更长。相较之下,Square 和 Visa 等服务的交易是即时确认的。
因此,公有链需要在低交易吞吐量和高中心化之间做一个权衡。
换句话说,随着区块链大小的增加,网络里全节点所需的存储、带宽和计算能力也会增加。当到达某个时刻,就只有少数节点才能提供足够资源来处理区块——这会带来中心化风险。
在那时,我们会回到需信任少数大节点的中心化系统里。然而我们想要的系统是:它既能每秒处理上千笔交易,又能带来一定程度的去中心化。
1
可扩展性的解决方案
理想状态下,我们希望我们设计的区块链有着与比特币和以太坊相近或更好的安全性,但同时又不希望网络里每个节点都要处理超过一定比例的交易。换句话说,我们需要一种机制,来限制验证交易的节点数量(注:因为减少验证节点数量可以提高吞吐量),同时又保证网络里的每笔交易都是合法可信。这听起来很容易,但在技术上非常困难。
可扩展性是平台走向成功的一个巨大障碍。下面是一些不同开发团队正在努力研究的解决方案。在这一篇文章里我已经对可扩展性解决方案进行了详细介绍,推荐大家阅读。这里只做一个简短总结。
2
A.链下交易通道(off-chain payment channel)
该方案是在链下使用微支付通道网络处理大部分交易。区块链只作为清算层来处理一系列交易的最终清算,从而来减少底层区块链的负担。
这解决了我们前面讨论的吞吐量问题,区块链可处理交易的数量可提升一个量级。除此之外,由于交易都是在支付通道里处理的,无需等待区块确认,因此交易速度问题也得到了解决,消除了时延。
Raiden Network 和 Lightning Network 都是微支付通道网络的实例。
3
B.分片(Sharding)
分片的思想是把区块链的整体状态分割成不同的「片」,每部分状态都由不同的节点存储和处理。每个分片都只处理整体状态的一小部分,因此可以做到并行处理。区块链分片就像传统数据库的分片一样,但还需额外考虑如何在去中心化的节点集合里维持安全性和合法性。
4
C.链下计算(off-chain computation)
这个方案和状态通道很相似,但适用范围更广。其主要思想是以一种安全可证的方式,在链下处理一些在链上执行代价很高的计算。把计算和证明处理移到链下的独立协议里,可以提高交易吞吐量。一个实例是以太坊的 TrueBit。
5
D.DAG
DAG 是有向无环图(Directed Acyclic Graph)的缩写,这是一种有顶点和边的图结构。DAG 可以保证从一个顶点沿着若干边前进,最后不能回到原点。由此我们可以给顶点进行拓扑排序。
一些 DAG 协议,如 IOTA 的 Tangle,丢弃了全局的线性区块概念,使用 DAG 数据结构来维持系统状态。为了保证网络安全,这些协议需要用某种新方法,使节点不需要用线性方式处理每一笔交易。
另一种 DAG 协议 SPECTRE protocol,使用了区块的 DAG 技术,可以并行挖矿,从而带来更大的吞吐量和更快的交易确认时间。
DAG 技术还处在早期阶段。老实说,它们也存在一些需要被解决的底层限制和缺陷。
“
二、隐私保护的限制
”
区块链上的交易并没有直接关联到你的身份,这看起来似乎是可以具有隐私保护的。每个人都可以匿名地生成钱包,并进行交易。
然而,事实远没有这么简单。
区块链技术的巨大前景之一是假名(pseudonymity)的使用:交易被记录在公共账本里,但是它们又与由数字和字母组成的地址保持关联。因为无需将真实世界的身份信息关联到地址上,交易的发起者似乎是不可能被追踪的。
然而,这种想法是错误的。没有将假名关联到个人信息,这确实可以保护隐私。然而只要有人建立了链接,则隐私就不再是秘密。一个例子是执法机构坦言他们在调查时,可以识别比特币用户,对他们进行反匿名(deanonymizing)。
1
这是怎么发生的呢?
商业网站的 Web Tracker 和 cookies 会轻易泄露与交易相关的信息。任何人,包括政府、执法机构和恶意用户都可以利用这些信息。
此外,区块链平台(如以太坊)的用户与智能合约进行着复杂交互。
智能合约的所有细节,包括发送者和接受者、交易数据、执行的代码和合约内部存储的状态,都是公开。
大部分公司都不会考虑把重要的商业数据上传区块链中,因为黑客、竞争者和其他非授权组织都可以轻易看到这些信息。思考一下:
电子医疗记录是十分隐私和敏感的信息。
身份识别数据如身份证不能在智能合约上公开。
凭证管理如密码和密钥都不能放在公开和不安全的智能合约中。
金融文件如股权结构表或员工薪资都不能公开。
这样的例子不胜枚举
隐私保护对于个人、组织和企业来说,都是一个本质挑战。许多人为区块链和数字货币着迷,是因为这个去信任和抵抗审查的系统能带来金融上的变革。矛盾的是,我们在使用的是一个公开且容易被追踪的账本。
2
隐私保护解决方案
下面是一些不同开发团队正在努力实现的方案
Elliptic Curve Diffie-Hellman-Merkle (ECDHM) addresses
理解 ECDHM 地址之前,你需要理解 Diffie-Hellman 密钥交换,其背后的思想在于双方之间建立一个共享的秘密。在公开网络里,这可以被用于交换秘密信息。
3
这是如何做到?
发送方和接收方共享 ECDHM 地址,然后通过共享的秘密将其转化成比特币地址。该比特币地址只会被拥有该秘密的人知道。唯一公开的东西只有可重复使用的 ECDHM 地址。因此,用户不用担心交易会被追踪。
使用颜色而不是非常大的数字来说明密钥交换的总体思路的概念图 (来源:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
ECDHM 地址方案包括 Peter Todd 提出的 Stealth Addresses,Justus Ranvier 提出的 BIP47Reusable Payment Codes 和 Justin Newton 提出的 BIP75 Out of Band Address Exchange。然而,没有一个方案得到实际应用。
4
混合器(Mixer)
混合器的思想是把交易混到一个池里,收支平衡由池中的私有账本来记录。当池中的资金被花费后,原始交易就变得难以追踪了。观察区块链的人可以看到池的支付金额和收款人,但是无法追踪交易的发起人。混合器服务的一个例子是 CoinJoin。
来源: https://en.wikipedia.org/wiki/CoinJoin
不幸的是,混合器不是一个可靠的解决方案。研究者可以确定 CoinJoin 里的交易,他们证明,攻击者只要花费 $32,000,就能以 90% 的成功率识别交易。并且,研究者还证明混合器几乎无法抵御女巫攻击(Sybil attacks)和拒绝服务攻击(Denial-of-Service attacks)。
另一个令人不安的地方是,需要通过一个相对中心化的实体来维护混合器的私有账本,这意味着需要一个可信第三方来“混合”交易。
CoinJoin 不是默认交易方法,因此很少人参与到进混合池里,这导致匿名集合十分小。在人数少的集合里,可以很容易确认交易的来源。
另一种混合器方案是 CoinShuffle,这是德国萨尔布吕肯大学研究团队设计的去中心化混合协议。CoinShuffle 尝试解决 CoinJoin 里需要可信第三方来混合交易的问题。
5
门罗币(Menoro)
不同于其他的山寨币,门罗币不是比特币的分叉,而是基于另一种协议 CryptoNote。门罗币的最大特色是环签名(Ring Signature)方案。
环签名是一种群签名,群里的每个签名者都拥有一对私公钥对。不像传统的加密签名证明交易是单个签名者用私钥签的,群签名证明交易是群里的某个人签名的,但不会暴露具体是谁签的。
6
零知识证明(Zero-knowledge proofs)
零知识证明是指,在不揭露特定知识的情况下,证明者(prover)可以说服验证者(verifier)他们知道该知识。换句话说,零知识的输入是秘密的,证明者不会向验证者揭露任何知识。零知识证明可以被用在隐私保护方案里。例子包括:
例子1:质询/响应比赛
在计算机安全里,质询-响应认证(challenge-response authentication)是一个协议族。在协议里,一方进行提问(“质询“),另一方给出正确的答案(”响应”)以获得授权。在区块链里,这个“比赛”能被用于验证交易。如果某一交易是非法的,其他节点会注意到其非法性。这就需要提供可验证的证明(verifiable proof),来证实交易是非法的。如果验证失败,则会产生一个“质询”,要求交易的发起人生成一个“响应”,来证明交易是合法的。
这里有一个例子:假设只有 Bob 可以访问某些资源(如他的车)。Alice 现在也想访问它们(如开这辆车去杂货店)。Bob 发起一个质询,假设为“52w72y“。Alice 必须用一个字符串来响应 Bob 发起的质询。使用一个只有 Bob 和 Alice 知道的算法,这是找到答案的唯一方式。此外,Bob 每次发起的质询都会不一样。知道先前正确的响应,并不能给 Alice 带来任何的优势。
质询/响应比赛已经被使用在区块链,如以太坊里了。然而,我们需要相应的函数库和工具,来使这一类的认证方案更容易被使用。
例子2:zkSNARKs
zkSNARKs 到底是什么?让我们来逐步分解其定义:
zk=zero-knowledge(零知识)。不需要信息本身的条件下,可以证明该信息存在。
SNARK:SuccinctNon-interactiveAdaptiveARgument ofKnowledge
简洁(Succinct)表示证明简洁,可以被快速验证。
非交互(Non-interactive)表示验证者不需要和证明者进行交互。取而代之,证明者会预先公开它的证明,而验证者可以检查它的正确性。
适应性知识论证(Adaptive argument of knowledge)表示某些计算的证明。
尽管我希望有一天可以写一篇文章介绍 zkSNARKs,但这里我会跳过技术细
网友评论