NAC_Blockchain/contracts/XICPresale_v2/DEPLOY_MANUAL.md

6.1 KiB
Raw Permalink Blame History

XICPresale 合约部署操作手册

版本: v2.0
日期: 2026-03-09
合约文件: XICPresale.sol


一、合约参数总览

参数 说明
预售总量(硬顶) 2,500,000,000 XIC25亿 合约内置,可通过 setHardCap 修改
代币价格 $0.02 USDT / XIC tokenPrice = 2e1618位精度
预售时长 180 天(半年) 从 startPresale() 调用时开始计时
最小购买 无限制 任意金额均可
最大购买 无限制 任意金额均可
支持支付方式 USDTBSC、BNB USDT 即时到账BNB 通过预言机换算
未售出回收 预售结束后 Owner 可回收 recoverUnsoldTokens()

二、部署前准备

2.1 需要准备的地址

地址 说明 当前值
XIC Token 合约 XIC 代币地址(不变) 0x59FF34dD59680a7125782b1f6df2A86ed46F5A24
BSC USDT 合约 BSC 链 USDT 地址(不变) 0x55d398326f99059fF775485246999027B3197955
收款钱包wallet 接收 USDT 和 BNB 的地址 您的收款钱包地址
价格预言机oracle BNB/USD 价格来源 0xefdab9b5...(原合约预言机,或填 address(0) 禁用 BNB 购买)

2.2 部署工具

推荐使用 Remix IDEhttps://remix.ethereum.org Hardhat


三、部署步骤Remix IDE

Step 1打开 Remix IDE

访问 https://remix.ethereum.org新建文件 XICPresale.sol,粘贴合约源码。

Step 2编译

  • Compiler 版本:0.8.20
  • 勾选 Optimizeruns = 200
  • 点击 Compile XICPresale.sol

Step 3部署

切换到 Deploy & Run Transactions 面板:

  • Environment选择 Injected Provider - MetaMask(确保 MetaMask 连接 BSC 主网Chain ID: 56
  • Contract选择 XICPresale
  • 填写构造函数参数:
_xicToken:  0x59FF34dD59680a7125782b1f6df2A86ed46F5A24
_usdt:      0x55d398326f99059fF775485246999027B3197955
_wallet:    [您的收款钱包地址]
_oracle:    0xefdab9b5...(或 0x0000000000000000000000000000000000000000 禁用BNB购买
  • 点击 DeployMetaMask 弹出确认,支付 Gas 费(约 0.01~0.02 BNB

Step 4记录合约地址

部署成功后,记录新合约地址(格式:0x...),更新前端 contracts.ts 中的 presale 字段。


四、部署后操作Owner 钱包执行)

Step A向新合约转入 25亿 XIC

在 XIC Token 合约(0x59FF34dD59680a7125782b1f6df2A86ed46F5A24)的 BscScan 写入页面:

访问:https://bscscan.com/address/0x59FF34dD59680a7125782b1f6df2A86ed46F5A24#writeContract

  1. 连接 Owner 钱包
  2. 找到 transfer 函数
  3. 填写参数:
    • recipient:新预售合约地址
    • amount250000000000000000000000000025亿 × 10^18共28位数字
  4. 点击 Write确认交易

验证: 在 BscScan 上查看新合约地址的 XIC 余额,应显示 2,500,000,000 XIC。

Step B启动预售

在新预售合约的 BscScan 写入页面:

  1. 连接 Owner 钱包
  2. 找到 startPresale() 函数
  3. 点击 Write确认交易

此操作将:

  • 设置 presaleStarted = true
  • 记录 presaleStartTime = 当前时间
  • 设置 presaleEndTime = 当前时间 + 180天

从此刻起,用户即可购买 XIC


五、合约函数说明

用户函数

函数 说明
buyWithUSDT(uint256 usdtAmount) 用 USDT 购买usdtAmount 为 6 decimals如 100 USDT = 100000000
buyWithBNB() 用 BNB 购买,发送 BNB 时调用payable

查询函数

函数 说明
isPresaleActive() 预售是否当前可购买
timeRemaining() 预售剩余秒数
availableXIC() 合约当前可售 XIC 余额
calculateTokenAmount(usdtAmount) 计算 USDT 对应的 XIC 数量
presaleProgress() 预售进度(已售/硬顶/百分比)
totalTokensSold() 已售 XIC 总量
totalRaised() 已筹 USDT 总量
userPurchases(address) 查询用户购买的 XIC 总量

Owner 管理函数

函数 说明
startPresale() 启动预售(只能调用一次)
setPaused(bool) 暂停/恢复预售
recoverUnsoldTokens() 预售结束后回收未售出 XIC
setTokenPrice(uint256) 修改价格18 decimals
setHardCap(uint256) 修改硬顶
setWallet(address) 修改收款钱包
setPriceOracle(address) 修改 BNB 价格预言机
emergencyWithdraw(address, uint256) 紧急提取代币(预售中禁止提取 XIC
withdrawBNB() 提取误转入的 BNB
transferOwnership(address) 转移合约所有权

六、预售结束后操作

6.1 自动结束

预售在以下任一条件满足时自动停止:

  • startPresale() 已过 180 天
  • 25亿 XIC 全部售完

6.2 回收未售出 XIC

预售结束后Owner 调用 recoverUnsoldTokens()

  1. 访问新合约 BscScan 写入页面
  2. 连接 Owner 钱包
  3. 调用 recoverUnsoldTokens()
  4. 合约将剩余 XIC 全部转回 Owner 钱包

七、安全注意事项

  1. 部署后立即在 BscScan 上 Verify 合约源码,增加透明度和信任度
  2. 转入 XIC 前三次核对合约地址,防止转错
  3. amount 精度25亿 XIC = 250000000000000000000000000025后跟26个零共28位
  4. 预售进行中禁止提取 XIC:合约内置保护,emergencyWithdraw 在预售活跃期间无法提取 XIC
  5. BNB 购买:如不需要 BNB 购买功能,部署时 _oracle0x0000000000000000000000000000000000000000

八、前端更新

部署完成后,更新前端 client/src/lib/contracts.ts

BSC: {
  presale: "0x[新合约地址]",  // 替换为新部署的合约地址
  // 其他不变
}

同时更新 PRESALE_CONFIG

export const PRESALE_CONFIG = {
  tokenPrice: 0.02,                      // $0.02 per XIC ✅
  presaleAllocation: 2_500_000_000,      // 25亿 XIC ✅
  presaleDuration: 180,                  // 180天 ✅
  minPurchaseUSDT: 0,                    // 无最小限制 ✅
  maxPurchaseUSDT: 0,                    // 无最大限制0 = 无限制)✅
};