初步了解区块链技术落地——FISCO BCOS 的主要技术和原理

FISCO BCOS 主要技术和原理

公众链-联盟链

1. 支持快速搭链

群组架构,一键搭链。

一键搭建新群组,扩展新业务,类似于平行扩展一个区块链。

2. 支持联盟链的自理

3. 支持海量的数据——分布式存储

4. 隐私保护

5. 运维需求

 

两翼

并行计算模型

  • 区块链自动识别交易的互斥资源,构建出 DAG,规划一个可并行的执行路线。
  • 最佳情况下,性能提升可达到 CPU 核心数的倍数。

分布式存储

  • 使用分布式存储替换旧的本机存储,突破了单机磁盘容量的限制,支持横向扩展。
  • 分布式存储定义了标准的数据访问 CRUD 接口,适配多种数据存储系统。
  • 区块链节点既可以直接访问存储,也可以通过专用的数据代理访问存储。
  • 适配关系型数据库(MySQL),简化数据操作。mysql 有网关,可以按照主key取模,分散多个表中。按照客户需求,mysql更加便利于检索。shuging
  • 数据管理更方便,容易支持数据迁移/备份。
  • 由于数据是全网冗余的,所有区块链的节点、账本都是一样的数据。没办法通过增加节点数量来改变总体的存储容量大小,希望突破单机节点容量的限制。以太坊使用的是 leveldb 进行存储,比特币使用的文件存储。当支持关系型数据库(MySQL、ORACLE等)后,由于本身可以支持平行扩展,可以进行分库分表,可以使我们单个区块链的节点容纳更多更海量的数据。

 

多引擎——为联盟链应用保驾护航

区块链中的各个模块,例如 P2P、虚拟机、共识机制,接口通用统一化,可插拔,根据需要去替换和定制。

 

FISCO BCOS 架构

 

区块链业务开发流程

  • 01 搭建区块链
  • 02 开发智能合约
  • 03 部署合约
  • 04 使用 Java SDK 开发业务逻辑
  • 05 业务上线,发起交易

 

节点准入控制

  • 联盟链又称许可链,参与区块链网络的节点都需要经过准入控制
  • 采用SSL通信机制,基于PKI的CA认证机制
  • 节点白名单机制
  • 证书黑名单机制

自签证书:将自己的信息计算哈希值然后使用自己的私钥进行备书,自己可以证明信息是出自于自己。

代理证书:将自己的信息和公钥计算哈希值,然后用别人的私钥进行备书。别人可以证明信息是出自你自己。

所以 FISCO BCOS 联盟链既需要自己证明自己,也需要别人证明自己。

 

以太坊智能合约开发——Solidity

图灵完备的高级语言,支持循环、函数调用等。

由于合约需要计算结果唯一,所以与 java 等通用编程语言相比,没有 java 中的那些会造成不确定结果的因素,例如随机函数 random 等包含随机性的一些方法。

劣势:解释执行,速度比较慢。功能单一。

 

BCOS 开发的合约——Precompiled 合约

采用 C++ 编写合约逻辑,需要集成在 BCOS 中。

与 Solidity 访问方式一样,不需要建立虚拟机,没有 EVM,直接在底层代码执行,可以与 EVM 互通。BCOS 中存储等特殊功能都是由 Precompiled 开发。

 

合约编译部署——SDK

单 Solidity 合约部署如下:

在 BCOS 中将流程简化,只需要在控制台将 Solidity 合约用 sdk2java 转译成 Java,就可以直接和业务一起部署在区块链上了。

 

BCOS 开发合约工具——CNS

类似于互联网中的 DNS。

将智能合约地址命名,方便用户寻址查找合约。

 

接入层设计——对外接口

给开发者和企业应用。

Channel 协议(二进制协议):提供给 java SDK 使用。

JsonRPC 协议:对 http 比较友好的协议,可以给 web 调用。

 

发送交易——调用合约上链

区块链交易在 sdk 生成的,通过调用 sdk 接口,将交易发送到某一个区块链节点,此节点自动广播给其他区块链节点,所有区块链节点收到此交易,区块连节点之间会执行一个共识,确定由谁来出块。确定出块的节点,会将交易从区块组的交易池中取出来,打包进区块中,发给全网去执行共识。执行共识的过程中,就执行了这个交易。交易执行完毕,通知全网,区块落地,让全网的其他节点认同这个区块,此笔交易执行成功。

 

多模网络设计

单播:单个区块链节点给单个区块链节点发送消息,通过区块链节点标识寻址。

组播:单个区块链节点向一组有共同属性的区块链节点发送消息,通过 Topic 寻址。

广播:单个区块链节点向所有节点发送消息。

 

PBFT共识机制

有四个节点,node0,node1,node2,node3。

node0 是区块链共识节点,将区块从交易池中取出打包好后,进行广播到全网。在 pre-preapare 阶段,收到包的节点都会尝试去执行这个区块,执行完区块后,会将区块改变过的信息计算一个哈希值,回复签名包。在 preapare 阶段,会检查各节点结果是否一致,如果一致会回复一个 Commit 包。这些节点收到 Commit 包后即可将区块落盘。

只要全网 2/3 的节点结果一致,就可以落盘。1/3 的恶意节点或者故障节点不会影响整体。

 

Raft 共识算法

按时间片去选取和容灾的。

比 PBFT 优势:可以容纳 1/2 的故障,共识过程只有两步,效率比较高。

比 PBFT 劣势:安全性比较差,如果有恶意节点,可以使整个集群崩溃。

 

区块链数据

产生的数据通过事务原子性地写入存储中。

 

分布式存储架构设计

 

树结构——MPTState

可以使用 SPV 技术,通过 title 可以知悉里面有无所查询的数据。

 

网络 P2P 区块同步原理

节点之间实时同步更新状态,感知连上最新区块高度。

从 node0 和 node2 分别同步一部分,增加同步效率。

 

 

权限控制实现

  • 最小粒度为表,基于外部账号进行控制。
  • 使用白名单机制,未配置权限的表,默认完全放开,及所有外部账户都有读写权限。
  • 权限设置利用权限表(_sys_table_access_)。没有配置的没有权限控制。
  • 采用控制台,可以方便地进行权限控制的设置

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值