多读书多实践,勤思考善领悟

区块链的阶段和分类

本文于1552天之前发表,文中内容可能已经过时。

一. 区块链的三个阶段

区块链发展的三个阶段:比特币为代表的货币区块链技术为1.0、以太坊为代表的合同区块链技术为2.0、实现完备权限控制和安全保障的Hyperledger项目代表3.0。

1. 区块链1.0:可编程货币

区块链技术伴随比特币的产生而产生,其最初的应用范围完全聚集在数字货币上。比特币的出现第一次让区块链进入了大众视野,而后产生了莱特币、以太币、狗狗币等“山寨”数字货币。可编程货币的出现,使得价值在互联网中直接流通成为可能。区块链构成了一种全新的、去中心化的数字支付系统,随时随地进行货币交易、毫无障碍地跨国支付以及低成本运营的去中心化体系,都让这个系统变得魅力无穷。这样一种新兴数字货币的出现,强烈地冲击了船体哦那个金融体系。

2. 区块链2.0:可编程金融

受到数字货币的影响,人们开始将区块链技术的应用范围扩展到其他金融领域。其中基于区块链技术可编程的特点,人们尝试将“智能合约”的理念加入到区块链中,形成了可编程金融。有了合约系统的支持,区块链的应用范围开始从单一的货币领域扩大到涉及合约功能的其他金融领域。彩色币、比特币、以太坊、合约币等新概念的出现,让区块链技术得以在包括股票、清算、私募股权等众多金融领域崭露头角。目前,许多金融机构都开始研究区块链技术,并尝试将其运用于现实,现有的传统金融体系正在被颠覆。

3. 区块链3.0:可编程社会

伴随着区块链技术的进一步发展,其“去中心化”功能及“数据防伪”功能在其他领域逐步受到重视。人们开始认识到,在区块链的应用也许不仅局限在金融领域,还可以扩展到任何有需求的领域中去。于是,在金融领域之外,区块链技术又陆续被应用到了公证、仲裁、审计、域名、物流、医疗、邮件、鉴证、投票等其他领域中来,应用范围扩大到了整个社会。在这一应用阶段,人们试图用区块链来颠覆互联网的最底层协议,并试图将区块链技术运用到物联网中,让整个社会进入智能互联网时代,形成一个可编程的社会。

二. 区块链的五种分类

1. 根据网络范围

(1)公有链

典型案例:BTC、ETH

所谓公有就是完全对外开放,任何人都可以任意使用,没有权限的设定,也没有身份认证之类,不但可以任意参与使用,而且发生的所有数据都可以任意查看,完全公开透明。

比特币就是一个公有链网络系统,大家在使用比特币系统的时候,只需要下载相应的软件客户端,创建钱包地址、转账交易、挖矿等操作,这些功能都可以自由使用。

公有链系统由于完全没有第三方管理,因此依靠的就是一组事先约定的规则,这个规则要确保每个参与者在不信任的网络环境中能够发起可靠的交易事务。通常来说,凡是需要公众参与,需要最大限度保证数据公开透明的系统,都适用于公有链,比如数字货币系统、众筹系统、金融交易系统等。

这里要注意,在公有链的环境中,节点数量是不固定的,节点的在线与否也是无法控制的,甚至节点是不是一个恶意节点也不能保证。我们在讲解区块链的一般工作流程的时候,提到过一个问题,在这种情况下,如何知道数据是被大多数的节点写入确认的呢?实际在公有链环境下,这个问题没有很好的解决方案,目前最合适的做法就是通过不断地去互相同步,最终网络中大多数节点都同步一致的区块数据所形成的链就是被承认的主链,这也被称为最终一致性。

(2)私有链

典型案例:Multichain

私有链是与公有链相对的一个概念,所谓私有就是指不对外开放,仅仅在组织内部使用的系统,比如企业的票据管理、账务审计、供应链管理等,或者一些政务管理系统。私有链在使用过程中,通常是有注册要求的,即需要提交身份认证,而且具备一套权限管理体系。有朋友可能会有疑问,比特币、以太坊等系统虽然都是公链系统,但如果将这些系统搭建在一个不与外网连接的局域网中,这个不就成了私有链了吗?从网络传播范围来看,可以算,因为只要这个网络一直与外网隔离着,就只能是一直自己在使用,只不过由于使用的系统本身并没有任何的身份认证以及权限设置,因此从技术角度来说,这种情况只能算是使用公链系统的客户端搭建的私有测试网络,比如以太坊就可以用来搭建私有链环境,通常这种情况可以用来测试公有链系统,当然也可以适用于企业应用。

