> 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/kai-fa-zhe-zhong-xin/limit-order-quickstart.md).

# 部署智能合约模板限价单模块

LimitOrder 模板是当前聪网公开测试网上线的智能合约模板之一。它用于验证订单创建、成交、取消和退款如何在聪网智能合约框架中由 canonical Result TX 和 contract state root 表达。

注意：PWA `市场` 或 DEX 中的限价单是 L2 市场通道合约能力，不是本文讨论的智能合约模板 LimitOrder。本文讨论的模板 LimitOrder 只能从 PWA `工具 -> 智能合约` 入口交互。

## 当前状态

| 项目   | 状态                |
| ---- | ----------------- |
| 合约类型 | Template Contract |
| 模板   | LimitOrder        |
| 可用环境 | 聪网公开测试网           |
| 主网状态 | 暂未开放              |
| 费用资产 | 测试 GAS            |
| 交互入口 | PWA `工具 -> 智能合约`  |

## 基本流程

1. 部署者进入 PWA `工具 -> 智能合约`。
2. 选择交易资产和基础资产。
3. 部署限价单模板合约。
4. Maker 创建订单，把卖出资产转入合约地址。
5. Taker 填单，把支付资产转入合约地址。
6. 合约按价格和订单规则撮合。
7. Result TX 把成交资产分别转给买卖双方。
8. 未成交或取消部分通过 refund 退回。

## 调用动作

| 动作            | 说明                      |
| ------------- | ----------------------- |
| `swap` / 创建订单 | 挂买单或卖单，具体方向由输入资产和订单参数决定 |
| `refund`      | 取消挂单或取回可退资产             |

订单类型沿用模板协议定义：

| 类型  | 含义     |
| --- | ------ |
| `1` | 卖单     |
| `2` | 买单     |
| `3` | refund |

## 撮合规则摘要

1. 买单按价格从高到低排序。
2. 卖单按价格从低到高排序。
3. 同价格按区块顺序、交易顺序和 item id 排序。
4. 只有买价大于或等于卖价时成交。
5. 成交价使用卖单价格。
6. 每次撮合生成买家资产转移和卖家聪转移，两笔 transfer 位于同一个 Result TX。
7. 买单未使用的聪退回买家。
8. 卖单剩余资产不足以继续成交时，剩余资产退回卖家。

## 验证清单

1. Deploy TX 是否创建限价单合约地址。
2. 创建订单交易是否把卖出资产转入合约地址。
3. 订单是否进入 open 状态。
4. 填单交易是否转入正确支付资产。
5. Result TX 是否按撮合规则分配资产。
6. refund 是否只能取消调用者自己的未完成挂单。
7. 订单状态、Result TX 和钱包余额是否一致。

## 风险边界

1. 当前限价单模板合约仅用于测试网。
2. 测试网订单、价格和资产没有主网价值。
3. 订单状态需要结合钱包、Explorer 和 Indexer 证据判断。
4. 网络错误或页面延迟时，不要重复提交相同价值移动，先查 txid 和合约状态。

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