# GCASH Staking 前端控制台(Polygon 主网)使用说明
文件:`gcash_staking_dashboard.html`。该前端可直接通过浏览器与 GCASH Staking 合约交互,无需 Remix。
## 一、快速开始
1. 打开 `gcash_staking_dashboard.html`(本地双击或静态托管)。
2. 右上角“连接钱包”。若不在 Polygon 主网(137),页面会引导切换/添加网络。
3. 左侧“合约设置”填入 Staking 合约地址(ABI 若未修改可用内置),点击“连接合约”。
4. 页面会自动读取质押代币地址及其精度(用于 Token ↔ Wei 换算)。
5. 在“用户质押 / Locked V2 / Owner 操作 / 诊断/查询”页签完成所需操作。
## 二、单位与金额(务必阅读)
- 合约金额类型为 `uint256`(Wei,18 位或代币自带精度)。
- 页面“所有金额输入均为 Token 单位”,前端会自动转换为 Wei;无需手动补 `000000000000000000`。
- 示例:输入 `1.5` Token => 传入 `1500000000000000000`(若代币 18 位小数)。
- 左侧提供 Token ↔ Wei 换算工具(基于实际代币精度)。
## 三、用户质押
- 授权:先对 Staking 合约 `approve` 充足额度(质押与 addLiquidity 均需要事先授权)。
- 灵活质押(Flexible):
- `stakeFlexible(amount)` 质押;`claimFlexibleRewards()` 领取奖励;`withdrawFlexible()` 取回本金+奖励(若奖励池资金不足,则保证本金)。
- 锁定质押(Locked):
- `stakeLocked(amount)` 质押,锁定期由 `lockedDuration` 决定。
- `claimLockedRewards()` 领取奖励;`withdrawLocked()` 到期后可取回本金+奖励(若奖励池资金不足,则保证本金)。
- `emergencyWithdrawLocked()` 启用后可提前仅取回本金(无奖励)。
## 四、Petro Boost 与 APY
- 若用户持有的 Petro 数量达到阈值(`petroToken` 与 `petroThreshold` 配置),则使用 Boost APY(更高收益)。
- APY 为百分比按秒计息(例如 3%),页面“合约信息”显示灵活/锁定的基础与 Boost APY。
## 五、Locked V2(毫百分比:mP)
- 配置以毫百分比(1e-3 %)表示,如 0.123% => 123(mP)。
- `stakeLockedV2(amount)` 开始 V2 锁定;
- `withdrawLockedV2Interest()` 仅提取利息:到期前最多提取“基础上限”部分;到期后最多提取“最终上限”部分;
- `surrenderLockedV2()` 提前或到期退出,按 `penaltyBps` 对总额(本金+剩余利息)扣罚;
- `finalWithdrawLockedV2()` 到期一次性提取本金+剩余利息(无罚金)。
## 六、Owner 操作
- 全局控制:`pause()`/`resume()` 暂停/恢复所有操作。
- 奖励流动性:
- 先对 Staking 合约授权代币,再 `addLiquidity(amount)` 添加奖励资金;
- `withdrawLiquidity(amount)` 取回自由奖励资金(不含用户本金)。
- `availableLiquidity()` 查看自由奖励资金。
- 参数配置:
- `setAPYConfigs(flex, flexBoost, lock, lockBoost)` 设置 APY(%);
- `setPetroConfig(token, thresholdWei)` 设置 Petro 代币与阈值;
- `setLockedDuration(seconds)` 设置 Locked 锁定期;
- `toggleEmergencyWithdrawLocked()` 切换“紧急锁定提取本金”开关;
- `blockAddress(addr)`/`unblockAddress(addr)` 封禁/解封地址;
- `setLockedV2Config(base_mP, boost_mP, durationSeconds, penaltyBps)` 设置 V2(毫百分比、时长、罚金);
- `setLockedV2LinearPreMaturity(bool)` 设置 V2 到期前是否线性计息。
- 紧急:
- `emergencyWithdrawAll()` 暂停并提走自由奖励资金(不含用户本金);
- `emergencyWithdrawAllInstant()` 暂停并提走合约全部代币(包含用户本金,极端危险,仅在合约被攻破时使用)。
- 误转找回:`recoverERC20(token, amountWei, to)`(不可对质押代币本身)。
## 七、诊断/查询
- 账户:`pendingFlexibleRewards`、`pendingLockedRewards`、`pendingRewards`、`isBlocked`。
- 合约:`availableLiquidity`、`petroToken`/`petroThreshold`、LockedV2 配置、APY、时长等基础信息。
## 八、常见问题与排错
- 回滚常见原因:未授权或授权不足、余额不足、合约已暂停、地址被封禁、锁定未到期、奖励池余额不足、参数越界。
- 单位混淆:页面输入统一为 Token 单位,前端自动按代币精度换算为 Wei。
- 网络不符:页面会提示切换/添加 Polygon 主网;切换后重新连接。
## 九、安全提示
- Owner 的紧急与参数类操作影响巨大(尤其是 `emergencyWithdrawAllInstant`),务必谨慎、记录与公告。
- 修改 APY/时长/阈值等会影响收益策略,应提前与用户沟通。
## 十、部署建议
- 使用 HTTPS 的静态托管(Vercel、Netlify、S3+CDN 等)。
- “合约设置”与主题会保存在浏览器 `localStorage`,方便下次打开直接使用。
如需品牌化 UI、预填你的合约地址与默认参数,或新增图表统计等,请联系维护者进行定制开发。