交易相关数据结构
Block
区块,orderer 生成的区块(账本存储的区块结构)
1 | Block |
Envelop
交易信封,交易提案及背书结果,客户端发送给 orderer 出块的数据结构
Envelop
1
2
3
4
5
6
7
8Envelop
|\Payload # []byte -> Payload ↓
| |_Payload # Payload
| |\_Header # *common.Header <= Proposal.Header
| \_Data # []byte -> peer.Transaction ↓
| |_Transaction # peer.Transaction
| \_Actions # []*TransactionAction
\Signature # []byte 对 payloadbytes 的签名TransactionAction
1
2
3
4
5
6
7
8
9
10
11TransactionAction
|\_Header # []byte -> common.SignatureHeader <= Proposal.Header.SignatureHeader
\_Payload # []byte -> peer.ChaincodeActionPayload ↓
|_ChaincodeActionPayload # peer.ChaincodeActionPayload
|\_ChaincodeProposalPayload # []byte -> peer.ChaincodeProposalPayload <= Proposal.Payload
\_Action # *ChaincodeEndorsedAction
|\_ProposalResponsePayload # []byte -> ProposalResponse.Payload
\_Endorsements # []*Endorsement
|_Endorsement # peer.Endorsement <= ProposalResponse.Endorsement
|\_Endorser # []byte
\_Signature # []byte
Proposal
交易提案,客户端发送给 peer 进行背书的数据结构
1 | Proposal |
配置存储相关结构
存储在配置块中的配置数据结构 (层次关系: Block –> Envelop –> ConfigEnvelop)
Block
1 | Block |
Envelop
Envelop
1
2
3
4
5
6
7Envelop
|\Payload # []byte -> Payload ↓
| |_Payload # Payload
| |\_Header # *common.Header <= Proposal.Header
| \_Data # []byte -> common.ConfigEnvelope ↓
| |_ConfigEnvelope # common.ConfigEnvelope
\Signature # []byte 对 payloadbytes 的签名ConfigEnvelope
1
2
3
4
5
6
7
8
9
10
11ConfigEnvelope
|\_Config # *Config
| |\_Sequence # uint64
| \_ChannelGroup # *ConfigGroup
| |\_Version # uint64
| |\_Groups # map[string]*ConfigGroup
| |\_Values # map[string]*ConfigValue
| |\_Policies # map[string]*ConfigPolicy
| \_ModPolicy
\_LastUpdate # *Envelope
配置更新相关结构
用于提交配置更新交易的数据结构(客户端提交给 orderer 进行通道配置更新,比如创建channel,更新channel等)
Envelop
- Envelop
1
2
3
4
5
6
7Envelop
|\Payload # []byte -> Payload ↓
| |_Payload # Payload
| |\_Header # *common.Header <= Proposal.Header
| \_Data # []byte -> common.ConfigUpdateEnvelope ↓
| |_ConfigUpdateEnvelope # common.ConfigUpdateEnvelope
\Signature # []byte 对 payloadbytes 的签名 - ConfigUpdateEnvelope
1
2
3
4ConfigUpdateEnvelope
|\_ConfigUpdate # []byte -> common.ConfigUpdate ↓
| |_ConfigUpdate # common.ConfigUpdate
\_Signatures # []*ConfigSignature - ConfigUpdate
1
2
3
4
5ConfigUpdate # 通过对新旧 Config 计算差异得到
|\_ChannelId # string
|\_ReadSet # *ConfigGroup
|\_WriteSet # *ConfigGroup
\_IsolatedData # map[string][]byte
部分通用配置结构
Config
1
2
3Config
|\_Sequence # uint64
|\_ChannelGroup # *ConfigGroupConfigGroup
1
2
3
4
5
6ConfigGroup
|\_Version # uint64
|\_Groups # map[string]*ConfigGroup
|\_Values # map[string]*ConfigValue
|\_Policies # map[string]*ConfigPolicy
\_ModPolicy
附录
符号说明
\_
: 表示子属性->
: 表示[]byte
序列化之前的结构<=
: 表示数据内容填充来源↓
: 表示其具体结构在下一级展开描述|_
: 表示此项是上一级的原数据结构