如果我们手动编辑单组织单对等 Hyperledger Fabric 网络的分类帐会发生什么

What happens if we manually edit ledger of a single-org-single-peer Hyperledger Fabric network

我已经搭建了FabCar教程网。如果我手动编辑分类帐并再次启动 Fabric,我会得到某种错误吗?另外,我找不到物理存储分类帐的文件夹 /var/hyperledger。有人可以帮忙吗?

所有分类帐、区块等都存储在对等容器中的特定位置下方

/var/hyperledger/production

所有分类帐、区块等都存储在排序容器中特定位置的下方

/var/hyperledger/production/orderer

回答你的问题

Will I get some sort of error if I manually edit the ledger and start the Fabric again?

我假设您正在使用 couchdb,您登录到 DB 并且您 编辑了分类帐,这意味着您更改了世界状态而不是实际链

当您查询时,它将显示更新的数据,不会给出任何错误(*适用条款)我们不应该这样做

请永远不要改变 |篡改数据

FabCar 示例使用 docker-compose 执行,这意味着您的对等方在 docker 容器中 运行,因此要访问 /var/hyperledger,您需要登录到您的容器。

现在回答你的问题:

Will I get some sort of error if I manually edit the ledger and start the Fabric again?

这里有两个部分,一个是维护和保持链式块持久化的分类账,另一个是状态数据库。

现在,状态数据库基本上代表了你声明的直到最后提交到账本的块的最新快照。你需要它的原因之一是避免一直在分类帐中寻找最近的更新,而是直接访问它。

万一你或其他人破坏了你的同行并更改了分类帐,w/o 接触状态,它不会真正影响一致性,尽管你在检查(审计)时失去了依赖分类帐的能力关于世界状态。如果您将删除分类帐数据并使对等点与排序服务或其他对等点同步,这可能会得到解决。

接下来,如果有人伪造了你的节点的世界状态,你将能够在背书时检测到,这意味着有足够强大的背书策略,你需要与多个节点确认执行结果,最终你会检测到该状态有发散并回复您的分类帐以重新创建一个正确的分类帐。

还有一个工具可以帮助您检测分类帐文件是否损坏,请参阅 here