公有链是指以公共性原則在互联网上建立的去中心化的分布式网络系统。 其中的每个参与者都可以访问共享的账本,并加入网络,这允许他们进行记录和交换事务数据。比特币的区块链就是一个公有链,这是一个分散的数字基础设施,可以安全地存储及传输数字记录,这可以明确的证明任何事项是不可更改的。
公有链以完全公开和透明的方式运行,这意味着不受第三方控制的环境下进行交易。 其中的每个交易都可以被所有的参与者观察到和查看,这样就可以避免欺诈行为,也不需要担心合同到期支付不足的情况发生。公有链完全缺乏中心化的管理,它取而代之的是由共识机制来确保网络安全和正常运作。简言之,不是由某个具体实体来进行管理,而是有多个参与者共同参与。
公有链的优点是,可以降低交易费用和节省时间,因为公有链的交易是相对安全、快速、可追溯的。因为数据是由大量用户共享的,所以信息的安全性也会大大提高,网络中的任何一位用户也不可能通过改变信息来来欺诈他人。此外,它提供了一种用于共享和存储数据的安全系统,并且性能也比传统的数据库更加稳定,可以更多的解决现实生活中的问题。
总而言之,公有链的目的是促进终端用户或节点之间安全的、去中心化的交易,能够有效的保护双方的数据和访问权限,从而避免欺诈行为的出现。公有链的安全性、可信性和可追溯性等特性可以改变交易的未来,使人们能够改变传统社会账本的繁文缛节。
公有链概念
根据区块链网络中心化程度的不同,分化出3种不同应用场景下的区块链:
(1)全网公开,无用户授权机制的区块链,称为公有链;
(2)允许授权的节点加入网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链;
(3)所有网络中的节点都掌握在一家机构手中,称为私有链。
联盟链和私有链也统称为许可链,公有链称为非许可链。
公有区块链系统
公有链中,任何节点无须任何许可便可随时加入或脱离网络。从最早的比特币系统人手介绍公有链系统的发展现状。
点对点电子现金系统:比特币
与传统分布式系统的C/S , B/S或三层架构不同,比特币系统基于P2P网络,所有节点对等,且都运行同样的节点程序。
节点程序总体上分为两部分:一部分是前台程序,包括钱包或图形化界面;另一部分是后台程序,包括挖矿、区块链管理、脚本引擎及网络管理等。
区块链管理:涉及初始区块链下载、连接区块、断开区块、校验区块和保存区块,以及发现最长链条的顶区块。
内存池管理:即交易池管理。节点将通过验证的交易放在一个交易池中,并准备好将其放入下一步挖到的区块中。
邻接点管理:当一个新比特币节点初始启动时,它需要发现网络中的其他节点,并与至少一个节点连接。
共识管理:比特币中的共识管理包括挖矿、区块验证和交易验证规则。比特币采用PoW共识机制,依赖机器进行哈希运算来获取记账权,同时每次达成共识需要全网共同参与运算,允许全网50%节点出错。
密码模块:比特币采用RIMEMD和SHA-256算法及Base-58编码生成比特币地址。
签名模块:比特币采用椭圆曲线secp256k1及数字签名算法ECDSA来实现数字签名并生成公钥。
脚本引擎:比特币的脚本语言是一种基于堆栈的编程脚本,共有256个指令,是非图灵完备的运算平台,没有能力计算任意带复杂功能的任务。
智能合约和去中心化应用平台:以太坊
比特币的区块链架构对虚拟货币以外的应用场景支持非常有局限性,随着区块链技术从比特币中独立出来,其作为可编程的分布式信用基础设施的发展理念被逐渐确立,并过渡到区块链2.0模式,以支持智能合约、去中心化应用为特征。以太坊是区块链2.0模式典型代表。
与比特币相比,以太坊在整体设计上主要有以下不同:
(1)账户:比特币没有账户概念,用户余额是从各自在区块链上所有未花费交易输出(UnspentTransaction Output, UTXO ) 计算得来。以太坊则设计了两种用户,一种是外部账户,一种是合约账户。根据状态机模型,以太坊可视为一个通用的管理对象状态转移的去中心化平台,账户就是有状态的对象。外部用户的状态就是余额,合约账户的状态包括余额、代码执行情况、合约的存储等。
(2)区块链设计:以太坊的区块链不仅保存交易清单,还保存最新状态,单纯的Merkle树已无法满足这些要求,因此以太坊采用Merkle Patricia树实现对交易和状态的校验和查询。
(3)共识机制:以太坊版本采用基于Ethash算法的PoW共识机制,相对于比特币仅依靠CPU计算难度问题,以太坊的Ethash加入内存难度,并引入有向无环图(Directed Acyclic Graph, DAG ),避免了矿池算力集中的问题。同时,以太坊采用GHOST (GreedyHeaviest Observed SubTree)协议同时给产生“叔区块”的矿工和将“叔区块”包含进主链的矿工奖励,不仅增强了安全性,还进一步避免了算力集中问题。以太坊下一版本将采用PoS共识机制。
(4)图灵完备的计算环境:通过以太坊虚拟机(EVM)提供图灵完备的计算环境,用于支持除虚拟货币外更广泛的应用场景。但图灵完备同时意味着对无限循环、递归调用等语句的潜在支持,这也带来了停机问题(不存在一个通用的图灵机来判定任何输入的图灵机是否最终能停机),以太坊通过引入燃料(Gas)作为强制交易费,不提供燃料的交易不会被执行,也不会被包含进区块,燃料不足的计算将被终止,这样,通过经济的方式来保障平台的安全。
公有链系统存在的问题
(1)激励问题:为促使全节点提供资源,自发维护整个网络,公有链系统需设计激励机制,以保证公有链系统持续健康运行。但比特币的激励机制存在一种“验证者困境”,即没有获得记账权的节点付出算力验证交易而没有任何回报。
(2)效率和安全问题:比特币平均每10 min产生1个区块,且其PoW机制很难缩短区块时间,PoS相对而言可缩短区块时间,但更易产生分叉,所以交易需要等更多确认才被认为安全,Gervais A等的试验得出:在假设各有30%算力的前提下,以太坊需要37个区块的确认才能达到比特币6个区块确认的安全水平。一般认为,比特币中的区块经过6个确认后才是足够安全的,这大概需要1h,对于大多数企业应用需求来说根本无法满足。
(3)公有链面临的安全风险:包括来自外部实体的攻击(拒绝服务攻击DDoS等)、来自内部参与者的攻击(冒名攻击Sybil Attack、共谋攻击Collusion Attack等)及组件的失效、算力攻击等。
(4)隐私问题:公有链上传输和存储的数据都是公开可见的,仅通过“伪匿名”的方式对交易双方进行一定隐私保护。对于某些涉及大量商业机密和利益的业务场景来说,数据的暴露不符合业务规则和监管要求。
(5)最终确定性(Finality)问题:交易的最终确定性指特定的某笔交易是否会最终被包含进区块链中。PoW等公有链共识算法无法提供最终确定性”,只能保证一定概率的近似,如在比特币中,一笔交易在经过2h后可达到的最终确定性为99.9999%,这对现有工商业应用和法律环境来说可用性较差。