Access Control

XGR Chain — Access Control & Permission Boundaries

Document ID: XGRCHAIN-ACCESS-CONTROL
Last updated: 2026-05-24
Audience: Node operators, validator operators, RPC operators, protocol developers, auditors
Release baseline: xgr-node release tag v2.0.5
Mainnet genesis source: xgr-network/XGR branch main, path genesis/mainnet/genesis.json
Node implementation: xgr-network/xgr-node
Scope: Public XGR Chain access-control and permission boundaries


1. Scope

This document explains access-control and permission boundaries relevant to XGR Chain.

It covers:

  • infrastructure access boundaries
  • P2P access boundaries
  • node and RPC exposure
  • JSON-RPC CORS boundary
  • debug and txpool boundary
  • validator key isolation
  • transaction validity boundary
  • txpool admission boundary
  • chain-parameter address-list fields
  • validator authority boundary
  • contract-level permission boundary
  • operational security boundaries

This document does not define:

  • XDaLa permit logic
  • XDaLa grant logic
  • XRC standard behavior
  • UI behavior
  • application-specific contract roles

Those are outside this public chain-level access-control document.


2. Permission layers

XGR Chain has multiple permission layers.

They must not be collapsed into one concept.

Layer Purpose Controlled by
Infrastructure access Firewall, reverse proxy, TLS, rate limits, host access Operator
P2P access Node connectivity and peer discovery libp2p configuration / network topology
Node/RPC exposure Who can call local node interfaces Operator
Transaction validity Whether a transaction is valid for execution Protocol rules
Txpool admission Whether a valid transaction enters one node's local txpool Node policy and protocol checks
Validator authority Who participates in consensus Consensus and staking state
Contract permissions Contract-specific authorization Smart contract logic
Chain-parameter address lists Optional allow/block list configuration fields Published chain configuration if configured

Important distinctions:

  • a peer connection is not transaction authority
  • a valid transaction is not necessarily txpool-accepted
  • txpool acceptance is not consensus finality
  • staking active state is not always current consensus participation
  • validator key possession is not enough if validator is not in the active validator set
  • schema availability is not network activation

3. Infrastructure boundary

Infrastructure controls are operated outside the chain protocol.

They include:

  • cloud firewall rules
  • host firewall rules
  • SSH access policy
  • reverse proxies
  • TLS termination
  • HTTP rate limits
  • WebSocket rate limits
  • RPC namespace filtering
  • monitoring-network isolation
  • VPN/private-network access
  • system user permissions
  • file permissions
  • backup access control

These controls decide who can reach a node or service.

They do not change chain rules.

Recommended baseline:

Component Recommended exposure
Validator SSH Admin IPs only
Validator JSON-RPC Localhost or private management network
Validator gRPC Localhost/private only
Validator metrics Monitoring network only
Validator P2P Reachable according to validator topology
Public RPC HTTP Reverse proxy / gateway
Public RPC WebSocket Reverse proxy / gateway with limits
Debug RPC Internal only
Txpool diagnostics Internal or controlled
Metrics Internal / monitoring network

Operator security must not rely on chain-level logic.

A public HTTP endpoint is public even if the chain has validator permissions.


4. P2P boundary

The P2P layer controls node connectivity.

It does not define application authorization.

P2P concepts:

Concept Meaning
Network key Determines libp2p peer identity
Peer ID Public identity derived from network key
Bootnode Helps peers discover each other
Peer connection Active network link between nodes
Discovery Mechanism for finding peers
P2P topic PubSub channel for node messages

Important boundaries:

  • bootnodes help discovery
  • bootnodes do not grant validator authority
  • peer connection does not grant consensus authority
  • network key does not sign transactions
  • validator key is separate from network key
  • public full nodes may connect without being validators
  • P2P health affects propagation and consensus reliability

A node can be connected to peers and still have no validator authority.

A validator can have validator authority but fail operationally if P2P connectivity is broken.


5. Node/RPC exposure boundary

Node RPC exposure is operator-controlled.

The node may expose several RPC surfaces.

Surface Purpose Recommended exposure
eth_* Ethereum-compatible wallet/app/explorer RPC plus public XGR PoS methods Public only with limits
net_* Network metadata Public only with limits
web3_* Client/version/helper methods Public only with limits
txpool_* Transaction pool inspection Internal / controlled
debug_* Execution tracing Internal only
gRPC operator services Node management and diagnostics Internal only
Metrics Monitoring Internal only

Public XGR PoS methods under eth_*:

eth_getPosValidatorsOverview
eth_getPosValidatorDelegators

Public RPC nodes should be separated from validator nodes.

Validator nodes should not be exposed as public RPC infrastructure.

