Die meisten ortsbasierten Krypto-Ideen von 2020 sind still gestorben, weil sie GPS vertraut haben. GPS ist ein Funksignal, das jeder Empfänger hören kann, und einem Empfänger kann man befehlen, über das Gehörte zu lügen. Werkzeuge dafür kosten auf Amazon etwa dreißig Dollar, und das seit 2015. Jedes Protokoll, das eine Wallet dafür bezahlt, an einer Koordinate zu stehen, und das nur mit GPS prüft, verliert Geld an gefälschte Wallets, die auf dem Sofa sitzen. Das ist weder ein schwerer noch ein cleverer Angriff.

Proof of Location ist die Schicht, die das behebt. Der Begriff wird häufiger benutzt als definiert, also fangen wir mit einer Definition an. Proof of Location ist eine Behauptung, die von jemandem überprüft werden kann, der nicht dabei war: dass ein bestimmtes Gerät innerhalb eines bestimmten Zeitfensters an einer bestimmten Koordinate war. Es ist eine Aussage über Anwesenheit, nicht über die Koordinate. In diesem Unterschied steckt der Großteil der Technik.

Das Bedrohungsmodell. Wir verteidigen uns nicht gegen einen Staat; dieser Extremfall kommt am Ende. Wir verteidigen uns gegen den durchschnittlichen Angreifer mit einem Handy, einem Laptop und einem freien Nachmittag. Dieser Angreifer kann GPS mit einem handelsüblichen Tool fälschen, die App in einem Emulator laufen lassen und mit einer Zeile Code eine Wallet erstellen. Jede einzelne Kontrolle kann er aushebeln. Das technische Ziel ist, dass es mehr kostet, alle zusammen auszuhebeln, als die Belohnung am Drop wert ist.

Dieser Artikel beschreibt verständlich, was Seek heute tut und was noch kommt. Er ist bewusst knapp beim Marketing und ausführlicher bei der Mechanik.

Schicht eins, beim Fangen: Geräteattestierung. Jede Fang-Anfrage enthält eine signierte Aussage des Betriebssystems. Auf iOS ist das Apple App Attest, auf Android Google Play Integrity. Seek prüft beide auf dem Server. Die Attestierung sagt in einer Signatur drei Dinge: Das ist ein echtes Gerät, die App wurde nicht manipuliert, und der Absender hält einen Schlüssel, der auf diesem Gerät für unser Bundle erstellt wurde. Ein gerootetes Handy fällt durch. Ein Emulator fällt durch. Eine umgepackte App, die die Standortprüfung überspringt, fällt durch. Die Attestierung beweist nicht, wo das Handy ist; sie beweist, dass das Handy nicht lügt, ein Handy zu sein. Erst dadurch lohnt es sich, die anderen Signale zu lesen.

Schicht zwei, beim Fangen: Entfernung mit Toleranz. Die App lässt dich den Fang-Button erst antippen, wenn du im Sammelradius des Spawns bist. Der Server prüft unabhängig davon die gesendeten Koordinaten gegen die Koordinaten des Spawns und akzeptiert bis zu fünfundsiebzig Meter Abstand. Der Unterschied zwischen dem Radius des Buttons und dem des Servers ist Absicht. Das GPS eines Handys, das an einer Wand lehnt, kann aus Gründen, für die du nichts kannst, ein paar Meter springen, und Fänge innerhalb dieses Rauschens abzulehnen, fühlt sich willkürlich an. Jenseits von fünfundsiebzig Metern wird die Anfrage direkt abgelehnt, ohne Bewertung und ohne Einspruch auf dieser Ebene.

Schicht zwei, Fortsetzung: Ratenbegrenzung und Obergrenzen pro Spawn. Zwei Sammelanfragen im Abstand von weniger als fünf Sekunden bekommen ein 429 von einer Sperre auf Postgres-Basis, die über Serverless-Isolates hinweg bestehen bleibt. Ein einzelner Spawn akzeptiert höchstens zwei Versuche vom selben Account, wobei der zweite 65 Prozent des ersten wert ist. Diese Grenzen dienen nicht der Betrugserkennung; sie sorgen dafür, dass ein Bot, der die anderen Schichten schon überwunden hat, den Endpunkt nicht schneller abgrasen kann, als ein Mensch spielen kann.

