Syy siihen, että useimmat vuoden 2020 sijaintiin perustuvat kryptoideat kuolivat hiljaa, on se, että ne luottivat GPS:ään. GPS on lähetyssignaali, jota mikä tahansa vastaanotin voi kuunnella, ja vastaanottimen voi käskeä valehtelemaan siitä, mitä se kuuli. Siihen tarvittava työkalu maksaa Amazonissa noin kolmekymmentä dollaria ja on maksanut vuodesta 2015. Jokainen protokolla, joka maksaa lompakolle koordinaatissa seisomisesta ja vahvistaa seisomisen pelkällä GPS:llä, menettää rahaa sohvilla seisoville valelompakoille. Hyökkäys ei ole vaikea eikä nokkela.

Proof of location on kerros, joka korjaa tämän. Ilmausta käytetään useammin kuin määritellään, joten aloitetaan määritelmästä. Proof of location on väite, jonka paikalla ollut osapuoli voi vahvistaa, siitä, että tietty laite oli tietyssä koordinaatissa tietyn aikaikkunan sisällä. Se on väite läsnäolosta, ei koordinaatista. Tuossa erossa asuu suurin osa insinöörityöstä.

Uhkamalli. Emme puolustaudu valtiollista toimijaa vastaan; tuohon ääritapaukseen palataan lopussa. Puolustaudumme tyypillistä hyökkääjää vastaan, jolla on puhelin, kannettava ja yksi iltapäivä. Tuo hyökkääjä voi väärentää GPS:n valmistyökalulla, ajaa sovellusta emulaattorissa ja luoda lompakon yhdellä koodirivillä. Hän voi ohittaa minkä tahansa yksittäisen kontrollin. Insinöörityön tavoite on tehdä niiden kaikkien ohittamisesta yhtä aikaa kalliimpaa kuin dropin palkinto.

Tämä kirjoitus kertoo selkokielellä, mitä Seek tekee tänään ja mitä on tulossa. Se on tarkoituksella lyhyempi markkinoinnin ja pidempi mekaniikan osalta.

Kerros yksi, nappaushetkellä: laitteen todennus. Jokainen nappauspyyntö sisältää käyttöjärjestelmän allekirjoittaman lausuman. iOS:llä se on Apple App Attest, Androidilla Google Play Integrity. Seek vahvistaa molemmat palvelimella. Todennus sanoo yhdellä allekirjoituksella kolme asiaa: tämä on oikea laite, sovelluksen binääriä ei ole peukaloitu, ja kutsujalla on avain, joka luotiin tällä laitteella meidän sovelluspakettiamme varten. Roottattu puhelin epäonnistuu. Emulaattori epäonnistuu. Uudelleen paketoitu sovellus, joka ohitti sijaintitarkistuksen, epäonnistuu. Todennus ei todista, missä puhelin on; se todistaa, ettei puhelin valehtele olevansa puhelin. Juuri se tekee muista signaaleista lukemisen arvoisia.

Kerros kaksi, nappaushetkellä: etäisyys armoikkunalla. Asiakas antaa napauttaa nappauspainiketta vain, kun olet spawnin keräyssäteen sisällä. Palvelin tarkistaa itsenäisesti lähettämäsi koordinaatit spawnin koordinaatteja vasten ja hyväksyy enintään seitsemänkymmenenviiden metrin eron. Painikkeen säteen ja palvelimen säteen välinen ero on tarkoituksellinen. Seinään nojaavan puhelimen GPS-heitto voi siirtyä muutaman metrin syistä, jotka eivät ole sinun vikasi, ja nappausten hylkääminen tuon heiton sisällä tuntuu mielivaltaiselta. Yli seitsemänkymmenenviiden metrin päästä pyyntö hylätään suoraan, ilman pisteytystä ja ilman valitusmahdollisuutta tällä tasolla.

Kerros kaksi jatkuu: nopeusrajat ja spawnikohtaiset katot. Kaksi alle viiden sekunnin välein tehtyä keräyspyyntöä saa vastaukseksi 429:n Postgres-pohjaiselta portilta, joka säilyy palvelimettomien instanssien välillä. Yksi spawn hyväksyy samalta tililtä enintään kaksi yritystä, ja toinen yritys on 65 prosenttia ensimmäisen arvosta. Näiden kattojen tarkoitus ei ole petosten havaitseminen; ne ovat olemassa, jotta botti, joka on jo ohittanut muut kerrokset, ei voi louhia rajapintaa nopeammin kuin ihminen voi pelata.

