当前位置: 首页 > 知识库问答 >
问题:

hyperledger结构:无法注册多个用户

王修为
2023-03-14

我正在开发一个基于余额转移示例的hyperledger fabric应用程序,该应用程序目前无法注册用户。我有一些组织,例如银行,案件经理。。。一开始是由于缺乏联系(我添加的一些组织)引发了错误消息,但在我添加了一些行以创建联系后,出现了一些奇怪的消息。。。。我只允许注册一个用户。如果我尝试注册更多,它将显示:

[ERROR] Helper - Failed to get registered user: userABC with error: Error: Enrollment failed with errors [[{"code":0,"message":"2 rows were affected when updating the state of identity userABC"}]]

我已经找了这么久,仍然找不到答案。请帮忙!!!

代码:

var registerUser = async function (params) {
try {
    var userOrg = params.userOrg;
    var org = params.org;
    var username = params.username;

    var client = await getClientForOrg(userOrg, username, true);

    logger.debug('Successfully initialized the credential stores');

    var user = await client.getUserContext(username, true);

    if (user && user.isEnrolled()) {

        logger.info('Successfully loaded member from persistence');

    } else {

        logger.info('User %s was not enrolled, so we will need an admin user object to register', username);

        var admins = hfc.getConfigSetting('admins');
        let adminUserObj = await client.setUserContext({ username: admins[0].username, password: admins[0].secret });

        let caClient = client.getCertificateAuthority();
        let affiliationService = caClient.newAffiliationService();

        console.log("passed 1");

        let registeredAffiliations = await affiliationService.getAll(adminUserObj);

        console.log("passed 2");

        if (!registeredAffiliations.result.affiliations.some(
            x => x.name == org)) {
            let affiliation = org + '.department1';
            await affiliationService.create({
                name: affiliation,
                force: true
            }, adminUserObj);
        }

        console.log("passed 3");

        let secret = await caClient.register({
            enrollmentID: username,
            role: 'user',
            affiliation: org + '.department1'
        }, adminUserObj);

        console.log("passed 4");
        logger.debug('Successfully got the secret for user %s: %s', username, secret);

        user = await client.setUserContext({ username: username, password: secret });
        user.setRoles(['client']);
        user._enrollmentSecret = secret.toString();
        user = await client.setUserContext(user);

        logger.debug('Successfully enrolled username %s and setUserContext on the client object', username);
    }

    if (user && user.isEnrolled) {

        var response = {
            success: true,
            secret: user._enrollmentSecret,
            message: username + ' enrolled Successfully in ' + userOrg,
        };

        console.log(response);

        return response;

    } else {

        throw new Error('User was not enrolled ');

    }
} catch (error) {

    logger.error('Failed to get registered user: %s with error: %s', username, error.toString());
    return 'failed: ' + error.toString();

}

};

我注意到的一件事是,如果注册/注册不成功,调试行“passed 2”和“passed 3”将在控制台中打印两次。因此,在这种情况下,周围的线路将不止运行一次。

共有1个答案

辛健
2023-03-14

我没有阅读/理解所有的代码,但记录另一端发生的事情可能会有所帮助。因此,请查看ca的日志,看看哪里失败了。也可能只是拼写问题。

 类似资料:
  • registration-server.yml为: docker-compose文件为: eureka的两个实例,即server-1和server-2都运行良好。但他们没有互相注册。 有关更多信息,已附上屏幕截图:Server-1 server-2

  • 我在Hyperledger结构节点SDK中遇到问题。 网络详情: 该网络由4个组织组成,每个组织部署在不同的库伯内特斯集群上。 每个组织有2个同行加入了一个渠道,比如myChannel。 每个组织有1个CA运行。 订购服务是Raft. CouchDB用作statedb。 来自CLI的调用也正常工作,数据正在所有8个对等体之间同步。 Hypelredger Explorer已经启动并运行了一个组织的

  • 我有一个由3个orgs和两个频道组成的网络。

  • 我有一个docker容器运行AWS弹性容器服务(Fargate)中的confluentinc/cp模式注册表:5.5.0。只有一个容器正在运行。通过该模式注册表获取当前注册模式的API调用正在工作(例如,

  • 我已经在Ubuntu 16.04机器上安装了合流平台,并初步配置了zookeeper、Kafka和ksql,启动了合流平台。我可以看到下面的消息。 现在一切都启动了,当我检查融合平台的状态时,我观察到Schema注册表,连接 我已经检查了schema注册表的日志,找到了下面的日志。

  • 我试图在多主机环境中使用docker群设置第一个网络示例,首先使用以下配置: 新主机 订货员 Org1-pee0 Org1-peer1 CLI 2号旅社 Org2-pee0 Org2-pee1 我只是换了码头工人。yaml使其与swarm兼容(代码如下)。我无法将Host2/Org2对等点添加到频道。 按顺序执行以下步骤: byfn-m生成 docker stack deploy——编写文件doc