@gtcx/network
v0.2.0
Published
P2P networking primitives for GTCX validator mesh and edge connectivity.
Downloads
123
Readme
@gtcx/network
P2P networking primitives for GTCX validator mesh and edge connectivity.
Installation
pnpm add @gtcx/networkQuick Start (In-Memory)
import { createP2PNode, InMemoryTransport } from '@gtcx/network';
const nodeA = createP2PNode({ nodeId: 'A' }, new InMemoryTransport('A'));
const nodeB = createP2PNode({ nodeId: 'B' }, new InMemoryTransport('B'));
await nodeA.start();
await nodeB.start();
nodeB.subscribe('updates', (payload) => {
console.log('received', payload);
});
await nodeA.publish('updates', { status: 'ok' });Telemetry
const node = createP2PNode({ nodeId: 'A' }, new InMemoryTransport('A'), {
onEvent: (event) => {
console.log(event.type, event.topic);
},
});libp2p (QUIC + gossipsub)
pnpm add libp2p @libp2p/tcp @chainsafe/libp2p-quic @chainsafe/libp2p-noise @chainsafe/libp2p-gossipsub @libp2p/bootstrap @libp2p/mdns @libp2p/identifyimport { createP2PNode, createLibp2pTransport } from '@gtcx/network';
const transport = await createLibp2pTransport({
transport: 'tcp',
listenAddresses: ['/ip4/127.0.0.1/tcp/0'],
topics: ['gtcx.mesh'],
enableMdns: true,
});
const node = createP2PNode({ nodeId: 'validator-1' }, transport);
await node.start();Topic Allowlist
const node = createP2PNode({ nodeId: 'A', topics: ['updates'] }, new InMemoryTransport('A'));API
| Export | Description |
| ----------------------- | ------------------------------------------ |
| createP2PNode | Create a P2P node from a transport adapter |
| InMemoryTransport | Local transport adapter for tests and dev |
| PeerDiscoveryService | Adapter-driven peer discovery service |
| PeerReputationManager | Simple peer reputation scoring |
| P2PConfig | Node configuration type |
| TransportAdapter | Adapter interface for libp2p/mesh backends |
License
MIT
