当前位置: 首页 > news >正文

区块链Fabric技术在托管业务中的运用初探

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

区块链Fabric技术在托管业务中的运用初探

什么是Fabric技术

HyperLedger是IBM、Intel等多家公司正开展的一个区块链项目,包含了Fabric、Iroha等多项技术,其中最为活跃的是Fabric。

在"开源中国"网站,对Fabric的介绍如下:

HyperLedger Fabirc是一个开源的区块链实现,以企业级的安全机制和membership机制为特色,简单来说,Fabric之于区块链,很可能正如Hadoop之于大数据。

开源项目可以直接从代码来进一步理解,代码中提供的Demo不多,比较典型的是这个:chaincode_example2。
总体来说代码并不复杂,具体不再展开,简述下这个Demo的功能:

chaincode_example02 主要执行三个核心函数,init、invoke、query。
init函数在起始过程中初始化两个账户A,B,并且在A,B账户上发行一定数量的资产。
invoke函数在A、B上进行转账。
query函数查询A、B函数上的账户余额。

Fabric的具体功能

下面具体描述下各个功能:

初始部署

这是一个无中心的分布式系统,会同时在银行和客户来进行部署并建立点对点的联系。

fabric0

Init

主要作用是建立账户,第一步是银行和客户在本地节点建立账户。第二步是会把账户会自动传送到全部节点上。需要注意的是在技术上讲,账户只是一个数据的容器而已,可以类比Oracle里的表。

fabri

Invoke和Query

作用是向账户中添加和查询数据。Invoke的作用是当在本地账户中装入数据后,会将数据自动传输到全部节点上,如下图所示。从Demo代码来看,invoke的是二进制格式数据,也就是说并不限制数据的具体内容。

fabri

小结

我简单小结一下,Fabric从功能上主要作用如下:

  1. 提供分布式的部署方案。
  2. 自动将本地的数据操作(账户建立、数据插入等)自动传送到全部节点上。
  3. 提供数据查询,并确保数据的准确性和安全性。
    我理解这是一个数据交互层的解决方案。

托管业务中的应用

从Fabric的介绍里我提取了三个关键词:数据交互、分布式、安全。
我们从数据交互出发,托管人的数据交互,主要对象包括客户、交易所/登记公司、境外合作机构。其中托管人目前并不能左右交易所/登记公司的系统建设,所以暂时排除。对于银行业务来说,这是个统一的要求都需要的。
再来看分布式这个关键字,限制是需要在客户方部署程序,托管业务是对公业务,无论是客户还是合作机构都符合这个要求。
所以Fabric的应用场景是在于客户以及境外合作机构的数据交互。下面对这两个领域业内已经有的解决方案进行一下比较。

与深圳通直连和SWIFT的比较

这是目前托管业内最主流的数据交换方式,支持了实时消息交换(交易、对账等)以及文件交换两种方式。

 Fabric深圳通直连SWIFT
数据支持二进制消息格式化消息/文件格式化消息
传输性能低(从现有应用看)低(按流量收费)
安全保障软件算法加密网络加密网络
部署成本低(基于互联网)高(需开通网络专线)高(需开通专用网络)
开发成本低(可仅关注业务逻辑)中(需考虑较多技术因素)低(可仅关注业务逻辑)

总体而言,Fabric部署和开发成本较低,但目前看性能偏弱。
这里想额外提一下前几天看到新闻说SWIFT组织正在推进区块链技术的运用,应该也是有了危机感。

小结

从现有的信息掌握来看,Fabric对于托管业务来说,总体上讲是一项改进型技术而非颠覆型技术。个人认为,相比现有的深圳通直连以及SWIFT,其最大的优势是在由于可基于互联网部署,推广运用的速度可以得到大大的加快,是一个更适合目前这个高速变化时代的技术。虽然本文只是针对托管业务,但其应用远不止此,舞台广阔。

转载于:https://my.oschina.net/xiaominmin/blog/1616077

相关文章:

  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • SQLserver 数据库的索引,存储过程和触发器的使用与概念
  • 2018 年,去百度面试Java后端的一次面试经历
  • Python 随机数 random
  • Nginx源码包需要的翻译软件有哪些
  • CentOS Linux搭建SVN服务器
  • 提醒我喝水chrome插件开发指南
  • 进度二
  • mysql数据库主从复制
  • Python_OOP
  • 获取ip地址
  • ajax引用检测用户名是否存在
  • IDEA快捷键笔记
  • JSP第五篇【JSTL的介绍、core标签库、fn方法库、fmt标签库】
  • 用Metaclass实现一个精简的ORM框架
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • create-react-app项目添加less配置
  • Effective Java 笔记(一)
  • gcc介绍及安装
  • github从入门到放弃(1)
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Js基础知识(一) - 变量
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Node + FFmpeg 实现Canvas动画导出视频
  • spark本地环境的搭建到运行第一个spark程序
  • Vue组件定义
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 工作手记之html2canvas使用概述
  • 关于Java中分层中遇到的一些问题
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • elasticsearch-head插件安装
  • #define与typedef区别
  • (02)Hive SQL编译成MapReduce任务的过程
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (day6) 319. 灯泡开关
  • (solr系列:一)使用tomcat部署solr服务
  • (第一天)包装对象、作用域、创建对象
  • (转)h264中avc和flv数据的解析
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET 命令行参数包含应用程序路径吗?
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • @hook扩展分析
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @取消转义
  • [ C++ ] STL_vector -- 迭代器失效问题
  • []指针