联盟链的实际落地离不开产品化,从技术实现到产品落地,需要配套提供易用的管理组件,以及方便企业开展实施部署、运维和业务人员使用的工具集。同时也需要灵活的权限管理设计,自动化运维节点防控违法有害信息的机制及成熟的区块链应用开发配套。
PlatONE联盟链从实际业务实施中的痛点出发,不断设计和优化联盟链技术架构与治理工具水平,并将其沉淀和内化为一个通用基础设施,为大规模生产级的产业应用提供有效支撑。
高度优化的共识算法带来高性能
PlatONE的共识算法为BFT类共识算法,其继承了PBFT和Tendermint的三阶段协议设计特点,同时也吸收了Tendermint的算法的优点,同样将round change流程并⼊了正常的共识流程,从⽽将round change的消息复杂度降低为 。同时优化了锁定和解锁的机制,并且在很多地⽅作了优化和改进。
作为⾼度优化的BFT共识算法,PlatONE的共识⽀持超过100个共识节点,极⼤地提⾼了系统的去中⼼化程度,同时也极⼤地提⾼了系统的共识效率,使系统拥有很⾼的TPS。PlatONE单链TPS超过2.4万,最高可达20万,交易响应时间达毫秒级。
企业级部署与运维工具集
目前市面上大部分联盟链的部署和运维⼯具集都多多少少涉及到工具的安装以及额外的环境依赖,所提供的部署工具集也常常需要执行大量的部署步骤,花费较多的时间和学习成本。
PlatONE提供了丰富的企业级部署⼯具,极大地降低了复杂度;以及提供了完善的说明文档和相关的PlatONE运维建议,贯穿着部署与运维的各个方面。以灵活、易用和极低的学习成本为出发点,以最大化提高部署与运维友好度为⽅向,从而实现更快捷的部署、开发和维护。
工具集在如下方面进行了大量优化:
PlatONE部署工具集不需要安装和额外的环境依赖;
工具集可以在不同的架构调整中,灵活地切换;
提供了多种命令以及参数,满足用户不同的部署需求;
提供了极为完善的说明文档,以及运维维护经验,降低试错成本和学习成本;
支持一键启动单个或多个节点的联盟链;
提供多种自定义的部署以及维护方式,降低了部署与维护成本;
系统提供了丰富的运维脚本,极大地降低了联盟链运维难度。
企业级合约管理
通过内置合约的方式,实现了系统参数动态调整,CNS(合约命名服务)等个性化定制服务。
系统配置参数统一通过合约进行管理,支持技术升级和治理。
节点准入管理采用上传公钥模式,避免传统CA证书过期问题和证书传递过程中的泄漏风险。
支持优化的合约权限控制、角色支持和管理。
支持CNS(Contract Name Service)服务,发送交易不再通过传统的十六进制格式的合约地址调用,而改为通过合约名称调用,减少合约升级带来的数据兼容问题。
支持区块链运维态势感知、威胁警告。动态监控区块链和智能合约的运行状态,及时汇报链上安全状况信息。
一键合约数据迁移
在智能合约升级的场景中,常伴随在新旧合约间进行历史数据迁移的需求。我们调研评估了若干种实施合约数据迁移的方案,包括:
1、硬编码迁移:指在新版本的数据合约中保存一个指向旧版本数据合约的合约地址,从而使新版本数据合约保存增量的数据内容。
2、硬拷贝迁移:指利用外部迁移工具,将旧版本数据逐步拷贝到链下,再从链下重新存储到新版本合约。
3、基于链存储机制迁移:指利用合约账户链上数据存储机制,在底层进行数据对象克隆和再构造的过程。
PlatONE根据其底层存储机制,实现了一套基于默克尔树的合约数据迁移协议,支持一键式将旧合约数据迁移到新部署合约。该协议迁移效率⾼、用户迁移成本小;避免导入导出导致的迁移错误;不会对原有的合约逻辑及数据造成入侵。
权限模型
现实场景中的商业模型往往是比较复杂的,它包含大量的商业元素及它们之间的关系,并且用来描述商业行为中的不同方面,如操作流程,组织结构及金融预测等。
因此为了更好地满⾜不同企业级用户的需求,且保障节点间通信安全性,以及对节点数据访问的安全性,PlatONE采用内置合约的方式实现了⼀整套完善的权限模型,包括节点准入机制,用户角色管理,合约防⽕墙等功能,充分满足不同商业需求,为产业赋能,且在网络和存储层面上做了严格的安全控制,提升系统安全性。其中:
1、节点准入机制:PlatONE通过节点管理合约对节点进⾏管理,包括节点是否能够接入网络,节点是否能够参与共识以及节点信息的维护等功能。
2、用户角色管理:PlatONE根据不同的权限,设定了不同的用户角色,并通过内置合约的方式对用户的角色进行管理。根据不同的角色,用户在系统中被赋予不同的权限。
3、合约防火墙:PlatONE中合约的调用权限由合约防火墙控制,只有合约的创建者才可以设置该合约的防火墙。
CNS(合约命名服务)
在目前主流的区块链中,用户是通过地址来访问智能合约的,比如以太坊。智能合约的地址是一段十六进制字符串,用户需要记住这段冗长的字符串才能访问链上的智能合约。当合约需要升级时,重新部署合约又会产生新的地址,所有依赖于该合约的模块都需要做相应更新。显然现有访问合约的方式对用户是不友好的,因此PlatONE实现了合约命名服务,用户可以通过合约名称及版本号来访问智能合约。
合约命名服务英文全称为Contract Name Service,简称CNS 。合约命名服务维护了名称、版本到合约地址的映射关系,提供了对系统中合约的管理功能,包括合约的注册和注销,合约注册信息和地址的查询等功能。
PlatONE使用内置合约实现了合约命名服务,用户部署合约后可以将该合约注册到内置合约中,后续调用可以通过合约名称及版本进行调用,而无需使用合约地址。如果交易是根据合约名称、版本来调用合约, PlatONE底层自动在内置合约中查询名称版本对应的合约地址,然后调用该地址的合约。