xtruth

快速上手

5 分钟发布你的第一个断言。

学习阶段用沙盒:测试控制台 app-dev.xtruth.xyz 跟生产用同一份合约,但完全免费。生产位于 app.xtruth.xyz。详见 环境

1 · 在钱包里加 X Layer 测试网

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 · 等挑战期结束,或被人争议

5 · 读取结果

const result = await readContract(client, {
  address: OOV3_ADDRESS,
  abi: oov3Abi,
  functionName: "getAssertionResult",
  args: [assertionId],
});
// 断言成功返回 true,争议成功返回 false。

实时 UI 直接订阅 subgraph —— 见 Subgraph API

然后