security_review/consensus_spec.json

3566 bytes
{
  "blocks": {
    "accepted_block_versions": [
      1,
      2
    ],
    "current_block_version": 2,
    "hash_rule": "height, created_at, previous_hash, merkle_root, block_txid, and tx_count define the block hash",
    "merkle_rule": "ordered txids are committed through a SHA-256 Merkle root",
    "producer_id": "spacecash-devnet-producer-1"
  },
  "chain_id": "spacecash-devnet-1",
  "fork_choice": {
    "automatic_reorgs": false,
    "diverged_peer_rule": "higher-scoring diverged peers are reported but not imported",
    "id": "spacecash-devnet-append-only-v1",
    "import_safety": [
      "snapshot verification",
      "producer allowlist",
      "append-only check",
      "pre-import backup",
      "post-import audit"
    ],
    "rule": "higher validated height is importable only when the peer extends the local tip exactly"
  },
  "id": "spacecash-devnet-consensus-v1",
  "ledger": {
    "genesis_plan": {
      "hash": "55D62969DFEE8460989A8A36D59F37D78CFB8BAF48DE44BF7B991FE61DFEEC27",
      "id": "spacecash-devnet-genesis-plan-v1",
      "version": 1
    },
    "monetary_policy": {
      "hash": "5C4C51D443B91EF950B0E3FCC2A653F14C650E2316CACF2D93740CE180496B64",
      "id": "spacecash-devnet-monetary-policy-v1",
      "version": 1
    },
    "storage": "SQLite local ledger",
    "supply_invariant": "sum(wallet balances) must equal genesis supply after every audited transaction set",
    "supply_units": 1000000000000000,
    "treasury": "SPACE-TREASURY"
  },
  "mainnet_gaps": [
    "public validator enrollment and rotation",
    "slashing or removal rules",
    "authenticated peer identity and network abuse controls",
    "economic finality or BFT consensus",
    "automatic reorg policy",
    "public testnet evidence",
    "external audit closure"
  ],
  "mode": "local signed devnet",
  "network": {
    "bootstrap_peers": [],
    "peer_discovery": "configured/bootstrap peer gossip only",
    "sync_boundary": "peer HTTP APIs are untrusted until manifest, snapshot, producer policy, and append-only checks pass"
  },
  "node_protocol_version": 1,
  "producer_policy": {
    "default_allowed_producers": [
      "spacecash-devnet-producer-1"
    ],
    "legacy_devnet_compatibility": "legacy v1 blocks are audit-compatible on devnet but block mainnet readiness",
    "rule": "new versioned blocks must be produced by a locally allowed producer id",
    "version": 1
  },
  "scope": "Defines the current reviewable devnet consensus envelope. It is not a public mainnet consensus protocol.",
  "spec_hash": "02FC7BE0A5DDE8D5D95EDA14BD8D1F195BB680D1D853123ABD89F8BBDAF85E5B",
  "transactions": {
    "mempool_rule": "pending spends reserve sender balance before mining",
    "nonce_rule": "settled signed spends and pending mempool entries must be unique per sender nonce",
    "replay_domain": [
      "chain_id",
      "version",
      "action",
      "sender",
      "recipient/product_id",
      "amount",
      "nonce"
    ],
    "signed_payload_version": 1,
    "wallet_auth": "ECDSA P-256 over canonical JSON"
  },
  "validator_checkpoints": {
    "current_status": "checkpoint quorum is local evidence, not full Byzantine-fault-tolerant finality",
    "default_quorum": 1,
    "payload_binding": [
      "chain_id",
      "height",
      "block_hash",
      "chain_digest",
      "validator"
    ],
    "rule": "checkpoint votes must be signed by locally registered validator wallets",
    "version": 1
  },
  "version": 1
}