公有链面临哪些难以突破的技术难题?
摘要: 目前区块链面临着可扩展性问题,隐私权受限问题,存储空间受限问题等。其中不可持续的共识机制问题造成了矿池集中化,能源浪费等问题。
毫无疑问,区块链技术非常具有潜力。
去中心化交易所、预测市场、资产管理平台仅是区块链研发人员们在该领域探索的一小部分。
令人兴奋的是,在ICO中募集数十亿美金,并推动2017年整个币价行情上涨。说其中有炒作成分,也是真的。
我也没有其他意思,这些“炒作”确实也是向主流用户进行了推广宣传。而且,现在每当我我谈到“比特币”或者“以太坊”时,大家也大概有点了解,不会再拿疑惑的眼光看着我。
即便如此,我们也不能忽视一个问题:区块链的几大技术痛点,使得它目前并不适合大范围推广使用。
我相信终有一天这些难关一定会被攻克。但是,作为研发人员和投资者,我们需要更客观一点。要知道,区块链需要很多年的摸索,才能真正进行大规模推广。
目前,主要的技术痛点是:
1. 可扩展性受限(Limited scalability);
2. 隐私权受限(Limited privacy);
3. 缺乏正式合同保障(Lack of formal contract verification);
4. 存储空间受限(Storage constraints);
5. 不可持续的共识机制(Unsustainable consensus mechanisms);
6. 缺乏治理和参考标准(Lack of governance and standards);
7. 工具不足(Inadequate tooling);
8. 量子计算威胁(Quantum computing threat);
9. 其他... ...
在这篇文章中,我将详细说说这些技术痛点,并针对这些痛点提出一些解决方案。
作为研发人员,我认为我们要把注意力从ICO,转移到面临的技术难题上,因为后者才是阻碍我们前进的关键。
(本文表述可能并不详尽,或有错漏,欢迎批评指正。)
1. 可扩展性受限
目前,所有的公有链共识机制都有一个致命的弱点:每一个全节点都必须参与每一笔交易。
为什么呢?要知道区块链本质上是“去中心化”的 ——没有一个中心机构有权利和义务去维护这个系统。相应的,网络中的每个节点有责任去参与到每一笔交易,并通过保存整个交易的副本来保护系统。
虽然去中心化的共识机制为我们带来了诸多好处:安全保障,政治中立,合规审查等等。但是,这会牺牲一部分的可扩展性。去中心化限制了区块链可以处理的交易数量,从而限制了网络中全节点数量。
这会有两个影响:
1) 吞吐量低:区块链的交易处理量有限;
2)交易处理缓慢:处理交易的用时很长。例如,比特币生成区块的时间是10分钟,而以太坊只需要14秒。在高峰时期,比特币处理一笔交易的时间会更长。与使用Square或Visa的时间进行比较,比特币不占优势。
结果是,公有链必然要在吞吐量低和权利集中之间做个取舍。
换句话说,区块链中交易量的增加,也增加了对节点的存储、宽带和算力的需求。这会使得整个系统会变得非常笨重,最终可能只有少数节点能应对这些需求。发展到极致的话,就会引发集中化的风险。
这样就又依赖第三方的集中式系统了。而本来,我们想要建立的是一个在去中心化的、每秒处理数千个交易的系统。
解决可扩展性问题
理想情况下,我们希望区块链,在具有与比特币和以太坊相似或更好的安全属性的同时,能够在不需要每个节点参与处理每笔交易的情况下运行。换句话说,我们需要一种机制来限制节点数量,同时又能保护网络安全。这听起来可能很简单,但在技术上却很困难。
可扩展性问题亟待解决。目前,业内许多开发团队都已经开始研究解决方案。
链下支付渠道(Off-chain payment channels)
微支付渠道(micropayment channel)背后的理念是让大多数交易可以在链下完成。它本质上是通过一种机制,把原在链上的交易放在链下完成。区块链纯粹作为沉降层(settlement layer),只用处理最终结算,这样其负担就减轻了。
这样可以提高处理效率,从而解决我们前面提到的吞吐量问题。此外,由于交易在支付通道启动时就已发生,而不用等区块被核对,这也解决了交易速度的问题,消除了典型的交易延迟。
有代表性的微支付通道包括雷电网络(Raiden Network)和闪电网络(Lightning Network)。
分片技术(Sharding)
分片概念的背后是,区块链的所有内容被分成不同的“碎片”,每个碎片都由网络中不同的节点存储和处理。每个节点只处理总体数据的一小部分,可以并行处理。除了需要在分布式节点中维护安全之外,区块链分片和传统数据库的分片十分类似。
链下计算(Off-chain computations)
这相当于状态通道(state channels),但范围更大。其本质就是希望以一种安全和可验证的方式,将计算放在链下执行(而不仅仅是代币传输)。这可以提高交易吞吐量,也解决了链上计算成本过高的问题。基于以太坊的TrueBit就是一个好的例子。
DAGs
“DAG”即“有向非循环图(Directed Acyclic Graph)”。这是一种由顶点和边组成的数据图结构。(顶点是图上的一个点,边是从一个顶点到另一个顶点的路径。)DAG保证无法从任何顶点开始,并遵循最终返回到该顶点的一系列边缘(即没有循环)。这样我们就可以得到一个按拓扑顺序排列的节点(或顶点)序列。
像IOTA’s Tangle这种基于DAG的协议,就是完全抛弃全局线性区块链,而使用DAG数据结构来维护系统。为了保护网络安全,这些协议不要求每个节点以线性方式处理每笔交易。
频谱协议(SPECTRE)是另一种基于DAG的协议,使用区块的有向非循环图,并行地挖掘DAG块,以提高吞吐量,缩短交易处理时间。
其他基于DAG的协议,我会在之后的文章里提及。这里要说的是,这些协议还处于起步阶段,没有得到大规模的推广和使用。坦率地说,它们有一些限制/弱点,尚不确定是可行的解决方案。
2. 隐私权受限
考虑到区块链交易并不需要绑定身份信息,似乎更加具有隐私性。世界上的任何人都可以创建一个匿名钱包,并用它进行交易。
但是,事实并非如此。
一方面,匿名性无疑是区块链的最大特点之一:交易被记录、存储到公共账本中,并且仅与一个由数字和字母组成的账户地址相连。由于这些账户地址没有绑定用户真实信息,所以无法追踪到实体个人。
然而,这种表象是具有误导性的。诚然,只要地址和个人没有联系,那么个人的隐私是绝对安全的。但是,一旦有人找到其中联系,秘密就会揭晓。好比说,执法机构承认他们能够在调查期间对比特币用户进行追踪。于是用户就不再处于匿名状态。这样也就打破了区块链交易完全匿名这个大前提。
这是如何完成的?
商家在网站上的跟踪器和cookie很容易造成交易信息的泄露,任何人(包括政府、执法机构和恶意用户)都可以轻而易举地利用这些信息。
此外,自从有了像以太坊这样的区块链平台,用户可以通过智能合约,实现交易之外的更多功能。所有关于智能合约的细节都是公开的,包括发送人、接收方、交易数据、执行代码,以及存储状态。
将关键的商业数据上传到区块链中,黑客、竞争对手或其他未经授权的各方可以查看这些信息,大多数公司都对这点很有顾虑。考虑到:
l 电子病历,这是一个非常隐私和敏感的信息。将这些信息公开放在区块链上,侵害到病人的隐私,一般人都无法接受。
l 身份验证数据,像身份证号这类的身份信息,就不能放在公共的智能合约中。
l 证件管理,像如密码和密钥就不能放在公开的、不受保护的智能合约中。
l 财务文件,如资产表或员工工资,绝不能和易于追踪的账户地址有关联。
l 等等。
对于关心隐私和个人权益的个人、组织和行业来说,隐私权是底线。许多区块链和加密货币的拥护者都有共同的期许,希望能够建立一个无需信任的、不受审查的系统,让每个人都可以参与记账。矛盾的是,我们使用的是一个公共的、易于追踪的分类帐。(每次想到这件事,我就头疼!)
针对隐私权的解决方案
以下是不同开发团队做的努力。
椭圆曲线(ECDHM)地址
谈ECDHM地址之前,需要先了解Diffie-Hellman密钥交换。Diffie-Hellman密钥交换背后的理念是,它在双方之间建立了一个共享的密钥。这可以让用户在区块链网络上实现私密信息的交流。
具体怎么操作呢?
发送方和接收方可以公开共享ECDHM地址,然后利用它们共享的密钥导出匿名比特币地址。这些比特币地址只能由拥有这个密钥的人发出。唯一公开可见的是可重用的ECDHM地址。因此,用户不必担心交易被跟踪。
ECDHM地址方案的一些例子包括Peter Todd的 Stealth Addresses、Justus Ranvier的BIP 47可重用支付代码(reusable payment codes)、Justin Newton的BIP 75带外地址交换(Band Address Exchange)等。然而,这些计划的有效实施和实际使用却很少。
混合器(Mixers)
混合器背后的想法是,一群人可以将他们的付款合并到一个池中,在私人账簿中记录收支情况。然后,当池中的资金被花掉时,每一笔付款的来源就会变得模糊不清。任何人都可以看到支付的金额和收款人,但理论上,具体授权支付的人是无法追踪的。混合服务的一个例子是CoinJoin。
不幸的是,混合器不是一个可靠的解决方案。因为研究人员很容易就能识别CoinJoin交易。并且,有证据显示,只要花费32,000美元,攻击者就可以破坏交易的匿名性。而且,这种攻击的成功率为90%。此外,研究人员还证明,混合器对Sybil攻击和Denial-of-Service提供的保护很少。
更令人不安的是,混合器所谓的私人分类账却需要由某个中央实体管理,这意味着它需要一个可信的第三方来“混合”交易。
由于CoinJoin不是强制的,用户可以自己选择。因此很少人选择参与这种混合池。参与混合的用户很少,很容易就可以追踪出某一特定输出的来源。
混合解决方案的另一个例子是CoinShuffle,这是一种去中心化的混合协议,由德国萨尔兰大学的一组研究人员开发。CoinShuffle试图改进CoinJoin,不再需要可信的第三方来完成混合交易。
门罗(Monero)
另一种保护隐私的方法是创建一个私有的加密货币,比如门罗。与许多代币不同的是,门罗不是比特币的分叉。相反,门罗是基于另一种协议:CryptoNote。
门罗提供了“环签名”方案。
环签名是一种群签名,组中的每个签名者都有一个私钥和一个公钥。不同于由单个签名者使用私钥“批准”的传统签名模式,环签名证明是来自固定组的一个签名者批准了交易,而不公开具体签名的人的信息。
零知识证明
零知识证明是指在不直接透露信息的情况下,向验证者证明这些私密信息。换句话说,程序上,将信息输入,而验证时不向验证者透露任何信息。零知识证明提供了基本的原语,可以用来建立隐私保护机制。例子包括:
案例1:挑战 / 反应小游戏(Challenge / response games)
在执行挑战 — 反应认证时,一方提出一个问题(“质询”),而另一方必须提供一个有效的答案(“响应”)来进行认证。这个“游戏”可以用来验证链上交易。如果特定交易无效,则另一个节点可以选择“提请注意”。这就需要提供一个可验证的证据,来确认交易是无效的。如果做不到这一点,就会产生一个“质疑”,要求交易的发起人产生一个“响应”来证明交易是有效的
让我们看一个例子:假设“Bob”有访问某资源的唯一通道。Alice现在也想来访问这个资源。于是Bob提出了一个挑战,也许是“52w72y”。Alice必须用一串符合Bob提出的挑战的字符来回应。使用仅有Bob和Alice知道的算法,才能找到对应答案。此外,Bob每次都会发出不同的挑战。所以就算Alice知道某次的答案也没用。
挑战 / 反应游戏已经在以太坊这样的区块链中使用了。但是,我们需要软件库和工具来使这种验证方案更易于使用。
案例2:Example 2: zkSNARKs
zkSNARKs到底是什么?让我们分解一下定义:
l ZK=Zero-knowledge,即“零 + 知识”。不需要了解信息,就能证明信息的存在。
l SNARK: Succinct Non-interactive Adaptive ARgument of Knowledge,即“简洁的、非交互式的、适应性的知识论证。”
l 简洁的(Succinct):指可以快速验证的简洁证据。
l 非交互的(Non-interactive):指不要求验证者与证明人交互。证明人可以先公布证据,之后验证者再进行验证。
l 适应性的知识论证(Adaptive ARgument of Knowledge):指计算知识的证明。
之后我会在其他文章种详细说说zkSNARKs,但在这里,我将跳过技术细节。总而言之,zkSNARKs是非常有希望确保隐私性的,但有几个注意事项:
1)SNARKs是资源密集型的。
2)SNARKs允许用户证明他们有访问某个秘密的权限,但用户有责任维护该秘密,并在需要时使其可用。
3)SNARKs有一个设定阶段(setup phase)。在此阶段,要确保算力固定。算力固定的大前提时可信环境:不仅要求用户信任准备设定的人员,而且还意味着SNARKs总是需要一个准备阶段,所以是所有计算设备都适用。
案例3:zkSNARKs + Zcash
Zcash是一种基于zkSNARKs的保护隐私的加密货币。Zcash所谓的“屏蔽交易”,所有使用过的代币都会在一个匿名集里。屏蔽交易使用“屏蔽地址”,这要求发送方或接收方生成零知识证明,允许其他人在不接触交易信息的情况下,可以对交易数据进行验证。
Zcash确实是个值得关注的项目。
案例4:zkSNARKs + 以太坊
在以太坊一次协议升级中(Metropolis),开发人员能在链上对zkSNARKs进行验证。
对于一个zkSNARKs + 以太坊,我们可以做什么呢?一些合同变量可以成功转化为私有变量。不再需要把隐私信息存储在链上,只需要用户用SNARKs来证明自己遵守合同的规则,就可以由用户自己存储信息。
在以太坊上,SNARKs不能实现的是独立于用户之外的、完全自主的隐私权。由于以太坊上的SNARKs需要用户保存链下信息,那么如果那个用户缺席,就无法找到对应的信息。
案例5:zkSTARKs
zkSNARKs有一个新出生的表亲:zkSTARKs。其中“T”指的是“transparent(透明的)”。
zkSTARKs解决了zkSNARKS的主要弱点之一:依赖用户来进行存储。zkSTARKs更简单,因为完全依赖哈希和信息理论,并且,由于不再使用椭圆曲线(elliptic curves)或指数假设(exponent assumptions),因而对量子计算机更安全。
总的来说,尽管在保护隐私方面取得了惊人的进步,但仍有许多工作要做。零知识证明库需要进行大量的研究和摸索,才能成熟;zkSNARK和zkSTARK需要在各种公链上进行试验。Zcash需要在现实场景中,进行大规模地证明和使用。这一切都还有很长的路要走。
代码混淆(Code Obfuscation)
另一种隐私机制是代码混淆。其目的是找到一种混淆程序P的方法,使混淆器能够产生第二个程序O(P)=Q,这样,如果给定相同的输入,P和Q返回相同的输出,但是Q没有揭示P的内部信息,这允许我们将隐藏的私有数据保存在Q的内部,例如密码、身份证号码等,但在程序中仍然使用它。
虽然研究人员称,将混淆做到完全不透明的不可能的,但是有一个较弱的混淆概念,被称为不可区分的混淆,这是可能实现的。不可区分混淆器O的定义是,如果采用两个等价的程序A和B(即A或B的相同输入产生相同的输出),并计算O(A)=P和O(B)=Q,则对于没有访问A或B的人来说,不能判断P来自A还是B。
最近,Craig Gentry,Amit Sahai,等人完成了不可区分的代码混淆。然而,该算法需要较高的成本。
如果这个架构能够得到改善,其潜在好处是巨大的。在数字世界里最有意思的一个特点是,要在公开的链上合约中保存隐私信息。
比如说,保存了用户Coinbase密码的以太坊智能合约。然后,我们可以编写一个程序,这样如果合同的某些条件得到满足,合同将使用某个中间节点启动一个带有Coinbase的HTTPS会话,使用用户的密码登录,并进行交易。由于合同中的信息将被混淆,因此中间节点或区块链中的任何其他参与者将无法修改正在传输的请求或确定用户的密码。
预言者(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)无限期存储,因为区块链数据库是只能增加、不可撤销的。
因此,数据存储给分布式网络带来了巨大的负荷,每个全节点都必须将越来越多的数据存储起来。因此,对于去中心化应用程序来说,存储仍然是一个很大的问题。
存储解决方案
有几个项目正在试图将数据进行分片,并以分布式方式在节点(即分布式存储)中存储。这里的基本前提是,不是每个节点存储所有东西,而是有一组节点在它们之间拆分或“分发”数据。一些项目的例子包括:
l Swarm:Swarm是一种点对点文件共享协议,它允许用户将代码和数据存储在Swarm节点中,这些节点连接到以太坊上。之后可以在区块链上对此数据进行交换。
l Storj: 其中的文件和数据被分割、加密,分发到多个节点,这样每个节点只存储一小部分数据:因此,形成“分布式存储”。然后,Storj Coin(SCJX)用于支付存储费用,并对存储用户部分文件 / 数据的节点进行激励。
l IPFS: 另一种P2P超媒体协议,它提供高吞吐量、内容地址块存储模型和内容地址超链接。本质上,它允许文件的分布式存储,同时提供文件历史信息,并可以删除重复文件。
l Decent:Decent是一个去中心化的内容共享平台,允许用户上传、分享他们的视频、音乐、电子书等,去除对第三方的依赖。用户可以跳过这些第三方,来以一种更实惠的方式访问内容,相应地,承载这些内容的节点则会获得奖励。
l ... ...
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. 工具不足
工具能使开发人员的工作更加高效,所以非常重要。
目前用于区块链开发的工具是很不够的。在区块链上开发功能协议或分布式应用程序是一项艰巨的任务(即使对最有经验的开发人员来说,也是如此)。
作为一个区块链的开发人员,下面是我个人觉得很重要的工具:
l 一个指针良好、具有所有必要插件的IDE,用于智能合约开发和区块链分析。
l 一种编译工具和编译器。
l 一个优质的配置工具。
l 技术文档:实际存在的,或对现在各种API和框架仍适用的。
l 精致的测试框架。迫切需要更多的测试的选项和实验。我见过太多的智能合约在未经检验的情况下,就投入使用。不管怎么样,必要的检测是不能少的,特别是在涉及大量资金的情况下。
l 调试工具。对代码进行调试,就像蒙着眼睛在漆黑的隧道里找金子。我之前是做web开发的,能用调试工具逐行浏览代码,大大减少了我的工作量。如果没有这种调试工具(或者类似的工具),调试那么大的工作量确实让人沮丧。我们迫切需要工具,来简化隔离和诊断问题。
l 测井工具(Logging tools)。和上面一样。
l 安全审计。这是个大问题。我听说过以太坊有一个著名的安全审计服务,Open Zepplin。尽管他们确实在这方面做了很多工作,但区块链是一个可以通过智能合约筹集数十亿美元资金的行业,其需要的不止是一个单独的初创公司。公司和工程师需要创建更先进的工具和服务,需要更多的安全专家来加入。之前,大家没有怎么关注智能合约的安全问题,只有当两个Parity攻击或者说DAO攻击之后,人们才关注了一些。之后,大家吧原因归结到智能合约开发者身上,甚至有的人直接怪罪以太坊核心团队。我觉得这是不公平的。开发人员没有责任去对其代码进行安全审核。这就像叫斯蒂芬·库里(Stephen Curry)去做自己的会计一样。不该是这个逻辑。我们需要安全工程师和研究人员的专业知识。我们需要投资者把注意力放到他们的资金上,并使他们的投资能够促进智能合约和区块链的安全性能的发展。
l 区块探索者和分析者。对于以太坊,有一个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)。
不管最后的解决方案是什么,构建量子验证的密码解决方案都是最重要的。
需要牢记的各种挑战
l 我们需要更强大的解决方案,来实现多个链(如比特币、以太坊、莱特币等)之间的通讯及交易。
l 我们需要在区块链内建立更好的密钥管理系统,来支持顶层的应用程序。
l 我们需要更有效的签名方案和其他密码系统,使得低配设备可以安全高效的实现这些操作。
l ... ...
总结
目前的情况让我很担忧,大家的注意力和资金都投入到了ICO。而研发技术的科研人员们,却经常面临资金短缺的问题。
不幸的是,许多人在利益驱使下,会有意忽视当前的研发困境 —— 这其中不乏一些有影响力的科研人员和行业意见领袖。
我未来一年的目标是继续:
1)提高对这些问题的认识。
2)花大量心力寻找解决方案。
3)激励其他开发者和研发人员加入我的行列。
不管当前的投资环境是否是泡沫,我都坚信区块链的未来会很光明。我们帮助研发人员度过难关,就相当于帮助区块链走出眼前的困境。我们希望投资者寻求并资助这些真正有实力的科研项目,帮助这些技术团队走出困境。
(作者:Preethi Kasireddy;编译:李丽诗频道,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)
评论(0)
Oh! no
您是否确认要删除该条评论吗?