FISCO BCOS 区块链

2023-11-15

FISCO BCOS是由国内企业主导研发、对外开源、安全可控的企业级金融联盟链底层平台,由金链盟开源工作组协作打造,并于2017年正式对外开源。

社区以开源链接多方,截止2020年5月,汇聚了超1000家企业及机构、逾万名社区成员参与共建共治,发展成为最大最活跃的国产开源联盟链生态圈。底层平台可用性经广泛应用实践检验,数百个应用项目基于FISCO BCOS底层平台研发,超80个已在生产环境中稳定运行,覆盖文化版权、司法服务、政务服务、物联网、金融、智慧社区等领域。

注解

FISCO BCOS以联盟链的实际需求为出发点,兼顾性能、安全、可运维性、易用性、可扩展性,支持多种SDK,并提供了可视化的中间件工具,大幅缩短建链、开发、部署应用的时间。此外,FISCO BCOS通过信通院可信区块链评测功能、性能两项评测,单链TPS可达两万。

关键特性

整体架构  
架构模型 一体两翼多引擎
群组架构 支持链内动态扩展多群组
分布式存储 支持海量数据存储
并行计算 支持块内交易并行执行
节点类型 共识节点、观察节点
计算模型 排序-执行-验证
系统性能  
峰值TPS 2万+ TPS(PBFT)
交易确认时延 秒级
硬件推荐配置  
CPU 2.4GHz * 8核
内存 8GB
存储 4TB
网络带宽 10Mb
账本模型  
数据结构 链式结构,区块通过哈希链相连
是否分叉 不分叉
记账类型 账户模型(非UTXO)
共识算法  
共识框架 可插拔设计
共识算法 PBFT、Raft、rPBFT
存储引擎  
存储设计 支持KV和SQL
引擎类型 支持leveldb、rocksdb、mysql
CRUD接口 提供CRUD接口访问链上数据
网络协议  
节点间通信 P2P协议
客户端与节点通信 JsonRPC,Channel协议
消息订阅服务 AMOP协议
智能合约  
合约引擎 支持Solidity和预编译合约
引擎特点 图灵完备,沙盒运行
版本控制 基于CNS支持多版本合约
灰度升级 支持多版本合约共存、灰度升级
生命周期管理 支持合约和账户的冻结、解冻
密码算法和协议  
国密算法 支持
国密SSL 支持
哈希算法 Keccak256、SM3
对称加密算法 AES、SM4
非对称加密算法 ECDSA、SM2
非对称加密椭圆曲线 secp256k1、sm2p256v1
安全控制  
存储安全 支持落盘数据加密存储
通信安全 支持全流程SSL
准入安全 基于PKI身份认证体系
证书管理 支持证书颁发、撤销、更新
权限控制 支持细粒度权限控制
隐私保护  
物理隔离 群组间数据隔离
隐私保护协议 支持群签名、环签名、同态加密
场景化隐私保护机制 基于WeDPR支持隐匿支付、匿名投票、匿名竞拍、选择性披露等场景
跨链协议  
SPV 提供获取SPV证明的接口
跨链协议 基于WeCross支持同构、异构跨链
开发支持  
合约开发工具 WeBASE-IDEChainIDE
开发建链工具 提供一键搭链脚本工具
合约部署与测试工具 基于Java SDK的console, 交互式控制台基于Web3SDK的console
SDK语言 Javanodejsgopython
快速开发组件 提供Spring-boot-starter
压测工具 SDK内嵌压测工具,支持Caliper
运维支持  
运维建链工具 提供企业级联盟链部署工具
可视化数据展现 区块链浏览器
可视化节点管理 基于WeBASE,提供节点管理器
动态管理节点 支持动态新增、剔除、变更节点
动态更改配置 支持动态变更系统配置
数据备份与恢复 提供数据导出与恢复服务组件
监控统计 输出统计日志,提供监控工具
监管审计 基于WeBASE,提供监管审计入口

架构

FISCO BCOS 在2.0中,创新性提出“一体两翼多引擎”架构,实现系统吞吐能力的横向扩展,大幅提升性能,在安全性、可运维性、易用性、可扩展性上,均具备行业领先优势。

 

一体指代群组架构,支持快速组建联盟和建链,让企业建链像建聊天群一样便利。根据业务场景和业务关系,企业可选择不同群组,形成多个不同账本的数据共享和共识,从而快速丰富业务场景、扩大业务规模,且大幅简化链的部署和运维成本。

