Система резолвингу результатів для prediction markets
Prediction market — ринок ставок на реальні события: "Виграє команда A?", "Досягне ли ETH $5000 до кінця року?", "Буде ли прийнятий закон X?". Вся токеноміка працює тільки якщо результат визначений правильно та чесно. Система резолвингу — критичний компонент.
Типи подій та їх резолвинг
Price-based: "BTC буде вище $100K до 31 грудня?"
- Автоматичний резолвинг через Chainlink/Pyth price feed у момент експірації
- Найменш спірно, повністю on-chain
Sports/Political: "Хто виграє вибори?"
- Вимагає зовнішніх даних
- Оракули типу Augur, UMA, API3, Kleros
Subjective: "Виконав ли проект обіцяне?"
- Вимагає людського судження
- Системи claim-challenge, колективне голосування
Автоматичний резолвинг на основі оракула
Для об'єктивно верифіковних подій — автоматичний резолвинг через оракул.
contract PriceMarket {
AggregatorV3Interface public priceOracle;
uint256 public resolutionTimestamp;
uint256 public targetPrice;
bool public resolved;
bool public outcomeYes;
function resolve() external {
require(block.timestamp >= resolutionTimestamp, "Too early");
require(!resolved, "Already resolved");
// Перевірити staleness оракула у момент резолвингу
(,int256 price,,uint256 updatedAt,) = priceOracle.latestRoundData();
require(updatedAt >= resolutionTimestamp - 3600, "Oracle stale");
resolved = true;
outcomeYes = uint256(price) >= targetPrice;
emit MarketResolved(outcomeYes, uint256(price));
}
}
Ключові нюанси:
- Яку саме ціну брати? Ціну точно в момент експірації чи TWAP за останню годину?
- Що робити, якщо оракул оновився задовго до експірації? Отримати історичне значення через roundId.
UMA Optimistic Oracle
Optimistic Oracle від UMA — популярний для prediction markets (Polymarket використовує UMA).
Механізм:
- Proposer пропонує результат + bond
- Dispute window (2 години): хто угодно може оспорити + counter-bond
- Без dispute → результат прийнято
- Dispute → UMA DVM голосування (токен holders голосують)
UMA оптимістичний: 95% запросів резолвяться без dispute. Це робить його дешевим і швидким.
Reality.eth для субективних подій
Reality.eth — escalation game для субективних питань:
- Хто угодно задає питання + bond
- Хто угодно відповідає + bond (перебиває попереднього)
- Кожен dispute — bond подвоюється, timeout збільшується
- Фінальна відповідь через Kleros arbitration при високому bond
Раціональна поведінка: якщо ви знаєте правильну відповідь — прибутково оспорювати неправильну (отримати bond проігравшого). Це створює правдиву відповідь.
Система паузи при спірних результатах
Навіть з автоматичним резолвингом, edge cases існують: оракул повертає явно неправильне значення, подія скасована, форс-мажор.
address public guardian; // multisig DAO
function disputeResolution() external {
require(msg.sender == guardian, "Not guardian");
require(block.timestamp < resolutionTimestamp + DISPUTE_WINDOW, "Too late");
resolved = false; // Reset
emit ResolutionDisputed(msg.sender, block.timestamp);
// Триггер manual resolution процесу
}
Система резолвингу prediction market — 4-8 тижнів розробки плюс Legal review для compliance з gambling regulations у цільових юрисдикціях.







