小游戏看广告盒子零鲁项目系统开发成熟技术/案例分析/功能设计/逻辑方案/源码说明

简介: // SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.0;

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "./a_IcoToken.sol";

contract IcoExchange{
using SafeMath for uint256;
// ico的状态定义
enum IcoState {Before,Start,End}
IcoState public icoState = IcoState.Before;
address private owner;
// ico的token地址
IcoToken public icoToken ;
uint256 public totalSupply= 1000000 (10*18);
uint256 public exchangeTokenTotal = 0;
uint256 public rate =2;

constructor(){
    // 申明ico属主
    // 创建ico token
    owner = msg.sender;
    icoToken=new IcoToken(totalSupply);
}

event ReceiveICO(address from,uint256 ethValue,uint256 icoTokenValue);
event StartICO(address who);
event EndICO(address who,uint256 allEth,uint256 exchangeTokenTotal);

// 判断ico属主
modifier isOwner(){
    require(owner== msg.sender,"must the owner");
    _;
}
// 判断当前状态
modifier inBefore(){
    require(icoState==IcoState.Before,"icoState is not Before");
    _;
}
modifier inStart(){
    require(icoState==IcoState.Start,"icoState is not Start");
    _;
}
// ico的状态控制
function startICO() public isOwner inBefore {
    icoState = IcoState.Start;
    emit StartICO(msg.sender);
}
function endICO() public isOwner inStart{
    emit EndICO(msg.sender,address(this).balance,exchangeTokenTotal);
    // eth提取
    payable(owner).transfer(address(this).balance);
    // 剩余代币返还给ico的发起人
    icoToken.transfer(owner,totalSupply.sub(exchangeTokenTotal));
    icoState = IcoState.End;
}
function inICO() public inStart payable{
    require(msg.value>0,"inICO can't <=0");
    // 发送代币给对方
    uint256 bossTokenValue = rate.mul(msg.value);
    require(totalSupply.sub(exchangeTokenTotal)>bossTokenValue,"icoTOken balance not enough");
    icoToken.transfer(msg.sender,bossTokenValue);
    exchangeTokenTotal = exchangeTokenTotal.add(bossTokenValue);
    emit ReceiveICO(msg.sender,msg.value,bossTokenValue);
}
receive() external payable{
    inICO();
}

}

相关文章
|
4月前
|
缓存 前端开发 测试技术
什么是七星创客系统丨七星创客系统开发规则玩法/设计方案/逻辑需求/案例项目/源码功能
七星创客系统开发指南是一个帮助开发人员理解并完成七星创客系统的开发任务的指南。以下是一个简要的开发指南需求:
|
4月前
|
算法 安全 数据安全/隐私保护
一对一语音视频交友系统开发详细指南丨案例设计丨功能需求丨方案逻辑丨项目流程丨源码教程
一对一语音视频交友系统开发指的是开发一种用于让用户通过语音和视频进行一对一交流的交友系统。该系统旨在提供一个平台,让用户可以通过语音和视频相互了解、交流和建立关系。以下是一对一语音视频交友系统开发的一些关键特点:
|
6月前
|
安全
线下陪玩游戏系统开发功能需求/步骤设计/详细流程/源码指南
rience design, and security assurance. Here is a possible detailed development process: 1. * * Requirements Analysis: * * Firstly, the development team needs to communicate with customers to understand their needs and expectations. This may include requirements such as determining the supported game
|
6月前
|
安全
dapp农场养成游戏系统开发规则详细/方案设计/步骤逻辑/源码案例
Developing a decentralized application (DApp) farm development game system based on blockchain technology requires considering various rules and implementation steps. The following are some detailed rules and guidelines for reference:
|
敏捷开发 存储 测试技术
链动2+1系统开发项目案例丨指南教程丨需求方案丨功能设计丨成熟技术丨步骤逻辑丨源码程序
用户需求导向:系统开发应以用户需求为中心,从用户的角度思考,了解用户的真实需求和期望,以提供优质的用户体验。
|
存储 前端开发 安全
dapp矩阵公排互助预约排单抢单项目系统开发指南流程丨案例设计丨功能逻辑丨规则玩法丨项目方案丨源码程序
需求分析:与团队明确系统的需求和目标,包括公排互助预约排单抢单项目系统的功能、规则、奖励机制等方面。
|
监控 安全 数据挖掘
泰山众筹系统开发详细指南丨设计方案丨规则玩法丨逻辑功能丨步骤需求丨源码程序
泰山众筹系统是一个基于区块链技术的众筹平台,旨在为用户提供一个安全、透明和高效的众筹环境。
|
存储 安全 前端开发
DApp公排互助预约抢单排单模式系统开发参考版/详细流程/方案逻辑/规则玩法/案例设计/源码程序
需求分析:与团队明确系统的需求、目标和范围,包括公排互助预约抢单排单模式系统的功能、规则、奖励机制等方面
|
AndFix vr&ar 图形学
潮玩元宇宙/大逃杀游戏系统开发详细案例丨规则流程丨方案逻辑丨功能设计丨需求项目丨源码出售
The development of Chaoyu Metaverse Escape Game System refers to the creation and construction of a virtual reality game system to provide an immersive gaming experience, allowing players to participate in a virtual world for escape and combat.