hyperledger-fabric - Hyperledger Fabric - 单组织与多组织以及何时设置多组织环境?
问题描述
我有一个基于 Web 的 HR 员工管理应用程序。此应用程序有许多客户端登录到 Web 应用程序并使用这些功能。
我想将此应用程序集成到区块链中。我希望将一些数据(合规相关、敏感)记录在区块链中。
数据将仅由我的应用程序写入区块链。我的客户只会查看数据。我应该使用什么方法?
a) 具有多个对等点的单个组织(我的应用程序)(每个客户端 1 个对等点)。
b) 多组织:Org1 = 我的应用程序,Org 2 = 客户端 1,Org 3 = 客户端 2 .... n。
如果有其他方法请建议。 注意:个人客户之间不会共享任何数据。
我想使用超级账本结构区块链仅存储信息,因为它是不可变的和防篡改的。
即使我使用多组织方案,我也会在我们管理的服务器上添加两个组织。这会在法律上引起法庭上的信任问题吗?尽管托管区块链的所有服务器都是我的,但我能证明数据没有被篡改吗?
解决方案
根据您的陈述“个人客户之间不会共享任何数据”,我建议基于 HLF 的本机功能的 2 个选项,具体取决于事务中的所有数据是私有的,还是只是数据的子集。
- 不共享数据- 每个对等点一个通道,每个客户端一个对等点/组织或一个具有多个通道的对等点。在多对等点的情况下,交易数据仅存储在作为通道成员的一个对等点上。没有其他对等方接收数据。
- 一些数据是共享的——所有对等点一个通道,每个客户端一个对等点/组织。在这种情况下,可以使用私有数据集合来存储私有数据。交易存储在所有节点的账本上,包含发起节点的所有数据,只有公共数据加上所有其他节点的私有数据的哈希值。
这些选项都没有提供跨节点的数据冗余,但是由于您没有将此作为要求,我假设这不是问题。
由于您声明您将控制所有对等方,因此不变性保证并不重要,因为没有什么可以阻止您随时重写整个区块链。尽管如此,这样的解决方案仍然优于传统数据库,因为它不受单个事务级别的更改的影响。
推荐阅读
- java - 如何在 IntelliJ IDEA 调试器中检查线程是否为守护线程?
- c# - HTML 帮助程序中的第二个 lambda 表达式引发 CS0411
- c++ - 为什么 C++ 允许抛出任何东西?
- docker - 如何在 docker-php api 中的 docker execstart 中进行标准输入
- sql - SQL 错误 42803:我不应该收到此错误,这是怎么回事?
- javascript - 将返回的 Json 响应与发布的响应进行比较
- javascript - 如何确保 scrollTo(0,0) 已将滚动条移至页面顶部?
- javascript - 从使用 SVG.js 创建的 SVG 图像创建画布图像
- jquery - 删除 HTML 标签之间的空格
- blockchain - Blockchain (Hyperledger sawtooth) data management