Hyperledger Fabric

BSN第二次大赛获奖作品展示-《基于区块链的海淀城市大脑·疫情防控平台》

徘徊边缘 提交于 2020-08-15 02:51:19
日前,区块链服务网络BSN第二次开发者大赛圆满落幕。本次大赛以“编写基于多底层框架的智能合约”为主题, 参赛作品基于Hyperledger Fabric、FISCO BCOS、CITA、XuperChain中至少一种底层框架编写智能合约。 根据大赛规则以及参赛者意愿,于2020年7月5日,对经作者许可的10份获奖作品和2份未获奖作品予以公布,作品 版权和署名权归属于原作者。 大赛组委会感谢各位参赛者发扬互联网精神,将自己的研究成果无私地与广大开发者进行分享。 大赛组委会将全部获奖作品在BSN知识库内完整展示。参赛者提交作品均为zip压缩包格式,为了方便大家与参赛者交流心得,在作品压缩包中加入了作者联系方式。因公众号文章篇幅限制,仅在此向大家展示获奖作品的说明文档,便于大家快速了解作品介绍,智能合约代码和其它资料请用户至BSN知识库下载学习。 作品名称:《 基于区块链的海淀城市大脑·疫情防控平台 》 使用框架:Fabric、 FISCO BCOS、XuperChain 来源: oschina 链接: https://my.oschina.net/u/4394131/blog/4415730

区块链论文集【22】

余生颓废 提交于 2020-08-14 06:15:44
区块链作为一种崭新的、颠覆性的技术,是国内外活跃的研究领域和毕业设计选题方向。本文列出最新的一组区块链方面的论文,希望可以对选择区块链毕业设计的同学们有所帮助,这是 汇智网 编辑整理的区块链毕业设计论文系列中的第22篇。 区块链开发教程链接: 以太坊 | 比特币 | EOS | Tendermint | Hyperledger Fabric | Omni/USDT | Ripple 本文整理了最新的可用于区块链毕业设计的参考论文,如果需要访问区块链毕业设计必读论文系列的最新文章,可以持续关注我们的 博客 ,或加入QQ群: 532241998 。 1、SoK:基于区块链的取证解决方案 当今社会数字化程度越来越高,随之而来的一个担忧就是如何应对日益增多的网络犯罪问题。执法部门和安全公司目前使用复杂的数字取证技术来分析调查网络犯罪。然而,由于大量证据的搜集和处理涉及到多方参与,这阻碍了数字取证正当性的实现。区块链技术已经被视为开发鲁棒的数字取证机制的可行方案。 本论文对现有的基于区块链的数字取证工具进行了综述和分类,并描述了这些工具的主要特性。论文作者同时对区块链技术和其他数字取证手段的关系以及其面临的挑战进行了详细的分析。基于各方面信息的综合,论文指出了目前存在的研究机会,并给出了进一步研究方向的建议。 论文PDF下载: SoK: Blockchain Solutions for

Hyperledger Fabric学习(七)智能合约(链码)

早过忘川 提交于 2020-08-11 11:12:39
智能合约(链码) 1、概述 链码的编写需要自定义struct,实现shim包Chaincode接口的两个方法: type Chaincode interface { Init ( stub ChaincodeStubInterface ) pb . Response Invoke ( stub ChaincodeStubInterface ) pb . Response } 链码的生命周期包括链码安装、实例化、升级等。其中链码的实例化和升级都会调用Init()方法,链码的invoke、query调用方式都只会调用Invoke()方法。 在shim包中,fabric给我们提供了ChaincodeStubInterface接口,在该接口中,我们可以使用接口中的方法实现具体的链码业务。 特别说明一句,如果链码方法最后返回的pb.Response是shim.Error(),那么所有的操作,包括数据插入、数据删除、创建复合键、发送事件、调用其他链码等都是无效的,即一次链码的调用具有事务性,如果返回shim.Success()则所有操作都成功,否则所有操作都失败。 2、接口描述 1)参数解析 直接获取所有参数 字节数组[]byte形式 /* args := stub.GetArgs() - args 所有参数的[]byte形式 */ GetArgs ( ) [ ] [ ] byte

Hyperledger Fabric学习(八)Fabric SDK调用链码、监听链码

