{
  "$schema": "https://asterpay.io/.well-known/reconciliation-signers.schema.json",
  "version": "1.0.0",
  "issuer": "AsterPay (AELIRA LTD)",
  "description": "Public registry of wallet addresses that AsterPay uses to sign outbound reconciliation receipts and webhook payloads. Verifiers can recover the signer address from any AsterPay-issued envelope and check it against this list.",
  "envelope": {
    "format": "EIP-191 personal_sign over RFC 8785 canonical JSON",
    "signing_bytes_recipe": "canonicalize({ payload, nonce, issued_at, max_age_s, signer })",
    "fields": {
      "payload": "Partner-specific reconciliation body.",
      "nonce": "Unique per envelope (UUID v4 or 16-byte hex).",
      "issued_at": "ISO-8601 UTC timestamp with millisecond precision.",
      "max_age_s": "Replay window in seconds (default 300).",
      "signer": "0x-prefixed Ethereum address recovered from signature.",
      "signature": "0x-prefixed 65-byte EIP-191 signature."
    },
    "verifier_pseudocode": "recoverAddress(personalMessage(canonicalize(envelope_minus_signature)), signature) === envelope.signer && (now() - parse(issued_at)) < max_age_s"
  },
  "signers": [
    {
      "address": "0xd5f8481D8F25d3966d2010DBf9B47fFbdf745A9E",
      "label": "facilitator",
      "purpose": "Signs reconciliation receipts and partner-facing webhook payloads. Same wallet is registered as the AsterPay facilitator on the Aelira Monerium profile.",
      "active_since": "2026-04-01",
      "networks": ["base", "ethereum", "polygon"]
    }
  ],
  "partners": [
    {
      "name": "MAKO Pulse",
      "contact": "https://mako.pollinateresearch.com",
      "webhook_target": "https://mako.pollinateresearch.com/api/reconciliation/asterpay",
      "active_since": "2026-05-13",
      "notes": "Daily Pulse-attached paid x402 call aggregates signed by facilitator address."
    }
  ],
  "last_updated": "2026-05-12"
}
