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

将新对等点加入通道时出现管理标识错误

单于俊智
2023-03-14

我也用cryptogen工具为新的2个同行制作了加密材料。

但问题是,当我在peer0.org1.example.com容器中执行“peer channel join-b myblock.block”以便将这些新的对等点连接到通道时,会显示以下错误消息:

此错误消息

我受这个问题的困扰已经很长时间了。我真的很绝望。

如果你能告诉我怎么做我会很感激的。期待你的回应。谢谢你。

共有1个答案

云季萌
2023-03-14

此问题是由于您正在使用的凭据的访问级别造成的。您需要是管理员才能将对等体添加到通道中,因此您可以访问系统链码CSCC。

另一个可能的问题是,在网络配置(通常是configtx.yaml文件)中,有一些策略会重新限制您将对等节点连接到通道的访问,如果您愿意,我可以查看一下您的configtx文件,看看是否可以提供帮助。

由于您使用的是Fabcar示例,并且它是用节点SDK调用的,因此也可以使用SDK添加对等体。

在Fabcar的renderladmin.js第72行中,可以看到这一行:

console.log('Assigned the admin user to the fabric client ::' + admin_user.toString());

从这里开始,在第71行开始的“then”里面。您必须以管理员身份注册该方法

fabric_client.setAdminSigningIdentity(pk, cert, MSPID);

pk参数是管理私钥,cert是他的证书,MSPID是您在configtx.yaml文件中为他的组织指定的。

let fs = require('fs');

let cert = fs.readFileSync(path.join(__dirname, 'PATH_TO_CERT/CERT_NAME.pem'))
let pk = fs.readFileSync(path.join(__dirname, 'PATH_TO_PK','PK_NAME'))
/fabric-samples/basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/admincerts
/fabric-samples/basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore
peer=fabric_client.newPeer(grpc://localhost:7051);

不要忘记使用grpc协议,如果启用了tls,则必须使用grpc协议。

现在使用通道id作为参数创建通道的通道实例

let channel_i=fabric_client.newChannel('mychannel')

然后创建对channel genesis(config)块的请求:

let orderer = fabric_client.newOrderer(ORDERER_URL);//the urlalso with grpc protocol
let tx_id=fabric.client.newTransactionID(true); //true means it's an administrative request
let g_request={
    txId: tx_id,
    orderer : orderer
}
channel_i.getGenesisBlock(g_request).then((block) =>{

    tx_id = fabric.client.newTransactionID(true);
    let j_request = {
          targets : peer,
          block : block,
          txId : tx_id,
     };

    // send genesis block to the peer
        return channel_i.joinChannel(j_request, 10000).then((results) =>{
            if(results[0].response.status == 200) {
                // join successful
                console.log("Join successful!!!");
            } else {
                // not good
                console.log("Error:: "+ results);
                throw  results;
            }
        })
 类似资料:
  • 问题内容: 在我的django应用程序中,我有一些对象导致django admin中的相应URL为非ascii。(例如:) 我可以毫无问题地编辑对象,但是在保存时出现以下错误: 奇怪的是,该对象已正确保存到数据库中。 有人知道Django管理员如何管理unicode吗?任何有助于解决此问题的信息,指针或想法将不胜感激。 提前致谢 更新:这是模型的代码 更新:很明显,URL中不建议使用非ASCII字

  • 构建了一个网络,将订购者添加到频道中,此处引用为:channelname。容器上安装了以下文件夹 null null 用于此命令的admin是向TLS-CA和组织CA注册的peer-admin。另外,OU的config.yaml也存在于peer-admin MSP中。 我还尝试将设置为peer-admin(Peer0/msp/user/peer-admin/msp)的msp目录,但这会导致容器在启

  • 我正在使用GitHub提供的antlr4语法分析器和词法分析器来解析Python3中的PHP。 当我直接使用这些语法时,我的PoC代码工作: antlr试验。py 这给出了输出 当我使用以下PHP时。g4语法,我犯了很多错误: 在对pythons导入交换评论之后,我得到了这个错误 然而,当我在语法上运行antlr4工具时,我没有出错。我在这里被难住了——是什么导致了这个问题?

  • 我正在开发一个1:1的聊天应用程序。在启动应用程序之前,我使用PHP服务器创建私有通道。正确创建通道。 生成用户令牌,并正确创建聊天客户端。我看到用户也是在服务中创建的。 它显示消息“正在连接....”然后在出现错误时停止。 PHP代码:

  • 问题内容: 下面是用户单击“ 应用余额” 时的代码 。 这适用于第一部分,用户的余额更新很好,但是当我尝试执行第二条语句时,出现SQL语法错误。是什么原因引起的? 下面是运行此命令时得到的堆栈跟踪。 问题答案: 您的第二个查询缺少子句中的右括号。 代替直接在查询中附加参数,请使用参数化查询。 这样看起来会更干净,更容易编写。最重要的是,它将使您免受SQL Injection 攻击。 这是用于参数化

  • 问题内容: 本质上,我正在尝试替换: 为了避免使用硬盘驱动器,请在C ++中使用管道。这是我的代码: 我绝对可以确保上述字符串已正确初始化。但是,发生了两件事对我来说没有意义: (1)我正在执行的程序报告“输入文件为空”。由于我未使用“ <”调用程序,因此不应期望输入文件。相反,它应该期待键盘输入。此外,它应该阅读“ gulp_command”中包含的文本。 (2)程序的报告(通过标准输出提供)出