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).

For method semantics — parameters, returns, error codes — see the upstream Electrum-cash protocol reference:

Electrum Cash Protocol Methods

The gateway is transparent: parameter shape and return shape match the upstream spec.

Endpoint

HTTP

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

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).

Cost

100 CC per call on mainnet; 50 CC on testnets/regtest. Flat per-system rate, with one exception:

  • server.ping is 10 CC — it's a no-op keepalive clients send periodically to hold WS connections open against intermediary idle-timeouts. Charging full rate would distort the cost of long-lived WS connections by an order of magnitude.

Subscriptions cost the call rate at registration time plus the call rate per push delivered:

  • Registration: 100 CC (mainnet) / 50 CC (testnets/regtest).
  • Each push: 100 CC (mainnet) / 50 CC (testnets/regtest).

Per-network multiplier applies on top.

Supported methods

server.*

Method CC Notes
server.add_peer 100
server.banner 100
server.donation_address 100
server.features 100
server.peers.subscribe 100 not an actual subscription, see docs
server.ping 10 Keepalive no-op (special-cased).
server.version 100

blockchain.headers.*

Method CC Notes
blockchain.headers.get_tip 100
blockchain.headers.subscribe 100 + 100/push
blockchain.headers.unsubscribe 100

blockchain.address.*

Address-shaped methods take a cashaddr or legacy address and resolve internally to the corresponding scripthash. Each has a blockchain.scripthash.* sibling that takes the raw scripthash directly.

Method CC Notes
blockchain.address.get_balance 100
blockchain.address.get_first_use 100
blockchain.address.get_history 100
blockchain.address.get_mempool 100
blockchain.address.get_scripthash 100 Address → scripthash conversion. No scripthash equivalent.
blockchain.address.get_status 100
blockchain.address.listunspent 100
blockchain.address.subscribe 100 + 100/push
blockchain.address.unsubscribe 100

blockchain.scripthash.*

Method CC Notes
blockchain.scripthash.get_balance 100
blockchain.scripthash.get_first_use 100
blockchain.scripthash.get_history 100
blockchain.scripthash.get_mempool 100
blockchain.scripthash.get_status 100
blockchain.scripthash.listunspent 100
blockchain.scripthash.subscribe 100 + 100/push
blockchain.scripthash.unsubscribe 100

blockchain.transaction.*

Method CC Notes
blockchain.transaction.broadcast 100 Submits a transaction to upstream Fulcrum's mempool.
blockchain.transaction.broadcast_package 100
blockchain.transaction.dsproof.get 100 Double-spend proof lookup.
blockchain.transaction.dsproof.list 100
blockchain.transaction.dsproof.subscribe 100 + 100/push
blockchain.transaction.dsproof.unsubscribe 100
blockchain.transaction.get 100 Raw hex or verbose JSON form.
blockchain.transaction.get_confirmed_blockhash 100
blockchain.transaction.get_height 100
blockchain.transaction.get_merkle 100
blockchain.transaction.id_from_pos 100
blockchain.transaction.subscribe 100 + 100/push
blockchain.transaction.unsubscribe 100

Reusable / RPA / mempool / misc

Method CC Notes
blockchain.estimatefee 100
blockchain.relayfee 100
blockchain.reusable.get_history 100
blockchain.reusable.get_mempool 100
blockchain.rpa.get_history 100
blockchain.rpa.get_mempool 100
blockchain.utxo.get_info 100
mempool.get_fee_histogram 100
mempool.get_info 100

Not exposed

Fulcrum's admin-port methods (addpeer, ban, kick, stop, etc.) and the daemon.passthrough escape hatch are deny-listed. The gateway also doesn't expose unknown methods — calling one returns 403 method_not_in_allowlist.

WebSocket keepalive

The gateway does not send server-initiated pings — keep the WS alive yourself by issuing a server.ping (or any other request) periodically. Corporate proxies and NAT devices often drop idle connections after ~30–60 s; if you don't expect frequent traffic, send server.ping every 20–30 s.

Batches

JSON-RPC 2.0 batches respond as an array of the same length, in submission order. Each sub-request is independently billed. Batch length is capped at 20.