返回
利用 Fabric 获取网络创世区块深入区块链构建
后端
2023-09-13 20:12:35
在本文中,我们将详细探讨如何利用 Fabric 获取网络创世区块,并深入探究 Fabric 的区块链构建。
首先,让我们从获取通道最新配置区块开始。您可以使用以下命令来获取通道的最新配置区块:
peer channel fetch config config_block.pb -o orderer.example.com:7050 -c mychannel
在执行该命令后,您将在当前目录中找到名为 config_block.pb 的文件。该文件包含通道的最新配置区块。接下来,我们需要将 config_block.pb 转换成可读的 json 格式。我们可以使用以下命令来完成此操作:
configtxlator proto_decode --type common.Block config_block.pb config.json
执行此命令后,您将在当前目录中找到名为 config.json 的文件。该文件包含通道最新配置区块的可读 json 格式。
config.json 的结构如下:
{
"BlockData": {
"Data": [],
"PreviousHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
"Envelope": {
"Payload": {
"ChannelHeader": {
"ChannelId": "mychannel",
"Epoch": 0,
"Type": 2,
"Version": 1
},
"SignatureHeader": {
"Creator": {
"Mspid": "Org1MSP",
"IdBytes": "AQECA0xA0FEHpwylFAVv/QFwhGq+3mVGJq2SEzC+Dz54="
},
"Nonce": "F+5CMWDFzZkg9qyxn5A==",
"Signature": "MEUCIQCiUIlW61/C877j5ie6I22ZiE2YAQD35sC9k8AZ1F+2AIgBsXhwUgs1wrX2GgoP5Cq6nxJOpbDf/PnzuPTLWexPA="
},
"ConfigUpdate": {
"ChannelId": "mychannel",
"IsolatedData": [],
"ReadSet": {
"Blocks": [
{
"BlockNum": 0,
"DataHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"ConfigGroups": {}
},
"WriteSet": {
"Blocks": [
{
"BlockNum": 1,
"DataHash": "0x4e6a2184e1f7744347b63e733f017322d3396f3d897524c30143c22f90c82700"
}
],
"ConfigGroups": {
"Application": {
"Groups": {
"Org1MSP": {
"Groups": {},
"Policies": {
"Readers": {
"Type": "Signature",
"Rule": "OR('Org1MSP.member')"
},
"Writers": {
"Type": "Signature",
"Rule": "OR('Org1MSP.member')"
}
},
"Values": {}
}
},
"Policies": {
"Readers": {
"Type": "ImplicitMetaPolicy",
"Rule": "ANY Readers"
},
"Writers": {
"Type": "ImplicitMetaPolicy",
"Rule": "ANY Writers"
}
},
"Values": {}
},
"Consortiums": {
"Groups": {},
"Policies": {},
"Values": {}
},
"Orderer": {
"Groups": {
"OrdererOrg": {
"Groups": {},
"Policies": {
"BlockValidation": {
"Type": "Signature",
"Rule": "OR('OrdererOrg.member')"
},
"Readers": {
"Type": "Signature",
"Rule": "OR('OrdererOrg.member')"
},
"Writers": {
"Type": "Signature",
"Rule": "OR('OrdererOrg.member')"
}
},
"Values": {}
}
},
"Policies": {
"BlockValidation": {
"Type": "ImplicitMetaPolicy",
"Rule": "ANY BlockValidation"
},
"Readers": {
"Type": "ImplicitMetaPolicy",
"Rule": "ANY Readers"
},
"Writers": {
"Type": "ImplicitMetaPolicy",
"Rule": "ANY Writers"
}
},
"Values": {}
}
}
}
}
},
"Signature": "MEUCIQCd1cdX04/Jmp9uCx/yCbtk94AjYSBhnrOnCHlgyuBlAIgHuk4jsW4c/3GiW74u4ZobvCCFfg0byPIdd+bePf5hg="
},
"Header": {
"Number": 1,
"PreviousHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"DataHash": "0x4e6a2184e1f7744347b63e733f017322d3396f3d897524c30143c22f90c82700"
}
}
在 config.json 文件中,您可以找到有关通道的各种信息,例如通道 ID、通道当前的配置、通道中的组织等。
如果您需要了解有关 Fabric 获取网络创世区块的更多信息,可以参阅以下资源:
掌握这些知识,您将能够更深入地了解 Fabric 的区块链构建,并能够开发出更加强大的 Fabric 应用。