Kerros kolme, nappaushetkellä: ympäristösignaalit, jotka kirjataan mutta joita ei valvota. Jokaisen nappauksen mukana tulee myös merkintöjä: tuliko pyyntö simulaattorista, raportoiko Android sijainnin tulevan valesijaintipalvelusta, ja raportoitu GPS-tarkkuus metreinä. Nämä kirjataan, eikä niitä koskaan käytetä itse nappauksen hylkäämiseen. Asiakas, joka valehtelee niistä, on juuri se asiakas, jonka et halua tekevän päätöstä, joten päätös tehdään muualla. Niillä on merkitystä kerroksessa neljä.

Kerros neljä, maksuhetkellä: petosportti. Nostot kulkevat palvelinfunktion läpi, joka lukee tilin viimeisen yhdeksänkymmenen päivän nappaukset. Jos yksikin niistä tuli simulaattorista, tai Android raportoi valesijaintipalvelun, tai tili teki kaksi onnistunutta nappausta alle kymmenen sekunnin välein, tai tili liikkui kahden nappauskoordinaatin välillä nopeammin kuin ihminen voi kulkea, tai toinen tili on nostanut samalla laitesormenjäljellä, nosto ohjataan ihmisen tarkastettavaksi sen sijaan, että se hyväksyttäisiin automaattisesti. Käyttäjälle ei kerrota, mikä lanka laukesi, ja hänen tilinsä pelaa normaalisti. Havaitseminen on maksuja koskeva liiketoimintapäätös, ei rangaistus.

Nappauksen ja maksun erottamisen syy on se, että ne puolustavat eri asioita. Nappauskerros puolustaa peliä. Jos nappaus oli vilpillinen, siitä tulee pelivaluuttaa, joka ei koskaan poistu sovelluksesta, mikä ei maksa mitään. Maksukerros puolustaa oikeaa rahaa. Jokainen järjestelmästä lähtevä dollari kulkee saldoon johtaneen yhdeksänkymmenen päivän tarkastelun läpi, ja yksikin epäilyttävä signaali tuolla ajanjaksolla riittää siirtämään päätöksen ihmiselle. Yhdessä kerrokset tarkoittavat, ettei rehellinen pelaaja koskaan kohtaa kitkaa nappaushetkellä, eikä huonon nappauksen läpi livauttanut hyökkääjä koskaan näe rahaa.

Kerros viisi, nappaushetkellä: liikejälki. Jokaisessa puhelimessa on kiihtyvyysanturi ja gyroskooppi samalla sirulla, joka keskustelee GPS:n kanssa. Seek kirjaa nyt lyhyen liikeikkunan nappausta edeltäviltä sekunneilta, laskee pienen joukon tunnuslukuja (voimakkuuden varianssi, kiertoliike, paikallaan olevien kehysten määrä) ja lähettää yhteenvedon keräyspyynnön mukana. Spawnin luo kävelleen puhelimen liikesignatuuri on erilainen kuin pöydällä GPS-simulaattorin kanssa lepäävän puhelimen. Signatuuria ei tänään valvota nappauskerroksessa samasta syystä kuin ympäristömerkintöjä: muokattu asiakas voi valehdella. Se menee yhdeksänkymmenen päivän petosporttiin simulaattori- ja valesijaintisignaalien rinnalle, ja tasainen liikejälki tallenteessa on jälleen yksi lanka, joka ohjaa noston ihmisen tarkastettavaksi.

Esimerkki käytännössä. Testaaja käynnistää GPS-väärentäjän, asettaa koordinaatiksi Seek-dropin kaupungin toisella puolella ja napauttaa nappausta. Etäisyystarkistus menee läpi, koska väärennetty koordinaatti täsmää. Todennus menee läpi, koska sovellusta ei ole muokattu. Nappaus rekisteröityy. Kaksi tuntia myöhemmin sama testaaja tekee kolme nappausta lisää, yhden niistä kymmenen kilometrin päässä olevasta koordinaatista. Kaikkien neljän liikejälki on tasainen (puhelin ei koskaan liikkunut), ja mahdottoman liikkeen tarkistus laukeaa kahdesta koordinaatista, joihin ei olisi voinut kävellä kahdessa tunnissa. Tili jatkaa pelaamista ja keräämistä eikä tiedä, että mitään olisi vialla. Kun testaaja pyytää maksua, se päätyy ihmisen tarkastuspöydälle mahdottoman liikkeen merkinnän ja tasaisen liikejäljen kanssa. Tarkastaja hylkää sen. Testaajan kerätyllä neljänkymmenen dollarin saldolla ei ole koskaan mitään arvoa sovelluksen ulkopuolella.

Taloudellinen kehys. Olennaista ei ole se, että itse nappauksen väärentäminen olisi mahdotonta; olennaista on, että maksuportti lukee takaisin kaiken, mitä tili teki päästäkseen saldoonsa. Kahden euron drop, jota suojaavat todennus ja etäisyys, on halpa hyökätä kerran ja turha hyökätä toistuvasti, koska nostotarkistus huomaa kaavan ennen kuin kaavasta tulee rahaa. Kymmenentuhannen euron drop tarvitsee nappauskerroksessa vahvemman kehyksen, ja siitä alla oleva tiekartta kertoo.

Mitä on tiekartalla. Seuraavana tulee majakkavarajärjestely sisätilojen dropeille. Rakennuksen sisälle sijoitetulle spawnille, jossa GPS on merkityksetön, dropiin rekisteröity pieni Bluetooth-majakka antaa sovelluksen todistaa läsnäolon riippumatta satelliittipaikannuksesta lainkaan. Todennuksen valvonta on toinen työlinja: tänään todentamattomat pyynnöt kirjataan mutta hyväksytään silti, jotta voimme mitata virheellisten hylkäysten määrän rehellisillä laitteilla ennen kuin käännämme kytkimen ja hylkäämme ne suoraan. Molemmat tulevat pieninä, tylsinä, todennettavina lisäyksinä samaan jo käytössä olevaan nappaus- ja maksukaavaan.

Mikä ei vielä toimi hyvin. Sisätilojen GPS heittää kauppakeskuksessa kymmenestä viiteentoista metriä, eikä mikään palvelinpuolen nokkeluus korjaa sitä; majakka on oikea vastaus, ja siksi se on tiekartalla. Alle sekunnin viivettä ei ole eikä luultavasti tule, koska petosportti lukee historiaa eikä yksittäistä pyyntöä. Puettavissa laitteissa on puhelimia suppeampi anturivalikoima, joten puhelimille viritetty proof of location -suunnittelu ei siirry siististi laseihin. Ja valtiollinen toimija, jolla on rekallinen radiolaitteita, voi tänään ohittaa minkä tahansa matkapuhelimen vahvistajan; jokainen protokolla, joka väittää muuta, ei ole rehellinen sinulle. Meidän ei väitä.

Ääneen sanomisen arvoinen suunnitteluperiaate. Vahvistajan pitää olla rehellinen siitä, mitä se voi todistaa ja mitä ei. Todennäköisyyspisteen esittäminen ehdottomana kyllä tai ei -vastauksena on huonompaa kuin ehdottoman kyllä tai ei -vastauksen esittäminen tiukoista säännöistä, koska pistemäärä luo liukusäätimen, ja jokaista liukusäädintä työnnetään kohti useampien väitteiden hyväksymistä, kun sitoutumistavoitteet ovat jäljessä. Nappauskerroksessamme ei ole liukusäädintä. Tarkistukset joko menevät läpi tai eivät. Petoskerroksessa on liukusäädin, ja se on ihmisellä, ei koodissa.

Tämä on Seekin alla oleva osa, joka tekee ankkuroiduista omaisuuseristä ja sijaintivahvistetuista airdropeista tekemisen arvoisia. Julkaisija sijoittaa oikean rahan arvoisen tokenin koordinaattiin, koska sen lopulta saava henkilö oli siinä koordinaatissa todennetulla laitteella, ja koska maksuportti lukee tilin historian ennen kuin raha liikkuu. Whitepaperissa on täydellinen määrittely. Tämä kirjoitus on selkokielinen versio siitä, mitä sovelluksen sisällä tapahtuu.

Lyhyesti. Läsnäolo ei ole koordinaatti. Yksittäinen signaali ei todista läsnäoloa. Seek vahvistaa läsnäolon kahdessa kerroksessa: todennus, etäisyys ja liikejälki nappaushetkellä sekä yhdeksänkymmenen päivän petosportti maksuhetkellä. Se yksi, joka on vielä auki, sisätilojen dropien majakkavarajärjestely, sulkee viimeisen koordinaattitapauksen, johon pelkkä GPS ei pysty. Sitä proof of location Seekin sisällä tänään oikeasti on, ja siksi tämä kerros merkitsee enemmän kuin mikään sen mahdollistamista näyttävämmistä asioista.