Ошибка Hyperledger Fabric: 2 НЕИЗВЕСТНО: доступ запрещен: создатель канала [mychannel] org [Org1MSP] - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь взаимодействовать с коллегами из 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);

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

1 Ответ

0 голосов
/ 23 января 2019

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

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

...