Public Keys

All Mycelia Signal signing keys in one place. Use these to verify attestation signatures.

Always verify keys from the source

For maximum security, verify the public key in each attestation response against your expected key. L402 responses include the secp256k1 key in the pubkey field of every response. x402 responses include the Ed25519 key. Do not trust keys from documentation alone.

Signing Keys

ProtocolSchemeFormatUsed ForFetch From
L402secp256k1 ECDSACompressed hex (33 bytes)All 63 endpoints via Lightningpubkey field in every L402 response
x402Ed25519Hex (32 bytes)All 63 endpoints via USDC on Basepubkey field in every x402 response
DLCSchnorr (BIP-340)Compressed hex (33 bytes)DLC attestations (pending)GET /dlc/oracle/pubkey

Current Public Keys

NodeProtocolPublic Key
US GCL402 (secp256k1)03c1955b8c543494c4ecd86d167105bcc7ca9a91b8e06cb9d6601f2f55a89abfbf
Asia GCL402 (secp256k1)02b1377c30c7dcfcba428cf299c18782856a12eb4fab32b87081460f4ba2deab73
US GCx402 (Ed25519)f4f0e52b5f7b54831f965632bf1ebf72769beda4c4e3d36a593f7729ec812615
Asia GCx402 (Ed25519)7ab07fbe7d08cd16823e5eb0db0e21f3f38e9366d5fd00d14e95df0fb9b51a1a

Fetching Keys Programmatically

bash — x402 info + Ed25519 pubkey
curl -s https://api.myceliasignal.com/sho/info | jq '.pubkey,.signing_scheme,.payment_network'

The /sho/info endpoint returns the full x402 configuration including Ed25519 pubkey, all endpoint prices, payment address, and facilitator URL. The pubkey field in every paid response also identifies which node signed it.

bash — full x402 info
curl -s https://api.myceliasignal.com/sho/info
bash — secp256k1 key (L402) — from any paid L402 response
# The secp256k1 public key is in the "pubkey" field of every L402 attestation.
# Each GC node uses its own per-instance keypair.
curl -s http://localhost:8402/internal/sign/oracle/price/btc/usd | jq -r '.pubkey'
bash — Schnorr key (DLC)
curl -s https://api.myceliasignal.com/dlc/oracle/pubkey | jq -r '.oracle_pubkey'

Key Properties

Propertysecp256k1 (L402)Ed25519 (x402)Schnorr (DLC)
Key size33 bytes (compressed)32 bytes32 bytes (x-only)
EncodingHex stringHex stringHex string
Per-instanceYes — each GC node has its own keypairYes — each GC node has its own keypairYes
Key storageFile-based (600 permissions)File-based (600 permissions)File-based (600 permissions)
Rotation policyNo scheduled rotationNo scheduled rotationNo scheduled rotation
Per-instance key architecture

Each GC node (US, Asia) has its own secp256k1 keypair for L402 signing and its own Ed25519 keypair for x402 signing. This is per-instance key architecture recommended by the Bitcoin Oracle Working Group. The pubkey field in each response identifies which node produced the attestation.