Fabric 建立第一个网络

进入到first-network目录下

文件目录如下,可以看到所有文件执行权限都是root,所以在执行脚本时需要管理员权限sudo

建立第一个网络1

前提准备:

  • 1、生成组织结构及身份证书
  • 2、创建orderer的初始区块 启动orderer服务
  • 3、生成应用通道配置交易文件 用来生成应用通道,指定通道内的成员及访问策略
  • 4、生成锚节点更新配置文件 用来配置锚节点

1、自动启动

byfn.sh就是我们自动启动需要用到的脚本文件

启动前准备

byfn.sh generate 生成网络环境中的组织结构及相应的身份证书

执行成功:会在first-network新创建一个crypto-config文件夹,channel-artifacts文件件下新生成4个文件,其中genesis.block为创世区块,channel.tx通道配置文件,Org1MSPanchors.txOrg2MSPanchors.tx,锚点配置文件

启动网络

byfn.sh up 启动网络

  • 1、启动docker容器
  • 2、进入容器中
  • 3、创建应用通道

建立第一个网络3

  • 4、将对应的节点加入到应用通道中

建立第一个网络4

  • 5、更新锚节点

建立第一个网络5

$ docker ps 查看指定节点是否启动

关闭网络

byfn.sh down 关闭网络

如果是自动启动,关闭网络后,在启动时新生成的文件会被一起删除

启动链码

1、安装链码 2、实例化链码 3、调用链码 - query - invoke put delete

2、手动启动

1、生成组织结构及身份证书

./bin/cryptogen showtemplate

只能生成两个组织,每个组织内有1个peer节点和1个管理员用户 如果需要按需生成组织结构即证书需要通过配置文件来生成,比如在first-network中的crypto-config.yaml 进入到first-network目录下执行:

sudo ../bin/cryptogen generate –config=./crypto-config.yaml

config = 配置文件路径

2、生成创世区块

需要使用configtx.yaml配置文件生成区块

查看配置文件内容

cat configtx.yaml

文件内容

Profiles:

    TwoOrgsOrdererGenesis://生成orderer初始区块的配置
        Capabilities:
            <<: *ChannelCapabilities
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg //指定orderer的组织名称
            Capabilities:
                <<: *OrdererCapabilities
        Consortiums: //指定联盟
            SampleConsortium:
                Organizations:
                    - *Org1
                    - *Org2
    TwoOrgsChannel:
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
            Capabilities:
                <<: *ApplicationCapabilities

Organizations:
    - &OrdererOrg
        Name: OrdererOrg
        ID: OrdererMSP
        MSPDir: crypto-config/ordererOrganizations/example.com/msp
    - &Org1
        Name: Org1MSP
        ID: Org1MSP
        MSPDir: crypto-config/peerOrganizations/org1.example.com/msp
        AnchorPeers:
            - Host: peer0.org1.example.com
              Port: 7051
    - &Org2
        Name: Org2MSP
        ID: Org2MSP
        MSPDir: crypto-config/peerOrganizations/org2.example.com/msp
        AnchorPeers:
            - Host: peer0.org2.example.com
              Port: 7051


Orderer: &OrdererDefaults
    OrdererType: solo
    Addresses:
        - orderer.example.com:7050
    BatchTimeout: 2s //处理一批消息的超时时间
    BatchSize: //指定区块大小
        MaxMessageCount: 10     //指定最大的处理消息个数
        AbsoluteMaxBytes: 99 MB         //不管在什么情况下,区块的最大的大小
        PreferredMaxBytes: 512 KB   //建议区块大小,在单个消息不超过指定值时的大小,如果单个的消息大小超过指定的值(不能超过指定的最大值),也可以生成区块
    Kafka:
        Brokers:
            - 127.0.0.1:9092

根据配置文件来创建传世区块

sudo ../bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

如果执行成功在channel-artifacts文件夹下会生成genesis.block文件

3、应用通道配置交易信息

sudo ../bin/configtxgen -profile TwoOrgsChannel -channelID $CHANNEL_NAME -outputCreateChannelTx ./channel-artifacts/channel.tx

如果执行成功在channel-artifacts文件夹下会生成channel.tx文件

4、生成锚节点更新配置文件

生成组织1的锚节点

sudo ../bin/configtxgen -profile TwoOrgsChannel -channelID $CHANNEL_NAME -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -asOrg Org1MSP

生成组织2的锚节点

sudo ../bin/configtxgen -profile TwoOrgsChannel -channelID $CHANNEL_NAME -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -asOrg Org2MSP

如果执行成功在channel-artifacts文件夹下会生成Org1MSPanchors.txOrg2MSPanchors.tx文件

5、安装链码

peer chaincode install -p github.com/chaincode/chaincode_example02/go/ -n mycc -v 1.0

参数说明 -n:指定要安装链码的名称 -v:指定要安装链码的版本号 -p:指定要安装链码的链码文件所在的路径(相对路径)

6、实例化链码

peer chaincode instantiate -o orderer.example.com:7050 -C $CHANNEL_NAME -n mycc -v 1.0 -c ‘{“Args”:[“init”,”a”,”100”,”b”,”200”]}’ –tls –cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem -P “OR(‘Org1MSP.peer’,’Org2MSP.peer’)”

-o:指定orderer服务地址 -n:指定链码的名称 -v:指定实例化的链码版本号 -c:指定实例化链码时的初始参数 -C:指定链码所属的通道 -P:指定链码的背书策略 –tls:是否开始tls –cafile:指定orderer的MSP的CA证书路径

7、调用链码

7.1、查询

echo $CHANNEL_NAME 查看环境变量是否存在

peer chaincode query -C $CHANNEL_NAME -n mycc -c ‘{“Args”:[“query”,”a”]}’ 参数说明: -C: 指定所属通道 -n:指定链码名称 -c:调用链码的传递的参数

7.2、修改

peer chaincode invoke -C $CHAN NEL_NAME -n mycc -c ‘{“Args”:[“invoke”,”a”,”b”,”10”]}’ -o orderer.example.com:7050 –tls –cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem

a给b转10token

删除docker内的镜像

docker rmi -f 镜像id

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