Hyperledger Fabric2.x基本概念之(一)交易和区块链
2022/2/13 20:17:12
本文主要是介绍Hyperledger Fabric2.x基本概念之(一)交易和区块链,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
▲ 点击101链视界,关注不走丢
大家好,我是阿创,这是我的第30篇原创文章。
我比较爱看书,2021年全年我的阅读量大概是20+本书,涵盖法律、哲学、技术、人文。
但是阅读量一上来反而会觉得,单纯的阅读其实是在逃避,所以我决定还是将自己的阅读和思考梳理出来,写一点对大家有帮助的文字。
最近一直在思考自己的核心竞争力在哪里,我发现还是要聚焦到技术领域,经过一段时间的摸索,决定近期聚焦Fabric的源码,写一个系列文章。
虽然网上有很多解读Fabric源码的博客,但我希望写点不一样的。曾经听过张宇老师的课,他在课上介绍了华罗庚先生曾经说过的一句话:“数无形时少直觉,形少数时难入微。”
我对这句话十分认同,因此也想斗胆用图表配上文字来表达自己的思考,希望对你,对我都有帮助。
本系列文章将以Hyperledger Fabric2.x系列为基础进行分析。
Fabric源码解读的第一篇文章,题为:《Hyperledger Fabric2.x的一些基本概念之(一)》,主要介绍交易、区块两个概念。
1、交易(Transaction)
交易(Transaction,或称为事务)是Fabric的核心概念,通常是指通过调用链码(智能合约)改变账本状态数据的一次操作。
对账本状态的变更是用交易结果读写集来描述的,将交易集合经过Orderer节点排序后按规则打包到区块中。
(1)普通交易消息封装了变更账本状态的执行交易结果,需要经过排序后打包成区块。
(2)配置交易消息则用于创建新的应用通道或更新通道配置,通常在排序后单独打包成区块,同时将最新配置区块号更新到最新的区块元数据中以便于索引查找。
2、区块(Block)
区块(Block)是指一段时间内发生的交易集合,经排序后按规则打包后并添加签名、哈希值、时间戳与其他元数据所构成的数据结构。
区块链就是以区块为基础按照时间顺序连接构成的链状数据结构。
Fabric中的区块结构(Block类型)包括区块头Header、交易数据集合Data以及区块元数据Metadata三个部分。
(1)区块头Header封装了区块号、前一个区块的哈希值、当前区块的哈希值
(2)交易数据集合Data封装了打包的交易集合
(3)区块元数据Metadata封装了如下4个元数据索引项:
- BlockMetadataIndex_SIGNATURES:区块签名;
- BlockMetadataIndex_LAST_CONFIG:最新配置区块的区块号;
- BlockMetadataIndex_TRANSACTIONS_FILTER:最新交易过滤器,封装了交易数据集合Data中所有交易对应的交易验证码,标识其交易的有效性。
- BlockMetadataIndex_ORDERER:Orderer配置信息,如Kafka共识组件的初始化参数。
实际上,真实的区块数据结构远比上图复杂,本文权当抛砖引玉,为后文的深入介绍打下基础。
这里放出Fabric区块数据结构的代码:github.com/hyperledger/fabric-protos-go/common/common.pb.go
// This is finalized block structure to be shared among the orderer and peer // Note that the BlockHeader chains to the previous BlockHeader, and the BlockData hash is embedded // in the BlockHeader. This makes it natural and obvious that the Data is included in the hash, but // the Metadata is not. type Block struct { Header *BlockHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` Data *BlockData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` Metadata *BlockMetadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
期待后面我们一起对fabric区块数据结构做深入剖析,像剥洋葱一样,循序渐进,由浅入深。
如果你觉得写得不错
麻烦给个赞~
关注我,带你了解区块链行业
推荐阅读:
1、一个好用的多方隐私求交算法库MultipartyPSI-Pro
2、区块链产业发展五大趋势:数据安全、科技监管、自主可控、双碳战略、数字经济
3、揭秘北京冬奥会开幕式“数字雪花”背后的区块链技术
4、Web3对于我们普通人意味着什么?
5、最近火爆的数字藏品究竟是什么?
6、《区块链是构建产业互联网的可信基础设施》
7、《隐私计算布局思考》
8、读书 |《数据资产论》:数据如何资产化?
9、区块链产业发展五大趋势:数据安全、科技监管、自主可控、双碳战略、数字经济
提前看到未来的人,
和花一辈子都看不清的人,
注定是截然不同的命运。
点击下方卡片关注101链视界,
和1000+读者一起
洞察技术本质
▲ 点击上方卡片关注101链视界,洞察技术本质
技术交流 | 行业研报 | 前沿洞察 | 转载开白 | 加入社群
请在公众号后台回复 合作
欢迎把文章分享到朋友圈
这篇关于Hyperledger Fabric2.x基本概念之(一)交易和区块链的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23新能源车企如何通过CRM工具优化客户关系管理,增强客户忠诚度与品牌影响力
- 2024-12-23原创tauri2.1+vite6.0+rust+arco客户端os平台系统|tauri2+rust桌面os管理
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程