Live share events, gateway metrics, reason code analytics, and policy state. Real-time insights into your SV2 deployment performance and health.
Access live template verdicts and rejection analytics.
Submit your info for admin review. You'll receive an email when approved.
Templates are evaluated against dynamic fee thresholds based on current mempool conditions.
ReserveGrid OS sits between the Bitcoin node and the pool, verifying every block template against operator-defined policy.
Memory-safe systems language with zero-cost abstractions. No garbage collector, no runtime overhead, no undefined behavior.
Async runtime for concurrent TCP and HTTP handling. Non-blocking I/O across all connections with minimal resource usage.
Type-safe HTTP framework built on hyper and tower. Compile-time route validation with ergonomic extractors.
Native getblocktemplate integration. NDJSON wire protocol for template proposals and verdicts over TCP.
Every rejection carries a canonical, machine-readable reason_code. These codes are stable across protocol, verifier, exports, and documentation.
| reason_code | Category | Description |
|---|---|---|
| protocol_version_mismatch | Protocol | Template protocol version does not match the version required by policy. |
| invalid_prev_hash | Protocol | Previous block hash contains non-hexadecimal characters. |
| prev_hash_len_mismatch | Protocol | Previous block hash length does not match required_prevhash_len. |
| coinbase_value_zero_rejected | Policy | Coinbase value is zero and reject_coinbase_zero flag is enabled. |
| empty_template_rejected | Policy | Template has zero transactions and reject_empty_templates flag is enabled. |
| tx_count_exceeded | Policy | Transaction count exceeds max_tx_count policy limit. |
| total_fees_below_minimum | Fee | Total fees in the template fall below min_total_fees threshold. |
| avg_fee_below_minimum | Fee | Average fee per transaction is below the tier-specific minimum threshold. |
| policy_load_error | System | Policy configuration could not be loaded (lock poisoned or unavailable). |
| mempool_backend_unavailable | System | Mempool data fetch failed; tier selection fell back to configured default. |
| internal_error | System | Unexpected handler failure during template evaluation. |
| weight_ratio_exceeded | Safety | Template weight as a fraction of MAX_BLOCK_WEIGHT (4,000,000 WU) exceeds the configured max_weight_ratio threshold. |
| template_stale | Safety | Template age exceeds max_template_age_ms, indicating the template may be based on outdated chain state. |
| sigops_budget_warning | Safety | Total sigops in the template exceed the configured warn_sigops_ratio of MAX_BLOCK_SIGOPS (80,000). Observe-only by default. |
| coinbase_sigops_abnormal | Safety | Coinbase transaction sigops exceed warn_coinbase_sigops_max, which may indicate an unusual or adversarial coinbase. Observe-only by default. |
Bitcoin node produces a block template. Template Manager packages it as a TemplatePropose with block height, fees, and tx count.
Pool Verifier checks the template against policy.toml rules in sequence: protocol version, prev hash, fees, tx limits, tier thresholds, and consensus safety checks (weight ratio, template staleness, sigops budget).
A TemplateVerdict is returned with accepted/rejected status, canonical reason_code, human-readable detail, and policy context.
Every verdict is written to disk (NDJSON), kept in memory (last 1000), and exposed via HTTP for this dashboard to display.