Help me please! I have hyperledger fabric network with configuration:
- ca-tls
 - rca-org0
 - rca-org1
 - rca-org2
 - orderer1-org0 (solo)
 - peer1-org1
 - peer2-org1
 - peer1-org2
 - peer2-org2
 
I have this config.yaml file:
name: "Network"
version: "1.0"
channels:
  mychannel:
    orderers:
      - orderer1-org0
    peers:
      peer1-org1:
        endorsingPeer: true
        chaincodeQuery: true
        ledgerQuery: true
        eventSource: true
        discover: true
      peer2-org1:
        endorsingPeer: false
        chaincodeQuery: true
        ledgerQuery: true
        eventSource: true
        discover: false
      peer1-org2:
        endorsingPeer: true
        chaincodeQuery: true
        ledgerQuery: true
        eventSource: true
        discover: true
      peer2-org2:
        endorsingPeer: false
        chaincodeQuery: true
        ledgerQuery: true
        eventSource: true
        discover: false
organizations:
  org0: 
    mspid: org0MSP
    orderers:
      - orderer1-org0
    certificateAuthorities:
      - rca-org0
    adminPrivateKey:
      path: path/to/org0/admin/msp/keystore/key.pem
    signCert:
      path: path/to/org0/admin/msp/signcerts/cert.pem
  org1:
    mspid: org1MSP
    peers:
      - peer1-org1
      # - peer2-org1
    certificateAuthorities:
      - rca-org1
    adminPrivateKey:
      path: path/to/org1/admin/msp/keystore/key.pem
    signedCert:
      path: path/to/org1/admin/msp/signcerts/cert.pem
  org2:
    mspid: org2MSP
    peers:
      - peer1-org2
      # - peer2-org2
    certificateAuthorities:
      - rca-org2
    adminPrivateKey:
      path: path/to/org2/admin/msp/keystore/key.pem
    signedCert:
      path: path/to/org2/admin/msp/signcerts/cert.pem
orderers:
  orderer1-org0:
    url: grpcs://orderer1-org0:7050
    grpcOptions:
      ssl-target-name-override: orderer1-org0
      grpc-max-send-message-length: 4194304
    tlsCACerts:
      path: path/to/org0/msp/tlscacerts/tls-ca-cert.pem
peers:
  peer1-org1:
    url: grpcs://172.19.0.9:7051
    grpcOptions:
      ssl-target-name-override: peer1-org1
      grpc.keepalive_time_ms: 600000
    tlsCACerts:
      path: path/to/org0/msp/tlscacerts/tls-ca-cert.pem
  peer2-org1:
    url: grpcs://172.19.0.9:7051
    grpcOptions:
      ssl-target-name-override: peer2-org1
      grpc.keepalive_time_ms: 600000 
    tlsCACerts:
      path: path/to/org0/msp/tlscacerts/tls-ca-cert.pem
  peer1-org2:
    url: grpcs://172.19.0.9:7051
    grpcOptions:
      ssl-target-name-override: peer1-org2
      grpc.keepalive_time_ms: 600000 
    tlsCACerts:
      path: path/to/org0/msp/tlscacerts/tls-ca-cert.pem
  peer2-org2:
    url: grpcs://172.19.0.9:7051
    grpcOptions:
      ssl-target-name-override: peer2-org2
      grpc.keepalive_time_ms: 600000
    tlsCACerts: path/to/org0/msp/tlscacerts/tls-ca-cert.pem
certificateAuthorities:
  ca-tls:
    url: https://0.0.0.0:7062
    httpOptions:
      verify: false
    tlsCACerts:
      path: path/to/org0/msp/tlscacerts/tls-ca-cert.pem
    registrar:
      - enrollId: tls-ca-admin
        enrollSecret: tls-ca-adminpw
    caName: ca-tls
  rca-org0:
    url: https://0.0.0.0:7063
    httpOptions:
      verify: false
    tlsCACerts: 
      path: path/to/org0/msp/tlscacerts/tls-ca-cert.pem
    registrar:
      - enrollId: rca-org0-admin
        enrollSecret: rca-org0-adminpw
    caName: rca-org0
  
  rca-org1:
    url: https://0.0.0.0:7064
    httpOptions: 
      verify: false
    tlsCACerts:
      path: path/to/org0/msp/tlscacerts/tls-ca-cert.pem
    registrar:
      - enrollId: rca-org1-admin
        enrollSecret: rca-org1-adminpw
    caName: rca-org1
  
  rca-org2:
    url: https://0.0.0.0:7065
    httpOptions:
      verify: false
    tlsCACerts:
      path: path/to/org0/msp/tlscacerts/tls-ca-cert.pem
    registrar:
      - enrollId: rca-org2-admin
        enrollSecret: rca-org2-adminpw
    caName: rca-org2
