Fabric搭建

Fabric

msp 和 ca

msp:Membership Service Provider(管理 role 和 Acess Restriction)

Fabric中的节点

  • peer: 用来存储和同步 ledger的数据,是 ledger 存储的位置,peer决定是否 update 账本,一个 peer 会属于不同的 channel。每个channel 都在 peer 里面,但是是完全隔离的,一个 peer 可以控制多个 channel peer 背书账本的更新。
  • client: 实例化 transaction 的(cli,node sdk,java sdk)
  • order: 用来排序分发 transaction 的,提供排序服务,order 服务创造 block 区块,这些区块被签名和认证,所有的 transaction 都在 block 里面,order 做好了 block 之后,把数据发给 peer,由 peer 来同步。

channel

每个 channel 可以理解为独立的 fabric 的实例,可以用微信群来理解,channel 是完全独立的,一个 channel 不会依赖于别的 channel ,不同的 channel 之间不会交换数据。依靠 channel 来保护交易用户的隐私。

chaincode

就是智能合约,作用是用来更新账本数据,sdk 发起一个 transaction,peer执行这个 chaincode,chaincode 可以用 java nodejs 和 go 来编写,在 hyperledger 里面,只要想读取和更新数据就必须通过 chaincode 来完成,chaincode 必须属于某个 channel,因为 ledger 是属于某个 channel 的,chaincode 操作的是 ledger, 当你执行某个操作的时候,你需要出示你的权限 ca,明确在哪个 channel,执行哪个 chaincode,执行 chaincode 的什么函数,函数的参数是什么。在一个 channel 里面可以定义一个 chaincode,也可以定义多个 chaincode,看公司的业务逻辑。 chaincode 需要在某个 channel 的每个 peer 上安装,如果某个 channel 里面有3个 peer,只在两个 peer 上安装 chaincode,最后会导致第三个 peer 的数据和其他两个不一致,那第三个 peer 就会变成一个无效节点,无法达成共识,无法获取数据

chaincode 生命周期

chaincode 需要先安装,然后必须实例化,实例化 chaincode 会启动 docker 容器。在这个容器里面运行 chaincode。

  • 安装 install
  • 实例化 init
  • 调用 invoke

chaincode 背书策略

背书策略决定了,是需要所有的节点都验证,还是大多数同意即可,听过 and 或者 or 这样的关键字定义背书策略。假设业务有10个不同的 chaincode,就可以有10个不同的背书策略。有的代码要所有的节点同意才可以执行,有的逻辑需要至少有一个节点同意就可以执行,这样就非常灵活。

chaincode总结

  • 每个 peer 可以属于多个 channel
  • 每个 channel 有独立的 ledger
  • 每个 channel 可以有一个或者多个的 chaincode
  • 每个 chaincode 可以有不同的背书策略

执行流程

在这里插入图片描述

手动 end-to-end 测试

  1. 在 fabric-samples 里面新建一个文件夹:mkdir my-network
  2. 进入 my-network,touch crypto-config.yaml (配置证书)
OrdererOrgs:
- Name: Orderer
  Domain: example.com
  Specs:
       - Hostname: orderer
PeerOrgs:
- Name: Org1
  Domain: org1.example.com
  Template:
       Count: 2
  User:
       Count: 1
- Name: Org2
  Domain: org2.example.com
  Template:
       Count: 2
  User:
       Count: 1

  1. 创世区块的配置

安装 tree:
apt-get install tree

配置证书:
首先配置环境变量:export PATH= P W D / . . / b i n : {PWD}/../bin: PWD/../bin:{PWD}:$PATH
cryptogen generate --config=./crypto-config.yaml
该操作就是需要 通过 crypto-config.yaml来生成排序及验收或同步节点证书及文件等内容,最终会生成在当前 目录下的 crypto-config 目录中,

cp configtx.yaml …/my-network (配置创世区块,组织和order节点间的关系)
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
记得创建 channel-artifacts目录
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel

  1. 更新通讯的锚节点

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP

  1. 拷贝 docker-compose文件

cp docker-compose-cli.yaml …/my-network/
cp -r base …/my-network

  1. 启动 docker

首先配置镜像版本号
export IMAGE_TAG=latest
指定项目名字
export COMPOSE_PROJECT_NAME=net
启动
docker-compose -f docker-compose-cli.yaml up -d

  1. 创建通道

docker exec -it cli bash,进入cli 的终端
CORE_PEER_LOCALMSPID=“Org1MSP”(由谁创建的通道)
CORE_PEER_MSPCONFIGPATH&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值