Recommended public RPC controls:

  • reverse proxy
  • TLS
  • rate limits
  • batch limits
  • block-range limits
  • WebSocket limits
  • namespace restrictions where available
  • abuse monitoring
  • resource monitoring

Recommended validator controls:

  • no public debug RPC
  • no public gRPC
  • no public txpool diagnostics
  • no validator key material on public RPC nodes
  • local/private JSON-RPC only
  • metrics restricted to monitoring systems

6. JSON-RPC CORS boundary

CORS is a browser access-control mechanism.

It does not protect a node from direct non-browser clients.

The node supports CORS allow-origin settings through runtime configuration.

Relevant configuration fields:

cors_allowed_origins
headers.access_control_allow_origins

Operational meaning:

Setting Effect
CORS origin allowed Browser clients from that origin may call the RPC endpoint
CORS origin denied Browser clients from that origin are blocked by browser policy
No firewall/rate limit Non-browser clients can still call the endpoint if reachable

Do not treat CORS as RPC security.

Public RPC endpoints still require:

  • network-level exposure control
  • reverse proxy rules
  • rate limits
  • method restrictions where applicable
  • monitoring and abuse handling

7. Debug boundary

Debug methods are expensive and sensitive.

They can reveal detailed execution behavior and consume significant CPU/memory.

Examples:

debug_traceTransaction
debug_traceCall
debug_traceBlockByNumber
debug_traceBlockByHash
debug_traceBlock

Recommended policy:

Environment Debug exposure
Public RPC Disabled or blocked
Internal tracing node Allowed for trusted operators
Validator node Avoid heavy tracing; internal only if needed
Development node Allowed as needed

Relevant runtime control:

--concurrent-requests-debug

Default:

32

Debug tracing should be isolated from public RPC workloads and validator-critical operation.


8. Txpool boundary

The txpool is local node state.

It is not consensus state.

A transaction can be:

  • validly signed but rejected by a local txpool
  • accepted by one node but not yet seen by another
  • queued because of nonce ordering
  • replaced by a higher-priced transaction
  • gossiped but rejected by peers
  • included without appearing in every public txpool view

Txpool admission checks include:

  • signature recovery
  • chain ID
  • nonce
  • account balance
  • intrinsic gas
  • block gas limit
  • transaction type support
  • fork activation
  • effective gas price
  • node-level price limit
  • replacement price rules
  • txpool capacity
  • per-account queue limits

Txpool RPC methods should be considered operator/infrastructure APIs, not public application APIs.

Recommended policy:

Method group Exposure
txpool_status Internal or controlled
txpool_content Internal only or heavily restricted
txpool_inspect Internal or controlled

9. Transaction validity boundary

Transaction validity is protocol-level.

A transaction must satisfy execution and signing rules.

Important validation dimensions:

Check Meaning
Chain ID Transaction belongs to XGR Chain signing domain
Signature Sender can be recovered and signature is valid
Nonce Sender nonce is valid
Balance Sender can pay value and gas
Intrinsic gas Transaction gas covers intrinsic cost
Block gas limit Transaction gas does not exceed block gas limit
Transaction type Type is supported by active fork configuration
Fee fields Fee fields are valid for the transaction type
Base fee Effective price covers base-fee rules where applicable
Contract creation rules Initcode rules apply where active
Access-list rules Access-list rules apply where active

This is not an allowlist system.

It is normal EVM-compatible transaction validation.


10. Chain-parameter address-list fields

The public node chain-parameter schema includes address-list configuration fields.

Supported schema fields:

contractDeployerAllowList
contractDeployerBlockList
transactionsAllowList
transactionsBlockList
bridgeAllowList
bridgeBlockList

Each address-list config can contain:

adminAddresses
enabledAddresses

The published mainnet genesis does not configure these address-list fields.

That means the current published XGR Chain configuration does not activate a chain-level contract-deployer or transaction allow/block list through genesis.

If a future published configuration uses these fields, operational behavior must be documented against the active release that activates them.

Do not infer active chain-level allowlist behavior merely because schema fields exist in code.

Schema availability is not network activation.


11. Burn-contract fields are not permission fields

The chain parameter schema includes:

burnContract
burnContractDestinationAddress

Published mainnet values:

burnContract = null
burnContractDestinationAddress = 0x0000000000000000000000000000000000000000

These fields are fee/gas configuration fields, not access-control fields.

They do not grant transaction permission, validator authority, RPC authority or contract execution rights.


12. Validator authority boundary

Validator authority is determined by the active consensus and validator-set rules.

For XGR mainnet after block 5446500, validator participation is derived through delegated PoS and IBFT.

