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

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

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

注:其实每个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. 文件(2)--IO流

    IO流 输入流和输出流 Java中的IO流根据功能划分为:输入流和输出流.输入流:用于读取数据.输出流:用于写出数据.输入输出的参照方向是根据我们的程序的. 字节流和字符流 Java中的IO流根据处理 ...

  2. cmd常用命令大全

    cmd命令提示符:只是系统模拟的dos操作环境,且功能远远大于dos 1. 返回上一层 cd.. 2. 进入A文件夹  cd A 3. 进入A文件夹下的B文件夹   cd  A/B 4. c盘下的A文 ...

  3. Ubuntu中idea配置guns

    idea配置guns Tips:建议JDK1.8的包 sudo update-alternatives --config java 设置默认的java # java -version java ver ...

  4. scala学习手记32 - trait选择性混入

    继续上一节. 狗当然是人类的好朋友.但是藏獒呢?这玩意儿又蠢又笨又凶狠,肯定不能算很多人的好朋友了.其实,刚才那句话还可以修正一下下:我们接受的狗才是我们的好朋友. 用程序怎么实现呢?在java里面, ...

  5. LeetCode第[19]题(Java):Remove Nth Node From End of List(删除链表的倒数第N个节点)

    题目:删除链表的倒数第N个节点 难度:Medium 题目内容: Given a linked list, remove the n-th node from the end of list and r ...

  6. ps切图步骤

    1.复制图层到新建 2.alt + i + r  裁剪 依次按 3.ctrl + alt + shift + s  保存 裁剪图标  复制到图层 , 删除背景,并复制样式 就可以做到 背景透明.

  7. Spring mvc使用不了jstl 或者 Spring mvc不解析jstl

    最近我搭了一个maven的springMVC的项目发现前端怎么也识别不了我的jstl,我查询了很多方法,导致这种情况的原因有很多 1.jar引用不对,maven中的正确导入可用的jar <dep ...

  8. Codeforces Round #448 (Div. 2)C. Square Subsets

    可以用状压dp,也可以用线型基,但是状压dp没看台懂... 线型基的重要性质 性质一:最高位1的位置互不相同 性质二:任意一个可以用这些向量组合出的向量x,组合方式唯一 性质三:线性基的任意一个子集异 ...

  9. 在Windows下MyEclipse运行JAVA程序连接HBASE读取数据出错

    运行环境:Hadoop-2.5.0+Hbase-0.98.6 问题描述: 15/06/11 15:35:50 ERROR Shell: Failed to locate the winutils bi ...

  10. 《The Cg Tutorial》阅读笔记——环境贴图 Environment Mapping

    本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4969956.html 环境贴图 Environment Mapping 一.简介 环 ...