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