当前位置: 首页 > 编程日记 > 正文

比特币寒冬中,你更应该关注企业区块链!

公众对区块链的认识也许限于比特币或以太坊,但很多却不知道 Hyperledger(超级账本)。Hyperledger Fabric,是由 IBM 带头发起的一个联盟链项目,2015 年末移交给 Linux 基金会,成为开源项目。Linux 基金会孵化了很多区块链项目,Fabric 是其中最为出名的一个。一般人们说的超级账本,基本上就是指 Hyperledger Fabric。

自从比特币证明了它作为一个真正具有全球重要性的系统的价值以来,我的团队一直密切关注分布式系统领域。这是人类历史上的第一次,比特币系统让一个用户能够有机会参与这样的网络:这个网络可能包括地球上的每一个人。正是这种包容性,让比特币变得炙手可热,很快,比特币成为所有市场渗透的根源。这种包容性提出了一种解决方案的可能性,即在迄今被认为是孤立的组织之间提供实时数据共享。结果是,这项技术终于引起了巨头们的注意:企业 IT!在 2015 年末,由 Linux 基金会(Linux Foundation)发起,像 IBM 这样的主要 IT 组织开始评估比特币成为可能技术的能力。

在 2015 年的最初研究期间,研究方向朝着将区块链应用于企业领域发展,业界大多数专家认为,区块链是一个系统,可以为企业日常处理的一些最具挑战性的问题提供解决方案,以无异议和透明的方式在多方业务场景中建立问责制的问题。这一问题一旦得到解决,就有望缩短周转时间,以及减少纠纷形式的损失。尽管有这样的承诺,但大多数专家认为,这项技术已经提前到来,并有望在 2027 年左右,也就是从现在开始的 10 年之后,才会被首次采用。

然而,由于 IBM、Microsoft 和 SAP 等大型 IT 企业对这项技术投入了大量资金,加速了这项技术的发展和采用。例如,IBM 和 SAP 都已发布一个商业版本的区块链平台,名为 “Hyperledger Fabric”,很有前途,对客户友好。本文将概述区块链技术、平台的相关知识,以及它能够为企业 IT 环境提供什么。

构成区块链的四个部分是:

  1. 到多个主机的信息分布。
  2. 基于公钥基础设施的签名事务。
  3. 加密哈希。
  4. 民主数字共识

分布

区块链账本记录了它上面发生的所有事务,并在区块链网络中的多个节点或对等点复制自己。每个节点上都有一个完整的账本副本。保留整个账本的多个实例有很多好处。其中一些值得注意的是:

  1. 在一个或多个副本被破坏或销毁的情况下,能够降低风险。
  2. 由于对账本有意操作,因此能够检测账本上的不良副本。
  3. 由于没人拥有 “中央账本”,因此账本 “去中心化”。账本的单个副本本身就是一个完整账本。

数字签名

要实现这一点,你首先需要了解数字签名如何在公钥基础设施环境中工作。以这个例子为例:事务是由 Tom 发起的。这种事务可以是资金的转移,也可以是任意业务资产的转移。事务是使用 Tom 的私钥数字签名的,只有 Tom 可以访问私钥。然后,将事务广播到整个节点网络。接下来,每个节点必须验证 Tom 是否发起此事务的人。验证事务真实性所需的全部工作就是 Tom 的公钥,网络中其他人都可以访问该公钥。借助此公钥,验证 Tom 的私钥是否用于签署此事务是一个简单的一步过程,也就是确定 Tom 确实是触发该事务的人。如果此事务源自故意的骇客所为,那么事务中的数字签名在与 Tom 的公钥进行验证时,将无法匹配。如果骇客在某种程度上利用了 Tom 的事务并更改了其值,这将会导致数字签名被损坏,而当其他节点根据 Tom 的公钥验证事务时,就会发现这一被黑的事实。请注意,数字签名已存在数十年,甚至在比特币系统出现之前,就已经付诸实际应用了。

加密哈希

资产数据全部存储在区块链账本上。但是,还有第二层信息也被存储了。这个信息就是资产数据的加密哈希(SHA-256)。存储这个哈希是为了确保数据不会被有意的骇客或后门操纵。此外,哈希存储在整个区块链中,即,Block 2 将是迄今为止在区块链中记录的数据的哈希。这个块将包含计算过的哈希,以及前一个哈希计算过的哈希值。现在,如果一个骇客以某种方式更新其中一个块中的数据,那么整个区块链块的哈希指纹就会被破坏,系统将会立即报告。

民主数字共识

