Services & URIs

Explorer, RPC, WebSocket, faucet, downloads, snapshots, torrent, bootnode, and NTP endpoints.

Public ROKO services

Use the values in `network-manifest.json` as the machine-readable source of truth. This page explains how to use them.

Service catalog

NamePurposeProtocol
`explorer.roko.network`blocks, transactions, tokens, validatorsHTTPS
`rpc.roko.network`safe chain and temporal queriesJSON-RPC over HTTPS/WSS
`faucet.roko.network`testnet ROKO for user-controlled walletsHTTPS
`downloads.roko.network`native and offline-container releasesHTTPS
`snapshots.roko.network`verified full/archive bootstrap dataHTTPS and BitTorrent
`downloads.roko.network/torrent`public artifact seeding guideHTTPS and BitTorrent
`boot.roko.network`initial peer discoveryROKO libp2p multiaddress over TCP
`time.roko.network`public UTC time sourceNTPv4 over UDP/123

The DNS names deliberately hide implementation details. Do not depend on a resolved address remaining fixed.

Explorer, faucet, and artifacts

The faucet requires a wallet-signed proof of address control; the signature does not authorize a transaction or fee.

  • If your wallet is not configured yet, follow

Wallets and faucet before claiming.

  • Install from the current checksum-verified release at

downloads.roko.network.

  • Bootstrap from a verified normal or archive snapshot at

snapshots.roko.network.

torrent and magnet distribution guide.

  • To help other operators download artifacts, follow

BitTorrent seeding. Seeders only share public release and snapshot files; they do not need validator keys or source access.

The explorer-compatible Ethereum JSON-RPC endpoint is `https://explorer.roko.network/api/eth-rpc`. Prefer `https://rpc.roko.network` for native Substrate and temporal methods.

Bootnode

A hostname is not a complete libp2p address. A bootnode multiaddress also contains its transport, port, and stable peer ID:

/dns4/boot.roko.network/tcp/30333/ws/p2p/12D3KooWKSBZRtSiGKo8ueJtazCHT89LaBi6ZAtzgbeznf4NtVGj

Pass that entire value to `--bootnodes`. Allow outbound TCP/30333. A node that will accept inbound peers must also allow its configured P2P listen port and advertise a reachable public multiaddress.

This is libp2p traffic, not HTTPS JSON-RPC. An HTTP reverse proxy or ordinary Cloudflare Tunnel is not automatically a libp2p transport.

HTTPS JSON-RPC

Query basic health:

curl --fail --silent --show-error https://rpc.roko.network \
  -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"system_health","params":[]}'

Verify chain identity:

curl --fail --silent --show-error https://rpc.roko.network \
  -H 'content-type: application/json' \
  --data '[
    {"jsonrpc":"2.0","id":1,"method":"system_chain","params":[]},
    {"jsonrpc":"2.0","id":2,"method":"chain_getBlockHash","params":[0]},
    {"jsonrpc":"2.0","id":3,"method":"eth_chainId","params":[]}
  ]'

Compare the genesis hash and EVM chain ID to the manifest. A DNS name and TLS certificate are not enough to establish that an endpoint serves the intended chain.

Query mesh time:

curl --fail --silent --show-error https://rpc.roko.network \
  -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"temporal_getConsensusTime","params":[]}'

The public endpoint is for safe methods. Never send a seed, secret URI, keystore operation, authoring/admin request, or unsigned transaction containing private material to it. Method discovery is not proof that a method is authorized.

Use timeouts, exponential backoff, and more than one provider for a production application. Run your own full/archive node for high volume, privacy, historical-state guarantees, or independence from public rate limits.

WebSocket

Use `wss://rpc.roko.network` for subscriptions. A Polkadot.js example:

import { ApiPromise, WsProvider } from "@polkadot/api";

const api = await ApiPromise.create({
  provider: new WsProvider("wss://rpc.roko.network"),
});

const unsubscribe = await api.rpc.chain.subscribeFinalizedHeads((header) => {
  console.log(header.number.toString(), header.hash.toHex());
});

process.on("SIGINT", async () => {
  unsubscribe();
  await api.disconnect();
});

Applications should act on finalized heads when a reorganization would be unsafe.

Public NTP

Use ROKO as one of several independent, permitted sources:

# /etc/chrony/sources.d/roko.sources
server time.roko.network iburst
pool pool.ntp.org iburst maxsources 3

Then reload and inspect:

sudo chronyc reload sources
chronyc sources -v
chronyc tracking

Do not add `nts` to the ROKO line until the manifest says `ntsVerified: true`. Do not mix leap-smeared and non-smeared sources. Respect server rate limiting and Kiss-o'-Death responses; aggressive polling harms the public service.

NTP transports time to a host. It does not prove an on-chain event timestamp; use temporal RPC for that.

Reporting a problem

Report the problem through the operator form, the ROKO Telegram, or the ROKO Discord. Include:

  • the public DNS name and protocol;
  • UTC observation time;
  • client software/version;
  • sanitized error and retry behavior; and
  • the manifest genesis hash you expected.

Remove local addresses, peer lists, credentials, headers/tokens, and unrelated logs.