Public Keys
All Mycelia Signal signing keys in one place. Use these to verify attestation signatures.
Every signed data response carries the signing node's Ed25519 public key in its pubkey field. Check that key against the published keys below before trusting the signature: a response will always verify against a key it supplies itself, so the field only tells you which node to check, not whether to trust it.
Signing Keys
| What is signed | Scheme | Format | Fetch From |
|---|---|---|---|
| Data responses (x402 and L402) | Ed25519 (RFC 8032) over the canonical's UTF-8 bytes | Key: hex, 32 bytes. Signature: hex, 64 bytes | pubkey field in every signed response; GET /keys/ed25519 |
| L402 responses (additional) | BIP-340 Schnorr (secp256k1) over SHA-256 of the canonical's UTF-8 bytes | Key: x-only hex, 32 bytes. Signature: hex, 64 bytes | bip340 object in every signed L402 response; GET /keys/bip340 |
| DLC | Schnorr (BIP-340) | Compressed hex (33 bytes) | GET /dlc/oracle/pubkey |
Both payment rails deliver the same Ed25519-signed data. L402 (Lightning) responses also carry a second attestation over the same canonical, for Bitcoin tooling: a bip340 object with a BIP-340 Schnorr signature. Either signature is sufficient on its own. Lightning itself secures the payment.
Current Public Keys
| Node | Scheme | Public Key | Signs, for example |
|---|---|---|---|
| US node | Ed25519 | f4f0e52b5f7b54831f965632bf1ebf72769beda4c4e3d36a593f7729ec812615 | Price and FX, US and EU macro, commodities, gas, compute, DeFi yield, inference pricing, COT |
| Asia node | Ed25519 | 7ab07fbe7d08cd16823e5eb0db0e21f3f38e9366d5fd00d14e95df0fb9b51a1a | Indices (MSVI, MSXI, MSSI, MSTI), derivatives and funding, perp regimes, synopsis, intelligence, prediction markets, support/resistance, weather, marine, history, economic calendar |
| Price Feed node | Ed25519 | 46ddbac08201ea6b7010338c4ad4a520c627c829d1d06c128f9a8722665c5d6a | The five Direct feeds the Blockstream Liquid price oracle network polls (LBTC, USDT, EURx, DePix, USDC against USD). Not served on api.myceliasignal.com |
| Rail | Scheme | Public Key | Signs |
|---|---|---|---|
| Lightning (L402) | BIP-340 (x-only secp256k1) | 3d436ccaeaea1fc89383b7dcfe0e8d8cce7244bf6426c7cc54f7bcbe5540ec9e | The bip340 attestation on every signed L402 response |
The pubkey field in each response is authoritative for which node signed it; the right-hand column is a guide, not a contract. The Lightning key is separate from both node keys and from the DLC oracle's key.
Fetching Keys Programmatically
curl -s https://api.myceliasignal.com/keys/ed25519
curl -s https://api.myceliasignal.com/keys/bip340
curl -s https://api.myceliasignal.com/sho/info | jq '.pubkey,.signing_scheme,.payment_network'
The /sho/info endpoint returns the full x402 configuration including an Ed25519 pubkey, all endpoint prices, payment address, and facilitator URL.
curl -s https://api.myceliasignal.com/sho/info
curl -s https://api.myceliasignal.com/dlc/oracle/pubkey | jq -r '.oraclePubkey'
Key Properties
| Property | Ed25519 (data responses) | BIP-340 (L402 responses) | Schnorr (DLC) |
|---|---|---|---|
| Key size | 32 bytes | 32 bytes (x-only) | 33 bytes as published (compressed); BIP-340 verifies with the 32-byte x-only form |
| Encoding | Hex string | Hex string | Hex string |
| Per-instance | Yes — each node has its own keypair | One key, on the node that runs the Lightning rail | Yes |
| Key storage | File-based (600 permissions) | File-based (600 permissions) | File-based (600 permissions) |
| Rotation policy | No scheduled rotation | No scheduled rotation | No scheduled rotation |
Each node (US, Asia, Price Feed) has its own Ed25519 keypair, generated on that node and never copied between them, and the pubkey field in each response identifies which node produced the attestation. This is per-instance key architecture recommended by the Bitcoin Oracle Working Group.