孤街浪徒 提交于 2020-08-11 09:43:51
Fabric SDK调用流程 1、文字描述 获取FabricSDK sdk , err := fabsdk . New ( config . FromFile ( sdkConfig ) ) 加入Org、User信息 rcp := sdk . Context ( fabsdk . WithOrg ( orgName ) , fabsdk . WithUser ( userName ) ) 获取指定Channel的Channel Provider ccp := sdk . ChannelContext ( channelID , fabsdk . WithUser ( userName ) ) 获取该Channel的Channel Client cc , err := channel . New ( ccp ) 封装channel.Request var req = & channel . Request { ChaincodeID : chaincodeID , Fcn fcn , Args args , TransientMap transientMap , } 封装channel.RequestOption var opts = [ ] channel . RequestOption opts = append ( opts , channel .

(区块链溯源) 基于Hyperledger Fabric 区块链的产品溯源( 化妆品 )

吃可爱长大的小学妹 提交于 2020-08-09 11:15:07
1. 技术背景 随着互联网的普及,网络购物的优点更加突出,网购与海购成为了越来越多消费者的选择。但是消费者们对于所购买的产品是否安全合格并不了解,诸如化妆品、食品等产品的质量会直接影响到消费者的身体健康状况,产品由产地输送至消费者手中的运输过程中会经过很多环节,任何一个环节出了影响产品质量的问题都会最终对消费者产生危害; 此外,很多消费者维权意识薄弱,在需要合理赔偿时由于相关证据不充分而只能放弃。综上,如何实现对产品由产地运输到消费者手中的运输过程进行有效监督和 高效追溯,成为本领域技术人员亟待解决的技术问题。 2. 业务流程 购物运营方为每个产品生成对应的私钥A和私钥B,并基于预先构建的区块链网络,将私钥A分发至产品的购买方进行存储,将私钥B分发至产品的供货方进行存储;购物运营方将基于私钥A加密生成的公钥PA和基于私钥B加密生成的公钥PB在区块链网络中进行广播,以使供货方将公钥PA和公钥PB存储于产品的包装上;由产品流经的每一个物流节点将产品的物流流转信息通过公钥PA和公钥PB分别加密存储至区块链网络中; 由购买方通过私钥A或者由供货方通过私钥B从区块链网络中对产品的物流流转信息进行溯源查询。 产品流经的每一个物流节点将产品的物流流转信息通过公钥PA和公钥PB分别加密存储至区块链网络中步骤之前,方法还包括: 由购物运营方对欲承运产品的物流方进行可信度验证; 若物流方为可信物流方

BSN第二次大赛获奖作品展示-《直播打卡挑战》

徘徊边缘 提交于 2020-08-04 12:36:57
日前,区块链服务网络BSN第二次开发者大赛圆满落幕。 本次大赛以“编写基于多底层框架的智能合约”为主题, 参赛作品基于Hyperledger Fabric、FISCO BCOS、CITA、XuperChain中至少一种底层框架编写智能合约。 根据大赛规则以及参赛者意愿,于2020年7月5日,对经作者许可的10份获奖作品和2份未获奖作品予以公布,作品 版权和署名权归属于原作者。 大赛组委会感谢各位参赛者发扬互联网精神,将自己的研究成果无私地与广大开发者进行分享。 大赛组委会将全部获奖作品在BSN知识库内完整展示。参赛者提交作品均为zip压缩包格式,为了方便大家与参赛者交流心得,在作品压缩包中加入了作者联系方式。因公众号文章篇幅限制,仅在此向大家展示获奖作品的说明文档,便于大家快速了解作品介绍,智能合约代码和其它资料请用户至BSN知识库下载学习。 作品名称:《 直播打卡挑战 》 使用框架:Fabric、XuperChain、FISCO BCOS 来源: oschina 链接: https://my.oschina.net/u/4408413/blog/4458761

Fabric1.4:Go 链码开发与编写

╄→гoц情女王★ 提交于 2020-05-02 18:48:49
1 链码结构 1.1 链码接口 链码启动必须通过调用 shim 包中的 Start 函数,传递一个类型为 Chaincode 的参数,该参数是一个接口类型,有两个重要的函数 Init 与 Invoke 。 type Chaincode interface{ Init(stub ChaincodeStubInterface) peer.Response Invoke(stub ChaincodeStubInterface) peer.Response } **Init:**在链码实例化或升级时被调用, 完成初始化数据的工作 **Invoke:**更新或查询帐本数据状态时被调用, 需要在此方法中实现响应调用或查询的业务逻辑 实际开发中, 开发人员可以自行定义一个结构体,重写 Chaincode 接口的两个方法,并将两个方法指定为自定义结构体的成员方法。 <br> 1.2 链码结构 package main // 引入必要的包 import( "fmt" "github.com/hyperledger/fabric/core/chaincode/shim" pb "github.com/hyperledger/fabric/protos/peer" ) // 声明一个结构体 type SimpleChaincode struct { } // 为结构体添加Init方法 func (t

Fabric1.4:链码管理与测试

主宰稳场 提交于 2020-05-02 18:48:34
1 链码介绍 智能合约在 Hyperledger Fabric 中称为链码(chaincode),是提供分布式账本的状态处理逻辑。链码被部署在fabric 的网络节点中,能够独立运行在具有安全特性的受保护的 Docker 容器中,以 gRPC 协议与相应的 peer 节点进行通信,以操作分布式账本中的数据。 一般链码分为两种: 系统链码 和 用户链码 。 1.1 系统链码 负责 Fabric 节点自身的处理逻辑,包括系统配置、背书、校验等工作,在 Peer 节点启动时会自动完成注册和部署。系统链码分为以下五种: 配置系统链码(Configuration System Chaincode,CSCC) :负责处理 Peer 端的 Channel 配置; 生命周期系统链码(Lifecycle System Chaincode,LSCC) :负责对用户链码的生命周期进行管理; 查询系统链码(Query System Chaincode,QSCC) : 提供账本查询 API。如获取区块和交易等信息; 背书管理系统链码(Endorsement System Chaincode,ESCC) :负责背书(签名)过程, 并可以支持对背书策略进行管理; 验证系统链码(Validation System Chaincode,VSCC) :处理交易的验证,包括检查背书策略以及多版本并发控制。 <br> 1

Fabric1.4:运行 first-network 网络

假如想象 提交于 2020-05-02 18:14:52
说明:运行 first-network 网络,必须先安装好 fabric1.4 的预置环境,fabric1.4 的安装可以参考此博文: https://www.cnblogs.com/zongmin/p/11635686.html 。本文使用 fabric 版本为 v1.4.3,其它版本的 first-network 网络配置可能不同。 构建你的第一个网络( Build Your First network ,BYFN)提供了一个 fabric 的示例网络。该示例网络中由两个组织构成,每个组织维护两个 peer 节点,默认使用 solo 共识服务。 1 脚本 byfn.sh first-network 中有一个启动脚本 byfn.sh,利用构建的 Docker 镜像快速启动网络。该脚本会启动一个 orderer 节点和四个归属两个不同组织的 peer 节点,还将启动一个容器运行脚本,它将 peer 节点加入通道(Channel)、部署和实例化链码,并根据已部署的链码驱动交易执行。 以下是 byfn.sh 脚本的帮助文档: $ ./byfn.sh Usage: byfn.sh <mode> [-c <channel name>] [-t <timeout>] [-d <delay>] [-f <docker-compose-file>] [-s <dbtype>] [-l

Fabric1.4:手动启动 first-network 网络(三)

佐手、 提交于 2020-05-02 18:14:32
注意:本文所使用的 fabric 版本为 v1.4.3,与其它版本的网络存在差异。 手动启动 first-network 网络系列分为三部分: 手动启动 first-network 网络(一) 手动启动 first-network 网络(二) 手动启动 first-network 网络(三) 第一篇单纯使用命令行的形式执行 byfn.sh 脚本中的内容,第二篇和第三篇是对手动启动网络过程所使用的命令和配置文件的解释。 1 启动分布式网络 手动生成 fabric 网络所需的配置文件(查看 手动启动 first-network 网络(二) )后,接下来需要启动区块链中提供网络服务的各个节点。fabric 采用容器技术,使用 docker-compose 这个工具来实现区块链网络所需的节点容器管理,实现方式只需要编写节点相应的配置文件即可。 1.1 docker-compose-cli.yaml 在 first-network 目录下提供了一个 dokcer-compose 工具所需的配置文件 docker-compose-cli.yaml ,我们使用该文件启动网络节点,下面是该文件的内容: version: '2' # 表示用的版本 2 的 YAML 版本 volumes: orderer.example.com: peer0.org1.example.com: peer1.org1