区块头部
这个部分包含三个字段如下:
1.区块编号:编号从0开始,第0号区块就是创世区块,每增加一个新区块标号+1。
2.当前区块哈希:当前区块中包含所有交易的哈希值。
3.前一个区块头的哈希值。
区块数据
这部分包含了一个有序的交易列表,区块数据是在排序服务创建区块时被写入的(Orderer节点)
区块元数据
这部分包含了区块被写入的时间,还有区块写入者的证书,公钥以及签名。随后,区块的提交者也会为每一笔交易添加一个有效或者无效的标记,但由于这一信息与区块同时产生,所以它不会被包含在哈希中。
交易
交易记录了世界状态发生的更新。让我们来详细了解一下这种把交易包含在区块中的区块数据结构。
1.交易头部:记录了交易里的一些重要的元数据,比如链码的名字以及版本。
2.交易签名:它包含了一个由客户端应用程序创建的加密签名。该字段是用来检查交易细节是否未经篡改,因为交易签名的生成需要用到应用程序的私钥。
3.交易提案:它负责对应用程序供给智能合约的输入参数进行编码,随后该智能合约生成提案账本更新。在智能合约运行时,这个提案提供了一套输入参数,这些参数同当前的世界状态一起决定了新的账本世界状态。
4.交易响应:它是以读写集 (RW-set)的形式记录下世界状态之前和之后的值。交易响应是智能合约的输出,如果交易验证成功,那么该交易会被应用到账本上,从而更新世界状态。
5.交易背书:它指的是一组签名交易响应,这些签名都来自背书策略规定的相关组织,并且这些组织的数量必须满足背书策略的要求。你会注意到,虽然交易中包含了多个背书,但它却只有一个交易响应。这是因为每个背书都对组织特定的交易响应进行了有效编码,那些不完全满足背书的交易响应肯定会遭到拒绝、被视为无效,而且它们也不会更新世界状态,所以没必要放进交易中。在交易中只包含一个交易响应,但是会有多个背书。这是因为每个背书包含了它的组织特定的交易响应,这意味着不需要包含任何没有有效的背书的交易响应,因为它会被作为无效的交易被拒绝,并且不会更新世界状态。
资料源自官方文档:https://hyperledger-fabric.readthedocs.io/zh_CN/release-1.4/who_we_are.html