MCPcopy Index your code
hub / github.com/cryptocoinjs/p2p-node

github.com/cryptocoinjs/p2p-node @v0.1.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.1.1 ↗ · + Follow
4 symbols 8 edges 7 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

P2P Node

Low-level library to handle peer-to-peer traffic on Cryptcurrency networks. A raw socket object in Node emits data events whenever the stream is updated. This library sits on top of a raw socket connection, and instead of emitting data events every time the stream updates, it waits and emits message events whenever a complete message has arrived.

It uses the Bitcoin protocol structure to parse incoming messages; any stream that's encoded as follows can be parsed:

  • 4 bytes: Uint32: Magic Bytes: Flag the beginning of a message
  • 12 bytes: Char: ASCII string identifying the message type, null-padded to 12 characters long
  • 4 bytes: Uint32: Payload length
  • 4 bytes: Uint32: Checksum: First four bytes of sha256(sha256(payload))
  • variable bytes: Payload data

The default Magic Bytes and default Port to connect to are set to the Bitcoin protocol.

Usage

var Peer = require('Peer').Peer;

var p = new Peer('remote.node.com');
p.on('connect', function(d) {
  console.log("I'm connected!");
});
p.on('message', function(d) {
  console.log("I got message "+d.command);
});

Peer is an EventEmitter with the following events:

Events

connect

When the socket connects

Data object passed to listeners:

{
  peer: Peer
}

error

If the socket errors out

Data object passed to listeners:

{
  peer: Peer,
  error: Error object from Socket
}

end

When the socket disconnects

Data object passed to listeners:

{
  peer: Peer
}

message

When a complete message has arrived

Data object passed to listeners:

{
  peer: Peer,
  command: String,
  data: Raw payload as binary data
}

commandMessage

An alternate version of the peerMessage event; in these events, the command of the message is used as the event name (i.e. command 'foo' would cause a fooMessage event).

{
    peer: Peer,
    data: Raw payload as binary data
}

Core symbols most depended-on inside this repo

findPeer
called by 2
examples/bitcoin.js
tryLaunch
called by 2
examples/bitmessage.js
findPeer
called by 1
examples/bitcoin-testnet.js
Host
called by 0
lib/Peer.js

Shape

Function 4

Languages

TypeScript100%

Modules by API surface

lib/Peer.js1 symbols
examples/bitmessage.js1 symbols
examples/bitcoin.js1 symbols
examples/bitcoin-testnet.js1 symbols

For agents

$ claude mcp add p2p-node \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact