block chain

关于环境变数
在core.yaml,configtx.yaml,orderer.yaml中定义了很多环境变数,如果用docker run -it 这种
方式启动容器的时候,会-e这样设置很多变量,这样会覆盖默认的环境变数。
---------------------------------------------------------------------------------------------
关于ORG_TOKEN的有效期
在config.json的jwt_expiretime中有设定
--------------------------------------------------------------------------------------
blockNumber是从0开始算的
blockchain的长度是从1开始算的
nvoke chaincode执行一回,blockNumber就会+1

--------------------------------------------------------------------------------------

##想改变组织结构的时候,修改configtx.yaml和crypto-config.yaml

##想修改peer数量的时候,修改crypto-config.yaml的各组的Count
PeerOrgs:
 - Name: Org1
   Domain: org1.example.com
   Template:
     Count: 2
 - Name: Org2
   Domain: org2.example.com
   Template:
     Count: 2

##configtx.yaml里面,可以配置order service时用的是kafka还是solo
##crypto-config.yaml里面定义peer的组织
##./generateArtifacts.sh执行前清理一下垃圾
  rm -rf channel-artifacts/*.block channel-artifacts/*.tx crypto-config

--------------------------------------------------------------------------------------

修改order名称

##修改orderer名字牵涉的文件
1,configtx.yaml
Orderer-Addresses的下面修改orderer1.example.com:7050
2,crypto-config.yaml
OrdererOrgs-Name-Specs-Hostname:orderer1
##上面两个配置文件修改后运行
rm -f channel-artifacts/*tx channel-artifacts/*block
sudo rm -rf crypto-config/*
./generateArtifacts.sh
##各种脚本内部引用修正
orderer.example.com -> orderer1.example.com
##配置个别order的时候,对宿主机的接口不要冲突。
--------------------------------------------------------------------------------------

##kafka排序方面参照下面
https://wiki.hyperledger.org/groups/twgc/fabric-doc/arch-deep-dive_zh.md?s[]=orderer&s[]=service
##AnchorPeer⇒同一个组织内部数据同步用
##installChaincode 要所有peer都运行,instantiateChaincode 只有一个peer就可以
##ordering service 不读取交易细节,只是从网络中接收所有通道发送过来的交易,然后进行排序,创建每个通道的交易区块,把交易块返还给通道
##任何对ordering系统channel有读权限的成员都可以查看所有channel创建,因此channel的访问应受限制
##orderer通过识别带有consortiums组定义的channel来标识系统channel
##OrgsChannel中定义的Organizations,要在SampleConsortium的Organizations里面有定义
##在创建初始块的时候, orderer和channel是没有关系的。其实channel是对所有orderer开放的。
只不过在很多操作如invoke,createChannel的时候,要指定 orderer和channel才把他们两个牵涉到一起。

---------------------------------------------------------------------------------

##generateArtifacts.sh的说明
generateCerts⇒根据crypto-config.yaml生成ordererOrganizations和peerOrganizations
/crypto目录包含管理员证书,CA证书,每个角色的私钥和用于签名的证书
replacePrivateKey⇒把执行前的compose文件里的关键字[PRIVATE_KEY]替换成上面刚刚生成的peerOrganizations里面的密钥
generateChannelArtifacts⇒orderer的初始块,channel初始块和anchor peer(每个org一个)的初始块
查看初始block内容时,用-inspectBlock 生成json文件
查看初始channel.tx时,用-inspectChannelCreateTx 生成json文件
这里有说明https://wiki.hyperledger.org/groups/twgc/fabric-doc/configtxgen_zh.md

cryptogen tool:https://github.com/hyperledger/fabric/blob/v1.0.0/common/tools/cryptogen/main.go
order block是一个ordering service的创世区块,channel transaction文件在Channel创建的时侯广播给order

---------------------------------------------------------------------------------

###关于configtx.yaml        
  这个文件内容有3部分。    
  1.Profiles:显式声明所有配置,通常都是从下面3的默认配置中继承    
  2.Organizations:定义MSP信息,被Profiles引用    
  3.默认部分:这部分包含Order和Application的默认配置    

BatchTimeout(生成block的间隔)
BatchSize.MaxMessageCount(1个block里面最多transtion数)
BatchSize.PreferredMaxBytes(1个block的最大size)
      
###定义新channel        
  1,configtx.yaml:  Channel01和Channel02的Org0X要在SampleConsortium中包含。参照下面    
      
  Profiles:    
      TwoOrgsOrdererGenesis:    
          Orderer:    
              <<: *OrdererDefaults    
              Organizations:    
                  - *OrdererOrg    
          Consortiums:    
              SampleConsortium:    
                  Organizations:    
                      - *Org01    
                      - *Org02    
                          
      Channel01:    
          Consortium: SampleConsortium    
          Application:    
              <<: *ApplicationDefaults    
              Organizations:    
                  - *Org01    
                      
      Channel02:    
          Consortium: SampleConsortium    
          Application:    
              <<: *ApplicationDefaults    
              Organizations:    
                  - *Org02    
      
  2,generateArtifacts.sh中生成channel.tx的位置,根据上面配置,修改成两条,生成2个tx文件。    
  3, 在e2e_cli/scripts/script.sh中,把channel.tx的地方替换成新生成的tx

---------------------------------------------------------------------------------

调用example05的时候,要注意一下几点

1,必须是下面这样的结构
・channel01(peer0,peer1)
・channel02(peer1,peer2)
2,channel01和channel02的OrgMSP要相同(或者有交集?没验证过)
3,两边的invoke和query都在peer1上去做。
4,先跑example02,在跑example05
5,example05关键的cli命令

instantiateChaincode:
peer chaincode instantiate -o orderer.example.com:7050 -C MyOrg2Channel -n mycc05 -v 1.0 -c '{"Args":["init","sum05","1"]}'
chaincodeQuery:
peer chaincode query -C MyOrg2Channel -n mycc05 -c '{"Args":["query","mycc02","sum05","MyOrg1Channel"]}'
chaincodeInvoke:
peer chaincode invoke -o orderer.example.com:7050 -C MyOrg2Channel -n mycc05 -c '{"Args":["invoke","mycc02","sum05","MyOrg1Channel"]}'

---------------------------------------------------------------------------------

swarm 做好以后,在mannger节点用下面语句创建network,只有当子节点的容器启动的时候,才能看到这个xxx网络

docker network create --attachable --driver overlay network-name-xxxx

----------------------------------------------------------------------------------

所有的orderer 有所有channel的消息。

genesis.block是系统channel的gensis,用来启动orderer的,不会更新。然后每个org的channel都有自己genesis,在创建channel时生成,

用cli创建的话会去fetch回来,用于peer join

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值