Hyperledger fabric 在hyperledger结构中,将客户注册信息链外存储的最佳方式是什么

Hyperledger fabric 在hyperledger结构中,将客户注册信息链外存储的最佳方式是什么,hyperledger-fabric,hyperledger-fabric-sdk-js,Hyperledger Fabric,Hyperledger Fabric Sdk Js,我想用Hyperledger fabric网络创建一个应用程序,但我不确定处理和存储客户信息的最佳方式是什么。对我来说,重要的是,个人信息要在链外存储,以避免网络速度减慢。 现在我想到的就是这个过程: 客户在前端填写表格 应用程序(后端)生成唯一的UUID (在钱包中注册UUID)不确定此步骤 调用Chaincode,将UUID保存在状态数据库中 UUID和用户名、电子邮件、密码等个人信息将被加密并保存在postgreSQL之类的链外数据库中 通过这种方式,UUID可以连接到个人信息,因为UUI

我想用Hyperledger fabric网络创建一个应用程序,但我不确定处理和存储客户信息的最佳方式是什么。对我来说,重要的是,个人信息要在链外存储,以避免网络速度减慢。
现在我想到的就是这个过程:

  • 客户在前端填写表格
  • 应用程序(后端)生成唯一的UUID
  • (在钱包中注册UUID)不确定此步骤
  • 调用Chaincode,将UUID保存在状态数据库中
  • UUID和用户名、电子邮件、密码等个人信息将被加密并保存在postgreSQL之类的链外数据库中
  • 通过这种方式,UUID可以连接到个人信息,因为UUID也存储在链外,并且仍然是完全匿名的。
    但是,在能够访问链码之前,是否有必要通过Node SDK向注册用户,因为如果没有注册,网络中的客户端将没有身份?
    我还想知道fabcar样本中的数据是否与NodeSDK中的数据相同


    感谢您的努力并帮助我了解这件事。

    fabcar的
    enroll
    代码是node sdk的
    enroll

    换句话说,它们是相同的

    const secret=wait ca.register({
    隶属关系:'org1.department1',
    enrollmentID:'appUser',
    角色:“客户”
    },adminUser);
    常量注册=等待ca注册({
    enrollmentID:'appUser',
    注册秘密:秘密
    });
    

    首先,让我们谈谈fabric的SDK。
    通常,为了在fabric SDK上查询/调用链码,您需要获得fabric客户端权限。
    假设您将特定用户UUID注册为Fabric的客户端,并通过该客户端调用链码。
    在这种情况下,您应该执行的顺序如下

  • 将管理客户端注册到结构CA
  • 按管理员客户端将用户客户端注册到结构CA
  • 管理客户端或用户客户端调用链码到结构网络(对等方、订购方)
  • 步骤1,当首次操作
    结构CA
    时,可以通过指定参数指定管理员ID和密码。根据指定的ID和密码,从
    Fabric CA
    颁发并存储具有管理权限的客户端密钥/证书。 (
    Fabric CA
    建议在组织单位中运行,客户权限取决于组织。)

    步骤2,可以通过管理员客户端密钥/证书注册新用户。您可能会
    将UUID注册为
    注册ID
    。 注册过程完成后,通过在Fabric CA中注册来颁发用户客户端的密钥/证书,并将其存储

    步骤3,链码通过存储的管理客户端/用户客户端密钥/证书进行查询/调用。当然,只有在客户获得授权的情况下才能执行,这在区块链网络中通道的genesis块中定义(即,必须在
    configtxgen
    过程中设置)

    总的来说,如果您查看场景,您可以看到这两个过程被划分

  • 如果是单独的身份验证服务器
    • 建立一个新的数据库(用于链外)
    • 注册为成员时,用户信息(UUID、密码…)存储在数据库中
    • 在fabric用户客户端注册过程中,密钥和证书存储在文件系统或数据库中
    • 登录时,根据新建立的数据库执行身份验证
    • 当在根据身份验证过程验证用户有效性的同时调用结构网络的链码时,它将基于映射的密钥和证书进行操作
  • 在Hyperledger结构中将组织用作身份验证服务器时
    • 用户信息通过Fabric提供的数据存储在区块链中
    • PDC
      是一种链外技术,只有预定义的组织才能共享数据
    • 通过此功能,参与渠道的所有组织都可以执行数据的有效性,但只有具有权限的组织才能查看/编辑实际的敏感信息
    • 最终,流程和过程是相同的,但所有资源都可以在区块链上进行管理。 (与所有技术一样,它们也有利弊,需要权衡取舍。)

    [注]
    如果要查询/调用结构网络的链码,
    fabric client
    权限是必不可少的。 当然,你可以做一些技巧。 (例如)

    • 在服务器上注册管理客户端
    • 之后,它的操作与现有的身份验证服务器/资源服务器相同
    • 如果调用Fabric Network的链码,并且该链码由现有的身份验证服务器有效,则链码将通过预先颁发的管理客户端权限执行
    • 这不需要单独的用户客户端注册/管理程序

    但是,区块链上的权限完全依赖于外部认证机构。

    通过Privat数据收集进行存储会降低区块链的速度,还是会像只有授权对等方可以访问的外部数据库一样?PDC也是一项交易,这当然会影响TPS。但是,如果用于身份验证的通道和链码单独操作,则对现有的通道和链码几乎没有影响。我还有一个关于注册的问题