三个月前上面发了一个关于智群汇聚和问题求解研究的项目,我们公司做其中的一个子项目,就是基于区块链的科技信息联盟构建。利用区块链的去中心化特性,构建一个基于区块链的科技社区,以提供科技群智汇聚采集的基础承载平台。科技工作者可以发布自己的论文、问题,以及对他人问题的交互讨论。由于采用区块链技术,包括最新科技创想在内的讨论内容所形成的知识资产可以得到确权,不可编造、不可否认。联盟的参与节点是各个社区,所有节点维护相同的数据,所有附带作者的内容都附带作者的数字签名,知识产权的确认将变得非常容易。最后,数据分布在网络的所有节点上,将彻底避免数据的丢失。

区块链部分是由我来完成,这个月前完成区块链和社区的对接,展示一个完整的项目,下个月就上线了。

这是理想的社区区块链架构图:

注:其实每个BC节点(区块链节点)可以包括peer节点和orderer节点。

以下是我本季度完成的工作:

1.搭建区块链网络

分别为两个社区建立一个peer节点。 社区A一开始要求部署在阿里云服务器上,之前在本地通过搭建多台虚拟机的方式测试的区块链网络一点问题都没有,但当我将节点部署到阿里云上的时候却在生成创世区块这一步上出现报错了,忙活了一星期都没解决。各个容器可以ping通,开放的端口也可以telnet上,我甚至把操作系统内核都换成了和我本地部署时一样的内核,16GB的内存也不会是内存不足,后来我在腾讯云服务器上重新部署了一遍也没有任何问题。由于时间关系,这个技术问题先不管了,再申请一台服务器又要一万多,所以出于经济,就在本地部署。社区B是要求部署在他们本地,但是由于这段时间正在开十九大,既不允许远程操作服务器也不允许对外开放端口,所以我就直接过去把环境和fabric配置好了,等十九大结束端口开放以后区块链网络就可以运行了。

(阿里云问题现已解决,是DNS的问题)

2.为每个节点设立数据库

fabric下存在三种类型的数据库。1.基于文件系统的区块链数据库,存储了交易的读写集,不能更改。2.历史数据和区块链索引的leveldb数据库,也不能更改。3.以key-value对的方式存储我们在ChainCode中操作的业务数据的状态数据库。fabric1.0默认的是levelDB,可支持couchdb,所以我选择替换成支持富查询的couchdb来作为社区节点的数据库。我为每个社区部署节点(为了高可用以后可能会在一个社区中部署多个节点),我也为每一个节点部署一个couchdb。可以通过Elasticsearch的logstash将couchdb内的数据实时导入Elasticsearch内,这样就可以对状态数据库进行丰富的全文检索功能了。

3.建立社区联盟

对应于hyperledger fabric,就是创建channel,并且让各个社区节点加入该channel,这样每个社区节点可以接受广播的区块了。

4.安装并运行chaincode

区块链网络和channel都准备完毕,接下来就安装和运行带有社区业务逻辑的chaincode了,实现对帖子的增改查等功能。

5.搭建http API

为每一个社区节点建立一个用node.js开发的服务器,向社区提供http api,支持get请求。该服务器集成hyperledger fabric node sdk,提供了与区块链节点交互的功能。每个社区通过API访问区块链节点,实现将区块链底层屏蔽掉、让社区可以轻松对接。

第一个迭代下很多功能还不完备,下季度的完成目标:

1.目前只有两个社区,所以没加入证书颁发机构fabric ca,下一步将加入ca,让更多的社区加入联盟。

2.由单一orderer共识节点升级为集群共识,使区块链更加安全稳定。

3.升级chaincode,实现对区块链数据的更多操作。

4.增加更多面向社区的API。

 

												

