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.

Home Page:https://polkadot.js.org/api/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Andrewjkim2014 opened this issue · comments

  • I'm submitting a ...
  • Bug report
  • Feature request
  • [X ] Support request
  • Other
  • What is the current behavior and expected behavior?
    Every time I start my node, my peer is discovered in the event listener of peer: discovery method, however, I get this message on the blockchain network terminal.
    [Parachain] Trying to add an already reserved node 12D3KooWCV94dwbEpG9ZP9kR3eVsy7FuaeqkpRAaeW2w8PqNDeMC as reserved on SetId(0).

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!

  • What is the motivation for changing the behavior?
  • Please tell us about your environment:

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

Screen Shot 2024-02-10 at 4 20 19 PM
  • Version:

  • Environment:

    • [X ] Node.js
    • Browser
    • Other (limited support for other environments)
  • Language:

    • [ X] JavaScript
    • TypeScript (include tsc --version)
    • Other

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

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!

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();
 }

}

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

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

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.