Arcon Docs

Elysium Mainnet

Network settings, USDC, and a complete x402 service integration on Kinetiq Elysium.

Arcon's web app and these integration guides use Kinetiq Elysium Mainnet, the HyperEVM L2. Use the network and token below for both your service and payer policy.

Network settings

SettingValue
NetworkElysium Mainnet
Chain ID99901
x402 networkeip155:99901
RPChttps://rpc.elysium.kinetiq.xyz
Gas currencyHYPE, 18 decimals
Payment assetUSDC, 6 decimals
USDC contract0xb47c4C8F73F009CC0C0d3f92B388d13E293F0B65
Facilitatorhttps://facilitator.arcon.network
Payment schemex402 v2 exact, with assetTransferMethod: "permit2"
Gas sponsorshipeip2612GasSponsoring
USDC signing domainname: "USDC", version: "1"

This USDC is bridged from HyperEVM USDC; it is not Circle-issued native USDC on Elysium. Always match the full token address. The payer needs USDC on Elysium; a balance on HyperEVM or another network cannot pay an Elysium request.

Receipts link to the community Elysium explorer. Transaction links use https://scan.elysp.com/#/tx/<transaction-hash>.

Payment authorizations

This token supports EIP-2612 permit. The SDK uses it with Permit2 and the standard x402 exact proxy to settle a payment. An EIP-2612 permit authorizes an allowance; the separate Permit2 payment signature binds the payment terms.

The first payment may need both signatures. With an existing sufficient allowance, the SDK can skip the token permit. Arcon's facilitator submits the settlement and pays the HYPE network fee, so the payer does not need HYPE for this sponsored payment flow.

These contracts were verified on Elysium Mainnet on November 9, 2026:

ContractAddress
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3
x402ExactPermit2Proxy0x402085c248EeA27D92E8b30b2C58ed07f9E20001

The proxy is already deployed. Services using Arcon's facilitator do not need to deploy another settlement contract.

Accept payments

This example exposes a paid JSON resource with Hono and the x402 SDK version used by Arcon. It specifies the asset and atomic amount explicitly, so it does not depend on a default-token lookup for Elysium.

bun add hono @x402/hono@2.19.0 @x402/core@2.19.0 @x402/evm@2.19.0

Save this as server.ts. Set PAY_TO to your Elysium receiving address and SERVICE_ORIGIN to the origin clients will request, then run bun server.ts. The example listens on port 3000.

import { Hono } from "hono";
import { HTTPFacilitatorClient, x402ResourceServer } from "@x402/core/server";
import { ExactEvmScheme } from "@x402/evm/exact/server";
import { paymentMiddleware } from "@x402/hono";

const payTo = process.env.PAY_TO;
const serviceOrigin = process.env.SERVICE_ORIGIN;
if (!payTo || !/^0x[a-fA-F0-9]{40}$/.test(payTo) || !serviceOrigin) {
  throw new Error("Set PAY_TO and SERVICE_ORIGIN before starting the service.");
}
const resourceUrl = new URL("/robot/status", serviceOrigin).href;

const facilitator = new HTTPFacilitatorClient({
  url: "https://facilitator.arcon.network"
});
const server = new x402ResourceServer(facilitator)
  .register("eip155:99901", new ExactEvmScheme());

const app = new Hono();
app.use(paymentMiddleware({
  "GET /robot/status": {
    accepts: {
      scheme: "exact",
      network: "eip155:99901",
      payTo,
      price: {
        amount: "2400000", // 2.40 USDC (6 decimals)
        asset: "0xb47c4C8F73F009CC0C0d3f92B388d13E293F0B65",
        extra: {
          assetTransferMethod: "permit2",
          name: "USDC",
          version: "1"
        }
      },
      maxTimeoutSeconds: 300
    },
    resource: resourceUrl,
    description: "Robot status report",
    mimeType: "application/json",
    extensions: {
      eip2612GasSponsoring: { info: { version: "1" } }
    }
  }
}, server));

app.get("/robot/status", (c) => c.json({ status: "ready" }));

export default { port: 3000, fetch: app.fetch };

An unpaid request returns HTTP 402 with these Elysium payment requirements. The middleware verifies the signed replay and settles before returning the successful resource response. Hono route handlers run before settlement; keep irreversible actions out of the handler and trigger hardware only from a confirmed settlement workflow with independent device-safety checks.

The price in this service example is 2.40 USDC. If you connect the Robot Pay quickstart, deliberately configure its origin, purpose, recipient, and budget for this resource; the quickstart's 0.50 USDC limit will deny this price.

Check your integration

  • Facilitator capabilities must include x402 v2 exact for eip155:99901 and eip2612GasSponsoring.
  • The unpaid response must use the USDC address and Permit2 settings above.
  • Payers need a signer with contract-read access to the Elysium RPC so the SDK can read token allowances and nonces. See the client quickstart.
  • The payment demo sends 0.001 real USDC on Elysium Mainnet.
  • The Network page requires a separate Elysium payment indexer. Until it is connected, it shows a waiting state instead of another network's activity.

On this page