# Block measurement: method, version 2

Fixed on 3 November 2026, before the first counted run. Each run records the version and SHA-256 hash of this text. Any change is published as a new version with its own date and hash and never applies to runs made earlier. Version 1, the Germany watch method of 25 October 2026 (SHA-256 e6e2e8fd61218120bd1c23cd3e9a832df3f014a6b2c9f55542f90b2e08a823a5), is unchanged and keeps its own runs.

## What a run measures

One run a week, at most one per UTC date. From volunteer-run probes on home networks in each country of the list, the run asks two public web addresses and records what came back:

1. `https://polymarket.com/api/geoblock`, the endpoint through which the Polymarket website asks whether a visitor's location may open new positions. It answers with a small JSON document that says `blocked` true or false and the country it detected.
2. `https://kalshi.com/`, the Kalshi homepage. Only the HTTP status and the page title or the name of a security challenge are kept.

The question each run answers is narrow: from these home networks, on this date, did the site answer, and what did it say? Nothing is traded, nothing is logged in, nothing is circumvented.

## Countries and networks

Probes come from the Globalping public API and are selected by country and by the tag `eyeball-network`, which Globalping gives to probes on consumer access networks. Where a country has well-known access providers with probes, the run names up to four of them by autonomous system number and asks two probes from each for the Polymarket endpoint and one from each for the Kalshi homepage. Where fewer than four are named, the remaining slots are asked from any eyeball-tagged probe in the country and reported as "other". The lists were fixed from Globalping's probe census of 3 November 2026.

| Country | Networks (AS number) |
|---|---|
| Germany DE | Deutsche Telekom 3320, Vodafone 3209, 1&1 Versatel 8881, Telefonica O2 6805 |
| France FR | Free 12322, Orange 3215, SFR 15557, Bouygues Telecom 5410 |
| Spain ES | Orange 12479, Telefonica 3352, Digi 57269, Vodafone 12430 |
| Italy IT | Telecom Italia 3269, Wind Tre 1267, Iliad 29447, Dimensione 202870 |
| Netherlands NL | KPN 1136, Odido 50266, DELTA Fiber 15435, Vodafone Ziggo 33915 |
| Belgium BE | Proximus 5432, Telenet 6848, Orange 47377, Orange 12392 |
| Poland PL | Orange 5617, Netia 12741, Play 9141, T-Mobile 12912 |
| Denmark DK | TDC 3292, Fibia 44869, Hiper 203953, Telenor 9158 |
| Switzerland CH | Sunrise 6730, Init7 13030, Iway 8758, Swisscom 3303 |
| Portugal PT | MEO 3243, Digi 20879, Vodafone 12353, NOS 2860 |
| Romania RO | Digi 8708, Vodafone 12302, Orange 8953, plus two other |
| Czechia CZ | T-Mobile 13036, Vodafone 16019, O2 5610, plus two other |
| Austria AT | Magenta 8412, kabelplus 8339, plus four other |
| Sweden SE | Telia 3301, Bahnhof 8473, Telenor 8434, Tele2 1257 |
| United Kingdom GB | BT 2856, Virgin Media 5089, Zen Internet 13037, Sky 5607 |
| Finland FI | Elisa 719, Telia 1759, DNA 16086, plus two other |

Each country costs twelve probe tests. A full run of sixteen countries costs 192 tests against Globalping's public limit of 250 an hour, so the runner reads the remaining allowance before every country and waits for the next hour when fewer than twelve tests plus a reserve are left. Countries are measured one after another, a few seconds apart.

**Finland.** The census shows only four eyeball-tagged probes in Finland, none on Telia or DNA, and two of the four sit on hosting networks tagged as eyeball. Finnish rows are reported with that note until a second vantage exists: a person on a Finnish home line running a probe, or test-list entries that let the Open Observatory of Network Interference collect tests of the same addresses.

Globalping's volunteers run the probes. They are not a representative sample of households, the same probe is not guaranteed from week to week, and a network tag is Globalping's own metadata, not a verified household. Each returned probe's country, network and tag are checked before its answer is counted. No spare probes are requested and nothing is retried.

