# OMNIMX DEX 测试网部署说明（OMNX Chain omnx-1）

> 范围：OMNX Chain 自研公链本地测试网。全部为测试网环境，**严禁部署主网**；
> 暂不部署 BSC 测试网，待 OMNX 内部验证完成后再对外演示。

## 一、部署架构

OMNX 测试网节点为 Python 原生实现（`node/chain.py` + `node/modules_dex.py`）。
OMNIMX DEX 合约（OmnimxToken / MockUSDT / OmnimxPool / OmnimxRouter /
OmnimxTimelock / OmnimxInterfaces / OmnxFactory / OmnxDividend / OmnxPartner）
在**创世时固化**（地址 `B1~B9`），与既有系统合约（A1~A8）同一模式：
生产主网迁移为 Solidity 后地址与接口保持不变（见 `node/chain.py` SYSTEM_CONTRACTS）。

| 合约 | 地址 | 说明 |
|---|---|---|
| OmnimxToken | `0x…00B1` | OMNX 原生币（公链唯一原生代币：Gas/质押/治理/生态通证；创世固化地址不变） |
| MockUSDT | `0x…00B2` | 测试网模拟 USDT（6 位小数，仅供测试） |
| OmnimxPool | `0x…00B3` | AMM 流动性池（恒定乘积，多费率池 0.05%/0.1%/0.3%/1%，创建时选定、不可修改） |
| OmnimxRouter | `0x…00B4` | 兑换路由（流动性/Swap/滑点保护） |
| OmnimxTimelock | `0x…00B5` | 管理员操作时间锁 |
| OmnimxInterfaces | `0x…00B6` | 接口定义（ABI 参考） |
| OmnxFactory | `0x…00B7` | 交易对工厂 |
| OmnxDividend | `0x…00B8` | 分红分发（按 OMNX 持仓比例） |
| OmnxPartner | `0x…00B9` | 合伙人返佣 |

交易对地址按创建序号生成：`0x…D001`、`0x…D002` …（确定性，可链上查询）。

## 二、本地一键启动

1. 双击桌面「**OMNX公链-在线版启动.command**」
   - 自动停止旧进程 → 启动节点 RPC（`127.0.0.1:8545`）→ 启动本地 Web 服务（`8090`）→ 打开浏览器。
2. 校验：
   - `curl http://127.0.0.1:8545/health` → `{"ok":true,"chain":"omnx-1"}`
   - 浏览器：`http://127.0.0.1:8090/index.html`（区块浏览器）
   - DEX 页：`http://127.0.0.1:8090/dex`
3. 停止：双击「停止OMNX测试网.command」或 `./scripts/stop-local.sh`。

> ⚠️ 不要直接双击 HTML 打开（`file://` 协议会被浏览器跨域策略拦截 RPC 请求）。

## 三、DEX 部署与内部闭环（线上脚本）

```bash
cd 02-测试网
python3 scripts/deploy-omnimx.py                  # 连本地节点：校验 + 引导
python3 scripts/deploy-omnimx.py --skip-bootstrap # 仅校验创世合约
```

脚本真实上链执行（写入区块，可查询）：
1. 校验 9 个 DEX 系统合约 + 18 个系统合约清单。
2. 水龙头领 OMNX；admin 铸 USDT/USDC 给 alice（OMNX 为唯一原生代币）。
3. 创建交易对：OMNX/USDT(0.3%)、OMNX/USDC(0.05%)、USDT/USDC(1%)。
4. 授权 Router → 添加流动性（OMNX/USDT = 2000/4000）。
5. Swap 报价 + 兑换（按各池实际费率计算手续费，含滑点保护）。
6. 时间锁：排队 `add_fee_tier`（仅可新增费率档位，不可改已有池子费率）→ 等待 min_delay → 执行。
7. 分红：USDT 按 OMNX 持仓比例派发并领取。
8. 合伙人：注册 KOL 返佣 → 带 partner 的 Swap 即时入账。

输出：
- 部署清单：`deploy/omnimx/omnimx-deploy.json`（全部合约地址）
- ABI：`deploy/omnimx/abis/*.json`（与 Solidity 编译产物一致）

## 四、离线闭环测试（无需端口）

```bash
python3 tests/test_omnimx_dex.py   # 58/58：转账/授权/销毁/暂停/建池/流动性/Swap/时间锁/分红/返佣/权限
python3 tests/test_testnet.py      # 68/68：原测试网全量回归
```

覆盖：ERC20（铸币权限/转账/授权转账/销毁/暂停）、工厂（重复建池拦截）、
AMM（恒定乘积+多费率池手续费/滑点拦截/储备同步）、Router、时间锁（排队/执行/取消/权限 + add_fee_tier 新增档位）、
分红（按比例/领取）、合伙人返佣、系统合约清单 18 个、持久化重启。

## 五、钱包网络配置（MetaMask / TP 手动添加）

文件：`docs/钱包网络配置-omnx-testnet.json`

| 参数 | 值 |
|---|---|
| 网络名称 | OMNX Chain Testnet (omnx-1) |
| RPC URL | `http://127.0.0.1:8545/rpc` |
| Chain ID | `18888` |
| 代币符号 | OMNX（decimals 18） |
| 区块浏览器 | `http://127.0.0.1:8090/index.html` |

节点提供 `eth_chainId / eth_blockNumber / eth_getBalance / eth_getCode /
eth_call（balanceOf/totalSupply/getReserves 等标准选择器）/ eth_getTransactionByHash`，
可添加网络并查看余额。测试网为简化 HMAC 签名模型，发送交易请用 DEX 页面内置钱包
（后续生产节点迁移为真实 EVM 后可直接用 MetaMask 签名）。

## 六、RPC 方法速查（DEX）

| 方法 | 说明 |
|---|---|
| `exx_dexInfo` | DEX 合约/代币/交易对/事件汇总 |
| `exx_dexCreatePair` | 创建交易对 |
| `exx_dexAddLiquidity` / `exx_dexRemoveLiquidity` | 添加/移除流动性 |
| `exx_dexSwap` / `exx_dexQuote` | 兑换 / 报价 |
| `exx_erc20Transfer` / `exx_erc20Approve` / `exx_erc20Mint` / `exx_erc20Balance` | 代币操作 |
| `exx_timelockQueue/Execute/Cancel/Pending` | 时间锁 |
| `exx_dividendDistribute/Claim/Info` | 分红 |
| `exx_partnerRegister/Info` | 合伙人 |

## 七、AWS / BSC

- **现阶段仅本地调试**，不部署 AWS、不部署 BSC 测试网。
- OMNX 内部验证跑通后：AWS EC2 部署沿用 `deploy/aws/` + `deploy/omnx-aws-deploy.tar.gz`；
  BSC 测试网再行部署（Hardhat `bnbTestnet` 网络配置已就绪，见 OMNX-DEX 工程）。
- ⚠️ 全程测试网，严禁主网。
