addrbookFor publishers
← The evidence ledger

Evidence row 4167119

Observed , by sync.x402_bazaar/1.

Kind
listing
About
source_record x402_bazaar:https://tanod.dev/v1/useragent
Recorded
Previous row
#3969756
Body SHA-256
1b47ea9f0ae2303efa3e554f9fce1dd588eb721cdfe089f16751cd1f415c38eb
Leaf
0x2944271204312edc160ae2a4b7850f1fdbdea12672a3e6a9c1001f22ad26fb6d

What was observed

{
  "endpoints": [
    [
      "x402",
      "https://tanod.dev/v1/useragent"
    ]
  ],
  "name": "Tanod utilpeek",
  "owner_address": "0x593857a4a4f619543ea12394137c3004ce841720",
  "raw": {
    "accepts": [
      {
        "amount": "1000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "extra": {
          "name": "USD Coin",
          "version": "2"
        },
        "maxTimeoutSeconds": 300,
        "network": "eip155:8453",
        "payTo": "0x593857A4a4F619543ea12394137C3004ce841720",
        "scheme": "exact"
      },
      {
        "amount": "1000",
        "asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
        "extra": {
          "name": "USD Coin",
          "version": "2"
        },
        "maxTimeoutSeconds": 300,
        "network": "eip155:137",
        "payTo": "0x593857A4a4F619543ea12394137C3004ce841720",
        "scheme": "exact"
      },
      {
        "amount": "1000",
        "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
        "extra": {
          "feePayer": "CjNFTjvBhbJJd2B5ePPMHRLx1ELZpa8dwQgGL727eKww"
        },
        "maxTimeoutSeconds": 300,
        "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
        "payTo": "RMk9k3VC8dr4hhjgFh88rGhjAbzfBzHxJJ5n2fTcqus",
        "scheme": "exact"
      },
      {
        "amount": "1000000000000000",
        "asset": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",
        "extra": {
          "assetTransferMethod": "permit2",
          "name": "USD Coin",
          "version": "2"
        },
        "maxTimeoutSeconds": 300,
        "network": "eip155:56",
        "payTo": "0x593857A4a4F619543ea12394137C3004ce841720",
        "scheme": "exact"
      },
      {
        "amount": "1000",
        "asset": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
        "extra": {
          "name": "USD Coin",
          "version": "2"
        },
        "maxTimeoutSeconds": 300,
        "network": "eip155:42161",
        "payTo": "0x593857A4a4F619543ea12394137C3004ce841720",
        "scheme": "exact"
      },
      {
        "amount": "1000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "extra": {
          "name": "GatewayWalletBatched",
          "verifyingContract": "0x77777777dcc4d5a8b6e418fd04d8997ef11000ee",
          "version": "1"
        },
        "maxTimeoutSeconds": 604900,
        "network": "eip155:8453",
        "payTo": "0x593857A4a4F619543ea12394137C3004ce841720",
        "scheme": "exact"
      },
      {
        "amount": "1000",
        "asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
        "extra": {
          "name": "GatewayWalletBatched",
          "verifyingContract": "0x77777777dcc4d5a8b6e418fd04d8997ef11000ee",
          "version": "1"
        },
        "maxTimeoutSeconds": 604900,
        "network": "eip155:137",
        "payTo": "0x593857A4a4F619543ea12394137C3004ce841720",
        "scheme": "exact"
      }
    ],
    "description": "Parse a User-Agent into browser, OS and device, with a bot heuristic. Use when an agent has a User-Agent string and needs the browser, OS, device and a bot flag.",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Mobile/15E148 Safari/604.1"
            },
            "bodyType": "json",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "example": {
              "bot_reason": null,
              "browser": {
                "family": "Mobile Safari",
                "major": "17",
                "minor": "4",
                "patch": null,
                "version": "17.4"
              },
              "device": {
                "brand": "Apple",
                "family": "iPhone",
                "model": "iPhone"
              },
              "is_bot": false,
              "is_mobile": true,
              "length": 135,
              "note": "Parsed from the string the client sent; a User-Agent is self-reported and easy to fake. is_bot is a heuristic (declared crawlers, HTTP libraries, headless browsers).",
              "os": {
                "family": "iOS",
                "major": "17",
                "minor": "4",
                "patch": null,
                "version": "17.4"
              },
              "source": {
                "library": "ua-parser 1.0.2",
                "license": "Apache-2.0",
                "regexes": "ua-parser-builtins 202610 (uap-core)",
                "url": "https://github.com/ua-parser/uap-python"
              }
            },
            "type": "json"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "additionalProperties": false,
                  "properties": {
                    "user_agent": {
                      "description": "A User-Agent header value (1-1024 chars).",
                      "maxLength": 1024,
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "user_agent"
                  ],
                  "type": "object"
                },
                "bodyType": {
                  "enum": [
                    "json",
                    "form-data",
                    "text"
                  ],
                  "type": "string"
                },
                "method": {
                  "enum": [
                    "POST"
                  ],
                  "type": "string"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method",
                "bodyType",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "description": "Abridged to fit the header. Full example: the 402 JSON body. Full schema: https://tanod.dev/openapi.json POST /v1/useragent",
                  "properties": {
                    "bot_reason": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "browser": {
                      "type": "object"
                    },
                    "device": {
                      "type": "object"
                    },
                    "is_bot": {
                      "type": "boolean"
                    },
                    "is_mobile": {
                      "type": "boolean"
                    },
                    "length": {
                      "type": "integer"
                    },
                    "note": {
                      "type": "string"
                    },
                    "os": {
                      "type": "object"
                    },
                    "source": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "browser",
                    "os",
                    "device",
                    "is_bot",
                    "bot_reason",
                    "is_mobile",
                    "length",
                    "source",
                    "note"
                  ],
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      },
      "builder-code": {
        "info": {
          "a": "bc_h7pxv14u"
        },
        "schema": {
          "additionalProperties": false,
          "properties": {
            "a": {
              "pattern": "^[a-z0-9_]{1,32}$",
              "type": "string"
            },
            "s": {
              "items": {
                "pattern": "^[a-z0-9_]{1,32}$",
                "type": "string"
              },
              "maxItems": 11,
              "type": "array"
            },
            "w": {
              "pattern": "^[a-z0-9_]{1,32}$",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "erc20ApprovalGasSponsoring": {
        "info": {
          "description": "The facilitator accepts a raw signed approval transaction and will sponsor the gas fees.",
          "version": "1"
        },
        "schema": {
          "properties": {
            "amount": {
              "pattern": "^[0-9]+$",
              "type": "string"
            },
            "asset": {
              "pattern": "^0x[a-fA-F0-9]{40}$",
              "type": "string"
            },
            "from": {
              "pattern": "^0x[a-fA-F0-9]{40}$",
              "type": "string"
            },
            "signedTransaction": {
              "pattern": "^0x[a-fA-F0-9]+$",
              "type": "string"
            },
            "spender": {
              "pattern": "^0x[a-fA-F0-9]{40}$",
              "type": "string"
            },
            "version": {
              "pattern": "^[0-9]+(\\.[0-9]+)*$",
              "type": "string"
            }
          },
          "required": [
            "from",
            "asset",
            "spender",
            "amount",
            "signedTransaction",
            "version"
          ],
          "type": "object"
        }
      },
      "payment-identifier": {
        "info": {
          "required": false
        },
        "schema": {
          "properties": {
            "id": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[a-zA-Z0-9_-]+$",
              "type": "string"
            },
            "required": {
              "type": "boolean"
            }
          },
          "required": [
            "required"
          ],
          "type": "object"
        }
      }
    },
    "iconUrl": "https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1791364949/bazaar-icons/d8143c9bc952f5cd.png",
    "lastUpdated": "2026-11-07T22:46:36.049Z",
    "quality": {
      "l30DaysTotalCalls": 1,
      "l30DaysUniquePayers": 1,
      "lastCalledAt": "2026-11-07T22:46:35.409Z"
    },
    "resource": "https://tanod.dev/v1/useragent",
    "serviceName": "Tanod utilpeek",
    "tags": [
      "user-agent",
      "browser-detection",
      "device-detection",
      "bot-detection"
    ],
    "type": "http",
    "x402Version": 2
  },
  "source": "x402_bazaar",
  "summary": "Parse a User-Agent into browser, OS and device, with a bot heuristic. Use when an agent has a User-Agent string and needs the browser, OS, device and a bot flag."
}