Relevant concepts:

  • validator key material
  • validator BLS public key
  • staking contract validator state
  • validator self-stake
  • delegated active stake
  • total active current stake
  • validator active flag
  • epoch-boundary activation
  • epoch-boundary deactivation
  • current consensus header validator set
  • effective voting power
  • proposer uptime weighting
  • reward eligibility
  • slashing state

Important distinction:

Field / concept Meaning
Peer connection Node is connected on P2P
Validator key Node can sign consensus messages for that validator
Validator-set membership Validator is part of active consensus set
Staking active Validator is active in staking contract state
Currently validating Validator is in current consensus header validator set
Delegated stake Stake delegated to validator
Voting power Consensus weight where stake-weighted PoS is active

These concepts must not be collapsed into one boolean.

A dashboard should not infer current consensus participation from staking contract state alone when a consensus-derived field is available.


13. Validator key isolation

Validator key material is a high-value security boundary.

Rules:

  • do not store validator keys on public RPC nodes
  • do not expose validator machines as public RPC infrastructure
  • restrict SSH access
  • use a dedicated service user
  • restrict filesystem permissions
  • back up validator keys securely
  • avoid interactive shell access where possible
  • monitor signer errors
  • monitor unexpected validator restarts
  • separate validator infrastructure from indexing/tracing workloads

Validator key compromise is not an RPC configuration issue.

It is a consensus/security incident.


14. Contract-level permissions

Smart contracts can implement their own permissions.

Common patterns:

  • owner-only functions
  • role checks
  • executor lists
  • pause authority
  • upgrade authority
  • application-specific access control

Contract-level permissions are enforced by contract logic.

They are separate from:

  • P2P access
  • RPC exposure
  • txpool admission
  • validator set membership
  • chain-parameter address-list fields unless the contract explicitly uses them

This chain-level document does not define application-specific contract roles.


15. Public RPC security baseline

Public RPC endpoints should be operated behind infrastructure controls.

Recommended controls:

  • TLS reverse proxy
  • request rate limits
  • JSON-RPC batch limits
  • block-range limits
  • WebSocket read limits
  • debug namespace blocked
  • txpool diagnostics restricted
  • CORS explicitly configured
  • abuse monitoring
  • health monitoring
  • node separation from validators

Relevant default runtime limits:

Setting Default
JSON-RPC batch request limit 20
JSON-RPC block range limit 1000
concurrent debug request limit 32
WebSocket read limit 8192 bytes

16. Validator RPC security baseline

Validator nodes should expose only what operators need.

Recommended exposure:

Interface Exposure
P2P Public/allowlisted according to topology
JSON-RPC Localhost/private management network
gRPC Localhost/private management network
Metrics Monitoring network
Debug Avoid; internal only if needed
SSH Admin IPs only

Validator nodes should not be public RPC nodes.

A production validator should not carry public application traffic.


17. Data-directory boundary

The node data directory contains local chain data and secrets depending on node role.

Rules:

  • do not share one data directory between multiple running nodes
  • do not run validator and RPC workloads from the same validator data directory
  • do not copy validator data directories to public RPC nodes
  • keep validator data directory permissions restrictive
  • back up validator key material securely
  • treat accidental key exposure as a security incident

Recommended permissions:

sudo chown -R xgr:xgr /var/lib/xgr/validator
sudo chmod -R go-rwx /var/lib/xgr/validator

18. Permission-boundary checklist

For public full/RPC nodes:

  • --seal=false
  • no validator key material
  • JSON-RPC behind proxy
  • debug blocked
  • txpool diagnostics restricted
  • batch/range limits configured
  • public methods monitored
  • data directory isolated

For validator nodes:

  • --seal=true
  • validator key material present
  • JSON-RPC local/private only
  • gRPC local/private only
  • P2P reachable
  • metrics restricted
  • no public app traffic
  • filesystem permissions restricted
  • key backups encrypted
  • PoS status monitored

For bootnodes:

  • stable network key
  • stable public address
  • P2P reachable
  • no validator key required
  • no public RPC unless intentionally configured
  • monitored peer connectivity

19. Summary

Boundary Key rule
Infrastructure Operator-controlled; does not change chain rules
P2P Connectivity only; no validator authority
Bootnodes Discovery only; no consensus rights
JSON-RPC Operator exposure policy; protect public endpoints
CORS Browser control only; not RPC security
Debug Internal only
Txpool Local node state; not consensus state
Transaction validity Protocol-level EVM-compatible validation
Address-list schema fields Not active on mainnet unless configured
Validator authority Derived from consensus and staking state
Validator keys Must not be on public RPC nodes
Contract permissions Contract-defined, not P2P/RPC-defined