搭建基于hyperledger fabric的联盟社区(一) --前言的更多相关文章

  1. 搭建基于hyperledger fabric的联盟社区(六) --搭建node.js服务器

    接下来我要做的是用fabric sdk来做出应用程序,代替CLI与整个区块链网络交互.并且实现一个http API,向社区提供一个简单的接口,使社区轻松的与区块链交互. 官方虽然提供了Node.JS, ...

  2. 搭建基于hyperledger fabric的联盟社区(五) --启动Fabric网络

    现在所有的文件都已经准备完毕,我们可以启动fabric网络了. 一.启动orderer节点 在orderer服务器上运行: cd ~/go/src/github.com/hyperledger/fab ...

  3. 搭建基于hyperledger fabric的联盟社区(四) --chaincode开发

    前几章已经分别把三台虚拟机环境和配置文件准备好了,在启动fabric网络之前我们要准备好写好的chaincode.chaincode的开发一般是使用GO或者JAVA,而我选择的是GO语言.先分析一下官 ...

  4. 搭建基于hyperledger fabric的联盟社区(七) --升级chaincode

    上个版本的chaincode有很多功能不完备,所以要部署新版本的chaincode.Fabric支持在保留现有状态的前提对chaincode进行升级. 一.新版chaincode 新版本的chainc ...

  5. 搭建基于hyperledger fabric的联盟社区(三) --生成公私钥证书及配置文件

    一.生成公私钥和证书 Fabric中有两种类型的公私钥和证书,一种是给节点之前通讯安全而准备的TLS证书,另一种是用户登录和权限控制的用户证书.这些证书本来应该是由CA来颁发,但是目前只有两个社区,所 ...

  6. 搭建基于hyperledger fabric的联盟社区(二) --环境配置

    接下来讲一下在本地测试区块链网络的过程.我要部署的是2peer+1orderer架构,所以需要准备三台虚拟机,为了方便起见可以先把一台配置好,然后复制出剩余两台即可.搭建虚拟机我用的是virtualb ...

  7. 搭建基于hyperledger fabric的联盟社区(八) --Fabric证书解析

    一.证书目录解析   通过cryptogen生成所有证书文件后,以peerOrgannizations的第一个组织树org1为例,每个目录和对应文件的功能如下:   ca: 存放组织的根证书和对应的私 ...

  8. 搭建基于hyperledger fabric的联盟社区(九) --检索状态数据库

    一.启动elasticsearch服务 官网下载压缩包解压,进入bin目录启动: ./elasticsearch 通过ip访问 localhost:9200,可以看到如下信息 { name: &quo ...

  9. Hyperledger Fabric定制联盟链网络工程实践

    总体来看,网络上成体系的可用的 Fabric 教程极少--不是直接在 Fabric 官网复制内容大谈基础理论就是在描述一个几乎无法复现的项目实践,以至于学习 Fabric 的效率极低,印象最深刻的就是 ...

随机推荐

  1. 俄罗斯最新开源的牛掰数据库ClickHouse

    ClickHouse是俄罗斯最近刚刚开源的用于数据库管理系统能够实时生成分析数据报告,性能非常强悍! 使用SQL查询. 他拥有切割你的数据更多的新方法 ClickHouse的性能超过同类市场上目前用于 ...

  2. dubbo学习小结

    dubbo学习小结 参考: https://blog.csdn.net/paul_wei2008/article/details/19355681 https://blog.csdn.net/liwe ...

  3. 使用mysqldump迁移数据

    1. 先停止业务,使用MySQLdump的数据导出工具,将您线下原有数据库数据导出为数据文件 mysqldump -hlocalhost -uroot --default-character-set= ...

  4. Java IO操作——数据操作流DataOutputStream和DataInputStream的使用

    学习目标  掌握DataOutputStream和DataInputStream的作用 可以使用DataOutputStream和DataInputStream写入和读入数据 数据操作流 在io包中, ...

  5. 图示:DOM元素各种位置属性

  6. python脚本2_输入2个数比较大小后从小到大升序打印

    #输入2个数,比较大小后,从小到大升序打印 a = input('first: ') b = input('second: ') if a > b: print(b,a) else: print ...

  7. python脚本1_给一个半径求圆的面积和周长

    #给一个半径,求圆的面积和周长,圆周率3.14 r = int(input('r=')) print('area='+str(3.14*r*r)) print('circumference='+str ...

  8. Linux:安装git

    1.下载 https://www.kernel.org/pub/software/scm/git/git-2.9.4.tar.gz 2.解压 tar zxvf git-2.9.4.tar.gz cd  ...

  9. Ajax基础(二)--获取服务器文件

    获取服务器文件相关步骤: 1.创建文件: 2.创建XMLHttpRequest对象: 3.获取文件(注意事项:1)在服务器中运行测试:2)注意编码问题,编码要统一). 3.1 获取xml文件: HTM ...

  10. mysql 分区优缺点

    分区不一定能够提高查询速度: 原因:分区是按字段分区,如果查询条件不是分区字段会很慢.