Resolve a market

To resolve a market, the user calls the resolve function on the Market contract.


Prerequisites

Before resolution can succeed:

  • The Reality question(s) must be answerable: block.timestamp >= openingTime (opening time is set at market creation).

  • The question(s) must be answered on Reality.eth (someone called submitAnswer with sufficient bond).

  • The question(s) must be finalized (e.g. timeout passed, no reopen), so that realitio.resultForOnceSettled(questionId) returns a settled result.

If these are not met, the resolution transaction will revert.


After resolution: redeeming

Once the market is resolved, users can redeem winning position tokens for the underlying collateral via the Router contract (merge and redeem flow).


Viem examples

We use the Viem setup: getPublicClient(chain) and getWalletClient(chain, process.env.PRIVATE_KEY).

Shared: ABI and address

import { getPublicClient, getWalletClient, MARKET_ABI } from "./viem-setup";
import { gnosis } from "viem/chains"; // or mainnet, base, etc.

const chain = gnosis;
const publicClient = getPublicClient(chain);
const walletClient = getWalletClient(chain, process.env.PRIVATE_KEY! as `0x${string}`);
const account = walletClient.account!;

const marketAddress = "0x..."; // Market contract address

Resolve the market

Call resolve() on the Market contract:

Simulate before sending

To avoid reverts (e.g. question not yet settled), simulate first:

Last updated