mnr
Get a free token

mnr - method policy table

Generated from mnr-core::policy::render_markdown. The code is canonical; this table is regenerated from it.

Tip safety depth: 10 blocks (TIP_SAFETY_DEPTH). Data within that distance of the quorum tip is never cached; requests above the safety line fall back to SWR or pass through. Unknown methods are denied (allow-list).

The allow-list is verified against monerod's endpoint registry (crates/core/fixtures/monerod-core_rpc_server.h, fetched 2026-09-04). 86 rows, 16 of them aliases.

Method Transport Class Cache rule Quorum rule Verification Timeout (ms) Note
get_block json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Block hash recomputed from the blob and matched to the requested hash or height.
get_block_header_by_height json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Header hash matched to the header chain at that height.
get_block_header_by_hash json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Recomputed header hash matched to the requested hash.
get_block_headers_range json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Range requests are split at the safety line.
on_get_block_hash json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Takes a height, returns the block hash; matched to the header chain.
getblock json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Alias of get_block.
getblockheaderbyhash json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Alias of get_block_header_by_hash.
getblockheaderbyheight json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Alias of get_block_header_by_height.
getblockheadersrange json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Alias of get_block_headers_range.
on_getblockhash json-rpc IMMUTABLE Cache 30 d only if requested height <= quorum_tip - TIP_SAFETY_DEPTH; requests above the safety line fall back to SWR. Cache key includes the block hash returned by the node. Height/hash must match the quorum-tip chain (validated against the header chain). authenticated 3000 Alias of on_get_block_hash.
get_info json-rpc SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Consensus state; node-specific fields (connections, peerlist, update_available, start_time) normalised.
/get_info legacy SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Legacy form of get_info; same normalisation.
/get_height legacy SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Consensus state; majority of >=3 upstreams.
get_last_block_header json-rpc SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Header verified against the header chain.
get_fee_estimate json-rpc SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Fee estimate = median of upstream estimates.
hard_fork_info json-rpc SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Fork/version agreement across upstreams.
get_version json-rpc SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Node version; checked against the directory minimum in Stage 2.
get_block_count json-rpc SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Equivalent of get_height by block count; majority of >=3 upstreams.
/getheight legacy SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Alias of /get_height.
/getinfo legacy SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Alias of /get_info.
getlastblockheader json-rpc SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Alias of get_last_block_header.
getblockcount json-rpc SWR SWR 1/5/15 s (max-age=1, stale-while-revalidate=5, stale-if-error=15) with single-flight coalescing; node-specific fields normalised. Staleness bound <=6 s normal, <=15 s during upstream error. Majority of >=3 upstreams on quorum tip (each probe height >= quorum_tip - 1). majority (>=3) 1500 Alias of get_block_count.
/get_transactions legacy IMMUTABLE-CONDITIONAL Cache 30 d per tx hash only for txs with block_height <= quorum_tip - TIP_SAFETY_DEPTH; mempool/young txs pass through. Per-tx-hash, not per request body; batches reassembled at the edge. Single node on quorum tip. authenticated 5000 Tx blob hashed to txid; pruned-tx hash form verified where applicable.
/get_outs.bin legacy IMMUTABLE-CONDITIONAL Cache 24 h only if all requested indices belong to blocks <= quorum_tip - TIP_SAFETY_DEPTH; else pass through. Single node on quorum tip. agreement free=1 pro=2 10000 Ring construction; correctness > hit rate. Stage 0: two-upstream agreement for Pro tokens, single upstream (owned node preferred) for Free. Free-tier two-upstream agreement is an open decision (plan §10 item 3).
/get_outs legacy IMMUTABLE-CONDITIONAL Cache 24 h only if all requested indices belong to blocks <= quorum_tip - TIP_SAFETY_DEPTH; else pass through. Single node on quorum tip. agreement free=1 pro=2 10000 JSON twin of /get_outs.bin; same per-tier agreement.
/get_o_indexes.bin legacy IMMUTABLE-CONDITIONAL Cache 24 h only if all requested indices belong to blocks <= quorum_tip - TIP_SAFETY_DEPTH; else pass through. Single node on quorum tip. agreement free=1 pro=2 10000 Tx global output indexes; same per-tier agreement.
/get_output_distribution.bin legacy IMMUTABLE-CONDITIONAL Cache 24 h only if all requested indices belong to blocks <= quorum_tip - TIP_SAFETY_DEPTH; else pass through. Single node on quorum tip. agreement free=1 pro=2 10000 Binary form of get_output_distribution.
get_output_distribution json-rpc IMMUTABLE-CONDITIONAL Cache 24 h only if all requested indices belong to blocks <= quorum_tip - TIP_SAFETY_DEPTH; else pass through. Single node on quorum tip. agreement free=1 pro=2 10000 Ring-construction data; not self-authenticating from a single response.
get_output_histogram json-rpc IMMUTABLE-CONDITIONAL Cache 24 h only if all requested indices belong to blocks <= quorum_tip - TIP_SAFETY_DEPTH; else pass through. Single node on quorum tip. agreement free=1 pro=2 10000 Ring-construction data; not self-authenticating from a single response.
/gettransactions legacy IMMUTABLE-CONDITIONAL Cache 30 d per tx hash only for txs with block_height <= quorum_tip - TIP_SAFETY_DEPTH; mempool/young txs pass through. Per-tx-hash, not per request body; batches reassembled at the edge. Single node on quorum tip. authenticated 5000 Alias of /get_transactions.
/get_blocks.bin legacy PASSTHROUGH-STREAM None - streamed body-through, no buffering. Route to the healthiest full node on quorum tip (pruned node only if request has prune=true). annotated 60000 Wallet sync path; largest bandwidth consumer, metered separately (bytes). Stage 0: not verified - Mnr-Verify: none; owned node preferred; idle timeout 15 s.
/get_blocks_by_height.bin legacy PASSTHROUGH-STREAM None - streamed body-through, no buffering. Route to the healthiest full node on quorum tip (pruned node only if request has prune=true). annotated 60000 Same as get_blocks.bin by height; Mnr-Verify: none in Stage 0; idle timeout 15 s.
/get_hashes.bin legacy PASSTHROUGH-STREAM None - streamed body-through, no buffering. Route to the healthiest full node on quorum tip (pruned node only if request has prune=true). annotated 60000 Block hashes for sync; Mnr-Verify: none in Stage 0; idle timeout 15 s.
/getblocks.bin legacy PASSTHROUGH-STREAM None - streamed body-through, no buffering. Route to the healthiest full node on quorum tip (pruned node only if request has prune=true). annotated 60000 Alias of /get_blocks.bin.
/getblocks_by_height.bin legacy PASSTHROUGH-STREAM None - streamed body-through, no buffering. Route to the healthiest full node on quorum tip (pruned node only if request has prune=true). annotated 60000 Alias of /get_blocks_by_height.bin.
/gethashes.bin legacy PASSTHROUGH-STREAM None - streamed body-through, no buffering. Route to the healthiest full node on quorum tip (pruned node only if request has prune=true). annotated 60000 Alias of /get_hashes.bin.
/get_transaction_pool_hashes.bin legacy PASSTHROUGH None (mempool is per-node by nature). Single node; response annotated Mnr-Upstream (opaque id). annotated 3000 Mempool is per-node by nature; never cached.
/get_transaction_pool_hashes legacy PASSTHROUGH None (mempool is per-node by nature). Single node; response annotated Mnr-Upstream (opaque id). annotated 3000 Mempool is per-node by nature; never cached.
/get_transaction_pool_stats legacy PASSTHROUGH None (mempool is per-node by nature). Single node; response annotated Mnr-Upstream (opaque id). annotated 3000 Mempool is per-node by nature; never cached.
/is_key_image_spent legacy PASSTHROUGH None (spent status changes with the mempool). Single node on quorum tip. annotated 3000 Restricted-safe; used by wallets during sync.
/get_public_nodes legacy PASSTHROUGH None. Single node on quorum tip. annotated 3000 Public node list; we never forward client identity (no client IP, no X-Forwarded-For).
/get_limit legacy PASSTHROUGH None. Single node on quorum tip. annotated 3000 Daemon bandwidth limits; we never forward client identity.
get_txpool_backlog json-rpc PASSTHROUGH None. Single node on quorum tip. annotated 3000 Mempool backlog metrics; per-node by nature.
get_txids_loose json-rpc PASSTHROUGH None. Single node on quorum tip. annotated 3000 Mempool txids by prefix; per-node by nature.
/send_raw_transaction legacy BROADCAST None. Fan out to all healthy upstreams in parallel; success if >=1 returns status OK. annotated 5000 do_not_relay honoured; no retries (tx is idempotent on-chain); overall budget 6 s; result header Mnr-Relayed: k/n. If all reject, return the first error verbatim.
/sendrawtransaction legacy BROADCAST None. Fan out to all healthy upstreams in parallel; success if >=1 returns status OK. annotated 5000 Alias of /send_raw_transaction.
check_tx_key json-rpc NOT-DAEMON n/a n/a not-daemon 0 Wallet-RPC method, not a daemon method; return -32601 method not found with a hint.
check_tx_proof json-rpc NOT-DAEMON n/a n/a not-daemon 0 Wallet-RPC method, not a daemon method; return -32601 method not found with a hint.
check_spend_proof json-rpc NOT-DAEMON n/a n/a not-daemon 0 Wallet-RPC method, not a daemon method; return -32601 method not found with a hint.
check_reserve_proof json-rpc NOT-DAEMON n/a n/a not-daemon 0 Wallet-RPC method, not a daemon method; return -32601 method not found with a hint.
/get_alt_blocks_hashes legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/start_mining legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/stop_mining legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/mining_status legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/save_bc legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/get_peer_list legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/set_log_hash_rate legacy DENY n/a n/a n/a 0 Logging control; denied at the edge (403 / -32601).
/set_log_level legacy DENY n/a n/a n/a 0 Logging control; denied at the edge (403 / -32601).
/set_log_categories legacy DENY n/a n/a n/a 0 Logging control; denied at the edge (403 / -32601).
/get_transaction_pool legacy DENY n/a n/a n/a 0 Restricted-gated (!m_restricted); cannot be served from a public node. Wallets use /get_transaction_pool_hashes(.bin) and /get_transaction_pool_stats instead.
/stop_daemon legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/get_net_stats legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/set_limit legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/out_peers legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/in_peers legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/update legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
/pop_blocks legacy DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
get_connections json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
get_bans json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
set_bans json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
banned json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
flush_txpool json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
relay_tx json-rpc DENY n/a n/a n/a 0 Restricted-gated (!m_restricted); cannot be served from a public node. Broadcast is available via /send_raw_transaction.
sync_info json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
prune_blockchain json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
get_coinbase_tx_sum json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
get_alternate_chains json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
flush_cache json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
get_block_template json-rpc DENY n/a n/a n/a 0 Mining/admin; denied at the edge (403 / -32601).
getblocktemplate json-rpc DENY n/a n/a n/a 0 Alias of get_block_template (denied).
get_miner_data json-rpc DENY n/a n/a n/a 0 Mining/admin; denied at the edge (403 / -32601).
calc_pow json-rpc DENY n/a n/a n/a 0 Denied at the edge (403 / -32601); nodes also run --restricted-rpc as defence in depth.
add_aux_pow json-rpc DENY n/a n/a n/a 0 Mining/admin; denied at the edge (403 / -32601).
submit_block json-rpc DENY n/a n/a n/a 0 Mining/admin; denied at the edge (403 / -32601).
submitblock json-rpc DENY n/a n/a n/a 0 Alias of submit_block (denied).
generateblocks json-rpc DENY n/a n/a n/a 0 Mining/admin; denied at the edge (403 / -32601).