Fields
id— Peer identifiername— Client name/versioncaps— Protocol capabilitiesnetwork— Connection infoprotocols— Supported protocols
P2P peer metadata (ID, client, capabilities, protocols)
import * as PeerInfo from 'voltaire-effect/primitives/PeerInfo'
import * as Schema from 'effect/Schema'
import { Effect } from 'effect'
// Schema validation
const peer = Schema.decodeSync(PeerInfo.JSON)({
id: 'QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wU2s7tVqYoC9z',
name: 'Geth/v1.10.0-stable/linux-amd64/go1.16',
caps: ['eth/66', 'eth/67', 'snap/1'],
network: { localAddress: '127.0.0.1:30303' },
protocols: { eth: { version: 67 } }
})
// Effect constructor
const program = PeerInfo.from({
id: 'QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wU2s7tVqYoC9z',
name: 'Geth/v1.10.0',
caps: ['eth/66'],
network: {},
protocols: {}
})
Effect.runSync(program)
id — Peer identifiername — Client name/versioncaps — Protocol capabilitiesnetwork — Connection infoprotocols — Supported protocolsconst result = await Effect.runPromiseExit(PeerInfo.from({ id: 'x' }))
// result._tag === 'Failure' → PeerInfoError