/**
*Submitted for verification at Etherscan.io on 2019-09-09
* BEB dapp for www.betbeb.com
*/
pragma solidity^0.4.24;
interface tokenTransfer {
function transfer(address receiver, uint amount);
function transferFrom(address _from, address _to, uint256 _value);
function balanceOf(address receiver) returns(uint256);
}
contract Ownable {
address public owner;
function Ownable () public {
owner = msg.sender;
}
modifier onlyOwner {
require (msg.sender == owner);
_;
}
/**
* @param newOwner address
*/
function transferOwnership(address newOwner) onlyOwner public {
if (newOwner != address(0)) {
owner = newOwner;
}
}
}
contract BEBmining is Ownable{
tokenTransfer public bebTokenTransfer; //代幣
uint8 decimals = 18;
struct BebUser {
address customerAddr;
uint256 amount;
uint256 bebtime;
uint256 interest;
}
//ETH miner
struct miner{
uint256 mining;
uint256 _mining;
uint256 lastDate;
uint256 amountdays;
uint256 ethbomus;
uint256 amountTotal;
uint256 ETHV1;
uint256 ETHV2;
uint256 ETHV3;
uint256 ETHV4;
uint256 ETHV5;
uint256 IntegralMining;
}
struct bebvv{
uint256 BEBV1;
uint256 BEBV2;
uint256 BEBV3;
uint256 BEBV4;
uint256 BEBV5;
}
mapping(address=>bebvv)public bebvvs;
mapping(address=>miner)public miners;
address[]public minersArray;
uint256 ethExchuangeRate=210;//eth-usd
uint256 bebethexchuang=97000;//beb-eth
uint256 bebethex=83360;//eth-beb
uint256 depreciationTime=86400;
uint256 SellBeb;//SellBeb MAX 10000BEB
uint256 BuyBeb;//BuyBeb MAX 100000BEB
uint256 IncomePeriod=730;//Income period
address addressDraw;
uint256 intotime=1579073112;
event bomus(address to,uint256 amountBouns,string lx);
function BEBmining(address _tokenAddress,address Draw){
bebTokenTransfer = tokenTransfer(_tokenAddress);
addressDraw=Draw;
}
//BUY Ethminter
function EthTomining(address _addr)payable public{
miner storage user=miners[_addr];
require(amount>800000000000000000);
if(usdt>40000000000000000000){
usdt=amount*150/100;
user.ETHV5+=1;
}else{
if (usdt > 25000000000000000000){
usdt = amount* 130 / 100;
user.ETHV4+=1;
}
else{
if (usdt > 9000000000000000000){
usdt = amount * 120 / 100;
user.ETHV3+=1;
}
else{
if (usdt > 4000000000000000000){
usdt = amount * 110 / 100;
user.ETHV2+=1;
}
else{
user.ETHV1+=1;
}
}
}
}
uint256 _transfer=amount*15/100;
addressDraw.transfer(_transfer);
TotalInvestment+=usdt;
user.mining+=usdt;
user._mining+=_udst;
//user._mining+=_udst;
user.lastDate=now;
bomus(msg.sender,usdt,"Purchase success!");
}
//BUY BEBminter
function BebTomining(uint256 _value,address _addr)public{
uint256 usdt=_value* 10 ** 18;
uint256 _udst=usdt/bebethex;
uint256 bebudst=usdt/bebethex;
miner storage user=miners[_addr];
bebvv storage _user=bebvvs[_addr];
require(usdt>40000000000000000000000);
if(usdt>2000000000000000000000000){
_udst=usdt/bebethexchuang*150/100;
_user.BEBV5+=1;
}else{
if (usdt > 400000000000000000000000){
_udst = usdt / bebethexchuang * 130 / 100;
_user.BEBV4+=1;
}
else{
if (usdt > 200000000000000000000000){
_udst = usdt / bebethexchuang * 120 / 100;
_user.BEBV3+=1;
}
else{
if (usdt > 120000000000000000000000){
_udst = usdt / bebethexchuang * 110 / 100;
_user.BEBV2+=1;
}else{
_user.BEBV1+=1;
}
}
}
}
bebTokenTransfer.transferFrom(msg.sender,address(this),usdt);
TotalInvestment+=_udst;
user.mining+=_udst;
user._mining+=bebudst;
user.lastDate=now;
bomus(msg.sender,usdt,"Purchase success!");
}
//BUY 積分 minter
function integralTomining(uint256 _value,address _addr)onlyOwner{
uint256 eth=_value* 10 ** 18;
uint256 _eth=eth/bebethex;
miner storage user=miners[_addr];
bebTokenTransfer.transferFrom(msg.sender,address(this),eth);
TotalInvestment+=_eth;
user.mining+=_eth;
if(user.lastDate==0){
user.lastDate=now;
}
uint256 jifen=_value/50000;
user.IntegralMining+=jifen;
//user.lastDate=now;
bomus(_addr,_eth,"Purchase success!");
}
//BUY 遷移合約
function migrateTomining(uint256 _value,uint256 _minin,uint256 time,uint256 _amountTotal,address _addr,uint256 bebv1,uint256 bebv2,uint256 bebv3,uint256 bebv4,uint256 bebv5)onlyOwner{
require(intotime>now);//函式過期功能作廢
miner storage user=miners[_addr];
bebvv storage _user=bebvvs[_addr];
//uint256 _usdtt=_udst/bebethexchuang;
uint256 BEBETH=_minin* 10 ** 18;
uint256 udst=BEBETH/bebethex;//BEB-ETH
user.amountTotal=_amountTotal;//ETH
user.mining+=_value;
user._mining+=udst;
user.lastDate=time;
_user.BEBV1=bebv1;
_user.BEBV2=bebv2;
_user.BEBV3=bebv3;
_user.BEBV4=bebv4;
_user.BEBV5=bebv5;
}
function setTomining(uint256 _value,uint256 _minin,address _addr)onlyOwner{
require(intotime>now);//函式過期功能作廢
miner storage user=miners[_addr];
user.mining-=_value;//ETH
user._mining-=_minin;//ETH
}
function setToTomining(uint256 _value,uint256 _minin,address _addr)onlyOwner{
require(intotime>now);//函式過期功能作廢
miner storage user=miners[_addr];
user.mining+=_value;//ETH
user._mining+=_minin;//ETH
}
//執行地址
function setaddress(address _addr)onlyOwner{
addressDraw=_addr;
}
function freeSettlement()public{
miner storage user=miners[msg.sender];
bebvv storage _user=bebvvs[msg.sender];
uint256 amuont=user.mining;
require(amuont>0,"You don't have a mining machine");
uint256 _ethbomus=user.ethbomus;
uint256 _lastDate=user.lastDate;
uint256 _amountTotal=user.amountTotal;
uint256 sumincome=_amountTotal*100/amuont;
uint256 depreciation=(now-_lastDate)/depreciationTime;
require(depreciation>0,"Less than 1 day of earnings");
//The expiration of the income period, the mining machine scrapped
uint256 Bebday=amuont*depreciation/100;
uint256 profit=Bebday;
require(profit>0,"Mining amount 0");
if(sumincome>IncomePeriod){
uint256 _Bebday=amuont*depreciation/100*3/100;
require(this.balance>_Bebday,"Insufficient contract balance");
user.lastDate=now;
user.ethbomus+=_Bebday;
user.amountTotal+=_Bebday;
user.amountdays+=depreciation;
bounstotal+=_Bebday;
user.ethbomus=0;
sumethbos=0;
msg.sender.transfer(_Bebday);
if(user.amountdays>730){
//收益730天后報廢
//Mining machine scrap
user.mining=0;
user.lastDate=0;
user.ethbomus=0;
sumethbos=0;
user.amountTotal=0;
user.amountdays=0;
user.ETHV1=0;
user.ETHV2=0;
user.ETHV3=0;
user.ETHV4=0;
user.ETHV5=0;
user.IntegralMining=0;
user._mining=0;
_user.BEBV1=0;
_user.BEBV2=0;
_user.BEBV3=0;
_user.BEBV4=0;
_user.BEBV5=0;
}
}else{
require(this.balance>profit,"Insufficient contract balance");
user.lastDate=now;
user.ethbomus+=Bebday;
user.amountTotal+=Bebday;
user.amountdays+=depreciation;
bounstotal+=profit;
user.ethbomus=0;
sumethbos=0;
msg.sender.transfer(profit);
}
}
function Refund()public{
miner storage user=miners[msg.sender];
bebvv storage _user=bebvvs[msg.sender];
uint256 benjin=user._mining-user.amountTotal;
uint256 dayts=user.amountdays;
uint256 dayxi=benjin*1/1000*dayts;
uint256 _amount=benjin+dayxi;
require(dayts<30);
require(_amount>0,"Insufficient contract balance");
require(this.balance>_amount,"Insufficient contract balance");
msg.sender.transfer(_amount);
user.mining=0;
user.lastDate=0;
user.ethbomus=0;
sumethbos=0;
user.amountTotal=0;
user.amountdays=0;
user.ETHV1=0;
user.ETHV2=0;
user.ETHV3=0;
user.ETHV4=0;
user.ETHV5=0;
user.IntegralMining=0;
user._mining=0;
_
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/28544.html
標籤:區塊鏈技術
