Documentation Index
Fetch the complete documentation index at: https://docs.kynesys.xyz/llms.txt
Use this file to discover all available pages before exploring further.
Protected Endpoints
A small set of RPC methods are reserved for the node operator. They are gated on the caller’s authenticated public key matching the node’s configured SUDO key. Any other sender is rejected before the handler runs.Authorization
Protected methods are dispatched through the samePOST / RPC entry point as
every other method, but are checked against an allow-list before execution:
method is in this set, the dispatcher compares the
authenticated sender (the request’s recovered public key) against
getSharedState.SUDO_PUBKEY. If they do not match, the call returns immediately:
The
401 is returned inside the RPC response body (the HTTP status is still
200). Clients must inspect result, not the HTTP code, to detect an
authorization failure on these methods.Configuring the SUDO key
SUDO_PUBKEY is sourced from the core.sudoPubkey config key, which defaults to
null. While it is unset, no sender can satisfy the check, so every protected
method is effectively closed. Set it to the operator’s public key (hex) to
enable these methods.
| Config key | Default | Description |
|---|---|---|
core.sudoPubkey | null | Public key authorized to call protected RPC methods. |
Methods
rate-limit/unblock
Lifts rate-limit blocks on one or more client IPs.
- Params: a JSON array of IP address strings (the
paramsarray itself). A non-array input returnsresult: 400with"Invalid input. Expected an array of strings." - Returns:
result: 200withresponse.messageand a per-IPresponse.resultssummary.
getCampaignData
Returns the current incentive-campaign data from the GCR.
- Params: none.
- Returns:
result: 200with the campaign data inresponse.
awardPoints
Awards incentive points to a batch of accounts. Accounts may be described as
web2 social handles, cross-chain (XM) addresses, or native Demos addresses.
- Params:
params[0]must be an object with amessagefield holding an array of account descriptors. A missingmessagereturnsresult: 400with{ "error": "Invalid params: missing message" }. - Returns:
result: 200withresponse.awardedAccounts.
points field plus one of the following shapes:
| Descriptor | Fields | Example |
|---|---|---|
| Web2 | username, platform (twitter | discord | telegram | github) | { "username": "alice", "platform": "twitter", "points": 100 } |
| Cross-chain (XM) | chain (e.g. eth.mainnet), address | { "chain": "eth.mainnet", "address": "0xabc...", "points": 50 } |
| Native | address | { "address": "0xdef...", "points": 25 } |