整理/张卓来源/PANews
区块链大热,新概念眼花缭乱。比如,在区块链文章里,常看到这样几个“链”:公有链、联盟链、私有链、侧链……你分得清吗?新出现的DApp同App之间有什么联系和区别呢?频繁出现的Protocol又到底是什么?
区块链按照准入机制,可以分为公有链、私有链和联盟链三类。
人人皆可参与的“公有链”
公有链(Public Blockchains)是指全世界任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。
公有链通常被认为是完全去中心化的,因为没有任何人或机构可以控制或者篡改其中数据的读写。
公有链一般会通过代币机制鼓励参与者竞争记账,来确保数据的安全性。
比特币、以太币都是典型的公有链。
主要特点:用户免受开发者影响、所有数据默认公开、访问门槛低,另外,免受开发者影响,公有链数据的读写不受到任何组织或个人的控制,因此也能够保护用户免于程序开发者的影响。
隐秘性更强的“私有链”
私有链是指写入权限完全在一个组织手里的区块链,所有参与到这个区块链中的节点都会被严格控制。
在某些情况下,私有链上的一些规则,可以被机构修改,比如还原交易流程等服务。
由于参与的节点是有限和可控的,因此私有链往往可以有极快的交易速度、更好的隐私保护、更低的交易成本、不容易被恶意攻击、并且能够做到身份认证等金融行业必须的要求。
主要特点:给隐私更好的保障、交易成本大幅度降低、交易速度非常之快,不过私有链最大的缺点是可以被操纵价格,也可以被修改代码,因此从这方面来说,风险又较大。
团体参与的“联盟链”
联盟链(Consortium Blockchain),是指由特定组织或团体管理的区块链,需要预先指定一些节点为记账人,每个区块的生成由所有记账人共同决定,其他节点可以交易,但没有记账权。
目前国内比较有影响力的联盟链有中国分布式总账基础协议联盟(ChinaLedger)、中国区块链研究联盟(CBRA)、金链盟等。
联盟链适合组织机构间的交易和结算,像是银行间的转账、支付,通过采用联盟链的形式,能够很好地营造一个内部生态系统。
每个银行都可以成为一个节点,但是其中一个银行的交易转账行为必须通过其他银行节点(2/3数量)的确认,才能够使区块生效。
联盟链与公有链相比,可以看作是“部分去中心化“,同时,由于节点数量得到了精简,它能够有更快的交易速度,更低的成本。
主链的“左膀右臂”——“侧链”
侧链(Side Chain)本质上是一种协议,而并非一种全新的区块链,满足这个协议的区块链都可以称为侧链。以比特币为例,这个协议具体是:可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地返回比特币主链的一种协议。
侧链技术为什么会出现?简单来讲,在比特币、以太坊等公链上做创新或拓展是比较困难的。同时,公链每秒处理交易笔数有限,比如,以太坊25tps,比特币7tps,并且在交易用户过多时会发生拥堵,甚至瘫痪。这时,侧链技术应运而生。
侧链就像是一条条通路,将不同的区块链互相连接在一起,以实现区块链的扩展。公链本身是一本分布式账本,侧链是独立于公链的另一本分布式账本。但是这两个账本之间能够“互相操作”,实现交互。
侧链的优点主要有两点:一是主链缺乏的功能,可以有侧链来提供,比如比特币网络没有智能合约的功能,但可以通过侧链来实现这一功能;二是如果主链的运行效率低下,可以将主链部分功能转移到侧链来实施。
去中心化的Dapp
DApp是Decentralized Application的缩写,中文叫去中心化应用,是基于区块链底层开发平台建立的。
符合以下3个条件的应用可以认为是一个DAPP(分布式应用):
1. 运行在分布式网络上;
2. 参与者信息被安全存储,隐私得到很好的保护;
3. 通过网络节点去中心化操作。
DApps有点类似于你可能在电脑或手机上运行的软件应用程序。
但是它们的编程并没有存储和运行在一个中心位置,比如硬盘或远程云服务器。相反,DApp编程在区块链网络上运行,区块链交易提供“燃料”来保持应用程序运行。因为它们没有中心操作点,DApps几乎没有停机时间。就像它们处理的区块链交易一样,DApp操作本质上是透明的、不可变的、可靠的。
目前,DAPP的最流行的开发平台是Ethereum(以太坊),在没有以太坊之前,开发区块链应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法,共识机制,网络协议等等。
以太坊平台对底层区块链技术进行了封装,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只要专注于应用本身的开发,从而大大降低了DAPP应用开发难度。
同一种语言——Protocol
Protocol(网络数据交换规则)为进行网络中的数据交换而建立的规则、标准或约定。用于不同系统中实体间的通信。两个实体要想通信,必须有“同一种语言”,而且,对于通信内容,怎样通信和何时通信都必须遵守一定的规定,这些规定就是协议。
为了交换大量信息,通信系统使用通用协议。每条信息都有明确的意义使得预定位置给予响应,并独立实现回应指定的行为,通信协议须参与实体都同意才能生效。为了达成一致,协议必须要有技术标准。
编程语言在计算方面也应有相应标准,所以在这个方面可以用编程语言做类比:编程语言是为了模式化的计算而传输协议为了更畅通的交流。