data-structures - “(Hyperledger Sawtooth)交易如何同时存在于多个区块中”?
问题描述
以下声明来自此文档。
交易收据将仅存储在该链下商店中,不会包含在区块中。请注意,由于一次交易可能同时存在于多个区块中,因此交易收据由交易 id 和区块状态根哈希存储。
问题:
一笔交易是唯一的(在一个批次中),并且在达成共识后应该只包含在一个区块中。这个过程可以发生,每笔交易只能发生一次。如果是这种情况,交易怎么可能“一次存在多个区块”?
解决方案
一笔交易通常只在一个区块中,在所有 Sawtooth 验证器节点上都有相同区块的副本。
但是,如果区块链“分叉”,则存在两个可能相互冲突的区块链状态版本,并且交易可能仅出现在一个或另一个区块链中,或者以不同的顺序和不同的块同时出现。
分叉可能有多种原因。一个常见的原因是由于节点长时间失去通信,因此网络变得分区,因此节点变得分区。当通信恢复时,区块链自行解决,其中一个区块链被选为“正确的”区块链,所有节点同步到“正确的”(或选择的)区块链。
推荐阅读
- laravel - 尝试编辑数据并在选择选项中显示时尝试获取非对象的属性“级别”
- python - 如何将 AzureML 笔记本文件夹中的文件夹下载到本地或 Blob 存储?
- flutter - 谷歌驱动器作为颤振应用程序的数据库(存储所有用户的文档)
- sql - PostgreSQL - 如何查找两个日期之间的差异大于 1 天/月的记录?
- php - 在也使用 php(php 日历)的 html 代码中,href 链接指向哪里?
- latex - 乳胶中破折号和不等式之间的空间
- asp.net - 创建允许两种 Web 应用程序访问方式的登录检查
- python - Python中列表反转的奇怪表现
- html - 如何在父级的 100% 高度填充图像并保存比例(宽度:图像高度)?
- mysql - 每个增量的运行总计