原理
乐观优先,有争议才投票。
大多数主张无需投票 —— 等过一个短挑战期就自动判真。经济安全来自被挑战的威胁:任何人都可以发起争议,由 OKB 质押者裁决。
任何合约或用户在 X Layer 上调用 assertTruth(),提供主张文本、挑战期和代币保证金。
挑战期内任何人都可以质押同等保证金提出争议。无争议则主张自动判真。
有争议的主张升级到 OKB 质押者,在 24 小时一轮内 commit + reveal 答案。每个投票者都能赚 XTR。
胜方拿走败方保证金。投错的人,部分质押的 OKB 转给投对的人。已结算的主张永久不可变。
面向开发者
一次合约调用,接入链上真相。
你的合约押保证金、发布主张,等回调拿到结果。无需对接 oracle 网关、没有 API key、没有链下共识要拼。把 OOv3 接口拽进你的项目就能上线。
合约从金库扣保证金,用你设的挑战期调用 assertTruth()。
无人挑战则乐观结算;有争议则 OKB 投票者 24 小时内裁决。
OOv3 在你合约上调用 assertionResolvedCallback(id, truthful)。结算市场 / 赔付 / 解锁资金。
- 纯链上 —— 无需任何服务认证
- 继承 X Layer 的经济安全
- 可直接 fork 的审计参考合约
import { OptimisticOracleV3Interface } from "./OOv3.sol";
contract MyMarket {
OptimisticOracleV3Interface public immutable oo;
IERC20 public immutable bondToken;
function resolve(bytes32 marketId, string calldata claim) external {
uint256 bond = oo.getMinimumBond(address(bondToken));
bondToken.transferFrom(msg.sender, address(this), bond);
bondToken.approve(address(oo), bond);
bytes32 assertionId = oo.assertTruth(
bytes(claim),
msg.sender, // asserter
address(this), // callback target
address(0), // default escalation
7200, // 2h liveness
bondToken,
bond,
"ASSERT_TRUTH",
bytes32(0)
);
markets[marketId] = assertionId;
}
function assertionResolvedCallback(
bytes32 assertionId,
bool truthful
) external {
require(msg.sender == address(oo));
// settle market based on truthful
}
}面向 OKB 持有者
质押 OKB,投票判定真相,每一轮都赚 XTR。
OKB 持有者就是真相层。把钱包里现成的 OKB 拿来质押,在有争议时投票,协议会按参与发 XTR 给你。投得对的人还能拿到一份从作恶者那里罚没的 OKB。
不用买新代币,也不用跨链折腾。把 X Layer 钱包里的 OKB 直接质押 —— 始终在你自己掌控之下。
每次投票都能从协议拿到 XTR。出现就有 —— 投对是加分项,不是门槛。
投对的人额外拿到从投错者罚没的 OKB 的份额。诚实的投票者赚得最多。
奖励是怎么叠的
应用场景
你能在 xtruth 上构建什么。
任何需要可验证答案的场景都可以用 xtruth 结算。同一份 OOv3 合约,同一群 OKB 投票者 —— 只是问题不同。
挑战期结束后判定是/否结果;争议升级到 OKB 投票者。最大型预测市场背后的同款架构,原生于 X Layer。
声明事件已发生(航班延误、合约被攻击、天气事件),押保证金,无人争议则自动赔付。
在一条链上声明另一条链的状态。错误声明被罚没;诚实声明几小时内结算 —— 无需信任多签。
用代币保证金作为经济安全,发布数值、价格或任意真相主张。
用同一套投票基础设施做协议升级,治理类提案罚没率更高,匹配更高风险。
只要人能判断真伪,网络就能裁决。无需任何链下 API。