01
背景介绍
BSN 凋谢联盟链(BSN Open Permissioned Blockchain,简称 OPB)包含多条基于私有链框架和联盟链框架搭建的专用链,开发者能够抉择适宜利用业务需要的凋谢联盟链部署和运行智能合约和分布式应用,每条凋谢联盟链各有特点和劣势,均应用相似私有链的燃料机制通过人民币计价,使用方便简洁。在符合国家监管政策的前提下,实现“开箱即用、疾速上链”!
中移链是由中国移动区块链团队在 EOS 根底上对底层框架进行的革新,在满足我国信息化监管需要、合规可控的前提下,打造的中国移动区块链服务平台,不仅丰盛了 BSN 的技术体系,同时为 BSN 生态中的企业和开发者用户提供了更加多元化的技术抉择。
为了适配 BSN 凋谢联盟链 - 私有链可按本身框架特点抉择基于信赖 BSN 根 CA 对立颁发的节点身份证书,中移链基于 EOS 底层进行革新,在节点之间减少了 CA 证书认证,同时节点准入配置无需节点重启,可动静加载,批改后实时失效。
02
技术架构
EOS 节点通信基于 P2P 网络进行通信,P2P 网络是指由对等节点组成的网络,没有服务端,客户端的区别。节点通常采纳 TCP 协定、应用指定端口与相邻节点建设连贯,建设连贯时也会有认证“握手”的通信过程(handshake_message)。基于 P2P 网络的个性,区块链节点能够随便退出和退出。中移链是在 EOS 根底上对其底层框架进行革新,齐全继承了 EOS 所领有高性能解决能力、易于开发以及用户收费等劣势。
鉴于 P2P 网络的个性,无奈满足 BSN 凋谢联盟链须要的平安准入准则。因而,中移链在 P2P 节点中退出 TLS 证书准入机制,通过 TLS 证书进行公有访问控制,以管制哪些参与者能够拜访和应用公有中移链网络,通过在参与者节点之间建设 TLS 连贯来满足平安连贯要求,只有领有正确证书的节点能力退出网络,以此实现对接入节点的访问控制。
整体 EOS 架构图如下:
-
BLOCK.LOG
存储区块信息。
-
CHAINBASE/ROCKSDB
内存表信息。
-
FORKDB
用于存储候选的块分支。
-
节点之间 P2P 通信协议
次要指标是同步无效的块,转发交易。本次革新基于 NET_PLUGIN 插件, 减少 TLS 证书对 P2P 节点进行认证。
-
DPOS 共识机制
是一种基于投票选举的共识算法,相似于代议制专制。在 POS 的根底上,DPOS 先选举若干代理人,由代理人验证和记账,代理人之间轮流出块。
-
EOS-VM
负责加载和解析编译后的智能合约字节码,也就是 WASM。
-
WASM
负责执行字节码来计算智能合约运行的后果。
-
ABI
为二进制接口文件, 用于形容智能合约的接口信息。
-
CLEOS
蕴含 NODEOS 和 KEOSD 模块,NODEOS 用于节点启动和治理,KEOSD 用于钱包治理。
03
证书与 TLS 原理介绍
数字证书是指在互联网通信中标记通信各方身份信息的一个数字认证,人们能够在网上用它来辨认对方的身份,因而数字证书又称为数字标识。
SSL 证书,也称为服务器 SSL 证书,将 SSL 证书装置在网站服务器上,可实现网站身份验证和数据加密传输双重性能。SSL 协定及其继任者 TLS 协定,是一种实现网络通信加密的平安协定,可在客户端 (浏览器) 和服务器端 (网站) 之间建设一条加密通道,保证数据在传输过程中不被窃取或篡改。
中移链通过 TLS 证书认证,实现了节点的身份管控,确保只有携带正确证书的节点能力进行 P2P 接入。TLS 握手是平安超文本传输协定(HTTPS)通信技术的一部分,本次革新后区块链节点正是应用 HTTP 和 TLS 证书进行平安的通信,整套通信流程如下:
中移链中节点的 TLS 握手包含以下步骤:
1. 待接入节点会关上一个 TLS 认证并连贯到链主节点。
2. 主节点尝试通过申请可辨认信息来验证接入节点的真实性。
3. 待接入节点发送蕴含公钥的 TLS 证书作为回复。
4. 主节点会验证 TLS 证书,确保其无效且与用户名匹配。主节点对 TLS 证书验证通过,会应用公钥加密并发送蕴含密钥的音讯给接入节点。
5. 待接入节点应用其私钥解密音讯并检索会话密钥,而后应用会话密钥加密并向链主节点发送确认音讯。
04
中移链实现节点准入管制革新
在现有的 EOS 发行版本中,所有 P2P 节点接入只有 HTTP 协定,短少 TLS 证书所需环境。在本次革新中引入了 OpenSSL 库,该库蕴含一个类以及类模板,次要用于对 SSL 认证性能的反对。基于 SSL 库中流的特点,在区块链进行 P2P 连贯时,P2P 套接字会包装到 SSL 流中,在曾经存在的流下层做了一层加密并结构一个 SSL 上下文对象,这个对象用于设置 SSL 认证的参数(如认证模式、认证文件等)
想要启用证书验证性能,只须要在 net 配置中增加 p2p-tls* 等参数。在配置这些参数当前,验证才会启动,其中 p2p-tls-security-group-ca-file 为 CA 核心的认证文件。所以退出的节点都须要从一个 CA 认证核心中生成无效 TLS 证书能力退出 P2P 网络。
理论应用中,在启动第一个出块节点时,可抉择是否启动准入管制。如下图,在节点启动参数中配置了 p2p-tls* 等参数当前,参数别离为 CA 核心认证,由 CA 核心颁发的节点证书和证书的 key。在第一个节点启动后,零碎会检测 p2p-tls* 等参数,主动启动 TLS 证书校验。
后续节点须要携带雷同 CA 核心颁发的 TLS 证书能力连贯到主链进行同步。通过革新 EOS 的代码,减少 SSL 库和配置参数解析,中移链实现了公链对准入管制的革新。
05
节点准入管制验证
基于中移链最新版本,进行了多轮测试。
通过 TLS 证书进行节点准入管制:
1. 批改 node1 节点 chain.js 文件,退出 ca 认证核心和 node1 签名证书
2. 启动 node1 节点
3. 启动后节点失常出块
4. 配置 node2 证书
5. 启动 node2 节点
6. node2 失常同步块
06
意义
区块链近年来飞速发展,联盟链在合乎我国监管政策要求的前提下,曾经为实体经济所服务。BSN 凋谢联盟链 (Open Permissioned Blockchain) 是一种介于公链和联盟链之间的底层框架,具备以下特点:第一凋谢,所有人能够自在应用;第二联盟,对区块链网络节点的退出和退出实现管控。中移链联合 CA 证书实现节点准入管制,实现了联盟链革新需要,正式退出凋谢联盟链队列。并且绝对于公链,凋谢联盟链中的节点数量更少,只需大量节点参加便可实现共识过程,进一步晋升交易解决效率。
07
参考链接
BSN 凋谢联盟链:
https://opb.bsnbase.com/main/…
官网 EOSIO 根底介绍:
https://developers.eos.io/wel…
官网 EOSIO 的 CLEOS(命令行工具):
https://developers.eos.io/man…
官网 EOSIO 的 Net Plugin(网络模块):
https://developers.eos.io/man…
亚马逊 SSL/TLS 证书介绍:
https://aws.amazon.com/cn/wha…