PETRO README

# PetroCash 前端控制台(Polygon 主网)使用说明

文件:`petro_token_dashboard.html`。该前端可直接通过浏览器与合约交互(无需 Remix)。

## 一、启动与连接

1. 用浏览器打开 `petro_token_dashboard.html`(本地双击或上线至任意静态服务器)。
2. 右上角点击“连接钱包”。如未处于 Polygon 主网(ChainId 137),页面会引导切换/添加网络。
3. 在左侧“合约设置”输入你的合约地址(ABI 若未修改合约,可空,用内置 ABI)。
4. 点击“连接合约”,页面会显示名称、代号、精度、总/最大供应、Owner、转账开关状态。

## 二、金额与单位(务必阅读)

- 合约金额为 `uint256`(Wei,18 位小数)。
- 页面“所有金额输入均为 Token(人类可读)单位”,前端自动转换为 Wei。无需手动补 `000000000000000000`
- 示例:输入 `1.5` Token => 传入 `1500000000000000000` Wei。
- 页面左侧提供 “Token <-> Wei” 换算工具用于核对。

## 三、功能导航

### 1) 转账/授权
- `transfer(to, amount)`:发起转账。要求:全局转账已开启或调用者为 Owner;且满足可转性(余额-锁仓>=金额)。
- `approve(spender, amount)`:授权 `spender` 可从自己账户划转指定额度。
- `increaseApproval/decreaseApproval`:在现有授权额基础上增/减。
- `transferFrom(from, to, amount)`:从 `from` 地址代转(需有足够 allowance)。同样受可转性与全局开关限制。

### 2) Owner 操作
- `mint(to, amount)`:增发代币至地址,不得超过 `MAX_TOTAL_SUPPLY`
- `burn(amount)`:仅 Owner,从 Owner 自己余额中销毁代币。
- `finishMinting()`:结束增发,调用后不可再增发(不可逆)。
- `resumeTransfers()/stopTransfers()`:开启/关闭全局转账。
- `transferOwnership(newOwner)`:转移 Owner 权限。

### 3) 锁仓与批量
- `lock(_to, releaseTime, lockamount)`:仅 Owner,添加锁仓记录。`releaseTime` 为秒级时间戳;未到期锁仓金额不可转出。
- `removeHoldByAddress(address)`:仅 Owner,移除该地址所有锁仓。
- `removeHoldByAddressIndex(address, index)`:仅 Owner,移除该地址指定索引锁仓。
- `multiSend(recipients[], amounts[])`:仅 Owner,批量发送;需逐条满足可转性与余额。

### 4) 诊断/查询
- `balanceOf(address)`:余额。
- `allowance(owner, spender)`:授权额度。
- `canBeTransfered(address, value)`:是否可转出该金额(综合锁仓与余额)。
- `gettotalHold(address)`:地址总锁仓(需自己或 Owner 调用)。
- `getlockslen(address)`:锁仓条目数(仅 Owner)。
- `getlocksbyindex(address, index)`:锁仓记录(需自己或 Owner 调用)。
- 读取状态:`TRANSFERS_ALLOWED``MAX_TOTAL_SUPPLY`

## 四、常见问题与排查

- 交易回滚常见原因:
- 全局转账关闭或调用者非 Owner
- 余额不足(含锁仓占用)
- 超过 `MAX_TOTAL_SUPPLY` 进行增发
- 锁仓索引越界或访问权限不足(getlockslen 仅 Owner;getlocksbyindex 需自己或 Owner)
- 单位问题:页面输入均为 Token 单位,自动转 Wei,无需手动补 18 个 0。
- 网络问题:如非 Polygon 主网,页面会引导切换/添加;切换后重连即可。

## 五、安全提示

- Owner 操作影响供应与全局状态,执行前请仔细核对参数与地址。
- `finishMinting` 不可逆;锁仓相关操作涉及用户资金可用性,请谨慎执行。

## 六、部署建议

- 静态托管(Vercel、Netlify、S3+CDN 等),使用 HTTPS 访问。
- “合约设置”会保存到浏览器 `localStorage`,便于下次直接使用。

如需品牌化 UI 或预填你的合约配置,请提供地址与需求以便定制。祝使用顺利!