两翼指的是支持并行计算模型和分布式存储,二者为群组架构带来更好的扩展性。前者改变了区块中按交易顺序串行执行的做法,基于DAG(有向无环图)并行执行交易,大幅提升性能;后者支持企业(节点)将数据存储在远端分布式系统中,克服了本地化数据存储的诸多限制。

多引擎是一系列功能特性的总括,比如预编译合约能够突破EVM的性能瓶颈,实现高性能合约;控制台可以让用户快速掌握区块链使用技巧等。

上述功能特性均聚焦解决技术和体验的痛点,为开发、运维、治理和监管提供更多的工具支持,让系统处理更快、容量更高,使应用运行环境更安全、更稳定。

核心模块

FISCO BCOS采用高通量可扩展的多群组架构,可以动态管理多链、多群组,满足多业务场景的扩展需求和隔离需求,核心模块包括:

  • 共识机制:可插拔的共识机制,支持PBFT、Raft和rPBFT共识算法,交易确认时延低、吞吐量高,并具有最终一致性。其中PBFT和rPBFT可解决拜占庭问题,安全性更高。
  • 存储:世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状态急剧膨胀导致性能下降的问题;引入可插拔的存储引擎,支持LevelDB、RocksDB、MySQL等多种后端存储,支持数据简便快速扩容的同时,将计算与数据隔离,降低了节点故障对节点数据的影响。
  • 网络:支持网络压缩功能,并基于负载均衡的思想实现了良好的分布式网络分发机制,最大化降低带宽开销。

性能

为提升系统性能,FISCO BCOS从提升交易执行效率和并发两个方面优化了交易执行,使得交易处理性能达到万级以上。

  • 基于C++的Precompiled合约:区块链底层内置C++语言编写的Precompiled合约,执行效率更高。
  • 交易并行执行:基于DAG算法根据交易间互斥关系构建区块内交易执行流,最大化并行执行区块内的交易。
  • 交易生命周期的异步并行处理:共识、同步、落盘等各个环节的异步化以及并行处理。

安全性

考虑到联盟链的高安全性需求,除了节点之间、节点与客户端之间通信采用TLS安全协议外,FISCO BCOS还实现了一整套安全解决方案:

  • 网络准入机制:限制节点加入、退出联盟链,可将指定群组的作恶节点从群组中删除,保障了系统安全性。
  • 黑白名单机制:每个群组仅可接收相应群组的消息,保证群组间网络通信的隔离性;CA黑名单机制可及时与作恶节点断开网络连接,保障了系统安全。
  • 权限管理机制:基于分布式存储权限控制机制,灵活、细粒度地控制外部账户部署合约和创建、插入、删除和更新用户表的权限。
  • 支持国密算法:支持国密加密、签名算法和国密通信协议。
  • 落盘加密方案:支持加密节点落盘数据,保障链上数据的机密性。
  • 密钥管理方案:在落盘加密方案的基础上,采用KeyManager服务管理节点密钥,安全性更强。
  • 同态加密群环签名:链上提供了同态加密、群环签名接口,用于满足更多的业务需求。

可运维性

联盟链系统中,区块链的运维至关重要,FISCO BCOS提供了一整套运维部署工具,并引入了合约命名服务数据归档和迁移合约生命周期管理等工具来提升运维效率。

  • 运维部署工具: 部署、管理和监控多机构多群组联盟链的便捷工具,支持扩容节点、扩容新群组等多种操作。
  • 合约命名服务: 建立合约地址到合约名和合约版本的映射关系,方便调用者通过记忆简单的合约名来实现对链上合约的调用。
  • 数据归档、迁移和导出功能: 提供数据导出组件,支持链上数据归档、迁移和导出,增加了链上数据的可维护性,降低了运维复杂度。
  • 合约生命周期管理: 链上提供合约生命周期管理功能,便于链管理员对链上合约进行管理。

易用性

FISCO BCOS引入开发部署工具、交互式控制台、区块链浏览器等工具来提升系统的易用性,大幅缩短建链、部署应用的时间。

为了便于不同语言开发者快速开发应用,FISCO BCOS同时支持Java SDKNode.js SDKPython SDKGo SDK

社区开发工具