Schicht drei, beim Fangen: Umgebungssignale, aufgezeichnet, aber nicht durchgesetzt. Jeder Fang enthält außerdem Markierungen: ob die Anfrage aus einem Simulator kam, ob Android gemeldet hat, dass die Position von einem Anbieter für simulierte Standorte stammt, und die gemeldete GPS-Genauigkeit in Metern. Diese Werte werden gespeichert und nie verwendet, um den Fang selbst abzulehnen. Ein Client, der dabei lügt, ist genau der Client, dem du die Entscheidung nicht überlassen willst, also fällt die Entscheidung woanders. Wichtig werden sie in Schicht vier.

Schicht vier, bei der Auszahlung: die Betrugsprüfung. Auszahlungen laufen über eine Serverfunktion, die die Fänge der letzten neunzig Tage des Accounts liest. Wenn einer dieser Fänge aus einem Simulator kam, Android einen simulierten Standort gemeldet hat, der Account zwei erfolgreiche Fänge im Abstand von weniger als zehn Sekunden gemacht hat, sich zwischen zwei Fangorten schneller bewegt hat, als ein Mensch reisen kann, oder ein anderer Account vom selben Geräte-Fingerabdruck schon ausgezahlt hat, dann geht die Auszahlung in eine manuelle Prüfung statt automatisch genehmigt zu werden. Der Nutzer erfährt nicht, welcher Draht ausgelöst hat, und sein Account spielt ganz normal weiter. Die Erkennung ist eine geschäftliche Entscheidung über Auszahlungen, keine Strafe.

Fangen und Auszahlung sind getrennt, weil sie unterschiedliche Dinge schützen. Die Fangschicht schützt das Spiel. Ein betrügerischer Fang wird zu Spielwährung, die die App nie verlässt, und das kostet nichts. Die Auszahlungsschicht schützt echtes Geld. Jeder Dollar, der das System verlässt, durchläuft die Neunzig-Tage-Prüfung dessen, was zum Guthaben geführt hat, und ein einziges verdächtiges Signal in diesem Zeitraum reicht, um die Entscheidung einem Menschen zu übergeben. Zusammen bedeuten die beiden Schichten: Ein ehrlicher Spieler merkt beim Fangen keinerlei Reibung, und ein Angreifer, der einen falschen Fang durchgeschmuggelt hat, sieht nie das Geld.

Schicht fünf, beim Fangen: die Bewegungsspur. Jedes Handy hat einen Beschleunigungssensor und ein Gyroskop auf demselben Chip, der mit dem GPS spricht. Seek zeichnet jetzt für die Sekunden vor einem Fang ein kurzes Bewegungsfenster auf, berechnet daraus ein paar Kennzahlen (Varianz der Beschleunigung, Drehaktivität, Anzahl der ruhigen Frames) und schickt diese Zusammenfassung mit der Sammelanfrage mit. Ein Handy, das zu einem Spawn gelaufen ist, hat eine andere Bewegungssignatur als eines, das mit laufendem GPS-Simulator auf einem Schreibtisch liegt. Die Signatur wird heute auf der Fangebene nicht durchgesetzt, aus demselben Grund wie die Umgebungssignale: Ein manipulierter Client kann lügen. Sie fließt in die Neunzig-Tage-Betrugsprüfung ein, neben den Simulator- und Standortsignalen, und eine flache Bewegungsspur im Verlauf ist ein weiterer Draht, der eine Auszahlung in die manuelle Prüfung schickt.

Ein durchgespieltes Beispiel. Ein Tester startet einen GPS-Spoofer, setzt die Koordinate auf einen Seek-Drop am anderen Ende der Stadt und tippt auf Fangen. Die Entfernungsprüfung besteht, weil die gefälschte Koordinate passt. Die Attestierung besteht, weil die App unverändert ist. Der Fang wird registriert. Zwei Stunden später macht derselbe Tester drei weitere Fänge, einen davon an einer anderen Koordinate zehn Kilometer entfernt. Die Bewegungsspur ist bei allen vier flach (das Handy hat sich nie bewegt), und die Prüfung auf unmögliche Bewegung schlägt bei den zwei Koordinaten an, die zu Fuß in zwei Stunden nicht erreichbar gewesen wären. Der Account spielt weiter, sammelt weiter und merkt nichts. Als der Tester eine Auszahlung beantragt, landet sie in der manuellen Prüfung, mit der Markierung für unmögliche Bewegung und der flachen Bewegungsspur im Anhang. Der Prüfer lehnt ab. Die vierzig Dollar Guthaben des Testers sind außerhalb der App nie etwas wert.

