1.手动搭建Fabric网络-详解链码安装、源码实例化过程
2.详解fabric.js跨域
3.å¦ä½fabricå®è£
4.我的目录世界forge和fabric哪个好
5.fabric-sdk-goçç®å使ç¨
6.关于InfiniBand架构和知识点漫谈
手动搭建Fabric网络-详解链码安装、实例化过程
在HyperLedger的源码实践系列文章中,本文将深入探讨如何手动搭建Fabric网络,目录从链码的源码安装到实例化过程,一步步解析关键步骤。目录短线绝密 指标源码首先,源码我们通过安装Fabric环境和克隆最新代码,目录确保系统具备创建Fabric网络的源码基础。
接下来,目录我们详细说明了网络搭建的源码几个关键步骤:
1. 公私钥和证书生成
在Fabric网络中,涉及两种类型的目录证书:用于节点间通讯安全的TLS证书,以及用于用户登录和权限控制的源码用户证书。由于测试环境不使用CA节点,目录我们选择使用cryptogen工具生成证书。源码
1.1 编译cryptogen
通过Fabric源代码的make命令,我们能够编译生成cryptogen工具。运行成功后,可在build/bin文件夹下找到编译出的cryptogen程序。
1.2 配置crypto-config.yaml
该配置文件指导了Fabric网络的拓扑结构,包括不同组织和Peer的关系。通过分析示例文件,我们理解了如何为特定组织配置公私钥和证书。声纹识别 源码
1.3 生成公私钥和证书
借助cryptogen工具,根据crypto-config.yaml配置文件,生成了必要的公私钥和证书。
2. 创世区块与Channel配置
创世区块与Channel配置区块是Fabric网络启动和通道创建的基石。
2.1 编译生成configtxgen
使用make命令,我们生成了用于生成配置区块和配置交易的configtxgen工具。
2.2 配置configtx.yaml
通过官方提供的模板文件,我们配置了Orderer和Peer的共识策略。配置完成后,通过configtxgen生成创世区块。
2.3 生成创世区块与Channel配置区块
生成的创世区块用于启动Ordering服务和配置网络策略;Channel配置区块用于新建应用通道,指定成员与访问策略。
2.4 更新锚节点
锚节点负责组织间通信,通过生成更新文件,确保网络中各节点能够正确通信。
3. 配置Fabric环境的Docker
利用Docker-compose文件,我们配置了环境,包括Orderer、Peer和CLI组件。
3.1 配置Orderer
在base/docker-compose-base.yaml中,我们为Orderer配置了路径映射、服务端口等信息。it外包网站源码
3.2 配置Peer
Peer配置文件包含了服务地址、TLS信息、MSP信息等,确保Peer节点能够正确运行。
3.3 配置CLI
CLI作为客户端,配置了与Peer的连接信息以及脚本执行方式,用于执行SDK操作。
4. 初始化Fabric环境与创建Channel
通过执行docker-compose命令启动容器,我们完成了Fabric环境的初始化。然后,我们创建了Channel,并让各个Peer节点加入。
4.1 启动Fabric容器
在docker-compose-cli.yaml文件中配置好环境后,使用命令启动容器集群。
4.2 创建Channel
在CLI容器内,使用peer channel create命令创建Channel,并保存配置区块。
4.3 Peer加入Channel
通过修改CLI环境变量,指定连接的Peer节点,实现各节点加入Channel。
4.4 更新锚节点
完成Peer节点加入Channel后,更新锚节点配置以实现不同组织间的java.lang源码通信。
5. 链码安装与运行
最后,我们安装并运行链码,通过实例化过程将链码部署到Fabric网络中。具体操作包括安装链码、实例化链码以及执行交易。
5.1 安装链码
使用peer chaincode install命令,将链码安装到每个相关Peer节点上。
5.2 实例化链码
实例化过程生成包含链码实例的Docker镜像和容器,并通过与Orderer节点交互实现智能合约的激活。
5.3 执行交易
通过链码的调用执行转账操作,验证链码功能。
5.4 查询交易
在不同节点上查询交易,确保链码功能在全网内传播。
总结
通过以上步骤,我们不仅搭建了Fabric网络环境,还深入理解了链码安装与实例化的过程。理解这些关键步骤对于后续在生产环境中创建更复杂的网络和执行多样化链码提供了基础。在实施过程中遇到的任何问题,均可通过重新配置环境或深入理解Docker概念来解决。掌握Fabric网络的运行原理,对于进一步开发和优化区块链应用至关重要。
详解fabric.js跨域
处理fabric.js跨域问题,大灰狼8.96源码是开发者经常遇到的挑战之一。我作为vue-fabric-editor开源编辑器项目的作者,今天将为您详细介绍如何解决fabric.js跨域的难题。
问题现象
在使用fabric.js插入或保存时,开发者可能会遇到两种错误情况。要么在尝试保存新时遇到错误,要么在插入时出现问题。这些错误提示了跨域访问的问题。
跨域设置
要解决跨域访问的问题,需要分别从前端和后端进行配置。通过使用/hyperledger/fabric-samples/first-network/configtx.yaml ./
对configtx.yamlæ件è¿è¡ä¿®æ¹.
ä¿®æ¹ä¹å,å建ä¸ä¸ªæ件夹,æ¥ä¿åå³å°å建çåä¸åºåæ件
å°å建åºåæ件åééçå½ä»¤åå°ä¸ä¸ªèæ¬ä¸! generate.sh
èæ¬æ件åé ç½®æ件çç®å½ç»æ:
æ§è¡generate.shæ件çæåä¸åºåæ件åéé,å ¶å®åªæä¸ä¸ªç»ç»,ä¹æ²¡å¿ è¦çæéèç¹æ´æ°æ件..
$ ./generate.sh
é ç½®docker-composeæ件:
å¯å¨å®¹å¨, å¯å¨åæ¥ç容å¨è¿è¡æ åµ
$ docker-compose up -d
$ docker-compose ps
å¨è¿é,å建两个èæ¬æ件,ç¨äºdocker容å¨ç管ç
clear_docker.shæ件:
restart.shæ件:
å建é ç½®æ件çæ¶å,æ两个æ件å¯ä»¥è¿è¡åè...
ä¿®æ¹åçsdké ç½®æ件:
å建åºä¸ä¸ªæ¨¡å对象,ç»å ¶èµå¼,并å¼å§åå§åsdk
ä½¿ç¨ pkg/fabsdk/fabsdk.goä¸çNew()æ¹æ³è¿è¡å®ä¾å
å建请æ±ä¹å,éè¦ä½¿ç¨ gopackager.NewCCPackage æ¹æ³çæä¸ä¸ªresource.CCPackage 对象,ä¼ é两个åæ°,ä¸ä¸ªæ¯é¾ç çè·¯å¾(ç¸å¯¹äºå·¥ç¨çè·¯å¾), ä¸ä¸ªæ¯GOPATHçè·¯å¾.
å®è£ é¾ç ,使ç¨pkg/client/resmgmt/resmgmt.goæ件ä¸çæ¹æ³
å建请æ±ä¹å,éè¦çæä¸ä¸ª*cb.SignaturePolicyEnvelopeç±»åç对象,ä½¿ç¨ third_party/github.com/hyperledger/fabric/common/cauthdsl/cauthdsl_builder.goæ件ä¸çæ¹æ³å³å¯,æä¾äºå¥½å 个æ¹æ³, 使ç¨ä»»æä¸ä¸ªå³å¯.è¿éä½¿ç¨ SignedByAnyMemberæ¹æ³: éè¦ä¼ å ¥æå±ç»ç»ID
å®ä¾åé¾ç
ä½¿ç¨ pkg/client/channel/chclient.goä¸ç Execute()æ¹æ³,æ¥è¿è¡æ°æ®åå ¥çæä½:
rsp, err := model.Channelclient.Execute(req)
åå ¥ä¹å,è¦å建请æ±:
tempArgsæ¯è¦ä¼ ç»é¾ç çåæ°,å¯ä»¥åä¸å°è£ ,å°±ä¸ååæ°ä¸ªæ°çéå¶äº
ä½¿ç¨ pkg/client/channel/chclient.goä¸ç Query()æ¹æ³,æ¥è¿è¡æ°æ®æ¥è¯¢çæä½: æ¥è¯¢ä¹å,åæ ·éè¦å建请æ±.
é¾ç å¨å·¥ç¨ä¸çè·¯å¾åºè¯¥æ¯ å·¥ç¨å/chaincodeæ件夹
æ¯å¦:
driverFabricDemo/chaincode
èä¸åºè¯¥çç¥æå·¥ç¨åè¿æ ·å: chaincode
é误åå :cert.URIs å tpl.URIs è¿ä¸¤ä¸ªå段没æ被å®ä¹.
è¿å ¥tpl对象ä¸, /usr/local/go/src/crypto/x/x.go æ¯ä¸ªç»æä½,并没æåç° URIs å段
对goçæ¬è¿è¡å级,ä»1.9.3å级å°1..3, å次è¿å ¥ /usr/local/go/src/crypto/x/x.go æ件ä¸,æ¥çç»æä½å 容:
å¨æ§è¡sdkçExcute()æ¹æ³æ¶æ¥é.
æ¹æ³ä¸åå¨,ä¸è¬æ¯ç±äºé¾ç çInvokeæ¹æ³ä¸çæ¹æ³ååExcute()æ¹æ³ä¼ å ¥çæ¹æ³åä¸ä¸æ ·.
ä½æ¯å¯ä»¥è¯å®çæ¯,é¾ç çInvokeæ¹æ³ä¸çæ¹æ³åå,项ç®ä¸æ§è¡Excute()æ¹æ³æ¶ä¼ å ¥çæ¹æ³åæ¯å®å ¨ä¸æ ·ç! ä½æ¯å¾å¥æªäº,为ä»ä¹ä¼åºç°è¿ä¸ªé误å¢? ä½¿ç¨ docker rmi å é¤æ dev-peerx.travle.xq.com çéå,åéæ°è¿è¡å³å¯.
å¨å建å®ä¾åé¾ç 请æ±çæ¶å
æ»æ¯æ示
Cannot use str (type *cb.SignaturePolicyEnvelope) as type *common.SignaturePolicyEnvelope less... (⌘F1) Inspection info: Reports composite literals with incompatible types and values
æææ¯ç¸åçç±»å,å´æ»æ¯æ¥é,åºè¯¥æ¯IDEçé®é¢.ævendoræ件夹å é¤å,å°±ä¸ä¼ææ示äº. å使ç¨vendor对工ç¨è¿è¡init å add +external 就好äº!!
åºç°è¿ä¸ªé误,ä¸è¬é½æ¯é ç½®æ件åªä¸ªå°æ¹åéäº,éè¦ç»å¿æ£æ¥
关于InfiniBand架构和知识点漫谈
OpenFabrics Enterprise Distribution (OFED)是一组开源软件驱动、核心内核代码、中间件和支持InfiniBand Fabric的用户级接口程序,由OpenFabrics Alliance (OFA)于年发布第一个版本。Mellanox OFED适用于Linux、Windows (WinOF),包含诊断和性能工具,用于监视InfiniBand网络性能。OpenFabrics Alliance (OFA)是一个基于开源的组织,致力于开发、测试、支持OpenFabrics企业发行版,旨在通过将高效消息、低延迟和最大带宽技术架构直接应用到最小CPU开销的应用程序中,实现最大应用效率。成立于年的该联盟最初专注于开发独立于供应商、基于Linux的InfiniBand软件栈,并在年扩展支持Windows,使其软件栈真正跨平台。年,该组织进一步扩展其章程,支持iWARP,并于年增加了对RoCE (RDMA over Converged)的支持,通过以太网交付高性能RDMA和内核旁路解决方案。年,随着OpenFabrics Interfaces工作组的建立,联盟再次扩大,实现对其他高性能网络的支持。
Mellanox OFED是一个包含驱动、中间件、用户接口,以及一系列标准协议IPoIB、SDP、SRP、iSER、RDS、DAPL,支持MPI、Lustre/NFS over RDMA等协议的单一软件堆栈。Mellanox OFED由开源OpenFabrics组织维护,作为ISO映像提供,包含每个Linux发行版的源代码、二进制RPM包、固件、实用程序、安装脚本和文档。InfiniBand串行链路可以在不同的信令速率下运行,通过捆绑实现更高吞吐量。原始信令速率与编码方案耦合,产生有效的传输速率,编码通过铜线或光纤发送的数据,将错误率降至最低,同时增加了一些开销。
InfiniBand软件架构设计旨在简化应用部署,使得IP和TCP套接字应用程序可以利用InfiniBand性能,无需对以太网上的现有应用程序进行任何更改。适用于SCSI、iSCSI和文件系统应用程序。位于低层InfiniBand适配器设备驱动程序和设备独立API (verbs)之上的上层协议提供了行业标准接口,可以无缝部署现成的应用程序。LinuxInfiniBand软件架构由一组内核模块和协议组成,还有一些关联的用户模式共享库。用户级操作的应用程序对底层互连技术保持透明,本文主要关注应用程序开发人员需要了解的信息,以便使IP、SCSI、iSCSI、套接字或基于文件系统的应用程序在InfiniBand上运行。
InfiniBand堆栈的最低层由HCA驱动程序组成,每个HCA设备都需要一个特定于HCA的驱动程序,该驱动程序注册在中间层,并提供InfiniBand Verbs。高级协议,如IPoIB、SRP、SDP、iSER等,采用标准数据网络、存储和文件系统应用在InfiniBand上操作。除了IPoIB提供了在InfiniBand硬件上的TCP/IP数据流的简单封装,其他更高级别的协议透明地支持更高的带宽、更低的延迟、更低的CPU利用率和端到端服务,使用经过现场验证的RDMA(远程DMA)和InfiniBand硬件的传输技术。
在InfiniBand上评估基于IP的应用程序最简单的方法是使用上层协议IP over IB (IPoIB)。在高带宽的InfiniBand适配器上运行的IPoIB可以为任何基于IP的应用程序提供即时的性能提升。IPoIB支持在InfiniBand硬件上的(IP)隧道数据包。在Linux中,协议作为标准的Linux网络驱动程序实现,允许任何使用标准Linux网络服务的应用程序或内核驱动程序在不修改的情况下使用InfiniBand传输。Linux内核2.6.及以上版本支持IPoIB协议,并对InfiniBand核心层和基于Mellanox技术公司HCA的HCA驱动程序的支持。这种方法对于带宽和延迟不重要的管理、配置、设置或控制平面相关数据是有效的。然而,为了获得充分的性能并利用InfiniBand体系结构的一些高级特性,应用程序开发人员也可以使用套接字直接协议(SDP)和相关的基于套接字的API。
InfiniBand不仅对基于IP的应用提供了支持,同时对基于Socket、SCSI和iSCSI,以及对NFS的应用程序提供了支持。例如,在iSER协议中,采用SCSI中间层的方法插入到Linux,iSER在额外的抽象层(CMA,Connection Manager Abstraction layer)上工作,实现对基于InfiniBand和iWARP的RDMA技术的透明操作。这样使得采用LibC接口的用户应用程序和内核级采用Linux文件系统接口的应用程序的透明化,不会感知底层使用的是什么互连技术。具体技术细节,请参考梳理成文的“在InfiniBand架构和技术实战总结”电子书,目录如下所示,点击原文链接获取详情。
目前,InfiniBand软件和协议堆栈在主流的Linux、Windows版本和虚拟机监控程序(Hypervisor)平台上都得到了支持和支持。这包括Red Hat Enterprise Linux、SUSE Linux Enterprise Server、Microsoft Windows Server和Windows CCS (计算集群服务器)以及VMware虚拟基础设施平台。