tokenpocket官方下载网站|fabric联盟链

作者: tokenpocket官方下载网站
2024-03-09 20:15:42

区块链技术简介之联盟链:HyperLedger Fabric - 知乎

区块链技术简介之联盟链:HyperLedger Fabric - 知乎切换模式写文章登录/注册区块链技术简介之联盟链:HyperLedger Fabric蓝石区块链2015年12月, 由Linux基金会牵头, IBM、Intel、Cisco等共同宣布了HyperLedger联合项目成立。超级账本项目为透明、公开、去中心化的企业级分布式账本技术提供开源参考实现。超级账本首次将区块链技术引入到分布式联盟账本的应用场景中, 为未来基于区块链技术打造高效率的商业网络打下基础。目前,超级账本由面向不同目的和场景的八大顶级子项目构成:• Fabric: 目标是区块链的基础核心平台,支持权限管理,基于Go语言实现;• Sawtooth: 支持全新的基于硬件芯片的共识机制Proof of Elapsed Time(PoET);• iroha: 账本平台项目, 基于C++实现, 带有面向Web和Mobile的特性• Blockchain Explorer: 提供Web操作界面, 可查看查询绑定区块链的状态(区块个数, 交易历史)信息等• Cello: 提供区块链平台的部署和运行时管理功能, 应用开发者无需关心如何搭建和维护区块链• Indy: 提供基于分布式账本技术的数字身份管理机制• Composer: 提供面向链码开发的高级语言支持, 自动生成链码等• Burrow: 提供以太坊虚拟机的支持, 实现支持高效交易的带权限的区块链平台而Fabric是最早加入到超级账本项目中的顶级项目, 面向企业的分布式账本平台, 引入了权限管理, 支持可插拔、可扩展, 由IBM、DIH等企业于2015年底提交到社区, 是首个面向联盟链场景的开源项目,Fabric基于GO语言实现, 目前已发布1.2版本。国内已有艾亿数融、OnChain、比邻共赢、BitSE、布比、三一重工、万达、华为、纸贵科技等诸多企业加入。Fabric的逻辑架构,就是技术组成部分。从应用程序端来看,包括了SDK、API、事件,通过SDK、API、事件来对底层区块链进行操作:包括身份管理、账本管理、交易管理、智能合约的部署和调用,从底层区块链这一端来看,对外提供以下服务:成员管理服务、共识服务、链码服务、安全和密码服务。fabric通过将各个部分分离成不同的模块,做到可插拔性、灵活扩展性。Fabric的基本框架如下:Fabric的基本逻辑架构Fabric节点间的网络架构是什么样的?我们先来上一张图 ,Fabric包含以下节点:客户端节点、CA节点、Peer节点、Orderer节点,而每个节点的用途和权限也是不一样的。Fabric的基本网络架构Fabric从功能上主要作用如下:◆提供分布式的部署方案;◆自动将本地的数据操作(账户建立、数据插入等)自动传送到全部节点上;◆提供数据查询,并确保数据的准确性和安全性。Fabric由于其联盟链的特性,可以面向企业内部或多个企业之间的商业区块链应用场景,将区块链的维护节点和可见性限制在联盟内部,并用智能合约(链码)重点解决联盟成员间的信任或信息不对等问题,以提高经济活动效率。Fabric主要应用的场景如下:➤金融服务:Fabric可以有效降低交易成本和管控风险、减少跨组织的交易风险,其在金融领域的应用受到了不少银行和金融交易机构的主要推动。➤征信和资产权属管理:Fabric可以促进数据的交易和流动;提供安全可靠的支持。特别是资产权属的管理,利用区块链平台建立的多方信任机制可以有效降低资产交易成本和违约风险。➤国际自动化贸易和供应链管理:Fabric可以简化管理流程中繁琐的手续。利用智能合约,贸易中销售和法律合同可以数字化、可以实现货物监控和实时支付,大大降低了公司的运营成本。 发布于 2018-10-10 16:52技术​赞同 3​​1 条评论​分享​喜欢​收藏​申请

联盟链(Fabric)的身份与角色 - 知乎

联盟链(Fabric)的身份与角色 - 知乎切换模式写文章登录/注册联盟链(Fabric)的身份与角色月光下的对立统一阿森纳/区块链/密码学(真)小白关于Fabric的身份问题,之前一直很迷惑。通过学习官方文档,我将关于身份和认证方面的内容整理链下来,并且加入了一些自己的理解。 1. 简介区块链作为一种分布式账本技术,主要分为许可链和非许可链。其中许可链又分为私有链和联盟链。和BTC或ETH 不同,联盟链是一种需要身份认证的区块链。只有通过认证的节点或组织才能参与联盟链网络中的交易。2. Hyperledger fabricHyperledger fabric是一种联盟链。fabric网络中的成员都需要在可信赖的成员服务提供者处注册,否则不能参与交易。/*因此围绕联盟链产生了一些争议,一些人认为以fabric为代表的联盟链并不是真正的区块链,而另一些人则持反对意见。*/fabric有一个特有的功能,通道(channel)。通道中的成员与通道外的成员的相互隔绝的,只有同一个通道的成员能够共享账本,不同通道的成员之间的交易记录是不可互相查询的。值得一提的是,同一个节点可以加入不同的通道。fabric的共识机制是可以拔插的。共识机制是一个分布式系统里的名词,就是在不同的系统中并保持副本的一致性。fabric允许网络中的节点自行选择最能代表参与者需求的共识机制。fabric中的账本系统包括两个组件:世界状态(数据库)和交易日志(历史记录)。每个参与者都拥有他们所属的fabric网络的账本副本。世界状态描述了账本在给定时间点的状态。它是账本的数据库,记录了当前状态的所有交易,是世界状态的更新历史。交易日志是不可插拔的,它只记录区块链网络中使用账本数据库前后的值。3. Fabric的身份身份是联盟链区别与公链的一个最重要特征。在公链中是没有身份这个概念的,每个节点都是相同的角色。而fabric身份是联盟链中最重要的概念,甚至可以没有之一。联盟链中的身份确定了对资源的确切权限以及对参与者在区块链网络中拥有的信息的访问权限。整个网络中分为几种角色:peer节点(提交节点和背书节点),证书颁发机构CA,其中成员服务提供者(Membership Service Provider, MSP)是一个可信任的权威机构,它不是fabric中的角色,但是为fabric中的节点提供可信的身份认证。fabric中,默认的MSP实现使用X.509证书(使用最广泛的证书结构标准,包括证书信息/签名算法/数字签名等内容)作为身份,采用公钥基础结构(Pubic Key Infrastructure, PKI)作为分层模型。PKI 是身份供应商,为接入区块链网络的用户提供一个身份列表,用户的身份只能在身份列表的包含范围内选择;而MSP是接受身份供应商,会提供一个列表来确定哪些身份是可信的成员(也就是参与者)。4. 公钥基础结构(Pubic Key Infrastructure, PKI)PKI 有四个关键要素:数字证书/公钥私钥/证书颁发机构和证书撤销列表:数字证书包含了证书持有者(区块链网络参与者)的相关属性,其中最常见的证书类型就是X.509标准。最关键的是,证书持有者的公钥会在其证书中分发。数字签名可以验证消息的来源以及消息的完整性。公钥私钥的作用是为了验证数字签名(如Fig 1),这里用到了我们常说的非对称加密。密钥之间唯一的数学关系使得私钥在消息上的签名只有对应的公钥在相同的消息上才能匹配。参与者用私钥加密,而任何持有其公钥的用户都可以查看签名消息并验证签名。其中的公钥是每一个节点都可以使用的,用于充当授权锚;私钥被用在消息中产生数字签名。消息的接收者可以通过其所持有的发送者的公钥来验证数字签名的有效性,进而验证消息的来源和完整性。Fig 1 数字签名证书颁发机构(Certificate Authority,CA)CA是一个区块链网络信任的权威机构,它可以向参与者或者节点颁发经过加密验证的数字证书。CA向不同的参与者颁发证书,并对这些证书进行签名,将参与者的公钥绑定上去(可以选择包含参与者全部属性的列表)。区块链网络中的成员信任CA(并知道CA的公钥),则可以信任经过CA认证的证书,并通过验证CA的签名来获得签名中包含的所有属性。数字证书可以作为信任锚,来验证不同参与者的消息。区块链网络中可以存在一个或多个CA。CA分为根CA和中间CA,它们构成了一条信任链。根CA能够给整个网络中的用户颁发证书,中间CA的证书直接或间接地由根CA颁发,可以有隐藏和保护根CA的作用。Fabric CA是一个内置的CA组建,用来给fabric网络充当根CA,提供和管理证书。证书吊销列表(Certificate Revocation Lists,CRL)是一个被吊销证书的黑名单,CRL 上的证书都将被视为无效。5. 成员服务提供者(Membership Service Provider, MSP)PKI 解决了fabric网络中身份发放的问题,但由于节点的私钥永远都不会公开,因此还需要引入一种可以证实身份的机制 MSP 。MSP 是一组被添加在网络中的配置文件夹,被用来在外部和内部定义组织(organization)。CA生成代表身份的证书,而MSP包含了被许可身份的列表。MSP 通过识别成员或向成员颁发身份的CA,来确定是否接受它们作为信任域的成员。MSP 通过标志参与者在节点或通道中的特定权利,将身份转化为角色。简而言之,PKI(具体说是CA)提供的是身份;而MSP提供的是角色。当用户使用Fabric CA注册时,其必须关联为管理员/peer节点/客户端/排序节点/成员其中之一的角色。MSP 根据作用范围的不同分为:本地MSP和通道MSP。本地MSP为客户端/peer节点/排序节点定义,每一个节点都必须定义一个本地MSP。通道MSP则在通道层面定义了管理权和参与权,在通道中分配成员的权限,每一个参与通道的组织都要为自己定义一个通道MSP。因此,MSP 是一种能使参与者加入联盟链的机制,想要在Fabric网络上进行交易需要:1.拥有一个CA颁发的身份;2.成为一个被网络中的成员认可的组织成员(将成员的公钥添加到组织的MSP中即可);3.将MSP添加到一个网络中的联盟或通道中;4.确保MSP包含在网络所定义的策略(Policy)中。6. 策略(Policy)在Fabric中,策略是基础设施的管理机制。它表示了成员如何同意或拒绝网络/通道/智能合约的更改。策略是在区块链网络最初配置时由联盟成员一致同意的,但在网络演化的过程中可以更改。简而言之,在区块链网络中的所有行为都要受到策略的控制。策略是Fabirc区别于公链的内容之一。在公链中,交易可以在网络中的任意节点中生成和验证,但是Fabric是许可链的一种,因此策略决定了哪些组织可以访问或更新Fabric网络,并且提供了强制执行这些决策的机制。从这个角度看,我认为Fabric的可监管性更强。策略在Fabric网络的不同层级中都有应用。至于具体应用和访问控制列表(Access Control List,ACL)就放在后面再学了,这部分我感觉更偏向与工程实践。另外专门说两个我认为比较关键的策略:背书策略(Endorsement policy)定义了必须为执行提案背书的组织;修改策略(Modification policy)指定了任何配置更新所需要的一组身份,是更新策略的策略,每一个通道配置中都包含一个对修改策略的引用。7. Peer节点这一个部分我认为是和身份与角色相辅相成的,角色和身份就是为了peer节点组成的区块链网络服务的。但是peer可学的太多了,我放到后面。发布于 2021-10-05 23:57联盟链区块链(Blockchain)​赞同 2​​3 条评论​分享​喜欢​收藏​申请

起“底”联盟链:FISCO BCOS 与 Fabric之较 - 知乎