Der wirtschaftliche Rahmen. Entscheidend ist nicht, dass es unmöglich ist, den Fang selbst zu fälschen; entscheidend ist, dass die Auszahlungsprüfung alles zurückverfolgt, was der Account getan hat, um zu seinem Guthaben zu kommen. Ein Drop im Wert von zwei Euro, geschützt durch Attestierung und Entfernung, ist einmal billig anzugreifen und wiederholt sinnlos, weil die Auszahlungsprüfung das Muster erkennt, bevor aus dem Muster Geld wird. Ein Drop im Wert von zehntausend Euro braucht einen stärkeren Rahmen auf der Fangebene, und darum geht es in der Roadmap unten.

Was auf der Roadmap steht. Als Nächstes kommt der Beacon als Ausweichlösung für Drops in Innenräumen. Für einen Spawn in einem Gebäude, in dem GPS nichts taugt, lässt ein kleiner Bluetooth-Beacon, der für den Drop registriert ist, die App die Anwesenheit nachweisen, ganz ohne Satellitenposition. Die Durchsetzung der Attestierung ist der zweite Strang: Heute werden Anfragen ohne Attestierung protokolliert, aber noch akzeptiert, damit wir die Quote falscher Ablehnungen bei legitimen Geräten messen können, bevor wir den Schalter umlegen und sie komplett ablehnen. Beides kommt als kleine, unspektakuläre, überprüfbare Ergänzung zum bestehenden Muster aus Fang und Auszahlung.

Was noch nicht gut funktioniert. GPS in Innenräumen liegt in einem Einkaufszentrum zehn bis fünfzehn Meter daneben, und keine noch so clevere Serverlogik behebt das; die echte Antwort ist ein Beacon, deshalb steht er auf der Roadmap. Latenz unter einer Sekunde gibt es nicht und wird es wahrscheinlich nie geben, weil die Betrugsprüfung den Verlauf liest und nicht nur eine einzelne Anfrage. Wearables haben weniger Sensoren als Handys, deshalb lässt sich ein Proof-of-Location-Design, das auf Handys abgestimmt ist, nicht einfach auf Brillen übertragen. Und ein Staat mit einem Lastwagen voller Funktechnik kann heute jeden Handy-Prüfer aushebeln; jedes Protokoll, das etwas anderes behauptet, ist nicht ehrlich zu dir. Unseres wird das nicht behaupten.

Das Designprinzip, das man laut aussprechen sollte. Ein Prüfer sollte ehrlich sagen, was er beweisen kann und was nicht. Eine Wahrscheinlichkeitsbewertung als absolutes Ja oder Nein auszugeben, ist schlimmer, als ein absolutes Ja oder Nein aus strengen Regeln zu liefern, denn eine Bewertung schafft einen Schieberegler, und jeder Schieberegler wird in Richtung mehr Akzeptanz geschoben, wenn die Engagement-Ziele hinterherhinken. Unsere Fangebene hat keinen Schieberegler. Entweder besteht der Fang die Prüfungen oder nicht. Die Betrugsebene hat einen Schieberegler, und der liegt bei einem Menschen, nicht im Code.

Das ist der Baustein unter Seek, der verankerte Assets und ortsverifizierte Airdrops sinnvoll macht. Ein Publisher platziert einen Token mit echtem Geldwert an einer Koordinate, weil die Person, die ihn am Ende bekommt, mit einem attestierten Gerät an dieser Koordinate war, und weil die Auszahlungsprüfung den Verlauf des Accounts durchgeht, bevor Geld fließt. Das Whitepaper enthält die vollständige Spezifikation. Dieser Artikel ist die verständliche Version dessen, was in der App passiert.

Die Kurzfassung. Anwesenheit ist keine Koordinate. Ein einzelnes Signal beweist keine Anwesenheit. Seek prüft Anwesenheit in zwei Schichten: Attestierung, Entfernung und Bewegungsspur im Moment des Fangs, und eine Neunzig-Tage-Betrugsprüfung im Moment der Auszahlung. Der noch offene Punkt, der Beacon für Drops in Innenräumen, schließt den letzten Fall, den GPS allein nicht abdecken kann. Das ist Proof of Location, wie es heute in Seek tatsächlich funktioniert, und deshalb ist diese Schicht wichtiger als alle auffälligeren Dinge, die sie ermöglicht.