fabric-sdk-goçç®å使ç¨
使ç¨fabricæä¾çcryptogenå·¥å ·çææ件模æ¿$ cryptogen showtemplate > crypto-config.yaml
è¿è¡ä¿®æ¹,æ·»å ä¸ä¸ªç»ç»,ä¸ä¸ªordererèç¹.
æ ¹æ®crypto-config.yamlæ件çæè¯ä¹¦æ件:
$ cryptogen generate --config=crypto-config.yaml
æ¥ççæçè¯ä¹¦æ件夹ç»æ:
éè¦ä»fabricçæºç æ¡ä¾ä¸æ·è´configtx.yamlæ件
$ cp $GOPATH/src/github.com/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 就好äº!!
åºç°è¿ä¸ªé误,ä¸è¬é½æ¯é ç½®æ件åªä¸ªå°æ¹åéäº,éè¦ç»å¿æ£æ¥
区块链Fabric | 简明教程
区块链 Fabric 的基础概念详解 区块链网络根据参与者的权限,可分为三种类型:公有链(如以太坊),联盟链(如Hyperledger Fabric 2.0),和私有链。阿三源码联盟链的核心在于,成员间认可身份、权限和责任,遵循统一的交易逻辑和策略。Hyperledger Fabric 的核心组件包括:通道(channel):逻辑上隔离不同组织的数据,每个通道对应一个独立的账本,成员间共享信息。
组织(organization):区块链网络的基本单元,如企业或行业协会。
节点(peer):组织内部运行的基础设施,分为orderer(负责共识和排序)和peer(处理背书等服务)。
智能合约(smart contract):编程实现的交易规则,通过链码部署在通道中。
账本(ledger):存储交易数据的核心,包括区块(数据的基本存储单元)和状态数据库(记录当前状态)。
在经典网络架构中,多个组织通过协议联合构建Fabric网络,如四个组织R1-R4,其中R4仅作为orderer,负责网络管理。每个组织的节点部署特定应用,如R1的节点P1部署S5,处理交易数据。 交易流程涉及认证、背书、共识等步骤,从应用客户端提交交易请求,经过智能合约处理,最终写入orderer节点并传播至整个网络。私有数据集合则保障数据在特定群体内部的raw源码安全。 网络配置包括系统通道和应用通道的定义,通过configtx.yaml文件进行管理和生成。每个节点(orderer或peer)有自己的配置,如core.yaml或orderer.yaml,管理身份和加密服务。(3)fabric2.4.3手动搭建区块链网络
搭建fabric2.4.3区块链网络步骤:
首先,使用Linux-x系统,如Ubuntu,确保fabric版本为2.4.3,CA版本为1.5.3,使用Go1.。
通过克隆fabric-samples代码库并下载二进制文件,查看bin目录下的文件。
下载并修改docker镜像标签,使用docker images查看镜像。
在my-network文件夹中创建crypto-config.yaml文件,复制并保存所需的代码。
使用cryptogen工具生成证书和公钥,创建ccp文件并复制到peer1和peer2文件夹中,修改端口和证书。
创建compose.yml文件,定义网络结构,复制到peer1和peer2并修改相应配置。
创建docker-compose.yml文件启动区块链网络,包含peer、order、cli节点。
创建core.yaml文件用于管理网络配置,保存后启动容器。
使用docker-compose启动区块链网络,确保peer、order、cli节点运行。
创建并加入channel,配置并生成创世区块,sax源码order节点启动。
peer1、peer2加入channel,设置锚节点。
安装链码,配置环境变量,打包并安装链码到peer0.org1和peer0.org2。
组织进行同意操作,确保org1和org2参与。
查询结果,提交链码并调用链码,通过CLI工具查询账本和资产。
资产转让示例:在账本上通过调用asset-transfer (basic)链码改变资产所有者,查询并验证资产所有者变更。
-安装、实例化链码流程&CLI命令详解
前言 在这一周的学习中,我回顾并深化了之前关于Fabric网络的理解。初期的学习过于匆忙,缺乏深入思考。因此,本次重点是通过MSP的基础,回顾并逐步搭建Fabric网络的过程。以下内容分为四个部分:搭建Fabric网络的两种方式、基础知识、CLI命令解析以及总结。旨在提供全面而深入的指导,帮助读者理解Fabric网络的搭建与管理。手动搭建Fabric网络的两种方式
搭建Fabric网络通常有两种方法:基于容器的方式和在服务器上手动部署。基于容器的方式快速方便,适合已有Fabric搭建经验的用户。通过`docker-compose`工具一次性初始化网络。相比之下,手动部署虽然过程繁琐,但有助于理解Fabric的配置管理,特别是namenode源码MSP配置和Peer节点的详细配置。 手动部署包括生成组织结构、身份证书、Ordering服务启动区块、应用通道配置交易、锚节点配置更新等步骤。涉及手动编译生成Peer、Orderer等组件,并确保所有Peer节点配置就绪。环境变量的设置可通过Terminal或配置文件完成。这种方式虽然复杂,但对理解配置管理大有裨益。基础知识
这部分基于之前的实践经验,介绍一些新知识和概念。重点包括锚节点、Channel成员和身份、配置文件中的环境变量、链码生命周期等。锚节点
锚节点是Channel中能与所有对等节点通信的一种节点。每个成员拥有一或多个锚节点,用于快速获取Channel内节点信息。配置与环境变量
Peer和Orderer节点配置涉及环境变量,如CORE_PEER_ID,通过优先级顺序读取配置信息。环境变量配置整理如下,包括Orderer和Peer节点的环境变量及其功能。CLI Command解析
启动网络后,创建Channel和节点加入Channel的操作涉及CLI命令。peer channel命令提供详细的用法和参数查询。重点介绍了peer channel create和peer channel join命令的含义和操作流程。peer channel create
创建Channel命令用于生成Channel创始块,通过Peer向Orderer广播创建请求,最终完成Channel建立。peer channel join
加入Channel命令通过SDK或CLI发起请求,Peer执行智能合约,创建并同步Chain信息,辞海源码与Orderer建立通信通道。总结
通过回顾并实践Fabric网络搭建,本文旨在总结MSP配置、CLI命令使用和网络管理的实践知识。MSP通过环境变量配置,CLI命令背后的故事揭示了Fabric网络构建的细节。了解这些内容对于深入学习和应用Fabric至关重要。9-HyperLedger-Fabric原理-MSP详解(一)-MSP基础
在理解Fabric架构时,MSP(Membership Service Provider)作为权限管理的核心组成部分,扮演着重要角色。本文将深入探讨MSP的基础概念、作用、结构以及实践应用,以帮助读者构建对MSP的全面认知。
一、基本概念
MSP,全称为Membership Service Provider,意为成员关系服务提供者。它主要负责成员身份的管理与验证,构建在Fabric网络中的信任体系。MSP涉及到的几个关键术语包括证书、成员、组织、联盟与MSP。
证书(Certificate)是MSP的基础,采用ECDSA算法生成,遵循X.标准规范,用于证明成员身份。每个实体、组织拥有独立身份证书,方便基于组织实现灵活的权限管理。
成员(Member)是指具有网络唯一根证书的合法独立实体,如Peer节点、应用客户端等。
组织(Organization)代表一组共享信任根证书的成员,实现高信任度的内部交互。组织内成员可为普通成员或管理员,管理员拥有更高权限,用于组织配置管理。
联盟(Consortium)由多个组织构成,为多个组织相互合作的场景提供服务,支持数据安全交互。
MSP(成员关系服务提供者)提供抽象化的成员操作框架,管理证书颁发、校验以及用户认证背后的所有密码学机制与协议。
二、MSP的作用
MSP的核心作用在于管理成员身份、验证签名与授权,实现基于身份证书的权限验证。一个Fabric区块链网络可以由一个或多个MSP控制,提供模块化的成员操作与跨不同成员标准的互操作性。
三、MSP结构
Fabric中的MSP概念代表身份验证实体,用于实现对不同资源(成员、节点、组织等)基于身份证书的权限验证。MSP结构包括但不限于:信任的根证书、中间件证书、组织单元列表、管理员身份证书、证书撤销列表、私钥库与TLS根证书列表等。
四、MSP实践
MSP实现用户管理与权限认证的过程包括证书生成、配置文件设置等步骤。初始化MSP实例需生成用户权限管理与签名认证证书,并在Peer、Orderer、Channel等组件的配置文件中指定相关证书信息。注意,所有渠道成员均参与此过程。
五、总结
本文介绍了MSP的基本概念、作用、结构以及实践应用,旨在帮助读者全面理解MSP在Fabric系统中的角色与功能。MSP作为权限管理的核心,对构建安全、高效的企业级区块链网络至关重要。
手动搭建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配置了路径映射、服务端口等信息。
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后,更新锚节点配置以实现不同组织间的通信。
5. 链码安装与运行
最后,我们安装并运行链码,通过实例化过程将链码部署到Fabric网络中。具体操作包括安装链码、实例化链码以及执行交易。
5.1 安装链码
使用peer chaincode install命令,将链码安装到每个相关Peer节点上。
5.2 实例化链码
实例化过程生成包含链码实例的Docker镜像和容器,并通过与Orderer节点交互实现智能合约的激活。
5.3 执行交易
通过链码的调用执行转账操作,验证链码功能。
5.4 查询交易
在不同节点上查询交易,确保链码功能在全网内传播。
总结
通过以上步骤,我们不仅搭建了Fabric网络环境,还深入理解了链码安装与实例化的过程。理解这些关键步骤对于后续在生产环境中创建更复杂的网络和执行多样化链码提供了基础。在实施过程中遇到的任何问题,均可通过重新配置环境或深入理解Docker概念来解决。掌握Fabric网络的运行原理,对于进一步开发和优化区块链应用至关重要。
超级账本Fabric - 开发模式(dev mode)
在Fabric中,dev mode是一种特别的开发模式,它能极大地简化合约代码的调试过程,让你在code、build、run和debug之间快速切换,显著提升开发效率。
首先,确保你已经安装了必要的开发环境基础组件,包括Fabric samples。为了启用dev mode,你需要使用hyperledger/fabric-samples中的chaincode-docker-devmode模块,通过git克隆该项目来获取资源。
按照官方文档的指导,你将下载并准备相关的docker镜像。在这个过程中,chaincode-docker-devmode的docker-compose-simple.yaml文件尤为重要。它定义了四个容器:orderer、peer、cli和chaincode。特别地,peer节点使用dev模式启动,允许你在~/fabric-samples/chaincode目录下直接编写合约,或者通过修改yaml文件中的volumes配置,将本地工程映射到docker容器中。
peer节点的启动命令中,chaincode服务被设置为一个等待指令的shell脚本,这使得你可以随时手动启动chaincode服务。具体来说,命令为peer node start --peer-chaincodedev=true -o orderer:。
在Termial 2中,你需要构建并启动chaincode,Termial 3则用于使用你新编写的合约。这种dev mode环境的设置,让你无需先发布合约到网络,就能通过sdk直接执行验证,大大节省了开发过程中的时间消耗。
2024-12-02 03:18
2024-12-02 03:13
2024-12-02 02:41
2024-12-02 02:00
2024-12-02 01:57