Kusama · Authentication Profile

Kusama Authentication

Authentication

Kusama declares 0 security scheme(s) across its OpenAPI definitions.

CompanyCryptoBlockchainWeb3PolkadotSubstrateJSON-RPCBlockchain DataStakingGovernance
Methods: Schemes: 0 OAuth flows: API key in:

Security Schemes

Source

Authentication Profile

Raw ↑
generated: '2026-07-19'
method: searched
source: openapi/kusama-sidecar-openapi.yaml (no components.securitySchemes), live unauthenticated probes
  of https://kusama-rpc.polkadot.io/ and https://kusama-public-sidecar.parity-chains.parity.io/ on 2026-07-19
summary: >-
  Kusama has no HTTP authentication layer. Both the JSON-RPC endpoint and the Sidecar REST endpoint answered
  live probes with no credential of any kind. This is not an omission — it is the design of a public
  permissionless chain: all state is world-readable, and write authority is proven by cryptographic
  signature over the transaction payload rather than by an API credential presented to a server.
http_authentication:
  schemes: []
  openapi_security_schemes: none declared in the 119-operation Sidecar specification
  api_keys: false
  oauth2: false
  openid_connect: false
  mutual_tls: false
  basic_auth: false
  bearer_tokens: false
  registration_required: false
  rate_limit_identity: 'None. There is no account, tenant, or key to attribute requests to; public
    endpoints are best-effort and may throttle by IP at the infrastructure layer without documenting it.'
transaction_authorization:
  model: cryptographic signature over a SCALE-encoded extrinsic, verified on-chain
  description: >-
    Authority to change state is carried by the extrinsic itself, not by the transport. A signed extrinsic
    binds the caller's public key, the call data, the account nonce, a mortality era, the tip, and the
    runtime spec_version/transaction_version, then is signed with the account's private key. The node
    accepts it from anyone; the runtime validates the signature and the nonce.
  signature_schemes:
  - sr25519
  - ed25519
  - ecdsa
  address_format:
    standard: SS58
    kusama_prefix: 2
    source: system_properties on https://kusama-rpc.polkadot.io/ (probed 2026-07-19)
  key_custody: >-
    Keys are held entirely by the caller — in a browser extension, hardware wallet, or a keyring created
    by @polkadot/keyring / subxt. No key material is ever transmitted to an RPC endpoint.
  submission_methods:
  - method: author_submitExtrinsic
    transport: JSON-RPC
    description: Submit a signed extrinsic, returns its hash.
  - method: author_submitAndWatchExtrinsic
    transport: JSON-RPC over WebSocket
    description: Submit and subscribe to inclusion/finalization status updates.
  - method: transaction_v1_broadcast
    transport: JSON-RPC
    description: Spec-versioned broadcast from the new JSON-RPC interface spec.
  - method: transactionWatch_v1_submitAndWatch
    transport: JSON-RPC over WebSocket
    description: Spec-versioned submit-and-watch.
  - method: POST /transaction
    transport: Sidecar REST
    description: Submit a signed, hex-encoded extrinsic over HTTP.
  delegation:
    mechanism: proxy accounts and multisig, enforced on-chain by the runtime
    description: >-
      Kusama's closest analogue to scoped/delegated credentials is the proxy pallet — an account can
      authorize another account to dispatch a restricted class of calls on its behalf (e.g. Staking,
      Governance, NonTransfer), with an optional announcement delay. Multisig accounts require m-of-n
      signatures. Both are chain-level authorization primitives, not API scopes.
    inspect_via: GET /accounts/{accountId}/proxy-info (Sidecar)
  hardware_wallets_supported: true
  offline_signing:
    supported: true
    metadata_hash_extension: CheckMetadataHash (RFC-0078 merkleized metadata)
    helper_endpoint: POST /transaction/metadata-blob (Sidecar, added v20.14.0) returns the minimal metadata
      blob and metadata hash an offline signer needs to decode and check a payload.
oauth_scopes:
  applicable: false
  reason: No OAuth2 or OpenID Connect surface exists, so scopes/ is intentionally absent from this repo.
operator_notes:
  self_hosted_auth: >-
    Operators who run their own node or sidecar are expected to place their own authentication, TLS
    termination, and rate limiting in front of it. The sidecar binds to 127.0.0.1:8080 by default
    (SAS_EXPRESS_BIND_HOST / SAS_EXPRESS_PORT) precisely because it ships with no auth of its own.
  source: https://github.com/paritytech/substrate-api-sidecar/blob/master/README.md