addrbookFor publishers
← The evidence ledger

Evidence row 1508238

Observed , by sync.x402_bazaar/1.

Kind
listing
About
source_record x402_bazaar:https://apiwitchcraft.duckdns.org/fx
Recorded
Previous row
#1261440
Body SHA-256
6c561f8264696e1db8474ec66bc5b1a1215941940cc3f93e89783bef732a37ef
Leaf
0x81598705ea79436f63bf212a621192682454e3e336321a148f9f94a07616ca8b

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-31T00:31:31.716Z",
    "quality": {
      "l30DaysTotalCalls": 8,
      "l30DaysUniquePayers": 6,
      "lastCalledAt": "2026-10-31T00:31:30.761Z"
    },
    "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":"6c561f8264696e1db8474ec66bc5b1a1215941940cc3f93e89783bef732a37ef","id":1508238,"kind":"listing","method":"sync.x402_bazaar/1","observed_us":1793472708389611,"prev":1261440,"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 (246033 rows).

  1. 0x8159098053aefb2da051a746da3ef2dca8325ad3ab8a8d0241c2ef23ca71e905
  2. 0x97463ba2b5744ef5486c63988b16b6da99d0cf124a5ff15edb557def0c50c4cc
  3. 0x1ad24098919ddcaebed44039a07adaa8b182f524d3ee035a2e9af3d140e601d6
  4. 0xa97b74941eb8574fda12064458cfb470787aa49ead5629b5f977c55997942a97
  5. 0x7e887b68662493f619aa03428e99146fab64198ed6afc7580c16dc1ce5c8d325
  6. 0x2d8b574a266e04151af43dcab8f5d6f536914bc620dcdf79f4b313f21a77b2d5
  7. 0x24937ed0cf6c42de22c7b0ad306f72a64d41b05c599d7d38cacc0997fd872f67
  8. 0xa4215361fc8834446a669a2df332ea46be3f0e91563b1e1473c2d268cfc2512b
  9. 0x38a512c3be6cccd3f70a13f33922f6aa66f16d7f0c5b98706c6c4e31128f5384
  10. 0x80a380b704c6e7451eec16f0308e719feb1c48e18ff8ff786f8547a96905ed84
  11. 0x2757ab396aac1fea1e5913a18c23e1c6b7c1748ae292cd3a1dd5760ba84b4ae9
  12. 0xed97fcd52d7537aec306677e8cb3abf13d0b7b00e0036385080fdaf125958920
  13. 0x5da98004d63a664b48fb1cbdd3411495870573c4cdf283e78b4657e393085211
  14. 0xa59dc4109e7747a67ff1c74b854a6a84d4177b254204f0623f549d72e4be7445
  15. 0xb553c856ad5fb96dd995dd0c40f65a2d8efc7b7f254a1ac0f2c104350e544985
  16. 0x919f237dec4df392868ab95f1d4300b185479ae64464cbc2e7385ad1fd6ab390
  17. 0xa00a931d72706fa2402bfc9b441a12eb7c6a61ff42a542916106e3637177f101
  18. 0x59f83f7228f07febe2780660e422e171b0359b8aa031ee3be07e991118130c15
Day root
0x24463725d1c0d9894bd6123691d532547aaa79f0762c0e45aa6a68acf1fd71ab
Chained
0x7d4824ff313dee7252a46f9d5c37b452851deb6c9f24a40c2f74ee0e53c82980
Published
On Arc Testnet, block 70093156: 0xedb7b832f4ebf6781b5ecd2ed241c435b862f4d3761541fa31adc1831b8c44a0

How to check it · This row as JSON