到目前为止,民主数字共识是区块链最常被提及的特性。让我们重温一下什么是区块链:区块链是一个由连接节点组成的网络。每当在该网络发起事务时,当且仅当大多数节点同意事务中包含的信息时,它才会被提交到账本。在最初的比特币区块链中,这是通过一种被称为 “工作量证明”(Proof of Work)的方案实现的。以太坊引入了权益证明(Proof of Stake)和 DPOS。Hyperledger fabric 是区块链的企业版,依赖于 PBFT(Practical Byzantine Fault Tolerance,改进型实用拜占庭容错)。在区块链领域中,还有其他一些共识机制发挥作用,越来越多的加密货币不时被发明出来。

然而值得注意的是,区块链技术的一些构建模块早在 70 年代就已经存在了。比特币带来的是一个完全集成的系统,它利用了这些技术的功能,如分布、哈希和数字签名。

Hyperledger Fabric 提供了什么?

Hyperledger Fabric 是一个许可链的基础架构,最初由 IBM 和 Digital Asse 提供。它是一个模块化架构,提供了基础架构中节点之间角色的划分、智能合约(Fabric 中称为 “chaincode”)的执行,以及可配置的共识和会员服务。Fabric 网络由“对等节点” 组成,该节点执行 chaincode,访问账本数据,签署事务并提供应用程序的接口。“Orderer 节点”,确保区块链的一致性,并将认可的事务交付给网络的对等节点,以及 MSP 服务(通常作为证书颁发机构实现),管理用于验证成员身份和角色的 X.509 证书。

Fabric 通过安装适当的模块,支持开箱即用的 Go 和 JavaScript 中的 chaincode(通过 Hyperledger Composer,或 v1.1 以上的本地代码),以及其他语言(如 Java)。因此,与只支持封闭式智能合约语言的竞争对手相比,它更具备灵活性。

现在,我们总结一下 Hyperledger Fabric 的一些最突出的特征:

1) 需要许可的会员资格

Hyperledger Fabric 是一个许可网络的框架,所有参与者都有已知身份。在考虑许可网络时,你应该考虑区块链用例是否需要遵守数据保护法规。许多用例(尤其是在金融部门和医疗保健行业)都受到数据保护法规的约束,这些法规要求了解网络成员的身份以及访问特定数据的成员身份。例如,考虑一家私募股权公司。根据定义,私募股权基金不在证劵交易所公开交易,其投资者通常是风险投资公司、私募股权公司或天使投资者。这个网络的参与者需要被了解,并且在资本投资上有信誉才能参与区块链。

2) 性能、可扩展性和信任级别

Hyperledger Fabric 构建在模块化架构之上,这个架构将事务处理分为三个阶段:分布式逻辑处理(distributed logic processing )和协议(即 “chaincode”)、事务排序以及事务确认和事务提交。这种划分带来了几个优点:跨节点类型所需的信任和验证级别更少,并且优化了网络的可扩展性和性能。

3) 需要了解的数据

由于竞争力、保护法规和私人数据的保护条例,决定了企业对某些数据元素有隐私方面的需求,这可以通过在区块链上的数据分区来实现。Hyperledger Fabric 支持的通道允许数据仅发送给需要知道数据的一方。

例如,许多金融实体表达了他们的担忧:竞争对手甚至能够看到正在处理的事务数量。一些金融机构认为加密技术并不足以保护他们的数据。考虑到一些金融工具可能需要 10 年甚至更长时间才能实现价值,随着时间的推移,加密技术才有可能会允许公开私人数据。通道提供了数据分区的功能,只有那些需要了解数据的人才能看到事物数量和数据本身。

4) 对不可变分布式账本的丰富查询

CouchDB 提供了一套完整的查询语言,可用于查询业务理解语言中的账本。

5) 支持插件组件的模块化结构

Hyperledger Fabric 架构的模块化使网络设计人员能够插入他们首选的组件实现,这是一个优势。模块化最受欢迎的领域之一,就是 “自备身份”。一些跨业公司网络已经具备身份管理的功能,并希望重用而不是重建。架构的其他组件可以轻松地插入,包括共识或加密,有些国家 / 地区还有自己的加密标准。

6) 数字密钥和敏感数据的保护

HSM(Hardware Security Module,硬件安全模块)支持对于保护和管理数字密钥来进行强身份验证至关重要。Hyperledger Fabric 为密钥生成提供了经过修改和未修改的 PKCS11,它支持需要更多保护的身份管理等情况。对于处理身份管理的场景,HSM 增加了对密钥和敏感数据的保护。

结语

比特币的前景无法预测。然而,企业区块链的未来前景被人们看好。它提出了通过建立问责制的可能性,这种问责制是由参与多方业务设置的组织之间的真正实时信息共享建立的。为了满足企业的需求,Hyperledger Fabric 在过去几年有了很大的发展,现在,已经囊括了企业可以依赖的大部分功能。Hyperledger Fabric 成为企业区块链的事实标准,看来只是一个时间问题。

