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, fetch public keys directly from the oracle endpoints rather than copying them from this documentation page. The /sho/info endpoint returns the current Ed25519 key, and /dlc/oracle/pubkey returns the DLC Schnorr key. L402 responses include the secp256k1 key in every attestation.

Signing Keys

ProtocolSchemeFormatUsed ForFetch From
L402secp256k1 ECDSACompressed hex (33 bytes)All 11 oracle pairs via Lightningpubkey field in every L402 response
x402Ed25519Hex (32 bytes)All 11 oracle pairs via USDC on BaseGET /sho/infopubkey field
DLCSchnorr (BIP-340)Compressed hex (33 bytes)Hourly BTC/USD attestationsGET /dlc/oracle/pubkey

Fetching Keys Programmatically

bash — Ed25519 key (x402)
curl -s https://api.myceliasignal.com/sho/info | jq -r '.pubkey'
bash — Schnorr key (DLC)
curl -s https://api.myceliasignal.com/dlc/oracle/pubkey | jq -r '.oracle_pubkey'
bash — secp256k1 key (L402) — extracted from any paid response
# The secp256k1 public key is included in every L402 attestation response
# in the "pubkey" field. All 11 backends use the same key pair.

Key Properties

Propertysecp256k1 (L402)Ed25519 (x402)Schnorr (DLC)
Key size33 bytes (compressed)32 bytes33 bytes (compressed)
EncodingHex stringHex stringHex string
Shared acrossAll 11 oracle backendsx402 proxy (re-signs all pairs)DLC attestor only
Key storageFile-based (600 permissions)File-based (600 permissions)File-based (600 permissions)
Rotation policyNo scheduled rotationNo scheduled rotationNo scheduled rotation
Key architecture

The L402 secp256k1 key and the x402 Ed25519 key are separate key pairs. The L402 key is shared across all 11 oracle backends (signing happens in each backend process). The Ed25519 key is used only by the x402 proxy, which fetches the backend response and re-signs the canonical string with Ed25519. The DLC Schnorr key is a third independent key used exclusively by the attestor.