SolidPeer

Fulcrum reference

Fulcrum is an Electrum-protocol indexed view of the BCH chain — built for thin clients that need address-balance lookups and transaction history without downloading the full chain.

The gateway proxies Fulcrum's JSON-RPC over both HTTP (one-shot requests) and WebSocket (subscriptions + streaming responses).

Endpoint

HTTP

https://solidpeer.io/fulcrum/<network>/<token>

POST a JSON-RPC envelope. The same single-request and batch shapes used in BCHN apply here.

WebSocket

wss://solidpeer.io/fulcrum/<network>/<token>

Send JSON-RPC requests over the socket; subscription updates arrive as JSON-RPC notifications (no id, has method and params).

What Fulcrum is for

  • Address-balance lookupsblockchain.address.get_balance returns confirmed/unconfirmed balance for an address.
  • Address history — list every transaction touching an address, in confirmation order.
  • Scripthash subscriptions — get a push whenever an address's state changes (new tx arrives, confirmations advance). Reference
  • Transaction lookup — by txid, same shape as BCHN's getrawtransaction. Reference
  • Header subscriptions — get pushed every new block header.

Cost model

100 CC per call on mainnet; 50 CC on testnets/regtest. Subscription registration is 100 CC; each push delivered to the client is 100 CC. server.ping is the exception — 10 CC, since it's a no-op keepalive.

Method allowlist

The default allowed set covers address/scripthash queries, transaction lookups, header subscriptions, and broadcast. Bring-your-own-keys wallet RPCs (signing, address derivation) aren't exposed — Fulcrum doesn't implement them either.

Local synthesis

server.version is synthesized inside the gateway rather than forwarded — your client's requested version is echoed back as the agreed protocol. This lets multiple clients with different protocol-version preferences share the same pooled upstream connection without one negotiation breaking the next.

Notes

  • Address subscriptions use Electrum's "scripthash" representation. Some clients call blockchain.address.subscribe (which accepts a cashaddr or legacy address), others prefer blockchain.scripthash.subscribe (raw 32-byte scripthash). Both are supported; pick whichever your library uses.
  • WebSocket keepalive: the gateway sends a server.ping to your client every 10 seconds to hold the connection open against intermediary idle-timeouts. You can ignore these.
  • Batches over WS are supported (capped at 20 sub-requests, same as HTTP).