{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "bitcoin-node-rpc-security",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/bitcoin-node-rpc-security/",
  "collection": "bitcoin",
  "title": "Bitcoin RPC security: why a node API needs restricted access",
  "description": "Understand Bitcoin Core RPC authority, local authentication and remote-access risks without confusing the API with ordinary peer networking.",
  "aliases": [
    "bitcoin core RPC security",
    "bitcoin core RPC security explained"
  ],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T19:29:20.637Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "Bitcoin Core’s RPC interface lets authorized software inspect and control the node and, where available, wallet operations. That can include spending funds, reading private data or changing important behavior. Core’s documentation says not to expose RPC directly to the public internet: authentication is not encrypted transport, and the interface is not hardened for arbitrary internet traffic. Restrict access to trusted software and protected connections.",
    "claimId": "bitcoin-node-rpc-security-quick-answer",
    "sourceIds": [
      "x425-btc-core-rpc"
    ]
  },
  "keyFacts": [
    {
      "label": "Authority",
      "value": "RPC is a control interface, not just public data",
      "sourceIds": [
        "x425-btc-core-rpc"
      ],
      "id": "authority",
      "claimId": "bitcoin-node-rpc-security-fact-authority"
    },
    {
      "label": "Default scope",
      "value": "Local authenticated access",
      "sourceIds": [
        "x425-btc-core-rpc"
      ],
      "id": "default-scope",
      "claimId": "bitcoin-node-rpc-security-fact-default-scope"
    },
    {
      "label": "Transport",
      "value": "Authentication alone does not encrypt RPC traffic",
      "sourceIds": [
        "x425-btc-core-rpc"
      ],
      "id": "transport",
      "claimId": "bitcoin-node-rpc-security-fact-transport"
    }
  ],
  "prerequisites": [
    "bitcoin-nodes-explained",
    "bitcoin-wallets-explained"
  ],
  "sections": [
    {
      "id": "authority",
      "heading": "Know what an API credential can reach",
      "sourceIds": [
        "x425-btc-core-rpc"
      ],
      "paragraphs": [
        "The cited security guidance includes wallet spending, privacy-sensitive reads and changes that can affect verification. An encrypted wallet can add an unlocking condition for particular actions, but that does not make broad RPC access harmless.",
        "With multiple wallets loaded, wallet-specific endpoints matter. A program should target the intended wallet and receive only the access its deployment is designed to provide."
      ]
    },
    {
      "id": "example",
      "heading": "A network fix can accidentally expose control",
      "sourceIds": [
        "x425-btc-core-rpc"
      ],
      "paragraphs": [
        "Consider a local dashboard that cannot reach Core inside a container. Publishing the RPC port on every network interface may make the dashboard work while also exposing the control API beyond the host. Core’s documentation calls out this container-port hazard explicitly.",
        "The correct question is which trusted client needs access and over which protected path. It is not whether any remote machine can now connect."
      ]
    },
    {
      "id": "credentials",
      "heading": "Local access still assumes a trustworthy host",
      "sourceIds": [
        "x425-btc-core-rpc"
      ],
      "paragraphs": [
        "Core normally supports a per-startup authentication cookie readable by the user running it, and documents rpcauth for suitable static credentials. Protect those files and the host account. Another program with sufficient local access can obtain credentials or imitate an RPC service.",
        "Avoid placing credentials in public code, shared screenshots or untrusted diagnostic requests. A remote administration requirement calls for a deliberately secured private connection, not merely a difficult-to-guess password on an exposed endpoint."
      ]
    }
  ],
  "faq": [
    {
      "question": "Is RPC the same as Bitcoin’s peer-to-peer port?",
      "answer": "No. Peer connections exchange Bitcoin network data. RPC lets authorized clients control a particular node and possibly its wallets. The security requirements differ, even though both are network interfaces.",
      "sourceIds": [
        "x425-btc-core-rpc",
        "x425-btc-dev-p2p-network"
      ]
    },
    {
      "question": "Does a strong RPC password make direct public exposure safe?",
      "answer": "No. Core warns that RPC transport is unencrypted and the interface is not hardened for arbitrary internet traffic. Strong credentials do not remove those design limits or the risk of a compromised host.",
      "sourceIds": [
        "x425-btc-core-rpc"
      ]
    }
  ],
  "claims": [
    {
      "id": "bitcoin-node-rpc-security-quick-answer",
      "articleSlug": "bitcoin-node-rpc-security",
      "statement": "Bitcoin Core’s RPC interface lets authorized software inspect and control the node and, where available, wallet operations. That can include spending funds, reading private data or changing important behavior. Core’s documentation says not to expose RPC directly to the public internet: authentication is not encrypted transport, and the interface is not hardened for arbitrary internet traffic. Restrict access to trusted software and protected connections.",
      "sourceIds": [
        "source-84123e4e42fca415"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-84123e4e42fca415",
          "locator": "Introduction; Endpoints; Versioning; Security; RPC consistency guarantees"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "Educational explanation. Product-specific behavior is scoped to the cited documentation, checked 2026-10-02.",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Read Core v29 RPC security section and endpoint design. Cookie/rpcauth, unencrypted authenticated transport, container port exposure and host compromise limits are supported. No broad public RPC exposure is advised."
        ]
      }
    },
    {
      "id": "bitcoin-node-rpc-security-fact-authority",
      "articleSlug": "bitcoin-node-rpc-security",
      "statement": "Authority: RPC is a control interface, not just public data",
      "sourceIds": [
        "source-84123e4e42fca415"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-84123e4e42fca415",
          "locator": "Introduction; Endpoints; Versioning; Security; RPC consistency guarantees"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Read Core v29 RPC security section and endpoint design. Cookie/rpcauth, unencrypted authenticated transport, container port exposure and host compromise limits are supported. No broad public RPC exposure is advised."
        ]
      }
    },
    {
      "id": "bitcoin-node-rpc-security-fact-default-scope",
      "articleSlug": "bitcoin-node-rpc-security",
      "statement": "Default scope: Local authenticated access",
      "sourceIds": [
        "source-84123e4e42fca415"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-84123e4e42fca415",
          "locator": "Introduction; Endpoints; Versioning; Security; RPC consistency guarantees"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Read Core v29 RPC security section and endpoint design. Cookie/rpcauth, unencrypted authenticated transport, container port exposure and host compromise limits are supported. No broad public RPC exposure is advised."
        ]
      }
    },
    {
      "id": "bitcoin-node-rpc-security-fact-transport",
      "articleSlug": "bitcoin-node-rpc-security",
      "statement": "Transport: Authentication alone does not encrypt RPC traffic",
      "sourceIds": [
        "source-84123e4e42fca415"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-84123e4e42fca415",
          "locator": "Introduction; Endpoints; Versioning; Security; RPC consistency guarantees"
        }
      ],
      "scope": {
        "collection": "bitcoin",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T19:29:20.637Z",
        "reviewer": "Independent automated verification — Codex /root/verify_ethereum_100, separate from the Bitcoin drafting agent",
        "notes": [
          "Read Core v29 RPC security section and endpoint design. Cookie/rpcauth, unencrypted authenticated transport, container port exposure and host compromise limits are supported. No broad public RPC exposure is advised."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "x425-btc-core-rpc",
      "label": "JSON-RPC interface",
      "publisher": "Bitcoin Core",
      "url": "https://raw.githubusercontent.com/bitcoin/bitcoin/v29.0/doc/JSON-RPC-interface.md",
      "locator": "Introduction; Endpoints; Versioning; Security; RPC consistency guarantees",
      "note": "Privileged RPC scope, authentication, local access and unencrypted transport limitations.",
      "version": "Bitcoin Core v29.0",
      "checkedAt": "2026-10-02T18:53:55.910Z",
      "contentSha256": "c56badff1616ff19b112ebbc97d600726101ca8e8fa2c91b15b901b96c938930",
      "recordId": "source-84123e4e42fca415"
    },
    {
      "id": "x425-btc-dev-p2p-network",
      "label": "P2P Network",
      "publisher": "Bitcoin developer documentation",
      "url": "https://developer.bitcoin.org/devguide/p2p_network.html",
      "locator": "Peer Discovery; Connecting To Peers; Initial Block Download; Block Broadcasting; Transaction Broadcasting",
      "note": "Peer connections, initial download and block/transaction relay.",
      "version": "Developer guide; historical implementation details require qualification",
      "checkedAt": "2026-10-02T18:53:53.860Z",
      "contentSha256": "9240934092827c46470cd7a2443aa657af262b400e3b86f43cd83e34963e12c7",
      "recordId": "source-37b2d756ababbeec"
    }
  ],
  "related": {
    "articles": [
      "bitcoin-nodes-explained",
      "bitcoin-wallets-explained",
      "bitcoin-node-connection-problems",
      "bitcoin-software-upgrades"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and separate automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Bitcoin RPC security: why a node API needs restricted access.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/bitcoin-node-rpc-security/"
}