## What counts, Polymarket endpoint

An answer needs a completed test, a successful HTTP status and valid JSON with a true-or-false `blocked` field and a country code.

- **Blocked by the site** means `blocked: true` with the probe's own country detected. The site itself refuses new positions from that location.
- **Open** means `blocked: false` with the probe's own country detected.
- **Did not reach the site** means the probe could not get the endpoint's answer: the name did not resolve, the connection was refused or reset, the request timed out, the TLS handshake failed, or something other than the endpoint's JSON came back, such as a redirect, an error status or another page. The failure kind and, where present, the error code word are kept. This is the outcome a network-level block produces, but one failed test is not proof of a block; a probe can simply be offline or on a bad line. The weekly series shows whether a network fails consistently.
- **Unknown** means the test did not finish, the probe was outside the country or not eyeball-tagged, or the detected country differs from the probe's country.

Unknown is never open, and did not reach is never open. The endpoint does not distinguish a full block from close-only, and it does not show what a logged-in user can do.

## What counts, Kalshi homepage

- **Loaded** means a successful status with a page title and no challenge.
- **Challenge** means a security checkpoint page, recorded by its name. A challenge is not a geographic block and not a sign that anyone may trade.
- **Did not reach the site** and **unknown** are as above.

No script is run, no challenge is followed, no account is created. No Kalshi page, header, cookie or market data is stored, and no Kalshi market figure is published anywhere in this series.

## Identification

Our own requests to the Globalping API identify themselves as `VultaxResearch/1.0 (research measurement; sophia@vultax.com)`. Globalping sets its own User-Agent on probe requests, so the probe requests cannot carry ours. We never pretend to be a browser.

## Records and integrity

**What a run saves.** One JSON file per country with the request, the projected probe rows and the counts; a summary with one row per country; a copy of this method; a manifest with the SHA-256 and size of every file; a `SHA256SUMS` list over the same files; an RFC 3161 timestamp token on that list from a public timestamp authority, with the authority's certificates; and a compressed pack of the whole run folder. A chain file in the runs folder holds one row per run with the hash of its `SHA256SUMS`, its token and its pack, each row carrying the hash of the row before it. Times are in UTC.

**Rules for the files.** A run never overwrites an earlier run. An interrupted run is kept as evidence of the interruption. Every saved run can be checked offline against its manifest, its list, its token and the chain. Hashes show that files are unchanged since the run; the token shows the list existed at the stamped time; the chain shows that no run was inserted, removed or altered afterwards. None of this authenticates an operator's figures: the volunteer probes are Globalping's and the answers are the sites' own.

## What a run never does

A run never:
- creates or uses an account, places or cancels an order, or signs with a wallet;
- uses a VPN or proxy, routes around a block, or passes a bot check;
- stores market rows, prices, trades or Kalshi data;
- saves the IP address of any probe, the address a name resolved to, a response header, a cookie or a response body.

## Privacy

Probe IP addresses, resolved addresses, resolver lists, raw output, headers, cookies and bodies are discarded before anything is written. Only the autonomous system number, the network name, the city, the country, the network tag, the test status, the HTTP status, the outcome, the failure kind, the error code word, the detected country and region, and the page title or challenge name are kept. No IP address is kept in any form, hashed or otherwise.

## What the data cannot show

The data cannot show:
- whether a blocking order exists, what it says, or whether it is lawful; the orders are kept in the Europe record, a separate document;
- how much trading comes from a country, how many users there are, or what they deposit or lose;
- whether anyone gets around a restriction;
- what an authenticated browser session sees;
- anything about networks that have no probe.

A reply about eligibility, a published restriction, a page that loads, and actual trading permissions are four separate facts. A table in this series reports what probes saw. It gives no advice to anyone about what to do with that.

## Publication

The public page carries, for every country, one row per run with the date, the probes asked and returned, and the counts by outcome and by network, with the method and the pack for download. A change note is written only when a country's picture changes from the previous run, and it says what changed and between which two dates. Nothing else is written weekly.
