Разработка Move-to-Earn механик
STEPN в 2022 году показал, что физическая активность и крипто-экономика могут образовать петлю с многомиллиардным рынком. Потом показал, что неправильно сконструированная токен-экономика эту петлю разрывает за несколько недель. Move-to-Earn — не только геймификация фитнеса, это сложная система с орacles, anti-cheat механиками, двухтокенной экономикой и проблемой устойчивости, которую STEPN так и не решил.
Разработка M2E механик — это пересечение mobile разработки, on-chain логики и экономического дизайна. Технически реализовать несложно. Сделать устойчивую систему, которая не схлопнется через месяц — принципиально другая задача.
Архитектура данных движения
Что считать и как верифицировать
Телефон генерирует данные акселерометра, гироскопа и GPS. Из них извлекаются: шаги (pedometer), расстояние (GPS + step count fusion), скорость, тип активности (ходьба / бег / велосипед). Проблема: эти данные легко подделать.
iOS CoreMotion / Android SensorManager — нативные API для шагов и активности. На iOS CMPedometer — системный педометр, данные нативно верифицированы Apple. Android — HealthConnect API с аналогичным уровнем доверия.
Но приложение не должно доверять этим данным напрямую для on-chain записи — это открывает вектор для root/jailbreak фарминга.
Anti-cheat: многоуровневая защита
Level 1: Device integrity. iOS App Attest / Android Play Integrity API — подтверждение, что приложение запущено на реальном устройстве без джейлбрейка, без эмулятора. Attestation запрос к Apple/Google серверу, ответ — подписанный токен.
// iOS App Attest flow
async function getAttestation(challenge: string): Promise<AttestationResult> {
const keyId = await DCAppAttestService.generateKey()
const clientDataHash = sha256(challenge)
const attestation = await DCAppAttestService.attestKey(keyId, clientDataHash)
// Отправляем на backend для верификации
const result = await api.post('/verify-attestation', {
attestation: btoa(attestation),
keyId,
challenge
})
return result
}
Level 2: Activity plausibility check. Backend анализирует GPS трек и шаги на правдоподобность:
- Скорость > 12 м/с при типе «ходьба» → флаг
- Идеально ровный шаг каждые 0.8с без вариации → флаг (эмулятор)
- GPS трек телепортируется на 500м → флаг
- Все сессии ровно 30 минут день в день → подозрение
interface ActivitySession {
userId: string
startTime: number
endTime: number
steps: number
distance: number // метры
avgSpeed: number // м/с
gpsTracks: GpsPoint[]
rawAccelerometer?: number[] // для анализа паттернов
integrityToken: string // Play Integrity / App Attest token
}
function validateSession(session: ActivitySession): ValidationResult {
const duration = (session.endTime - session.startTime) / 1000 // секунды
const avgStepFrequency = session.steps / duration
const flags: string[] = []
if (session.avgSpeed > 3.5 && session.activityType === 'walk') flags.push('speed_anomaly')
if (avgStepFrequency > 3.5 || avgStepFrequency < 0.8) flags.push('step_frequency_anomaly')
if (hasGpsTeleportation(session.gpsTracks)) flags.push('gps_anomaly')
if (hasZeroVariance(session.rawAccelerometer)) flags.push('synthetic_data')
return { valid: flags.length === 0, flags, score: calculateTrustScore(session, flags) }
}
Level 3: Machine Learning аномалия. При масштабе — ML модель на паттернах активности. Человек имеет характерные вариации шага, ритм дыхания (отражается в акселерометре), GPS нет у эмулятора без mock location. Модель обучается на легитимных сессиях, ловит отклонения.
Level 4: Rate limiting через NFT durability. STEPN-подобный механизм: снаряжение (NFT кроссовки) имеет energy pool. Без energy — нет reward. Energy восстанавливается медленно. Это не только game mechanic — это rate limiter: даже если кто-то имитирует активность, Energy cap ограничивает максимальный reward.
On-chain архитектура
NFT снаряжение и атрибуты
struct Equipment {
uint256 tokenId;
EquipmentType equipType; // SHOES, BICYCLE, etc.
uint8 efficiency; // влияет на base reward
uint8 luck; // влияет на drop rate
uint8 comfort; // влияет на earning range
uint8 resilience; // влияет на durability drain rate
uint16 durability; // текущая прочность (0-100)
uint8 level; // max 30
uint8 mintCount; // сколько раз использован для минта потомков
}
mapping(uint256 => Equipment) public equipment;
mapping(address => uint256) public energyPool; // текущая energy
mapping(address => uint256) public lastEnergyRefill;
Reward контракт и oracle
Backend верифицирует сессию, подписывает claim. Пользователь предъявляет подпись в reward контракте:
contract MoveToEarnReward {
address public rewardSigner; // backend signer
mapping(bytes32 => bool) public claimedSessions;
function claimReward(
bytes32 sessionId,
uint256 steps,
uint256 rewardAmount,
uint256 equipmentId,
uint256 deadline,
bytes calldata signature
) external {
require(block.timestamp <= deadline, "Expired");
require(!claimedSessions[sessionId], "Already claimed");
bytes32 hash = keccak256(abi.encodePacked(
sessionId, msg.sender, steps, rewardAmount, equipmentId, deadline
));
bytes32 ethHash = ECDSA.toEthSignedMessageHash(hash);
require(ECDSA.recover(ethHash, signature) == rewardSigner, "Invalid signature");
claimedSessions[sessionId] = true;
// Уменьшаем durability NFT
_drainDurability(equipmentId, steps);
// Минтим reward токен
rewardToken.mint(msg.sender, rewardAmount);
}
}
Токен-экономика: проблема устойчивости
STEPN имел GST (spending token) и GMT (governance token). GST бесконечно минтился за шаги, бесконечно сжигался на ремонт/апгрейд. Пока новых игроков больше чем старых — токен растёт. Когда рост остановился — инфляция съела цену за недели.
Dual-token с burn sink:
Earning token (ET) — минтится за активность, используется на:
- Ремонт durability (sink 1, основной)
- Upgrade NFT атрибутов (sink 2)
- Crafting (mint нового NFT) (sink 3, создаёт инфляцию NFT)
Governance token (GT) — ограниченный supply, получается:
- Редкие drops за активность (luck атрибут влияет)
- Стейкинг
- DAO участие
Переменный emission rate. Reward за шаг = f(активность сети, daily active users, общее сожжение за период). Если sink < mint → emit снижается автоматически. Это не решение, но замедляет деградацию.
Real-world value sink. Самое устойчивое решение: часть revenue от новых NFT продаж идёт в buyback & burn earning token. Реальные деньги → deflation давление. Decentralized health insurance partnership (пользователь получает скидку на страховку за активность, страховая оплачивает токенами) — экзотично, но видно в нескольких проектах.
Activity data monetization. Агрегированные (и анонимизированные) данные активности имеют ценность для фармацевтических исследований, городского планирования. B2B продажа этих данных = real revenue = buyback. Требует тщательное согласие пользователей и GDPR compliance.
Уровни и прогрессия
NFT имеет уровень (0-30). Каждый уровень открывает слоты для gems (дополнительные бусты). Upgrade требует сжигания ET + time lock:
| Уровень | ET стоимость | Время | Разблокирует |
|---|---|---|---|
| 1 → 5 | 10 ET | Instant | Socket 1 (gem slot) |
| 5 → 10 | 50 ET | 24h | Socket 2 |
| 10 → 20 | 200 ET | 72h | Socket 3, Mint capability |
| 20 → 30 | 1000 ET | 7d | Socket 4, Special abilities |
Time lock — это не только механика, это дополнительный sink и throttle на reward farminng.
Mobile stack
React Native + Expo — наиболее быстрый путь для cross-platform. Expo bare workflow для доступа к native modules (CMPedometer, Play Integrity). Expo Location для GPS background tracking.
Mapbox / Google Maps SDK для отображения GPS трека. Background location требует explicit permission и оправданного UX объяснения пользователю.
WalletConnect v2 + wagmi для подключения кошелька. Альтернатива — embedded wallet через Privy/Dynamic для no-crypto-native аудитории.
Mobile App (React Native)
├── Activity Tracking (CoreMotion / HealthConnect)
├── Anti-cheat (App Attest / Play Integrity)
├── GPS Recording (Expo Location background)
├── Session Upload → Backend
│ ├── Plausibility Check
│ ├── ML Anomaly Detection
│ └── Sign Reward Claim
└── On-chain Claim (wagmi / WalletConnect)
Процесс разработки
Tokenomics design (2-4 недели). Это не техническая задача, но критическая. Моделирование в Python/Excel: при каких параметрах система устойчива? Sensitivity analysis на DAU growth rate, churn, avg session reward.
Smart contracts (3-4 недели). NFT контракт (ERC-721 + атрибуты), reward контракт с oracle-backed claim, ET token (ERC-20 с mint/burn), upgrade механика.
Backend (3-5 недель). Activity validation pipeline, anti-cheat системы, reward calculation, signer service, App Attest / Play Integrity интеграция.
Mobile app (6-10 недель). GPS + activity tracking, background sessions, NFT viewer, reward claim UI, marketplace интеграция.
Аудит и тестирование. Smart contract аудит обязателен. Beta с ограниченным пулом пользователей для валидации anti-cheat до public launch.
MVP (web app без mobile, базовый anti-cheat) — 2-3 месяца. Полноценный M2E с mobile, multi-level NFT, anti-cheat ML, устойчивой токен-экономикой — 6-9 месяцев.