依托庞大的开源生态,社区内众伙伴秉承“来自开发者,用于开发者”的共建理念,在FISCO BCOS底层平台之上,自主研发多个趁手开发工具并回馈给社区,从不同业务层面需求上降低区块链应用开发难度和成本。以下作部分列举,欢迎更多机构或开发者向社区反馈更多好用的工具。

  • 区块链中间件平台WeBASE:面向多种对象,如开发者、运营者,并根据不同的场景,包括开发、调试、部署、审计等,打造丰富的功能组件和实用工具,提供友好的、可视化的操作环境。
  • 分布式身份解决方案WeIdentity:基于区块链的分布式多中心的技术解决方案,提供分布式实体身份标识及管理、可信数据交换协议等一系列的基础层与应用接口,可实现实体对象(人或物)数据的安全授权与交换。
  • 分布式事件驱动架构WeEvent:实现了可信、可靠、高效的跨机构、跨平台事件通知机制。在不改变已有商业系统的开发语言、接入协议的情况下,实现跨机构、跨平台的事件通知与处理。
  • 跨链协作方案WeCross:支持跨链事务交易,满足跨链交易的原子性,对跨链进行治理,可支持多方协作管理,避免单点风险。
  • 场景式隐私保护解决方案WeDPR:针对隐匿支付、匿名投票、匿名竞拍和选择性披露等应用方案,提供即时可用场景式隐私保护高效解决方案,助力各行业合法合规地探索数据相关业务。
  • 区块链数据治理组件解决方案:稳定、高效、安全的区块链数据治理组件解决方案,分别从底层数据存储层、智能合约数据解析层和应用层三个方面,提供了区块链数据挖掘、裁剪、扩容、可信存储、抽取、分析、审计、对账、监管等数据治理方面的关键能力。
  • ChainIDE:提供智能合约云端开发工具,帮助开发者节约边际成本,加速推送区块链应用落地。
  • FISCO BCOS区块链工具箱:与WeBase/Remix/VSCode/ChainIDE等IDE协同工作,提升开发体验与开发效率。
  • Ansible for FISCO BCOS 自动化生成企业级部署文件:本项目由为区块链开源项目 FISCO-BCOS 提供了自动化生成企业级配置文件的 ansible playbook。2 群组 3 机构 6 节点的环境,可以在 30 秒内(除下载时间)生成配置,极大简化了部署难度,避免了手工配置容易发生的错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FISCO BCOS 区块链 的相关文章

  • CAN总线的报文分析(三)

    系列文章目录 文章目录 系列文章目录 前言 一 数据帧 最常用 1 帧起始 2 仲裁段 3 控制段 4 数据段 5 CRC段 6 ACK段 7 帧结束 二 远程帧 三 错误帧 四 过载帧 五 帧间隔 总结 前言 CAN总线上的节点发送数据都
  • Python for 3dMax加载图像文件并读取像素值

    使用Python for 3dMax加载和显示图像文件的示例 在这种情况下 EXR图像文件与3dMax文件位于同一目录中 from MaxPlus import BitmapManager image file path r BG park