在私有链环境中,节点数量和节点的状态通常是可控的,因此在私有链环境中一般不需要通过竞争的方式来筛选区块数据的打包者,可以采用更加节能环保的方式,比如在上述共识机制的介绍中提到的PoS(Proof of Stake,权益证明)、DPoS(Delegate Proof of Stake,委托权益证明)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)等。

(3)联盟链

典型案例:R3联盟、原本链

联盟链的网络范围介于公有链和私有链之间,通常是使用在多个成员角色的环境中,比如银行之间的支付结算、企业之间的物流等,这些场景下往往都是由不同权限的成员参与的,与私有链一样,联盟链系统一般也是具有身份认证和权限设置的,而且节点的数量往往也是确定的,对于企业或者机构之间的事务处理很合适。联盟链并不一定要完全管控,比如政务系统,有些数据可以对外公开的,就可以部分开放出来。

由于联盟链一般用在明确的机构之间,因此与私有链一样,节点的数量和状态也是可控的,并且通常也是采用更加节能环保的共识机制。

2. 根据部署环境

(1)主链

典型案例:BTC、ETH

所谓主链,也就是部署在生产环境的真正的区块链系统,软件在正式发布前会经过很多内部的测试版本,用于发现一些可能存在的Bug,并且用来内部演示以便于查看效果,直到最后才会发布正式版。主链,也可以说是由正式版客户端组成的区块链网络,只有主链才是会被真正推广使用的,各项功能的设计也都是相对最完善的。另外,有些时候,区块链系统会由于种种原因导致分叉,比如挖矿的时候临时产生的小分叉等,此时将最长的那条原始的链条称为主链。

(2)测试链

这个很好理解,就是开发者为了方便大家学习使用而提供的测试用途的区块链网络,比如比特币测试链、以太坊测试链等。当然,倒也不是说非得是区块链开发者才能提供测试链,用户也可以自行搭建测试网络。测试链中的功能设计与生产环境中的主链是可以有一些差别的,比如主链中使用工作量证明算法进行挖矿,在测试链中可以更换算法以便更方便地进行测试使用。

3. 根据对接类型

(1)单链

典型案例:BTC、ETH

能够单独运行的区块链系统都可以称为“单链”,例如比特币主链、测试链;以太坊主链、测试链;莱特币的主链、测试链;超级账本项目中的Fabric搭建的联盟链等,这些区块链系统拥有完备的组件模块,自成一个体系。大家要注意了,对于有些软件系统,比如基于以太坊的众筹系统或者金融担保系统等,这些只能算是智能合约应用,不能算是一个独立的区块链系统,应用程序的运行需要独立的区块链系统的支撑。

(2)侧链

典型案例:Mixin Network

侧链属于一种区块链系统的跨链技术,这个概念主要是由比特币侧链发起的。随着技术发展,除了比特币,出现了越来越多的区块链系统,每一种系统都有自己的优势特点,如何将不同的链结合起来,打通信息孤岛,彼此互补呢?侧链就是其中的一项技术。

以比特币来说,比特币系统主要是设计用来实现数字加密货币的,且业务逻辑也都固化了,因此并不适用于实现其他的功能,例如金融智能合约、小额快速支付等。然而比特币是目前使用规模最大的一个公有区块链系统,在可靠性、去中心化保证等方面具有相当的优势,那么如何利用比特币网络的优势来运行其他的区块链系统呢?可以考虑在现有的比特币区块链之上,建立一个新的区块链系统,新的系统可以具备很多比特币没有的功能,比如私密交易、快速支付、智能合约、签名覆盖金额等,并且能够与比特币的主区块链进行互通,简单来说,侧链是以锚定比特币为基础的新型区块链。锚定比特币的侧链,目前有ConsenSys的BTCRelay、Rootstock和BlockStream的元素链等。大家要注意,侧链本身就是一个区块链系统,并且侧链并不是一定要以比特币为参照链,这是一个通用的技术概念,比如以太坊可以作为其他链的参照链,也可以本身作为侧链与其他的链去锚定。实际上,抛开链、网络这些概念,就是不同的软件之间互相提供接口,增强软件之间的功能互补,我们看下侧链的示意情况:

