Розробка механік Move-to-Earn
STEPN у 2022 році доказав, що фізична активність і крипто-економіка можуть утворити цикл з ринком у мільярди доларів. Потім показав, що неправильно сконструйована токен-економіка цей цикл розриває за кілька тижнів. Move-to-Earn — це не тільки гейміфікація фітнесу, це складна система з оракулами, античітовими механіками, двотокенною економікою та проблемою стійкості, яку STEPN так і не вирішив.
Розробка M2E механік — це перетин мобільної розробки, on-chain логіки та економічного дизайну. Технічна реалізація нескладна. Створити стійку систему, яка не схлопнеться через місяць — принципово інша задача.
Архітектура даних руху
Що рахувати і як верифікувати
Телефон генерує дані акселерометра, гіроскопа та GPS. З них витягуються: кроки (pedometer), відстань (GPS + крок-фьюжн), швидкість, тип активності (ходьба / біг / велосипед). Проблема: ці дані легко підробити.
iOS CoreMotion / Android SensorManager — нативні API для кроків і активності. На iOS CMPedometer — системний педометр, дані нативно верифіковані Apple. Android — HealthConnect API з аналогічним рівнем довіри.
Але додаток не повинен довіряти цим даним безпосередньо для on-chain запису — це відкриває вектор для root/jailbreak фарму.
Античіт: багатоrivневий захист
Рівень 1: Цілісність пристрою. 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
}
Рівень 2: Перевірка правдоподібності активності. 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 токен
}
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) }
}
Рівень 3: Машинне навчання аномалія. При масштабі — ML модель на паттернах активності. Людина має характерні варіації кроку, ритм дихання (відбивається в акселерометрі), GPS немає у емулятора без mock location. Модель навчається на легітимних сесіях, ловить відхилення.
Рівень 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; // впливає на базовий reward
uint8 luck; // впливає на drop rate
uint8 comfort; // впливає на earning range
uint8 resilience; // впливає на durability drain rate
uint16 durability; // поточна міцність (0-100)
uint8 level; // макс 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 (мінт нового 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. Найстійкіше рішення: частина доходу від нових продажів 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 farming.
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 для non-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 місяців.