原文链接:
https://medium.com/coinmonks/hyperledger-fabric-the-enterprise-blockchain-104f5e59f169

相关文章:

JVM XMX设置多大比较好,Docke容器里该怎么设置JVM呢@无界编程

XMX是JVM的最大堆内存大小,XMS是JVM的初始堆内存大小。 不管是工作还是面试经常遇到一个问题就是XMX到底设置多大比较好? 网上的答案大多是说XMX和XMS设置为一样大,但是没有说到底XMX设置多大比较好。 如果设置为和操作系统一样大内存会怎么样? 这篇文章就带你搞清楚这…

【数据结构】顺序表的应用(2)(C语言)

问题: 2.有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法,将它们合并成一个顺序表C,要求C的元素也按从小到大的升序排列。 头文件与该头文件一样:【数据结构】顺序表的实现(C语言&am…

OWA登录页面显示为英文而不是中文

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750故障描述:WIN10操作系统使用IE登录OWA的时候,界面语言为英文,WIN10操作系统为中文系统,区域语言都是设置为中文&…

java B2B2C springmvc mybatis多租户电子商城系统-Spring Cloud Feign

1、什么是Feign? 愿意了解源码的朋友直接企鹅求求:二一四七七七五六三三 Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用…

【数据结构】顺序表的应用(3)(C语言)

问题: 已知一个顺序表中的各节点值是从大到小有序的,设计一个算法,插入一个值为x的节点,使顺序表中的节点仍然是从小到大有序的。 头文件与该头文件一样:【数据结构】顺序表的实现(C语言) #i…

从源码和内核角度分析redis和nginx以及java NIO可以支持多大的并发

有人询问我网上一篇关于“redis为什么单线程这么快”的文章,我建议他不要看了,因为redis是单进程不是单线程,后面的意见不用看了,文章质量肯定不会很好,他也说了自己看了很久源码似乎还是有些云里雾里,所以我就给他分析了为什么redis这么快,这篇主要讲epoll的实现。 从…

背景图片等比缩放的写法background-size简写法

1、背景图片或图标也可像img一样给其宽高就能指定其缩放大小了。 比如一个实际宽高36*28的图标,要缩小一半引用进来的写法就是: background:rgba(0, 0, 0, 0) url("../images/report_icon2x.png") no-repeat scroll left center / 18px 14px; …

深入了解以太坊

正在看这篇文章的你,应该是一名被区块链技术所吸引的开发者或者极客。我相信你已经理解了区块链的技术原理,并急切地想要搞清楚这项技术将为你和你的开发技术栈带来怎样的影响。 如果你需要更基础的区块链技术介绍,可以阅读比特币和以太坊的白…

Netty和JDK源码来看Netty的NIO和JDK的NIO有什么不同

JDK底层提供了NIO实现,在Linux环境会调用内核epoll。 但是Netty通过JNI的方式提供了Native Socket Transport,为什么Netty要自己搞一套NIO呢? 这篇文章带你从jdk的源码和Netty的源码角度来分析为什么Netty要这么做。 JDK源码:openjdk-8u40 Netty源码:netty-4.1 1.先看J…

【数据结构】单链表的实现(C语言)

单链表是线性表链式储存的一种形式,其中的结点一般含有两个域,一个是存放数据信息的info域,另一个是指向该结点后继结点存放地址的指针next域。一个单链表必须要有一个首指针指向链表中的第一个结点。 单链表要掌握以下几种操作:…

《理解 OpenStack + Ceph》---来自-[爱.知识]-推荐

企业IT技术分享(2016-06-29)来自(QQ群:企业私有云平台实战 454544014-推荐)!理解 OpenStack Ceph (1):Ceph OpenStack 集群部署和配置http://www.cnblogs.com/sammyliu…

windows10 安装 mysql8.0.12 详解

【1】下载安装包 官网下载地址:https://downloads.mysql.com/archives/community/ 如下图所示: 下载完成,安装包为mysql-8.0.12-winx64.zip 【2】安装准备 (1)安装路径。拷贝安装包到任意路径,然后解压缩。…

IDEA常用和实用配置以及各种必要插件

主要是收集IDEA常用和不常用配置陆续更新 ------------------------ 启动项目配置 建议使用idea2021.1.3以上版本: ------------------------ maven没有设置自动导包,导致引用不到第三方依赖。 可以点maven的刷新按钮即可。 idea 设置gradle自动更…

linux 调试利器gdb, strace, pstack, pstree, lsof

1)如何使用stracepstack利器分析程序性能?http://www.cnblogs.com/bangerlee/archive/2012/04/30/2476190.html此文有详细介绍怎么用strace和pstack2)Linux下多线程查看工具(pstree、ps、pstack)?http://blog.csdn.net/yfkiss/article/details/67293643)使用strace,lstrace,t…

