Skip to main content
The DRO Resolution API is an on-chain contract API. There is no public REST endpoint that submits a final result. A proposer wallet reads the DRO adapter request, signs a transaction with its private key, and calls the Direct Resolution Oracle contract.
DRO resolution is final for approved proposers. Always verify the market rules and the listed resolution source before signing.

When to use DRO

A market is a DRO market when its metadata has resolution_type: "dro_moov2" or when its resolver/oracle address is one of the configured DRO contracts.

Required inputs

The proposer wallet must be listed in the creator’s proposer whitelist. The platform checks that by reading:
  1. CreatorProposerWhitelistRegistry.whitelistOf(creator)
  2. CreatorProposerWhitelist.getProposers()

Outcome prices

unknown is only supported for standard DRO markets. Do not use it for neg-risk markets.

Resolution flow

1

Check proposer permission

Read the creator’s proposer whitelist and confirm the signer wallet is listed.
2

Read the adapter request

Call adapter.getQuestion(adapterQuestionId) and use the returned requestTimestamp and ancillaryData.
3

Confirm request state

Stop if requestTimestamp is 0, ancillaryData is empty, or resolved is already true.
4

Submit the final result

Call proposeAndResolve for standard DRO or proposeAndResolveNegRisk for neg-risk DRO.
5

Wait for sync

After the transaction confirms, the resolution sync job reads the resolution subgraph and updates market status, outcome payouts, caches, and event state.

Contract calls

Standard DRO:
Neg-risk DRO:
YES_OR_NO_IDENTIFIER is:

Complete Scripts

Each script uses the same environment variables: