基本介绍

1. 区块链

自2009年比特币的创世区块诞生,到2014年区块链概念的提出,区块链技术经历了启蒙、认知、探索阶段,近些年已在金融、商业、组织协作与治理等各方面逐渐呈现出了其价值,受到各实体行业乃至国家战略层面的重视。区块链在2015世界经济论坛被列为未来六大趋势之一,也被Gartner列入企业组织在2019年需要探究的十大战略性技术。2016年12月15日,在国务院印发的《“十三五”国家信息化规划》中,强调了需加强区块链等新技术的创新、试验和应用,来抢占新一代信息技术主导权。

1.1 基本概念

1.1.1 链式结构和存储

区块链:由一个个区块前后链接组成,是“使用密码技术将共识确认的区块按顺序追加形成的分布式账本”

区块:每一个区块包含了前一个区块的哈希、相应的时间戳以及交易数据等;区块链中第一个区块通常称为“创世区块”

交易数据:交易的原始数据以及使用这些交易数据构造的默克尔树的根哈希都存储在区块中,这意味着交易数据的篡改将导致区块中的数据被改动

1.1.2 共识

区块链通过共识算法达成如下共识:

在区块链领域,采用PoW(工作量证明算法)、PoS/DPoS(权益证明算法/代理权益证明算法)与类BFT算法等结合的共识算法,这些是业界主流的共识算法。与经典分布式一致性算法(Raft, Paxos, etc.)不同的是,它们融入了经济学博弈的概念。

1.1.3 智能合约

智能合约概念是 90 年代由Nick Szabo首次提出,是指是一种旨在以信息化方式传播、验证或执行合同的计算机协议,且不依赖于第三方。

这个概念在以太坊中被首次实现并为大众所熟知。但是在以太坊和今天的区块链行业中,智能合约现在通常是指一段运行在区块链上的通用程序,不再局限于合约。

1.2 联盟链

按照许可和权限维度划分,当前区块链可分为公有链、联盟链和专有链。

公有链即无须许可的区块链系统,任何个体都可以自由进入和退出,也可以在其中写入、读取、参与交易,如比特币、以太坊等。

联盟链指由联盟成员维护的区块链,通常设计有线下认可的节点准入、用户管理和权限控制机制。联盟链可大幅降低异地结算成本和时间,比现有系统更简单,效率更高,同时继承去中心化优点减轻垄断压力。

专有链指各个节点的写入权限收归内部控制,而读取权限可视需求有选择性地对外开放。专有链具备区块链多节点运行的通用结构,适用于含多级机构的组织进行内部数据管理与审计。

1.2.1 联盟链的特点

权限控制:

安全隐私:

共识效率:

共识安全:

2. 联盟区块链平台 - PlatONE

2.1 基本概念

2.1.1 PlatONE中的共识算法

PlatONE的共识为高度优化的BFT类共识算法,其容错率为1/3,在保留即时确认(instant finality)的关键特性的同时,极大地提高了去中心化的程度。共识可以保证上链的区块是确定的,也就是说链不会出现分叉,同时每一个有效的区块都会插入到链上。

PlatONE的共识支持超过100个共识节点。相对于其他一些常见的BFT共识,PlatONE的共识的性能有显著的提升。在10个共识节点的情况下,TPS 接近 1000。

PlatONE的共识运行的相关参数可以灵活地进行配置,并且 PlatONE的共识中的共识节点集合可以灵活地进行更新。近期计划支持共识的插件化,以及共识的可审计性等。

PlatONE共识是在 round 上进行的。在特定的 round 上,通过预先设置的策略选取一个出块者节点。出块者节点的选取策略目前支持两种:round robin 和 sticky proposer。

出块者节点提议区块后,各共识节点进行共识。共识分三阶段,其中后两个阶段为投票阶段,用以保证 safety。PlatONE共识使用 round change 机制结合锁定和解锁机制来保证共识的的 liveness 。通过优化解锁机制,解决了业界多个知名项目内存在的共识死锁问题。

PlatONE共识会为每一个链上的区块生成共识证明,也就是对于该区块的各共识节点的有效签名,因而区块可以进行自验证,同时也能支持轻节点。

2.1.2 PlatONE中的权限模型

根据系统中的不同实体对象,PlatONE将权限管理进行了模块化的拆分。针对系统中用户账户、节点和智能合约,这三类实体的不同行为,分别设计了用户角色管理模块、节点管理模块和合约防火墙模块来进行权限的控制和管理。

PlatONE根据不同的权限,设定了不同的用户角色,并通过系统合约的方式对用户的角色进行管理。根据不同的角色,用户在系统中被赋予不同的权限。目前设定了如下角色:

1

每个角色的权限范围如下:

1

PlatONE通过节点管理合约对节点进行管理,包括节点是否能够接入网络,节点是否能够参与共识以及节点信息的维护等功能。根据之前用户角色的设定,只有chainCreator、chainAdmin和nodeAdmin这三类用户才可以设置系统合约中的节点数据,当需要添加节点、更新节点状态、删除节点时都需要这三类账户来调用节点管理合约。需要注意的是nodeAdmin仅可以管理自己加入的节点,chainCreator和chainAdmin可以管理所有节点。

PlatONE中合约的调用权限由合约防火墙控制,只有合约的创建者才可以设置该合约的防火墙。

合约防火墙具备合约接口级别的访问控制,通过如下两个列表实现:

2.2 架构图

cca61ea40997589546942034a32909ef

2.3 功能介绍