Linux环境下Hyperledger Fabric新区块创建方法及通道疑问
嘿,我来帮你搞定这个Hyperledger Fabric的区块创建问题!
关于通道的疑问:现有通道完全可行,无需新建
首先明确说:不需要新建通道,你现有的通道就是基于创世区块搭建的,后续所有新区块都是在这个通道内通过交易生成的——创世块是通道的"根",记录了通道的初始配置和状态,之后每一笔被确认的交易都会被排序节点打包成新的区块,追加到这条链上。
Linux环境下基于创世块创建2个新区块的步骤
假设你已经有一个运行中的Fabric网络(节点、排序服务都已启动),且已经成功创建了通道(基于你的创世块)。下面是具体操作步骤:
1. 配置Peer节点环境变量
先切换到你的Fabric工作目录,设置当前操作的Peer节点身份信息(以Org1的peer0为例):
export CORE_PEER_LOCALMSPID="Org1MSP" export CORE_PEER_MSPCONFIGPATH=/your/path/to/org1/msp # 替换成你实际的MSP路径 export CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # 替换成你的Peer节点地址
2. (可选)如果还没部署链码,先完成安装和实例化
区块是基于交易生成的,而交易需要通过链码触发。如果还没部署链码,先执行以下步骤:
- 安装链码(以Fabcar示例链码为例,也可以用你自己的链码):
peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/fabcar/go/
- 实例化链码(初始化状态,比如给a、b账户赋值):
peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /your/path/to/orderer/tls/ca.crt -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"
注意:替换命令中的路径、通道名、排序节点地址为你实际的配置。
3. 提交第一笔交易,生成第一个新区块
调用链码发起交易,比如把a的10个单位转到b:
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /your/path/to/orderer/tls/ca.crt -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'
执行成功后,排序节点会将这笔交易打包成区块1(创世块是区块0),同步到通道内的所有Peer节点。
4. 提交第二笔交易,生成第二个新区块
再发起一笔交易,比如把b的5个单位转到c:
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /your/path/to/orderer/tls/ca.crt -C mychannel -n mycc -c '{"Args":["invoke","b","c","5"]}'
这笔交易完成后,会生成区块2。
5. 验证新区块是否生成
你可以通过以下命令获取并查看区块:
- 获取区块2:
peer channel fetch 2 block2.pb -o orderer.example.com:7050 --tls true --cafile /your/path/to/orderer/tls/ca.crt -C mychannel
- 查看区块内容:
peer channel inspect block2.pb
输出内容里会包含区块号、交易信息、哈希值等,确认是你刚生成的区块即可。
内容的提问来源于stack exchange,提问作者S.M
相关产品推荐
相关产品推荐

