polkadot-js / api

Promise and RxJS APIs around Polkadot and Substrate based chains via RPC calls. It is dynamically generated based on what the Substrate runtime provides in terms of metadata.
Apache License 2.0
1.07k stars 354 forks source link

[Parachain] Trying to add an already reserved node 12D3KooWJb4BDK6gRLH27mYnd22igZQi6W3xraAJsvSanaccPNVx as reserved on SetId(0). #5801

Closed Andrewjkim2014 closed 8 months ago

Andrewjkim2014 commented 9 months ago

For my blockchain network terminal, I start this node using this command: ./target/release/polkadot-parachain --chain contracts-rococo-local --tmp --rpc-cors all

In the process of event listener discovery, the dial method is implemented to all the multiaddresses.

This is the console.log from the event listeners: peerInfo { id: PeerId(12D3KooWJb4BDK6gRLH27mYnd22igZQi6W3xraAJsvSanaccPNVx), multiaddrs: [ Multiaddr(/ip4/127.0.0.1/tcp/53624/ws), Multiaddr(/ip4/192.168.1.203/tcp/53624/ws) ] } multiaddress Multiaddr(/ip4/192.168.1.203/tcp/53624/ws)

If you have any questions, please state your questions below in order to better understand the situation!

React-Expo-Native (front-end) Express (Back-end) Node.js v21.6.1

Screen Shot 2024-02-10 at 4 20 19 PM
TarikGul commented 8 months ago

I moved this issue to the api since it doesn't have anything to do with the apps.

In order to properly help I need a reproducible code example, and a proper question to work off of. Please format it using markdown code formatting. Thank you

Andrewjkim2014 commented 8 months ago

Thank you TarikGul for responding.

This is current log that I get from the polkadot parachain network using the chain flag (--chain contracts-rococo-local).

2024-03-02 19:17:21.748 TRACE tokio-runtime-worker peerset: [Parachain] Adding reserved node 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 on SetId(0).
2024-03-02 19:17:21.749 TRACE tokio-runtime-worker peerset: [Parachain] Connecting to 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 on SetId(0) (0/8 num_out/max_out).
2024-03-02 19:17:21.750 WARN tokio-runtime-worker peerset: [Parachain] Trying to add an already reserved node 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 as reserved on SetId(0).
2024-03-02 19:17:21.750 TRACE tokio-runtime-worker peerset: [Parachain] Adding a new known peer 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6.
2024-03-02 19:17:21.750 TRACE tokio-runtime-worker peerset: [Parachain] Trying to add an already known peer 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6, bumping last_updated.
2024-03-02 19:17:21.759 WARN tokio-runtime-worker peerset: [Parachain] Trying to add an already reserved node 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 as reserved on SetId(0).
2024-03-02 19:17:21.769 TRACE tokio-runtime-worker peerset: [Parachain] Reserved peer 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 (Outbound) dropped from SetId(0).
2024-03-02 19:17:21.769 TRACE tokio-runtime-worker peerset: [Parachain] Peer 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 disconnected, reputation: -256 to -256
2024-03-02 19:17:21.899 TRACE tokio-runtime-worker peerset: [Parachain] Connecting to 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 on SetId(0) (0/8 num_out/max_out).
2024-03-02 19:17:22.067 WARN tokio-runtime-worker peerset: [Parachain] Trying to add an already reserved node 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 as reserved on SetId(0).
2024-03-02 19:17:22.077 WARN tokio-runtime-worker peerset: [Parachain] Trying to add an already reserved node 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 as reserved on SetId(0).
2024-03-02 19:17:22.105 WARN tokio-runtime-worker peerset: [Parachain] Trying to add an already reserved node 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6 as reserved on SetId(0).
2024-03-02 19:17:22.193 TRACE tokio-runtime-worker peerset: [Parachain] Trying to add an already known peer 12D3KooWMi8BPM372mzMjtsiKjgHMDiSYFFgmJ58U8AeVsQNXAP6, bumping last_updated.