起“底”联盟链:FISCO BCOS 与 Fabric之较 - 知乎首发于AI前线切换模式写文章登录/注册起“底”联盟链:FISCO BCOS 与 Fabric之较AI前线2020年,我们继续同行,人工智能学习之路不寂寞!在国家政策的鼓励下,区块链技术的研发与推广正在不断升温,技术、标准、平台、框架都在持续发展,这其中,既有来自国外的布道者,也有源自国内的探索者。做为区块链三大部署形态之一的联盟链,因其与现实场景的高度契合性,正在出现越来越多的落地实例。为便于广大开发者、区块链爱好者了解联盟链中较为常见的两个开源设计,本文拟对Linux基金会的Hyperledger Fabric(以下简称Fabic)”和金链盟的“FISCO BCOS”进行简单的比较,权供大家参考。一、理念:设计背景与发展路径的区别Fabric诞生略早于FISCO BCOS。IBM较早意识到了区块链技术中可能蕴含的商机,投入较大力量进行相关研究,并于2015年将其设计的44000余行源代码奉献给了Linux基金会的Hyperledger项目,再融合了R3的一些设计思路后诞生了Fabric。Fabric最初即被定义为跨行业应用,因此,它注重的是构建基于区块链技术的通用框架。而FISCO BCOS最初的定位是设计为自主可控的、适用于金融行业的开源区块链底层平台。虽然FISCO BCOS出身自带“人设”,但随着平台的发展,FISCO BCOS也逐渐支持了更多金融领域以外的场景,是从“一专”到“多能”的发展路线。FISCO BCOS诞生于2017年,由金链盟推出,是标准的国产底层。金链盟是由深圳市金融科技协会、深圳前海微众银行、深证通等二十余家金融机构和科技企业于2016年5月31日共同发起成立的非营利性组织。目前,Hyperledger的会员大约为140余个,包括金融业、制造业、科技业等,也说明了其跨行业性,成员中大约1/4来自中国。而金链盟成员超过100个机构,覆盖银行、基金、证券、保险、地方股权交易所、科技公司、学术机构等多个行业,成员几乎全部来自中国。因此,在设计监管接口时,FSICO BCOS更适合中国企业。二、应用:带给开发者不同的设计思路Fabric做为一个通用设计框架,给出了比较完整的设计思路。其应用模型为MVC-B模式,MVC是软件设计中“模型-视图-控制器”设计模式,B即为区块链逻辑,包括链码(即智能合约)和交易,其含义即为以链码强化控制器,以交易强化模型,这是将区块链融入原有软件设计方式的指导。架构方面,Fabric给出的是成员管理服务、区块链服务、链码服务三大组成部分。可见,Fabric定义了一个基于区块链技术重新构建软件系统的架构方式,其用区块链彻底改变原有行业的良苦用心清晰可见。初次接触Fabric设计的人往往会试图用其建立起整个业务系统,笔者自己尝试过的业务设计也会顺着这种思路走,但是在实现中,通常会回到区块链系统与原业务系统结合的方式上。FISCO BCOS架构中很实用的一个设计是“AMOP”协议,AMOP协议在金融机构之间的业务来往中可以提供灵活的互操作性,可以结合区块链来实现复杂的交易场景。比如:A机构和B机构之间进行某种商品交易的价格协商或者份额撮合,其间需要往复多次协商,最终双方商定结果后,再按此结果发起链上交易,写入账本并达成确认,此前的协商则不在账本中记录,通过AMOP实现加密的点对点通信。FSICO BCOS给出的架构设计参考为“A机构业务系统-A机构前置-区块链网络中A机构节点-区块链网络中B机构节点-B机构前置- B机构业务系统”,这可以明显看出两个业务系统即区块链系统、原业务系统之间的分工协作,也就是说FISCO BCOS的应用方式更多是希望参与区块链的各方将需要做公共实现的部分放在区块链上,而与原有的业务系统“和谐相处”。这其实与其最初定位于金融行业有关,金融行业普遍信息化程度较高,原有业务系统比较复杂,差异也大,轻易不会接受较大外来改造,因此,这种做“公约数”和“连接器”的思路更容易实现和推广。业内普遍对区块链应用寄予较大希望的两种模式为:构建新的大型生态和改造现有的大型生态,而实现过程中,由于客观因素的限制,二者目前都没有出现突破。实际应用中,开发者可能还是要把握循序渐进的原则,从把区块链与现有系统结合做起,从改良到改变。三、跨链:关于通道和多链的比较Fabric中一项比较特殊的设计就是通道。通道是Orderers提供的服务,每个通道相当于一个消息订阅主题,加入该通道的节点间可以共享信息,而未加入通道的节点则无法共享信息,这为多参与方的设计中如何进行必要的信息隔离提供了方法。Fabric中每个通道都相当于一个链,一个通道一套账本,自然,跨通道就相当于跨链。但是Fabric的“多链”并不完善,因为它不支持跨链路由、跨链事务,只能跨链读取,更像是在一个单链上做的逻辑分割。实际开发中,通道通常被用于区分不同的业务,或者在复杂、冗长的业务流中区分不同的阶段,跨链机制的建立,只能通过同一个节点加入不同的通道来实现。FISCO BCOS是明确的多链设计,并且其设计指导中也建议按照业务分开不同的链,还可以为了扩容再按照机构数量进行分组,这种多链设计理论上可以无限扩大。采用多链之后,其节点操作、跨链操作都是基于网络地址,通过路由规则实现的,可以执行跨链读写。设计上建议同一个区块链网络里的多个分组在业务逻辑和配置尽可能高度一致,在商业规则、运营管理上都使用统一策略。目前多链设计还有一家,就是迅雷链,也是“同构多链”模式。多链模式通常效率会高于单链模式,这也是采取多链设计的原因之一,实测中,FISCO BCOS的吞吐量高于Fabric。性能和跨链一直是区块链技术中的热点话题。Fabric和FISCO BCOS都在这方面做出了积极的尝试,但是也都存在各自的问题,Fabric是跨链复杂且能力有限,而FISCO BCOS虽然解决了能力问题,但是分组机制也增加了业务设计的复杂性。四、社区:成熟度比较做为开源项目,社区建设对项目未来的发展非常重要,活跃的社区可以带来新的思维和广泛的需求,扩宽用户的视野,保障项目的健康成长。IBM是一家世界500强的跨国企业,拥有丰富的咨询经验,加上Fabric有众多的国内外项目,因此,建立起了国际化的开源社区,有众多优秀的自愿者参加社区工作,社区经常讨论要做的修改和发展问题,也经常在各地举办Meetup。FISCO BCOS面世时间不久,社区建设也正在大力开展中,目前其社区已经有近千名成员和近百家企业,同时也以技术沙龙的形式举办了多次线下交流活动。FISCO BCOS在未来的社区建设中,可以多考虑与监管机构、目标用户的互动,发挥自身优势,多举办一些领域专场而非简单的推广,开展时间持续、参与广泛、合作性质的专项话题,比如FISCO BCOS在供应链中的应用等,不局限于Meetup、沙龙形式,而应当多考虑些不受地域限制的互动形式。国际化方面,应该响应“一带一路”政策,跟随用户走,随着用户延伸,这样既有利于自身发展,也能帮助用户实现其业务目标。五、不得不说一下国产底层的优势做为一个后发的国产开源项目,FISCO BCOS还是在总结前人经验的基础上进行了很多有益的、符合国内环境的改良: (一)AMOP协议。又提到这个协议是因为其在解决多次协商场景方面确实有帮助,笔者在尝试用Fabric设计金融机构的同业交易市场业务模型时就遇到过这个问题。 (二)国密支持。这个优点相信做过Fabric的都有感受,因为在Fabric中进行国密替换不是件容易事,而国内,尤其是金融行业在这方面有强烈需求。 (三)支持多种CA。未来在电子合同、金融交易等方面,都需要有第三方CA的支持,能够支持多种CA对于确保区块链交易的法律地位是非常必要的。除此之外,合约命名服务(CNS)、区块链数据仓库等也提供了一些为应用考虑的便利设计。总结Fabric做为先行者,已经在联盟链方面具有了世界范围的领先优势,其架构比较成熟,也有数百个各类案例,其中包括马士基、沃尔玛等国际知名企业和海尔、邮储、中信等一众国内用户。FISCO BCOS做为后发者,利用自身优势,从金融行业出发走向跨领域应用,做了很多符合国内需要的独特设计。今年2月份广州仲裁委基于在FISCO BCOS上运行的“仲裁链”出具了业内首个裁决书,这是个有一定社会价值的案例。随着FISCO BCOS推广力度的上升,相信会逐步有更多的落地案例出现,为各行业的开发者提供应用指导。近期举办的「金链盟中国区块链应用大赛」,就是基于FISCO BCOS开发应用,提供资金、资源、技术辅导、投资人、媒体等支持和对接帮助,有兴趣的伙伴可以到大赛官网了解一下 https://con.geekbang.org/作者简介:付晓岩,中国建设银行资深业务架构师,负责业务架构设计、项目管理,热衷新技术探索与实践,具有丰富的银行业务经验和企业级项目业务架构设计经验。2000年加入建行,曾长期参加建行“新一代核心业务系统”建设,主导客户关系、金融市场、同业、资管、养老金等多个领域核心系统的业务架构设计。从2017年开始探索区块链技术及其应用,并发表《关于使用区块链技术建设行业级同业交易平台的探讨》、《数字货币可能诱发的现金社会经济活动的模拟与思考》等多篇文章。发布于 2018-10-09 14:41区块链(Blockchain)​赞同 23​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录A

联盟链初识以及Fabric环境搭建流程 | 登链社区 | 区块链技术社区

联盟链初识以及Fabric环境搭建流程 | 登链社区 | 区块链技术社区

文章

问答

讲堂

专栏

集市

更多

提问

发表文章

活动

文档

招聘

发现

Toggle navigation

首页 (current)

文章

问答

讲堂

专栏

活动

招聘

文档

集市

搜索

登录/注册

联盟链初识以及Fabric环境搭建流程

lgy

更新于 2018-11-21 17:30

阅读 14962

这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程。

这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程。

## 区块链分类

以参与方式分类,区块链可以分为:公有链、联盟链和私有链。

## 定义

我们知道区块链就是一个分布式的,去中心化的公共数据库(或称公共账本)。而联盟链是区块链的一个分支,所以它本身也是一个分布式的,去中心化的公共数据库,跟其他链的区别就是它是针对特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,其共识过程受到预选节点控制的区块链

## 本质

联盟链本质仍然是一种私有链,只不过它要比单个小组织开发的私有链更大,但是却没有公有链这么大的规模,可以理解为它是介于公有链和私有链的一种区块链。

## 联盟链的特点

- 交易速度快

我们知道对于公有链来说,要想达成共识,必须得由区块链中的所有节点来决定,本身公有链的节点数量就非常庞大,所以处理速度很慢。但对于联盟链来说,由于其节点不多的原因,而且只要当网络上2/3的节点达成共识,就可以完成交易,交易速度自然也就快很多。

- 数据默认不会公开

不同于公有链,联盟链上的信息并不是所有有访问条件的人就可以访问的,联盟链的数据只限于联盟里的机构及其用户才有权限进行访问。

- 部分去中心化

与公有链不同,联盟链某种程度上只属于联盟内部的所有成员所有,且很容易达成共识,因为其节点数毕竟是有限的。

### 联盟链项目

R3:由40多加银行参与的区块链联盟R3,包括世界著名的银行(如摩根大通、高盛、瑞信、伯克莱、汇丰银行等),IT巨头(如IBM、微软)。

超级账本(Hyperledger):由 Linux基金会在2015年12月主导发起该项目, 成员包括金融,银行,物联网,供应链,制造和科技行业的领头羊。

## Fabric介绍

