addrbookFor publishers
← The evidence ledger

Evidence row 1038628

Observed , by sync.x402_bazaar/1.

Kind
listing
About
source_record x402_bazaar:https://apiwitchcraft.duckdns.org/fx
Recorded
Previous row
#785596
Body SHA-256
8aa27cc9697026e7b5ca53a87e035b21407f4603381d33f0065c5a63ef7f2e2f
Leaf
0xf5b97ae0784f0b0e941f15cc0095a2763888c0afdcd266715543412729066b5c

What was observed

{
  "endpoints": [
    [
      "x402",
      "https://apiwitchcraft.duckdns.org/fx"
    ]
  ],
  "name": "apiwitchcraft.duckdns.org/fx",
  "owner_address": "0x604e856c94d6dd6088ce3f9752b2538f70383f03",
  "raw": {
    "accepts": [
      {
        "amount": "2000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "extra": {
          "name": "USD Coin",
          "version": "2"
        },
        "maxTimeoutSeconds": 300,
        "network": "eip155:8453",
        "payTo": "0x604e856C94D6dD6088Ce3F9752B2538F70383f03",
        "scheme": "exact"
      }
    ],
    "description": "Live foreign-exchange spot rate between any two supported currencies via CoinGecko exchange_rates (e.g. USD/EUR, BTC/JPY). Returns cross rate computed from CoinGecko's BTC-denominated rates. x402 pay-per-call on Base USDC — no API key, no subscription. Not historical rates; single spot snapshot per call. Returns 400 on unsupported pair.",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "method": "GET",
            "queryParams": {
              "from": "USD",
              "to": "EUR"
            },
            "type": "http"
          },
          "output": {
            "example": {
              "from": "USD",
              "rate": 0.91,
              "to": "EUR"
            },
            "type": "json"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "method": {
                  "enum": [
                    "GET"
                  ],
                  "type": "string"
                },
                "queryParams": {
                  "properties": {
                    "from": {
                      "type": "string"
                    },
                    "to": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "from",
                    "to"
                  ],
                  "type": "object"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      }
    },
    "lastUpdated": "2026-10-29T16:18:18.504Z",
    "quality": {
      "l30DaysTotalCalls": 3,
      "l30DaysUniquePayers": 3,
      "lastCalledAt": "2026-10-29T16:18:17.615Z"
    },
    "resource": "https://apiwitchcraft.duckdns.org/fx",
    "tags": [
      "fx",
      "forex",
      "market-data"
    ],
    "type": "http",
    "x402Version": 2
  },
  "source": "x402_bazaar",
  "summary": "Live foreign-exchange spot rate between any two supported currencies via CoinGecko exchange_rates (e.g. USD/EUR, BTC/JPY). Returns cross rate computed from CoinGecko's BTC-denominated rates. x402 pay-per-call on Base USDC — no API key, no subscription. Not historical rates; single spot snapshot per call. Returns 400 on unsupported pair."
}

What the leaf hashes

{"body":"8aa27cc9697026e7b5ca53a87e035b21407f4603381d33f0065c5a63ef7f2e2f","id":1038628,"kind":"listing","method":"sync.x402_bazaar/1","observed_us":1793298273241941,"prev":785596,"subject":"x402_bazaar:https://apiwitchcraft.duckdns.org/fx","subject_kind":"source_record"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (242798 rows).

  1. 0xf5b9834ee55efd464aefb90abb39d6016bf348eba430855b696658e6c6574984
  2. 0x0c8f9370856fd698058c4381be58e537d5662baaba9951e21d451b080b49879a
  3. 0xd18ac7b5870f82c12e28dad322eeb5bc6b16182b9234ece01fda38e7a52d6379
  4. 0x20f611a465064b1d12dcd63b921ec5037d9ffbc3e5865f09bc132c8529544a18
  5. 0x76eea67a4c065e0c2dbabdcd52d3f787913e94bb012a4fa0a0139f4fe2ae73a9
  6. 0x6d077d48bb40668cae801aa05d470c3c98540c15de819f2c2374658a20b19f61
  7. 0x84627b383cb5e274a60594387e4c86039247fbb65f035e84970db98a44f941d8
  8. 0x9a5524522734f006d246b9285454ba62e841c94ab635ec1d76d10ca3ab939cbc
  9. 0xaf5f1c4635f77253a4cc30bebe19845bcdfaabf18c29b8464e48806d191d5ca6
  10. 0xfc3f03dd9942292cd523bc1e845fd2fe69b6e6ecf0744ed00d42e2ab9c8c9e46
  11. 0xd65db33c850641a512610778bc74c4557534e8cedefa27dfb6c624e384ad13df
  12. 0x9c0281c2a4bfee33b76e469eeb2b2cf128dbede9395403178364aa32378c6d83
  13. 0xe61db4873d922d736073fbcc17a7758f857abc53591bf83c26e95a8c7fdf1d7f
  14. 0xc7119ea806f683838e5f48055d7f1b7fded1f500c6064dabeb8b9a36bba8932f
  15. 0x1dd763930a8023065a24b676469b4f26d92a89cfe71226ced9df379f43ec0f0a
  16. 0x1597ec94933260048e5e583aff1ad0fd44cc49efcd0a994091ed5db4924d7b02
  17. 0xe01539ac4c9f9cdf265a9e5c6d99c8da11e70ff0c7175fb23e402d33b9d79785
Day root
0xc050555c6b023f2aefb6536efb9f0760b92c30a0d06c572b7daf63db259ea17c
Chained
0x4cde8bae2042512e1bec11650628f0293556311cc4ea74d99ffddf02b671a7d6
Published
On Arc Testnet, block 69753317: 0x9e85c340732f416e431b111fae72f7624870125f7f379af2732eb6c2ba8cf6a1

How to check it · This row as JSON