Locations
Hofund runs at every edge location. Each one exposes the same routes on the same ports; the dashboard shows the exact URLs with your key.Pick a lane
The fast lanes submit through the transaction sender at the location you call. Singapore is the designated stake-weighted location; it becomes stake-weighted once its sender identity is staked. Until then,
swqos and swqos-only requests are accepted at every location and delivered through that location’s own sender.
The Jito lanes go to the Jito block engine nearest the location you call over ThorNode’s own gRPC access; you need no Jito account or key. A Jito lane never falls back to a fast rail, and a fast lane never falls back to Jito.
Send a transaction
Every lane takesPOST with the Solana JSON-RPC sendTransaction shape. Hofund does not run preflight, so pass skipPreflight: true; a request without it is rejected before anything is sent.
X-Hofund-Submission-Id header. Keep it: it is the handle for the status route below.
A transaction is capped at 1232 bytes.
Ordinary fast and protected sendTransaction routes require a recent blockhash and reject durable nonce. For a durable-nonce pair, use /hofund with sendIdeal when that capability is available.
Include a Thor tip
Every transaction on a fast lane includes a System transfer of at least 100,000 lamports (0.0001 SOL) to one of these ten addresses:getFastTipConfig) rather than hard-coding them.
Send a Jito bundle
/hofund-bundle takes sendBundle with 1 to 5 base64 transactions. One member of the bundle — usually the last — must carry both tips: at least 100,000 lamports (0.0001 SOL) to a Thor tip address above and at least 1000 lamports to one of Jito’s tip accounts, and that same transaction must include a real application instruction (a program other than System, Compute Budget, or Memo, touching a writable account). A bundle made only of transfers and tips is rejected before it is sent.
getBundleStatuses on the same route:
/hofund-jito-bundle-only takes a single sendTransaction (with the same tip and application-instruction rules) and returns the transaction signature, with the bundle ID in X-Bundle-Id.
Jito’s tip accounts, as accepted by Hofund today (minimum 1000 lamports; the dashboard’s Hofund tab shows the same list):
getTipAccounts on /hofund-bundle returns the live set.
Send everything through one endpoint
/hofund accepts the same sendTransaction body and defaults to the fast lane. Select the SWQoS-only lane with the query parameter ?swqos-only=true, or the Jito lane with ?mev-protect=true. It also answers sendBatch, sendBundle, sendIdeal, getNonce, and getHealth.
sendIdeal is /hofund’s supported durable-nonce flow: it accepts a verified two-transaction fast/Jito pair that shares the same nonce account, live nonce value, and authority. Ordinary /hofund sendTransaction calls still require a recent blockhash.
/hofund/plain takes the Base64 transaction as text/plain, and /hofund/binary takes raw bytes as application/octet-stream; both select the operation with ?method=sendTransaction (or ?method=getHealth).
Stream transactions over WebSocket or QUIC
Both raw transports take the same signed bytes you would base64 for JSON — no envelope, no method, one transaction per message — and send nothing back: no acknowledgement and no submission id. Reconcile every signature yourself.- WebSocket — open the
ws://form of the route URL from the dashboard (ws://<host>:4343/<key>/hofund/ws, or…/hofund/ws/mev-protectfor the Jito lane) and send each transaction as one binary frame of at most 1232 bytes. Up to 10 connections per key, 16 in-flight transactions per connection. - QUIC — connect UDP to
<host>:4802with server-certificate verification, ALPNhofund-ingest/1, and authenticate exclusively with this account’s Bifrost key: immediately after connecting, open one bidirectional control stream and send{"type":"authenticate","token":"<your-bifrost-key>"}. The server answers{"type":"authenticated"}; only then open one unidirectional stream per raw signed transaction. ThorNode provides a reference client; see the QUIC reference.
Rate limits
Every Bifrost key has a per-key fast-lane rate set by the tier of the pass that owns it, enforced across all fast surfaces together (JSON-RPC, plain, binary, WebSocket, QUIC):
The Jito lanes (
mev-protect, /hofund-jito-bundle-only, /hofund-bundle, protected WebSocket) allow 5 requests per second per key, burst 5, at every tier. Over the limit, HTTP routes answer 429 with Retry-After: 1; the WebSocket and QUIC lanes drop the extra transaction silently, so pace your sends.
Check what happened
POST /hofund-status answers two methods:
A submission’s status moves through Hofund’s own view of the transaction and reaches
finalized with a landedSlot once the chain has it. An unknown submission ID returns submission not found. Submission records are kept for 10 minutes.