Разлог зашто је већина крипто идеја заснованих на локацији из 2020. тихо умрла је то што су веровале GPS-у. GPS је емитовани сигнал који сваки пријемник може да слуша, а пријемнику се може рећи да лаже о томе шта је чуо. Алат за то кошта око тридесет долара на Amazon-у, и тако је од 2015. Сваки протокол који новчанику плаћа за стајање на координати, а то стајање проверава само GPS-ом, губи новац на лажне новчанике који стоје на каучу. То није ни тежак ни паметан напад.

Доказ локације је слој који то решава. Израз се чешће користи него што се дефинише, па почнимо од дефиниције. Доказ локације је тврдња, коју може да провери страна која није била присутна, да је одређени уређај био на одређеној координати у одређеном временском оквиру. То је тврдња о присуству, а не о координати. У тој разлици се крије већина инжењерског посла.

Модел претње. Не бранимо се од државе, тај крајњи случај долази на крају. Бранимо се од просечног нападача са телефоном, лаптопом и једним поподневом. Такав нападач може да лажира GPS готовим алатом, покрене апликацију у емулатору и направи новчаник једном линијом кода. Сваку појединачну контролу тај нападач може да савлада. Инжењерски циљ је да цена савладавања свих њих заједно буде виша од награде у дропу.

Овај текст једноставним језиком покрива шта Seek ради данас и шта долази. Намерно је краћи на маркетиншкој страни, а дужи на механици.

Први слој, у тренутку улова: атестација уређаја. Сваки захтев за улов носи потписану изјаву оперативног система. На iOS-у је то Apple App Attest, на Android-у Google Play Integrity. Seek обе проверава на серверу. Атестација једним потписом каже три ствари: ово је прави уређај, бинарна датотека апликације није мењана, а позивалац држи кључ који је направљен на овом уређају за наш пакет. Рутован телефон пада. Емулатор пада. Препакована апликација која је прескочила проверу локације пада. Атестација не доказује где је телефон, већ доказује да телефон не лаже о томе да је телефон. Због тога вреди читати остале сигнале.

Други слој, у тренутку улова: удаљеност уз толеранцију. Клијент вам дозвољава да додирнете дугме за улов само када сте унутар радијуса сакупљања новчића. Сервер независно упоређује координате које сте послали са координатама новчића и прихвата раздвајање до седамдесет пет метара. Разлика између радијуса дугмета и радијуса сервера је намерна. GPS одступање код телефона наслоњеног на зид може да се помери неколико метара из разлога за које нисте криви, а одбијање улова унутар тог одступања делује произвољно. Изнад седамдесет пет метара захтев се одмах одбија, без оцењивања и без жалбе на том нивоу.

Други слој, наставак: ограничења учесталости и лимити по новчићу. Два захтева за сакупљање у размаку краћем од пет секунди добијају 429 од провере засноване на Postgres-у, која опстаје између serverless изолата. Један новчић прихвата највише два покушаја са истог налога, а други покушај вреди 65 процената првог. Ови лимити нису ту ради откривања превара, већ да бот који је већ савладао остале слојеве не може да црпи крајњу тачку брже него што човек може да игра.

Трећи слој, у тренутку улова: сигнали окружења, бележе се али не спроводе. Сваки улов носи и ознаке: да ли је захтев стигао из симулатора, да ли је Android пријавио да позиција потиче од лажног пружаоца локације и пријављену GPS тачност у метрима. Ови подаци се бележе и никада се не користе за одбијање самог улова. Клијент који о њима лаже управо је клијент коме не желите да препустите одлуку, па се одлука доноси на другом месту. Важни су у четвртом слоју.

Четврти слој, у тренутку исплате: провера превара. Исплате пролазе кроз серверску функцију која чита улове налога у последњих деведесет дана. Ако је било који од тих улова стигао из симулатора, или је Android пријавио лажног пружаоца, или је налог направио два успешна улова у размаку краћем од десет секунди, или се налог између две координате улова кретао брже него што човек може да путује, или је други налог већ подигао новац са истог отиска уређаја, исплата се упућује на људску проверу уместо да буде аутоматски одобрена. Кориснику се не каже који је аларм окинуо, а његов налог наставља нормално да игра. Откривање је пословна одлука о исплатама, а не казна.

Разлог за раздвајање улова и исплате је то што бране различите ствари. Слој улова брани игру. Ако је улов био лажан, претвара се у валуту игре која никада не напушта апликацију, што ништа не кошта. Слој исплате брани прави новац. Сваки долар који напушта систем пролази кроз деведесетодневну проверу онога што је довело до стања, а један сумњив сигнал у том периоду довољан је да се одлука препусти човеку. Два слоја заједно значе да легитиман играч никада не осети препреку у тренутку улова, а нападач који је провукао лош улов никада не види новац.

