如何解决在超级账本结构中将客户注册信息离线存储的最佳方式是什么
我想使用 Hyperledger 结构网络创建一个应用程序,但我不确定处理和存储客户端信息的最佳方式是什么。对我来说,重要的是将个人信息存储在链外,以免减慢网络速度。
目前我想到的流程是这样的:
- 客户在前台填写表单
- 应用程序(后端)生成唯一的 UUID
- (在钱包中注册注册 UUID)不确定这一步
- 调用链码将 UUID 保存在状态数据库中
- UUID 和用户名、电子邮件、密码等个人信息被加密并保存在像 postgreSQL 这样的链下数据库中。
这样 UUID 就可以连接到个人信息,因为 UUID 也是链下存储的,它仍然是完全匿名的。
但是,在访问链码之前,是否需要通过 Node SDK 使用 enroll and register function 注册和登记用户,因为没有注册就没有网络中客户端的身份?
如果来自 fabcar 示例的 function 与来自节点 SDK 的 enroll and register function 相同,我也很困惑?
感谢您的努力并帮助我了解此事。
解决方法
fabcar的enroll
代码就是node-sdk的enroll
。
换句话说,它们相同。
const secret = await ca.register({
affiliation: 'org1.department1',enrollmentID: 'appUser',role: 'client'
},adminUser);
const enrollment = await ca.enroll({
enrollmentID: 'appUser',enrollmentSecret: secret
});
首先来说说fabric的SDK。
一般情况下,要在fabric SDK上查询/调用chaincode,需要获取fabric客户端权限。
假设您将特定用户 UUID 注册为 Fabric 的客户端,并通过该客户端调用链代码。
在这种情况下,您应该执行的顺序如下。
- 将管理员客户端注册到
Fabric-CA
- 通过 admin-client 将 user-client 注册到
Fabric-CA
- 由 admin-client 或 user-client 调用链码到
Fabric-Network(peers,orderers)
第一步,当第一次操作Fabric-CA
时,可以通过指定参数指定管理员ID和密码。根据指定的 ID 和密码,从 Fabric-CA
发出并存储具有管理员权限的客户端密钥/证书。
(Fabric-CA
建议在组织单位中操作,客户端权限取决于组织。)
第 2 步,可以通过管理员客户端密钥/证书注册新用户。可能您会将 UUID register
设为 enrollmentID
。
注册过程完成后,用户-客户端的密钥/证书通过注册到 Fabric-CA 来发布并存储。
第 3 步,通过存储的 admin-client/user-client 密钥/证书查询/调用链码。当然,只有客户端被授权才能执行,这个是在区块链网络中通道的创世块中定义的(即必须在configtxgen
进程中设置)
总的来说,如果你看一下这个场景,你可以看到两个进程是分开的。
- 如果使用单独的身份验证服务器
- 构建一个新数据库(用于链下)。
- 注册成为会员时,用户信息(UUID、密码...)存储在数据库中
- 通过 Fabric 用户-客户端注册过程,密钥和证书存储在文件系统或数据库中。
- 登录时,根据新建立的数据库进行身份验证。
- 当调用 Fabric 网络的链码并根据身份验证程序验证用户的有效性时,它会根据映射的密钥和证书进行操作。
- 将组织用作 Hyperledger Fabric 中的身份验证服务器时
- 用户信息通过 Fabric 提供的
PDC(Private Data Collection)
存储在区块链中。 -
PDC
是一种链下技术,只有预定义的组织才能共享数据。 - 通过此功能,所有参与通道的组织都可以执行数据的有效性,但只有获得许可的组织才能查看/编辑实际敏感信息。
- 最后,流程和程序是一样的,但所有资源都可以在区块链上进行管理。 (与所有技术一样,它们有利有弊,需要权衡利弊。)
[注意]
如果您要查询/调用结构网络的链码,fabric-client
权限是必不可少的。
当然,你可以做一些小技巧。
例如)
- 在服务器上注册 admin-client。
- 之后,它的操作与现有的身份验证服务器/资源服务器相同。
- 如果调用了 Fabric Network 的链码,并且它对现有身份验证服务器有效,则通过预先发布的 admin-client 权限执行链码。
- 这不需要单独的用户-客户端注册/管理程序。
但是,区块链上的权威都依赖于外部认证机构。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。