我们知道智能合约比较成功的就是[以太坊](https://learnblockchain.cn/2017/11/20/whatiseth/)了。以太坊主要是公有链,其实对企业应用来说并不是特别合适,而且本身并没有权限控制功能,面向企业的,主要还是HyperLedger Fabric,当然还有R3的Corda。这里我们主要是讲Fabric。

Fabric是一个面向企业应用的区块链框架,基于Fabric的开发可以粗略分为几个层面:

**1.** 参与Fabric的底层开发,这主要是fabric,fabric-ca和sdk等核心组件。

**2.** 参与Fabric周边生态的开发,如支持如支持fabric的工具explorer, composer等。

**3.** 利用fabric平台开发应用,这就是利用fabirc提供的各种sdk来为应用服务(应用开发)

大部分企业会参与2-3的内容,以3为主来服务应用场景,以2为辅。因为现在除了区块链核心功能尚未完善外,对区块链的管理,运维,监控,测试,优化,调试等工具非常匮乏。企业将不得不面对自己开发一些工作。

### Fabric环境依赖

Fabric官方推荐的开发环境是基于docker搭建的,使用docker搭建需要一下前置条件:

- docker一一Docker version 17.06.2-ce 或以上版本

- Docker Compose一一1.14或以上版本

- Go一一1.10或以上版本, Node.js一一8.9.x或以上版本

- Python一一主要是python-pip

### Fabric环境搭建具体步骤

这里使用的是Ubuntu 16.04.4版本

#### **1.安装go及环境变量配置**

(1)下载最新版本的go二进制文件

```

$ wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz

```

(2)解压文件

```

$ sudo tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz

```

(3)配置环境变量

```

vim ~/.profile

```

添加以下内容:

```

export PATH=$PATH:/usr/local/go/bin

export GOROOT=/usr/local/go

export GOPATH=$HOME/go

export PATH=$PATH:$HOME/go/bin

```

编辑保存并退出vi后,记得使这些环境变量生效

```

source ~/.profile

```

#### **2.安装Docker**

Fabric的chaincode是运行在docker里的。

**(1)** 由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:

```

sudo apt-get remove docker docker-engine docker-ce docker.io

```

**(2)** 更新apt包索引:

```

sudo apt-get update

```

**(3)** 安装以下包以使apt可以通过HTTPS使用存储库(repository):

```

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

```

**(4)** 添加Docker官方的GPG密钥:

```

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

备注:可验证秘钥指纹 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

使用如下命令验证:

sudo apt-key fingerprint 0EBFCD88

```

**(5)** 使用下面的命令来设置stable存储库:

```

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

```

**(6)** 再更新一下apt包索引:

```

sudo apt-get update

```

**(7)** 安装最新版本的Docker CE:

```

sudo apt-get install -y docker-ce

注意:在生产系统上,可能会需要应该安装一个特定版本的Docker CE,而不是总是使用最新版本:

列出可用的版本:apt-cache madison docker-ce

选择要安装的特定版本,第二列是版本字符串,第三列是存储库名称,它指示包来自哪个存储库,以及扩展它的稳定性级别。要安装一个特定的版本,将版本字符串附加到包名中,并通过等号(=)分隔它们:

sudo apt-get install docker-ce=

```

**(8)** 测试是否安装成功

```

docker --version

```

**(9)** 使用阿里提供的镜像,否则后面下载Fabric镜像会非常慢

cd到/etc/docker目录下,创建文件daemon.json,输入下面的内容:

```

{

"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]

}

```

保存并退出,接着执行:

```

sudo systemctl daemon-reload

sudo systemctl restart docker

```

**(10)** 查看docker服务是否启动:

```

systemctl status docker

```

**(11)** 若未启动,则启动docker服务:

```

sudo service docker start或者sudo systemctl start docker

```

#### **3.安装最新版本的Docker-compose**

**(1)** Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行脚本:

```

sudo apt-get install python-pip

```

**(2)** 安装Docker-compose:

```

pip install docker-compose

```

**(3)** 验证是否成功:

```

sudo docker-compose --version

```

安装Docker还可以参考[此篇文章](https://blog.csdn.net/so5418418/article/details/78355868)

#### **4.Fabric源码下载**

**(1)** 新建存放测试、部署代码的目录。

```

mkdir -p ~/go/src/github.com/hyperledger/

```

**(2)** cd到刚创建的目录

```

cd ~/go/src/github.com/hyperledger

```

**(3)** 下载Fabric,这里使用使用git命令下载源码:

```

git clone https://github.com/hyperledger/fabric.git

```

**特别注意这里:**

直接使用上面的git clone下载会非常慢,因为github.global.ssl.fastly.Net域名被限制了。只要找到这个域名对应的ip地址,然后在hosts文件中加上ip–>域名的映射,刷新DNS缓存就可以了。

解决办法:

步骤【1】:查询域名`global-ssl.fastly.Net`和 `github.com` 公网地址

可以使用[https://www.ipaddress.com/](https://www.ipaddress.com/) 这个查。

分别查找下面这两个域名的ip地址:

```

github.global.ssl.fastly.net

github.com

```

步骤【2】:将ip地址添加到hosts文件

```

sudo vim /etc/hosts

```

在文件下方输入下面内容并保存,前面两个ip就是我们刚才上面查找到的ip:

```

151.101.185.194 github.global.ssl.fastly.net

192.30.253.113 github.com

```

步骤【3】:修改完hosts还不会立即生效,你需要刷新DNS缓存,告诉电脑我的hosts文件已经修改了。

输入指令:

sudo /etc/init.d/networking restart 即可,如果不行也可以尝试重启一下电脑。

接下来再去git clone就快很多了。

**(4)** 由于Fabric一直在更新,新版本的并不稳定,所有我们并不需要最新的源码,需要切换到v1.0.0版本的源码:

```

git checkout v1.0.0

```

#### **5.下载Fabric Docker镜像**

**(1)** 前面步骤4下载完成后,我们可以看到当前工作目录(~/go/src/github.com/hyperledger/)下多了一个fabric的文件夹,

接下来我们cd到~/go/src/github.com/hyperledger/fabric/examples/e2e_cli目录下执行:

```

source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

```

(注:一定要下载完所有镜像并且镜像版本要和Fabric版本一致如何没有下载问继续执行source download-dockerimages.sh命令直到在完如图所有镜像),执行完所有会用到的Fabric docker镜像都会下载下来了。

运行以下命令检查下载的镜像列表:

```

docker images

```

**注意**:如果下载时遇到权限问题,需要切换到root用户下:su root

**(2)** 重启Docker

```

service docker restart

```

#### **6.测试Fabric环境是否成功**

在~/go/src/github.com/hyperledger/fabric/examples/e2e_cli下执行如下命令启动测试

```

./network_setup.sh up

```

这个指令具体进行了如下操作:

1. 编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

2. 基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。

3. 基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。

4. 基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。

在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

运行完如果出现下图所示,说明整个Fabric网络已经通了。

![在这里插入图片描述](https://img.learnblockchain.cn/2018/fabric_test.png!wl)

#### 这里记录本人测试Fabric环境是否成功时遇到的问题

**1.** 如果发现运行 **./network_setup.sh up**命令 后提示在...fabric/release/linux-amd64/bin文件夹下找不到指定文件

**解决办法**:

可以在~/go/src/github.com/hyperledger/fabric/scripts文件下找到 **bootstrap.1.0.0.sh**文件,手动运行它 **./bootstrap.1.0.0.sh**, 此时可以在当前文件夹生成一个**bin**文件夹,bin里面的文件就是我们需要的,将它拷贝到前面的...fabric/release/linux-amd64/bin文件夹下

**2.** 如果出现:Error on outputBlock: Error writing genesis block: open ./channel-artifacts/genesis.block: is a directory不能生成创世块的错误。

**解决办法:**

可以在~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/channel-artifacts目录下,将genesis.block这个目录删除,**rm -rf genesis.block/**

**3.** 如果出现:.ERROR: for orderer.example.com Cannot start service orderer.example.com: b'OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \\"rootfs_linux.go:58:

**解决办法:**

执行./network_setup.sh down 清除网络后再启动即可

### 测试Fabric网络

接下来我们手动测试下Fabric网络,Fabric提供了SDK和CLI两种交互方式,这里我们使用的是CLI。

这里我们使用官方提供的小例子进行测试,在官方例子中,channel名字是mychannel,链码(智能合约)的名字是mycc。

首先要登录到CLI这个容器中,才能执行Fabric的CLI命令:

```

docker exec -it cli bash

```

这时用户名变为root@caa22f87a5bf,当前目录变为/opt/go/src/github.com/hyperledger/fabric/peer#,接着可执行peer命令,体验区块链的命令行使用方式。

**1.查看a账户的余额**

```

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

```

此时我们可以看到控制台输出有:

```

Query Result: 90

```

这里90就是a账户的余额

**2.调用链码,转账**

这里我们让b账户向a账户转账10:

```

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/go/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","b","a","10"]}'

```

转账成功后,我们可以看到有输出如下提示:

```

DEBU 009 ESCC invoke result: version:1 response:

```

接下来我们使用前面的命令继续查看a账户的余额,输出结果如下:

```

Query Result: 100

```

很明显我们已经转账成功了。

**退出cli容器:**

直接执行

```

exit

```

最后如果我们要关闭Fabric网络,cd到`~/go/src/github.com/hyperledger/fabric/examples/e2e_cli`下(注意这里的路径按自己前面创建的,不一定要和我一样),执行:

```

./network_setup.sh down

```

## 参考文章

https://blog.csdn.net/github_34965845/article/details/80610060

https://www.cnblogs.com/preminem/p/7729497.html

https://www.cnblogs.com/gao90/p/8692642.html

https://blog.csdn.net/so5418418/article/details/78355868

https://blog.csdn.net/iflow/article/details/77951610

https://blog.csdn.net/vivian_ll/article/details/79966210

本文的作者是lgy

[深入浅出区块链](https://learnblockchain.cn/) - 打造高质量区块链技术博客,学区块链都来这里,关注[知乎](https://www.zhihu.com/people/xiong-li-bing/activities)、[微博](https://weibo.com/517623789) 掌握区块链技术动态。

[深入浅出区块链知识星球](https://learnblockchain.cn/images/zsxq.png)最专业技术问答社区,加入社区还可以在微信群里和300多位区块链技术爱好者一起交流。

这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程。

区块链分类

以参与方式分类,区块链可以分为:公有链、联盟链和私有链。

定义

我们知道区块链就是一个分布式的,去中心化的公共数据库(或称公共账本)。而联盟链是区块链的一个分支,所以它本身也是一个分布式的,去中心化的公共数据库,跟其他链的区别就是它是针对特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,其共识过程受到预选节点控制的区块链

本质

联盟链本质仍然是一种私有链,只不过它要比单个小组织开发的私有链更大,但是却没有公有链这么大的规模,可以理解为它是介于公有链和私有链的一种区块链。

联盟链的特点

交易速度快

我们知道对于公有链来说,要想达成共识,必须得由区块链中的所有节点来决定,本身公有链的节点数量就非常庞大,所以处理速度很慢。但对于联盟链来说,由于其节点不多的原因,而且只要当网络上2/3的节点达成共识,就可以完成交易,交易速度自然也就快很多。

数据默认不会公开

不同于公有链,联盟链上的信息并不是所有有访问条件的人就可以访问的,联盟链的数据只限于联盟里的机构及其用户才有权限进行访问。

部分去中心化

与公有链不同,联盟链某种程度上只属于联盟内部的所有成员所有,且很容易达成共识,因为其节点数毕竟是有限的。

联盟链项目

R3:由40多加银行参与的区块链联盟R3,包括世界著名的银行(如摩根大通、高盛、瑞信、伯克莱、汇丰银行等),IT巨头(如IBM、微软)。

超级账本(Hyperledger):由 Linux基金会在2015年12月主导发起该项目, 成员包括金融,银行,物联网,供应链,制造和科技行业的领头羊。

Fabric介绍

我们知道智能合约比较成功的就是以太坊了。以太坊主要是公有链,其实对企业应用来说并不是特别合适,而且本身并没有权限控制功能,面向企业的,主要还是HyperLedger Fabric,当然还有R3的Corda。这里我们主要是讲Fabric。

Fabric是一个面向企业应用的区块链框架,基于Fabric的开发可以粗略分为几个层面:

1. 参与Fabric的底层开发,这主要是fabric,fabric-ca和sdk等核心组件。

2. 参与Fabric周边生态的开发,如支持如支持fabric的工具explorer, composer等。

3. 利用fabric平台开发应用,这就是利用fabirc提供的各种sdk来为应用服务(应用开发)

大部分企业会参与2-3的内容,以3为主来服务应用场景,以2为辅。因为现在除了区块链核心功能尚未完善外,对区块链的管理,运维,监控,测试,优化,调试等工具非常匮乏。企业将不得不面对自己开发一些工作。

Fabric环境依赖

Fabric官方推荐的开发环境是基于docker搭建的,使用docker搭建需要一下前置条件:

docker一一Docker version 17.06.2-ce 或以上版本

Docker Compose一一1.14或以上版本

Go一一1.10或以上版本, Node.js一一8.9.x或以上版本

Python一一主要是python-pip

Fabric环境搭建具体步骤

这里使用的是Ubuntu 16.04.4版本

1.安装go及环境变量配置

(1)下载最新版本的go二进制文件

$ wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz

(2)解压文件

$ sudo tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz

(3)配置环境变量

vim ~/.profile

添加以下内容:

export PATH=$PATH:/usr/local/go/bin

export GOROOT=/usr/local/go

export GOPATH=$HOME/go

export PATH=$PATH:$HOME/go/bin

编辑保存并退出vi后,记得使这些环境变量生效

source ~/.profile

2.安装Docker

Fabric的chaincode是运行在docker里的。

(1) 由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:

sudo apt-get remove docker docker-engine docker-ce docker.io

(2) 更新apt包索引:

sudo apt-get update

(3) 安装以下包以使apt可以通过HTTPS使用存储库(repository):

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

(4) 添加Docker官方的GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

备注:可验证秘钥指纹 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

使用如下命令验证:

sudo apt-key fingerprint 0EBFCD88

(5) 使用下面的命令来设置stable存储库:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

(6) 再更新一下apt包索引:

sudo apt-get update

(7) 安装最新版本的Docker CE:

sudo apt-get install -y docker-ce

注意:在生产系统上,可能会需要应该安装一个特定版本的Docker CE,而不是总是使用最新版本:

列出可用的版本:apt-cache madison docker-ce

选择要安装的特定版本,第二列是版本字符串,第三列是存储库名称,它指示包来自哪个存储库,以及扩展它的稳定性级别。要安装一个特定的版本,将版本字符串附加到包名中,并通过等号(=)分隔它们:

sudo apt-get install docker-ce=<VERSION>

(8) 测试是否安装成功

docker --version

(9) 使用阿里提供的镜像,否则后面下载Fabric镜像会非常慢

cd到/etc/docker目录下,创建文件daemon.json,输入下面的内容:

{

"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]

}

保存并退出,接着执行:

sudo systemctl daemon-reload

sudo systemctl restart docker

(10) 查看docker服务是否启动:

systemctl status docker

(11) 若未启动,则启动docker服务:

sudo service docker start或者sudo systemctl start docker

3.安装最新版本的Docker-compose

(1) Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行脚本:

sudo apt-get install python-pip

(2) 安装Docker-compose:

pip install docker-compose

(3) 验证是否成功:

sudo docker-compose --version

安装Docker还可以参考此篇文章

4.Fabric源码下载

(1) 新建存放测试、部署代码的目录。

mkdir -p ~/go/src/github.com/hyperledger/

(2) cd到刚创建的目录

cd ~/go/src/github.com/hyperledger

(3) 下载Fabric,这里使用使用git命令下载源码:

git clone https://github.com/hyperledger/fabric.git

特别注意这里:

直接使用上面的git clone下载会非常慢,因为github.global.ssl.fastly.Net域名被限制了。只要找到这个域名对应的ip地址,然后在hosts文件中加上ip–>域名的映射,刷新DNS缓存就可以了。

解决办法:

步骤【1】:查询域名global-ssl.fastly.Net和 github.com 公网地址

可以使用https://www.ipaddress.com/ 这个查。

分别查找下面这两个域名的ip地址:

github.global.ssl.fastly.net

github.com

步骤【2】:将ip地址添加到hosts文件

sudo vim /etc/hosts

在文件下方输入下面内容并保存,前面两个ip就是我们刚才上面查找到的ip:

151.101.185.194 github.global.ssl.fastly.net

192.30.253.113 github.com

步骤【3】:修改完hosts还不会立即生效,你需要刷新DNS缓存,告诉电脑我的hosts文件已经修改了。

输入指令:

sudo /etc/init.d/networking restart 即可,如果不行也可以尝试重启一下电脑。

接下来再去git clone就快很多了。

(4) 由于Fabric一直在更新,新版本的并不稳定,所有我们并不需要最新的源码,需要切换到v1.0.0版本的源码:

git checkout v1.0.0

5.下载Fabric Docker镜像

(1) 前面步骤4下载完成后,我们可以看到当前工作目录(~/go/src/github.com/hyperledger/)下多了一个fabric的文件夹,

接下来我们cd到~/go/src/github.com/hyperledger/fabric/examples/e2e_cli目录下执行:

source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

(注:一定要下载完所有镜像并且镜像版本要和Fabric版本一致如何没有下载问继续执行source download-dockerimages.sh命令直到在完如图所有镜像),执行完所有会用到的Fabric docker镜像都会下载下来了。

运行以下命令检查下载的镜像列表:

docker images

注意:如果下载时遇到权限问题,需要切换到root用户下:su root

(2) 重启Docker

service docker restart

6.测试Fabric环境是否成功

在~/go/src/github.com/hyperledger/fabric/examples/e2e_cli下执行如下命令启动测试

./network_setup.sh up

这个指令具体进行了如下操作:

编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。

基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。

基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。

在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

运行完如果出现下图所示,说明整个Fabric网络已经通了。

这里记录本人测试Fabric环境是否成功时遇到的问题

1. 如果发现运行 ./network_setup.sh up命令 后提示在...fabric/release/linux-amd64/bin文件夹下找不到指定文件

解决办法:

可以在~/go/src/github.com/hyperledger/fabric/scripts文件下找到 bootstrap.1.0.0.sh文件,手动运行它 ./bootstrap.1.0.0.sh, 此时可以在当前文件夹生成一个bin文件夹,bin里面的文件就是我们需要的,将它拷贝到前面的...fabric/release/linux-amd64/bin文件夹下

2. 如果出现:Error on outputBlock: Error writing genesis block: open ./channel-artifacts/genesis.block: is a directory不能生成创世块的错误。

解决办法:

可以在~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/channel-artifacts目录下,将genesis.block这个目录删除,rm -rf genesis.block/

3. 如果出现:.ERROR: for orderer.example.com Cannot start service orderer.example.com: b'OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"rootfs_linux.go:58:

解决办法:

执行./network_setup.sh down 清除网络后再启动即可

测试Fabric网络

接下来我们手动测试下Fabric网络,Fabric提供了SDK和CLI两种交互方式,这里我们使用的是CLI。

这里我们使用官方提供的小例子进行测试,在官方例子中,channel名字是mychannel,链码(智能合约)的名字是mycc。

首先要登录到CLI这个容器中,才能执行Fabric的CLI命令:

docker exec -it cli bash

这时用户名变为root@caa22f87a5bf,当前目录变为/opt/go/src/github.com/hyperledger/fabric/peer#,接着可执行peer命令,体验区块链的命令行使用方式。

1.查看a账户的余额

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

此时我们可以看到控制台输出有:

Query Result: 90

这里90就是a账户的余额

2.调用链码,转账

这里我们让b账户向a账户转账10:

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/go/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","b","a","10"]}'

转账成功后,我们可以看到有输出如下提示:

DEBU 009 ESCC invoke result: version:1 response:<status:200 message:"OK"

接下来我们使用前面的命令继续查看a账户的余额,输出结果如下:

Query Result: 100

很明显我们已经转账成功了。

退出cli容器:

直接执行

exit

最后如果我们要关闭Fabric网络,cd到~/go/src/github.com/hyperledger/fabric/examples/e2e_cli下(注意这里的路径按自己前面创建的,不一定要和我一样),执行:

./network_setup.sh down

参考文章

https://blog.csdn.net/github_34965845/article/details/80610060

https://www.cnblogs.com/preminem/p/7729497.html

https://www.cnblogs.com/gao90/p/8692642.html

https://blog.csdn.net/so5418418/article/details/78355868

https://blog.csdn.net/iflow/article/details/77951610

https://blog.csdn.net/vivian_ll/article/details/79966210

本文的作者是lgy

深入浅出区块链 - 打造高质量区块链技术博客,学区块链都来这里,关注知乎、微博 掌握区块链技术动态。

深入浅出区块链知识星球最专业技术问答社区,加入社区还可以在微信群里和300多位区块链技术爱好者一起交流。

学分: 21

分类: Fabric

标签:

Fabric 

点赞 1

收藏 3

分享

Twitter分享

微信扫码分享

你可能感兴趣的文章

Hyperledger Fabric 安装部署及测试网络汇总

1023 浏览

使用Tape测试工具实现对超级账本fabric区块链的交易压力测试

4012 浏览

旧区块链思维面临淘汰——超级账本错失三次黄金机会

2772 浏览

Hyperledger Fabric 1.4 Kafka分布式环境搭建

3136 浏览

Hyperledger Explorer 环境搭建详解

4704 浏览

二、hyperledger fabric fabric-samples 环境测试

3602 浏览

相关问题

fabric1.4.4 创建通道时出现问题

1 回答

fabric指定背书节点

2 回答

fabric2.2.0可以运行在Intel的SGX(software guard extensions)中么?

0 回答

fabric搭建出错

1 回答

hyperledger fabric 链码背书

1 回答

springboot使用fabric-java-sdk连接Ubuntu服务器出错

1 回答

0 条评论

请先 登录 后评论

lgy

关注

贡献值: 60

学分: 83

江湖只有他的大名,没有他的介绍。

文章目录

关于

关于我们

社区公约

学分规则

Github

伙伴们

ChainTool

为区块链开发者准备的开源工具箱

合作

广告投放

发布课程

联系我们

友情链接

关注社区

Discord

Twitter

Youtube

B 站

公众号

关注不错过动态

微信群

加入技术圈子

©2024 登链社区 版权所有 |

Powered By Tipask3.5|

粤公网安备 44049102496617号

粤ICP备17140514号

粤B2-20230927

增值电信业务经营许可证

×

发送私信

请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!

发给:

内容:

取消

发送

×

举报此文章

垃圾广告信息:

广告、推广、测试等内容

违规内容:

色情、暴力、血腥、敏感信息等内容

不友善内容:

人身攻击、挑衅辱骂、恶意行为

其他原因:

请补充说明

举报原因:

取消

举报

×

如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!

Fabric 介绍 — Hyperledger Fabric 中文文档 文档

Fabric 介绍 — Hyperledger Fabric 中文文档 文档

Hyperledger Fabric 中文文档

latest

Contents:

核心概念

Fabric 介绍

什么是区块链?

为什么区块链有用?

什么是 Hyperledger Fabric?

我在哪里可以学到更多?

Hyperledger Fabric 功能

Hyperledger Fabric Model

身份系统 Identity

成员关系

Peers

账本

Hyperledger Fabric 中文文档

Docs »

核心概念 »

Fabric 介绍

Edit on GitHub

Fabric 介绍¶

Hyperledger Fabric 是一个模块化架构的分布式账本平台,提供高度的机密性,弹性,灵活性和可扩展性。它旨在支持不同组件的可插拔实现,并且可以容纳生态系统中存在的高度复杂应用。

与别的区块链解决方案不同的是,Hyperledger Fabric 提供了独一无二的可伸缩架构。它也是为了满足未来需要审核的企业级区块链需求,从而在此基础上建立的开源架构。Hyperledger Fabric 将是你的起点。

我们建议首次使用的用户先阅读下面的介绍,以便熟悉区块链的工作方式以及 Hyperledger Fabric 的特定功能和组件。

一旦你感觉良好之后 — 或者说你已经熟悉了区块链以及 Hyperledger Fabric,那就跳到 Getting Started 章节,在那里探索更多的样例,技术规范,以及API等等。

什么是区块链?¶

分布式账本(A Distributed Ledger)

区块链网络的核心是一个分布式账本,用于记录在网络上发生的所有交易。区块链账本通常被描述为去中心化的,因为它被复制到许多网络参与者中,每个参与者都在协作维护。我们将看到,分权和协作是反映企业在现实世界中交换产品和服务方式的强大属性。

除了去中心化和协作之外,记录在区块链中的信息只能追加,使用加密技术可保证一旦交易添加在账本中,便无法对其进行修改。这种无法篡改的特性使得判断信息的来源变得很简单,因为参与者可以肯定信息在事后没有被改变。这就是区块链有时被描述为证明体系的原因。

智能合约(Smart Contracts)

为了支持信息一致性更新 —— 启用一整作用于账本的功能(交易,查询等) —— 区块链网络使用智能合约来提供对账本访问控制。

智能合约不仅是简单的封装信息在整个网络中同步,它们也可以被写入以允许参与者的一些交易能自动执行。例如,可以写一份智能合约,通过物品何时到达来决定传输费用。双方一旦同意该条款并写入账本中,当商品到达时,相应的资金将会自动被转入。

共识(Consensus)

通过网络保持分类账交易同步的过程 — 确保账本只有在交易获得相应的参与者批准时才更新,并且当账本更新时,它们以包含相同的顺序区块来更新账本 — 这个过程就称为共识。

我们将在后面学习更多关于账本、智能合约和共识的知识。就目前而言,将区块链视为共享的、复制的交易系统就足够了,该交易系统通过智能合约进行更新,并通过称为共识的协作过程保持一致同步。

为什么区块链有用?¶

现有的记录系统

今天的交易网络仅仅是对老旧的商业记录保存进行简单的更新。一个商业网络的成员彼此进行交易,但他们各自都维护着一套交易记录 — 无论是16世纪的佛兰芒挂毯还是今天的证券 — 每次出售时都必须确立其出处,以确保出售商品的商家拥有一系列产权。

它看起来像这样的商业网络:

现代技术已经从石板和纸质文件夹的时代过渡到硬盘驱动和云平台了,但是其底层架构是相同的。用于管理网络参与者身份的统一系统不存在,建立起源非常费力,需要数天的时间才能清除证券交易(世界量级是数万亿美元),合同必须手动签名和执行,并且系统中的每个数据库都包含唯一信息,因此意味着单点故障的发生。

交易对可见性和信任体系的需求是明确的,但今天的信息和流程分享方法仍然不可能建立跨越商业网络的记录系统。

区块链的与众不同之处

如果,相对于现在这种低效的交易系统,提供了一种标准体系来建立身份网络、交易自动执行、和数据同步存储会怎样?如果通过查看交易清单,一旦写入就不允许更改,以此来建立资产来源机制会如何?是不是这样,就能够形成信任体系呢?

上图描述了一个区块链网络,每个参与者都有自己的账本副本。除了共享账本信息之外,账本更新的过程也是共享的。

与今天的系统不同,今天的系统是私人的程序用来更新私人的账本,而区块链系统则是通过共享程序来更新共享的账本。

凭借通过共享账本协调业务网络的能力,区块链网络可以减少与私人信息处理时间、成本和风险,同时提高相互信任度和信息透明度。

您现在知道区块链是什么以及它为什么有用。区块链还有很多其他重要的细节,但都跟上面所提到的信息和流程共享的基本思想分不开。

什么是 Hyperledger Fabric?¶

Linux 基金会于2015年创立了 Hyperledger,以推进跨行业区块链技术。相对于声明一个的区块链标准,它鼓励通过社区协作流程来开发区块链技术,鼓励开源来开发知识产权并最终采用一套标准。

Hyperledger Fabric 是 Hyperledger 中的区块链项目之一。像其他区块链技术一样,它具有账本,使用智能合约,并且系统是参与者管理其交易的。

Hyperledger Fabric从其他一些区块链系统中脱颖而出的地方在于它是私密的并且是权限化的。相对于允许未知身份参与网络的开放式权限系统(需要工作证明等协议来验证交易和保护网络)。Hyperledger Fabric 网络的成员通过注册可信成员服务提供商(Membership Service Provider 简称 MSP)来保证系统的私密性。

Hyperledger Fabric 还提供多种可热插拔选项。账本数据可以以多种格式来存储,共识机制可以随时切换开关,并支持多种的MSP。

Hyperledger Fabric 还提供了创建频道(channels)的能力,允许一组参与者创建单独的交易账本。对网络参与者中有潜在的竞争对手的情况下,这是一个特别重要的选择 — 例如,他们向某些参与者提供的特殊价格 — 每位参与者都知道。如果两个参与者都在一个频道,那么这些参与者(没有其他人)就拥有该频道的账本副本。

共享账本(Shared Ledger)

Hyperledger Fabric 的账本系统有两个组件:世界状态(world state)和事务日志(transaction log)。每个参与者都将分类帐的副本分配给所属的每个 Hyperledger Fabric 网络。Hyperledger Fabric 中的网络参与者都有一本账本副本。

世界状态组件描述了在特定时间点下账本的状态。这是相当于账本的数据库。交易日志组件记录了构成世界状态的所有交易;由此得出,账本是世界状态数据库和交易日志历史记录的组合。

账本对世界状态有可替换的数据存储。默认情况下,这是一个 LevelDB 键值存储数据库。事务日志不需要是可插拔的。它只记录区块链网络中使用的账本数据库的前后值。

智能合约(Smart Contracts)

Hyperledger Fabric 的智能合约是用 chaincode 实现的,并且被区块链外部应用程序所调用,以此来与账本交互。在大多数情况下,chaincode 仅与账本的数据库组件(世界状态)(例如查询)交互,而不与交易日志交互。

Chaincode 可以用几种编程语言实现。目前支持的 chaincode 的语言是 Go,未来将支持 Java 和其他语言。

私密性(Privacy)

根据网络的需求,企业对企业(B2B)网络的参与者可能对他们共享多少信息非常敏感。对于其他区块链网络而言,隐私不会成为首要问题。

相遇对其他的区块链网络,隐私(使用频道方法)对于 Hyperledger Fabric 是非常关键的要求。

共识(Consensus)

交易必须按照发生的顺序写入账本中,网络中不同的参与者皆是如此。要做到这点,必须建立交易顺序,并且必须实施一种方法,用于拒绝错误(或恶意)插入账本的不良交易。

这是一个老生常谈的计算机科学领域,有很多方法可以实现共识算法,每个方法都有不同的利弊。例如,PBFT(Practical Byzantine Fault Tolerance)可以提供文件副本相互通信的机制,以保持每个副本的一致性,即使在发生损坏的情况下。或者,在比特币中,通过计算加密问题(也被称为挖矿)来实现共识,谁先算出来该区块就算谁的。

Hyperledger Fabric 被设计为允许网络初始者选择最能代表参与者之间存在关系的共识机制。与隐私一样,还有一系列需求;从关系高度结构化的网络到更加点对点的网络。

我们将了解更多的 Hyperledger Fabric 共识机制,其中目前包括 SOLO,Kafka,并且在另一个文档中,会很快将了解到 SBFT(简化的拜占庭容错)。

我在哪里可以学到更多?¶

我们提供了许多教程,将在其中介绍区块链网络中的大多数关键组件,详细了解他们如何与彼此进行交互,然后您将了解相关代码并针对正在运行的区块链网络运行一些简单的交易。我们还为那些想使用 Hyperledger Fabric 来运行区块链网络的人提供教程。

深入了解本介绍中引入的组件的概念以及其他的几个概念,并描述了它们是如何在样本事务流中一起工作。

Next

Previous

© Copyright 2018, Leslie.

Revision 5580ae4b.

Built with Sphinx using a theme provided by Read the Docs.

Read the Docs

v: latest

Versions

latest

Downloads

pdf

htmlzip

epub

On Read the Docs

Project Home

Builds

Free document hosting provided by Read the Docs.

区块链之联盟链---认识Fabric_fabric 联盟链-CSDN博客

>

区块链之联盟链---认识Fabric_fabric 联盟链-CSDN博客

区块链之联盟链---认识Fabric

最新推荐文章于 2024-03-08 11:33:26 发布

v_BinWei_v

最新推荐文章于 2024-03-08 11:33:26 发布

阅读量4.9k

收藏

28

点赞数

1

分类专栏:

区块链

文章标签:

区块链

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/ohwang/article/details/112862571

版权

区块链

专栏收录该内容

1 篇文章

0 订阅

订阅专栏

区块链之联盟链—认识Fabric

一. 介绍Fabric

Fabric 是超级账本联盟推出的核心区块链框架,它适合在复杂的企业内和企业间搭建联盟链。根据超级账本联盟的目标, Fabric 被建设为一个模块化的、支持可插拔组件的基础联盟链框架。; 其独有的channel概念,将企业根据业务目的不同以不同的子网连接起来, 每一个子网对应一个channel,而每个channel有自己独立的区块链。 理解channel的最简单方法就是,将它类比为一个消息服务提供的Topic,实际上Fabic最早就是基于Kafka 的分布式消息服务来实现。

二. 智能合约的执行和业务业务上链

业务上链–将事务结果记录在区块链上 Fabric分为三个阶段:

1、业务背书阶段:客户的请求发送的背书节点,通过智能和约完成业务的计算(但不完成个更新状态,并完成背书;将背书结果返回客户端)2、业务的排序阶段:客户端将背书结果通过Channel被发送到排序节点(orderer),在排序节点完成事务的排序,并打包block里,最后下发给所有连接到channel的节点3、CA证书节点 链码必须将其部署到Peer节点上 : 1、链码安装在指定网络节点上,安装完成后对其进行实例化,然后才可以调用链码处理交易(查询或执行事务)

三. Hyperledger Fabric 四大组件

Membership Services 成员服务、Blockchain Services区块链服务、Chaincode Servicel链码服务、Event 事件流 MSP: Membership Services Provider 成员关系服务提供

四. Hyperledger Fabric 典型的交易流程

Hyperledger Fabric 典型的交易流程如下图所示: ** 应用程序使用相应的SDK提供的API构建交易提案并交给相应的背书节点,交易提案中包含:** channelID:通道信息 chaincodeID:要调用的链码信息 timestamp:时间戳 sign:客户端的签名 txPayload:提交的事务本身包含的内容,包含两项: operation:要调用的链码的函数及相应的参数 metadata:调用的相关属性​

五.思考题 为什么联盟链更适合 企业?

因为企业不喜欢公开自己的数据,希望自己主导数据. 可以通过联邦学习进行相关的数据交互,同时保障了自身数据的安全不被泄露.

优惠劵

v_BinWei_v

关注

关注

1

点赞

28

收藏

觉得还不错?

一键收藏

知道了

2

评论

区块链之联盟链---认识Fabric

区块链之联盟链—认识Fabric一. 介绍FabricFabric 是超级账本联盟推出的核心区块链框架,它适合在复杂的企业内和企业间搭建联盟链。根据超级账本联盟的目标, Fabric 被建设为一个模块化的、支持可插拔组件的基础联盟链框架。;其独有的channel概念,将企业根据业务目的不同以不同的子网连接起来, 每一个子网对应一个channel,而每个channel有自己独立的区块链。理解channel的最简单方法就是,将它类比为一个消息服务提供的Topic,实际上Fabic最早就是基于Kafka

复制链接

扫一扫

专栏目录

区块链Hyperledger-Fabric实践日志.pdf

11-23

hyperledger fabric 环境搭建和学习实践记录

区块链目前分为哪几类呢?

xgocn的专栏

03-15

8169

  1“公有链”(Public blockchain)  2“私有链”(Private blockchain)  3“联盟链”(Consortium blockchain)  三类区块链主要区别是什么?  公有链:对所有人开放,任何人都可以参与;  联盟链:对特定的组织团体开放;  私有链:对单独的个人或实体开放。  业内外人士观点  业内外人士对于该采用以上哪种类型的区块链看法不一,并引发了诸...

2 条评论

您还未登录,请先

登录

后发表或查看评论

联盟链——02.Fabric 快速入门

boss2967的博客

12-19

928

1.1 Fabric 介绍

Fabric Hyperledger 项目组中的核心项目,Fabric 的特性以及 Hyperledger 项目组中与 Fabric 相关的项目的基本属性,重点介绍 Fabric 的编译 安装 使用等内容

1.2 Fabric 的技术特性

使用基于 町的查询、范围查询、复合键查询来查询或更新账本

只读查询支持丰富的查询语句( CouchDB

只读的历史查询一一实现...

fabric智能合约开发的相关API

qq_65114400的博客

12-21

961

return shim.Error(fmt.Sprintf("获取账户 %s 余额失败:%s", fromAccount, err))return shim.Error(fmt.Sprintf("更新账户 %s 余额失败:%s", fromAccount, err))return shim.Error(fmt.Sprintf("获取账户 %s 余额失败:%s", toAccount, err))return shim.Error("获取账户"+args[0]+"余额发生错误:"+err.Error())

区块链技术系列(3)- Fabric基础架构原理

iamhuihua的博客

09-11

3361

前言

对于区块链方面多技术,我还是建议大家多看英文文档,多利用Google来搜索技术文章。

怎么搭建自己专属V-P-N来访问Google,请看我之前发的文章: 新人如何快速搭建自己的个人网站以及自己专属V-P-N代理

Linux基金会于2015年12月启动了名为“超级账本”(Hyperledger)的开源项目,旨在推动各方协作,共同打造基于区块链的企业级分布式账本底层技术,用于构...

联盟链初识以及Fabric环境搭建流程

weixin_34019144的博客

11-27

1133

这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程。

区块链分类:

以参与方式分类,区块链可以分为:公有链、联盟链和私有链。

定义:

我们知道区块链就是一个分布式的,去中心化的公共数据库(或称公共账本)。而联盟链是区块链的一个分支,所以它本身也是一个分布式的,去中心化的公共数据库,跟其他链的区别就是它是针对特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人...

fabric联盟链

weixin_44262492的博客

02-23

682

fabric联盟链

联盟链之hyperledger-fabric

leaning_java的博客

01-24

2481

联盟链之hyperledger-fabric

Fabric学习(一) — 区块链及相关技术介绍

qq_45875349的博客

11-30

2490

区块链概念最早是从比特币衍生出来的。

比特币(Bitcoin)诞生于2008年,是由一个名叫中本聪(Satoshi Nakamoto)的人首次提出,这个人非常神秘,至今没有他的任何准确信息。在提出后不久,比特币就诞生了。

比特币以及其他数字货币的核心技术称为区块链技术。区块链(Blockchain)在信息技术里是一种数据结构或数据存储方式。它创新性地组合了密码技术、点对点(P2P)网络、分布式部署等技术,可以称其为一个划时代的理念。

【教程】如何启动fabric的联盟链?起链十二步解读

这里面的代码全是错的

08-21

1131

configtxgen 组件,用于生成通道创世区块或通道交易的配置文件,需要与configtx.yaml文件配套使用。configtxgen 组件,用于生成通道创世区块或通道交易的配置文件,需要与configtx.yaml文件配套使用。configtxgen 组件,用于生成通道创世区块或通道交易的配置文件,需要与configtx.yaml文件配套使用。peer 组件,可用于创建通道、节点加入、链码安装、链码实例化、链码交互等操作;

Fabric区块链开发详解

mongo_node的专栏

03-25

6651

Hyperledger是一个旨在推动区块链跨行业应用的开源项目,由Linux基金会在2015年12月主导发起该项目,成员包括金融、银行、物联网、供应链、制造和科技等多个行业的领头羊,托管了众多面向企业的区块链开源框架和工具。

Hyperledger及Fabric项目概述

Hyperledger Fabric(后文简称Fabric)是其中发展最好的一个企业级区块链平台,最初由Digital Ass...

WEHousing:Golang微服务+区块链链实战--- go + micro + fabric实现租房上链系统

03-11

通过Micro微服务框架实现的一个房屋短租平台,结合fabric联盟链对房屋信息进行存储,目前正在完善fabric存储房屋信息的功能。 项目的基本功能:用户注册,用户登录,头像上传,用户详细信息获取,实名认证检测,位置...

hyperledger-fabric-linux-amd64-1.4.0.tar hyperledger-fabric-ca

03-22

fabric二进制文件-hyperledger-fabric-linux-amd64-1.4.0.tar 和hyperledger-fabric-ca-linux-amd64-1.4.0.tar

Hyperledger Fabric区块链分布式账本-其他

06-11

Hyperledger Fabric 是由 Linux 基金会发起创建的开源区块链分布式账本。 Hyperledger Fabric 是一个开源区块链实现...你要是不知道这些术语什么意思,就记住一点,Fabric 之于区块链,很可能正如 Hadoop 之于大数据。

java与fabric区块链–fabric-ca-server 注册—(3)

01-07

回顾 ...红线圈住的是fabric-java-jdk自己实现的user方法,我们看到的是在1.4之后就没有LocalUser方法了,但是我们可以自己实现一个User接口,在fabric-java-jdk的测试用例中有SampleUser实现类,我

如何做代币分析:以 CRO 币为例

m0_60517769的博客

03-05

764

Cronos (CRO) 是 Crypto.com 创建的代币,用于其去中心化金融服务区块链和环境。

什么是区块链粉尘攻击?

J_Lee

03-02

1000

什么是区块链粉尘攻击?

如何做代币分析:以 USDC 币为例

m0_60517769的博客

03-06

439

USDC 是最透明和值得信赖的稳定币之一,因为每个流通中的 USDC 代币都有相应数量的美元储备。

Web3探索加密世界:什么是Web3钱包?

最新发布

qq_29268247的博客

03-08

443

通过利用IEN的虚拟化、可编程设备和分布式人工智能等技术,Web3钱包可以实现智能化的安全措施、分布式存储与备份、跨链资产管理和去中心化身份验证等功能,从而为用户提供更加安全、便捷和可信赖的数字资产管理服务。但是,什么是Web3钱包?在不断发展的Web3世界中,Web3钱包将继续扮演着关键的角色,为用户提供安全、开放和去中心化的数字金融服务。2. 去中心化应用支持: Web3钱包是访问和使用去中心化应用程序的门户,它为用户提供了与区块链网络和DApps交互的便捷途径,推动了区块链技术和加密经济的发展。

fabric-sdk-java 连接 虚拟机区块链网络

03-30

要连接虚拟机区块链网络,需要进行以下步骤:

1. 安装 Hyperledger Fabric 网络,并确保网络正在运行。

2. 下载并安装 fabric-sdk-java。

3. 创建一个 Java 应用程序,并将 fabric-sdk-java 添加到类路径中。

4. 在 Java 应用程序中创建一个 Fabric 客户端对象,并指定连接的节点信息。

5. 使用客户端对象创建一个 Fabric 通道对象,并向通道添加一个或多个对等方和一个或多个排序服务。

6. 在通道对象中定义和安装链码。

7. 使用客户端对象调用链码函数。

下面是一个简单的示例代码,展示如何连接虚拟机区块链网络。

```java

import org.hyperledger.fabric.sdk.*;

import org.hyperledger.fabric.sdk.exception.*;

public class FabricClient {

private HFClient client;

private Channel channel;

public FabricClient() throws Exception {

client = HFClient.createNewInstance();

// 设置连接信息

String peerUrl = "grpc://localhost:7051";

String ordererUrl = "grpc://localhost:7050";

String pemFile = "/path/to/pem/file";

String userName = "user1";

String orgName = "org1";

// 创建一个 Fabric 用户对象

User user = new FabricUser(userName, orgName, pemFile);

// 初始化客户端对象

client.setUserContext(user);

client.setCryptoSuite(CryptoSuite.Factory.getCryptoSuite());

// 创建一个 Fabric 通道对象

channel = client.newChannel("mychannel");

// 添加对等方节点

Peer peer = client.newPeer("peer1", peerUrl);

channel.addPeer(peer);

// 添加排序服务节点

Orderer orderer = client.newOrderer("orderer", ordererUrl);

channel.addOrderer(orderer);

// 初始化通道对象

channel.initialize();

}

public String invokeChaincode(String functionName, String... args) throws Exception {

// 创建一个链码调用请求对象

TransactionProposalRequest request = client.newTransactionProposalRequest();

ChaincodeID chaincodeID = ChaincodeID.newBuilder().setName("mychaincode").build();

request.setChaincodeID(chaincodeID);

request.setFcn(functionName);

request.setArgs(args);

// 发送链码调用请求并等待响应

Collection responses = channel.sendTransactionProposal(request);

for (ProposalResponse response : responses) {

if (response.getStatus() != ChaincodeResponse.Status.SUCCESS) {

throw new Exception("Chaincode invoke failed: " + response.getMessage());

}

}

// 提交链码调用事务

channel.sendTransaction(responses);

return "Chaincode invoke succeeded";

}

}

```

在这个示例代码中,我们创建了一个名为 FabricClient 的 Java 类,它充当了 Fabric 客户端的角色。在构造函数中,我们初始化了客户端对象,并连接了一个名为 mychannel 的 Fabric 通道。然后,我们定义了一个名为 invokeChaincode 的函数,该函数接受一个链码函数名和一个或多个参数,并将其用作链码调用请求。最后,我们向通道提交了链码调用事务。

要使用这个示例代码,您需要将其添加到一个 Java 应用程序中,并在应用程序中创建一个 FabricClient 对象。然后,您可以使用 FabricClient 对象调用 invokeChaincode 函数来调用链码函数。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

v_BinWei_v

CSDN认证博客专家

CSDN认证企业博客

码龄7年

暂无认证

71

原创

6万+

周排名

78万+

总排名

11万+

访问

等级

1122

积分

68

粉丝

86

获赞

21

评论

460

收藏

私信

关注

热门文章

优先队列——PriorityQueue详解

22279

专题四 Redis分布式锁中——Redission

15563

区块链之联盟链---认识Fabric

4924

实训9——门磁报警

4694

QT入门笔记(一)QT信号和槽

4619

分类专栏

Netty

3篇

java基础

4篇

Redis

3篇

QML专栏

3篇

项目坑

1篇

mysql

4篇

aop

1篇

单点登陆

2篇

docker

1篇

区块链

1篇

智能锁实验

19篇

ESP32小实验

14篇

并查集

AC自动机

最小生成树

1篇

dp之路

2篇

最短路

1篇

二分匹配

1篇

匹配

1篇

小记

最新评论

QT入门笔记(二)qml设计和引入js

#Page#:

而传统的 C++ 部件编写的界面对手机应用程序非常方便

QT入门笔记(二)qml设计和引入js

v_BinWei_v:

不清楚你的环境,我猜测是不是没有导入Js文件呢

QT入门笔记(二)qml设计和引入js

qq_54116450:

博主let oper = new Jie.OperatorNumber(88) 我的 let oper 用不了啊,定义都报错

实验2——指纹单模块实验

m0_50634573:

为什么只能录入127个指纹啊

秒杀系统(二)——商品模块展示技术难点

v_BinWei_v:

这系列还在更新,关注就行

大家在看

【量化】使用wind获取商品期货全品种全合约日K

54

C语言项目实战——贪吃蛇

6384

strlen 的用法和模拟实现strlen函数

面向对象的三大特性之一:多态性

159

whil语句text2

3

最新文章

Netty性能测试

并发编程——线程池

专题五 Redis高并发场景

2023年1篇

2022年28篇

2021年14篇

2020年21篇

2017年10篇

目录

目录

分类专栏

Netty

3篇

java基础

4篇

Redis

3篇

QML专栏

3篇

项目坑

1篇

mysql

4篇

aop

1篇

单点登陆

2篇

docker

1篇

区块链

1篇

智能锁实验

19篇

ESP32小实验

14篇

并查集

AC自动机

最小生成树

1篇

dp之路

2篇

最短路

1篇

二分匹配

1篇

匹配

1篇

小记

目录

评论 2

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

学习Hyperledger Fabric实战联盟链-企业端区块链原理精讲 - 哔哩哔哩

perledger Fabric实战联盟链-企业端区块链原理精讲 - 哔哩哔哩 学习Hyperledger Fabric实战联盟链-企业端区块链原理精讲闪学分享最新it技术

关注专栏/学习Hyperledger Fabric实战联盟链-企业端区块链原理精讲学习Hyperledger Fabric实战联盟链-企业端区块链原理精讲

2023年11月08日 12:03--浏览 ·

--喜欢 ·

--评论

闪学分享最新it技术粉丝:3文章:26

关注// 下栽の地止:http://www.shanxueit.com/679/ 学习Hyperledger Fabric实战联盟链-企业端区块链原理精讲引言区块链技术作为近年来备受关注的热门话题之一,正逐渐成为企业应用的重要组成部分。Hyperledger Fabric是一个领先的企业级区块链解决方案,由Linux基金会主导,旨在为企业提供安全、可扩展且可定制的区块链平台。本文将深入讲解Hyperledger Fabric的基本原理以及如何在实战中构建联盟链。1. Hyperledger Fabric简介1.1 Hyperledger项目Hyperledger项目是一个开源区块链倡议,旨在推动企业级区块链技术的发展和采用。它由多个子项目组成,每个子项目都专注于不同的区块链解决方案。1.2 Hyperledger Fabric特点Hyperledger Fabric具有以下特点:权限控制: Fabric允许定义在网络中执行交易的参与者,并允许灵活的权限控制。私密性: Fabric提供了通道(Channel)的概念,使得参与者只能看到他们所在通道中的交易信息。可扩展性: Fabric支持分布式网络,允许在大规模部署中实现高性能。灵活的智能合约: 支持使用通用编程语言编写智能合约,如Go、JavaScript等。模块化架构: Fabric的架构允许灵活配置各种组件以满足不同的业务需求。2. Hyperledger Fabric的基本原理2.1 架构概述Hyperledger Fabric的架构包括以下几个主要组件:成员(Members): 网络中的实体,可以是组织、个人或其他实体。通道(Channel): 是一个私密的数据传输通道,只有被邀请的成员才能参与。智能合约(Smart Contracts): 由成员编写的程序,定义了在区块链上执行的业务逻辑。分类帐(Ledger): 包括状态数据库和交易日志,用于存储和查询交易数据。背书策略(Endorsement Policy): 决定哪些成员必须对交易进行背书,以便将其添加到区块中。共识(Consensus): 确定哪些交易将被打包成区块,并添加到区块链中。成员服务提供者(Membership Service Provider,MSP): 负责验证成员的身份,并为其颁发数字证书。2.2 交易流程Hyperledger Fabric的交易流程包括以下步骤:提案(Proposal): 客户端向网络提交交易提案,包括要执行的智能合约、参数等信息。背书(Endorsement): 提案被发送到网络中的背书节点,这些节点会执行智能合约并返回签名,表示他们认可该交易。排序(Ordering): 背书后的交易被发送到排序服务,排序服务将它们按顺序打包成一个区块。验证(Validation): 区块被发送到网络中的所有节点,节点会验证区块中的交易是否合法。提交(Commit): 一旦区块得到验证,它将被提交到分类帐中,交易状态将被更新。3. 实战学习Hyperledger Fabric联盟链3.1 环境搭建在开始实战学习之前,需要先搭建Hyperledger Fabric的开发环境。可以参考官方文档或者相关教程进行安装配置。3.2 智能合约开发使用支持的编程语言(如Go、JavaScript等)编写智能合约,并确保合约逻辑满足业务需求。3.3 网络配置配置成员、通道、背书策略等网络参数,以及设置MSP以确保网络的安全性和隐私性。3.4 部署和运行将智能合约部署到网络中,并启动节点,以便开始进行交易。结论通过学习Hyperledger Fabric实战联盟链,我们可以深入理解企业级区块链的基本原理以及如何在实际项目中应用它。这将为企业提供一个安全、可扩展的区块链解决方案,以满足不同业务场景的需求。希望本文能为您在学习Hyperledger Fabric时提供一些帮助和指导。祝您在区块链技术的学习和实践中取得成功!本文禁止转载或摘编

分享到:

投诉或建议评论----

区块链之联盟链(三) 认识Fabric - 简书

联盟链(三) 认识Fabric - 简书登录注册写文章首页下载APP会员IT技术区块链之联盟链(三) 认识FabricCharles_linzc关注赞赏支持区块链之联盟链(三) 认识FabricFabric 是超级账本联盟推出的核心区块链框架,它适合在复杂的企业内和企业间搭建联盟链。根据超级账本联盟的目标, Fabric 被建设为一个模块化的、支持可插拔组件的基础联盟链框架。;与以太坊系的Quorum不同,Fabric从一开始就只考虑企业间的应用。其独有的channel概念,将企业根据业务目的不同以不同的子网连接起来, 每一个子网对应一个channel,而每个channel有自己独立的区块链。而Quorum很显然是只有一个公网(所有企业节点都加入进去),企业与企业间的私有业务是通过Private Manager 完成的。理解channel的最简单方法就是,将它类比为一个消息服务提供的Topic,实际上Fabic最早就是基于Kafka 的分布式消息服务来实现。

子网简化模型

       在Fabric网络中,一个企业可以有一个或多个节点加入整个联盟链;一个企业可以加入1个或者多个Channel(子网);  一个节点可以加入1个或者多个channel。每个channel构成一个子网,所以Fabric 是 一种由子网组成的网络。那么Fabric是怎么实现智能合约的执行和完成业务上链(将事务结果记录在区块链里)的呢?与其它框架不同, Fabric 将整个过程分成了三个阶段:业务背书阶段: 客户的请求发送的背书节点,通过智能合约完成业务的计算(但不更新状态),并完成背书;将背书结果返回个客户端。业务的排序阶段: 客户端将背书结果通过Channel被发送到排序节点(orderer),在排序节点完成事务的排序,并打包到block里,最后下发给所有连接到channel的节点。业务验证并写入账本阶段: 通过Gossip 网络,所有Channel的节点都会接收到新的block,节点会验证block中的每一个事务,确定是否有效:有效地将会跟新world state,无效的将会标志为“无效”,不会更新World state,但整个block会被完整的加入到帐本中(包括无效的事务)。根据以上的描述,Fabric 节点实际可以分为  ,普通节点和Order节点: Peer, 普通节点, 完成背书(包括只能合约的执行)和验证.orderer,  排序节点,完成排序。加入orderer节点的Fabric网络可以被描述如下:

新增Order后的网络组成

每一个Channel,都定义了所有属于channel的节点,但是并不需要所有节点都连接到Orderer 节点(节点间可以通过gossip 协议通讯来传播私有数据或事务).       在区块链中,共识是区块链的基础。与公有链不同,联盟链的共识要求所有加入账本的事务是确定的、最终的,也就是不可以有分叉,区块与区块间的顺序是一定的,只存在唯一条链。在Fabric 中,这个客观需求正是由排序实现的,所有的事务将被提交给orderer节点获得确定的顺序,并最终打包成block进入帐本。 Fabric 从1.4.1开始支持基于Raft实现排序服务,  可以认为基于Raft实现共识。基于RAFT的排序服务相对于早期的Kafka 具有更好的分布性,配置更加简单,是联盟链里常用的一个常用的达成共识的算法,Quorum就 默认使用RAFT作为共识层。简单的说,RAFT是一个leader和follower的模式, 所有加入RAFT网络的节点,任意时候都有一个leader,  只有这个leader有权决定事务的顺序,并打包成Block,其它节点只能作为follower提交事务和同步block。基于FAFT网络,每个企业可以有一个或多个节点参与到Orderer中去。在Frabric中企业间的网络连接可以变化成如下形式:

基于RAFT的Fabric 网络

       区块链的使用用户在以太网中被称作EOA(External of Account), EOA的载体是钱包。我们沿用这个概念,来看看Fabric是如何实现用户和发起事务的。Fabric中EOA是一个CA中心发布的certificate(x.509),一个Certificate代表一个Identity(这与以太坊还是有很大区别的, 以太坊中一个EOA其实是一个hash地址),EOA能够参与的channel以及被授权的操作是有channel的MSP(Membership Service Provider)决定的(如下图)。注:certificate 是一种密码学上验证身份的通用做法; certificate包含了个人的信息,公钥以及发布这个certificate的CA的签名。验证方只需要拥有这个CA的证书(包含CA的公钥),就可以验证这个签名是否正确,certificate的内容是否有篡改。简单的说,通过CA和Certificate,我们可以获得一个可验证的的身份和信任链。

EOA 与Fabric 网络

      如上图,fabric中通要使用Wallet作为EOA的载体,一个Wallet中可以包含多个Identity(x.509 certificate)。 Identity 通过 CA提供的信任链来验证正确性。  验证了身份之后, Fabric 通过MSP在区块链网络中解决该身份是否代表组织的成员和在组织内具有什么角色。例如,channel首先会验证当前用户Identity是否是有效地身份,然后通过MSP查看其所处的企业和具有的角色,最终确定该用户是否有权执行操作。可以说,Fabric的访问控制是通过MSP来完成的。在每一个需要访问控制的地方都需要定义一个MSP。  例如,每个channel都定义一个MSP,这个MSP规定了在channel范围内资源的访问权限。 MSP 是Fabric里一个晦涩难懂的概念,也是其赋予企业间安全访问的基础。前文提到, Fabric 将业务处理和上网分成了三个部分, 背书,排序,验证后加入账本。其中背书是Fabric执行智能合约的阶段。以太坊中,智能合约是在EVM中执行的,有多种语言支持。 在Fabric,智能合约被称为chaincode: 一个chaincode 可以理解为是智能合约的容器,可以包含一个或多个智能合约, 不用于EVM, chaincode是在 JVM 或NodeJS中执行。客户应用程序通过智能合约来访问账本,每一个可访问的智能合约都被安装在客户端可以访问的节点上,并被定义在channel里。(有只能合约的节点被称为背书节点,没有只能合约的节点被称未提交节点,提交节点只维护账本)客户应用提交一个交易请求, 请求到达背书节点, 背书节点首先会验证客户的签名,确保客户的身份有权执行本次交易,接着执行交易提及的智能合约(chaincode),并生成一个背书响应(或者叫做交易提案,tran-proposal)。这个背书响应中通常包含World state 的读集合,写集合, 以及节点对本次交易的签名。这里与以太坊系联盟链最主要的不同是:背书阶段只模拟交易,并不真正更新交易结果。而真正更新交易在第三阶段完成。背书节点最后将生成的背书响应fanhui给客户端, 智能合约部分的执行就结束了。通常一个交易的执行需要多方的签名,所以客户端需要将一个交易发送给多个背书节点,这些背书节点的选择需要满足背书策略的要求。下图是一个包含有客户、背书节点,提交节点的网络示意图。

客户发送交易请求的示意图

根据Fabric官方的参考文档,客户交易的正果过程可使用下图描述。

客户交易3阶段示意图

如上图,从1到3,为背书阶段,4为排序阶段,4.1,4,2, 5为验证提交阶段。 参考Frabic的节点概念,可以了解更多在交易细节的概念。  总的来看, Fabric 更专注于企业间,通过上文,可以让大家对Fabric的基本构成与概念有一个总的了解。  Fabric本身并不神秘,都是使用的现有的企业间的技术。要更好的了解,建议参考阅读分布式消息系统和企业的安全基础设施(CA相关)的支持。与以太坊系联盟链实现比较,  Fabric 的子网更概念对于复杂企业间应用适应更强,但是其复杂的安全考量,使得运营成本很高,另外,Fabric 使用Certificate做为用户身份,有很大的局限性,在新的2.0里,Fabric对于此处将有所改变。下一篇,我们将来看看Sawtooth , 由Inter 提供的区块链框架。区块链之联盟链(一) 认识以太坊区块链之联盟链(二) 认识Quotum区块链之联盟链(三) 认识Fabric区块链之联盟链(四) 认识Sawtooth最后编辑于 :2019.12.19 17:35:04©著作权归作者所有,转载或内容合作请联系作者人面猴序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...沈念sama阅读 145,866评论 1赞 309死咒序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...沈念sama阅读 62,394评论 1赞 260救了他两次的神仙让他今天三更去死文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...开封第一讲书人阅读 96,852评论 0赞 214道士缉凶录:失踪的卖姜人 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...开封第一讲书人阅读 41,592评论 0赞 186港岛之恋(遗憾婚礼)正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...茶点故事阅读 49,465评论 1赞 263恶毒庶女顶嫁案:这布局不是一般人想出来的文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...开封第一讲书人阅读 39,091评论 1赞 180城市分裂传说那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...沈念sama阅读 30,669评论 2赞 279双鸳鸯连环套:你想象不到人心有多黑文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...开封第一讲书人阅读 29,435评论 0赞 172万荣杀人案实录序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...沈念sama阅读 32,820评论 0赞 217护林员之死正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...茶点故事阅读 29,534评论 2赞 221白月光启示录正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...茶点故事阅读 30,865评论 1赞 233活死人序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...沈念sama阅读 27,312评论 2赞 218日本核电站爆炸内幕正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...茶点故事阅读 31,810评论 3赞 214男人毒药:我在死后第九天来索命文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...开封第一讲书人阅读 25,703评论 0赞 9一桩弑父案,背后竟有这般阴谋文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...开封第一讲书人阅读 26,135评论 0赞 170情欲美人皮我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...沈念sama阅读 33,844评论 2赞 236代替公主和亲正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...茶点故事阅读 33,990评论 2赞 239推荐阅读更多精彩内容fabric1.2网络环境启动过程详解fabric运行机制及环境搭建 fabric运行机制及环境搭建环境依赖基于docker镜像的fabric1.2开发...别咬我行不阅读 4,485评论 0赞 1超级账本HyperLedger视频教程:Fabric-CA的使用演示(两个组织一个Ordere...说明 启动fabric-ca 生成fabric-ca admin的凭证 创建联盟 为每个组织准备msp 注册exa...萬物一馬阅读 3,057评论 0赞 5Hyperledger Fabric架构详解转载:区块链开源实现 hyperledger fabric 架构详解 (http://t.cn/R14zaCC) ...vdes阅读 10,533评论 0赞 27hyperledger day01Hyperledger Hyperledger is an open source collaborative e...黑马程序员小华华阅读 1,439评论 1赞 4(译)超级账本官方文档 基本概念(三) - 节点(Peer)如有翻译不当之处烦请指出,我不确定的地方都给出了原文 超级账本是Linux基金会发起的项目,意在提供一套企业级区块...Abububiu阅读 6,068评论 0赞 7评论0赞44赞5赞赞赏更

从零开始fabric联盟链环境搭建,及简单应用 - 哔哩哔哩

fabric联盟链环境搭建,及简单应用 - 哔哩哔哩 从零开始fabric联盟链环境搭建,及简单应用lsp会长

关注专栏/从零开始fabric联盟链环境搭建,及简单应用从零开始fabric联盟链环境搭建,及简单应用

2024年02月27日 10:20--浏览 ·

--喜欢 ·

--评论

lsp会长粉丝:551文章:5

关注# fabric搭建*警告:建议Fabric所有实验过程皆在root权限下进行,否则在sudo权限切换的过程中会出现很多环境变量的问题。*# 0、重置服务器(重置前先备份一个快照),方便从零开始# 1、通过vscode,密码登录(暂时没用ssh免密,这个好像不能让多个电脑免密)如果重置后无法登录,把之前的用户文件夹下的.ssh文件夹清空,在重新连接一次(window的)# 2、完成基础配置- [x]  更新软件源(阿里云自带阿里代理)- [ ]  更新github代理(github代理先放着,暂时没有一劳永逸的方法,暂时先手动更改)- [x]  安装git、docker、curl、jq```bashapt install git curl jq -y# docker安装可看上一篇sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-commapt update && apt-get install ca-certificates curl gnupg lsb-release apt-transport-https software-properties-commonsudo install -m 0755 -d /etc/apt/keyringscurl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpgecho \  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.aliyun.com/docker-ce/linux/debian \  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullchmod a+r /etc/apt/keyrings/docker.gpg && apt-get updateapt-cache madison docker-ce  #查询存储库中可用的版本apt-get -y install docker-ce=5:23.0.3-1~debian.11~bullseye # Docker守护进程docker -v #检查安装版本docker info #基本信息```# 3、安装fabric工具网络好的可以用官方版本、不太好的就通过下载包来手动安装可参考以下文章[基于Debian搭建Hyperledger Fabric 2.4开发环境及运行简单案例 - 掘金](https://juejin.cn/post/7083396254214029348)先尝试官方的一键安装,一般会要很一段时间这一段可以尝试改一下github代理# 4、拉取部分镜像```bashdocker pull hyperledger/fabric-tools:latestdocker pull hyperledger/fabric-peer:latestdocker pull hyperledger/fabric-orderer:latestdocker pull hyperledger/fabric-ccenv:latestdocker pull hyperledger/fabric-baseos:latestdocker pull hyperledger/fabric-ca:latest``````bash这些镜像都是 Hyperledger Fabric 区块链平台的组件,它们分别提供不同的功能和服务:1. **hyperledger/fabric-tools:2.4**:这个镜像包含了 Hyperledger Fabric 区块链平台的工具集,可以用于执行各种与区块链相关的操作,例如创建通道、安装链码、查询区块链状态等。2. **hyperledger/fabric-peer:2.4**:这个镜像是 Hyperledger Fabric 区块链节点的一个组件,它实现了区块链网络中的对等节点(peer)功能。对等节点负责存储和维护账本、执行智能合约、交换区块等。3. **hyperledger/fabric-orderer:2.4**:这个镜像是 Hyperledger Fabric 区块链网络中的排序节点(orderer)组件。排序节点负责接收交易并将其排序,以确保所有的节点都按照相同的顺序处理交易。4. **hyperledger/fabric-ccenv:2.4**:这个镜像包含了 Hyperledger Fabric 区块链平台的链码开发环境,可以用于编译和运行链码。5. **hyperledger/fabric-baseos:2.4**:这个镜像提供了 Hyperledger Fabric 区块链平台的基础操作系统环境,用于运行各种 Fabric 组件。6. **hyperledger/fabric-ca:1.5**:这个镜像包含了 Hyperledger Fabric 的证书颁发机构(Certificate Authority,CA)组件,用于管理和颁发区块链网络中的证书,提供身份验证和授权服务。这些镜像是 Hyperledger Fabric 区块链平台的关键组件,用于构建、部署和管理区块链网络。通过使用这些镜像,开发者可以轻松地搭建和运行自己的区块链网络,并开发区块链应用程序。```# **5、运行测试官方demo**## **1、启动fabric网络**```bashcd fabric-samples/test-network./network.sh up``````bash###运行后的信息显示,该demo'leveldb' 数据库,以及来自 'cryptogen' 工具的加密。使用 Docker 和 Docker Compose 启动了 Hyperledger Fabric 区块链网络,其中包括对等节点、排序节点、CLI 容器等。以下是输出中涉及的关键信息:1. **Cryptogen 生成证书:**   使用 Cryptogen 工具生成了组织(Org1 和 Org2)以及排序节点(Orderer)的身份证书。2. **生成 CCP 文件:**   为 Org1 和 Org2 生成了用于连接到网络的 Connection Profile (CCP) 文件。3. **Docker 启动容器:**   使用 Docker 启动了四个容器:CLI、排序节点 (orderer.example.com)、Org1 对等节点 (peer0.org1.example.com) 和 Org2 对等节点 (peer0.org2.example.com)。每个容器都包含一个唯一的标识符(CONTAINER ID),以及它们对应的镜像和启动命令。容器状态显示为 "Up",表示它们已经成功启动,并且正在运行中。###```## **2、创建channel(通道)**channel是特定网络成员之间的私有通道,只能被属于该通道的组织使用,并且对网络的其他成员是不可见的。个channel都有一个单独的区块链账本,属于该通道的组织可以让其下peer加入该通道,以让peer能够存储channel上的帐本并验证账本上的交易。```bash./network.sh createChannel -c testchannel``````bash运行后的输出是在使用 Docker 和 Docker Compose 部署 Hyperledger Fabric 区块链网络时生成的。1. **创建通道 ('testchannel'):**   这个过程中,首先检查网络是否已经启动。如果没有启动,则会启动节点。然后使用 'leveldb' 作为数据库,创建一个名为 'testchannel' 的通道。如果网络已经启动,将显示 "Network Running Already"。2. **生成通道创世区块 ('testchannel.block'):**   使用 'configtxgen' 工具生成了一个名为 'testchannel.block' 的通道创世区块。这个区块用于初始化通道 'testchannel',并包含了通道的初始配置信息。3. **加入组织的对等节点到通道:**   接下来,组织 1 的对等节点(peer0.org1.example.com)和组织 2 的对等节点(peer0.org2.example.com)被加入到通道 'testchannel' 中。这样,这些对等节点就可以参与到通道中的交易和状态更新中。4. **设置锚节点:**   首先,为组织 1 设置了一个锚节点(peer0.org1.example.com),然后为组织 2 设置了一个锚节点(peer0.org2.example.com)。锚节点用于在区块链网络中传播通道配置更新。```## 3、部署智能合约### 3.1 配置go的开发环境准备使用go语言的demo,所以要先部署go的开发环境可参考之前的文章```bashwget [https://golang.google.cn/dl/go1.21.7.linux-amd64.tar.gz](https://golang.google.cn/dl/go1.18.1.linux-amd64.tar.gz)tar zxf go1.21.7.linux-amd64.tar.gzmv go go1.21.7 #改个名字,方便后续版本更新vim ~/.bashrc  #配置环境变量GOROOT=/root/env/go1.21.7export GOROOTexport PATH=$PATH:$GOROOT/binsource ~/.bashrcgo version # 查看go版本信息;go env # 查看go环境变量设置;```### 3.2 命令部署chaincode*部署链码时的终端必须是在go环境完成后开启的,不然环境变量不对*创建通道后,您可以开始使用智能合约与通道账本交互。智能合约包含管理区块链账本上资产的业务逻辑,由成员运行的应用程序网络可以在账本上调用智能合约创建,更改和转让这些资产。```bashgo env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct./network.sh deployCC -c testchannel -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go```链码部署成功,装载进两个对等节点中## 4、进行合约交互## 4.1 初始化chaincode```bash1、设置FABRIC_CFG_PATH变量,其下需包含core.yaml文件echo "开始修改变量"export FABRIC_CFG_PATH=/root/fabricLearn/fabric-samples/config2、设置其它Org1组织的变量依赖# Environment variables for Org1# CORE_PEER_TLS_ROOTCERT_FILE和CORE_PEER_MSPCONFIGPATH环境变量指向Org1的organizations文件夹中的身份证书。export CORE_PEER_TLS_ENABLED=trueexport CORE_PEER_LOCALMSPID="Org1MSP"#配置一下实验项目的跟路径,方便看TESTROOT=/root/fabricLearn/fabric-samples/test-networkexport CORE_PEER_TLS_ROOTCERT_FILE=${TESTROOT}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crtexport CORE_PEER_MSPCONFIGPATH=${TESTROOT}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/mspexport CORE_PEER_ADDRESS=localhost:7051echo "修改变量结束"3、初始化chaincode# fabric好像不在环境,先用绝对路径来使用peer命令吧# /root/fabricLearn/fabric-samples/bin/peer/root/fabricLearn/fabric-samples/bin/peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C testchannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"InitLedger","Args":[]}'```## 4.2 进行基本交互```bash# 查询账本资产列表/root/fabricLearn/fabric-samples/bin/peer chaincode query -C testchannel -n basic -c '{"Args":["GetAllAssets"]}'# 修改账本资产/root/fabricLearn/fabric-samples/bin/peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C testchannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'# 关闭网络./network.sh down# ./network.sh down 命令将停止并删除节点和链码容器、组织加密材料、删除之前运行的通道项目和docker卷,并从Docker Registry移除链码镜像。```本文禁止转载或摘编

分享到:

投诉或建议评论----