毫无疑问区块链技术有巨大的潜力。在 2017 年里,人们高昂的热情为 I-C-O 募集了数百亿资金,大大提高了加密货币市场的规模。算法
然而,另外一面却没有获得足够重视:区块链存在一些技术壁垒(technical barriers),这致使难以有效地将它应用到主流人群里。这些技术壁垒包括:数据库
可扩展性的限制安全
隐私保护的限制cookie
缺少合约的形式化验证网络
存储限制数据结构
难以证实的共识机制app
缺少治理和标准框架
缺少开发工具less
量子计算机的威胁分布式
还有...
在这篇文章里,我会一一阐述这些技术壁垒,并分享一些可行的解决方案。
当前公有链的共识协议都存在这样的限制:网络中的全节点参与者须要处理所有交易。
为何会这样?由于区块链本质上是「去中心化」——这意味着不存在一个中心团体来保护和维持系统。取而代之,网络的每一个节点都会处理每笔交易并维持全状态副本,经过这种方式来保护系统。
去中心化共识机制的关键优点是安全保证、政治中立和抵抗审查等。然而,这是以扩展性为代价换来的,由于去中心化限制了区块链里全节点可处理交易的数量。
实质上这带来了两个影响:
低吞吐量:区块链可处理交易的数量十分有限
缓慢的交易速度:处理一个区块的时间很长。好比比特币的区块时间是 10 分钟,以太坊的区块时间大约是 14 秒。在高峰期里花费的时间甚至更长。相较之下,Square 和 Visa 等服务的交易是即时确认的。
所以,公有链须要在低交易吞吐量和高中心化之间作一个权衡。
换句话说,随着区块链大小的增长,网络里全节点所需的存储、带宽和计算能力也会增长。当到达某个时刻,就只有少数节点才能提供足够资源来处理区块——这会带来中心化风险。
在那时,咱们会回到需信任少数大节点的中心化系统里。然而咱们想要的系统是:它既能每秒处理上千笔交易,又能带来必定程度的去中心化。
可扩展性的解决方案
理想状态下,咱们但愿咱们设计的区块链有着与比特币和以太坊相近或更好的安全性,但同时又不但愿网络里每一个节点都要处理超过必定比例的交易。换句话说,咱们须要一种机制,来限制验证交易的节点数量(注:由于减小验证节点数量能够提升吞吐量),同时又保证网络里的每笔交易都是合法可信。这听起来很容易,但在技术上很是困难。
可扩展性是平台走向成功的一个巨大障碍。下面是一些不一样开发团队正在努力研究的解决方案。
链下交易通道(off-chain payment channel)
该方案是在链下使用微支付通道网络处理大部分交易。区块链只做为清算层来处理一系列交易的最终清算,从而来减小底层区块链的负担。
这解决了咱们前面讨论的吞吐量问题,区块链可处理交易的数量可提高一个量级。除此以外,因为交易都是在支付通道里处理的,无需等待区块确认,所以交易速度问题也获得了解决,消除了时延。
Raiden Network 和 Lightning Network 都是微支付通道网络的实例。
分片(Sharding)
分片的思想是把区块链的总体状态分割成不一样的「片」,每部分状态都由不一样的节点存储和处理。每一个分片都只处理总体状态的一小部分,所以能够作到并行处理。区块链分片就像传统数据库的分片同样,但还需额外考虑如何在去中心化的节点集合里维持安全性和合法性。
链下计算(off-chain computation)
这个方案和状态通道很类似,但适用范围更广。其主要思想是以一种安全可证的方式,在链下处理一些在链上执行代价很高的计算。把计算和证实处理移到链下的独立协议里,能够提升交易吞吐量。一个实例是以太坊的 TrueBit。
DAG
DAG 是有向无环图(Directed Acyclic Graph)的缩写,这是一种有顶点和边的图结构。DAG 能够保证从一个顶点沿着若干边前进,最后不能回到原点。由此咱们能够给顶点进行拓扑排序。
DAG
一些 DAG 协议,如 IOTA 的 Tangle,丢弃了全局的线性区块概念,使用 DAG 数据结构来维持系统状态。为了保证网络安全,这些协议须要用某种新方法,使节点不须要用线性方式处理每一笔交易。
另外一种 DAG 协议 SPECTRE protocol,使用了区块的 DAG 技术,能够并行挖矿,从而带来更大的吞吐量和更快的交易确认时间。
DAG 技术还处在早期阶段。老实说,它们也存在一些须要被解决的底层限制和缺陷。
区块链上的交易并无直接关联到你的身份,这看起来彷佛是能够具备隐私保护的。每一个人均可以匿名地生成钱包,并进行交易。
然而,事实远没有这么简单。
区块链技术的巨大前景之一是假名(pseudonymity)的使用:交易被记录在公共帐本里,可是它们又与由数字和字母组成的地址保持关联。由于无需将真实世界的身份信息关联到地址上,交易的发起者彷佛是不可能被追踪的。
然而,这种想法是错误的。没有将假名关联到我的信息,这确实能够保护隐私。然而只要有人创建了连接,则隐私就再也不是秘密。一个例子是执法机构坦言他们在调查时,能够识别比特币用户,对他们进行反匿名(deanonymizing)。
这是怎么发生的呢?
商业网站的 Web Tracker 和 cookies 会轻易泄露与交易相关的信息。任何人,包括政府、执法机构和恶意用户均可以利用这些信息。
此外,区块链平台(如以太坊)的用户与智能合约进行着复杂交互。智能合约的全部细节,包括发送者和接受者、交易数据、执行的代码和合约内部存储的状态,都是公开。
大部分公司都不会考虑把重要的商业数据上传区块链中,由于黑客、竞争者和其余非受权组织均可以轻易看到这些信息。思考一下:
电子医疗记录是十分隐私和敏感的信息。
身份识别数据如身份证不能在智能合约上公开。
凭证管理如密码和密钥都不能放在公开和不安全的智能合约中。
金融文件如股权结构表或员工薪资都不能公开。
这样的例子不胜枚举
隐私保护对于我的、组织和企业来讲,都是一个本质挑战。许多人为区块链和数字货币着迷,是由于这个去信任和抵抗审查的系统能带来金融上的变革。矛盾的是,咱们在使用的是一个公开且容易被追踪的帐本。
隐私保护解决方案
下面是一些不一样开发团队正在努力实现的方案。
Elliptic Curve Diffie-Hellman-Merkle (ECDHM) addresses
理解 ECDHM 地址以前,你须要理解 Diffie-Hellman 密钥交换,其背后的思想在于双方之间创建一个共享的秘密。在公开网络里,这能够被用于交换秘密信息。
这是如何作到?
发送方和接收方共享 ECDHM 地址,而后经过共享的秘密将其转化成比特币地址。该比特币地址只会被拥有该秘密的人知道。惟一公开的东西只有可重复使用的 ECDHM 地址。所以,用户不用担忧交易会被追踪。
Conceptual diagram that illustrates the general idea of the key exchange by using colors instead of very large numbers (Source: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
ECDHM 地址方案包括 Peter Todd 提出的 Stealth Addresses,Justus Ranvier 提出的 BIP47 Reusable Payment Codes 和 Justin Newton 提出的 BIP75 Out of Band Address Exchange。然而,没有一个方案获得实际应用。
混合器(Mixer)
混合器的思想是把交易混到一个池里,收支平衡由池中的私有帐原本记录。当池中的资金被花费后,原始交易就变得难以追踪了。观察区块链的人能够看到池的支付金额和收款人,可是没法追踪交易的发起人。混合器服务的一个例子是 CoinJoin。
Source: https://en.wikipedia.org/wiki/CoinJoin
不幸的是,混合器不是一个可靠的解决方案。研究者能够肯定 CoinJoin 里的交易,他们证实,攻击者只要花费 $32,000,就能以 90% 的成功率识别交易。而且,研究者还证实混合器几乎没法抵御女巫攻击(Sybil attacks)和拒绝服务攻击(Denial-of-Service attacks)。
另外一个使人不安的地方是,须要经过一个相对中心化的实体来维护混合器的私有帐本,这意味着须要一个可信第三方来“混合”交易。
CoinJoin 不是默认交易方法,所以不多人参与到进混合池里,这致使匿名集合十分小。在人数少的集合里,能够很容易确认交易的来源。
另外一种混合器方案是 CoinShuffle,这是德国萨尔布吕肯大学研究团队设计的去中心化混合协议。CoinShuffle 尝试解决 CoinJoin 里须要可信第三方来混合交易的问题。
门罗币(Menoro)
不一样于其余的山寨币,门罗币不是比特币的分叉,而是基于另外一种协议 CryptoNote。门罗币的最大特点是环签名(Ring Signature)方案。
环签名是一种群签名,群里的每一个签名者都拥有一对私公钥对。不像传统的加密签名证实交易是单个签名者用私钥签的,群签名证实交易是群里的某我的签名的,但不会暴露具体是谁签的。
零知识证实(Zero-knowledge proofs)
零知识证实是指,在不揭露特定知识的状况下,证实者(prover)能够说服验证者(verifier)他们知道该知识。换句话说,零知识的输入是秘密的,证实者不会向验证者揭露任何知识。零知识证实能够被用在隐私保护方案里。例子包括:
在计算机安全里,质询-响应认证(challenge-response authentication)是一个协议族。在协议里,一方进行提问(“质询“),另外一方给出正确的答案(”响应”)以得到受权。在区块链里,这个“比赛”能被用于验证交易。若是某一交易是非法的,其余节点会注意到其非法性。这就须要提供可验证的证实(verifiable proof),来证明交易是非法的。若是验证失败,则会产生一个“质询”,要求交易的发起人生成一个“响应”,来证实交易是合法的。
这里有一个例子:假设只有 Bob 能够访问某些资源(如他的车)。Alice 如今也想访问它们(如开这辆车去杂货店)。Bob 发起一个质询,假设为“52w72y“。Alice 必须用一个字符串来响应 Bob 发起的质询。使用一个只有 Bob 和 Alice 知道的算法,这是找到答案的惟一方式。此外,Bob 每次发起的质询都会不同。知道先前正确的响应,并不能给 Alice 带来任何的优点。
质询/响应比赛已经被使用在区块链,如以太坊里了。然而,咱们须要相应的函数库和工具,来使这一类的认证方案更容易被使用。
zkSNARKs 究竟是什么?让咱们来逐步分解其定义:
zk=zero-knowledge(零知识)。不须要信息自己的条件下,能够证实该信息存在。
SNARK:Succinct Non-interactive Adaptive ARgument of Knowledge
简洁(Succinct)表示证实简洁,能够被快速验证。
非交互(Non-interactive)表示验证者不须要和证实者进行交互。取而代之,证实者会预先公开它的证实,而验证者能够检查它的正确性。
适应性知识论证(Adaptive argument of knowledge)表示某些计算的证实。
尽管我但愿有一天能够写一篇文章介绍 zkSNARKs,但这里我会跳过技术细节。zkSNARKs是一个的构建隐私保护的组件,它使人振奋且具备远大前景,但有几点须要注意:
SNARKs 是资源密集型的
SNARKs 能让用户证实他们拥有访问某个秘密的权限。但用户有职责维护秘密,让它在须要的时候能被访问到。
SNARKs 须要一个启动阶段,来准备须要证实的电路或运算。该阶段由一组可信团体预先进行。这不只意味着你须要信任进行该启动阶段的团体,还意味着不适合用 SNARKs 进行任意的运算,由于总须要一个准备阶段。
例子3:zkSNARKs + Zcash
Zcash 是基于 zk-SNARKs,具备隐私保护特色的加密货币。在 Zcash 所谓的“私密交易(shielded transactions)”里,每个被使用的币都带有一组匿名集合。私密交易使用“私密地址(shielded addresses)”,它要求发送方或接收方生成一个零知识证实,以在不泄露交易信息的状况下,容许其余人验证交易。
Zcash transaction diagram
Zcash 无疑是一个值得关注的有趣项目。
在以太坊下一个要升级的协议 Metropolis 里,开发者将能够在链上高效地验证 zk-SNARKs。
咱们能够在支持 SNARKs 的以太坊里作什么呢?能够把某些合约变量被设为不可见。秘密信息能够与那些遵照使用 SNARKs 的合约规则的用户存储在一块儿,而不是直接存储在链上。每一组用户群自身都须要一个可信的启动阶段,这会增长一些用于准备阶段的开销。但一旦电路被设置好,它就能够被任意数量的交易使用。
在支持 SNARKs 的以太坊里,你没法把隐私与用户分开,即作不到自治性隐私(autonomous privacy)。因为以太坊的 SNARKs 依赖用户在链下维护密钥,所以若是没有这些用户,就没有地方能够找到这些秘密。
ZK-SNARKs 有一个更年轻更闪耀的同胞兄弟:ZK-STARKs,其中“T“表示”透明(transparent)“。ZK-STARKs 解决了 ZK-SNARKs 的一个主要缺陷:须要依赖一个可信的启动阶段。因为 ZK-STARKs 只依赖哈希和信息论,所以它更简易;因为再也不使用椭圆曲线和指数假设,面对量子计算机时它更加安全。
总而言之,尽管在上述的零知识证实隐私保护方案的前沿研究中,咱们取得了惊人的进步,但仍然有许多工做须要去作。咱们须要对零知识证实的函数库进行实证研究和实践检测,使其成熟。咱们须要在不一样公链上对 zkSNARKs 和 zkSTARKs 进行实验。在真实世界的场景里,Zcash 则须要在扩展性上给出使人满意的使用案例。咱们离这些仍有很长的路要走。
代码混淆(Code Obfuscation)
另外一种隐私保护机制是代码混淆。该方案要找到一种方式来混淆程序 P,混淆器(obfuscator)会产生第二个程序 O(P)=Q,使得在给 P 和 Q 相同的输入时,产生相同的输出。可是 Q 不会揭露与 P 内部构造相关的任何信息。这使得咱们能够在 Q 内部隐藏如密码和身份证等的私密信息,但同时在程序里使用这些信息。
虽然研究者已经证实彻底的黑盒混淆器是不可能实现的,但不可区分混淆器(indistinguishability obfuscation)是能够实现的,这是一种概念上弱化的混淆器。不可区分混淆器 O 的定义是,若是你使用两个同等的程序 A 和 B(如把相同值输入到 A 或 B 里去产生相同的输入)计算获得 O(A)=P 和 O(B)=Q,则在没法进入程序 A 或 B 的状况下,则在计算上分辨 P 来自于 A 仍是 B 是不可行的。
最近,研究者 Craig Gentry, Amit Sahai 等人完成了不可区分代码混淆器。然而,该算法的计算开销十分高昂。
若是开销问题能够获得改善,则能带来巨大的潜在好处。
举个例子,假设以太坊的智能合约里有 Coinbase 的密码。则咱们能够写出这样一个程序:当智能合约知足了特定条件后,合约经过中间节点初始化与 Coinbase 的 HTTPS 会话,使用密码进行登陆,而后执行交易。因为合约里的信息被混淆了,所以中间节点或区块链的其余参与者都无法修改发出的请求和获取用户密码。
预言机(Oracle)
在区块链世界里,预言机是指在智能合约和外部数据源之间传递消息的角色。它在链上智能合约和链下外部数据源之间充当数据的运输者。所以,一种保护信息隐私性的方法是使用预言机从外部数据源中取出隐私数据。
可信任执行环境(Trusted Execution Environments)
可信任执行环境(TEE)是位于主处理器里的一个安全区域。在 TEE 里加载运行的代码和数据会获得隐私性和完整性的保护。TEE 能够与面向用户的操做系统并行运行,但比后者具备更好的隐私性和安全性。
智能合约的形式化验证仍然是一个未解决的巨大问题。首先,让咱们经过“形式化证实(formal proof)”来理解“形式化验证(formally verify)”的意思。在数学上,“形式化证实”是一种数学证实,计算机能够经过基本的数学千米和推理规则(inference rules)来证实它。
在程序方面,形式化验证是一种判断程序是否能按预期运行的方法。具体的规约语言能够来描述输入和输出之间的函数关系。也就是说,若是声明了关于程序的一个不变式(invariant),则咱们应该证实声明的确实是不变式。
规范语言的一个例子是 Isabelle,它是一种通用证实辅助,能够在形式化语言里表达数学公式,还提供了工具在逻辑运算上来证实这些公式。另外一种规范语言是 Coq,这是一种用来书写数学定义、可执行算法和定理的形式语言。
对于编码在智能合约里的程序来讲,为何形式化验证十分重要?
一个缘由是智能合约是不可逆的,这意味着一旦将它们部署到主网络里,你就没法升级或修改它们。所以在部署和使用智能合约以前,须要保证一切都不会出错。并且,智能合约是可公开访问的,存储在智能合约里的内容对任何人可见;每一个人均可以调用智能合约里的公开方法。这带来了开放性和透明性,但也会吸引黑客攻击智能合约。
不管你多么当心谨慎,写出一个没有 bug 和彻底可信的智能合约都是十分困难的。此外,在以太坊上,因为 EVM 指令的设计方式,验证 EVM 代码也很困难。所以在以太坊上很难找到一种形式化验证的解决方案。但不管如何,形式化验证都是一种减小 bug 和攻击的强有力手段。比起传统方法(如代码测试和同行审查),它在很大程度上能够保证正确性。咱们急切地须要一种更好的解决方案。
公有链上的大部分应用都须要解决存储问题(如用户身份、金融信息等)
然而,在公有链上存储信息意味着数据:
被网络里的每个全节点存储着
被无限期存储着,由于区块链数据只增不减,且不可逆。
在去中心化网络里,每个全节点会存储愈来愈多的数据,所以数据存储带来了巨大的开销。这将致使存储变成区块链应用的巨大瓶颈。
存储解决方案
下面介绍一些项目,它们使用不一样的策略将数据分割成分片(shard),并以去中心化的方法将其存储在参与节点里。这些方法的基本前提是不让每一个节点都存储全部数据,而是将数据分散后,存储在一个节点集合里。一些工程实例:
Swarm:Swarm 是以太坊上的 p2p 文件分享协议。你能将程序代码和数据存储在主链以外的 swarm 节点里,这些节点与以太坊主链会保持链接。你能够在链上交换这些数据。
Storj:文件和数据一开始会被分片和加密,而后被分散并存储到多个节点里,每一个节点只存储数据的一小部分。这是一种“分布式存储”。Storj 代币(SCJX)被用来支付存储和激励存储文件和数据的节点。
IPFS:这是一种 p2p 超媒体(hypermedia)协议,它的特色是高吞吐量,基于内容寻址(content-addressed)的区块存储模型和超连接。本质上,它能以一种持久化和去中心化的方式存储文件,同时还有历史版本控制和减小相同文件副本的特色。
Decent:Decent 是一个去中心化的内容分享平台,容许用户在没有可信第三方时上传和分享它们的做品(如视频、音乐和电子书等)。存储内容的节点会被奖励手续费,用户能够跳过中介,经济实惠地接触到这些内容。
... 还有更多
区块链具备”去信任(trustless)“的特色。用户不须要信任任何人。无需信任带来了自治、抵抗审查、真实性和无需受权等一系列引人注目的性质。
这种用来保证区块链不易受攻击者破坏的机制,被称为“共识协议”。对于比特币和其余区块链来讲,共识协议并非一个新东西。
在 1992 年,Dwork 和 Naor 就建立了第一个“工做量证实(proof-of-work)“系统,用来在无需任何信任的状况下访问资源。这个系统被用来解决垃圾邮件问题。Adam Back 后来在 1997 年建立了名为 Hashcash 的类似系统。 在 2003 年,Vishnumurthy 等人首次采用 proof-of-work 来保护货币,但其代币不是做为通用货币来使用,而是用于维护点对点文件的交易系统。
5 年后,中本聪(Nakamoto)用 proof-of-work 机制发明了一种有价值的货币,即比特币。这种底层共识协议使得比特币成为第一个在全球使用的去中心化帐本。
工做量证实(proof-of-work)共识
PoW 机制的思想是让问题很难解决,但验证很容易。矿工须要使用算力来进行巨大开销的计算,而比特币系统用比特币和交易费来奖励给出答案的矿工。矿工拥有的算力越多,则他们在共识上的“贡献”越大。
PoW 共识使得比特币成为第一个在全球使用的去中心化帐本。它无需可信第三方就能解决“双花”问题。然而,PoW 不是完美的,仍然有许多人从事着研究和开发,试图去构建更可靠的共识算法。
PoW 存在什么问题呢?
PoW 的缺点是定制化硬件的使用。在 2013,一种名为专用集成电路(application-specific integrated circuits, ASICs)的设备被设计来专门挖比特币,能够将效率提升 10-50 倍。从那时起,使用普通计算机的 CPU 和 GPU 来挖矿便变得无利可图,挖矿的惟一方法是使用 ASIC 设备来挖。在区块链里,每一个人都应该能为网络的安全作贡献,而 ASIC 的出现背离了“去中心化”的特色。
为了缓解这个问题,以太坊选用的 PoW 算法(Ethhash)是线性内存困难(sequentially memory-hard)的。算法被设计成须要大量的内存和带宽才能算出一个 nonce 值。即便是超高速计算机,也没法在须要大量的内存和带宽的条件下同时计算出多个 nonce 值。这减小了中心化的风险,为节点建立一个公平竞争的环境。
固然,这不表示将来不会出现针对以太坊的 ASIC。定制化硬件对 PoW 算法仍然存在着巨大的威胁
用户单独挖矿时,收到区块奖励的机会是很小的。取而代之,他们都为矿池挖矿。矿池按比例给矿工持续的回报。矿池算力在网络里占的权重大,大矿池所得回报的方差比单一矿工低得多。随着时间推移,少数矿池将控制大部分网络,而中心化的矿池控制的算力随着时间又进一步增长。如今,前 5 个矿池拥有接近 70% 的全网算力,这很吓人。
矿工消耗大量电力来计算 PoW 问题,然而对于社会来讲,这些计算都是无价值的。根据 Digiconomist’s Bitcoin Energy Consumption Index 所示,当前比特币每一年消耗的电力约为 29.05TWh,大约占全球消耗电力的 0.13%,超过了 159 个国家。
使用 PoW 共识的公有链消耗的电费都会愈来愈多。不可持续的电力浪费和 PoW 计算开销不利于公有链将规模扩展到成千上万的用户和交易。
共识的解决方案
有意义的 PoW
一种解决电力浪费问题的方法是用 PoW 函数来解决某些有意义的问题。好比,让矿工用计算资源去解决困难的 AI 算法,而不是解决随机的 SHA256 问题。
Proof-of-stake
另外一种解决挖矿中心化的问题是彻底抛弃挖矿,在共识里引入另外一种机制来每一个节点的贡献。这就是 PoS 要作的事。
不像矿工使用算力,这里使用”权益(stake)“。如 Vitalik 所说,将“一单位算力一张票(one unit of CPU power, one vote)“变成“一块钱一张票(one currency unit, one vote)“。
PoS 消除了对硬件的需求,所以再也不有硬件中心化的问题。并且,矿工不再用消耗大量电力来解决 PoW 问题,PoS 本质上更节能。
然而,天下没有免费的午饭。PoS 算法也有自身的挑战,它们包括:
Nothing-at-Stake Problem:在 PoS 共识下,若是存在分叉(不管是由于意外或攻击),节点最好的策略都是同时“挖”每条链。节点不须要消耗计算资源,只须要使用本身的钱来投票。这意味着不管哪条链胜出,矿工都会获得奖励。
Long-range attacks:若是矿工想在 PoW 链里分叉,它得在主链最新区块前几个区块开始挖。矿工往回得越多,就越难追上主链,这须要超过网络一半的算力才能作到。然而,在 PoS 里,因为挖矿所需的东西只是权益,即钱,矿工能够从成千上万个块以前开始分叉。矿工能够轻易生成成千上万的区块,而用户很难发现哪一条链才是“正确”的链。
Cartel formation:在由经济激励治理的去中心化系统里,一个真实存在的风险是共同合做(coordinated efforts)和寡头的出现。就如以太坊研究者 Vlad Zamfir 所说,“数字货币都很集中,挖矿的算力也是这样。在”真实世界“的市场中,寡头竞争是常态。比起大量相对贫穷的验证者,少数相对富有的验证者之间的合做十分容易。卡特尔(Cartel)的出现是彻底能够预期到的。”
为了能够有效地替代 PoW,咱们须要一种算法来解决 nothing-at-stake 问题和 long-range attake 问题,同时不引入新的共谋风险。
一些团队,如 Tendermint 和以太坊,在解决这个问题上已经取得了许多进展。Tendermint 是经过设计 PoS 共识引擎将传统的 BFT 算法应用到区块链里。然而,Tendermint 也有自身的缺陷。统一,以太坊也在 PoS 的实现上取得了很大的进展,可是在网络里仍没有运行。
不像 PoW,PoS 未经检验且难以理解。为了理解各种设计里的不一样权衡,须要进一步的研究和实验。正因如此,咱们应该在前人的工做之上共同合做,研究出一个更有效、更快和更安全的共识系统。
在去中心化的公有链,不存在中央集权和组织来作决策,这是毋庸置疑的。在另外一方面,每一个人都是管理者——这是一个彻底去信任、开发且无需受权的系统——然而在另外一方面,又不存在可以安全升级协议的方法,没有人负责维护协议标准。
在维持区块链技术的去中心化的同时,咱们仍然须要一个由生态里开发者和其余成员组成的组织,来对新标准、特性和升级达成共识。如何在没有中心化组织(如以太坊基金会)的带领下实现这个目标,仍然是个未知数。
例如,以太坊当前的特定标准和特性只由一两个开发者来指导和决策。尽管这个模式可行,但仍存有缺陷。其中之一是不够效率——若是领头开发者太忙,或几天几周内忘记回应,则标准的推动就会陷入停滞,无论这个标准对其余参与构建区块链的人来讲是多么重要。在没有明确领导下制定标准,将带来混乱,很难快速即便地对问题达成共识。在社区越大时,这种状况越严重。
另外一种方法是彻底开放和去中心化区块链。然而,这会使得自治十分低效,将带来长久的危害。
咱们须要一种更好的方法。
Tezos 试图经过链上治理(on-chain governance)让区块链拥有升级协议的能力,但这还是构想,还未被实现,也未被证实合理。
总之,治理区块链是一个棘手的问题。在治理控制权的集中和分布之间作好权衡,这是维持发展的关键所在。
制造充足的开发工具,这其实是开发者的职责,尤为是对于想高效完成工做的开发者来讲。
在当前区块链生态系统里,开发工具显然没法让人满意。即便是经验丰富的开发者,在区块链之上开发功能性协议或去中心化应用也是一项艰巨的任务。
我从一个 Solidity 和区块链开发人员的角度,列举了一些生态里缺少的工具:
可以检查代码错误,且集成开发智能合约和区块链分析所需插件的 IDE。
有完整文档,且容易使用的构建工具和编译器。
持续更新的 API 和框架技术文档。
测试框架。以太坊里有一些可用的测试框架,如 Truffle,但咱们急需能提供更多选项和实验的测试框架。我看到过许多智能合约未通过测试,却存着数以万计的美圆。在任何状况下,缺少测试都不是一个能够使人接受的选择,尤为是与大额资金相关时。举例来讲,BAT 的代币销售合约里就没有测试套件,但它却在 24 秒内募集了 3600 万美圆。任何理性的人都明白,若是合约能够移动那么多钱,那它极可能会遭受攻击。
调试工具。调试 Solidity 代码就像在黑暗隧道里蒙着眼睛寻找金子。在开发网站时,我可使用调试器一行一行单步调试代码。可是 Solidity 开发环境里没有相似的工具,这使人沮丧。咱们急需一种能够隔离和诊断问题的易用工具。
日志工具。与上述相同。
量子计算机是密码学和加密货币的潜在威胁之一。
尽管量子计算机目前只能解决特定类型的问题,但这种状况不会一直持续。量子计算机能够有效地攻破当前流行的公钥算法,这听起来很可怕,但事实如此。
在设计区块链和底层的加密算法时,咱们应该考虑怎么使它拥有抗量子的特性,这是很重要的。
抗量子解决方案
在我有限的认知里,后量子算法的研究有六个不一样的方向: Lattice-based cryptography, Multivariate cryptography, Hash-based cryptography, Code-based cryptography, Supersingular elliptic curve isogeny cryptography, 和 Symmetric key quantum resistance systems(如 AES 和 SNOW 3G)。
无论最终方案是什么,探寻一种抗量子的密码解决方案都是咱们首要关注的重点。
咱们须要一种跨链通讯的解决方案,使得咱们能在不一样链(如比特币、以太坊和莱特币等)之间无缝进行通讯和转帐。
咱们须要打造一套更好的密钥管理系统,让应用程序基于之上运行。
咱们须要更高效的签名方案和密码系统,使得它们能够在低运算资源的设备上运行,同时又保证安全性。
还有...
I-C-O 吸引了太多的注意力和资金。与此同时,一些全身心投入解决这些问题的研究者和开发人员却得不到足够的支持。这不是一件好事。
更使人遗憾的是,许多人,包括一些领域内有影响力的开发人员和领袖在内,都由于金钱而选择忽略这些问题。
在接下来一年里,个人目标会:
持续关注这些问题
投入时间去思考解决方案
鼓励其余研究者和开发者作一样的工做
无论当前的投资环境是否存在泡沫,我都是区块链坚决的信仰者。做为开发者,咱们有义务投入精力去解决这些问题,将区块链带向主流人群。同时咱们也须要投资者,来挖掘和支持这些工做。
(内容来源:知乎-趁风卷。文章首发:每日币吹 本文是 Fundamental challenges with public blockchains 的非彻底翻译。 原文做者 Preethi Kasireddy 是 Coinbase 的前员工,她写的技术文章很是适合新手阅读。)
如下是咱们的社区介绍,欢迎各类合做、交流、学习:)