知识卡片

无效交易不丢弃而是打包留档

专业/工作 · 534.c

内容

背书签名签的是”模拟执行结果读写集”这个承诺,不是最终一定生效的交易——真正是否生效要等Committer事后做MVCC检查。一个容易想错的直觉是:验证不通过的交易应该被剔除、不出现在链上。但Fabric的实际做法是无论交易最终有效与否,都会被打包进区块、写入区块数据文件留档,只是无效交易的写集合不会更新到状态数据库和历史数据库。这保留了完整的审计轨迹——任何人重放账本都能看到”这笔交易确实被提交过,但因为读写冲突被判定无效”,而不是让无效交易凭空消失、留下无法解释的空洞。

参考来源

《Hyperledger Fabric技术内幕:架构设计与实现原理》第4章《Endorser背书节点》