随机推荐

  • 【编程笔试】美团2021校招笔试-通用编程题第5场(附思路及C++代码)

    导览 练习地址 修改大小写 式子求值 争夺地盘 公司管理 总结 练习地址 点此前往练习 修改大小写 在小美的国家 任何一篇由英文字母组成的文章中 如果大小写字母的数量不相同会被认为文章不优雅 现在 小美写了一篇文章 并且交给小团来修改 小美
  • 爬虫小项目

    爬取同花顺官网中的数据 共四页 项目适合练手 最终保存在csv文件中 尚有缺点 先发出来 一起探讨 qq 2385455226 欢迎来访 import requests from lxml import html headers Accep
  • 光线追踪渲染实战(五):低差异序列与重要性采样,加速收敛!

    项目代码仓库 GitHub https github com AKGWSB EzRT gitee https gitee com AKGWSB EzRT 目录 前言 1 低差异序列介绍 2 sobol 序列及其实现 2 1 生成矩阵与递推式
  • 面试官:线程崩了,为什么不会导致 JVM 崩溃呢?如果是主线程呢?

    网上看到一个很有意思的美团面试题 为什么线程崩溃崩溃不会导致 JVM 崩溃 这个问题我看了不少回答 但发现都没答到根上 所以决定答一答 相信大家看完肯定会有收获 本文分以下几节来探讨 线程崩溃 进程一定会崩溃吗 进程是如何崩溃的 信号机制简
  • Python中装饰器超详细讲解,看不懂尽管来砍我!

    Python中装饰器的那些事儿 说到装饰器 我们需要首先理解下闭包的概念 走起 定义 具有执行环境的函数 满足三个条件 1 外部函数中定义一个内部函数 2 内部函数中使用外部函数的局部变量 3 外部函数将内部函数作为返回值返回 此时的内部函
  • 算法:2-3平衡树与B树的详细探讨

    2 3树是最简单的B树 B 树是B树的升级 B树的来源 为什么要有树 描述 1 多 N M 层次等关系 从最根本的原因来看 使用树结构是为了提升整体的效率 插入 删除 查找 索引 尤其是索引操作 因为相比于链表 一个平衡树的索引时间复杂度是
  • js关闭当前弹出框,刷新父页面

    alert data msg 点击确定关闭该窗口 reload 关闭当前窗口 刷新上一层页面 location reload 执行结束 刷新当前页面 父级页面 点击操作按钮 点击保存 点击确定可以看到已经回到上一级页面 且已刷新
  • Java 线程同步 - 7种方式

    为何要使用同步 java允许多线程并发控制 当多个线程同时操作一个可共享的资源变量时 如数据的增删改查 将会导致数据不准确 相互之间产生冲突 因此加入同步锁以避免在该线程没有完成操作之前 被其他线程的调用 从而保证了该变量的唯一性和准确性
  • 3分钟学习:获取 URL 查询参数值

    在前端开发工作中 利用 URL 进行参数传递是一项十分常见的方法 在页面跳转时 通过 URL 携带某些信息 如状态 id 区分页面来源的字段值等 因此 学习了解如何获取 URL 查询参数值是很重要的 js 代码手撸 利用 JavaScrip
  • 使用sessionStorage新建与本页面一样的Tab页面,并在页间传递参数。

    客户提了个需求 点击某个链接 新建一个Tab页 当前页面内容不变 新的Tab页中控件的值和当前页一致 查阅了相关博客 发现可以用sessionStorage或者localStorage实现 键值对属性的存储 获取 Demo实现思路 页面加载
  • TCP/IP UDP 协议首部及数据进入协议栈封装的过程

    数据的封装 UDP 封装 TCP 封装 IP 封装 检验和算法 当应用程序用TCP传送数据时 数据被传送入协议栈中 然后逐一通过每一层直到被当作一串比特流送入网络 注 UDP数据TCP数据基本一致 唯一不同的是UDP传给IP的信息单元称作U
  • 【详解python中round函数】

    在Python中 round 函数是一个内置函数 用于将一个数字四舍五入为指定的小数位数或整数位数 round 函数有两个参数 第一个参数是要四舍五入的数字 第二个参数 可选 是小数位数或整数位数 表示要保留的小数位数或整数位数 默认为0
  • iOS 审核被拒绝3.2.1 没有金融许可证

    今年金融行业不好做 p2p暴雷好多家 上半年Android应用市场整顿金融类应用 在华为应用市场被误认为p2p应用而下架 经过上诉上传资质证明得而重新上架 各个应用商店平台陆续需要资质证明 最近应用在苹果商店审核被拒绝 同样也是因为金融类资
  • Redirecting to /bin/systemctl stop iptables.service Failed to stop iptables.service: Unit iptables.s

    学习远程访问mysql时 由于centos的防火墙会自动屏蔽很多软件的端口 所以无法连接 于是要关闭防火墙 网上找方法后知道输入 service iptables stop可以关闭防火墙 但是没有成功 因为centos7不能关闭防火墙 所以
  • 这真是冷门又逆天的副业,赚的有点多,分享一下接单心得

    前言 每年春节前后 都会是Python兼职接单的小高潮 这段时间各个行业对爬虫类和数分类的需求会暴增 圈子里很多朋友双休都没闲着 两天赚上万的不在少数 最近发现技术变现 兼职接单问题很多 我总结下来 发现大部分人都有着相同的困惑 听说Pyt
  • CSS鼠标滑过翻转动画图标

    html css鼠标放上去变大效果 效果如下动态图 目录层级 代码如下 html文件 index html li li
  • 图片存在灰白、深黑区域的检测

    import cv2 as cv file path E Python pythonProject 4 1 jpg def blackAndwhite screen file path img cv imread file path row
  • python 解决 pip 时报错 no suchoption: --bulid-dir 的解决办法

    python m pip install pip 20 2 4
  • Struts2 commons-fileupload 在上传2M以上文件出现异常解决方法

    在上传2M以上文件出现异常如下 APPNAME ERROR http 80 3 MultiPartRequest parse 130 org apache commons fileupload FileUploadBase SizeLimi
  • FISCO BCOS 区块链

    FISCO BCOS是由国内企业主导研发 对外开源 安全可控的企业级金融联盟链底层平台 由金链盟开源工作组协作打造 并于2017年正式对外开源 社区以开源链接多方 截止2020年5月 汇聚了超1000家企业及机构 逾万名社区成员参与共建共治