What the leaf hashes

{"body":"1b47ea9f0ae2303efa3e554f9fce1dd588eb721cdfe089f16751cd1f415c38eb","id":4167119,"kind":"listing","method":"sync.x402_bazaar/1","observed_us":1794170684570810,"prev":3969756,"subject":"x402_bazaar:https://tanod.dev/v1/useragent","subject_kind":"source_record"}

Proof

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

  1. 0x294446ed0c34f40e27810977404b501cacdeb4c9802eebef93c8b22a5aeea038
  2. 0x1e9dc795d3b3766d3669004cdf38fc5bfa612120d7a2b9e644b768dc94d51f1a
  3. 0x43cbbb30e91b57f0a0b120911daf74b0b5ddc5335b7998852270bc32811188d7
  4. 0xbec93881d3c4a36c1a7434d66a70eb7fe94be4a3444b7cecf7bbb3a8298d829c
  5. 0x6867317831ef45c9d1804c2ad28c590b984118474e112f027ee94aa7ba47050d
  6. 0x58a08f4c6c0c3c0e768b060baa8067a91a46f1a56f95cb93c786dd8fe08b2e92
  7. 0xabda82b4d4c9f439194f68d04828e91aa659420232513d70fa8b3c643889cf6b
  8. 0xe65f130d4a7789d8e239836152ff80bf89fa73102a639dde5176d9655389d8ef
  9. 0xdb5f8a22d003685581f82c6b4bacf0b75062da7fcaadacacc767a55aad6254fe
  10. 0xfeb677bd27c1f36a611d9c0452fa12ec84a6da9692898d54922e598c79ae2854
  11. 0x86dc86acd51d84c1bd6a92908ae7eab32cec5eabfa8e40b5c9dda18e8b50ed95
  12. 0xc603aaac5ae27c8dd786d80d51e9e8f4eb4f0db13cdd092a9ddb1800266a57ec
  13. 0x45ed620be030abb10f19c08e05db589cd602ab4ea9696251744dd73377e8bb95
  14. 0x4bd772c9a17868f0fefbed9997e4f5adae5a57e8c33740a90ffac99733341b43
  15. 0x09d2e17fa8f3e9a2f4f828fdf6cdcead1db258ec62d192ca8393958c2b06f6cd
  16. 0x1962b987e02fbb17a8951e440b8c94ffca5debb84fd17d27b5f1c60361f21c36
  17. 0x2031bf8fabeeff87db710efedafb2b06df0de0b25ca93fb078786a0ebfe9bbc5
  18. 0x1f0ff2af9da38fef1beef5d2dbcf41f592dca17729b7ab9b9c0b6ef354dc3b83
Day root
0xbf84ec37f88c5f23d2144bd7dbc1ea0f8edc93b3764a885a7164b7923ff3460b
Chained
0x9fea188e4965f50de727e97c40e18d5ff2c2ddbfd4f1ae65e22ddd6f676bccfc
Published
On Arc Testnet, block 71451618: 0xb5273480942a54cd07f291b8319e59976f8d9d0583181c764eed04c9b3f7a022

How to check it · This row as JSON