> For the complete documentation index, see [llms.txt](https://docs.sat20.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sat20.org/shi-yong-cong-wang/prediction-contract.md).

# Prediction 合约测试

Prediction 是当前聪网公开测试网优先开放的 Agent 合约场景。用户可以在 SAT20 PWA Wallet 中查看可投注比赛、参与投注，也可以在工具页部署新的 Prediction 合约。

本文面向测试网用户。Prediction 合约当前仅用于测试网演示和验证，不代表主网可用能力。

## 测试前准备

1. 安装或打开 [SAT20 PWA Wallet](https://sat20.org/pwa/?install=1)。
2. 确认钱包连接的是聪网测试网。
3. 在 PWA 的 `工具` 首页领取测试 GAS。
4. 等待钱包显示测试 GAS 到账。

合约部署、投注、结果确认和其他合约交互都需要测试 GAS。如果交易失败，先检查测试 GAS 是否足够。

## 参与投注

1. 打开 SAT20 PWA Wallet。
2. 进入 `市场`。
3. 打开 `Prediction`。
4. 查看当前可投注的比赛或事件。
5. 选择一个比赛，阅读标题、候选结果、投注截止时间、结果确认来源和最小投注单位。
6. 选择要投注的候选结果。
7. 输入投注金额。
8. 在钱包中确认交易和费用。
9. 等待测试网确认。
10. 回到 `市场 -> Prediction` 查看投注状态。

投注金额以交易转入合约地址的资产为准。页面上选择的候选结果只表达投注方向，资产数量由钱包构造并签名的交易决定。

## 部署 Prediction 合约

1. 打开 SAT20 PWA Wallet。
2. 进入 `工具`。
3. 确认已经领取测试 GAS。
4. 打开 Prediction 合约部署工具。
5. 填写比赛或事件标题。
6. 填写比赛说明。
7. 设置候选结果，例如主队胜、客队胜、平局，或其他明确可验证结果。
8. 设置比赛开始时间、投注截止时间和结果可确认时间。
9. 填写结果来源 URL。该 URL 应指向可公开验证比赛结果的网站或页面。
10. 设置投注资产和最小投注单位。
11. 检查参数后提交部署。
12. 在钱包中确认部署交易。
13. 等待测试网确认。
14. 部署成功后，在 `市场 -> Prediction` 查看新比赛。

部署者需要确保预测事件可以被验证。结果来源不清晰、候选结果不完整、时间设置不合理或最小投注单位不合理，都可能导致合约无法进入可投注状态或后续无法确认结果。

## 结果确认和结算

Prediction 合约的结果确认由测试网 Core Node Agent 执行。Agent 会在达到结果确认时间后，根据部署时指定的数据来源检查比赛结果，并提交结构化确认结果。

确认结果可能包括：

1. 某个候选结果胜出。
2. 比赛取消。
3. 结果无效。
4. 结果不可验证。

有明确赢家时，合约按规则分配奖池。没有可确认赢家、比赛取消或结果不可验证时，合约进入退款流程。具体协议规则见 [自然语言合约](/xie-yi-yu-an-quan/smart-contracts/agent.md)。

## 如何验证

用户不应只看页面余额，还应尽量检查证据：

1. 钱包中是否有投注交易 txid。
2. 合约地址是否收到对应投注资产。
3. 测试网 Explorer 是否能查到部署、投注和结果交易。
4. Prediction 页面是否展示相同的比赛状态和投注状态。
5. 结果确认后，是否存在对应的 Result TX。
6. 中奖或退款资产是否回到用户地址。

如果页面状态、钱包记录和 Explorer 证据不一致，应暂停继续投注，保留 txid 和截图，并反馈给 SAT20 Labs。

## 风险边界

1. 当前 Prediction 合约仅用于测试网。
2. 测试资产和测试 GAS 没有主网价值。
3. 测试网可能重启、回滚或调整规则。
4. 用户不应输入真实私钥、助记词或交易所账户信息。
5. 结果来源 URL 应使用公开可访问页面，不应依赖私人聊天、人工口头承诺或不可复核数据。

**页面状态：开发中（In Development）**
