快速上手
5 分钟发布你的第一个断言。
学习阶段用沙盒:测试控制台
app-dev.xtruth.xyz跟生产用同一份合约,但完全免费。生产位于app.xtruth.xyz。详见 环境。
1 · 在钱包里加 X Layer 测试网
- 钱包里添加 X Layer 测试网(chainId 1952,RPC
https://app-dev.xtruth.xyz/api/rpc,原生币 OKB)。 测试控制台 有一个"Use xtruth RPC in wallet" 按钮,会自动发 EIP-3085 请求。 - 从 OKX X Layer 测试网水龙头领点 OKB 当 gas。
- 弄点
USDC_TEST当保证金 —— 地址见 合约地址; 在群里要个水龙头。
2 · 授权 OOv3 花你的 USDC_TEST
OOv3 通过 transferFrom 从你的钱包扣保证金。授权一次,或每次按金额授权
(USDC 克隆币有时要求先把额度归零再设置 —— Web 控制台已经帮你处理)。
import { writeContract } from "viem/actions";
await writeContract(walletClient, {
address: USDC_TEST,
abi: erc20Abi,
functionName: "approve",
args: [OOV3_ADDRESS, BOND_AMOUNT],
});
3 · 发布断言
import { stringToHex } from "viem";
const claim = stringToHex(
"BTC 收盘价 2026-12-31 (Binance UTC)\nProposed answer: 117500"
);
await writeContract(walletClient, {
address: OOV3_ADDRESS,
abi: oov3Abi,
functionName: "assertTruth",
args: [
claim,
asserter, // 你的钱包
"0x0000000000000000000000000000000000000000", // callbackRecipient(EOA 不需要)
"0x0000000000000000000000000000000000000000", // escalationManager(用默认)
7200n, // 挑战期(秒)
USDC_TEST,
BOND_AMOUNT,
stringToHex("ASSERT_TRUTH", { size: 32 }), // identifier
"0x" + "00".repeat(32), // domainId
],
});
交易触发 AssertionMade(bytes32 assertionId, ...) 事件。这个 id 是后续
引用此断言的关键。
4 · 等挑战期结束,或被人争议
- 挑战期内任何人可调用
disputeAssertion(assertionId, disputer), 押同等保证金。争议升级到 DVM 投票。 - 挑战期过完无人争议,任何人可调用
settleAssertion(assertionId)。 断言者拿回保证金,结果广播。
5 · 读取结果
const result = await readContract(client, {
address: OOV3_ADDRESS,
abi: oov3Abi,
functionName: "getAssertionResult",
args: [assertionId],
});
// 断言成功返回 true,争议成功返回 false。
实时 UI 直接订阅 subgraph —— 见 Subgraph API。