My API code below:
   // create mychannel instance
    let channel = new Channel('mychannel', client1);
    // get certificates from couchdb wallet
    let couchdbWallet = await Wallets.newCouchDBWallet("http://xxxxx:xxxxxxx@localhost:5984");
    let user5 = await couchdbWallet.get('user5');
    if (user5) {
        let user5Cert = user5.credentials.certificate;
        let user5Key = user5.credentials.privateKey;
        let mspId = 'org1MSP';
        
        await client1.initCredentialStores();
        let cryptoSuite = client1.getCryptoSuite();
        let keyObj = await cryptoSuite.importKey(user5Key);
        let user5PubKey = keyObj._key.pubKeyHex;
        let user5PrvKeyHex = keyObj._key.prvKeyHex;
        let signer = new Signer(cryptoSuite, keyObj);
        
        // create instance of signing identity
        let signingIdentity = new SigningIdentity(
            user5Cert,
            user5PubKey,
            'org1MSP',
            cryptoSuite,
            signer
        );
        // 1. generate unsigned transaction proposal
        let transactionProposal = {
            fcn: 'Mint',
            args: ['1000'],
            chaincodeId: 'token-erc-20',
            channelId: 'mychannel'
        }
        let { proposal, txId } = await channel.generateUnsignedProposal(
            transactionProposal,
            mspId,
            user5Cert,
            true
        );
        console.log('*******proposal*****:\n', proposal);
        console.log('*******Tx Id******\n', txId);
        // now we have the 'unsigned proposal' for this tx
        // 2. calculate the hash of the tx proposal bytes
        let proposalBytes = proposal.toBuffer(); // the proposal comes from step 1
        
        // 3. calculate the signature for this tx proposal
        let signedProposal = signingIdentity.sign(proposalBytes);
        console.log('********signedProposal********\n:', signedProposal);
        // 4. send the signed tx proposal to peer(s)
        let tlscaRootCert = readFileSync(tlscaRootCertPATH, { encoding: 'utf-8' });
        console.log('tlscaRootCert: ', typeof tlscaRootCert);
        let peer1org1 = client1.newPeer('grpcs://172.19.0.9:7051',
            {
                pem: tlscaRootCert,
            }
        );
        let targets = new Array();
        targets.push(peer1org1);
      
        let sendSignedProposalReq = { signedProposal, targets };
        let proposalResponses = await channel.sendSignedProposal(sendSignedProposalReq);
        // check the proposal responces, if all good, commit the tx
        // 5. similar to step 1, generate an unsigned tx
        let commitReq = {
            proposalResponses,
            proposal,
        };
        let commitProposal = await channel.generateUnsignedTransaction(commitReq);
        /// 6. similar to step 3, sign the unsigned tx with the user's private key
        let commitProposalBytes = commitProposal.toBuffer();
        
        let signedCommitProposal = signingIdentity.sign(commitProposalBytes);
        // 7. commit the signed tx
        let response = await channel.sendSignedTransaction({
            signedTransaction: signedCommitProposal,
            request: commitReq,
        });
        console.log('**********response from orderer after commit signed tx********\n', response);
        // response.status should be 'SUCCESS' if the commit succeed
        if (response.status === 'SUCCESS') {
            // connect to event channel hub
            let eventChannelHub = new ChannelEventHub(channel);
            // 8. similar to step 1, generate an unsigned eventHub registration for the ChannelEventHub
            let unsigneEvent = eventChannelHub.generateUnsignedRegistration({
                certificate: user5Cert,
                mspId
            });
            // 9. similar to step 3, sign the unsigned eventhub registration with the user's private key
            let unsignEventBytes = unsigneEvent.toBuffer();
            let signedEvent = signingIdentity.sign(unsignEventBytes);
            // 10. register this ChannelEventHub at peer
            let connectEventChannel = eventChannelHub.connect({ signedEvent });
            console.log('***********connectEventChannel*********\n', connectEventChannel);
        }
    }
I try to submit transaction. But every time I receive this error:
- docker-compose.yaml logs
 
2022-09-21T11:36:52.296Z - error: [Channel.js]: Error: 14 UNAVAILABLE: failed to connect to all addresses
- peer1-org1 container logs:
 
2022-09-21 11:25:08.606 UTC 0062 WARN [endorser] ProcessProposal -> Failed to preProcess proposal error="error validating proposal: access denied: channel [mychannel] creator org [org1MSP]"
2022-09-21 11:25:08.606 UTC 0063 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.19.0.1:59086 error="error validating proposal: access denied: channel [mychannel] creator org [org1MSP]" grpc.code=Unknown grpc.call_duration=15.47295ms
Also I receive this error now:
2022-09-21T13:01:10.858Z - error: [Channel.js]: sendTransaction - no valid endorsements found
How can I resolve this problem?