区块链系统<-------->侧链系统

通过这个简单的示意情况,我们可以看到,区块链系统与侧链系统本身都是一个独立的链系统,两者之间可以按照一定的协议进行数据互动,通过这种方式,侧链能起到一个对主链功能扩展的作用,很多在主链中不方便实现的功能可以实现在侧链中,而侧链再通过与主链的数据交互增强自己的可靠性。

(3)互联链

如今我们的生活可以说几乎已经离不开互联网了,仅仅互通互联,带来的能量已经如此巨大。

区块链也是这样,目前各种区块链系统不断涌现,有的只是实现了数字货币,有的实现了智能合约,有的实现了金融交易平台,有些是公有链,有些是联盟链,等等。这么多的链,五彩缤纷,功能各异,脑洞大开,不断刷新着更新颖的应用玩法。那么,这些链系统如果能够彼此之间互联会发生些什么样的化学反应呢?与传统软件不同的是,区块链应用拥有独特的性质,比如数据不可篡改性、完整性证明、自动网络共识、智能合约等,从最初的数字货币到未来可能的区块链可编程社会,这些不单单会改变生活服务方式,还会促进社会治理结构的变革,如果说每一条链都是一条神经的话,一旦互联起来,就像是神经系统一般,将会给我们的社会发展带来更新层次的智能化。

另外,从技术角度来讲,区块链系统之间的互联,可以彼此互补,每一类系统都会有长处和不足之处,彼此进行功能上的互补,甚至可以彼此进行互相的验证,可以大大加强系统的可靠性以及性能。

4. 按应用范围

按应用范围划分:基础链、行业链。有句话是这么说的,币讲的是共识,链拼的是生态。在区块链的划分中,按照生态的应用范围,可以分为以下两种类型:

(1)基础链

典型案例:ETH、EOS

特征:所谓基础链,在我理解起来就是提供底层的且通用的各类开发协议和工具,方便开发者在上面快速开发出各种DAPP的一种区块链,一般以公有链为主。

如果拿现实来类比,我们常说基础链就是操作系统。严格来说这种说法可能不够准确,不同的基础链定位还是有所不同,比如ETH和EOS可能更像操作系统,而本体和NULS则像定制协议。

(2)行业链

典型案例:BTM、GXS、SEER

特征:所谓行业链,业内似乎没有统一的定义,我觉得是在底层技术上不如基础链,且为某些行业特别定制的基础协议和工具。如果把基础链成为通用性公链,则你可以把行业链理解为专用性公链。

行业链类似我们日常生活中的某些行业标准,比如BTM就是资产类公链,GXS是数据公链,而SEER是预测类公链。

在按应用范围划分的时候,还应该有第三种分类:应用链。但总觉得应用链还是直接叫DAPP好了,跟链还是没法相提并论的。

5. 按原创程序

这个划分程度可能更为小众一些,也许就有这样的理解,网上并没有查到太多的资料。

(1)原链

典型案例:BTC、ETC

特征:这种叫法可能不够准确,我这里指的就是原创的区块链,单独设计出整套区块链规则算法的。

这种区块链对技术的要求非常高,所以其实你看到的很多项目大都不是区块链项目,是因为他们根本做不出来。

(2)分叉链

典型案例:BCH、ETH

特征:理解了原链,分叉链就很好理解了。所谓分叉链,就是在原链基础上分叉出来独立运行的主链。

相对而言,分叉链的研发难度低于主链。但是要维护好一条分叉链,后续的维护和升级工作也有很大的挑战。比如BCH对BTC的分叉,ETH对ETC的分叉,这两条分叉链都做的不错。而之前我买过的AAC也是一条基于Achain分叉的公链,目前进度就感觉一般。

6. 按层级关系

最后一种划分方式也还比较小众,且听做下简单的定义。

(1)母链

典型案例:本体、NULS、Mixin Network

特征:万链之母,能生链的链就叫做母链,可以说是底层的底层了。

第一次看到这类项目是NULS,可定制区块链的基础设施。后来看到本体也提了这样的概念……作为NULS的持有人,当然希望NULS可以超越本体啦。

(2)子链

典型案例:印链、Press one

特征:构建在底层母链基础上的区块链,链上之链,即为子链。

印链是接入NULS的第一条子链,而Press one可能是目前基于Mixin Network相对知名的子链了,本体我关注不多,不知道有没有相应的子链出现。