链客,专为开发者而生,有问必答!数据库
此文章来自区块链技术社区,未经容许拒绝转载。安全
前言:关于区块链适合作什么和不适合作什么?一直都有争议。那么,经过什么方式来辨别呢?本文用详细的流程图来应对这个问题。本文做者是Mohammed ElSeidy,由“蓝狐笔记”社群的“鑫鑫”翻译。服务器
围绕区块链的大肆炒做严重夸大了这项新技术的实际能力和应用。这种狂热使得企业、开发者和投资人难以理解其实际的局限性并找出适合区块链或者分布式帐本技术的正确应用场景。网络
来自ETH Zurich的Karl Wüst和Arthur Gervais最近发布了一份同行评审论文,它提出了一种结构性的方法,该方法有助于肯定特定应用问题应该如何解决的合理技术方案。本文中,咱们将介绍这种方法并解释论文中的用到的一些例子。less
技术对比分布式
不一样类型的状态持久化对比性能
区块链是一种持久化(保存)状态的"仅可添加"的帐本。状态能够是交易信息,程序数据,或者哈希过的文档等等。基本上,就是任何须要持久化存储的信息。数据库担当这项任务已有几十个年头。此外,区块链表明了一种新的状态持久化技术——而且包含数字签名和防篡改在内的额外特性。让咱们来从新审查一下三种主流技术:区块链
1.数据库优化
首先,数据库(单个,并行,或者分布式)被用于持久化状态和查询数据已经有几十年历史。大量有价值的研究已经被用于优化不一样层级的查询处理和状态持久化上。spa
• 天然地,在交易吞吐量和查询延迟方面它们拥有最高的性能。
• 然而,一直以来,它们被设计为单一机构的中心化管理。所以,不一样参与方之间不须要共识机制。
2.公链(Permissionless Blockchains)
公链是不受中心化机构管理的公共帐本(状态)。也就是说,帐本分布在一个动态P2P网络中,网络中可能还会有恶意的节点。
• 中本聪的智慧在于设计了一种分布式状态上维持共识的机制,且是在动态和不可信的网络中实现的。这意味着公链能够容忍网络中包含少许拜占庭或不可信行为。
• 凡事都有代价,须要在性能消耗(吞吐量和延迟)上有所取舍。在比特币中,急剧的性能降低是因为POW协议自己的设计就很是慢。和普通数据库相比,在任何公链中,性能的降低都是不可避免的。由于无论怎么样,要维护分布式状态的一致性,(地理分布)网络中的不一样节点之间就必须进行通讯。
3.联盟链(Permissioned Blockchains)
联盟链表明了一种混合式的设计选择。特别的,他们不是单一的中心化实体,而是受权给一小部分预先选定能够写入状态的可信节点。
• 因为数据库网络不会扩展到大量的公共节点,和公链相比,它的吞吐量和延迟要好得多。
• 尽管如此,它的性能仍然没法跟一个中心化数据库相匹敌。
在看完这些不一样系统以后,咱们很容易认识到没有一个适用于全部场景的方案。任何事情都须要有所取舍。不一样的应用有不一样的需求,所以须要不一样的合适的解决方案。
"你须要区块链吗?"流程图
选择正确技术方案的流程图。TTP(Trusted Third Party)表明可信第三方,writer是一个能够写入状态到数据库或者区块链的实体。
这一节描述了论文中一个通用的高层次流程图,用于为你的应用寻找合适的技术。注意writer是一个能够将状态写入数据库或区块链的实体。
1.若是你的应用不须要持久化状态,那么很明显不须要区块链或者任何数据库。
2.相似的,若是只有一个写入状态的writer,那么和常规数据库相比区块链并不能提供额外的保障。相反,从性能角度来讲数据库可能更加高效。
3.不然,若是有超过一个写入状态的writer,咱们选择另一条路径。问题变成了是否是有一个在线TTP(可信第三方)就足够了,或者换句话说,是否须要防篡改。若是应用不能依赖单一可信实体,咱们能够进一步分析是否须要区块链。不然,不须要用区块链,从性能角度来讲依赖一个中心化实体更加高效。
4.下一个问题是"全部写入状态的writer的身份是否可知?"。若是因为身处不可信的动态网络于是身份不可知,好比互联网,那么公链是合适的选择。
5.不然,若是身份是可知的,那么下一个问题是"这些writer是否彼此信任?"。若是是,那么也不须要区块链,使用提供共享写入权限的数据库就足够了。不然,若是writer们不信任彼此,那么最合适的技术是联盟链。
6.最后,若是是联盟链,取决因而否要求公开可验证性,容许任何人读取状态(公开联盟链)或者只有少部分受限的用户(私有联盟链)。
应用实例
让咱们经过一些例子来理解什么应用确实须要区块链,哪些不须要以及为何不须要。
不须要区块链的应用
供应链管理系统
• 供应链管理(SCM):这的确是一类反复出现的应用。让咱们按照流程图来找出最为匹配的技术。
1.SCM确实须要存储数据。
2.涉及多个writer,即拥有最终产品的某些部分的不一样参与方。
3.继续咱们的方法,SCM在技术上极可能老是使用一个在线TTP。例如,Skuchain认可只须要单一的信任源,然而这就去除了区块链的去中心化成分,所以它等价于一个可信的中心化服务器。
4.若是那样作不可行,至少全部的writer是可知的,这样留给咱们的只有联盟链或者不使用区块链这两个选择。
5.SCM在数字和物理世界之间的接口存在一致性问题。一般须要人或者某些受单一writer控制的机器来登记到达仓库的某个商品,若是质量没有问题的话。若是这些雇员的操做是不可信的,那么整个供应链就是一种技术上的妥协,由于恶意writer能够提供任意数据。从另外一方面来讲,若是全部的writer们都是可信的,那么就不须要区块链,由于使用一个提供共享写入权限的常规数据库便可。
注意若是经过一些技术手段,数字和物理世界之间的链接能够经过一种安全的方式实现,那么前面的论证可能会发生变化。
• 物联网:不少人提出了区块链技术在物联网(IoT)上的可能使用场景,经过智能合约来为资源的消费和供给的支付提供一个自治系统。因为系统固有的去中心化特性,实体们彼此互不信任,使用区块链彷佛很天然。
然而,和供应链管理同样,物理和数字世界之间的接口形成了潜在的问题。若是计算机把从传感器中读到的数值提供给区块链,区块链没法保证这些数值的正确性。若是只是须要自动化,没有必要使用区块链,能够用一个可信方来代替。
适合使用区块链的应用
跨行和跨境支付:对于金融应用,通常来讲区块链技术很是合适,由于参与方一般都但愿规避风险而且不想依赖强信任假设。
1.在跨行支付中包含多方(银行)担任的writer及想要交换价值和交易的主体。所以状态须要被持久化。
2.银行都是writer,所以有不止一个writer。
3.在单币种系统中,中央银行能够做为TTP。
4.不然,还有一种配置,中央银行不想担任每笔交易的验证者,只想做为一个认证受权机构给银行们发放牌照,让它们参与到系统中来。这意味着系统的全部writer都是可知的,咱们可使用联盟链。
• 贸易和公平交易协议:相似的,数字商品的交易极可能不须要一个可信的争端调停者,所以很是适合使用区块链,而物理商品则仍然须要可信第三方来解决争端。
• 电子投票:相似的,电子投票也具备区块链能够派上用场的属性。例如,一方面,隐私是一个主要需求,由于投票必须是匿名的从而避免被胁迫。另外一方面,电子投票须要提供必定的公开可验证性。因为有这些需求,使用区块链来帮忙获取这些渴望获得的属性彷佛是合理的。
结论
和传统观点相反,区块链不是一种能解决全部技术问题的方案。实际上,它们更适用于知足一组要求的某一类应用。特别是那些宁肯牺牲性能来换取去中心化和防篡改的一致性状态的应用。
尽管如此,目前不少"承诺的"应用仍然不适合使用区块链,好比供应链管理。在遇到那些狂热的开发者和那些跟风炒做而且不真正去思考他们方案的底层技术和必要性的企业家们时,咱们须要保持警戒。
到如今为止,有信任需求的数字商品和服务彷佛是最适合使用区块链的应用场景。
风险警示:蓝狐笔记全部文章都不构成投资推荐,投资有风险,投资应该考虑我的风险承受能力,建议对项目进行深刻考察,慎重作好本身的投资决策。