Skip to content

These are the rules the contract enforces. The code and the API notes sit next to them for anyone changing the product.

What CalledIt is

You publish a forecast before the outcome. GenLayer freezes a structured reading of that sentence. Later, a page on an allowlisted site can resolve it to correct or incorrect. The original sentence is never rewritten to match the result.

How validators agree

An unambiguous price sentence is sealed in code. Every validator computes the same reading, so there is nothing for a model to disagree about. An import or a resolution uses GenLayer’s equivalence rule: the leader proposes, the others redo the work, and they accept it only when the decision matches. Wording can differ. For a price, the printed tick can differ too, as long as both readings answer the frozen comparison the same way. The contract then checks the leader’s number against that comparison. The subject, the verdict, and whether the evidence was enough still have to match. A failed resolution leaves the forecast open.

Your wallet signs. The server does not.

A lock is a contract write from the wallet you connected in the browser. The call is lock_native_forecast, lock_imported_forecast, or resolve_forecast. The app never asks you to paste a private key, and the API has no route that accepts one. A session signature, if you sign in, only opens a login. It does not lock a forecast and it does not spend funds.

What gets stored

A successful lock is OPEN until a verdict is written once. RESOLVED cannot be overwritten. Vague forecasts, missing dates, and prompt-injection text are rejected before a model sees them. They are not saved as a special kind of failure you can later flip.

Whose clock

locked_at and the deadline check use the GenLayer transaction time. Not your laptop clock, and not the clock on a news site.

Imported posts

An import has to be HTTPS, on an allowlisted host, with no IP address, no userinfo, and no fragment. The sentence you claim must literally appear on the page after instruction-like lines are stripped. If it does not, the lock reverts.

Reading the contract

The source of truth is the contract. Useful views: get_forecast, get_forecast_status, get_forecast_count, get_forecast_author, get_forecast_interpretation, get_forecast_verdict, get_protocol, get_resolution_domains, get_import_domains, get_admin, get_policy_version, is_source_domain_allowed, is_import_domain_allowed, preview_url_policy, and get_author_forecast_ids. Those reads are calls. They are not signed transactions, so they do not have transaction hashes. The API under /api/v1 is an index of those reads.

Reputation

Accuracy is correct divided by correct plus incorrect. Open forecasts are not misses. Drafts and simulated rows are excluded. Ambiguous and unresolved results are not scored as wins.

Security model · Roadmap