Пети слој, у тренутку улова: запис кретања. Сваки телефон има акцелерометар и жироскоп на истом чипу који комуницира са GPS-ом. Seek сада бележи кратак прозор кретања у секундама пре улова, рачуна мали скуп статистика (варијансу интензитета, ротациону активност, број мирних кадрова) и шаље тај сажетак уз захтев за сакупљање. Телефон који је пешачио до новчића има другачији потпис кретања од телефона који лежи на столу са покренутим GPS симулатором. Потпис се данас не спроводи у слоју улова, из истог разлога као ни ознаке окружења: измењен клијент може да лаже. Иде у деведесетодневну проверу превара, поред сигнала симулатора и лажног пружаоца, а раван запис кретања у историји је још један аларм који исплату упућује на људску проверу.

Пример. Тестер покрене GPS лажњак, постави координату на Seek дроп на другом крају града и додирне улов. Провера удаљености пролази јер се лажирана координата поклапа. Атестација пролази јер апликација није мењана. Улов се бележи. Два сата касније исти тестер направи још три улова, један од њих са друге координате удаљене десет километара. Запис кретања на сва четири је раван (телефон се никада није померио), а провера немогућег кретања се активира за две координате до којих се пешице није могло стићи за два сата. Налог наставља да игра, наставља да сакупља и не зна да нешто није у реду. Када тестер затражи исплату, она стиже на сто за људску проверу, са приложеном ознаком немогућег кретања и равним записом кретања. Проверавач је одбија. Четрдесет долара сакупљеног стања тестера никада не вреде ништа ван апликације.

Економски оквир. Није важно да је лажирање самог улова немогуће, већ да провера исплате чита уназад све што је налог урадио да би стигао до стања. Дроп вредан два евра, заштићен атестацијом и удаљеношћу, јефтино је напасти једном, а бесмислено понављати, јер провера исплате открива образац пре него што образац постане новац. Дропу вредном десет хиљада евра потребан је јачи оквир у слоју улова, и о томе говори мапа пута испод.

Шта је на мапи пута. Бикон као резервна опција за дропове у затвореном простору је следећа контрола која стиже. За новчић постављен унутар зграде, где је GPS бесмислен, мали Bluetooth бикон регистрован уз дроп омогућава апликацији да докаже присуство без ослањања на сателитску позицију. Спровођење атестације је други правац: данас се захтеви без атестације бележе, али се и даље прихватају, како бисмо измерили стопу погрешних одбијања на легитимним уређајима пре него што укључимо прекидач и почнемо да их одбијамо. Обе ствари стижу као мали, досадни, проверљиви додаци истом обрасцу улова и исплате који се већ користи.

Шта још не ради добро. GPS у затвореном простору греши десет до петнаест метара у тржном центру, и никаква серверска досетљивост то не поправља. Прави одговор је бикон, и зато је на мапи пута. Кашњење испод секунде није постигнуто и вероватно неће бити, јер провера превара чита историју, а не један захтев. Носиви уређаји имају мањи скуп сензора од телефона, па дизајн доказа локације подешен за телефоне не прелази чисто на наочаре. А држава са камионом радио опреме данас може да савлада сваку проверу на мобилном телефону. Сваки протокол који тврди другачије није искрен према вама. Наш неће тврдити.

Принцип дизајна који вреди изговорити наглас. Провера треба да буде искрена о томе шта може, а шта не може да докаже. Представити вероватносну оцену као апсолутно да или не горе је од апсолутног да или не на основу строгих правила, јер оцена ствара клизач, а сваки клизач се помера ка прихватању више преузимања када циљеви ангажовања заостају. Наш слој улова нема клизач. Провере или пролазе или не. Слој превара има клизач, а тај клизач је у рукама човека, а не у коду.

Ово је део испод Seek-а због ког усидрена имовина и ердропови са потврђеном локацијом имају смисла. Издавач поставља токен праве вредности на координату зато што је особа која га на крају добије била на тој координати са атестираним уређајем, и зато што ће провера исплате прочитати историју налога пре него што се новац помери. Whitepaper садржи комплетну спецификацију. Овај текст је верзија једноставним језиком онога што се дешава унутар апликације.

Укратко. Присуство није координата. Један сигнал не доказује присуство. Seek присуство потврђује у два слоја: атестацијом, удаљеношћу и записом кретања у тренутку улова и деведесетодневном провером превара у тренутку исплате. Оно што је још отворено, бикон као резервна опција за дропове у затвореном простору, затвара последњи случај координата који сам GPS не може да покрије. То је оно што доказ локације у Seek-у данас заиста јесте, и зато је тај слој важнији од свих упадљивијих ствари које омогућава.