公有链
区块链类型
公有链是指全世界任何人都可读取、发送交易且交易能获得有效确认的、也可以参与其中共识过程的区块链。
概念
根据区块链网络中心化程度的不同,分化出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%,这对现有工商业应用和法律环境来说可用性较差。
参考资料
最新修订时间:2024-06-11 00:13
目录
概述
概念
公有区块链系统
参考资料