一、说明
项目发行完成后,上线交易所之前一般都会安排前期的预售活动,预售期间代币价格是恒定预售的。因此需要通过dapp来实现用户通过WETH认购相应比例的代币,并实时返回到用户钱包地址。该功能核心部分在solidity链端完成,dapp前端和后端只需要提供用户访问入口及钱包地址校验,访问安全性验证等功能模块。具备包括如下功能:
- 用户在dapp前端输入认购的weth数量,由程序自动按照比例计算用户所兑换代币数量。
- 交易手续费由用户自行承担,避免认购数量过大,导致需要项目方提供大量交易手续费的情况。
- 代币需要实时兑换到用钱包地址,并且设置最大及最小认购weth数量,避免粉尘攻击等问题。
- 认购完成,需要反馈交易成功结果到dapp前端页面。
二、核心代码实现
pragma solidity ^0.8.0; contract Presale { address public admin; // 合约管理员 uint256 public tokenPrice; // 代币价格 uint256 public tokensSold; // 已售出的代币数量 uint256 public maxTokens; // 最大可售代币数量 event TokensPurchased(address indexed buyer, uint256 amount); constructor(uint256 _tokenPrice, uint256 _maxTokens) { admin = msg.sender; tokenPrice = _tokenPrice; maxTokens = _maxTokens; } modifier onlyAdmin() { require(msg.sender == admin, "Only admin can perform this action"); _; } function buyTokens(uint256 _numTokens) external payable { require(tokensSold + _numTokens <= maxTokens, "Not enough tokens available"); require(msg.value == tokenPrice * _numTokens, "Incorrect amount sent"); tokensSold += _numTokens; emit TokensPurchased(msg.sender, _numTokens); } function withdrawFunds() external onlyAdmin { require(address(this).balance > 0, "No funds to withdraw"); // 合约管理员可以提取合约中的所有资金 payable(admin).transfer(address(this).balance); } }
这个合约包括以下几个关键点:
admin
:合约管理员的地址,只有管理员可以提取合约中的资金。tokenPrice
:每个代币的价格,用户在购买代币时需要以这个价格支付。tokensSold
:已售出的代币数量。maxTokens
:最大可售代币数量,超过这个数量将无法再购买。
合约提供了以下功能:
buyTokens
:用户通过向合约发送以正确价格购买代币的方式来购买代币。用户需要指定要购买的代币数量,并且需要以正确的总金额发送以太币。withdrawFunds
:合约管理员可以调用此函数从合约中提取所有资金。只有在合约中有资金余额时才能提取。
注:确保在购买代币前先将足够的代币分配到合约中。
三、参考案例解析
- 参考项目:由Ordinals实验室发起,旨在实现BRC20到ERC20的铭文铸造跨链项目BCE Bridge(BCEB),主要解决多链合并的安全性,去信任的跨链交易性。
目前项目还处于实验阶段,往地址 0xC5311D9E2c28b5451210144F5dFe66Cd113a97F2 转入0.01数量的BNB即可实时获取代币BCEB(bep-20),
同步mint代币BCEB(brc-20),目前持币地址已达2K,从目前市场的FOMO情绪看,有可能是下一个Ordi。
BCEB(BSC)合约地址:0xaea604192850335EB3Ae881F159b8723dfcca9Af
BCEB(BRC20)铭文地址:824ed415aafb278da0a0ba0e3a0376cfdd8e0165d812ff7416804d04197c626di0
Website:https://www.bceb.cc
Github:https://github.com/bceb-labs
Twitter:https://twitter.com/BCE_Bridge
Discord: https://discord.gg/YQ2NWSBhy4 - 项目实现方案
其中,BuySwap 1.00 BNB 功能模块即实现了恒定价格交易的全部功能。
至此,完成项目预售阶段恒定价格交易的合约代码实现所有操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
此内容仅供注册用户可见,请登录!
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册