【数据结构】单链表的应用(C语言)

1、设计一个算法,求一个单链表中的节点数 2、设计一个算法,在一个单链表中值为y的结点前插入一个值为x的结点(值为x的新结点为成为值为y的结点前驱结点) 3、设计一个算法,判断单链表中各结点是否有序 4、设计一个算…

物联网设备僵尸网络趋势分析

物联网(IoT)僵尸网络作者正在适应更安全的物联网设备的转变,这已经将***者的注意力转移到利用物联网设备的漏洞上。由于物联网设备安全性仍处于起步阶段,因此发现命令注入等基本漏洞并不少见。2018年11月,NetScout的As…

Redis6安装配置集群cluster以及集群宕机注意事项

Redis6的cluster模型推荐3主3从 先准备3台服务器,每个上面部署2个redis,服务器配置2核2G: 下面在每台服务器安装redis6,每台机器只要安装一次即可,然后分别配置2个端口的conf文件,分别起来即可&#xff1a…

【数据结构】循环单链表的实现(C语言)

循环单链表应掌握以下基本操作: 1、建立一个空的循环单链表。 2、获得循环单链表的最后一个结点的位置。 3、输出循环单链表中各结点的值。 4、在循环单链表中查找值为x的结点。 5、在循环单链表中第i个结点后插入值为x的新结点。 6、在循环单链表中删除值为x…

DTRACE 专家

http://dtrace.org/blogs/bmc/ https://github.com/bcantrill http://www.tudou.com/programs/view/Q6fHZFgZww4 http://dtrace.org/blogs/ahl/2012/04/24/btrace-dtrace-for-java-ish/ JAVA https://github.com/chrisa https://github.com/ahrens

统一客服消息返回错误:{errcode:43004,errmsg:require subscribe hint: [9Vv08633952]}

2019独角兽企业重金招聘Python工程师标准>>> 公众号或者小程序发送客服消息错误: {"errcode":43004,"errmsg":"require subscribe hint: [9Vv08633952]"} 场景:小程序使用公众号的服务消息,推送消息…

sublime Text 开发工具

简介描述 Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。,具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text …

【数据结构】双链表的实现(C语言)

双链表中的结点包括3个域,一个是存放数据信息的info域,另两个是指阵域,这里用llink和rlink表示,llink指向它的前驱结点,rlink指向它的后继结点。 双链表要掌握以下基本操作: 1、创建一个空的双链表。 2、…

ShardingSphere-Proxy分库分表以及多租户安装使用

需求:你提供SAAS服务,你有你有2个租户(商户),各自的数据进各自的库,而你不希望你的微服务java里默认配置多个租户数据源,数据连接池太多,而且后面动态增加也不方便,诸如此类很多问题。 方案&am…

jenkins自动化部署工具

jenkins自动化测试 & 持续集成 知识点: 1。下载地址:jenkins.io download: 转载于:https://www.cnblogs.com/kaixinyufeng/p/10123419.html

android 图片水印处理 文字倾斜处理

方法一: 获取一个textview 从textview中获取bitmap,将bitmap 通过matrix进行角度变换,然后将原图和此bitmap合并; 方法二: 将原图获取bitmap后,得到canvas,将canvas进行角度变换,…

Centos下MySQL安装与配置

一、mysql简介说到数据库,我们大多想到的是关系型数据库,比如mysql、oracle、sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱不得不首先推荐的是mysql数据库了,而…

【数据结构】链式栈的实现(C语言)

栈的链式存储称为链式栈,链式栈是一种特殊的单链表,它的插入和删除规定在单链表的同一端进行。链式栈的栈顶指针一般用top表示。(个人理解:相当于只对单链表的第一个结点进行操作) 链式栈要掌握以下基本操作&#xff1…

opencv python 匹配

opencv python 匹配

DI 依赖注入实现原理

深度理解依赖注入(Dependence Injection) 前面的话:提到依赖注入,大家都会想到老马那篇经典的文章。其实,本文就是相当于对那篇文章的解读。所以,如果您对原文已经有了非常深刻的理解,完全不需要…

【数据结构】链式队列的实现(C语言)

队列的链式存储称为链式队列。链式队列就是一个特殊的单链表,对于这种特殊的单链表,它的插入和删除操作规定在单链表的不同端进行。链式队列的队首和队尾指针分别用front和rear表示。 链式队列要掌握以下基本操作: 1、建立一个空的链式队列…