This is the nodejs libp2p configuration for my node: const options = { peerId: peerId, addresses: { listen: ['/ip4/192.168.1.203/tcp/9944/ws'] }, transports: [ tcp(), webSockets(), circuitRelayTransport({ discoverRelays: 2, }) ], connectionEncryption: [noise()], streamMuxers: [yamux(), mplex()], dht: kadDHT(), peerDiscovery: [ mdns(), pubsubPeerDiscovery(), bootstrap({ list: bootstrapNodes }), ], services: { identify: identify(), ping: ping({ protocolPrefix: 'ipfs', }), dht: kadDHT({ kBucketSize: 20, clientMode: false, broadcast: true, }), relay: circuitRelayServer(), pubsub: gossipsub({ allowPublishToZeroPeers: true, emitSelf: true, floodPublish: false, gossipIncoming: true, doPX: false, directPeers: gossipPeers, allowedTopics: 'Login' }) }, config: { dht: { kBucketSize: 20, enabled: true, randomWalk: { enabled: true, interval: 300e3, timeout: 10e3 } }, pubsub: { enabled: true, emitSelf: false, }, relay: { enabled: true,
hop: { enabled: true,
active: true
} }, autoNAT: { enabled: true, }, }, connectionManager: { autoDial: true, maxConnections: 50, minConnections: 10, }, }

This is the rpc call to the parachain node thats result in that response from the blockchain terminal: const rpcUrl = 'http://127.0.0.1:9944';

const body = JSON.stringify({ jsonrpc: '2.0', method: 'system_addReservedPeer', params: [ /ip4/192.168.1.203/tcp/4003/ws/p2p/${peerId} ], id: 2 });

const response = await fetch(rpcUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body });

My goal is to be able to see the discover, incoming connection, and accepting connection in the parachain network, which I'm guessing should update the Idle 0 Peers to 1 Peer. I'm still currently trying to fix this issue. If theres anything else that you need from me, please let me know!

Andrewjkim2014 commented 8 months ago

This is my reproducible code example.

   const options = {
       peerId: peerId,
       addresses: {
           listen: ['/ip4/192.168.1.203/tcp/9944/ws']
       },
       transports: [
         tcp(),
         webSockets(),
         circuitRelayTransport({
           discoverRelays: 2,
         })
       ],
       connectionEncryption: [noise()],
       streamMuxers: [yamux(), mplex()],
       dht: kadDHT(),
       peerDiscovery: [
           mdns(),
           pubsubPeerDiscovery(),
           bootstrap({
               list: bootstrapNodes
           }),
       ],
       services: {
           identify: identify(),
           ping: ping({
               protocolPrefix: 'ipfs',
           }),
           dht: kadDHT({
               kBucketSize: 20,
               clientMode: false,
               broadcast: true,
           }),
           relay: circuitRelayServer(),
           pubsub: gossipsub({
               allowPublishToZeroPeers: true,
               emitSelf: true,
               floodPublish: false,
               gossipIncoming: true,
               doPX: false,
               directPeers: gossipPeers,
               allowedTopics: 'Login'
           })
       },
       config: {
           dht: {
               kBucketSize: 20,
               enabled: true,
               randomWalk: {
                 enabled: true,
                 interval: 300e3,
                 timeout: 10e3
               }
           },
           pubsub: {
               enabled: true,
               emitSelf: false,
           },
           relay: {
               enabled: true,      
               hop: {
               enabled: true,    
               active: true      
               }
           },
           autoNAT: {
               enabled: true,
           },
       },
       connectionManager: {
           autoDial: true,
           maxConnections: 50,
           minConnections: 10,
       },
   }

   const node = await createLibp2p(options);

   node.addEventListener('peer:discovery', async (event) => {     
     const peerInfo = event.detail;
     console.log("New peer discovered", peerInfo.id.toString());

    const rpcUrl = 'http://127.0.0.1:9944';

      const body = JSON.stringify({
        jsonrpc: '2.0',
        method: 'system_addReservedPeer',
        params: [
          `/ip4/192.168.1.203/tcp/4003/ws/p2p/${peerId}`
        ],
        id: 2
      });

      const response = await fetch(rpcUrl, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body
      });
   })

   node.addEventListener('peer:connect', async (event) => {
     console.log('peer connect', event.detail)
   })

   await node.start();
 }

}

TarikGul commented 8 months ago

So from the code you provided it seems this is out of scope for these libraries as this is not a polkadot-js issue.

TarikGul commented 8 months ago

Best to ask this question in Substrate Stack Exchange: https://substrate.stackexchange.com/questions

polkadot-js-bot commented 8 months ago

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue if you think you have a related problem or query.