Skip to main content
Hofund is ThorNode’s own submission surface, reached through Bifrost route URLs. Copy them from Endpoints → Private TX. Every route below is https://<location-base>/<private-tx-key>/<route>; the Private TX key goes in the path or in Authorization: Bearer, exactly as for other Bifrost routes.

Routes

/hofund picks the operation from the JSON-RPC method. The lane routes fix the lane in the URL and accept no query string. A lane never falls back to another lane.

Request contract

  • POST with content-type: application/json (unified route and lane routes).
  • Body at most 64 KiB.
  • The envelope is exactly { "jsonrpc": "2.0", "id", "method", "params" }. id is a string or number, never null; unknown or duplicate keys are rejected; a JSON array (batch) is rejected with -32600 JSON-RPC request batching is not supported.
  • Every transaction is canonical, padded, standard base64 of a fully signed transaction, at most 1232 bytes decoded. Durable-nonce transactions and duplicate signatures are rejected.
  • Selectors on /hofund: ?swqos-only=true or ?mev-protect=true (mutually exclusive), or the JSON selector {"mevProtect":true} described per method. Supplying both a query and a body selector is rejected.
  • Exact retries of the same body return the stored prior outcome and never dispatch again. Sending the same signed transaction through a different lane fails with 409, -32005 transaction signature is already reserved.

Response contract

Success is HTTP 200 with result. Two receipt headers accompany submissions: A JSON-RPC error carries a machine-readable subcode:
data.kind is always present; data.field when a specific field is at fault.

Error codes

Bifrost gateway errors (JSON-RPC envelope, id echoed when parseable): Hofund errors: Common -32602 messages: transaction exceeds 1232 bytes, transaction must use canonical padded base64, contains duplicate transaction, transaction count exceeds 25, sendBundle transaction count exceeds 4, Thor tip is below the configured floor (kind: tip_too_low), durable nonce is not supported, minContextSlot is unsupported and is not enforced by Hofund sender rails.

Next steps