Peer synchronization and gossip.
PBE nodes exchange signed hello messages, peer hints, transactions and canonical blocks. Mainnet nodes must match chain ID, network ID and protocol version.
Signed hello
POST /p2p/hello
{
"hello": {
"softwareVersion": "0.0.1",
"protocolVersion": "1.0",
"networkId": 1,
"chainId": "PBE-MAINNET",
"genesisHash": "75d92b8389173d388e9989b208b8f623e0e88f9059f02e66b73cfbf4c412e5eb",
"nodeId": "pbenode_...",
"nodePublicKey": "...",
"height": "...",
"hash": "...",
"timestamp": "...",
"endpoint": "https://node.example",
"signature": "..."
}
}The signed hello commits to software/protocol metadata, network ID, chain ID, the frozen genesis hash, node identity, advertised endpoint and current tip. Nodes reject self-peers, incompatible protocol/network/chain identities, malformed signatures and unsafe public peer hints.
P2P routes
| Method | Route | Purpose |
|---|---|---|
| POST | /p2p/hello | Signed peer handshake and bounded peer gossip. |
| POST | /p2p/transaction | Relay a signed transaction. |
| POST | /p2p/block | Relay a block v4. |
| GET | /p2p/blocks?from=&limit= | Retrieve canonical blocks for synchronization. |
| GET | /p2p/peers | Retrieve bounded verified public peer hints. |
| GET | /p2p/status | Public node status. |
Fork choice
PBE prefers the greater valid canonical height. When two valid tips have the same height, the lower deterministic participation-ticket key wins: slot, then the memory-hard participation proof, then the mining-wallet public key. Machine producer keys and producer signatures are deliberately excluded from this tie-break so rotating producer identities cannot cheaply grind equal-height fork priority. If the same wallet ticket equivocates, block hash is only the final deterministic fallback.
Peer-supplied DNS names are resolved and pinned before outbound requests. Hostnames that resolve to loopback, private, link-local or reserved addresses are rejected by default, and P2P block batches are capped at 16 blocks.
Bootstrap and discovery
A standalone release normally seeds from https://paybyte.org. After successful bootstrap, verified peers are cached and gossiped. If the cache contains no usable compatible peers, PBE reopens bootstrap instead of remaining stranded by an old peer record.
Standalone ports
| Port | Default bind | Purpose |
|---|---|---|
| 8024 | 127.0.0.1 | Local dashboard/RPC; not intended for public exposure. |
| 8025 | 0.0.0.0 | Public P2P listener; router/NAT forwarding may be required. |
