Ошибка Hyperledger Fabric: 2 UNKNOWN: доступ запрещен: организация-создатель канала [mychannel] [Org1MSP]

Я пытаюсь взаимодействовать с коллегами из JavaScript и продолжаю получать

{ Error: 2 UNKNOWN: access denied: channel [mychannel] creator org [Org1MSP]
    at Object.exports.createStatusError (/blockchain-api-js/node_modules/grpc/src/common.js:87:15)
    at Object.onReceiveStatus (/blockchain-api-js/node_modules/grpc/src/client_interceptors.js:1188:28)
    at InterceptingListener._callNext (/blockchain-api-js/node_modules/grpc/src/client_interceptors.js:564:42)
    at InterceptingListener.onReceiveStatus (/blockchain-api-js/node_modules/grpc/src/client_interceptors.js:614:8)
    at callback (/blockchain-api-js/node_modules/grpc/src/client_interceptors.js:841:24)
  code: 2,
  metadata: [Object],
  details: 'access denied: channel [mychannel] creator org [Org1MSP]' }

Я использую образец Fabric-ca, и мне удалось выполнить транзакции из cli и из cli через run-fabric.sh, но я не могу сделать это из JS, я создал нового пользователя и установил клиент и сертификат с client.setTlsClientCertAndKey(cert, key);, я даже пытался дать сертификат и ключ администратора от /data/orgs/org1/admin/msp/signcerts, /data/orgs/org1/admin/msp/admincerts и /data/orgs/org1/admin/msp/keystore, а также от /data/tls/, но безуспешно. Это часть кода, который я использую:

var channel = this.client.newChannel('mychannel')

    let serverCert = fs.readFileSync('/data/org0-ca-chain.pem');

    channel.addOrderer(
        this.client.newOrderer(
            config.orderers['orderer1-org0'].url,
            {
                pem: Buffer.from(serverCert).toString()
            }
        )
    );

    serverCert = fs.readFileSync('/data/org1-ca-chain.pem');

    const peer1 = this.client.newPeer(
        config.peers['peer1-org1'].url,
        {
            pem: Buffer.from(serverCert).toString()
        }
    );
    channel.addPeer(peer1);
    this.eventhubs = []
    this.eventhubs.push(channel.newChannelEventHub(peer1));

    serverCert = fs.readFileSync('/data/org2-ca-chain.pem');

    const peer2 = this.client.newPeer(
        config.peers['peer1-org2'].url,
        {
            'pem': Buffer.from(serverCert).toString()
        }
    );
    channel.addPeer(peer2);
    this.eventhubs.push(channel.newChannelEventHub(peer2));
    this.channel = channel;
    console.log(this.channel)

    return this.channel.sendTransactionProposal(request);

Что-то не так с моим кодом или с тем, как я это делаю? Может кто-нибудь сказать мне, что я делаю неправильно? Я видел несколько похожих вопросов, но они возникали, когда в основном использовался композитор, и я не мог решить свою проблему с ответами оттуда,


person Narcis Ciobotariu    schedule 12.11.2018    source источник
comment
у вас есть какое-нибудь решение?   -  person Sohan    schedule 15.12.2018


Ответы (2)


Я думаю, вам лучше проверить пользовательский контекст клиента.

пользовательский контекст имеет mspID. проверьте, является ли mspId Org1MSP или нет.

person lightreal    schedule 23.01.2019

Ошибка может быть связана с сертификатами для подписи транзакции. Дважды проверьте свой сертификат, полученный от ЦС, а также проверьте сертификаты и путь, используемые внутри док-контейнера одноранговых узлов.

person Shubham Jaiswal    schedule 27.02.2020